aboutsummaryrefslogtreecommitdiffstats
path: root/community/low-memory-monitor
diff options
context:
space:
mode:
Diffstat (limited to 'community/low-memory-monitor')
-rw-r--r--community/low-memory-monitor/APKBUILD39
-rw-r--r--community/low-memory-monitor/low-memory-monitor.initd18
-rw-r--r--community/low-memory-monitor/musl.patch22
3 files changed, 79 insertions, 0 deletions
diff --git a/community/low-memory-monitor/APKBUILD b/community/low-memory-monitor/APKBUILD
new file mode 100644
index 0000000000..4c31230ab9
--- /dev/null
+++ b/community/low-memory-monitor/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Leo <thinkabit.ukim@gmail.com>
+# Maintainer: Leo <thinkabit.ukim@gmail.com>
+pkgname=low-memory-monitor
+pkgver=2.0
+pkgrel=1
+pkgdesc="Daemon to monitor memory usage and signal processes and the kernel"
+options="!check" # No testsuite
+url="https://gitlab.freedesktop.org/hadess/low-memory-monitor"
+arch="all"
+license="GPL-3.0-or-later"
+makedepends="meson glib-dev"
+subpackages="$pkgname-openrc"
+source="https://gitlab.freedesktop.org/hadess/low-memory-monitor/-/archive/$pkgver/low-memory-monitor-$pkgver.tar.gz
+ low-memory-monitor.initd
+ musl.patch
+ "
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ -Dgtk_doc=false \
+ -Dsystemdsystemunitdir=/DELETEME \
+ . output
+ ninja -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+
+ # Remove systemd service
+ rm -rf "$pkgdir"/DELETEME
+
+ install -Dm0755 "$srcdir"/low-memory-monitor.initd "$pkgdir"/etc/init.d/low-memory-monitor
+}
+sha512sums="f63d0ccd9e3978b3321150d03ef9e0df82a4c453116c29d008b64b8133f7cb5c32874d4f6400384bd22b5530c761327b50e252c2ff171061e0338bc9ccc8daee low-memory-monitor-2.0.tar.gz
+3a214208355d138365af14d90ea790e49e04c3e3fb979796d6ce8f49c116212f1c98edaf05eb346ff033dd14a3d489d2f79a2844a572c5bc8e075f33958ac094 low-memory-monitor.initd
+7cd0bfa4e2b374a3b7d252a18fc83ff4ecbd52d22c40e406e10ba776daad80e7dc3d3c339b556a89a97786fe541e2aff7f32097aed5473a069612344d981ab23 musl.patch"
diff --git a/community/low-memory-monitor/low-memory-monitor.initd b/community/low-memory-monitor/low-memory-monitor.initd
new file mode 100644
index 0000000000..62f39560d3
--- /dev/null
+++ b/community/low-memory-monitor/low-memory-monitor.initd
@@ -0,0 +1,18 @@
+#!/sbin/openrc-run
+supervisor=supervise-daemon
+
+name="Low Memory Monitor"
+description="Read memory pressure information and signal user processes and kernel OOM accordingly"
+
+command=/usr/libexec/low-memory-monitor
+
+depend() {
+ need localmount
+}
+
+start_pre() {
+ # We need /proc/pressure directory that contains information about memory
+ # pressure. this requires CONFIG_PSI=y, if CONFIG_PSI_DEFAULT_DISABLED is
+ # also used then you need to pass psi=1 on the kernel cmdline
+ checkpath --directory /proc/pressure
+}
diff --git a/community/low-memory-monitor/musl.patch b/community/low-memory-monitor/musl.patch
new file mode 100644
index 0000000000..b2faac74dd
--- /dev/null
+++ b/community/low-memory-monitor/musl.patch
@@ -0,0 +1,22 @@
+diff --git a/src/memory-pressure-monitor.c b/src/memory-pressure-monitor.c
+index f59af0a..0863c13 100644
+--- a/src/memory-pressure-monitor.c
++++ b/src/memory-pressure-monitor.c
+@@ -12,6 +12,16 @@
+ #include <glib-unix.h>
+ #include <errno.h>
+
++/* taken from glibc unistd.h and fixes musl */
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++ (__extension__ \
++ ({ long int __result; \
++ do __result = (long int) (expression); \
++ while (__result == -1L && errno == EINTR); \
++ __result; }))
++#endif
++
+ /* Constants */
+ #define MEMORY_PRESSURE_PATH "/proc/pressure/memory"
+
+