All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/2] package/shairport-sync: Add support for AirPlay2
@ 2025-10-25 19:04 Trammell Hudson via buildroot
  2025-10-25 19:05 ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Trammell Hudson via buildroot
  0 siblings, 1 reply; 5+ messages in thread
From: Trammell Hudson via buildroot @ 2025-10-25 19:04 UTC (permalink / raw)
  To: buildroot

These patches add support for streaming audio with the AirPlay2 protocol
to shairport-sync.  Configuring AirPlay2 support is optional since it
adds several other requirements such as ffmpeg, which may be too heavy
for some systems that only want to stream AirPlay1 music.

It also requires the nqptp helper package that provides not-quite-PTP
time synchronization for multi-zone audio.

Trammell Hudson (2):
  package/nqptp: Add version 1.2.4
  package/shairport-sync: Add support for AirPlay2

 package/Config.in                        |  1 +
 package/nqptp/Config.in                  |  6 +++++
 package/nqptp/S90nqptp                   | 24 ++++++++++++++++++
 package/nqptp/nqptp.hash                 |  3 +++
 package/nqptp/nqptp.mk                   | 31 ++++++++++++++++++++++++
 package/shairport-sync/Config.in         | 15 ++++++++++++
 package/shairport-sync/shairport-sync.mk |  5 ++++
 7 files changed, 85 insertions(+)
 create mode 100644 package/nqptp/Config.in
 create mode 100644 package/nqptp/S90nqptp
 create mode 100644 package/nqptp/nqptp.hash
 create mode 100644 package/nqptp/nqptp.mk

-- 
2.25.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4
  2025-10-25 19:04 [Buildroot] [PATCH 0/2] package/shairport-sync: Add support for AirPlay2 Trammell Hudson via buildroot
@ 2025-10-25 19:05 ` Trammell Hudson via buildroot
  2025-10-25 19:06   ` [Buildroot] [PATCH 2/2] package/shairport-sync: Add support for AirPlay2 Trammell Hudson via buildroot
  2025-12-27  9:58   ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Thomas Petazzoni via buildroot
  0 siblings, 2 replies; 5+ messages in thread
From: Trammell Hudson via buildroot @ 2025-10-25 19:05 UTC (permalink / raw)
  To: buildroot

This is the Not Quite PTP timing library necessary for
AirPlay2 support with shairport-sync.

Signed-off-by: Trammell Hudson <hudson@trmm.net>
---
 package/Config.in        |  1 +
 package/nqptp/Config.in  |  6 ++++++
 package/nqptp/S90nqptp   | 24 ++++++++++++++++++++++++
 package/nqptp/nqptp.hash |  3 +++
 package/nqptp/nqptp.mk   | 31 +++++++++++++++++++++++++++++++
 5 files changed, 65 insertions(+)
 create mode 100644 package/nqptp/Config.in
 create mode 100644 package/nqptp/S90nqptp
 create mode 100644 package/nqptp/nqptp.hash
 create mode 100644 package/nqptp/nqptp.mk

diff --git a/package/Config.in b/package/Config.in
index 161d61728b..b67da80231 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2603,6 +2603,7 @@ endif
 	source "package/nload/Config.in"
 	source "package/nmap/Config.in"
 	source "package/noip/Config.in"
+	source "package/nqptp/Config.in"
 	source "package/ntp/Config.in"
 	source "package/ntpsec/Config.in"
 	source "package/nuttcp/Config.in"
