[Buildroot] [git commit branch/2024.11.x] package/watchdogd: fix sysv init script
Peter Korsgaard
peter at korsgaard.com
Tue Feb 25 20:02:28 UTC 2025
commit: https://git.buildroot.net/buildroot/commit/?id=197a1bd331390fbe5765b400baff1fb8d5e9371e
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2024.11.x
PIDFILE was set incorrectly, watchdogd writes its PID file to
/var/run/watchdogd/pid (note the slash), which is not configurable
without patching.
Restructure the rest of the script to match current style while at it.
Signed-off-by: Fiona Klute (WIWA) <fiona.klute at gmx.de>
Signed-off-by: Peter Korsgaard <peter at korsgaard.com>
(cherry picked from commit 51b848b534b194dc716cf4a75133b64f0fa216d9)
Signed-off-by: Peter Korsgaard <peter at korsgaard.com>
---
.checkpackageignore | 1 -
package/watchdogd/S01watchdogd | 102 ++++++++++++++++++++++++++---------------
2 files changed, 66 insertions(+), 37 deletions(-)
diff --git a/.checkpackageignore b/.checkpackageignore
index 0dcca5ebc7..bb815b6329 100644
--- a/.checkpackageignore
+++ b/.checkpackageignore
@@ -1315,7 +1315,6 @@ package/waffle/0003-drop-C-dependency.patch lib_patch.Upstream
package/wampcc/0001-Add-RISC-V-endian-detection.patch lib_patch.Upstream
package/wampcc/0002-include-wampcc-platform.h-fix-build-with-musl-1.2.0.patch lib_patch.Upstream
package/wampcc/0003-Broken-build-on-Windows.patch lib_patch.Upstream
-package/watchdogd/S01watchdogd NotExecutable lib_sysv.Indent
package/wget/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch lib_patch.Upstream
package/wilc-driver/0001-cfg80211.c-fix-missing-prandom_u32-with-Linux-6.1.0.patch lib_patch.Upstream
package/wilc-driver/0002-spi.c-fix-build-failure-on-remove-callback.patch lib_patch.Upstream
diff --git a/package/watchdogd/S01watchdogd b/package/watchdogd/S01watchdogd
old mode 100755
new mode 100644
index df57b8ad7a..8f811ac0fc
--- a/package/watchdogd/S01watchdogd
+++ b/package/watchdogd/S01watchdogd
@@ -1,47 +1,77 @@
#!/bin/sh
DAEMON="watchdogd"
-PIDFILE="/var/run/$DAEMON.pid"
+PIDFILE="/var/run/$DAEMON/pid"
# shellcheck source=/dev/null
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
-cmd()
-{
- start-stop-daemon -q -p "$PIDFILE" -x "/usr/sbin/$DAEMON" "$@"
- status=$?
- if [ $status -eq 0 ]; then
- echo "OK"
- else
- echo "FAIL"
- fi
- return $status
+start() {
+ printf "Starting %s: " "$DAEMON"
+ # shellcheck disable=SC2086 # we need the word splitting
+ start-stop-daemon --start --pidfile "$PIDFILE" \
+ --exec "/usr/sbin/$DAEMON" -- $WATCHDOGD_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/sbin/$DAEMON"
+ status=$?
+ if [ "$status" -eq 0 ]; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ # watchdogd deletes its PID file on exit, wait for it to be gone
+ while [ -f "$PIDFILE" ]; do
+ sleep 0.1
+ done
+ return "$status"
+}
+
+restart() {
+ stop
+ start
+}
+
+reload() {
+ printf "Reloading %s config: " "$DAEMON"
+ start-stop-daemon --stop --signal HUP -q --pidfile "$PIDFILE" \
+ --exec "/usr/sbin/$DAEMON"
+ status=$?
+ if [ "$status" -eq 0 ]; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ return "$status"
}
case "$1" in
- start)
- printf 'Starting %s: ' "$DAEMON"
- # shellcheck disable=SC2086 # we need the word splitting
- cmd -S -- $SMCROUTED_ARGS
- ;;
-
- stop)
- printf 'Stopping %s: ' "$DAEMON"
- cmd -K
- ;;
-
- restart)
- $0 stop
- sleep 1
- $0 start
- ;;
-
- reload)
- printf 'Reloading %s: ' "$DAEMON"
- cmd -K -s HUP
- ;;
-
- *)
- echo "Usage: $0 {start|stop|restart|reload}"
- exit 1
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ restart
+ ;;
+ reload)
+ reload
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|reload}"
+ exit 1
+ ;;
esac
+
+exit $?
More information about the buildroot
mailing list