Hi all, we've been doing another round of changes to the RPM macros for systemd. It is mostly to handle : - migration from sysvinit (using Fedora scripts, but not relying on triggers, because they don't play very will with OBS) - presets (systemctl preset is called automatically)
-- Frederic Crozat <[email protected]> SUSE
# RPM macros for packages installing systemd unit files
#
###
#
# When a package install systemd unit files, it should use the following macros:
#
# add %systemd_requires in the specfile
#
# %post
# %service_add_pre demo.service demo1.service
#
# %post
# %service_add_post demo.service demo1.service
#
# %preun
# %service_del_preun demo.service
#
# %postun
# %service_del_postun demo.service
#
###
# This is for /bin/systemctl
%systemd_requires
\
Requires(pre): systemd
\
Requires(post): systemd
\
Requires(preun): systemd
\
Requires(postun): systemd
\
%_unitdir /lib/systemd/system
%service_add_pre()
\
test -n "$FIRST_ARG" || FIRST_ARG=$1
\
# disable migration if initial install under systemd
\
if [ $FIRST_ARG -eq 1 ]; then
\
for service in %{?*} ; do
\
sysv_service=`echo $service | sed -e 's/\\.[a-z]*//g'`
\
touch "/var/lib/systemd/migrated/$sysv_service"
\
done
\
else
\
for service in %{?*} ; do
\
sysv_service=`echo $service | sed -e 's/\\.[a-z]*//g'`
\
if [ ! -e "/var/lib/systemd/migrated/$sysv_service" ]; then
\
services_to_migrate="$services_to_migrate $sysv_service"
\
fi
\
done
\
if [ -n "$services_to_migrate" ]; then
\
/usr/sbin/systemd-sysv-convert --save $services_to_migrate >/dev/null 2>&1
|| : \
fi
\
fi
\
%{nil}
# On install, tell systemd to reload its unit files
%service_add_post()
\
test -n "$FIRST_ARG" || FIRST_ARG=$1
\
for service in %{?*} ; do
\
sysv_service=`echo $service | sed -e 's/\\.[a-z]*//g'`
\
if [ ! -e "/var/lib/systemd/migrated/$sysv_service" ]; then
\
services_to_migrate="$services_to_migrate $sysv_service"
\
touch "/var/lib/systemd/migrated/$sysv_service"
\
fi
\
done
\
if [ -n "$services_to_migrate" ]; then
\
/usr/sbin/systemd-sysv-convert --apply $services_to_migrate >/dev/null 2>&1
|| : \
fi
\
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
\
/bin/systemctl preset %{?*} >/dev/null 2>&1 || :
\
%{nil}
# On uninstall, disable and stop services
%service_del_preun()
\
test -n "$FIRST_ARG" || FIRST_ARG=$1
\
if [ $FIRST_ARG -eq 0 ]; then
\
# Package removal, not upgrade
\
/bin/systemctl --no-reload disable %{?*} > /dev/null 2>&1 || :
\
/bin/systemctl stop %{?*} > /dev/null 2>&1 || :
\
fi
\
%{nil}
# On uninstall, tell systemd to reload its unit files
%service_del_postun()
\
test -n "$FIRST_ARG" || FIRST_ARG=$1
\
if [ $FIRST_ARG -ge 1 ]; then
\
# Package upgrade, not uninstall
\
/bin/systemctl try-restart %{?*} >/dev/null 2>&1 || :
\
else # package uninstall
\
for service in %{?*} ; do
\
sysv_service=`echo $service | sed -e 's/\\.[a-z]*//g'`
\
rm -f "/var/lib/systemd/migrated/$sysv_service" 2> /dev/null
\
done
\
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
\
fi
\
%{nil}
_______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
