]
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__":
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
)
]
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")
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,
)
"--output-dir",
metavar="DIR",
help="Output directory",
- default="",
+ default=None,
+ type=Path,
)
parser.add_argument(
"--debug",
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()]
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__":