From 71ed9d096ea5511cbd59ba5e01894dc68ab9337f Mon Sep 17 00:00:00 2001 From: Josh Robson Chase Date: Fri, 1 Oct 2021 09:05:39 -0400 Subject: [PATCH] nixos/systemd-boot: Remove the installed version check altogether bootctl does it as a part of its update process anyway, so we're just duplicating code. --- .../systemd-boot/systemd-boot-builder.py | 20 +++++++------------ nixos/tests/systemd-boot.nix | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py index 27b2abc1eabc..588016fe5269 100644 --- a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py +++ b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py @@ -214,19 +214,13 @@ def main() -> None: subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "--no-variables", "install"]) else: # Update bootloader to latest if needed - systemd_version = subprocess.check_output(["@systemd@/bin/bootctl", "--version"], universal_newlines=True).split()[1] - sdboot_status = subprocess.check_output(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "status"], universal_newlines=True) - - # See status_binaries() in systemd bootctl.c for code which generates this - m = re.search("^\W+File:.*/EFI/(BOOT|systemd)/.*\.efi \(systemd-boot ([\d.]+)[^)]*\)$", - sdboot_status, re.IGNORECASE | re.MULTILINE) - if m is None: - print("could not find any previously installed systemd-boot") - else: - sdboot_version = m.group(2) - if systemd_version > sdboot_version: - print("updating systemd-boot from %s to %s" % (sdboot_version, systemd_version)) - subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "update"]) + update_output = subprocess.run(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "update", "--graceful"], + universal_newlines=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr + updated = re.search("^Copied \"/nix/store/.*-systemd-(.*)/lib/systemd/boot/efi/.*\.efi\" to \"/boot/EFI/.*\.efi\"\.$", + update_output, re.MULTILINE) + if updated: + systemd_version = updated.group(1) + print(f"updated systemd-boot to {systemd_version}") mkdir_p("@efiSysMountPoint@/efi/nixos") mkdir_p("@efiSysMountPoint@/loader/entries") diff --git a/nixos/tests/systemd-boot.nix b/nixos/tests/systemd-boot.nix index efcbf71c597b..afce53546f29 100644 --- a/nixos/tests/systemd-boot.nix +++ b/nixos/tests/systemd-boot.nix @@ -84,7 +84,7 @@ in ) output = machine.succeed("/run/current-system/bin/switch-to-configuration boot") - assert "updating systemd-boot from 000.0 to " in output + assert "updated systemd-boot to " in output ''; }; }