diff options
author | Roy Marples <roy@marples.name> | 2008-02-27 20:29:32 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-02-27 20:29:32 +0000 |
commit | c2648ca5f539c450b27d35c7c0a3d41c6e193d8f (patch) | |
tree | 1de8b046bd8c1029165670c697eace4c89ece8f5 /sh/gendepends.sh.in | |
parent | 143570689bc93c68fa83c3eb56d622b707ec0e18 (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.in | 77 |
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 |