void-packages/srcpkgs/xbps-triggers/files/openrc-service

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