From 1f94afd66ae8834dcd161346684293d7e6901dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 28 May 2025 03:15:58 +0200 Subject: [PATCH] tests: add grub tests for archlinux too Test for https://github.com/QubesOS/qubes-linux-utils/pull/124 Exclude pvgrub2 test, as Arch is also using zstd. --- qubes/tests/integ/grub.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/qubes/tests/integ/grub.py b/qubes/tests/integ/grub.py index 7f5be8779..7702bf4f4 100644 --- a/qubes/tests/integ/grub.py +++ b/qubes/tests/integ/grub.py @@ -41,6 +41,8 @@ def setUp(self): supported = True elif self.template.startswith("debian-"): supported = True + elif self.template.startswith("archlinux"): + supported = True if not supported: self.skipTest( "Template {} not supported by this test".format(self.template) @@ -76,6 +78,12 @@ def install_packages(self, vm): cmd_install1 += " dracut" cmd_install2 += " && dracut -f" cmd_update_grub = "mkdir -p /boot/grub && update-grub2" + elif self.template.startswith("archlinux"): + cmd_install1 = ( + "pacman -S --noconfirm linux grub && grub-install /dev/xvda" + ) + cmd_install2 = "pacman -S --noconfirm qubes-vm-kernel-support" + cmd_update_grub = "grub-mkconfig -o /boot/grub/grub.cfg" else: assert False, "Unsupported template?!" @@ -102,6 +110,11 @@ def get_kernel_version(self, vm): "dpkg-query --showformat='${Package}\\n' --show " "'linux-image-*-amd64'|sort -V|tail -1|cut -d - -f 3-" ) + elif self.template.startswith("archlinux"): + cmd_get_kernel_version = ( + "pacman -Q linux|sort -V|tail -1|cut -d ' ' -f 2" + "|sed 's/\.arch/-arch/'" + ) else: raise RuntimeError("Unsupported template?!") @@ -226,6 +239,13 @@ def setUp(self): "Fedora kernel is compressed with zstd " "which is not supported by pvgrub2" ) + if "archlinux" in self.template: + # requires a zstd decompression filter in grub + # (see grub_file_filter_id enum in grub sources) + self.skipTest( + "Archlinux kernel is compressed with zstd " + "which is not supported by pvgrub2" + ) super().setUp()