openrc/sh/gendepends.sh.in
Ian Stakenvicius 33d3f33b3c Implement "want" dependency
The want dependency is similar to the use dependency. If a service
script, for example called service1, adds "want service2" to its depend
function, OpenRC will attempt to start service2, if it exists on the
system,  when service1 is started.

However, service1 will start regardless of the status of
service2.

X-Gentoo-Bug: 406021
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=406021
2015-11-12 12:32:45 -06:00

96 lines
2.0 KiB
Bash

#!@SHELL@
# Shell wrapper to list our dependencies
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
. @LIBEXECDIR@/sh/functions.sh
. @LIBEXECDIR@/sh/rc-functions.sh
config() {
[ -n "$*" ] && echo "$RC_SVCNAME config $*" >&3
}
need() {
[ -n "$*" ] && echo "$RC_SVCNAME ineed $*" >&3
}
use() {
[ -n "$*" ] && echo "$RC_SVCNAME iuse $*" >&3
}
want() {
[ -n "$*" ] && echo "$RC_SVCNAME iwant $*" >&3
}
before() {
[ -n "$*" ] && echo "$RC_SVCNAME ibefore $*" >&3
}
after() {
[ -n "$*" ] && echo "$RC_SVCNAME iafter $*" >&3
}
provide() {
[ -n "$*" ] && echo "$RC_SVCNAME iprovide $*" >&3
}
keyword() {
[ -n "$*" ] && echo "$RC_SVCNAME keyword $*" >&3
}
depend() {
:
}
_done_dirs=
for _dir in \
@SYSCONFDIR@/init.d \
@PKG_PREFIX@/etc/init.d \
@LOCAL_PREFIX@/etc/init.d
do
[ -d "$_dir" ] || continue
# Don't do the same dir twice
for _d in $_done_dirs; do
[ "$_d" = "$_dir" ] && continue 2
done
unset _d
_done_dirs="$_done_dirs $_dir"
cd "$_dir"
for RC_SERVICE in *; do
[ -x "$RC_SERVICE" -a -f "$RC_SERVICE" ] || continue
# Only generate dependencies for OpenRC scripts
read one two three <"$RC_SERVICE"
[ "$one" = "#!@SBINDIR@/runscript" ] || \
[ "$one" = "#!@SBINDIR@/openrc-run" ] || \
[ "$one" = "#!" -a "$two" = "@SBINDIR@/runscript" ] || \
[ "$one" = "#!" -a "$two" = "@SBINDIR@/openrc-run" ] || \
continue
unset one two three
RC_SVCNAME=${RC_SERVICE##*/} ; export RC_SVCNAME
# Compat
SVCNAME=$RC_SVCNAME ; export SVCNAME
(
# Save stdout in fd3, then remap it to stderr
exec 3>&1 1>&2
_rc_c=${RC_SVCNAME%%.*}
if [ -n "$_rc_c" -a "$_rc_c" != "$RC_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/$RC_SVCNAME" ]; then
. "$_dir/../conf.d/$RC_SVCNAME"
fi
[ -e @SYSCONFDIR@/rc.conf ] && . @SYSCONFDIR@/rc.conf
if . "$_dir/$RC_SVCNAME"; then
echo "$RC_SVCNAME" >&3
_depend
fi
)
done
done