From 6b513b43059b643ca22ec7482beb630bdcf71b25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Tue, 21 Jan 2025 18:31:19 +0100 Subject: [PATCH 1/6] archlinux: package tools for fetching dom0 updates Add qubes-vm-dom0-updates subpackage, similar to other distributions. --- archlinux/PKGBUILD.in | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/archlinux/PKGBUILD.in b/archlinux/PKGBUILD.in index f7fc1454..27719d62 100644 --- a/archlinux/PKGBUILD.in +++ b/archlinux/PKGBUILD.in @@ -1,6 +1,6 @@ # Maintainer: Frédéric Pierret (fepitre) -pkgname=(qubes-vm-core qubes-vm-networking qubes-vm-keyring qubes-vm-passwordless-root) +pkgname=(qubes-vm-core qubes-vm-networking qubes-vm-keyring qubes-vm-passwordless-root qubes-vm-dom0-updates) pkgver=@VERSION@ pkgrel=@REL@ pkgdesc="The Qubes core files for installation inside a Qubes VM." @@ -204,3 +204,29 @@ package_qubes-vm-passwordless-root() { USER_DROPIN_DIR=/usr/lib/systemd/user \ DIST=archlinux } + +package_qubes-vm-dom0-updates() { + pkgdesc="Qubes OS tools for fetching dom0 updates" + depends=( + qubes-vm-core + qubes-vm-networking + python + dnf + ) + + cd "${_pkgnvr}" + make -C package-managers install \ + DESTDIR="$pkgdir" \ + SBINDIR=/usr/bin \ + LIBDIR=/usr/lib \ + SYSLIBDIR=/usr/lib \ + SYSTEM_DROPIN_DIR=/usr/lib/systemd/system \ + USER_DROPIN_DIR=/usr/lib/systemd/user \ + DIST=archlinux + + # already included in the main package + rm -f "${pkgdir}/usr/lib/qubes/upgrades-installed-check" + rm -f "${pkgdir}/usr/lib/qubes/upgrades-status-notify" + # not relevant for dom0 updates + rm -f "${pkgdir}/usr/lib/environment.d/60-gnome-software-fix.conf" +} From f4db9ea5a2e7ba496e68ffa65a562606e5ab983f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 22 Jan 2025 03:07:17 +0100 Subject: [PATCH 2/6] archlinux: enable NetworkManager It needs to be enabled, to be able to enable/disable it with qvm-service. --- vm-systemd/75-qubes-vm.preset | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vm-systemd/75-qubes-vm.preset b/vm-systemd/75-qubes-vm.preset index 7573e2d2..394c97df 100644 --- a/vm-systemd/75-qubes-vm.preset +++ b/vm-systemd/75-qubes-vm.preset @@ -112,6 +112,8 @@ enable module-load-dummy-psu.service enable module-load-dummy-backlight.service enable qubes-psu-client@.service default sys-usb enable dev-xvdc1-swap.service +enable NetworkManager.service +enable NetworkManager-dispatcher.service # Disable useless Xen services in Qubes VM disable xenstored.service From e4ecb430ffa0667d0709a38a92222bfbcfa8a51e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 22 Jan 2025 13:30:29 +0100 Subject: [PATCH 3/6] dom0-update: apply --installroot etc for --help calls too When opening rpmdb fails, dnf --help doesn't print its message, so the check for various options fail. Add --installroot etc options when doing --help calls too. This applies at least to the DNF version in Archlinux. --- package-managers/qubes-download-dom0-updates.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-managers/qubes-download-dom0-updates.sh b/package-managers/qubes-download-dom0-updates.sh index 1004c471..1b4efaa1 100755 --- a/package-managers/qubes-download-dom0-updates.sh +++ b/package-managers/qubes-download-dom0-updates.sh @@ -71,8 +71,8 @@ fi if type dnf >/dev/null 2>&1; then UPDATE_CMD=dnf UPDATE_ARGUMENTS+=(--noplugins -y) - "$UPDATE_CMD" "$UPDATE_ACTION" --help | grep -q best && UPDATE_ARGUMENTS+=(--best) - "$UPDATE_CMD" "$UPDATE_ACTION" --help | grep -q allowerasing && UPDATE_ARGUMENTS+=(--allowerasing) + "$UPDATE_CMD" "${OPTS[@]}" "$UPDATE_ACTION" --help | grep -q best && UPDATE_ARGUMENTS+=(--best) + "$UPDATE_CMD" "${OPTS[@]}" "$UPDATE_ACTION" --help | grep -q allowerasing && UPDATE_ARGUMENTS+=(--allowerasing) if "$UPDATE_CMD" --version | grep -q dnf5 && [ "$CHECK_ONLY" = "1" ]; then UPDATE_ACTION=check-upgrade fi @@ -151,7 +151,7 @@ UPDATE_COMMAND=(fakeroot "$UPDATE_CMD" "$UPDATE_ACTION" "${UPDATE_ARGUMENTS[@]}" # search, info and similar actions if --downloadonly is specified. The below # condition is a smart way to check if --downloadonly option is applicable to # the action. -"$UPDATE_CMD" "$UPDATE_ACTION" --help | grep -q downloadonly && UPDATE_COMMAND+=(--downloadonly) +"$UPDATE_CMD" "${OPTS[@]}" "$UPDATE_ACTION" --help | grep -q downloadonly && UPDATE_COMMAND+=(--downloadonly) mkdir -p "$DOM0_UPDATES_DIR/packages" From 3139365003ca8c4c247572aaefa1b30543f1e94f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 23 Jan 2025 12:57:02 +0100 Subject: [PATCH 4/6] arch: fix creating marker-vm file It needs package version. --- archlinux/PKGBUILD.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archlinux/PKGBUILD.in b/archlinux/PKGBUILD.in index 27719d62..17ed0024 100644 --- a/archlinux/PKGBUILD.in +++ b/archlinux/PKGBUILD.in @@ -38,7 +38,7 @@ build() { sed 's:/usr/sbin/ntpdate:/usr/bin/ntpdate:g' -i qubes-rpc/sync-ntp-clock for dir in qubes-rpc misc; do - make -C "$dir" + make -C "$dir" VERSION=${pkgver} done } From dc19c1dc0e49741baeaeb55b4629ff4fe1c5776c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 26 Jan 2025 01:40:34 +0100 Subject: [PATCH 5/6] archlinux: include nm-applet in network dependencies --- archlinux/PKGBUILD.in | 1 + 1 file changed, 1 insertion(+) diff --git a/archlinux/PKGBUILD.in b/archlinux/PKGBUILD.in index 17ed0024..8e89b2f6 100644 --- a/archlinux/PKGBUILD.in +++ b/archlinux/PKGBUILD.in @@ -153,6 +153,7 @@ package_qubes-vm-networking() { python iproute2 networkmanager + network-manager-applet tinyproxy nftables conntrack-tools From 9f6ae0b8a8509b481c56e2e88a67774bcfc6546b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 26 Jan 2025 01:40:54 +0100 Subject: [PATCH 6/6] post-install: initialize version to empty value It isn't set for some distributions like Arch, don't let some external value sneak in. --- qubes-rpc/post-install.d/10-qubes-core-agent-features.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/qubes-rpc/post-install.d/10-qubes-core-agent-features.sh b/qubes-rpc/post-install.d/10-qubes-core-agent-features.sh index 510f11ad..17159926 100755 --- a/qubes-rpc/post-install.d/10-qubes-core-agent-features.sh +++ b/qubes-rpc/post-install.d/10-qubes-core-agent-features.sh @@ -49,6 +49,7 @@ qvm-features-request qubes-agent-version="$qubes_version" if [ -r /etc/os-release ]; then distro_like="" eol="" + version="" while IFS='=' read -r key val; do val="${val##[\"\']}" val="${val%%[\"\']}"