diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-extended/watchdog')
6 files changed, 315 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch new file mode 100644 index 000000000..8afed5c0d --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch @@ -0,0 +1,99 @@ +From 83ec34df357218a1c9cfc13a23d3367d333652c3 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 30 Dec 2015 01:01:15 +0000 +Subject: [PATCH] Fix build issues found with non glibc C libraries + +Add time.h for getting time_t definition +limits.h for PATH_MAX +linux/param.h for EXEC_PAGESIZE +Replace deprecated MNTTAB with _PATH_MNTTAB +include ext2_mnt.h for MNTOPT_USRQUOTA and MNTOPT_GRPQUOTA and +MNTTYPE_EXT2 +Include sys/types.h for u_char definition + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + +Upstream-Status: Submitted + + include/extern.h | 1 + + src/configfile.c | 1 + + src/memory.c | 3 +++ + src/net.c | 1 + + src/shutdown.c | 3 ++- + 5 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/include/extern.h b/include/extern.h +index 21db11b..04b16bc 100644 +--- a/include/extern.h ++++ b/include/extern.h +@@ -3,6 +3,7 @@ + + #include <netinet/in.h> + #include <stdio.h> ++#include <time.h> + + #include "logmessage.h" + #include "xmalloc.h" +diff --git a/src/configfile.c b/src/configfile.c +index be5d7b3..7c1d1dd 100644 +--- a/src/configfile.c ++++ b/src/configfile.c +@@ -16,6 +16,7 @@ + #include <errno.h> + #include <string.h> + #include <dirent.h> ++#include <limits.h> + #include <sys/stat.h> + + #include "extern.h" +diff --git a/src/memory.c b/src/memory.c +index e9607e4..b5e08aa 100644 +--- a/src/memory.c ++++ b/src/memory.c +@@ -21,6 +21,9 @@ + #include <sys/stat.h> + #include <sys/param.h> + #include <sys/mman.h> ++#ifdef __linux__ ++#include <linux/param.h> ++#endif + + #include "extern.h" + #include "watch_err.h" +diff --git a/src/net.c b/src/net.c +index 21823ae..8930caf 100644 +--- a/src/net.c ++++ b/src/net.c +@@ -17,6 +17,7 @@ + #include <string.h> + #include <unistd.h> /* for gethostname() etc */ + #include <netdb.h> /* for gethostbyname() */ ++#include <sys/types.h> + #include <sys/param.h> /* for MAXHOSTNAMELEN */ + #include <sys/socket.h> + #include <netinet/in.h> +diff --git a/src/shutdown.c b/src/shutdown.c +index 74aafa5..46b99cf 100644 +--- a/src/shutdown.c ++++ b/src/shutdown.c +@@ -25,6 +25,7 @@ + + #include "watch_err.h" + #include "extern.h" ++#include "ext2_mnt.h" + + #if defined __GLIBC__ + #include "ext2_mnt.h" +@@ -123,7 +124,7 @@ static void mnt_off() + FILE *fp; + struct mntent *mnt; + +- fp = setmntent(MNTTAB, "r"); ++ fp = setmntent(_PATH_MNTTAB, "r"); + /* in some rare cases fp might be NULL so be careful */ + while (fp != NULL && ((mnt = getmntent(fp)) != (struct mntent *)0)) { + /* First check if swap */ +-- +2.6.4 + diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch new file mode 100644 index 000000000..14ab9c56a --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch @@ -0,0 +1,79 @@ +Fix ping mode failure + +Upstream-Status: Pending + +When watchdog works on ping mode, the system will be rebooted since +watchdog can not receive the expected ECOREPLY on a setting interval. + +Ping mode uses a raw socket to send a ECO packet, then uses select() +to wait and recvfrom() to receive the ECOREPLY packet, if select() +shows the data is ready, and the data is not the expected ECOREPLY, +and waiting time is not overdue, it will continue use select() and +recvfrom(). + +Problem is that the raw socket can receive any icmp packets, if we do +not set filters, and there are many icmp packets on socket, this +program will not find its interested ECOREPLY packet in a special +interval, which makes the ping mode fail. + + +Other program is that watchdog sometime can not reach the call of +recvfrom to try to receive packets since tv_sec of struct timeval +of select parameter is 0. + +The timeout of select() is the result of ping interval minusing the +time of calling gettimeofday spending, when ping interval is 1 second, +and the call of gettimeofday() spends several useconds, the tv_sec of +struct timeval of select parameter must be 0, at that condition, we +should it is valid of tv_sec of struct timeval of select parameter be 0 + +Signed-off-by: Roy.Li <rongqing.li@windriver.com> +--- + src/net.c | 2 +- + src/watchdog.c | 5 ++++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +Index: watchdog-5.14/src/watchdog.c +=================================================================== +--- watchdog-5.14.orig/src/watchdog.c ++++ watchdog-5.14/src/watchdog.c +@@ -24,6 +24,7 @@ + #include <sys/types.h> + #include <sys/ioctl.h> + #include <linux/oom.h> ++#include <linux/icmp.h> + #include <linux/watchdog.h> + #include <string.h> + +Index: watchdog-5.14/src/net.c +=================================================================== +--- watchdog-5.14.orig/src/net.c ++++ watchdog-5.14/src/net.c +@@ -11,7 +11,8 @@ + #include <errno.h> + #include <sys/time.h> + #include <netinet/ip.h> +-#include <netinet/ip_icmp.h> ++#include <linux/icmp.h> ++//#include <netinet/ip_icmp.h> + #include <fcntl.h> + #include <string.h> + #include <unistd.h> /* for gethostname() etc */ +@@ -179,6 +180,9 @@ int open_netcheck(struct list *tlist) + { + struct list *act; + int hold = 0; ++ struct icmp_filter filt; ++ filt.data = ~(1<<ICMP_ECHOREPLY); ++ + + if (tlist != NULL) { + for (act = tlist; act != NULL; act = act->next) { +@@ -202,6 +206,7 @@ int open_netcheck(struct list *tlist) + fatal_error(EX_SYSERR, "error opening socket (%s)", strerror(errno)); + } + ++ setsockopt(net->sock_fp, SOL_RAW, ICMP_FILTER, (char*)&filt, sizeof(filt)); + /* this is necessary for broadcast pings to work */ + (void)setsockopt(net->sock_fp, SOL_SOCKET, SO_BROADCAST, (char *)&hold, sizeof(hold)); + diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch new file mode 100644 index 000000000..2fad3a112 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch @@ -0,0 +1,27 @@ +Fix out of tree build support: + +| installing /etc/watchdog.conf +| /bin/mkdir -p '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man5' +| /bin/mkdir -p '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man8' +| /usr/bin/install -c -m 644 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/watchdog.conf.5 '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man5' +| /usr/bin/install -c -m 644 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/watchdog.8 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/wd_keepalive.8 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/wd_identify.8 '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man8' +| /usr/bin/install: cannot stat `watchdog.conf': No such file or directory +| make[2]: *** [install-etc-local] Error 1 + +Upstream-Status: Pending + +RP 2013/03/21 + +Index: watchdog-5.13/Makefile.am +=================================================================== +--- watchdog-5.13.orig/Makefile.am 2013-02-01 11:15:44.000000000 +0000 ++++ watchdog-5.13/Makefile.am 2013-03-21 11:59:35.637139031 +0000 +@@ -16,7 +16,7 @@ + else \ + echo "installing $(CONFIG_FILENAME)"; \ + $(mkinstalldirs) `dirname $(DESTDIR)$(CONFIG_FILENAME)`; \ +- $(INSTALL_DATA) watchdog.conf $(DESTDIR)$(CONFIG_FILENAME); \ ++ $(INSTALL_DATA) $(srcdir)/watchdog.conf $(DESTDIR)$(CONFIG_FILENAME); \ + fi + + install-data-local: install-etc-local diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch new file mode 100644 index 000000000..e68ad545c --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch @@ -0,0 +1,14 @@ +Signed-off-by: Diego Rondini <diego.ml@zoho.com> +Upstream-Status: Inappropriate + +--- watchdog-5.13.orig/watchdog.conf 2013-02-01 12:15:44.000000000 +0100 ++++ watchdog-5.13/watchdog.conf 2014-11-13 10:59:43.233943000 +0100 +@@ -20,7 +20,7 @@ + #test-binary = + #test-timeout = + +-#watchdog-device = /dev/watchdog ++watchdog-device = /dev/watchdog + + # Defaults compiled into the binary + #temperature-device = diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch new file mode 100644 index 000000000..b2765f190 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch @@ -0,0 +1,56 @@ +Signed-off-by: Diego Rondini <diego.ml@zoho.com> +Upstream-Status: Inappropriate + +--- watchdog-5.13.orig/redhat/watchdog.init 2014-11-12 17:18:39.125943000 +0100 ++++ watchdog-5.13/redhat/watchdog.init 2014-11-12 18:27:36.189943000 +0100 +@@ -7,7 +7,7 @@ + # Henning P. Schmiedehausen <hps@tanstaafl.de> + + # Source function library. +-. /etc/rc.d/init.d/functions ++. /etc/init.d/functions + + [ -x /usr/sbin/watchdog -a -e /etc/watchdog.conf ] || exit 0 + +@@ -23,22 +23,22 @@ + + start() { + +- echo -n $"Starting $prog: " ++ echo -n "Starting $prog: " + if [ -n "$(pidofproc $prog)" ]; then +- echo -n $"$prog: already running" +- echo_failure ++ echo -n "$prog: already running " ++ failure + echo + return 1 + fi + if [ "$VERBOSE" = "yes" ]; then +- daemon /usr/sbin/${prog} -v ++ /usr/sbin/${prog} -v + else +- daemon /usr/sbin/${prog} ++ /usr/sbin/${prog} + fi + RETVAL=$? + [ $RETVAL -eq 0 ] && touch $lockfile +- [ $RETVAL -eq 0 ] && echo_success +- [ $RETVAL -ne 0 ] && echo_failure ++ [ $RETVAL -eq 0 ] && success ++ [ $RETVAL -ne 0 ] && failure + echo + return $RETVAL + } +@@ -50,8 +50,10 @@ + # and reboot the box. + killproc $prog -TERM + RETVAL=$? +- echo + [ $RETVAL -eq 0 ] && rm -f $lockfile $pidfile ++ [ $RETVAL -eq 0 ] && success ++ [ $RETVAL -ne 0 ] && failure ++ echo + return $RETVAL + } + diff --git a/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.14.bb b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.14.bb new file mode 100644 index 000000000..733023897 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-extended/watchdog/watchdog_5.14.bb @@ -0,0 +1,40 @@ +SUMMARY = "Software watchdog" +DESCRIPTION = "Watchdog is a daemon that checks if your system is still \ +working. If programs in user space are not longer executed \ +it will reboot the system." +HOMEPAGE = "http://watchdog.sourceforge.net/" +BUGTRACKER = "http://sourceforge.net/tracker/?group_id=172030&atid=860194" + +LICENSE = "GPL-2.0+" +LIC_FILES_CHKSUM = "file://COPYING;md5=ecc0551bf54ad97f6b541720f84d6569" + +SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \ + file://fixsepbuild.patch \ + file://fix-ping-failure.patch \ + file://watchdog-init.patch \ + file://watchdog-conf.patch \ + file://0001-Fix-build-issues-found-with-non-glibc-C-libraries.patch \ +" + +SRC_URI[md5sum] = "5b2dba0c593942f4acc100bca0d560c4" +SRC_URI[sha256sum] = "620b2f49e9879f2e85c73d4c1f422f9101e6b38e824fea2414befd8bb6866ad1" + +UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/watchdog/files/watchdog/" +UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/" + +inherit autotools +inherit update-rc.d + +DEPENDS_append_libc-musl = " libtirpc " +CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc " +LDFLAGS_append_libc-musl = " -ltirpc " +EXTRA_OECONF_append_libc-musl = " --disable-nfs " + +INITSCRIPT_NAME = "watchdog.sh" +INITSCRIPT_PARAMS = "start 15 1 2 3 4 5 . stop 85 0 6 ." + +RRECOMMENDS_${PN} = "kernel-module-softdog" + +do_install_append() { + install -D ${S}/redhat/watchdog.init ${D}/${sysconfdir}/init.d/watchdog.sh +} |