Signed-off-by: Ted Hess <thess@kitschensync.net>lilik-openwrt-22.03
@ -0,0 +1,62 @@ | |||||
# | |||||
# Copyright (C) 2015 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# updated to work with latest source from abrasive | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=shairport-sync | |||||
PKG_VERSION:=2.1.15 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE_PROTO:=git | |||||
PKG_SOURCE_URL:=git://github.com/mikebrady/shairport-sync.git | |||||
PKG_SOURCE_VERSION:=$(PKG_VERSION) | |||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net> | |||||
PKG_LICENSE:=MIT | |||||
PKG_LICENSE_FILES:=COPYING LICENSES shairport.c | |||||
PKG_BUILD_PARALLEL:=1 | |||||
PKG_FIXUP:=autoreconf | |||||
include $(INCLUDE_DIR)/package.mk | |||||
CONFIGURE_ARGS+= \ | |||||
--with-alsa \ | |||||
--with-avahi \ | |||||
--with-soxr \ | |||||
--with-ssl=openssl | |||||
define Package/shairport-sync | |||||
SECTION:=sound | |||||
CATEGORY:=Sound | |||||
TITLE:=iPhone/iTunes compatible audio player | |||||
DEPENDS:= +libpthread +libopenssl +libavahi-client +alsa-lib +libdaemon +libsoxr +libpopt | |||||
MAINTAINER:=Mike Brady <mikebrady@eircom.net> | |||||
endef | |||||
define Package/shairport-sync/description | |||||
Shairport Sync is server software that implements the Apple-originated RAOP protocol for | |||||
playback of audio from a compatible remote client such as the iPhone, iTunes, Apple TV, Quicktime Player or forked-daapd. | |||||
Shairport Sync implements audio synchronisation, supporting multi-room use. | |||||
Shairport Sync supports audio only. | |||||
endef | |||||
define Package/shairport-sync/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/shairport-sync $(1)/usr/bin/ | |||||
$(INSTALL_DIR) $(1)/etc/init.d | |||||
$(INSTALL_BIN) ./files/shairport-sync.init $(1)/etc/init.d/shairport-sync | |||||
$(INSTALL_DIR) $(1)/etc/config | |||||
$(INSTALL_DATA) ./files/shairport-sync.config $(1)/etc/config/shairport-sync | |||||
endef | |||||
$(eval $(call BuildPackage,shairport-sync)) |
@ -0,0 +1,35 @@ | |||||
# Uncomment the stanza you want, and make sure to comment out the others, especially duplicate options. | |||||
#Arguments and defaults are as follows | |||||
config shairport-sync main | |||||
# option name 'Shairport Sync' #default name, "Shairport Sync on %d" | |||||
# option device default #default soundcard, volume control by software | |||||
#(Troubleshooting hint: make sure the soundcard's volume is turned up fully -- use alsamixer or amixer) | |||||
# option airplaylatency 88200 | |||||
# option ituneslatency 99400 | |||||
# option port 5000 | |||||
# option stuffing basic #options are 'basic' or 'soxr' if shairport-sync was compiled with soxr support | |||||
# option awaitactioncompletion false #[don't] wait until beforeaction or afteraction completes | |||||
# option beforeaction <action> #action must be a fully qualified program with no arguments. Default no action. | |||||
# option afteraction <action> #action must be a fully qualified program with no arguments. Default no action. | |||||
# option devicetype <devicetype> | |||||
# option volumecontrolname <name> | |||||
#Here are some sample stanzas: | |||||
#For Raspberry Pi using the built-in soundcard for the headphone jack | |||||
# option device 'hw:0' | |||||
# option devicetype hardware | |||||
# option volumecontrolname Master | |||||
#For Raspberry Pi with the "3D Sound" USB Soundcard | |||||
# option name 'Pi' | |||||
# option device 'hw:1' | |||||
# option devicetype hardware | |||||
# option volumecontrolname Speaker | |||||
#For Raspberry Pi with the first generation iMic or the Topping TP30 Class T Digital Mini Amplifier | |||||
# option name 'Kitchen' | |||||
# option device 'hw:1' | |||||
# option devicetype hardware | |||||
# option volumecontrolname PCM |
@ -0,0 +1,77 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
NAME='shairport-sync' | |||||
START=99 | |||||
USE_PROCD=1 | |||||
append_arg() { | |||||
local cfg="$1" | |||||
local var="$2" | |||||
local opt="$3" | |||||
local def="$4" | |||||
local val | |||||
config_get val "$cfg" "$var" | |||||
[ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" | |||||
} | |||||
append_bool() { | |||||
local cfg="$1" | |||||
local var="$2" | |||||
local opt="$3" | |||||
local def="$4" | |||||
local val | |||||
config_get_bool val "$cfg" "$var" "$def" | |||||
[ "$val" = 1 ] && procd_append_param command "$opt" | |||||
} | |||||
start_shairport_service() { | |||||
local cfg=$1 | |||||
local stuffing | |||||
local device | |||||
procd_open_instance | |||||
procd_set_param command /usr/bin/$NAME | |||||
append_arg "$cfg" name "-a" | |||||
append_arg "$cfg" port "-p" | |||||
append_arg "$cfg" airplaylatency "-A" | |||||
append_arg "$cfg" ituneslatency "-i" | |||||
config_get stuffing "$cfg" stuffing "" | |||||
if [ -n "$stuffing" ] ; then | |||||
case "x$stuffing" in | |||||
( "xbasic" ) procd_append_param command -S basic ;; | |||||
( "xsoxr" ) procd_append_param command -S soxr ;; | |||||
( * ) logger "bad argument for -S option -- should be \"basic\" or \"soxr\"" ;; | |||||
esac | |||||
fi | |||||
append_arg "$cfg" beforeaction "-B" | |||||
append_arg "$cfg" afteraction "-E" | |||||
append_bool "$cfg" awaitactioncompletion "-w" | |||||
config_get device "$cfg" device "" | |||||
if [ -n "$device" ] ; then | |||||
procd_append_param command "--" | |||||
append_arg "$cfg" device "-d" | |||||
append_arg "$cfg" devicetype "-t" | |||||
append_arg "$cfg" volumecontrolname "-c" | |||||
fi | |||||
procd_close_instance | |||||
} | |||||
service_triggers() { | |||||
procd_add_reload_trigger $NAME | |||||
} | |||||
start_service() { | |||||
config_load $NAME | |||||
# Just a single instance | |||||
start_shairport_service "main" | |||||
} |