#!/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