#!/bin/sh # # Registers or unregisters OpenRC services into the specified # runlevel. # # Arguments: $1 = action [run/targets] # $2 = target [post-install/pre-remove] # $3 = pkgname # $4 = version # $5 = 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 srv_restart=$metadatadir/.$1_srv_restart if [ "$TARGET" = "post-install" ]; then 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; done ;; *) exit 1 ;; esac exit 0