]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Use Path more in initrd.py and addon.py
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 13 Mar 2025 20:05:42 +0000 (21:05 +0100)
committerJörg Behrmann <behrmann@physik.fu-berlin.de>
Fri, 14 Mar 2025 08:57:37 +0000 (09:57 +0100)
mkosi/addon.py
mkosi/initrd.py

index 9c188e236dc5c2c4cde70f3a1acf4ed88e23fe46..1c1a8ed97d11665dff6db6533e8bffdd663dbef6 100644 (file)
@@ -71,14 +71,14 @@ def main() -> None:
             ]
 
         cmdline += include_system_config("mkosi-addon")
-        cmdline += process_crypttab(staging_dir)
+        cmdline += process_crypttab(Path(staging_dir))
 
         if Path("/etc/kernel/cmdline").exists():
             cmdline += ["--kernel-command-line", Path("/etc/kernel/cmdline").read_text()]
 
         run(cmdline, stdin=sys.stdin, stdout=sys.stdout)
 
-        initrd_finalize(staging_dir, args.output, args.output_dir)
+        initrd_finalize(Path(staging_dir), args.output, args.output_dir)
 
 
 if __name__ == "__main__":
index 3814ef1f011e54738645cca73ae37b6f5b6c906f..782ffeda0ef0f3933ef7802174acb4357da8b88f 100644 (file)
@@ -144,7 +144,7 @@ def create_parser() -> argparse.ArgumentParser:
     return parser
 
 
-def process_crypttab(staging_dir: str) -> list[str]:
+def process_crypttab(staging_dir: Path) -> list[str]:
     cmdline = []
 
     # Generate crypttab with all the x-initrd.attach entries
@@ -160,10 +160,10 @@ def process_crypttab(staging_dir: str) -> list[str]:
                 )
             ]
             if crypttab:
-                with (Path(staging_dir) / "crypttab").open("w") as f:
+                with (staging_dir / "crypttab").open("w") as f:
                     f.write("# Automatically generated by mkosi-initrd\n")
                     f.write("\n".join(crypttab))
-                cmdline += ["--extra-tree", f"{staging_dir}/crypttab:/etc/crypttab"]
+                cmdline += ["--extra-tree", f"{staging_dir / 'crypttab'}:/etc/crypttab"]
         except PermissionError:
             logging.warning("Permission denied to access /etc/crypttab, the initrd may be unbootable")
 
@@ -180,18 +180,18 @@ def add_raid_config() -> list[str]:
     return cmdline
 
 
-def initrd_finalize(staging_dir: str, output: str, output_dir: str) -> None:
+def initrd_finalize(staging_dir: Path, output: str, output_dir: Optional[Path]) -> None:
     if output_dir:
         with umask(~0o700) if os.getuid() == 0 else cast(umask, contextlib.nullcontext()):
             Path(output_dir).mkdir(parents=True, exist_ok=True)
     else:
-        output_dir = os.fspath(Path.cwd())
+        output_dir = Path.cwd()
 
-    log_notice(f"Copying {staging_dir}/{output} to {output_dir}/{output}")
+    log_notice(f"Copying {staging_dir / output} to {output_dir / output}")
     # mkosi symlinks the expected output image, so dereference it
     copy_tree(
-        Path(f"{staging_dir}/{output}").resolve(),
-        Path(f"{output_dir}/{output}"),
+        (staging_dir / output).resolve(),
+        output_dir / output,
     )
 
 
@@ -208,7 +208,8 @@ def initrd_common_args(parser: argparse.ArgumentParser) -> None:
         "--output-dir",
         metavar="DIR",
         help="Output directory",
-        default="",
+        default=None,
+        type=Path,
     )
     parser.add_argument(
         "--debug",
@@ -349,7 +350,7 @@ def main() -> None:
 
         cmdline += [f"--sandbox-tree={sandbox_tree}"]
 
-        cmdline += process_crypttab(staging_dir)
+        cmdline += process_crypttab(Path(staging_dir))
 
         if Path("/etc/kernel/cmdline").exists():
             cmdline += ["--kernel-command-line", Path("/etc/kernel/cmdline").read_text()]
@@ -364,7 +365,7 @@ def main() -> None:
             env=os.environ | ({"MKOSI_DNF": dnf.resolve().name} if (dnf := find_binary("dnf")) else {}),
         )
 
-        initrd_finalize(staging_dir, args.output, args.output_dir)
+        initrd_finalize(Path(staging_dir), args.output, args.output_dir)
 
 
 if __name__ == "__main__":