]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Use s6-notifyoncheck to check for services startup readiness 1665/head
authorChristian König <ckoenig@posteo.de>
Tue, 18 Apr 2023 20:41:56 +0000 (22:41 +0200)
committerChristian König <ckoenig@posteo.de>
Tue, 18 Apr 2023 20:41:56 +0000 (22:41 +0200)
Signed-off-by: Christian König <ckoenig@posteo.de>
12 files changed:
docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/data/check [new file with mode: 0755]
docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/notification-fd [new file with mode: 0644]
docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/run
docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/data/check [new file with mode: 0755]
docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/notification-fd [new file with mode: 0644]
docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/run
docker/etc/s6-overlay/s6-rc.d/02-dbus/data/check [new file with mode: 0755]
docker/etc/s6-overlay/s6-rc.d/02-dbus/notification-fd [new file with mode: 0644]
docker/etc/s6-overlay/s6-rc.d/02-dbus/run
docker/etc/s6-overlay/s6-rc.d/03-avahi/data/check [new file with mode: 0755]
docker/etc/s6-overlay/s6-rc.d/03-avahi/notification-fd [new file with mode: 0644]
docker/etc/s6-overlay/s6-rc.d/03-avahi/run

diff --git a/docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/data/check b/docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/data/check
new file mode 100755 (executable)
index 0000000..39eeac1
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec dbus-send --system / org.freedesktop.DBus.Peer.Ping > /dev/null 2> /dev/null
diff --git a/docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/notification-fd b/docker/classic/etc/s6-overlay/s6-rc.d/02-dbus/notification-fd
new file mode 100644 (file)
index 0000000..00750ed
--- /dev/null
@@ -0,0 +1 @@
+3
index 2278697a5c8cfe5c9dfa15ce38f0a85c19ba1a9a..15018b7e51e68a5ea8b5e3636b19ef4f26d68e22 100644 (file)
@@ -1,4 +1,3 @@
 #!/command/with-contenv sh
-rm -rf /var/run/dbus/dbus.pid
 echo "Starting dbus"
-exec dbus-daemon --system --nofork
+exec s6-notifyoncheck  dbus-daemon --system --nofork --nopidfile
diff --git a/docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/data/check b/docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/data/check
new file mode 100755 (executable)
index 0000000..ccb833b
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+state="$(dbus-send --system --dest=org.freedesktop.Avahi --print-reply / org.freedesktop.Avahi.Server.GetState | grep int32 | awk '{printf $2}')"
+
+# Avahi will return 'state=2' when 'Server startup complete'
+if [ "$state" = 2 ]; then
+    exit 0
+else
+    exit 1
+fi
+
diff --git a/docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/notification-fd b/docker/classic/etc/s6-overlay/s6-rc.d/03-avahi/notification-fd
new file mode 100644 (file)
index 0000000..00750ed
--- /dev/null
@@ -0,0 +1 @@
+3
index e3ea2ff971c398248a216cc26a7787c8e08fb78f..edb5e74b0dffe2fcf54276636376e10742bfb42b 100644 (file)
@@ -1,7 +1,3 @@
 #!/command/with-contenv sh
-while [ ! -f /var/run/dbus/dbus.pid ]; do
-  echo "s6-rc: warning: dbus is not running, sleeping for 1 second before trying to start avahi"
-  sleep 1
-done
 echo "Starting avahi"
-exec avahi-daemon --no-chroot
+exec s6-notifyoncheck avahi-daemon --no-chroot
diff --git a/docker/etc/s6-overlay/s6-rc.d/02-dbus/data/check b/docker/etc/s6-overlay/s6-rc.d/02-dbus/data/check
new file mode 100755 (executable)
index 0000000..39eeac1
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec dbus-send --system / org.freedesktop.DBus.Peer.Ping > /dev/null 2> /dev/null
diff --git a/docker/etc/s6-overlay/s6-rc.d/02-dbus/notification-fd b/docker/etc/s6-overlay/s6-rc.d/02-dbus/notification-fd
new file mode 100644 (file)
index 0000000..00750ed
--- /dev/null
@@ -0,0 +1 @@
+3
index 2278697a5c8cfe5c9dfa15ce38f0a85c19ba1a9a..15018b7e51e68a5ea8b5e3636b19ef4f26d68e22 100644 (file)
@@ -1,4 +1,3 @@
 #!/command/with-contenv sh
-rm -rf /var/run/dbus/dbus.pid
 echo "Starting dbus"
-exec dbus-daemon --system --nofork
+exec s6-notifyoncheck  dbus-daemon --system --nofork --nopidfile
diff --git a/docker/etc/s6-overlay/s6-rc.d/03-avahi/data/check b/docker/etc/s6-overlay/s6-rc.d/03-avahi/data/check
new file mode 100755 (executable)
index 0000000..ccb833b
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+state="$(dbus-send --system --dest=org.freedesktop.Avahi --print-reply / org.freedesktop.Avahi.Server.GetState | grep int32 | awk '{printf $2}')"
+
+# Avahi will return 'state=2' when 'Server startup complete'
+if [ "$state" = 2 ]; then
+    exit 0
+else
+    exit 1
+fi
+
diff --git a/docker/etc/s6-overlay/s6-rc.d/03-avahi/notification-fd b/docker/etc/s6-overlay/s6-rc.d/03-avahi/notification-fd
new file mode 100644 (file)
index 0000000..00750ed
--- /dev/null
@@ -0,0 +1 @@
+3
index e3ea2ff971c398248a216cc26a7787c8e08fb78f..edb5e74b0dffe2fcf54276636376e10742bfb42b 100644 (file)
@@ -1,7 +1,3 @@
 #!/command/with-contenv sh
-while [ ! -f /var/run/dbus/dbus.pid ]; do
-  echo "s6-rc: warning: dbus is not running, sleeping for 1 second before trying to start avahi"
-  sleep 1
-done
 echo "Starting avahi"
-exec avahi-daemon --no-chroot
+exec s6-notifyoncheck avahi-daemon --no-chroot