From 27facce1ccf74b80a442a601773d9e5e54fa083c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 18 May 2025 20:45:40 +0200 Subject: [PATCH 1/2] Restart qrexec-agent on update Agent restart is supported since 4.1.0 version, do restart it on update. This avoids compatibility issues when qrexec-client-vm version is newer than qrexec-agent itself. --- debian/rules | 3 --- rpm_spec/qubes-qrexec-vm.spec.in | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index d5979d9d..e58dc6d3 100755 --- a/debian/rules +++ b/debian/rules @@ -30,8 +30,5 @@ override_dh_auto_install: make install-base make install-vm -override_dh_systemd_start: - dh_systemd_start --no-restart-on-upgrade - override_dh_install: dh_install --fail-missing diff --git a/rpm_spec/qubes-qrexec-vm.spec.in b/rpm_spec/qubes-qrexec-vm.spec.in index 4e2e921a..f7af818b 100644 --- a/rpm_spec/qubes-qrexec-vm.spec.in +++ b/rpm_spec/qubes-qrexec-vm.spec.in @@ -97,6 +97,9 @@ rm -f %{name}-%{version} %preun %systemd_preun qubes-qrexec-agent.service +%postun +%systemd_postun_with_restart qubes-qrexec-agent.service + %pre selinux %selinux_relabel_pre From 39f349afeec601512cc30e3c4dc3470a8e39abe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sat, 24 May 2025 18:05:33 +0200 Subject: [PATCH 2/2] rpm: fix systemd unit installation Use %{_unitdir} macro as installation target. This in practice changes /lib/systemd/system to /usr/lib/systemd/system. While there is /lib -> /usr/lib symlink, not everything is equal - for example RPM file triggers distinguish those two. Not using /usr/lib/systemd/system prevended systemd service restart trigger from working (the %postun trigger only marks the service for restart, it's actually restarted by the post-trans file trigger of systemd package). --- Makefile | 9 +++++---- rpm_spec/qubes-qrexec-dom0.spec.in | 2 +- rpm_spec/qubes-qrexec-vm.spec.in | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 3b527648..811597cd 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ PYTHON ?= python3 export PYTHON CC MAKEFLAGS CFLAGS SYSLIBDIR ?= /lib +UNITDIR ?= $(SYSLIBDIR)/systemd/system help: : @@ -66,8 +67,8 @@ install-dom0: all-dom0 install -t $(DESTDIR)/etc/qubes/policy.d -m 664 policy.d/README install -d $(DESTDIR)/etc/qubes/policy.d/include -m 775 install -t $(DESTDIR)/etc/qubes/policy.d/include -m 664 policy.d/include/* - install -d $(DESTDIR)/lib/systemd/system -m 755 - install -t $(DESTDIR)/lib/systemd/system -m 644 systemd/qubes-qrexec-policy-daemon.service + install -d $(DESTDIR)$(UNITDIR) -m 755 + install -t $(DESTDIR)$(UNITDIR) -m 644 systemd/qubes-qrexec-policy-daemon.service install -m 755 -d $(DESTDIR)/usr/lib/tmpfiles.d/ install -m 0644 -t $(DESTDIR)/usr/lib/tmpfiles.d/ systemd/qrexec.conf .PHONY: install-dom0 @@ -81,8 +82,8 @@ all-vm-selinux: install-vm: all-vm +$(MAKE) install -C agent - install -d $(DESTDIR)/$(SYSLIBDIR)/systemd/system -m 755 - install -t $(DESTDIR)/$(SYSLIBDIR)/systemd/system -m 644 systemd/qubes-qrexec-agent.service + install -d $(DESTDIR)$(UNITDIR) -m 755 + install -t $(DESTDIR)$(UNITDIR) -m 644 systemd/qubes-qrexec-agent.service install -m 0644 -D qubes-rpc-config/README $(DESTDIR)/etc/qubes/rpc-config/README install-vm-selinux: install -m 0644 -D -t $(DESTDIR)/usr/share/selinux/packages selinux/qubes-core-qrexec.pp diff --git a/rpm_spec/qubes-qrexec-dom0.spec.in b/rpm_spec/qubes-qrexec-dom0.spec.in index 27aae1d5..828a6657 100644 --- a/rpm_spec/qubes-qrexec-dom0.spec.in +++ b/rpm_spec/qubes-qrexec-dom0.spec.in @@ -123,7 +123,7 @@ rm -f %{name}-%{version} %{_sysconfdir}/qubes-rpc/policy.include.Remove %{_tmpfilesdir}/qrexec.conf -/lib/systemd/system/qubes-qrexec-policy-daemon.service +%{_unitdir}/qubes-qrexec-policy-daemon.service %changelog @CHANGELOG@ diff --git a/rpm_spec/qubes-qrexec-vm.spec.in b/rpm_spec/qubes-qrexec-vm.spec.in index f7af818b..36c04ebb 100644 --- a/rpm_spec/qubes-qrexec-vm.spec.in +++ b/rpm_spec/qubes-qrexec-vm.spec.in @@ -140,7 +140,7 @@ fi /usr/lib/qubes/qrexec-agent /usr/lib/qubes/qrexec-client-vm /usr/lib/qubes/qrexec_client_vm -/lib/systemd/system/qubes-qrexec-agent.service +%{_unitdir}/qubes-qrexec-agent.service %files selinux %{_datadir}/selinux/devel/include/contrib/ipp-qubes-core-qrexec.if