diff --git a/package/nqptp/Config.in b/package/nqptp/Config.in
new file mode 100644
index 0000000000..cddb12e4d0
--- /dev/null
+++ b/package/nqptp/Config.in
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_NQPTP
+	bool "NQPTP"
+	help
+	  Not Quite PTP for shairport-sync AirPlay 2 support.
+	  https://github.com/mikebrady/shairport-sync
+
diff --git a/package/nqptp/S90nqptp b/package/nqptp/S90nqptp
new file mode 100644
index 0000000000..41dbb4749a
--- /dev/null
+++ b/package/nqptp/S90nqptp
@@ -0,0 +1,24 @@
+#! /bin/sh
+
+case "$1" in
+    start)
+	printf "Starting nqptp: "
+	start-stop-daemon -S -q -b --exec /usr/bin/nqptp
+	[ $? = 0 ] && echo "OK" || echo "FAIL"
+	;;
+    stop)
+	printf "Stopping shairport-sync: "
+	start-stop-daemon -K -q --exec /usr/bin/nqptp \
+		-p /var/run/nqptp/nqptp.pid
+	[ $? = 0 ] && echo "OK" || echo "FAIL"
+	;;
+    restart)
+	$0 stop
+	sleep 1
+	$0 start
+	;;
+    *)
+	echo "Usage: $0 {start|stop|restart}"
+	exit 1
+	;;
+esac
diff --git a/package/nqptp/nqptp.hash b/package/nqptp/nqptp.hash
new file mode 100644
index 0000000000..a1b686c1a9
--- /dev/null
+++ b/package/nqptp/nqptp.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256  1df1d5edd5b713010d6495b3abca4c1cf4ad8fa6029df0abeb9e4de8e0eb707a  nqptp-1.2.4.tar.gz
+sha256  1daaa904985807b7f9f2fa91f6b19f3faadf8df4e813f7451a691f89a6965e3f  LICENSES
diff --git a/package/nqptp/nqptp.mk b/package/nqptp/nqptp.mk
new file mode 100644
index 0000000000..11dac9f10e
--- /dev/null
+++ b/package/nqptp/nqptp.mk
@@ -0,0 +1,31 @@
+################################################################################
+#
+# nqptp
+#
+################################################################################
+
+NQPTP_VERSION = 1.2.4
+NQPTP_SITE = $(call github,mikebrady,nqptp,$(NQPTP_VERSION))
+
+NQPTP_LICENSE = MIT, BSD-3-Clause
+NQPTP_LICENSE_FILES = LICENSES
+NQPTP_DEPENDENCIES = libconfig host-pkgconf
+
+# git clone, no configure
+NQPTP_AUTORECONF = YES
+
+NQPTP_CONF_OPTS = 
+
+#NQPTP_CONF_ENV += LIBS="$(NQPTP_CONF_LIBS)"
+
+define NQPTP_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/nqptp \
+		$(TARGET_DIR)/usr/bin/nqptp
+endef
+
+define NQPTP_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 0755 package/nqptp/S90nqptp \
+		$(TARGET_DIR)/etc/init.d/S90nqptp
+endef
+
+$(eval $(autotools-package))
-- 
2.25.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 2/2] package/shairport-sync: Add support for AirPlay2
  2025-10-25 19:05 ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Trammell Hudson via buildroot
@ 2025-10-25 19:06   ` Trammell Hudson via buildroot
  2025-12-27 14:22     ` Thomas Petazzoni via buildroot
  2025-12-27  9:58   ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Thomas Petazzoni via buildroot
  1 sibling, 1 reply; 5+ messages in thread
From: Trammell Hudson via buildroot @ 2025-10-25 19:06 UTC (permalink / raw)
  To: buildroot

This patch adds the dependencies necessary to enable the newer version
of shairplay-sync support for the AirPlay2 protocol.

Signed-off-by: Trammell Hudson <hudson@trmm.net>
---
 package/shairport-sync/Config.in         | 15 +++++++++++++++
 package/shairport-sync/shairport-sync.mk |  5 +++++
 2 files changed, 20 insertions(+)

diff --git a/package/shairport-sync/Config.in b/package/shairport-sync/Config.in
index 528767ba9c..fddba4a439 100644
--- a/package/shairport-sync/Config.in
+++ b/package/shairport-sync/Config.in
@@ -26,6 +26,21 @@ config BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION
 	help
 	  Enable audio DSP convolution support.
 
+config BR2_PACKAGE_SHAIRPORT_SYNC_AIRPLAY2
+	bool "AirPlay2 support"
+	select BR2_PACKAGE_NQPTP
+	select BR2_PACKAGE_LIBPLIST
+	select BR2_PACKAGE_LIBSODIUM
+	select BR2_PACKAGE_LIBGCRYPT
+	select BR2_PACKAGE_FFMPEG
+	select BR2_PACKAGE_FFMPEG_GPL
+	select BR2_PACKAGE_FFMPEG_NONFREE
+	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	help
+	  Enable support for the more modern AirPlay2 protocol.
+	  This will also require ffmpeg and many other libraries.
+
 config BR2_PACKAGE_SHAIRPORT_SYNC_DBUS
 	bool "dbus support"
 	depends on BR2_USE_WCHAR # libglib2
