c84aa6be32
If we already have systemd-{enabled,disabled} lists, then
don't overwrite them, just add lists to them.
Services presented in the lists should be filtered out
from services-{on,off} lists already.
This fixes commit 2b50111650
"services: Don't touch services already listed in the config".
70 lines
1.8 KiB
Bash
Executable File
70 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# this script piggybacks service status information
|
|
# into the system to be installed (instead of applying
|
|
# it to rootfs being formed immediately)
|
|
|
|
# NB: install2 is not a rootfs, handling differs either
|
|
|
|
STATUS=`mktemp`
|
|
CONFDIR=/usr/share/install2
|
|
CHECK_FILES=
|
|
|
|
. shell-config
|
|
|
|
switch() {
|
|
[ -n "$CHECK_FILES" ] && \
|
|
egrep -qs "^[[:blank:]]*$1(.service|.socket)?[[:blank:]]*$" \
|
|
$CHECK_FILES && return ||:
|
|
|
|
case "$2" in
|
|
on|off)
|
|
shell_config_set "$STATUS" "$1" "$2";;
|
|
esac
|
|
}
|
|
|
|
for f in services-on services-off systemd-enabled systemd-disabled; do
|
|
[ -s "$CONFDIR/$f" ] || continue
|
|
CHECK_FILES="$CHECK_FILES $CONFDIR/$f"
|
|
done
|
|
|
|
# defaults (most likely features.in ones)
|
|
for i in $GLOBAL_DEFAULT_SERVICES_ENABLE; do switch $i on; done
|
|
for i in $GLOBAL_DEFAULT_SERVICES_DISABLE; do switch $i off; done
|
|
|
|
# explicitly specified behaviour (e.g. via conf.d)
|
|
for i in $GLOBAL_SERVICES_ENABLE; do switch $i on; done
|
|
for i in $GLOBAL_SERVICES_DISABLE; do switch $i off; done
|
|
|
|
SERVICES="$GLOBAL_DEFAULT_SERVICES_ENABLE $GLOBAL_DEFAULT_SERVICES_DISABLE"
|
|
SERVICES="$SERVICES $GLOBAL_SERVICES_ENABLE $GLOBAL_SERVICES_DISABLE"
|
|
SERVICES="$(echo $SERVICES | sort -u)"
|
|
|
|
for i in $SERVICES; do
|
|
onoff="$(shell_config_get "$STATUS" "$i")"
|
|
[ -n "$onoff" ] || continue
|
|
echo "$i" >> "$CONFDIR"/services-"$onoff"
|
|
done
|
|
|
|
if [ -s "$CONFDIR"/services-on ]; then
|
|
if [ -s "$CONFDIR"/systemd-enabled ]; then
|
|
cat "$CONFDIR"/services-on >>"$CONFDIR"/systemd-enabled
|
|
rm "$CONFDIR"/services-on
|
|
else
|
|
cp -a "$CONFDIR"/{services-on,systemd-enabled}
|
|
fi
|
|
fi
|
|
|
|
if [ -s "$CONFDIR"/services-off ]; then
|
|
if [ -s "$CONFDIR"/systemd-disabled ]; then
|
|
cat "$CONFDIR"/services-off >>"$CONFDIR"/systemd-disabled
|
|
rm "$CONFDIR"/services-off
|
|
else
|
|
cp -a "$CONFDIR"/{services-off,systemd-disabled}
|
|
fi
|
|
fi
|
|
|
|
rm "$STATUS"
|
|
|
|
:
|