From ef5947774f04dbdf8edffb88b8688917cd6b71b2 Mon Sep 17 00:00:00 2001 From: "Fiona Klute (WIWA)" Date: Wed, 31 Jul 2024 20:13:33 +0200 Subject: [PATCH] package/docker-engine: rewrite dockerd init script This brings the dockerd init script in line with the standard Buildroot init script pattern. Reload using SIGHUP is also supported now, note that the Docker documentation cautions that not all parameters can be changed at runtime (without a full restart). Signed-off-by: Fiona Klute (WIWA) Signed-off-by: Thomas Petazzoni --- .checkpackageignore | 1 - package/docker-engine/S60dockerd | 84 ++++++++++++++++++++++---------- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index 203cfb4a2c..3580d49430 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -439,7 +439,6 @@ package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch lib_patch.Upstream package/dmraid/0001-fix-compilation-under-musl.patch lib_patch.Upstream package/dmraid/S20dmraid lib_sysv.Variables -package/docker-engine/S60dockerd Shellcheck lib_sysv.Indent lib_sysv.Variables package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch lib_patch.Upstream package/domoticz/S99domoticz Shellcheck package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch lib_patch.Upstream diff --git a/package/docker-engine/S60dockerd b/package/docker-engine/S60dockerd index def8bea149..aab50d84d4 100644 --- a/package/docker-engine/S60dockerd +++ b/package/docker-engine/S60dockerd @@ -1,38 +1,68 @@ #!/bin/sh -NAME=dockerd -DAEMON=/usr/bin/$NAME -PIDFILE=/var/run/$NAME.pid -DAEMON_ARGS="" +DAEMON="dockerd" +PIDFILE="/var/run/$DAEMON.pid" -[ -r /etc/default/$NAME ] && . /etc/default/$NAME $1 +DOCKERD_ARGS="" -do_start() { - echo -n "Starting $NAME: " - start-stop-daemon --start --quiet --background --make-pidfile \ - --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ - && echo "OK" || echo "FAIL" +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +start() { + printf 'Starting %s: ' "$DAEMON" + # shellcheck disable=SC2086 # we need word splitting for DOCKERD_ARGS + start-stop-daemon --start --background --pidfile "$PIDFILE" \ + --exec "/usr/bin/$DAEMON" \ + -- --pidfile "$PIDFILE" $DOCKERD_ARGS + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" } -do_stop() { - echo -n "Stopping $NAME: " - start-stop-daemon --stop --quiet --pidfile $PIDFILE \ - && echo "OK" || echo "FAIL" +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 "/usr/bin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" +} + +restart() { + stop + start +} + +reload() { + printf "Reloading %s config: " "$DAEMON" + start-stop-daemon --stop --signal HUP -q --pidfile "$PIDFILE" \ + --exec "/usr/bin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" } case "$1" in - start) - do_start - ;; - stop) - do_stop - ;; - restart) - do_stop - sleep 1 - do_start - ;; + start|stop|restart|reload) + "$1";; *) - echo "Usage: $0 {start|stop|restart}" - exit 1 + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 esac