Bjoern A. Zeeb 0696600c41 Move the rc framework out of sbin/init into libexec/rc.
The reasons for this are forward looking to pkgbase:
 * /sbin/init is a special binary; try not to replace it with
   every package update because an rc script was touched.
   (a follow-up commit will make init its own package)
 * having rc in its own place will allow more easy replacement
   of the rc framework with alternatives, such as openrc.

Discussed with:		brd (during BSDCam), kmoore
Requested by:		cem, bz
PR:			231522
Approved by:		re (gjb)
2018-10-17 16:49:11 +00:00

79 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: localpkg
# REQUIRE: abi
# BEFORE: securelevel
# KEYWORD: shutdown
. /etc/rc.subr
name="localpkg"
desc="Run local init scripts"
start_cmd="pkg_start"
stop_cmd="pkg_stop"
pkg_start()
{
local initdone
# For each dir in $local_startup, search for init scripts matching *.sh
#
case ${local_startup} in
[Nn][Oo] | '')
;;
*)
initdone=
find_local_scripts_old
for script in ${zlist} ${slist}; do
if [ -z "${initdone}" -a -f "${script}" ]; then
echo -n 'Local package initialization:'
initdone=yes
fi
if [ -x "${script}" ]; then
(set -T
trap 'exit 1' 2
${script} start)
elif [ -f "${script}" -o -L "${script}" ]; then
echo -n " (skipping ${script}, not executable)"
fi
done
[ -n "${initdone}" ] && echo '.'
;;
esac
}
pkg_stop()
{
local initdone
case ${local_startup} in
[Nn][Oo] | '')
;;
*)
initdone=
find_local_scripts_old
for script in `reverse_list ${slist} ${zlist}`; do
if [ -z "${initdone}" -a -f "${script}" ]; then
echo -n 'Shutting down local packages:'
initdone=yes
fi
if [ -x "${script}" ]; then
if [ `sysctl -n debug.bootverbose` -eq 1 ]; then
echo "==>" ${script}
fi
(set -T
trap 'exit 1' 2
${script} stop)
fi
done
[ -n "${initdone}" ] && echo '.'
;;
esac
}
load_rc_config $name
run_rc_command "$1"