Date: Sunday, October 23, 2011 @ 10:14:56 Author: thomas Revision: 141080
watchdog: Rebuild, sign and use oom_score_adj instead of oom_adj Fixes the warning wd_keepalive (...): /proc/.../oom_adj is deprecated, please use /proc/.../oom_score_adj instead. or watchdog (...): /proc/.../oom_adj is deprecated, please use /proc/.../oom_score_adj instead. Added: watchdog/trunk/watchdog-5.9-use-oom_score_adj.patch Modified: watchdog/trunk/PKGBUILD --------------------------------------+ PKGBUILD | 25 +++++---- watchdog-5.9-use-oom_score_adj.patch | 91 +++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 11 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2011-10-23 13:48:14 UTC (rev 141079) +++ PKGBUILD 2011-10-23 14:14:56 UTC (rev 141080) @@ -3,7 +3,7 @@ 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 @@ 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 @@ } 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 } Added: watchdog-5.9-use-oom_score_adj.patch =================================================================== --- watchdog-5.9-use-oom_score_adj.patch (rev 0) +++ watchdog-5.9-use-oom_score_adj.patch 2011-10-23 14:14:56 UTC (rev 141080) @@ -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 ) {
