diff options
Diffstat (limited to 'os/etc/s6-rc/reload')
| -rwxr-xr-x | os/etc/s6-rc/reload | 34 |
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 |