summaryrefslogtreecommitdiffstats
path: root/system
diff options
context:
space:
mode:
author B. Watson <urchlay@slackware.uk>2023-08-29 20:38:59 -0400
committer Willy Sudiarto Raharjo <willysr@slackbuilds.org>2023-09-02 18:02:31 +0700
commit468b282317b4da6138f237f325de64ddcab3ea61 (patch)
tree8ee7d6f0f66cd971c9b1801fd80af3258325c27f /system
parentb36c1a8065f523476a7ad67b6449ff32251c74d3 (diff)
downloadslackbuilds-468b282317b4da6138f237f325de64ddcab3ea61.tar.gz
slackbuilds-468b282317b4da6138f237f325de64ddcab3ea61.tar.xz
system/earlyoom: New maintainer, various fixes.
Signed-off-by: B. Watson <urchlay@slackware.uk> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system')
-rw-r--r--system/earlyoom/README32
-rw-r--r--system/earlyoom/doinst.sh5
-rw-r--r--system/earlyoom/earlyoom.8 (renamed from system/earlyoom/earlyoom.1)8
-rw-r--r--system/earlyoom/earlyoom.SlackBuild60
-rw-r--r--system/earlyoom/earlyoom.info4
-rw-r--r--system/earlyoom/rc.earlyoom4
-rw-r--r--system/earlyoom/slack-desc12
7 files changed, 68 insertions, 57 deletions
diff --git a/system/earlyoom/README b/system/earlyoom/README
index fa2893b2b9..95f8c2fbec 100644
--- a/system/earlyoom/README
+++ b/system/earlyoom/README
@@ -1,24 +1,30 @@
-earlyoom checks the amount of available memory and free swap up to 10
-times a second (less often if there is a lot of free memory). By
-default if both are below 10%, it will kill the largest process
-(highest oom_score). The percentage value is configurable via command
-line arguments.
+earlyoom (the early out-of-memory daemon)
+
+The Linux kernel's OOM-killer generally has a bad reputation among
+Linux users. One may have to sit in front of an unresponsive system,
+listening to the grinding disk for minutes, and press the reset
+button to quickly get back to what one was doing after running out of
+patience.
+
+earlyoom is a userspace daemon that can be triggered earlier than the
+kernel's OOM-killer. It checks the amount of available memory and free
+swap up to 10 times a second (less often if there is a lot of free
+memory). By default if both are below 10%, it will kill the largest
+process (highest oom_score). The percentage value is configurable via
+command line arguments.
To enable it, put this line in your rc.local after running chmod +x on
/etc/rc.d/rc.earlyoom:
-if [ -x /etc/rc.d/rc.earlyoom ];
-then
+if [ -x /etc/rc.d/rc.earlyoom ]; then
/etc/rc.d/rc.earlyoom start
fi
-and to have it turnoff at shutdown, simply put this in your
-rc.local_shutdown:
+...and to have it exit at shutdown, put this in your rc.local_shutdown:
-if [ -x /etc/rc.d/rc.earlyoom ];
-then
+if [ -x /etc/rc.d/rc.earlyoom ]; then
/etc/rc.d/rc.earlyoom stop
fi
-A log file for it is kept at /var/log/earlyoom.log
-And earlyoom can be configured by modifying /etc/default/earlyoom
+A log file for it is kept at /var/log/earlyoom.log, and earlyoom can
+be configured by modifying /etc/default/earlyoom.
diff --git a/system/earlyoom/doinst.sh b/system/earlyoom/doinst.sh
index 7290fb4b61..e32196a11c 100644
--- a/system/earlyoom/doinst.sh
+++ b/system/earlyoom/doinst.sh
@@ -3,13 +3,11 @@
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
- elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
rm $NEW
fi
- # Otherwise, we leave the .new copy for the admin to consider...
}
preserve_perms() {
@@ -23,4 +21,5 @@ preserve_perms() {
config $NEW
}
+config etc/default/earlyoom.new
preserve_perms etc/rc.d/rc.earlyoom.new
diff --git a/system/earlyoom/earlyoom.1 b/system/earlyoom/earlyoom.8
index 0bcf687a2e..9431b55a44 100644
--- a/system/earlyoom/earlyoom.1
+++ b/system/earlyoom/earlyoom.8
@@ -1,6 +1,4 @@
-.\" Automatically generated by Pandoc 2.16.2
-.\"
-.TH "earlyoom" "1" "" "" "General Commands Manual"
+.TH "earlyoom" "8" "August 2023" "1.7" "Linux System Administrator's Manual"
.hy
.SH NAME
.PP
@@ -266,7 +264,7 @@ See https://github.com/rfjakob/earlyoom/issues/159 for details.
.SH AUTHOR
.PP
The author of earlyoom is Jakob Unterwurzacher
-\[la]jakobunt\[at]gmail.com\[ra].
+<jakobunt@gmail.com>.
.PP
-This manual page was written by Yangfl \[la]mmyangfl\[at]gmail.com\[ra],
+This manual page was written by Yangfl <mmyangfl@gmail.com>,
for the Debian project (and may be used by others).
diff --git a/system/earlyoom/earlyoom.SlackBuild b/system/earlyoom/earlyoom.SlackBuild
index 4934e0ad80..9a04c78429 100644
--- a/system/earlyoom/earlyoom.SlackBuild
+++ b/system/earlyoom/earlyoom.SlackBuild
@@ -3,6 +3,7 @@
# Slackware build script for earlyoom
# Copyright 2022 Charadon US
+# Copyright 2023 B. Watson
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,11 +23,19 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230829 bkw: BUILD=2
+# - add LICENSE and README.md to the doc dir.
+# - binary in /usr/sbin, man page in section 8, since this is admin stuff.
+# - have the init script delete the PID file after stop or force_stop.
+# - actually use SLKCFLAGS.
+# - make /etc/default/earlyoom a .new config file.
+# - add a bit more detail to README.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=earlyoom
VERSION=${VERSION:-1.7}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +47,6 @@ case "$( uname -m )" in
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -52,16 +58,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -73,32 +75,36 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-
-make PREFIX=/usr
-make DESTDIR=$PKG PREFIX=/usr install-bin
-install -Dm644 earlyoom.default $PKG/etc/default/earlyoom
-install -Dm644 $CWD/earlyoom.1 $PKG/usr/man/man1/earlyoom.1
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
+# 20230829 bkw: don't generate the man page even if pandoc is installed,
+# since we're going to use a prebuilt one.
+sed -i '/^PANDOC *:=/d' Makefile
-rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+# 20230829 bkw: no way to do this on the make command line:
+sed -i "/^CFLAGS/s,-Wall,& $SLKCFLAGS," Makefile
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# 20230829 bkw: note to self: non-canonical use of BINDIR here. It's not
+# the full path (/usr/sbin), it gets PREFIX prepended to it.
+make PREFIX=/usr BINDIR=/sbin
+strip $PRGNAM
+make DESTDIR=$PKG PREFIX=/usr BINDIR=/sbin install-bin
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+# 20230829 bkw: prebuilt man page is a bit different from the generated one:
+# - it's a section 8 page.
+# - it has the date and "Linux System Administrator's Manual" filled in.
+# - get rid of fancy unicode angle brackets for email addresses, just use <>.
+mkdir -p $PKG/usr/man/man8
+gzip -9 < $CWD/earlyoom.8 > $PKG/usr/man/man8/earlyoom.8.gz
install -Dm644 $CWD/rc.earlyoom $PKG/etc/rc.d/rc.earlyoom.new
+install -Dm644 earlyoom.default $PKG/etc/default/earlyoom.new
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-#cp -a <documentation> $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a README* LICENSE* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/system/earlyoom/earlyoom.info b/system/earlyoom/earlyoom.info
index 37a84be0fc..bb2d219617 100644
--- a/system/earlyoom/earlyoom.info
+++ b/system/earlyoom/earlyoom.info
@@ -6,5 +6,5 @@ MD5SUM="9c567930c60b2ccdc536951b005d413d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Charadon"
-EMAIL="dev@iotib.net"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/system/earlyoom/rc.earlyoom b/system/earlyoom/rc.earlyoom
index 033a8e5392..0e1cbb303d 100644
--- a/system/earlyoom/rc.earlyoom
+++ b/system/earlyoom/rc.earlyoom
@@ -14,7 +14,7 @@ do_start() {
fi
echo "Starting earlyoom..."
# shellcheck disable=2086
- nohup /usr/bin/earlyoom $EARLYOOM_ARGS > /var/log/earlyoom.log 2>&1 &
+ nohup /usr/sbin/earlyoom $EARLYOOM_ARGS > /var/log/earlyoom.log 2>&1 &
echo "$!" > /var/run/earlyoom.pid
exit 0
}
@@ -26,6 +26,7 @@ do_stop() {
then
echo "Stopping earlyoom..."
kill -15 "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
+ rm -f /var/run/earlyoom.pid
exit 0
fi
fi
@@ -39,6 +40,7 @@ do_force_stop() {
then
echo "Killing earlyoom..."
kill -9 "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1
+ rm -f /var/run/earlyoom.pid
exit 0
fi
fi
diff --git a/system/earlyoom/slack-desc b/system/earlyoom/slack-desc
index a39853a125..5eef07ce20 100644
--- a/system/earlyoom/slack-desc
+++ b/system/earlyoom/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-earlyoom: earlyoom (The Early OOM Daemon)
+earlyoom: earlyoom (the early out-of-memory daemon)
earlyoom:
-earlyoom: earlyoom checks the amount of available memory and free swap up to
-earlyoom: 10 times a second (less often if there is a lot of free memory). By
-earlyoom: default if both are below 10%, it will kill the largest process
-earlyoom: (highest oom_score). The percentage value is configurable via
+earlyoom: earlyoom is a userspace daemon that can be triggered earlier than the
+earlyoom: kernel's OOM-killer. It checks the amount of available memory and free
+earlyoom: swap up to 10 times a second (less often if there is a lot of free
+earlyoom: memory). By default if both are below 10%, it will kill the largest
+earlyoom: process (highest oom_score). The percentage value is configurable via
earlyoom: command line arguments.
earlyoom:
earlyoom:
earlyoom:
-earlyoom: