summaryrefslogtreecommitdiffstats
path: root/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@thalheim.io>2023-08-26 18:31:52 +0200
committerJörg Thalheim <Mic92@users.noreply.github.com>2023-10-10 14:49:51 +0200
commitf4bf9702be41b129e6eaf692c18a273997540085 (patch)
tree97933d4b76017af8892a0260f4725699955341d1 /nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
parentdbac7467ad7cde84e2679d8c4baf987cb7a93887 (diff)
systemd-boot-builder: always do syncfs, even after a failure
Diffstat (limited to 'nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py')
-rwxr-xr-xnixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py29
1 files changed, 17 insertions, 12 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 88f873723565..4a31495dc9c4 100755
--- a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
+++ b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
@@ -218,11 +218,7 @@ def get_profiles() -> List[str]:
else:
return []
-def main() -> None:
- parser = argparse.ArgumentParser(description='Update @distroName@-related systemd-boot files')
- parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help='The default @distroName@ config to boot')
- args = parser.parse_args()
-
+def install_bootloader(args: argparse.Namespace) -> None:
try:
with open("/etc/machine-id") as machine_file:
machine_id = machine_file.readlines()[0]
@@ -328,13 +324,22 @@ def main() -> None:
subprocess.check_call("@copyExtraFiles@")
- # Since fat32 provides little recovery facilities after a crash,
- # it can leave the system in an unbootable state, when a crash/outage
- # happens shortly after an update. To decrease the likelihood of this
- # event sync the efi filesystem after each update.
- rc = libc.syncfs(os.open("@efiSysMountPoint@", os.O_RDONLY))
- if rc != 0:
- print("could not sync @efiSysMountPoint@: {}".format(os.strerror(rc)), file=sys.stderr)
+
+def main() -> None:
+ parser = argparse.ArgumentParser(description='Update @distroName@-related systemd-boot files')
+ parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help='The default @distroName@ config to boot')
+ args = parser.parse_args()
+
+ try:
+ install_bootloader(args)
+ finally:
+ # Since fat32 provides little recovery facilities after a crash,
+ # it can leave the system in an unbootable state, when a crash/outage
+ # happens shortly after an update. To decrease the likelihood of this
+ # event sync the efi filesystem after each update.
+ rc = libc.syncfs(os.open("@efiSysMountPoint@", os.O_RDONLY))
+ if rc != 0:
+ print("could not sync @efiSysMountPoint@: {}".format(os.strerror(rc)), file=sys.stderr)
if __name__ == '__main__':