aboutsummaryrefslogtreecommitdiff
path: root/tools/meson_runlevels.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/meson_runlevels.sh')
-rwxr-xr-xtools/meson_runlevels.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/tools/meson_runlevels.sh b/tools/meson_runlevels.sh
new file mode 100755
index 00000000..7cf068a9
--- /dev/null
+++ b/tools/meson_runlevels.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+set -e
+set -u
+
+os="$1"
+net="$2"
+rc_libexecdir="$3"
+sysconfdir="$4"
+
+init_d_dir="${sysconfdir}/init.d"
+leveldir="${sysconfdir}/runlevels"
+sysinitdir="${leveldir}/sysinit"
+bootdir="${leveldir}/boot"
+defaultdir="${leveldir}/default"
+nonetworkdir="${leveldir}/nonetwork"
+shutdowndir="${leveldir}/shutdown"
+
+sysinit=
+case "${os}" in
+ Linux)
+ sysinit="${sysinit} cgroups devfs dmesg sysfs"
+ ;;
+esac
+
+boot="bootmisc fsck hostname localmount loopback root swap sysctl urandom"
+if [ "${net}" = yes ]; then
+ boot="${boot} network staticroute"
+fi
+boot_BSD="hostid newsyslog savecore syslogd"
+
+case "${os}" in
+ DragonFly)
+ boot="${boot} ${boot_BSD}"
+ ;;
+ FreeBSD|GNU-kFreeBSD)
+ boot="${boot} ${boot_BSD} adjkerntz dumpon modules syscons"
+ ;;
+ Linux)
+ boot="${boot} binfmt hwclock keymaps modules mtab procfs
+ save-keymaps save-termencoding termencoding"
+ ;;
+ NetBSD)
+ boot="${boot} ${boot_BSD} devdb swap-blk tys wscons"
+ ;;
+esac
+
+default="local netmount"
+
+nonetwork="local"
+
+shutdown="savecache"
+case "${os}" in
+ Linux)
+ shutdown="${shutdown} killprocs mount-ro"
+ ;;
+esac
+
+if ! test -d "${DESTDIR}${sysinitdir}"; then
+ install -d "${DESTDIR}${sysinitdir}"
+ for x in ${sysinit}; do
+ ln -snf "${init_d_dir}/$x" "${DESTDIR}${sysinitdir}/$x"
+ done
+fi
+
+if ! test -d "${DESTDIR}${bootdir}"; then
+ install -d "${DESTDIR}${bootdir}"
+ for x in ${boot}; do
+ ln -snf "${init_d_dir}/$x" "${DESTDIR}${bootdir}/$x"
+ done
+fi
+
+if ! test -d "${DESTDIR}${defaultdir}"; then
+ install -d "${DESTDIR}${defaultdir}"
+ for x in ${default}; do
+ ln -snf "${init_d_dir}/$x" "${DESTDIR}${defaultdir}/$x"
+ done
+fi
+
+if ! test -d "${DESTDIR}${nonetworkdir}"; then
+ install -d "${DESTDIR}${nonetworkdir}"
+ for x in ${nonetwork}; do
+ ln -snf "${init_d_dir}/$x" "${DESTDIR}${nonetworkdir}/$x"
+ done
+fi
+
+if ! test -d "${DESTDIR}${shutdowndir}"; then
+ install -d "${DESTDIR}${shutdowndir}"
+ for x in ${shutdown}; do
+ ln -snf "${init_d_dir}/$x" "${DESTDIR}${shutdowndir}/$x"
+ done
+fi
+
+ln -snf "${rc_libexecdir}"/sh/functions.sh "${DESTDIR}/${init_d_dir}"