[systemd-devel] RPM macros for systemd : latest version
Frederic Crozat
fcrozat at suse.com
Mon Sep 26 08:41:49 PDT 2011
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 <fcrozat at suse.com>
SUSE
-------------- next part --------------
# 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}
More information about the systemd-devel
mailing list