summary refs log tree commit diff
path: root/os/etc/s6-rc/reload
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2023-09-25 11:56:34 +0200
committerRobert Günzler <r@gnzler.io>2023-09-25 11:56:34 +0200
commitf5c219983c0f60a07f1bd52b6f6071e86f35455e (patch)
treeb7520a02b9822481f29aea4ccb404744a73414b1 /os/etc/s6-rc/reload
parent91ba318df1ff9b04d08af373ae904f61a91bf489 (diff)
add os config
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'os/etc/s6-rc/reload')
-rwxr-xr-xos/etc/s6-rc/reload34
1 files changed, 34 insertions, 0 deletions
diff --git a/os/etc/s6-rc/reload b/os/etc/s6-rc/reload
new file mode 100755
index 0000000..16f288d
--- /dev/null
+++ b/os/etc/s6-rc/reload
@@ -0,0 +1,34 @@
+#!/bin/sh
+[ -n "$DEBUG" ] && set -x
+set -eu
+
+. /lib/gentoo/functions.sh
+
+old=$(find /etc/s6-rc/ -maxdepth 1 -name '_[0-9]*' -print)
+
+if [ "$UID" -ne 0 ]; then
+	EERROR_QUIET=0 EINFO_LOG=0 eerror "need to be root"
+	exit 1
+fi
+
+name=_$(date +%s)
+ebegin "compile new db"
+s6-rc-compile /etc/s6-rc/"$name" /etc/s6-rc/src
+eend
+
+# refresh active s6-rc tree
+if s6-rc -a list >/dev/null 2>&1; then
+	ebegin "update current db"
+	s6-rc-update -v2 /etc/s6-rc/"$name"
+	eend
+fi
+
+ebegin "swap current db"
+# make atomic
+ln -sf /etc/s6-rc/$name /tmp/compiled
+mv -f /tmp/compiled /etc/s6-rc/
+eend
+
+ebegin "cleanup old db"
+rm -r $old >/dev/null 2>&1
+eend