Ewoud Kohl van Wijngaarden writes:
>On Fri, Mar 18, 2022 at 06:22:08PM -0400, Sam Varshavchik wrote:
>>The only thing that
https://docs.fedoraproject.org/en-US/packaging-
>>guidelines/Scriptlets/ tells me to do is to put
>>%systemd_postun_with_restart in my %post. However:
>>
>>1) systemd complains that it wants a daemon-reload, in order to
>>pick up an updated .service file
>>
>>2) I still must manually run systemctl reload-or-restart --marked,
>>in order to actually restart an updated service
>>
>>It seems to be there's a missing step, in here. By comparison I
>>prepared comparable .deb packages for Ubuntu, using
>>dh_installsystemd in the install script. The end result:
>>
>>A) The initial .deb install enabled and started the service.
>>
>>B) Bumping the release, rebuilding, and installing the newer
>>package results in an automatic daemon-reload and restart,
>>restarting the service.
>>
>>Overall .deb's systemd integration seems to go smoother (compared
>>to the rest of the .deb packaging process) than rpm's.
>>
>>Is there a specific reason why %systemd_postun_with_restart stops
>>before finishing the job? Am I missing something that I can
>>install, to have this happen auto-magically?
>
>I think daemon-reload changed to file triggers in systemd 228:
>
>https://github.com/systemd/systemd/commit/873e413323dfff4023604849c70944674ae5cd29
>
>However, the scriptlets documentation[1] states to use %systemd_post
>with %post and %systemd_postun_with_restart with %postun. %Perhaps
>that you're using %systemd_postun_with_restart in %post is the
>source of your problems?
No, my invocation is in %postun. Furthermore, it wouldn't matter,
since at %post time the new package and the new service unit should
already be installed and restartable.
And, as I wrote:
>>1) systemd complains that it wants a daemon-reload, in order to
>>pick up an updated .service file
If ot was "changed to file triggers", well, it's not working since
nothing is getting triggered. Furthermore,
%systemd_postun_with_restart runs:
/usr/lib/systemd/systemd-update-helper mark-restart-system-units
which does:
systemctl set-property "$unit" Markers=+needs-restart &
That's all it does. Then, as I wrote:
>>2) I still must manually run systemctl reload-or-restart --marked,
>>in order to actually restart an updated service
So, the shipped systemd scriptlets are still, very much, under an
impression that explicit action needs to be taken to restart and/or
reload updated .services. But, nothing gets reloaded. The .service
files gets marked for a restart, but, from what I can tell, nothing
ever gets restarted.
Do you happen to have the spec file and/or the RPMs? How can we
replicate the findings?