diff --git a/package/shairport-sync/shairport-sync.mk b/package/shairport-sync/shairport-sync.mk
index 493eefbd6f..fa0858a85b 100644
--- a/package/shairport-sync/shairport-sync.mk
+++ b/package/shairport-sync/shairport-sync.mk
@@ -53,6 +53,11 @@ else
 SHAIRPORT_SYNC_CONF_OPTS += --without-convolution
 endif
 
+ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_AIRPLAY2),y)
+SHAIRPORT_SYNC_DEPENDENCIES += libplist libsodium libgcrypt ffmpeg util-linux
+SHAIRPORT_SYNC_CONF_OPTS += --with-airplay-2
+endif
+
 ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_DBUS),y)
 SHAIRPORT_SYNC_DEPENDENCIES += libglib2
 SHAIRPORT_SYNC_CONF_OPTS += --with-dbus-interface --with-mpris-interface
-- 
2.25.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4
  2025-10-25 19:05 ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Trammell Hudson via buildroot
  2025-10-25 19:06   ` [Buildroot] [PATCH 2/2] package/shairport-sync: Add support for AirPlay2 Trammell Hudson via buildroot
@ 2025-12-27  9:58   ` Thomas Petazzoni via buildroot
  1 sibling, 0 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-12-27  9:58 UTC (permalink / raw)
  To: Trammell Hudson via buildroot; +Cc: Trammell Hudson

Hello Trammell,

Sorry for the long delay in taking your contribution into account. I
have merged it after a number of changes, see below.

First, I've adjusted the commit title to:

	package/nqptp: new package

On Sat, 25 Oct 2025 13:05:39 -0600
Trammell Hudson via buildroot <buildroot@buildroot.org> wrote:

> This is the Not Quite PTP timing library necessary for
> AirPlay2 support with shairport-sync.
> 
> Signed-off-by: Trammell Hudson <hudson@trmm.net>
> ---
>  package/Config.in        |  1 +
>  package/nqptp/Config.in  |  6 ++++++
>  package/nqptp/S90nqptp   | 24 ++++++++++++++++++++++++
>  package/nqptp/nqptp.hash |  3 +++
>  package/nqptp/nqptp.mk   | 31 +++++++++++++++++++++++++++++++
>  5 files changed, 65 insertions(+)

I've added an entry in the DEVELOPERS file.


> diff --git a/package/nqptp/Config.in b/package/nqptp/Config.in
> new file mode 100644
> index 0000000000..cddb12e4d0
> --- /dev/null
> +++ b/package/nqptp/Config.in
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_NQPTP
> +	bool "NQPTP"

Changed to:

	bool "nqptp"

I've added:

	depends on BR2_USE_MMU

as it doesn't build for noMMU platforms.

And also, I've added:

	select BR2_PACKAGE_LIBCONFIG

since you have a build-time dependency on it.

> +	help
> +	  Not Quite PTP for shairport-sync AirPlay 2 support.
> +	  https://github.com/mikebrady/shairport-sync

Changed to:

+         nqptp is a daemon that monitors timing data from PTP clocks
+         it sees on ports 319 and 320. It maintains records for one
+         clock, identified by its Clock ID.
+
+         It is a companion application to Shairport Sync and provides
+         timing information for AirPlay 2 operation.
+
+         https://github.com/mikebrady/nqptp

The important bit being that the homepage URL of the project is on a
separate line, which our coding style requires.

> +
> diff --git a/package/nqptp/S90nqptp b/package/nqptp/S90nqptp
> new file mode 100644
> index 0000000000..41dbb4749a
> --- /dev/null
> +++ b/package/nqptp/S90nqptp
> @@ -0,0 +1,24 @@
> +#! /bin/sh

I've fixed this script so that it is modeled after our standard
package/busybox/S01syslogd script.


> diff --git a/package/nqptp/nqptp.hash b/package/nqptp/nqptp.hash
> new file mode 100644
> index 0000000000..a1b686c1a9
> --- /dev/null
> +++ b/package/nqptp/nqptp.hash
> @@ -0,0 +1,3 @@
> +# Locally calculated
> +sha256  1df1d5edd5b713010d6495b3abca4c1cf4ad8fa6029df0abeb9e4de8e0eb707a  nqptp-1.2.4.tar.gz
> +sha256  1daaa904985807b7f9f2fa91f6b19f3faadf8df4e813f7451a691f89a6965e3f  LICENSES

LICENSES didn't exist.

