From: Daan De Meyer Date: Thu, 13 Mar 2025 20:05:42 +0000 (+0100) Subject: Use Path more in initrd.py and addon.py X-Git-Tag: v26~320 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb7290293d447701aaf1f0ba8f9acd66573b6f44;p=thirdparty%2Fmkosi.git Use Path more in initrd.py and addon.py --- diff --git a/mkosi/addon.py b/mkosi/addon.py index 9c188e236..1c1a8ed97 100644 --- a/mkosi/addon.py +++ b/mkosi/addon.py @@ -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__": diff --git a/mkosi/initrd.py b/mkosi/initrd.py index 3814ef1f0..782ffeda0 100644 --- a/mkosi/initrd.py +++ b/mkosi/initrd.py @@ -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__":