diff options
Diffstat (limited to '')
-rw-r--r-- | src/rpm/triggers.systemd.in | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/src/rpm/triggers.systemd.in b/src/rpm/triggers.systemd.in new file mode 100644 index 0000000..39a1f8d --- /dev/null +++ b/src/rpm/triggers.systemd.in @@ -0,0 +1,122 @@ +# -*- Mode: rpm-spec; indent-tabs-mode: nil -*- */ +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# This file is part of systemd. +# Copyright © 2018 Neal Gompa + +# The contents of this are an example to be copied into systemd.spec. +# +# Minimum rpm version supported: 4.14.0 + +%transfiletriggerin -P 900900 -p <lua> -- {{SYSTEM_DATA_UNIT_DIR}} /etc/systemd/system +-- This script will run after any package is initially installed or +-- upgraded. We care about the case where a package is initially +-- 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("{{SYSTEMD_UPDATE_HELPER_PATH}}", "system-reload-restart")) +elseif pid > 0 then + posix.wait(pid) +end + +%transfiletriggerin -P 900899 -p <lua> -- {{USER_DATA_UNIT_DIR}} /etc/systemd/user +pid = posix.fork() +if pid == 0 then + assert(posix.exec("{{SYSTEMD_UPDATE_HELPER_PATH}}", "user-reload-restart")) +elseif pid > 0 then + posix.wait(pid) +end + +%transfiletriggerpostun -P 1000100 -p <lua> -- {{SYSTEM_DATA_UNIT_DIR}} /etc/systemd/system +-- On removal, we need to run daemon-reload after any units have been +-- removed. +-- On upgrade, we need to run daemon-reload after any new unit files +-- have been installed, but before %postun scripts in packages get +-- executed. +pid = posix.fork() +if pid == 0 then + assert(posix.exec("{{SYSTEMD_UPDATE_HELPER_PATH}}", "system-reload")) +elseif pid > 0 then + posix.wait(pid) +end + +%transfiletriggerpostun -P 1000100 -p <lua> -- {{SYSTEM_DATA_UNIT_DIR}} /etc/systemd/system +-- Execute daemon-reload in user managers. +pid = posix.fork() +if pid == 0 then + assert(posix.exec("{{SYSTEMD_UPDATE_HELPER_PATH}}", "user-reload")) +elseif pid > 0 then + posix.wait(pid) +end + +%transfiletriggerpostun -P 10000 -p <lua> -- {{SYSTEM_DATA_UNIT_DIR}} /etc/systemd/system +-- We restart remaining system services that should be restarted here. +pid = posix.fork() +if pid == 0 then + assert(posix.exec("{{SYSTEMD_UPDATE_HELPER_PATH}}", "system-restart")) +elseif pid > 0 then + posix.wait(pid) +end + +%transfiletriggerpostun -P 9999 -p <lua> -- {{USER_DATA_UNIT_DIR}} /etc/systemd/user +-- We restart remaining user services that should be restarted here. +pid = posix.fork() +if pid == 0 then + assert(posix.exec("{{SYSTEMD_UPDATE_HELPER_PATH}}", "user-restart")) +elseif pid > 0 then + posix.wait(pid) +end + +%transfiletriggerin -P 1000700 -p <lua> -- {{SYSUSERS_DIR}} +-- This script will process files installed in {{SYSUSERS_DIR}} to create +-- specified users automatically. The priority is set such that it +-- will run before the tmpfiles file trigger. +assert(rpm.execute("systemd-sysusers")) + +%transfiletriggerin -P 1000700 udev -p <lua> -- {{UDEV_HWDB_DIR}} +-- This script will automatically invoke hwdb update if files have been +-- installed or updated in {{UDEV_HWDB_DIR}}. +assert(rpm.execute("systemd-hwdb", "update")) + +%transfiletriggerin -P 1000700 -p <lua> -- {{SYSTEMD_CATALOG_DIR}} +-- This script will automatically invoke journal catalog update if files +-- have been installed or updated in {{SYSTEMD_CATALOG_DIR}}. +assert(rpm.execute("journalctl", "--update-catalog")) + +%transfiletriggerin -P 1000700 -p <lua> -- {{BINFMT_DIR}} +-- This script will automatically apply binfmt rules if files have been +-- installed or updated in {{BINFMT_DIR}}. +if posix.access("/run/systemd/system") then + pid = posix.fork() + if pid == 0 then + assert(posix.exec("{{ROOTLIBEXECDIR}}/systemd-binfmt")) + elseif pid > 0 then + posix.wait(pid) + end +end + +%transfiletriggerin -P 1000600 -p <lua> -- {{TMPFILES_DIR}} +-- This script will process files installed in {{TMPFILES_DIR}} to create +-- tmpfiles automatically. The priority is set such that it will run +-- after the sysusers file trigger, but before any other triggers. +assert(rpm.execute("systemd-tmpfiles", "--create")) + +%transfiletriggerin -P 1000600 udev -p <lua> -- {{UDEV_RULES_DIR}} +-- This script will automatically update udev with new rules if files +-- have been installed or updated in {{UDEV_RULES_DIR}}. +if posix.access("/run/udev/control") then + assert(rpm.execute("udevadm", "control", "--reload")) +end + +%transfiletriggerin -P 1000500 -p <lua> -- {{SYSCTL_DIR}} +-- This script will automatically apply sysctl rules if files have been +-- installed or updated in {{SYSCTL_DIR}}. +if posix.access("/run/systemd/system") then + pid = posix.fork() + if pid == 0 then + assert(posix.exec("{{ROOTLIBEXECDIR}}/systemd-sysctl")) + elseif pid > 0 then + posix.wait(pid) + end +end |