#32 Remove restart-required and %postun logic
Merged a month ago by daandemeyer. Opened a month ago by daandemeyer.
rpms/ daandemeyer/systemd restart-required  into  c10s-sig-hyperscale

file modified
-47
@@ -1138,8 +1138,6 @@ 

  fi \

  %{nil}

  

- %define systemd_rpmstatedir %{_localstatedir}/lib/rpm-state/systemd

- 

  %post

  systemd-machine-id-setup &>/dev/null || :

  
@@ -1163,41 +1161,7 @@ 

  systemctl preset-all &>/dev/null || :

  systemctl --global preset-all &>/dev/null || :

  

- %pre

- [ -w %{_localstatedir} ] && mkdir -p %{systemd_rpmstatedir} && touch %{systemd_rpmstatedir}/restart-required || :

- 

- %postun

- [ -w %{systemd_rpmstatedir} ] && [ ! -f %{systemd_rpmstatedir}/restart-required ] && exit 0 || :

- 

- [ -w %{systemd_rpmstatedir} ] && rm -f %{systemd_rpmstatedir}/restart-required || :

- 

- if [ $1 -ge 1 ]; then

-     [ -w %{_localstatedir} ] && journalctl --update-catalog || :

- 

-     systemctl daemon-reexec || :

- 

-     systemd-tmpfiles --create &>/dev/null || :

- fi

- 

- restarting_services='systemd-timedated.service systemd-hostnamed.service systemd-journald.service systemd-localed.service systemd-userdbd.service'

- 

- %if 0%{?facebook}

- restarting_services="$restarting_services systemd-logind.service"

- %endif

- 

- %systemd_postun_with_restart $restarting_services

- 

- # This is the expanded form of %%systemd_user_daemon_reexec. We

- # can't use the macro because we define it ourselves.

- if [ $1 -ge 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then

-     /usr/lib/systemd/systemd-update-helper user-reexec || :

- fi

- 

  %posttrans

- [ -w %{systemd_rpmstatedir} ] && [ ! -f %{systemd_rpmstatedir}/restart-required ] && exit 0 || :

- 

- [ -w %{systemd_rpmstatedir} ] && rm -f %{systemd_rpmstatedir}/restart-required || :

- 

  # We can't check for upgrades on c9s as https://github.com/rpm-software-management/rpm/commit/3848c97cb227e7c018781aa7d5e1e46990ce1ffb

  # is missing so we run this stuff unconditionally on installs and upgrades.

  [ -w %{_localstatedir} ] && journalctl --update-catalog || :
@@ -1268,9 +1232,6 @@ 

  %preun udev

  %systemd_preun %udev_services

  

- %postun udev

- %systemd_postun_with_restart systemd-udevd.service systemd-timesyncd.service

- 

  %posttrans udev

  # Restart some services.

  # Others are either oneshot services, or sockets, and restarting them causes issues (#1378974)
@@ -1315,11 +1276,6 @@ 

  %preun networkd

  %systemd_preun systemd-networkd.service systemd-networkd-wait-online.service

  

- %postun networkd

- %if %{undefined facebook}

- %systemd_postun_with_restart systemd-networkd.service

- %endif

- 

  %posttrans networkd

  %if %{undefined facebook}

  %systemd_posttrans_with_restart systemd-networkd.service
@@ -1354,9 +1310,6 @@ 

          fi

  fi

  

- %postun resolved

- %systemd_postun_with_restart systemd-resolved.service

- 

  %posttrans resolved

  %systemd_posttrans_with_restart systemd-resolved.service

  [ -e %{_localstatedir}/lib/rpm-state/systemd-resolved.initial-installation ] || exit 0

The current effect of the restart-required logic is that we only
execute %postun of the old package on upgrade and not %posttrans of
the new package. This is exactly what we want to avoid as deploying
fixes to %postun requires two full rollouts before they take effect
compared to %posttrans which takes effect immediately.

Because we've already done a release with the restart-required logic,
the net effect on upgrade/downgrade now will be the following:

  • On upgrade, the restart-required file will not be created anymore,
    which means that %postun of the old package will be skipped. %posttrans
    of the new package will run.
  • On downgrade, the restart-required file will be created, which means
    the %posttrans of the old package will run. As a result, we don't need
    the %postun scriptlets anymore in the new package and can remove the logic
    and solely rely on %posttrans in the future.

Pull-Request has been merged by daandemeyer

a month ago
Metadata