summaryrefslogtreecommitdiffstats
path: root/nixos/modules
diff options
context:
space:
mode:
authorLuke Granger-Brown <git@lukegb.com>2022-03-13 14:19:54 +0000
committerGitHub <noreply@github.com>2022-03-13 14:19:54 +0000
commit5f81753d1b46866177cb7afb24af702ec9dc8dd0 (patch)
tree00d29456afe23c0d2b67acf86557014db992e444 /nixos/modules
parent18670375d09cfa4ec4c1b9b44bcd4204947e4890 (diff)
parent529b09a729d06c3a18ce16526992d4e693257734 (diff)
Merge pull request #162252 from sternenseemann/systemd-boot-builder-fix-errors
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("/")