]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
qemu: Introduce finalize_drive()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sat, 16 Mar 2024 19:55:28 +0000 (20:55 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 17 Mar 2024 08:26:05 +0000 (09:26 +0100)
mkosi/qemu.py

index 020952d3cddd720024e28e9a9c5745682197d949..2da32a336bdd333ef90981aef0e9787dec0ecd2d 100644 (file)
@@ -28,6 +28,7 @@ from mkosi.config import (
     ConfigFeature,
     Network,
     OutputFormat,
+    QemuDrive,
     QemuFirmware,
     QemuVsockCID,
     format_bytes,
@@ -529,6 +530,13 @@ def apply_runtime_size(config: Config, image: Path) -> None:
     )
 
 
+@contextlib.contextmanager
+def finalize_drive(drive: QemuDrive) -> Iterator[Path]:
+    with tempfile.NamedTemporaryFile(dir=drive.directory or "/var/tmp", prefix=f"mkosi-drive-{drive.id}") as file:
+        file.truncate(drive.size)
+        yield Path(file.name)
+
+
 def run_qemu(args: Args, config: Config) -> None:
     if config.output_format not in (
         OutputFormat.disk,
@@ -850,12 +858,9 @@ def run_qemu(args: Args, config: Config) -> None:
             cmdline += ["-smbios", f"type=11,value=io.systemd.credential:vmm.notify_socket={addr}"]
 
         for drive in config.qemu_drives:
-            file = stack.enter_context(
-                tempfile.NamedTemporaryFile(dir=drive.directory or "/var/tmp", prefix=f"mkosi-drive-{drive.id}")
-            )
-            file.truncate(drive.size)
+            file = stack.enter_context(finalize_drive(drive))
 
-            arg = f"if=none,id={drive.id},file={file.name},format=raw"
+            arg = f"if=none,id={drive.id},file={file},format=raw"
             if drive.options:
                 arg += f",{drive.options}"