summaryrefslogtreecommitdiffstats
path: root/nixos/modules
diff options
context:
space:
mode:
authorMaƫlys Bras de fer <mae.bdf@outlook.com>2022-01-23 22:42:54 +0100
committersternenseemann <sternenseemann@systemli.org>2022-03-13 14:38:01 +0100
commit529b09a729d06c3a18ce16526992d4e693257734 (patch)
treed87078a754361c896be1f58131eb99b3cad84cf8 /nixos/modules
parent10c0ea6970ab1aa904289256844989548b0d46f7 (diff)
sdboot-builder: fix crash in exception handling
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py21
1 files changed, 16 insertions, 5 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 adc893063098..fa879437fd81 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
@@ -15,9 +15,12 @@ import re
import datetime
import glob
import os.path
-from typing import Tuple, List, Optional
+from typing import NamedTuple, List, Optional
-SystemIdentifier = Tuple[Optional[str], int, Optional[str]]
+class SystemIdentifier(NamedTuple):
+ profile: Optional[str]
+ generation: int
+ specialisation: Optional[str]
def copy_if_not_exists(source: str, dest: str) -> None:
@@ -151,7 +154,14 @@ def get_generations(profile: Optional[str] = None) -> List[SystemIdentifier]:
gen_lines.pop()
configurationLimit = @configurationLimit@
- configurations: List[SystemIdentifier] = [ (profile, int(line.split()[0]), None) for line in gen_lines ]
+ configurations = [
+ SystemIdentifier(
+ profile=profile,
+ generation=int(line.split()[0]),
+ specialisation=None
+ )
+ for line in gen_lines
+ ]
return configurations[-configurationLimit:]
@@ -160,7 +170,7 @@ def get_specialisations(profile: Optional[str], generation: int, _: Optional[str
system_dir(profile, generation, None), "specialisation")
if not os.path.exists(specialisations_dir):
return []
- return [(profile, generation, spec) for spec in os.listdir(specialisations_dir)]
+ return [SystemIdentifier(profile, generation, spec) for spec in os.listdir(specialisations_dir)]
def remove_old_entries(gens: List[SystemIdentifier]) -> None:
@@ -271,7 +281,8 @@ def main() -> None:
if os.readlink(system_dir(*gen)) == args.default_config:
write_loader_conf(*gen)
except OSError as e:
- print("ignoring generation '{}' in the list of boot entries because of the following error:\n{}".format(*gen, e), file=sys.stderr)
+ profile = f"profile '{gen.profile}'" if gen.profile else "default profile"
+ print("ignoring {} in the list of boot entries because of the following error:\n{}".format(profile, e), file=sys.stderr)
for root, _, files in os.walk('@efiSysMountPoint@/efi/nixos/.extra-files', topdown=False):
relative_root = root.removeprefix("@efiSysMountPoint@/efi/nixos/.extra-files").removeprefix("/")