diff --git a/configs/felhom-os-apply b/configs/felhom-os-apply index 4a2582e..67cc400 100755 --- a/configs/felhom-os-apply +++ b/configs/felhom-os-apply @@ -97,9 +97,12 @@ OOMCHECK_SETTLE = 2 # so it belongs with them. Measured 2026-10-09 on demo-hp (Secure Boot on): left in the pve lane, its upgrade pulled # shim-signed-common, the whole pve step was refused R6, and the night's kernel step was skipped with it # (`audits/kernel-night-2026-10-08/`). Pinned by test_ring0_pending_pve_leaves_the_secure_boot_meta_out. +# proxmox-grub is GRUB's Proxmox meta-package (it depends on grub-efi-amd64 of the same version); the `grub` above is +# anchored at the start, so it missed it. Measured 2026-11-05..07 on demo-felhom: its upgrade pulled grub-efi-amd64 and +# the whole pve step was refused R6 every night. Pinned by test_ring0_pending_pve_leaves_proxmox_grub_out. HOST_SLOW_RE = re.compile(r"^(linux-(image|headers|kbuild|modules|base)|proxmox-kernel|proxmox-default-kernel|pve-kernel|" r"pve-firmware|firmware-|grub|shim|systemd-boot|intel-microcode|amd64-microcode|efibootmgr|" - r"proxmox-secure-boot-support)") + r"proxmox-secure-boot-support|proxmox-grub)") # restart_needed() leaves out processes whose cgroup line matches (grep basic regex). Host: the LXC guests' own # processes (`0::/lxc//...`) -- NOT lxc-start itself, whose cgroup is `0::/lxc.monitor/` (measured # 2026-10-04 on demo-felhom: the old pattern "lxc" hid lxc-start with 20 deleted maps, so "reboot needed" stayed false diff --git a/configs/test_felhom_os_apply.py b/configs/test_felhom_os_apply.py index df1aec1..b27de26 100644 --- a/configs/test_felhom_os_apply.py +++ b/configs/test_felhom_os_apply.py @@ -1494,6 +1494,24 @@ class PVELane(unittest.TestCase): self.assertEqual(sorted(u["name"] for u in rep["upgraded"]), ["pve-manager"]) self.assertEqual(f.installed["proxmox-secure-boot-support"], "9.0.1") + # 2026-11-05..07, demo-felhom (EFI): proxmox-grub 2.12-9+pmx2 -> pmx4 depends on grub-efi-amd64 of the same version; + # HOST_SLOW_RE's `grub` is anchored at the start, so proxmox-grub fell into the pve plan, the simulation pulled + # grub-efi-amd64 and the whole pve step was refused R6 every night. It is a boot-chain package: left out. + # RED-PROOF: drop proxmox-grub from HOST_SLOW_RE -> it is in the plan -> this test fails. + def test_ring0_pending_pve_leaves_proxmox_grub_out(self): + f = pve_fake(ring0=True) + f.plan["select"], f.plan["packages"] = "pending-pve", [] + f.installed.update({"proxmox-grub": "2.12-9+pmx2"}) + f.pending_sim = [ + "Inst pve-manager [9.2.2] (9.2.21 Proxmox Debian Repository:stable [amd64])", + "Inst proxmox-grub [2.12-9+pmx2] (2.12-9+pmx4 Proxmox Debian Repository:stable [amd64])", + "Inst grub-efi-amd64 [2.12-9+pmx2] (2.12-9+pmx4 Proxmox Debian Repository:stable [amd64])", + ] + rc, rep = run(f) + self.assertEqual(rc, 0, rep) + self.assertEqual(sorted(u["name"] for u in rep["upgraded"]), ["pve-manager"]) + self.assertEqual(f.installed["proxmox-grub"], "2.12-9+pmx2") + def test_select_pending_pve_needs_the_pve_layer(self): f = Fake() f.plan["layer"], f.plan["select"], f.plan["packages"] = "host", "pending-pve", []