Skip to content

Support dnf5: libdnf5 actions plugin hook and needs-restarting subcommand - #12

Merged
ThatStasGuy merged 1 commit into
amazonlinux:mainfrom
VinzSpring:dnf5-support
Aug 21, 2026
Merged

Support dnf5: libdnf5 actions plugin hook and needs-restarting subcommand#12
ThatStasGuy merged 1 commit into
amazonlinux:mainfrom
VinzSpring:dnf5-support

Conversation

@VinzSpring

Copy link
Copy Markdown
Contributor

dnf5-only systems (e.g. Amazon Linux 2027) drop the dnf4 post-transaction-actions plugin, leaving smart-restart uninstallable and its hook mechanism gone. Add first-class dnf5 support:

  • Makefile: pkg_manager=dnf5 installs the hook through the libdnf5 actions plugin (*.actions file under /etc/dnf/libdnf5-plugins/actions.d) from a new conf/install.actions.in template
  • smart-restart.sh: when dnf5 is present, default NEEDS_RESTARTING_COMMAND to 'dnf5 needs-restarting --skip-file-locks'. The actions plugin runs the hook synchronously inside the dnf transaction, which still holds the system repository lock, so the inner dnf5 must skip file locking or it deadlocks on its own parent (verified live: the hook child sat in 'Waiting for a lock on the system repository' naming its ancestor until killed)
  • spec: on amzn >= 2027, require dnf5-plugins and libdnf5-plugin-actions, package the actions.d hook file

yum and dnf4 behavior is unchanged; the existing test suite passes and 'make install' output is identical for the default and yum modes.

Note: dnf5 < a3dcdacdc93c has a needs-restarting D-Bus regression (rpm-software-management/dnf5#2562) that breaks service detection in hook contexts regardless of this change; distros need that fix for the hook to be fully functional.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

…mand

dnf5-only systems (e.g. Amazon Linux 2027) drop the dnf4
post-transaction-actions plugin, leaving smart-restart uninstallable
and its hook mechanism gone. Add first-class dnf5 support:

- Makefile: pkg_manager=dnf5 installs the hook through the libdnf5
  actions plugin (*.actions file under
  /etc/dnf/libdnf5-plugins/actions.d) from a new
  conf/install.actions.in template
- smart-restart.sh: when dnf5 is present, default
  NEEDS_RESTARTING_COMMAND to 'dnf5 needs-restarting --skip-file-locks'.
  The actions plugin runs the hook synchronously inside the dnf
  transaction, which still holds the system repository lock, so the
  inner dnf5 must skip file locking or it deadlocks on its own parent
  (verified live: the hook child sat in 'Waiting for a lock on the
  system repository' naming its ancestor until killed)
- spec: on amzn >= 2027, require dnf5-plugins and
  libdnf5-plugin-actions, package the actions.d hook file

yum and dnf4 behavior is unchanged; the existing test suite passes and
'make install' output is identical for the default and yum modes.

Note: dnf5 < a3dcdacdc93c has a needs-restarting D-Bus regression
(rpm-software-management/dnf5#2562) that breaks service detection in
hook contexts regardless of this change; distros need that fix for the
hook to be fully functional.

@ThatStasGuy ThatStasGuy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@ThatStasGuy
ThatStasGuy merged commit b765ef1 into amazonlinux:main Aug 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants