From 8df8272281f2b4d2243db3562bb9cc2005f6a24d Mon Sep 17 00:00:00 2001 From: Trammell Hudson Date: Sat, 25 Oct 2025 13:05:39 -0600 Subject: [PATCH] package/nqptp: new package This is the Not Quite PTP timing library necessary for AirPlay2 support with shairport-sync. Signed-off-by: Trammell Hudson Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 3 +++ package/Config.in | 1 + package/nqptp/Config.in | 13 +++++++++ package/nqptp/S90nqptp | 58 ++++++++++++++++++++++++++++++++++++++++ package/nqptp/nqptp.hash | 3 +++ package/nqptp/nqptp.mk | 24 +++++++++++++++++ 6 files changed, 102 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/DEVELOPERS b/DEVELOPERS index d83540b6bf..a9eb5d9231 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3317,6 +3317,9 @@ F: package/kmemd/ N: Torben Voltmer F: package/espflash/ +N: Trammell Hudson +F: package/nqptp/ + N: Tudor Holton F: package/openjdk/ diff --git a/package/Config.in b/package/Config.in index 22970b4d45..f33c116ec5 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2593,6 +2593,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..ec5d2ece2e --- /dev/null +++ b/package/nqptp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_NQPTP + bool "nqptp" + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBCONFIG + help + 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 diff --git a/package/nqptp/S90nqptp b/package/nqptp/S90nqptp new file mode 100644 index 0000000000..0cd579a339 --- /dev/null +++ b/package/nqptp/S90nqptp @@ -0,0 +1,58 @@ +#!/bin/sh + +DAEMON="nqptp" +PIDFILE="/var/run/$DAEMON.pid" + +NQPTP_ARGS="" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need the word splitting + start-stop-daemon --start --background --make-pidfile \ + --pidfile "$PIDFILE" --exec "/usr/bin/$DAEMON" \ + -- $NQPTP_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/usr/bin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart) + "$1";; + reload) + # Restart, since there is no true "reload" feature. + restart;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/package/nqptp/nqptp.hash b/package/nqptp/nqptp.hash new file mode 100644 index 0000000000..a37f7149db --- /dev/null +++ b/package/nqptp/nqptp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1df1d5edd5b713010d6495b3abca4c1cf4ad8fa6029df0abeb9e4de8e0eb707a nqptp-1.2.4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/nqptp/nqptp.mk b/package/nqptp/nqptp.mk new file mode 100644 index 0000000000..70e7e72d15 --- /dev/null +++ b/package/nqptp/nqptp.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# nqptp +# +################################################################################ + +NQPTP_VERSION = 1.2.4 +NQPTP_SITE = $(call github,mikebrady,nqptp,$(NQPTP_VERSION)) +NQPTP_LICENSE = GPL-2.0 +NQPTP_LICENSE_FILES = LICENSE +NQPTP_DEPENDENCIES = libconfig host-pkgconf +# git clone, no configure +NQPTP_AUTORECONF = YES + +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))