Move daemon-reload from package %post scripts to file triggers

This uses new functionality added in rpm 4.13. Instead of doing
one daemon-reload per packages, we do just one or two
(When both installing and uninstalling packages, we do
two. Unfortunately this also includes the common case of upgrades.
When only installing or when only installing, we do just one.)

New file triggers.systemd can be built, but the contents have
to be copied into the rpm spec file by hand. Using %{load} does
not seem to work. It can serve as documentation.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2015-11-14 19:14:34 -05:00
parent e3c4a681db
commit 873e413323
4 changed files with 34 additions and 10 deletions

View file

@ -1403,7 +1403,8 @@ nodist_rpmmacros_DATA = \
EXTRA_DIST += \
src/core/systemd.pc.in \
src/core/macros.systemd.in
src/core/macros.systemd.in \
src/core/triggers.systemd.in
# ------------------------------------------------------------------------------
@ -5873,7 +5874,7 @@ sysctl.d/%: sysctl.d/%.in
%.conf: %.conf.in
$(SED_PROCESS)
src/core/macros.%: src/core/macros.%.in
src/core/%.systemd: src/core/%.systemd.in
$(SED_PROCESS)
src/%.policy.in: src/%.policy.in.in

1
src/core/.gitignore vendored
View file

@ -1,2 +1,3 @@
/macros.systemd
/triggers.systemd
/systemd.pc

View file

@ -1,4 +1,4 @@
# -*- Mode: makefile; indent-tabs-mode: t -*- */
# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */
#
# This file is part of systemd.
#
@ -39,7 +39,7 @@ Requires(postun): systemd \
%systemd_post() \
if [ $1 -eq 1 ] ; then \
# Initial installation \
systemctl preset %{?*} >/dev/null 2>&1 || : \
systemctl --no-reload preset %{?*} >/dev/null 2>&1 || : \
fi \
%{nil}
@ -48,8 +48,7 @@ fi \
%systemd_preun() \
if [ $1 -eq 0 ] ; then \
# Package removal, not upgrade \
systemctl --no-reload disable %{?*} > /dev/null 2>&1 || : \
systemctl stop %{?*} > /dev/null 2>&1 || : \
systemctl --no-reload disable --now %{?*} > /dev/null 2>&1 || : \
fi \
%{nil}
@ -60,14 +59,11 @@ if [ $1 -eq 0 ] ; then \
fi \
%{nil}
%systemd_postun() \
systemctl daemon-reload >/dev/null 2>&1 || : \
%{nil}
%systemd_postun() %{nil}
%systemd_user_postun() %{nil}
%systemd_postun_with_restart() \
systemctl daemon-reload >/dev/null 2>&1 || : \
if [ $1 -ge 1 ] ; then \
# Package upgrade, not uninstall \
systemctl try-restart %{?*} >/dev/null 2>&1 || : \

View file

@ -0,0 +1,26 @@
# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */
#
# This file is part of systemd.
#
# Copyright 2015 Zbigniew Jędrzejewski-Szmek
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# systemd is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
# The contents of this are an example to be copied into systemd.spec.
%transfiletriggerin -- @systemunitdir@ /etc/systemd/system
systemctl daemon-reload &>/dev/null || :
%transfiletriggerun -- @systemunitdir@ /etc/systemd/system
systemctl daemon-reload &>/dev/null || :