> diff --git a/package/nqptp/nqptp.mk b/package/nqptp/nqptp.mk
> new file mode 100644
> index 0000000000..11dac9f10e
> --- /dev/null
> +++ b/package/nqptp/nqptp.mk
> @@ -0,0 +1,31 @@
> +################################################################################
> +#
> +# nqptp
> +#
> +################################################################################
> +
> +NQPTP_VERSION = 1.2.4
> +NQPTP_SITE = $(call github,mikebrady,nqptp,$(NQPTP_VERSION))
> +

I dropped this empty line.

> +NQPTP_LICENSE = MIT, BSD-3-Clause

License is GPL-2.0.

> +NQPTP_LICENSE_FILES = LICENSES

The file is LICENSE, not LICENSES.

> +NQPTP_DEPENDENCIES = libconfig host-pkgconf
> +
> +# git clone, no configure
> +NQPTP_AUTORECONF = YES
> +
> +NQPTP_CONF_OPTS = 

Dropped.

> +#NQPTP_CONF_ENV += LIBS="$(NQPTP_CONF_LIBS)"

Dropped.

> +
> +define NQPTP_INSTALL_TARGET_CMDS
> +	$(INSTALL) -D -m 0755 $(@D)/nqptp \
> +		$(TARGET_DIR)/usr/bin/nqptp
> +endef
> +
> +define NQPTP_INSTALL_INIT_SYSV
> +	$(INSTALL) -D -m 0755 package/nqptp/S90nqptp \
> +		$(TARGET_DIR)/etc/init.d/S90nqptp
> +endef
> +
> +$(eval $(autotools-package))

Applied with all those changes. Thanks!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH 2/2] package/shairport-sync: Add support for AirPlay2
  2025-10-25 19:06   ` [Buildroot] [PATCH 2/2] package/shairport-sync: Add support for AirPlay2 Trammell Hudson via buildroot
@ 2025-12-27 14:22     ` Thomas Petazzoni via buildroot
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-12-27 14:22 UTC (permalink / raw)
  To: Trammell Hudson via buildroot; +Cc: Trammell Hudson

Hello Trammell,

Thanks for your patch, which I have applied, after doing some tweaks.
See below.

On Sat, 25 Oct 2025 13:06:10 -0600
Trammell Hudson via buildroot <buildroot@buildroot.org> wrote:

> diff --git a/package/shairport-sync/Config.in b/package/shairport-sync/Config.in
> index 528767ba9c..fddba4a439 100644
> --- a/package/shairport-sync/Config.in
> +++ b/package/shairport-sync/Config.in
> @@ -26,6 +26,21 @@ config BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION
>  	help
>  	  Enable audio DSP convolution support.
>  
> +config BR2_PACKAGE_SHAIRPORT_SYNC_AIRPLAY2
> +	bool "AirPlay2 support"
> +	select BR2_PACKAGE_NQPTP

Added an indication in a comment that this is a runtime dependency (as
opposed to a build time dependency).

> +	select BR2_PACKAGE_LIBPLIST
> +	select BR2_PACKAGE_LIBSODIUM
> +	select BR2_PACKAGE_LIBGCRYPT
> +	select BR2_PACKAGE_FFMPEG
> +	select BR2_PACKAGE_FFMPEG_GPL
> +	select BR2_PACKAGE_FFMPEG_NONFREE

These two were not needed according to my testing
(BR2_PACKAGE_FFMPEG_GPL BR2_PACKAGE_FFMPEG_NONFREE).

> +ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_AIRPLAY2),y)
> +SHAIRPORT_SYNC_DEPENDENCIES += libplist libsodium libgcrypt ffmpeg util-linux

I've added host-vim in this list because the "xxd" tool is needed on
the host, and the host-vim package provides it.

Best regards,

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-12-27 14:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-25 19:04 [Buildroot] [PATCH 0/2] package/shairport-sync: Add support for AirPlay2 Trammell Hudson via buildroot
2025-10-25 19:05 ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Trammell Hudson via buildroot
2025-10-25 19:06   ` [Buildroot] [PATCH 2/2] package/shairport-sync: Add support for AirPlay2 Trammell Hudson via buildroot
2025-12-27 14:22     ` Thomas Petazzoni via buildroot
2025-12-27  9:58   ` [Buildroot] [PATCH 1/2] package/nqptp: Add version 1.2.4 Thomas Petazzoni via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.