diff options
author | Chen Qi <Qi.Chen@windriver.com> | 2018-06-13 15:58:23 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-06-18 11:07:57 +0100 |
commit | d200e3196d6646a43be1aa5ec80d299b6524bac0 (patch) | |
tree | a7ce98b756967fe0ee45161793cc87dfb49f39e3 /meta | |
parent | 8aee3cce93666c758c9f01ffbcbdb8da915cb2dc (diff) | |
download | poky-d200e3196d6646a43be1aa5ec80d299b6524bac0.tar.gz |
watchdog: fix init script for sysvinit
The current init script is installed from source with redhat style.
It does not get configuration from /etc/default/watchdog. We should use
debian style init script.
Write our own script just like what wd_keepalive does.
Also, in the init script, we check the existence of /dev/watchdog to
determine whether to start the daemon or not.
(From OE-Core rev: a31f8dd34e8ea34dfb087ed464575aa390ece09b)
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-extended/watchdog/watchdog/watchdog-init.patch | 56 | ||||
-rw-r--r-- | meta/recipes-extended/watchdog/watchdog/watchdog.init | 110 | ||||
-rw-r--r-- | meta/recipes-extended/watchdog/watchdog_5.15.bb | 6 |
3 files changed, 113 insertions, 59 deletions
diff --git a/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch b/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch deleted file mode 100644 index b2765f1908..0000000000 --- a/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch +++ /dev/null | |||
@@ -1,56 +0,0 @@ | |||
1 | Signed-off-by: Diego Rondini <diego.ml@zoho.com> | ||
2 | Upstream-Status: Inappropriate | ||
3 | |||
4 | --- watchdog-5.13.orig/redhat/watchdog.init 2014-11-12 17:18:39.125943000 +0100 | ||
5 | +++ watchdog-5.13/redhat/watchdog.init 2014-11-12 18:27:36.189943000 +0100 | ||
6 | @@ -7,7 +7,7 @@ | ||
7 | # Henning P. Schmiedehausen <hps@tanstaafl.de> | ||
8 | |||
9 | # Source function library. | ||
10 | -. /etc/rc.d/init.d/functions | ||
11 | +. /etc/init.d/functions | ||
12 | |||
13 | [ -x /usr/sbin/watchdog -a -e /etc/watchdog.conf ] || exit 0 | ||
14 | |||
15 | @@ -23,22 +23,22 @@ | ||
16 | |||
17 | start() { | ||
18 | |||
19 | - echo -n $"Starting $prog: " | ||
20 | + echo -n "Starting $prog: " | ||
21 | if [ -n "$(pidofproc $prog)" ]; then | ||
22 | - echo -n $"$prog: already running" | ||
23 | - echo_failure | ||
24 | + echo -n "$prog: already running " | ||
25 | + failure | ||
26 | echo | ||
27 | return 1 | ||
28 | fi | ||
29 | if [ "$VERBOSE" = "yes" ]; then | ||
30 | - daemon /usr/sbin/${prog} -v | ||
31 | + /usr/sbin/${prog} -v | ||
32 | else | ||
33 | - daemon /usr/sbin/${prog} | ||
34 | + /usr/sbin/${prog} | ||
35 | fi | ||
36 | RETVAL=$? | ||
37 | [ $RETVAL -eq 0 ] && touch $lockfile | ||
38 | - [ $RETVAL -eq 0 ] && echo_success | ||
39 | - [ $RETVAL -ne 0 ] && echo_failure | ||
40 | + [ $RETVAL -eq 0 ] && success | ||
41 | + [ $RETVAL -ne 0 ] && failure | ||
42 | echo | ||
43 | return $RETVAL | ||
44 | } | ||
45 | @@ -50,8 +50,10 @@ | ||
46 | # and reboot the box. | ||
47 | killproc $prog -TERM | ||
48 | RETVAL=$? | ||
49 | - echo | ||
50 | [ $RETVAL -eq 0 ] && rm -f $lockfile $pidfile | ||
51 | + [ $RETVAL -eq 0 ] && success | ||
52 | + [ $RETVAL -ne 0 ] && failure | ||
53 | + echo | ||
54 | return $RETVAL | ||
55 | } | ||
56 | |||
diff --git a/meta/recipes-extended/watchdog/watchdog/watchdog.init b/meta/recipes-extended/watchdog/watchdog/watchdog.init new file mode 100644 index 0000000000..d37107cf0e --- /dev/null +++ b/meta/recipes-extended/watchdog/watchdog/watchdog.init | |||
@@ -0,0 +1,110 @@ | |||
1 | #!/bin/sh | ||
2 | #/etc/init.d/watchdog: start watchdog daemon. | ||
3 | |||
4 | ### BEGIN INIT INFO | ||
5 | # Provides: watchdog | ||
6 | # Short-Description: Start software watchdog daemon | ||
7 | # Required-Start: $all | ||
8 | # Required-Stop: $all | ||
9 | # Should-Start: | ||
10 | # Should-Stop: | ||
11 | # Default-Start: 2 3 4 5 | ||
12 | # Default-Stop: 0 1 6 | ||
13 | ### END INIT INFO | ||
14 | |||
15 | PATH=/bin:/usr/bin:/sbin:/usr/sbin | ||
16 | |||
17 | test -x /usr/sbin/watchdog || exit 0 | ||
18 | |||
19 | # For configuration of the init script use the file | ||
20 | # /etc/default/watchdog, do not edit this init script. | ||
21 | |||
22 | # Set run_watchdog to 1 to start watchdog or 0 to disable it. | ||
23 | run_watchdog=0 | ||
24 | |||
25 | # Specify additional watchdog options here (see manpage). | ||
26 | watchdog_options="" | ||
27 | |||
28 | # Specify module to load | ||
29 | watchdog_module="none" | ||
30 | |||
31 | [ -e /etc/default/watchdog ] && . /etc/default/watchdog | ||
32 | |||
33 | NAME=watchdog | ||
34 | DAEMON=/usr/sbin/watchdog | ||
35 | |||
36 | STOP_RETRY_SCHEDULE='TERM/10/forever/KILL/1' | ||
37 | |||
38 | . /etc/init.d/functions | ||
39 | |||
40 | # Mock Debian stuff | ||
41 | log_begin_msg() { | ||
42 | echo -n $* | ||
43 | } | ||
44 | |||
45 | log_end_msg() { | ||
46 | if [ "$1" = "0" ]; then | ||
47 | echo 'done' | ||
48 | else | ||
49 | echo 'error' | ||
50 | fi | ||
51 | } | ||
52 | |||
53 | log_daemon_msg() { | ||
54 | echo $* | ||
55 | } | ||
56 | |||
57 | log_progress_msg() { | ||
58 | echo $* | ||
59 | } | ||
60 | |||
61 | case "$1" in | ||
62 | start) | ||
63 | if [ $run_watchdog = 1 ] | ||
64 | then | ||
65 | # do we have to load a module? | ||
66 | [ "${watchdog_module:-none}" != "none" ] && /sbin/modprobe $watchdog_module | ||
67 | |||
68 | # Check /dev/watchdog here because if it does not exist after module loading, | ||
69 | # it makes no sense to start the daemon | ||
70 | test -e /dev/watchdog || { log_daemon_msg "daemon not start due to lack of /dev/watchdog"; exit 0; } | ||
71 | |||
72 | log_begin_msg "Starting watchdog daemon..." | ||
73 | start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ | ||
74 | --exec $DAEMON -- $watchdog_options | ||
75 | log_end_msg $? | ||
76 | fi | ||
77 | ;; | ||
78 | |||
79 | stop) | ||
80 | if [ $run_watchdog = 1 ] | ||
81 | then | ||
82 | log_begin_msg "Stopping watchdog daemon..." | ||
83 | start-stop-daemon --stop --quiet --retry $STOP_RETRY_SCHEDULE \ | ||
84 | --pidfile /var/run/$NAME.pid | ||
85 | |||
86 | fi | ||
87 | ;; | ||
88 | |||
89 | restart) | ||
90 | $0 force-reload | ||
91 | ;; | ||
92 | |||
93 | force-reload) | ||
94 | if [ $run_watchdog = 0 ]; then exit 0; fi | ||
95 | log_daemon_msg "Restarting $NAME" | ||
96 | $0 stop | ||
97 | $0 start | ||
98 | ;; | ||
99 | |||
100 | status) | ||
101 | status "$DAEMON" | ||
102 | ;; | ||
103 | |||
104 | *) | ||
105 | echo "Usage: /etc/init.d/watchdog {start|stop|restart|force-reload|status}" | ||
106 | exit 1 | ||
107 | |||
108 | esac | ||
109 | |||
110 | exit 0 | ||
diff --git a/meta/recipes-extended/watchdog/watchdog_5.15.bb b/meta/recipes-extended/watchdog/watchdog_5.15.bb index 8353ec0d20..1acab2e9e7 100644 --- a/meta/recipes-extended/watchdog/watchdog_5.15.bb +++ b/meta/recipes-extended/watchdog/watchdog_5.15.bb | |||
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ecc0551bf54ad97f6b541720f84d6569" | |||
11 | SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \ | 11 | SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \ |
12 | file://0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch \ | 12 | file://0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch \ |
13 | file://0001-watchdog-remove-interdependencies-of-watchdog-and-wd.patch \ | 13 | file://0001-watchdog-remove-interdependencies-of-watchdog-and-wd.patch \ |
14 | file://watchdog-init.patch \ | 14 | file://watchdog.init \ |
15 | file://wd_keepalive.init \ | 15 | file://wd_keepalive.init \ |
16 | " | 16 | " |
17 | 17 | ||
@@ -31,7 +31,7 @@ EXTRA_OECONF += " --disable-nfs " | |||
31 | 31 | ||
32 | INITSCRIPT_PACKAGES = "${PN} ${PN}-keepalive" | 32 | INITSCRIPT_PACKAGES = "${PN} ${PN}-keepalive" |
33 | 33 | ||
34 | INITSCRIPT_NAME_${PN} = "watchdog.sh" | 34 | INITSCRIPT_NAME_${PN} = "watchdog" |
35 | INITSCRIPT_PARAMS_${PN} = "start 25 1 2 3 4 5 . stop 85 0 6 ." | 35 | INITSCRIPT_PARAMS_${PN} = "start 25 1 2 3 4 5 . stop 85 0 6 ." |
36 | 36 | ||
37 | INITSCRIPT_NAME_${PN}-keepalive = "wd_keepalive" | 37 | INITSCRIPT_NAME_${PN}-keepalive = "wd_keepalive" |
@@ -49,7 +49,7 @@ do_install_append() { | |||
49 | install -m 0644 ${S}/debian/watchdog.service ${D}${systemd_system_unitdir} | 49 | install -m 0644 ${S}/debian/watchdog.service ${D}${systemd_system_unitdir} |
50 | install -m 0644 ${S}/debian/wd_keepalive.service ${D}${systemd_system_unitdir} | 50 | install -m 0644 ${S}/debian/wd_keepalive.service ${D}${systemd_system_unitdir} |
51 | 51 | ||
52 | install -D ${S}/redhat/watchdog.init ${D}/${sysconfdir}/init.d/watchdog.sh | 52 | install -Dm 0755 ${WORKDIR}/watchdog.init ${D}/${sysconfdir}/init.d/watchdog |
53 | install -Dm 0755 ${WORKDIR}/wd_keepalive.init ${D}${sysconfdir}/init.d/wd_keepalive | 53 | install -Dm 0755 ${WORKDIR}/wd_keepalive.init ${D}${sysconfdir}/init.d/wd_keepalive |
54 | 54 | ||
55 | # watchdog.conf is provided by the watchdog-config recipe | 55 | # watchdog.conf is provided by the watchdog-config recipe |