summaryrefslogtreecommitdiff
path: root/extra/watchdog
diff options
context:
space:
mode:
Diffstat (limited to 'extra/watchdog')
-rw-r--r--extra/watchdog/PKGBUILD27
-rw-r--r--extra/watchdog/watchdog-5.9-use-oom_score_adj.patch91
2 files changed, 106 insertions, 12 deletions
diff --git a/extra/watchdog/PKGBUILD b/extra/watchdog/PKGBUILD
index 70ec8a57b..cb4c36d88 100644
--- a/extra/watchdog/PKGBUILD
+++ b/extra/watchdog/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 111485 2011-02-27 10:22:27Z thomas $
+# $Id: PKGBUILD 141081 2011-10-23 14:16:24Z thomas $
# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=watchdog
pkgver=5.9
-pkgrel=1
+pkgrel=2
pkgdesc="Watchdog daemon"
arch=(i686 x86_64)
url="http://sourceforge.net/projects/watchdog"
@@ -14,14 +14,17 @@ backup=(etc/watchdog.conf
etc/conf.d/wd_keepalive)
source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
watchdog.sh
- watchdog.cf)
+ watchdog.cf
+ watchdog-5.9-use-oom_score_adj.patch)
md5sums=('d7cae3c9829f5d9a680764f314234867'
'854451f554718b55186599faaa8d85f6'
- '01c1e2e13f515131180b4ebe9b8b7cc3')
+ '01c1e2e13f515131180b4ebe9b8b7cc3'
+ '9a1ab454e42a7f2969ef6bf2da8a4543')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ patch -p1 -i "${srcdir}"/watchdog-5.9-use-oom_score_adj.patch
./configure \
--prefix=/usr \
--mandir=/usr/share/man \
@@ -31,14 +34,14 @@ build() {
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- make install DESTDIR=${pkgdir}
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ make install DESTDIR="${pkgdir}"
for fil in watchdog wd_keepalive ; do
- install -D -m755 ${srcdir}/watchdog.sh ${pkgdir}/etc/rc.d/${fil}
- install -D -m644 ${srcdir}/watchdog.cf ${pkgdir}/etc/conf.d/${fil}
+ install -D -m755 "${srcdir}"/watchdog.sh "${pkgdir}"/etc/rc.d/${fil}
+ install -D -m644 "${srcdir}"/watchdog.cf "${pkgdir}"/etc/conf.d/${fil}
done
- sed -i 's/watchdog/wd_keepalive/g' ${pkgdir}/etc/rc.d/wd_keepalive
- sed -i 's/watchdog/wd_keepalive/g' ${pkgdir}/etc/conf.d/wd_keepalive
- sed -i 's/Watchdog/Simple Watchdog/' ${pkgdir}/etc/rc.d/wd_keepalive
+ sed -i 's/watchdog/wd_keepalive/g' "${pkgdir}"/etc/rc.d/wd_keepalive
+ sed -i 's/watchdog/wd_keepalive/g' "${pkgdir}"/etc/conf.d/wd_keepalive
+ sed -i 's/Watchdog/Simple Watchdog/' "${pkgdir}"/etc/rc.d/wd_keepalive
}
diff --git a/extra/watchdog/watchdog-5.9-use-oom_score_adj.patch b/extra/watchdog/watchdog-5.9-use-oom_score_adj.patch
new file mode 100644
index 000000000..90508d777
--- /dev/null
+++ b/extra/watchdog/watchdog-5.9-use-oom_score_adj.patch
@@ -0,0 +1,91 @@
+diff -ur watchdog-5.9.orig/src/watchdog.c watchdog-5.9/src/watchdog.c
+--- watchdog-5.9.orig/src/watchdog.c 2010-06-16 15:45:51.000000000 +0200
++++ watchdog-5.9/src/watchdog.c 2011-10-23 15:51:58.631689778 +0200
+@@ -636,7 +636,7 @@
+
+ /* allocate some memory to store a filename, this is needed later on even
+ * if the system runs out of memory */
+- filename_buf = (char*)malloc(max(strlen(logdir) + sizeof("/repair-bin.stdout") + 1, strlen("/proc//oom_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1));
++ filename_buf = (char*)malloc(max(strlen(logdir) + sizeof("/repair-bin.stdout") + 1, strlen("/proc//oom_score_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1));
+ if (!filename_buf) {
+ error(progname);
+ exit(1);
+@@ -886,11 +886,19 @@
+ #endif
+
+ /* tell oom killer to not kill this process */
+- sprintf(filename_buf, "/proc/%d/oom_adj", pid);
++ sprintf(filename_buf, "/proc/%d/oom_score_adj", pid);
+ fp = fopen(filename_buf, "w");
+ if (fp != NULL) {
+- fprintf(fp, "-17\n");
+- (void) fclose(fp);
++ fprintf(fp, "-1000\n");
++ (void) fclose(fp);
++ }
++ else {
++ sprintf(filename_buf, "/proc/%d/oom_adj", pid);
++ fp = fopen(filename_buf, "w");
++ if (fp != NULL) {
++ fprintf(fp, "-17\n");
++ (void) fclose(fp);
++ }
+ }
+
+ /* main loop: update after <tint> seconds */
+diff -ur watchdog-5.9.orig/src/wd_keepalive.c watchdog-5.9/src/wd_keepalive.c
+--- watchdog-5.9.orig/src/wd_keepalive.c 2010-06-16 15:45:49.000000000 +0200
++++ watchdog-5.9/src/wd_keepalive.c 2011-10-23 15:50:43.061563281 +0200
+@@ -212,7 +212,7 @@
+ FILE *fp;
+ char *configfile = CONFIG_FILENAME;
+ char *filename_buf;
+- pid_t child_pid;
++ pid_t pid, child_pid;
+ int count = 0;
+ int c;
+ /* allow all options watchdog understands too */
+@@ -284,7 +284,7 @@
+
+ /* allocate some memory to store a filename, this is needed later on even
+ * if the system runs out of memory */
+- filename_buf = (char*)malloc(strlen("/proc//oom_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1);
++ filename_buf = (char*)malloc(strlen("/proc//oom_score_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1);
+ if (!filename_buf) {
+ error(progname);
+ exit(1);
+@@ -363,9 +363,10 @@
+ #endif
+
+ /* tuck my process id away */
++ pid = getpid();
+ fp = fopen(KA_PIDFILE, "w");
+ if ( fp != NULL ) {
+- fprintf(fp, "%d\n", getpid());
++ fprintf(fp, "%d\n", pid);
+ (void) fclose(fp);
+ }
+
+@@ -403,12 +404,20 @@
+ #endif
+
+ /* tell oom killer to not kill this process */
+- sprintf(filename_buf, "/proc/%d/oom_adj", getpid());
++ sprintf(filename_buf, "/proc/%d/oom_score_adj", pid);
+ fp = fopen(filename_buf, "w");
+ if (fp != NULL) {
+- fprintf(fp, "-17\n");
++ fprintf(fp, "-1000\n");
+ (void) fclose(fp);
+ }
++ else {
++ sprintf(filename_buf, "/proc/%d/oom_adj", pid);
++ fp = fopen(filename_buf, "w");
++ if (fp != NULL) {
++ fprintf(fp, "-17\n");
++ (void) fclose(fp);
++ }
++ }
+
+ /* main loop: update after <tint> seconds */
+ while ( _running ) {