- Merge migration rpm macros into service_add/service_del macros.
- Use systemd presets in rpm macros - Add fix-reload.patch: handle daemon-reload and start condition properly (bnc#719221). OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=198
This commit is contained in:
107
macros.systemd
107
macros.systemd
@@ -7,7 +7,10 @@
|
||||
# add %systemd_requires in the specfile
|
||||
#
|
||||
# %post
|
||||
# %service_add demo.service demo1.service
|
||||
# %service_add_pre demo.service demo1.service
|
||||
#
|
||||
# %post
|
||||
# %service_add_post demo.service demo1.service
|
||||
#
|
||||
# %preun
|
||||
# %service_del_preun demo.service
|
||||
@@ -15,64 +18,30 @@
|
||||
# %postun
|
||||
# %service_del_postun demo.service
|
||||
#
|
||||
#
|
||||
# when migrating a package from sysvinit to systemd :
|
||||
# %triggerun -- package_name < version_where_switch_occured
|
||||
# %service_migrate_to_systemd [ -l run_level ] service_name.service
|
||||
# foobar.socket
|
||||
#
|
||||
# -l <run_level> is optional
|
||||
###
|
||||
|
||||
# This is for /bin/systemctl
|
||||
%systemd_requires \
|
||||
Requires(pre): systemd \
|
||||
Requires(post): systemd \
|
||||
Requires(preun): systemd \
|
||||
Requires(postun): systemd \
|
||||
%systemd_requires \
|
||||
Requires(pre): systemd \
|
||||
Requires(post): systemd \
|
||||
Requires(preun): systemd \
|
||||
Requires(postun): systemd \
|
||||
|
||||
%_unitdir /lib/systemd/system
|
||||
|
||||
# On install, tell systemd to reload its unit files
|
||||
%service_add() \
|
||||
test -n "$FIRST_ARG" || FIRST_ARG=$1 \
|
||||
if [ $FIRST_ARG -eq 1 ]; then \
|
||||
# Initial installation \
|
||||
/bin/systemctl daemon-reload >/dev/null 2>&1 || : \
|
||||
fi \
|
||||
%{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 \
|
||||
/bin/systemctl daemon-reload >/dev/null 2>&1 || : \
|
||||
if [ $FIRST_ARG -ge 1 ]; then \
|
||||
# Package upgrade, not uninstall \
|
||||
/bin/systemctl try-restart %{?*} >/dev/null 2>&1 || : \
|
||||
fi \
|
||||
%{nil}
|
||||
|
||||
%service_migrate_to_systemd_pre() \
|
||||
%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 \
|
||||
touch "/var/lib/systemd/migrated/$service" \
|
||||
sysv_service=`echo $service | sed -e 's/\\.[a-z]*//g'` \
|
||||
touch "/var/lib/systemd/migrated/$sysv_service" \
|
||||
done \
|
||||
else \
|
||||
for service in %{?*} ; do \
|
||||
if [ ! -e "/var/lib/systemd/migrated/$service" ]; then \
|
||||
services_to_migrate="$services_to_migrate $service" \
|
||||
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 \
|
||||
@@ -81,25 +50,45 @@ else \
|
||||
fi \
|
||||
%{nil}
|
||||
|
||||
%service_migrate_to_systemd_post() \
|
||||
# On install, tell systemd to reload its unit files
|
||||
%service_add_post() \
|
||||
test -n "$FIRST_ARG" || FIRST_ARG=$1 \
|
||||
for service in %{?*} ; do \
|
||||
if [ ! -e "/var/lib/systemd/migrated/$service" ]; then \
|
||||
services_to_migrate="$services_to_migrate $service" \
|
||||
touch "/var/lib/systemd/migrated/$service" \
|
||||
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}
|
||||
|
||||
%service_migrate_to_systemd_postun() \
|
||||
test -n "$FIRST_ARG" || FIRST_ARG=$1 \
|
||||
if [ $FIRST_ARG -eq 0 ]; then \
|
||||
for service in %{?*} ; do \
|
||||
rm -f "/var/lib/systemd/migrated/$service" 2> /dev/null \
|
||||
done \
|
||||
fi \
|
||||
%{nil}
|
||||
|
||||
|
Reference in New Issue
Block a user