diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-11-14 19:14:34 -0500 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-11-15 18:38:37 -0500 |
commit | 873e413323dfff4023604849c70944674ae5cd29 (patch) | |
tree | ea68a20f01598a8e62d18467e46e092842504bfa | |
parent | e3c4a681db0b7004904b95d55fd1a443161c9397 (diff) |
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.
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | src/core/.gitignore | 1 | ||||
-rw-r--r-- | src/core/macros.systemd.in | 12 | ||||
-rw-r--r-- | src/core/triggers.systemd.in | 26 |
4 files changed, 34 insertions, 10 deletions
diff --git a/Makefile.am b/Makefile.am index cec07fac27..de8b556683 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/src/core/.gitignore b/src/core/.gitignore index f293bbdc93..465b4fcc20 100644 --- a/src/core/.gitignore +++ b/src/core/.gitignore @@ -1,2 +1,3 @@ /macros.systemd +/triggers.systemd /systemd.pc diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in index bea6ef1da3..8a0e44b58c 100644 --- a/src/core/macros.systemd.in +++ b/src/core/macros.systemd.in @@ -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 || : \ diff --git a/src/core/triggers.systemd.in b/src/core/triggers.systemd.in new file mode 100644 index 0000000000..141f42dbcf --- /dev/null +++ b/src/core/triggers.systemd.in @@ -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 || : |