From: Daan De Meyer Date: Tue, 12 Dec 2023 12:29:28 +0000 (+0100) Subject: Add InitrdInclude= option X-Git-Tag: v20~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d6d3d043f3fcc0b677613b7651846c47e5ecf224;p=thirdparty%2Fmkosi.git Add InitrdInclude= option Same as Include=, but for the default initrd. This is a more generic version of InitrdPackages=. --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 83f7818dc..dbabef7f1 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -1327,7 +1327,12 @@ def build_initrd(state: MkosiState) -> Path: ] with resource_path(mkosi.resources) as r: - args, [config] = parse_config(cmdline + ["--include", os.fspath(r / "mkosi-initrd"), "build"]) + cmdline += ["--include", os.fspath(r / "mkosi-initrd")] + + for include in state.config.initrd_include: + cmdline += ["--include", os.fspath(include)] + + args, [config] = parse_config(cmdline + ["build"]) config = dataclasses.replace(config, image="default-initrd") assert config.output_dir diff --git a/mkosi/config.py b/mkosi/config.py index 77127d90f..cbbb07b3e 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -882,7 +882,8 @@ class MkosiConfig: """ profile: Optional[str] - include: tuple[str, ...] + include: list[Path] + initrd_include: list[Path] images: tuple[str, ...] dependencies: tuple[str, ...] minimum_version: Optional[GenericVersion] @@ -1238,6 +1239,12 @@ SETTINGS = ( parse=config_make_list_parser(delimiter=",", reset=False, parse=make_path_parser()), help="Include configuration from the specified file or directory", ), + MkosiConfigSetting( + dest="initrd_include", + section="Config", + parse=config_make_list_parser(delimiter=",", reset=False, parse=make_path_parser()), + help="Include configuration from the specified file or directory when building the initrd", + ), MkosiConfigSetting( dest="profile", section="Config", @@ -2985,6 +2992,7 @@ def summary(config: MkosiConfig) -> str: {bold("CONFIG")}: Profile: {none_to_none(config.profile)} Include: {line_join_list(config.include)} + Initrd Include: {line_join_list(config.initrd_include)} Images: {line_join_list(config.images)} Dependencies: {line_join_list(config.dependencies)} Minimum Version: {none_to_none(config.minimum_version)} diff --git a/mkosi/resources/mkosi.md b/mkosi/resources/mkosi.md index 884a57155..3da290e2f 100644 --- a/mkosi/resources/mkosi.md +++ b/mkosi/resources/mkosi.md @@ -446,6 +446,11 @@ boolean argument: either `1`, `yes`, or `true` to enable, or `0`, `no`, : Note that each path containing extra configuration is only parsed once, even if included more than once with `Include=`. +`InitrdInclude=`, `--initrd-include=` + +: Same as `Include=`, but the extra configuration files or directories + are included when building the default initrd. + `Images=`, `--image=` : If specified, only build the given image. Can be specified multiple diff --git a/tests/test_json.py b/tests/test_json.py index 730695e5a..8e30eb1a1 100644 --- a/tests/test_json.py +++ b/tests/test_json.py @@ -132,6 +132,9 @@ def test_config() -> None: ], "Include": [], "Incremental": false, + "InitrdInclude": [ + "/foo/bar" + ], "InitrdPackages": [ "clevis" ], @@ -313,8 +316,9 @@ def test_config() -> None: image_id = "myimage", image_version = "5", images = ("default", "initrd"), - include = tuple(), + include = [], incremental = False, + initrd_include = [Path("/foo/bar"),], initrd_packages = ["clevis"], initrds = [Path("/efi/initrd1"), Path("/efi/initrd2")], kernel_command_line = [],