From cd621954ed643c6ee0d869132293e26056a48826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 5 Feb 2021 17:03:43 +0100 Subject: [PATCH] rpm: order sysctl/sysusers/tmpfiles execution before package scriptlets P>1000000 is *before* "normal" scriptlets, P<1000000 is *after*. I think it makes sense to do stuff like execution of sysctl/sysusers/tmpfiles configuration before package scriptlets. I think that was the intent, but a single digit got dropped ;( Also, let's reorder the scriptlets in the file to match execution order, to make it easier to see what is going on. Most of those may happen in any order, but there are some exceptions: tmpfiles should be after sysusers, udevadm --reload should be after hwdb. --- src/rpm/triggers.systemd.in | 78 +++++++++++++++++----------------- src/rpm/triggers.systemd.sh.in | 52 +++++++++++------------ 2 files changed, 65 insertions(+), 65 deletions(-) diff --git a/src/rpm/triggers.systemd.in b/src/rpm/triggers.systemd.in index 1e925cf9740..37f62cb1b76 100644 --- a/src/rpm/triggers.systemd.in +++ b/src/rpm/triggers.systemd.in @@ -50,7 +50,43 @@ if posix.access("/run/systemd/system") then end end -%transfiletriggerin -P 100500 -p -- @tmpfilesdir@ +%transfiletriggerin -P 1000700 udev -p -- @udevhwdbdir@ +-- This script will automatically invoke hwdb update if files have been +-- installed or updated in @udevhwdbdir@. +if posix.access("/run/systemd/system") then + pid = posix.fork() + if pid == 0 then + assert(posix.exec("%{_bindir}/systemd-hwdb", "update")) + elseif pid > 0 then + posix.wait(pid) + end +end + +%transfiletriggerin -P 1000700 -p -- @catalogdir@ +-- This script will automatically invoke journal catalog update if files +-- have been installed or updated in @catalogdir@. +if posix.access("/run/systemd/system") then + pid = posix.fork() + if pid == 0 then + assert(posix.exec("%{_bindir}/journalctl", "--update-catalog")) + elseif pid > 0 then + posix.wait(pid) + end +end + +%transfiletriggerin -P 1000700 -p -- @binfmtdir@ +-- This script will automatically apply binfmt rules if files have been +-- installed or updated in @binfmtdir@. +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 -- @tmpfilesdir@ -- This script will process files installed in @tmpfilesdir@ to create -- tmpfiles automatically. The priority is set such that it will run -- after the sysusers file trigger, but before any other triggers. @@ -63,31 +99,7 @@ if posix.access("/run/systemd/system") then end end -%transfiletriggerin udev -p -- @udevhwdbdir@ --- This script will automatically invoke hwdb update if files have been --- installed or updated in @udevhwdbdir@. -if posix.access("/run/systemd/system") then - pid = posix.fork() - if pid == 0 then - assert(posix.exec("%{_bindir}/systemd-hwdb", "update")) - elseif pid > 0 then - posix.wait(pid) - end -end - -%transfiletriggerin -p -- @catalogdir@ --- This script will automatically invoke journal catalog update if files --- have been installed or updated in @catalogdir@. -if posix.access("/run/systemd/system") then - pid = posix.fork() - if pid == 0 then - assert(posix.exec("%{_bindir}/journalctl", "--update-catalog")) - elseif pid > 0 then - posix.wait(pid) - end -end - -%transfiletriggerin udev -p -- @udevrulesdir@ +%transfiletriggerin -P 1000600 udev -p -- @udevrulesdir@ -- This script will automatically update udev with new rules if files -- have been installed or updated in @udevrulesdir@. if posix.access("/run/systemd/system") then @@ -99,7 +111,7 @@ if posix.access("/run/systemd/system") then end end -%transfiletriggerin -p -- @sysctldir@ +%transfiletriggerin -P 1000500 -p -- @sysctldir@ -- This script will automatically apply sysctl rules if files have been -- installed or updated in @sysctldir@. if posix.access("/run/systemd/system") then @@ -110,15 +122,3 @@ if posix.access("/run/systemd/system") then posix.wait(pid) end end - -%transfiletriggerin -p -- @binfmtdir@ --- This script will automatically apply binfmt rules if files have been --- installed or updated in @binfmtdir@. -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 diff --git a/src/rpm/triggers.systemd.sh.in b/src/rpm/triggers.systemd.sh.in index 641afd9ef7b..c1af5f43d3b 100644 --- a/src/rpm/triggers.systemd.sh.in +++ b/src/rpm/triggers.systemd.sh.in @@ -28,7 +28,7 @@ if test -d "/run/systemd/system"; then %{_bindir}/systemctl daemon-reload || : fi -%transfiletriggerin -P 100700 -- @sysusersdir@ +%transfiletriggerin -P 1000700 -- @sysusersdir@ # This script will process files installed in @sysusersdir@ to create # specified users automatically. The priority is set such that it # will run before the tmpfiles file trigger. @@ -36,43 +36,21 @@ if test -d "/run/systemd/system"; then %{_bindir}/systemd-sysusers || : fi -%transfiletriggerin -P 100500 -- @tmpfilesdir@ -# This script will process files installed in @tmpfilesdir@ to create -# tmpfiles automatically. The priority is set such that it will run -# after the sysusers file trigger, but before any other triggers. -if test -d "/run/systemd/system"; then - %{_bindir}/systemd-tmpfiles --create || : -fi - -%transfiletriggerin udev -- @udevhwdbdir@ +%transfiletriggerin -P 1000700 udev -- @udevhwdbdir@ # This script will automatically invoke hwdb update if files have been # installed or updated in @udevhwdbdir@. if test -d "/run/systemd/system"; then %{_bindir}/systemd-hwdb update || : fi -%transfiletriggerin -- @catalogdir@ +%transfiletriggerin -P 1000700 -- @catalogdir@ # This script will automatically invoke journal catalog update if files # have been installed or updated in @catalogdir@. if test -d "/run/systemd/system"; then %{_bindir}/journalctl --update-catalog || : fi -%transfiletriggerin udev -- @udevrulesdir@ -# This script will automatically update udev with new rules if files -# have been installed or updated in @udevrulesdir@. -if test -e /run/udev/control; then - %{_bindir}/udevadm control --reload || : -fi - -%transfiletriggerin -- @sysctldir@ -# This script will automatically apply sysctl rules if files have been -# installed or updated in @sysctldir@. -if test -d "/run/systemd/system"; then - @rootlibexecdir@/systemd-sysctl || : -fi - -%transfiletriggerin -- @binfmtdir@ +%transfiletriggerin -P 1000700 -- @binfmtdir@ # This script will automatically apply binfmt rules if files have been # installed or updated in @binfmtdir@. if test -d "/run/systemd/system"; then @@ -80,3 +58,25 @@ if test -d "/run/systemd/system"; then # during install @rootlibexecdir@/systemd-binfmt || : fi + +%transfiletriggerin -P 1000600 -- @tmpfilesdir@ +# This script will process files installed in @tmpfilesdir@ to create +# tmpfiles automatically. The priority is set such that it will run +# after the sysusers file trigger, but before any other triggers. +if test -d "/run/systemd/system"; then + %{_bindir}/systemd-tmpfiles --create || : +fi + +%transfiletriggerin -P 1000600 udev -- @udevrulesdir@ +# This script will automatically update udev with new rules if files +# have been installed or updated in @udevrulesdir@. +if test -e /run/udev/control; then + %{_bindir}/udevadm control --reload || : +fi + +%transfiletriggerin -P 1000500 -- @sysctldir@ +# This script will automatically apply sysctl rules if files have been +# installed or updated in @sysctldir@. +if test -d "/run/systemd/system"; then + @rootlibexecdir@/systemd-sysctl || : +fi