Skip to content

Commit

Permalink
Use libdnf5-plugin-actions to execute post-update actions
Browse files Browse the repository at this point in the history
Fedora 41 uses DNF5 by default, doesn't support old (python) plugins
anymore. But it has 'actions' plugin which allows executing arbitrary
commands at various points of time. Use it to notify dom0 about
installed updates, and refresh appmenus etc.

QubesOS/qubes-issues#9244
  • Loading branch information
marmarek committed Oct 1, 2024
1 parent dc9dccf commit 070a571
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
6 changes: 5 additions & 1 deletion package-managers/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ endif

DIST ?= fc33

.PHONY: install install-apt install-dnf install-rpm install-yum
.PHONY: install install-apt install-dnf install-dnf5 install-rpm install-yum

install:
install -d $(DESTDIR)$(QUBESLIBDIR)
Expand Down Expand Up @@ -91,6 +91,10 @@ else
endif
install -D -m 0644 dnf-qubes-hooks.conf $(DESTDIR)$(SYSCONFDIR)/dnf/plugins/qubes-hooks.conf

install-dnf5: install-rpm
install -D -m 0644 qubes-post-update.actions \
$(DESTDIR)$(SYSCONFDIR)/dnf/libdnf5-plugins/actions.d/qubes-post-update.actions

install-yum: install-rpm
install -d $(DESTDIR)$(LIBDIR)/yum-plugins
install -D -m 0644 yum-qubes-hooks.py \
Expand Down
4 changes: 4 additions & 0 deletions package-managers/qubes-post-update.actions
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# notify dom0 if all updates are installed now
post_transaction:::enabled=host-only:/usr/lib/qubes/upgrades-status-notify
# refresh appmenus, features etc
post_transaction:::enabled=host-only:/etc/qubes-rpc/qubes.PostInstall
12 changes: 12 additions & 0 deletions rpm_spec/core-agent.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -167,13 +167,17 @@ Requires: dbus-1-tools
%else
Requires: dbus-tools
%endif
%if 0%{?fedora} >= 41
Requires: libdnf5-plugin-actions
%else
%if 0%{?rhel} == 8
# we need to stick to related DNF python version
# which is python3.6 by default
Requires: python3-dnf-plugins-qubes-hooks
%else
Requires: python%{python3_pkgversion}-dnf-plugins-qubes-hooks
%endif
%endif
Requires: python%{python3_pkgversion}-setuptools
# for qubes.ResizeDisk
Requires: parted
Expand Down Expand Up @@ -496,7 +500,11 @@ make -C qubes-rpc/kde DESTDIR=$RPM_BUILD_ROOT install-kde5
make -C qubes-rpc/nautilus DESTDIR=$RPM_BUILD_ROOT install
make -C qubes-rpc/thunar DESTDIR=$RPM_BUILD_ROOT install

%if 0%{?fedora} >= 41
make -C package-managers PYTHON=%{__python3} DESTDIR=$RPM_BUILD_ROOT install install-dnf5
%else
make -C package-managers PYTHON=%{__python3} DESTDIR=$RPM_BUILD_ROOT install install-dnf
%endif
%if 0%{?rhel} == 7
make -C package-managers DESTDIR=$RPM_BUILD_ROOT install-yum
%endif
Expand Down Expand Up @@ -949,10 +957,14 @@ rm -f %{name}-%{version}
%config(noreplace) /etc/yum.conf.d/qubes-proxy.conf
%dir /etc/yum.repos.d
%config(noreplace) /etc/yum.repos.d/qubes-r4.repo
%if 0%{?fedora} >= 41
/etc/dnf/libdnf5-plugins/actions.d/qubes-post-update.actions
%else
%if 0%{?rhel} == 7
/etc/yum/pluginconf.d/yum-qubes-hooks.conf
/usr/lib/yum-plugins/yum-qubes-hooks.py*
%endif
%endif
%config(noreplace) /etc/dnf/plugins/qubes-hooks.conf
%dir /etc/dconf/db/local.d
%config(noreplace) /etc/dconf/db/local.d/dpi
Expand Down

0 comments on commit 070a571

Please sign in to comment.