aboutsummaryrefslogtreecommitdiff
path: root/sh/gendepends.sh.in
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-02-27 20:29:32 +0000
committerRoy Marples <roy@marples.name>2008-02-27 20:29:32 +0000
commitc2648ca5f539c450b27d35c7c0a3d41c6e193d8f (patch)
tree1de8b046bd8c1029165670c697eace4c89ece8f5 /sh/gendepends.sh.in
parent143570689bc93c68fa83c3eb56d622b707ec0e18 (diff)
Makefile SH variable now tweaks the default shell used by our scripts.
Diffstat (limited to 'sh/gendepends.sh.in')
-rw-r--r--sh/gendepends.sh.in77
1 files changed, 77 insertions, 0 deletions
diff --git a/sh/gendepends.sh.in b/sh/gendepends.sh.in
new file mode 100644
index 00000000..8e30a648
--- /dev/null
+++ b/sh/gendepends.sh.in
@@ -0,0 +1,77 @@
+#!@SHELL@
+# Shell wrapper to list our dependencies
+
+# Copyright 2007-2008 Roy Marples <roy@marples.name>
+# All rights reserved. Released under the 2-clause BSD license.
+
+. /etc/init.d/functions.sh
+
+config() {
+ [ -n "$*" ] && echo "${SVCNAME} config $*" >&3
+}
+need() {
+ [ -n "$*" ] && echo "${SVCNAME} ineed $*" >&3
+}
+use() {
+ [ -n "$*" ] && echo "${SVCNAME} iuse $*" >&3
+}
+before() {
+ [ -n "$*" ] && echo "${SVCNAME} ibefore $*" >&3
+}
+after() {
+ [ -n "$*" ] && echo "${SVCNAME} iafter $*" >&3
+}
+provide() {
+ [ -n "$*" ] && echo "${SVCNAME} iprovide $*" >&3
+}
+keyword() {
+ [ -n "$*" ] && echo "${SVCNAME} keyword $*" >&3
+}
+depend() {
+ :
+}
+
+for _dir in /etc/init.d /usr/local/etc/init.d; do
+ [ -d "${_dir}" ] || continue
+ cd "${_dir}"
+ for SVCNAME in *; do
+ [ -x "${SVCNAME}" ] || continue
+
+ # Only generate dependencies for runscripts
+ read one two < "${SVCNAME}"
+ [ "${one}" = "#!/sbin/runscript" ] || continue
+ unset one two
+
+ export SVCNAME=${SVCNAME##*/}
+ (
+ # Save stdout in fd3, then remap it to stderr
+ exec 3>&1 1>&2
+
+ _rc_c=${SVCNAME%%.*}
+ if [ -n "${_rc_c}" -a "${_rc_c}" != "${SVCNAME}" ]; then
+ if [ -e "${_dir}/../conf.d/${_rc_c}" ]; then
+ . "${_dir}/../conf.d/${_rc_c}"
+ fi
+ fi
+ unset _rc_c
+
+ if [ -e "${_dir}/../conf.d/${SVCNAME}" ]; then
+ . "${_dir}/../conf.d/${SVCNAME}"
+ fi
+
+ [ -e /etc/rc.conf ] && . /etc/rc.conf
+
+ if . "${_dir}/${SVCNAME}"; then
+ echo "${SVCNAME}" >&3
+ depend
+
+ # Add any user defined depends
+ for _deptype in config need use after before provide keyword; do
+ eval _depends=\$rc_$(shell_var "${SVCNAME}")_${_deptype}
+ [ -z "${_depends}" ] && eval _depends=\$rc_${_deptype}
+ ${_deptype} ${_depends}
+ done
+ fi
+ )
+ done
+done