mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 17:09:10 -07:00
runit can be used either as a replacement of init (pid 1) or as a process
supervisor. We're discussing the first case here. Currently, Gentoo use openrc
to handle service startup and stop in runit's stage 1 & 3, which might be too
heavy for a lighweight init. Most people who choose runit as init will likely
to write their own scripts. Therefore, the call of openrc is changed to a
template script, and won't be called by default.
Additionally, to provide users with more options, a new USE "scripts" is added.
If disabled, no script(s) will be installed into /etc/runit.
1. remove dependency on openrc, add USE scripts (enabled by default), if
disabled, will keep /etc/runit clean.
2. replace /bin/sh w/ /bin/bash for stage 1 & 3 scripts.
3. add /etc/runit/rc.sh to call user-defined scripts during stage 1 & 3
4. move the call of openrc in /etc/runit/{1,3} to /etc/runit/rc/{1,3}.openrc.example
Closes: https://bugs.gentoo.org/611846
Reviewed-by: Alex Efros <powerman-asdf@yandex.ru>
Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/39776
Signed-off-by: Sam James <sam@gentoo.org>
17 lines
369 B
Bash
17 lines
369 B
Bash
#!/bin/bash
|
|
|
|
# run script(s) at /etc/runit/rc/, suffix must be .sh, prefix
|
|
# must be [1|3] which denote stage 1 or 3.
|
|
run_rc_stage() {
|
|
local prefix="${1}"
|
|
local prev_opt=$(shopt -p nullglob)
|
|
shopt -s nullglob
|
|
for file in /etc/runit/rc/"${prefix}".*.sh; do
|
|
if [[ ! -x "${file}" ]] || [[ ! -s "${file}" ]] ; then
|
|
continue
|
|
fi
|
|
. "${file}"
|
|
done
|
|
${prev_opt}
|
|
}
|