package/earlyoom: new package

EarlyOOM daemon for triggering Linux OOM killer before running out of
memory, avoiding situations where the machine becomes unresponsive from
out of control swapping.

Some desktop distributions are installing and enabling this daemon by
default to prevent unresponsive machines in OOM scenarios.

https://fedoraproject.org/wiki/Changes/EnableEarlyoom
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
[yann.morin.1998@free.fr: two spaces in hash file]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Joseph Kogut 2020-06-12 10:40:29 -07:00 committed by Yann E. MORIN
parent 2163c4c5dd
commit 0948562c32
6 changed files with 107 additions and 0 deletions

View File

@ -1356,6 +1356,7 @@ N: Joseph Kogut <joseph.kogut@gmail.com>
F: package/at-spi2-atk/
F: package/at-spi2-core/
F: package/clang/
F: package/earlyoom/
F: package/gconf/
F: package/libnss/
F: package/lld/

View File

@ -2337,6 +2337,7 @@ menu "System tools"
source "package/docker-containerd/Config.in"
source "package/docker-engine/Config.in"
source "package/docker-proxy/Config.in"
source "package/earlyoom/Config.in"
source "package/efibootmgr/Config.in"
source "package/efivar/Config.in"
source "package/emlog/Config.in"

View File

@ -0,0 +1,12 @@
config BR2_PACKAGE_EARLYOOM
bool "earlyoom"
depends on BR2_USE_MMU
help
Early OOM daemon for Linux.
User space daemon for triggering Linux OOM killer
before running out of memory, avoiding situations
where the machine becomes unresponsive from out of
control swapping.
https://github.com/rfjakob/earlyoom

View File

@ -0,0 +1,49 @@
#!/bin/sh
DAEMON="earlyoom"
PIDFILE="/var/run/$DAEMON.pid"
EARLYOOM_ARGS=""
[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
start() {
printf() 'Starting %s: ' "$DAEMON"
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/bin/$DAEMON" \
-- $EARLYOOM_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
start
}
case "$1" in
start|stop|restart)
"$1";;
reload)
restart;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac

View File

@ -0,0 +1,4 @@
# locally calculated
sha256 b81804fc4470f996014d52252a87a1cf3b43d3d8754140035b10dcee349302b8 earlyoom-1.6.tar.gz
# License files, locally calculated
sha256 e730b3ec729de46d987ae73f30ed337e4cbe832f09205330acfa71848c6e0087 LICENSE

View File

@ -0,0 +1,40 @@
################################################################################
#
# earlyoom
#
################################################################################
EARLYOOM_VERSION = 1.6
EARLYOOM_SITE = $(call github,rfjakob,earlyoom,v$(EARLYOOM_VERSION))
EARLYOOM_LICENSE = MIT
EARLYOOM_LICENSE_FILES = LICENSE
EARLYOOM_BUILD_TARGETS = earlyoom.service earlyoom
EARLYOOM_INSTALL_TARGETS = install-default install-bin
EARLYOOM_CFLAGS = '$(TARGET_CFLAGS) -std=gnu99 -DVERSION=\"1.6\"'
EARLYOOM_MAKE_OPTS = \
$(TARGET_CONFIGURE_OPTS) \
PREFIX=/usr
define EARLYOOM_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(EARLYOOM_MAKE_OPTS) -C $(@D) \
$(EARLYOOM_BUILD_TARGETS) CFLAGS=$(EARLYOOM_CFLAGS)
endef
define EARLYOOM_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(EARLYOOM_MAKE_OPTS) -C $(@D) \
$(EARLYOOM_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR)
endef
define EARLYOOM_INSTALL_INIT_SYSV
$(INSTALL) -D -m 755 $(EARLYOOM_PKGDIR)/S02earlyoom \
$(TARGET_DIR)/etc/init.d/S02earlyoom
endef
define EARLYOOM_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m 644 $(@D)/earlyoom.service \
$(TARGET_DIR)/usr/lib/systemd/system/earlyoom.service
endef
$(eval $(generic-package))