Commit ff4cd297 authored by Leo's avatar Leo
Browse files

testing/low-memory-monitor: new aport

https://gitlab.freedesktop.org/hadess/low-memory-monitor
Daemon to monitor memory usage and signal processes and the kernel
parent dcbab5a0
Pipeline #326 passed with stages
in 1 minute and 9 seconds
# Contributor: Leo <thinkabit.ukim@gmail.com>
# Maintainer: Leo <thinkabit.ukim@gmail.com>
pkgname=low-memory-monitor
pkgver=1.0
pkgrel=0
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"
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 -Dm644 "$srcdir"/low-memory-monitor.initd "$pkgdir"/etc/init.d/low-memory-monitor
}
sha512sums="caf270aaf1b8f0bc3f7b57702d166106e3aadcc18113da94ea704296081a8c16ee6271b95d3ab8f431c718d0184dfec3976e3cb144aa5f077a15f4491ed64489 low-memory-monitor-1.0.tar.gz
3ff5e250974c4ac474da4eb45317acd2d782b42997ee336b7d006481043a5c0cba57b9d06d13ed68bca61bd228e31b47993eae4f9da4977a863eaaa704bce866 low-memory-monitor.initd
7cd0bfa4e2b374a3b7d252a18fc83ff4ecbd52d22c40e406e10ba776daad80e7dc3d3c339b556a89a97786fe541e2aff7f32097aed5473a069612344d981ab23 musl.patch"
#!/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 pse=1 on the kernel cmdline
checkpath --directory /proc/pressure
}
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"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment