Skip to contentSkip to conversation

shairplay-sync: new package

PATCH Superseded Jörg Krause 2 participants 3 messages Oct 20, 2014 – Oct 24, 2014

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 shairplay-sync: new package

---
 package/Config.in                        |  1 +
 package/shairport-sync/Config.in         | 72 ++++++++++++++++++++++++++++++++
 package/shairport-sync/S99shairport-sync | 31 ++++++++++++++
 package/shairport-sync/shairport-sync.mk | 49 ++++++++++++++++++++++
 4 files changed, 153 insertions(+)
 create mode 100644 package/shairport-sync/Config.in
 create mode 100644 package/shairport-sync/S99shairport-sync
 create mode 100644 package/shairport-sync/shairport-sync.mk
package/Config.in +1 -0
index 89b46dc..e3151e8 100644
@@ -1086,6 +1086,7 @@ endif
 	source "package/samba4/Config.in"
 	source "package/sconeserver/Config.in"
 	source "package/ser2net/Config.in"
+	source "package/shairport-sync/Config.in"
 	source "package/smcroute/Config.in"
 	source "package/socat/Config.in"
 	source "package/socketcand/Config.in"
package/shairport-sync/Config.in new file +72 -0

72 lines not on this page · raw message

package/shairport-sync/S99shairport-sync new file +31 -0
new file mode 100644
index 0000000..377b0bb
@@ -0,0 +1,31 @@
+#! /bin/sh
+
+NAME=shairport-sync
+DAEMON=/usr/bin/$NAME
+
+# Additional options that are passed to Shairport Sync
+OPTIONS=""
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+case "$1" in
+  start)
+    echo -n "Starting shairport-sync: "
+    start-stop-daemon --start --quiet --exec $DAEMON -- -d $OPTIONS
+    [ $? == 0 ] && echo "OK" || echo "FAIL"
+    ;;
+  stop)
+    echo -n "Stopping shairport-sync: "
+    start-stop-daemon --stop --quiet --name $NAME
+    [ $? == 0 ] && echo "OK" || echo "FAIL"
+    ;;
+  restart)
+    $0 stop
+    $0 start
+    ;;
+  *)
+  echo "Usage: $0 {start|stop|restart}"
+  exit 1
+  ;;
+esac
package/shairport-sync/shairport-sync.mk new file +49 -0

49 lines not on this page · raw message

Signature · 1 line
2.1.2
#1 lore raw

PATCH 1/1 shairplay-sync: new package

J?rg, All,

On 2014-10-20 15:21 +0200, J?rg Krause spake thusly:

Quoted 1 line

[--SNIP--]

Quoted 27 lines
package/shairport-sync/Config.in new file +21 -0
new file mode 100644
index 0000000..2eab88d
@@ -0,0 +1,72 @@
+config BR2_PACKAGE_SHAIRPORT_SYNC
+	bool "shairport-sync"
+	depends on BR2_USE_MMU # libdaemon
+	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa_lib
+	select BR2_PACKAGE_ALSA_LIB
+	select BR2_PACKAGE_LIBDAEMON
+	select BR2_PACKAGE_POPT
+	help
+	  Shairport Sync emulates an AirPort Express for the purpose of
+	  streaming audio from iTunes, iPods, iPhones, iPads and AppleTVs.
+	  Audio played by a Shairport Sync-powered device stays in synchrony
+	  with the source and thus with other devices that are playing the same
+	  source synchronously. Thus, for example, synchronised multi-room
+	  audio is possible without difficulty.
+
+	  https://github.com/mikebrady/shairport-sync
+
+if BR2_PACKAGE_SHAIRPORT_SYNC
+
+choice
+	prompt "Choose SSL encryption backend"

package/shairport-sync/Config.in line 31

Quoted 10 lines
package/shairport-sync/Config.in new file +10 -0
+	default BR2_PACKAGE_SHAIRPORT_SYNC_OPENSSL
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_OPENSSL
+	bool "OpenSSL"
+	select BR2_PACKAGE_OPENSSL
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_POLARSSL
+	bool "PolarSSL"
+	select BR2_PACKAGE_POLARSSL
+endchoice

Since this is a choice, either one is selected. Which means SSL support seems to be not optional.

In that case I would prefer we use something like:

config BR2_PACKAGE_SHAIRPORT_SYNC
bool "shairport-sync"
# Dependencies and selects as above
select BR2_PACKAGE_POLARSSL if !BR2_PACKAGE_OPENSSL

This way, we ensure at least one SSL implementation is available, and do not bother the user with a useless prompt.

Quoted 13 lines
package/shairport-sync/Config.in new file +13 -0
+choice
+	prompt "Choose mDNS backend"
+	default BR2_PACKAGE_SHAIRPORT_SYNC_AVAHI
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_AVAHI
+	bool "Avahi"
+	depends on BR2_USE_WCHAR # avahi -> gettext
+	depends on !BR2_PREFER_STATIC_LIB
+	select BR2_PACKAGE_AVAHI
+	select BR2_PACKAGE_AVAHI_DAEMON
+	select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY
+
+comment "Avahi support needs a toolchain w/ wchar, dynamic library"

package/shairport-sync/Config.in line 55

Quoted 10 lines
package/shairport-sync/Config.in new file +10 -0
+	depends on !BR2_USE_WCHAR || BR2_PREFER_STATIC_LIB
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_TINYSVCMDNS
+	bool "tinysvcmdns"
+	help
+	  tinysvcmdns is a tiny mDNS responder which is only concerned with
+	  publishing services, without a system-wide daemon like Bonjour or
+	  Avahi. Its other goal is to be extremely small, embeddable, and have
+	  no external dependencies.
+endchoice

