]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Move daemon-reload from package %post scripts to file triggers 1909/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 15 Nov 2015 00:14:34 +0000 (19:14 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 15 Nov 2015 23:38:37 +0000 (18:38 -0500)
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.

Makefile.am
src/core/.gitignore
src/core/macros.systemd.in
src/core/triggers.systemd.in [new file with mode: 0644]

index cec07fac27e6142637f99932b25f3850ebf16f8f..de8b5566832d995d32d3ebc2f5fd589fa35e9cd5 100644 (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
index f293bbdc93cfe8e1d277ebf530d4efd9fca86604..465b4fcc2062d847a17053e2d3abd7af85c31e58 100644 (file)
@@ -1,2 +1,3 @@
 /macros.systemd
+/triggers.systemd
 /systemd.pc
index bea6ef1da3cbdf93f351cfafced28a020e0c07c5..8a0e44b58c9c48b3e51a43ff5a3c11a690750816 100644 (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 || : \
diff --git a/src/core/triggers.systemd.in b/src/core/triggers.systemd.in
new file mode 100644 (file)
index 0000000..141f42d
--- /dev/null
@@ -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 || :