nixos/systemd-boot: atomically update copied destination files (#444960)

Luj 85f5bb8e e020a554

Changed files
+5 -1
nixos
modules
system
boot
loader
+5 -1
nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
···
import shutil
import subprocess
import sys
+
import tempfile
import warnings
import json
from typing import NamedTuple, Any, Sequence
···
def copy_if_not_exists(source: Path, dest: Path) -> None:
if not dest.exists():
-
shutil.copyfile(source, dest)
+
tmpfd, tmppath = tempfile.mkstemp(dir=dest.parent, prefix=dest.name, suffix='.tmp.')
+
shutil.copyfile(source, tmppath)
+
os.fsync(tmpfd)
+
shutil.move(tmppath, dest)
def generation_dir(profile: str | None, generation: int) -> Path: