124 lines
2.7 KiB
Bash
Executable file
124 lines
2.7 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Registers or unregisters OpenRC services into the specified
|
|
# runlevel. This works by specifying three arguments as follows:
|
|
#
|
|
# service_name runlevel register
|
|
# --------------------------------------------------
|
|
# dbus default boolean
|
|
# --------------------------------------------------
|
|
#
|
|
# Arguments: $ACTION = [run/targets]
|
|
# $TARGET = [post-install/pre-remove]
|
|
# $PKGNAME
|
|
# $VERSION
|
|
# $UPDATE = [yes/no]
|
|
#
|
|
ACTION="$1"
|
|
TARGET="$2"
|
|
PKGNAME="$3"
|
|
VERSION="$4"
|
|
UPDATE="$5"
|
|
|
|
export PATH="$PATH:/usr/local/bin"
|
|
|
|
initdir=etc/init.d
|
|
metadatadir=var/db/xbps/metadata/${PKGNAME}
|
|
|
|
case "$ACTION" in
|
|
targets)
|
|
echo "post-install pre-remove"
|
|
;;
|
|
run)
|
|
[ ! -x sbin/rc-update ] && exit 0
|
|
[ ! -x sbin/rc-service ] && exit 0
|
|
[ -z "$openrc_services" ] && exit 1
|
|
|
|
if [ "$TARGET" = "pre-remove" ]; then
|
|
rcupdate_args="del"
|
|
elif [ "$TARGET" = "post-install" ]; then
|
|
rcupdate_args="add"
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
[ ! -f etc/fstab ] && touch etc/fstab
|
|
|
|
set -- ${openrc_services}
|
|
while [ $# -gt 0 ]; do
|
|
if [ "$TARGET" = "post-install" ]; then
|
|
case "$3" in
|
|
[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff]|0)
|
|
skip_service=1
|
|
;;
|
|
[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
|
|
unset skip_service
|
|
;;
|
|
esac
|
|
if [ -n "$skip_service" ]; then
|
|
# The service shouldn't be registered, so just show a message
|
|
# explaining how to add it in the future.
|
|
cat <<_EOF
|
|
=========================================================================
|
|
|
|
The service '${1}' from '${PKGNAME}-${VERSION}' won't be registered
|
|
into the runlevel '${2}', therefore it will remain disabled at boot.
|
|
|
|
To start it at boot time, use the following command:
|
|
|
|
$ rc-update add ${1} ${2}
|
|
|
|
To disable it again use:
|
|
|
|
$ rc-update del ${1} ${2}
|
|
|
|
To start the service:
|
|
|
|
$ rc-service start ${1}
|
|
|
|
=========================================================================
|
|
_EOF
|
|
shift; shift; shift;
|
|
continue
|
|
fi
|
|
# Register service.
|
|
if [ "$UPDATE" = "no" ]; then
|
|
sbin/rc-update add ${1} ${2}
|
|
fi
|
|
else
|
|
#
|
|
# pre-remove
|
|
#
|
|
$initdir/$1 -q status
|
|
rv=$?
|
|
|
|
if [ "$UPDATE" = "no" ]; then
|
|
#
|
|
# If the service is running inform the user that it should be
|
|
# stopped before removing the package!
|
|
#
|
|
if [ $rv -eq 0 ]; then
|
|
echo "ERROR: service '${1}' from '${PKGNAME}-${VERSION}' must be stopped!"
|
|
echo "ERROR: please stop the service with 'rc-service $1 stop' and try again."
|
|
error=1
|
|
else
|
|
# Unregister the service.
|
|
sbin/rc-update del ${1} ${2}
|
|
fi
|
|
else
|
|
if [ $rv -eq 0 ]; then
|
|
echo "WARNING: service '${1}' from '${PKGNAME}-${VERSION}' must be restarted!"
|
|
echo "WARNING: you can restart it with 'rc-service $1 restart'."
|
|
fi
|
|
fi
|
|
fi
|
|
shift; shift; shift;
|
|
done
|
|
[ -n "$error" ] && exit $error
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|