From 9c28ee1988ab4383515353f8163a85b333847f00 Mon Sep 17 00:00:00 2001 From: Szabolcs Hubai Date: Sun, 10 May 2020 22:19:38 +0200 Subject: [PATCH 1/2] openwrt: convert to procd --- openwrt/snapcast/files/snapclient.init | 51 ++++++++++---------------- openwrt/snapcast/files/snapserver.init | 51 ++++++++++---------------- 2 files changed, 38 insertions(+), 64 deletions(-) diff --git a/openwrt/snapcast/files/snapclient.init b/openwrt/snapcast/files/snapclient.init index 7272db5..030ea83 100755 --- a/openwrt/snapcast/files/snapclient.init +++ b/openwrt/snapcast/files/snapclient.init @@ -2,42 +2,29 @@ # Author: Johannes Pohl START=90 -SERVICE_NAME=snapclient -SERVICE_WRITE_PID=1 -SERVICE_DAEMONIZE=1 -SERVICE_PID_FILE=/var/run/$SERVICE_NAME/pid +USE_PROCD=1 -DESC="Snapcast client" -DAEMON=/usr/bin/$SERVICE_NAME +NAME=snapclient +PROG=/usr/bin/$NAME +PID_FILE=/var/run/$NAME.pid +CONFIG_FILE=/etc/default/$NAME -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$SERVICE_NAME ] && . /etc/default/$SERVICE_NAME -SNAPCLIENT_OPTS="-d $SNAPCLIENT_OPTS" +start_service() +{ + local autostart opts -if [ "$START_SNAPCLIENT" != "true" ] ; then - exit 0 -fi + autostart=$(grep ^START_SNAPCLIENT $CONFIG_FILE |cut -d= -f2) + [ "$autostart" != "true" ] && logger -t $NAME "Not starting due to START_SNAPCLIENT" && exit 0 -# -# Function that starts the daemon/service -# -start() -{ - service_start $DAEMON $SNAPCLIENT_OPTS -} + opts=$(grep ^SNAPCLIENT_OPTS $CONFIG_FILE |cut -d "\"" -f2) + opts="--logsink system $opts" -# -# Function that stops the daemon/service -# -stop() -{ - service_stop $DAEMON - #killall $SERVICE_NAME - # Many daemons don't delete their pidfiles when they exit. - rm -f $SERVICE_PID_FILE + procd_open_instance + procd_set_param command $PROG + procd_append_param command $opts + procd_set_param pidfile $PID_FILE + procd_set_param stderr 1 + procd_set_param stdout 1 + procd_close_instance } - diff --git a/openwrt/snapcast/files/snapserver.init b/openwrt/snapcast/files/snapserver.init index 4dec792..81e4f85 100755 --- a/openwrt/snapcast/files/snapserver.init +++ b/openwrt/snapcast/files/snapserver.init @@ -2,42 +2,29 @@ # Author: Johannes Pohl START=90 -SERVICE_NAME=snapserver -SERVICE_WRITE_PID=1 -SERVICE_DAEMONIZE=1 -SERVICE_PID_FILE=/var/run/$SERVICE_NAME/pid +USE_PROCD=1 -DESC="Snapcast server" -DAEMON=/usr/bin/$SERVICE_NAME +NAME=snapserver +PROG=/usr/bin/$NAME +PID_FILE=/var/run/$NAME.pid +CONFIG_FILE=/etc/default/$NAME -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$SERVICE_NAME ] && . /etc/default/$SERVICE_NAME -SNAPSERVER_OPTS="-d $SNAPSERVER_OPTS" +start_service() +{ + local autostart opts -if [ "$START_SNAPSERVER" != "true" ] ; then - exit 0 -fi + autostart=$(grep ^START_SNAPSERVER $CONFIG_FILE |cut -d= -f2) + [ "$autostart" != "true" ] && logger -t $NAME "Not starting due to START_SNAPSERVER" && exit 0 -# -# Function that starts the daemon/service -# -start() -{ - service_start $DAEMON $SNAPSERVER_OPTS -} + opts=$(grep ^SNAPSERVER_OPTS $CONFIG_FILE |cut -d "\"" -f2) + opts="--logging.sink system $opts" -# -# Function that stops the daemon/service -# -stop() -{ - service_stop $DAEMON - #killall $SERVICE_NAME - # Many daemons don't delete their pidfiles when they exit. - rm -f $SERVICE_PID_FILE + procd_open_instance + procd_set_param command $PROG + procd_append_param command $opts + procd_set_param pidfile $PID_FILE + procd_set_param stderr 1 + procd_set_param stdout 1 + procd_close_instance } - From 806356271e4ce3531a552a2984750d4e2f078ceb Mon Sep 17 00:00:00 2001 From: Szabolcs Hubai Date: Mon, 29 Aug 2022 11:26:53 +0200 Subject: [PATCH 2/2] openwrt: use procd's automatic crash recovery with default values of 3600s threshold, 5s timeout and 5 respawn retry See "Service Parameters" at [0] 0: https://openwrt.org/docs/guide-developer/procd-init-scripts#service_parameters --- openwrt/snapcast/files/snapclient.init | 1 + openwrt/snapcast/files/snapserver.init | 1 + 2 files changed, 2 insertions(+) diff --git a/openwrt/snapcast/files/snapclient.init b/openwrt/snapcast/files/snapclient.init index 030ea83..9bace4b 100755 --- a/openwrt/snapcast/files/snapclient.init +++ b/openwrt/snapcast/files/snapclient.init @@ -24,6 +24,7 @@ start_service() procd_set_param command $PROG procd_append_param command $opts procd_set_param pidfile $PID_FILE + procd_set_param respawn # use the defaults for respawing crashed process procd_set_param stderr 1 procd_set_param stdout 1 procd_close_instance diff --git a/openwrt/snapcast/files/snapserver.init b/openwrt/snapcast/files/snapserver.init index 81e4f85..0747fe9 100755 --- a/openwrt/snapcast/files/snapserver.init +++ b/openwrt/snapcast/files/snapserver.init @@ -24,6 +24,7 @@ start_service() procd_set_param command $PROG procd_append_param command $opts procd_set_param pidfile $PID_FILE + procd_set_param respawn # use the defaults for respawing crashed process procd_set_param stderr 1 procd_set_param stdout 1 procd_close_instance