| From fba761f0bc86d37119bd18f7bc231e2d9f5d94a7 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> |
| Date: Thu, 12 Jan 2017 04:16:20 -0500 |
| Subject: [PATCH] rpm triggers: do nothing if systemd is not running (#5065) |
| |
| If we are running in a chroot/container/..., we would print a useless warning about |
| not being able to communicate with systemd. Trying to do daemon-reload is pointless |
| in those cases, so let's just skip all actions in that case. |
| |
| The check uses /run/system/system, as recommended by sd_booted(3). |
| |
| https://bugzilla.redhat.com/show_bug.cgi?id=1411299 |
| (cherry picked from commit 13749f547357f8e9ec398680548f818dea3aba1c) |
| --- |
| src/core/triggers.systemd.in | 22 +++++++++++++--------- |
| 1 file changed, 13 insertions(+), 9 deletions(-) |
| |
| diff --git a/src/core/triggers.systemd.in b/src/core/triggers.systemd.in |
| index 0d8c303136..f8c8cbc5f9 100644 |
| --- a/src/core/triggers.systemd.in |
| +++ b/src/core/triggers.systemd.in |
| @@ -27,11 +27,13 @@ |
| -- installed, because other cases are covered by the *un scriptlets, |
| -- so sometimes we will reload needlessly. |
| |
| -pid = posix.fork() |
| -if pid == 0 then |
| - assert(posix.exec("%{_bindir}/systemctl", "daemon-reload")) |
| -elseif pid > 0 then |
| - posix.wait(pid) |
| +if posix.access("/run/systemd/system") then |
| + pid = posix.fork() |
| + if pid == 0 then |
| + assert(posix.exec("%{_bindir}/systemctl", "daemon-reload")) |
| + elseif pid > 0 then |
| + posix.wait(pid) |
| + end |
| end |
| |
| %transfiletriggerun -p <lua> -- @systemunitdir@ /etc/systemd/system |
| @@ -48,10 +50,12 @@ end |
| -- file in %transfiletriggerun and execute the daemon-reload in |
| -- the first %filetriggerpostun. |
| |
| -posix.mkdir("%{_localstatedir}/lib") |
| -posix.mkdir("%{_localstatedir}/lib/rpm-state") |
| -posix.mkdir("%{_localstatedir}/lib/rpm-state/systemd") |
| -io.open("%{_localstatedir}/lib/rpm-state/systemd/needs-reload", "w") |
| +if posix.access("/run/systemd/system") then |
| + posix.mkdir("%{_localstatedir}/lib") |
| + posix.mkdir("%{_localstatedir}/lib/rpm-state") |
| + posix.mkdir("%{_localstatedir}/lib/rpm-state/systemd") |
| + io.open("%{_localstatedir}/lib/rpm-state/systemd/needs-reload", "w") |
| +end |
| |
| %filetriggerpostun -P 1000100 -p <lua> -- @systemunitdir@ /etc/systemd/system |
| if posix.access("%{_localstatedir}/lib/rpm-state/systemd/needs-reload") then |