There is no tinysvcmdns packaged in Buildroot. Does shairport-sync bundles its own version? Otherwise, I've seen there is a tinysvcmdns package on bitbucket: https://bitbucket.org/geekman/tinysvcmdns
Maybe it would be interesting to package it in Buildroot?

If so, I would just remove the choice altogether, and just use tinysvcmdns if avahi is not enabled.

package/shairport-sync/Config.in line 58

Quoted 2 lines
package/shairport-sync/Config.in new file +2 -0
+config BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR
+	bool "libsoxr support"

There, you need to select BR2_PACKAGE_LIBSOXR.

Obviously, adapt the .mk to the above comments.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 1/1 shairplay-sync: new package

Hi Yann, Hi All,

Quoted 36 lines · Yann E. MORIN

J?rg, All,

On 2014-10-20 15:21 +0200, J?rg Krause spake thusly:

Quoted 1 line

[--SNIP--]

Quoted 31 lines
package/shairport-sync/Config.in new file +25 -0
new file mode 100644
index 0000000..2eab88d
@@ -0,0 +1,72 @@
+config BR2_PACKAGE_SHAIRPORT_SYNC
+	bool "shairport-sync"
+	depends on BR2_USE_MMU # libdaemon
+	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa_lib
+	select BR2_PACKAGE_ALSA_LIB
+	select BR2_PACKAGE_LIBDAEMON
+	select BR2_PACKAGE_POPT
+	help
+	  Shairport Sync emulates an AirPort Express for the purpose of
+	  streaming audio from iTunes, iPods, iPhones, iPads and AppleTVs.
+	  Audio played by a Shairport Sync-powered device stays in synchrony
+	  with the source and thus with other devices that are playing the same
+	  source synchronously. Thus, for example, synchronised multi-room
+	  audio is possible without difficulty.
+
+	  https://github.com/mikebrady/shairport-sync
+
+if BR2_PACKAGE_SHAIRPORT_SYNC
+
+choice
+	prompt "Choose SSL encryption backend"
+	default BR2_PACKAGE_SHAIRPORT_SYNC_OPENSSL
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_OPENSSL
+	bool "OpenSSL"
Quoted 8 lines

package/shairport-sync/Config.in line 31

Quoted 6 lines
package/shairport-sync/Config.in new file +6 -0
+	select BR2_PACKAGE_OPENSSL
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_POLARSSL
+	bool "PolarSSL"
+	select BR2_PACKAGE_POLARSSL
+endchoice

Since this is a choice, either one is selected. Which means SSL support seems to be not optional.

You're right! SSL support is mandatory, but you can choose between OpenSSL and PolarSSL.

Quoted 9 lines

In that case I would prefer we use something like:

config BR2_PACKAGE_SHAIRPORT_SYNC
bool "shairport-sync"
# Dependencies and selects as above select BR2_PACKAGE_POLARSSL if !BR2_PACKAGE_OPENSSL

This way, we ensure at least one SSL implementation is available, and do not bother the user with a useless prompt.

Ok

Quoted 28 lines
Quoted 13 lines
package/shairport-sync/Config.in new file +13 -0
+choice
+	prompt "Choose mDNS backend"
+	default BR2_PACKAGE_SHAIRPORT_SYNC_AVAHI
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_AVAHI
+	bool "Avahi"
+	depends on BR2_USE_WCHAR # avahi -> gettext
+	depends on !BR2_PREFER_STATIC_LIB
+	select BR2_PACKAGE_AVAHI
+	select BR2_PACKAGE_AVAHI_DAEMON
+	select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY
+
+comment "Avahi support needs a toolchain w/ wchar, dynamic library"

package/shairport-sync/Config.in line 55

Quoted 10 lines
package/shairport-sync/Config.in new file +10 -0
+	depends on !BR2_USE_WCHAR || BR2_PREFER_STATIC_LIB
+
+config BR2_PACKAGE_SHAIRPORT_SYNC_TINYSVCMDNS
+	bool "tinysvcmdns"
+	help
+	  tinysvcmdns is a tiny mDNS responder which is only concerned with
+	  publishing services, without a system-wide daemon like Bonjour or
+	  Avahi. Its other goal is to be extremely small, embeddable, and have
+	  no external dependencies.
+endchoice

There is no tinysvcmdns packaged in Buildroot. Does shairport-sync bundles its own version? Otherwise, I've seen there is a tinysvcmdns package on bitbucket: https://bitbucket.org/geekman/tinysvcmdns
Maybe it would be interesting to package it in Buildroot?

Quoted 2 lines

If so, I would just remove the choice altogether, and just use tinysvcmdns if avahi is not enabled.

Shairport bundles its own version of tinysvcmdns which is based on the one you've found on bitbucket. I will do the following: if avahi is not selected as a package, shairport-sync builds with tinysvcmdns support.

Quoted 4 lines

package/shairport-sync/Config.in line 58

Quoted 3 lines
package/shairport-sync/Config.in new file +2 -0
+config BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR
+	bool "libsoxr support"

There, you need to select BR2_PACKAGE_LIBSOXR.

Oops!

Quoted 3 lines

Obviously, adapt the .mk to the above comments.

Many thanks for the review!

J?rg