#!/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" 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 unset skip_service srv_restart=$metadatadir/.$1_srv_restart if [ "$TARGET" = "post-install" ]; then # The service shouldn't be registered, so just show a message # explaining how to add it in the future. 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 cat <<_EOF ================================================================ The system service '${1}' won't be added into the runlevel '${2}' by default, so 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} ================================================================ _EOF shift; shift; shift; continue else echo "Registering '${1}' service to start at boot." fi if [ -f $srv_restart ]; then # Restart service if it was running previously. $initdir/$1 start rm -f $srv_restart else # Register service. if sbin/rc-service -e ${1}; then sbin/rc-update add ${1} ${2} fi fi else # While removing always stop the service if running. $initdir/$1 -q status if [ $? -eq 0 ]; then $initdir/$1 stop fi # # While upgrading a package, don't remove the service. # if [ "$UPDATE" = "yes" ]; then touch -f $srv_restart else # Unregister the service. sbin/rc-update del ${1} ${2} fi fi unset srv_restart shift; shift; shift; done ;; *) exit 1 ;; esac exit 0