context.parse_config_one(configdir, parse_profiles=True, parse_local=True)
config = context.finalize()
+ # Keep a copy around for passing to finalize_default_initrd() later.
+ maincontext = copy.deepcopy(context)
if config["history"] and want_new_history(args):
Path(".mkosi-private/history").mkdir(parents=True, exist_ok=True)
subimages = [Config.from_dict(ns) for ns in images]
if any(want_default_initrd(image) for image in subimages + [main]):
- initrd = finalize_default_initrd(context, config, resources=resources)
+ initrd = finalize_default_initrd(maincontext, config, resources=resources)
if want_default_initrd(main):
main = dataclasses.replace(
parse_config(["--image-id", "abcde", "--environment", "ABC=QED"])
parse_config(["--image-id", "abcde", "--environment", "DEF=QEE"])
+
+
+def test_initrd_packages(tmp_path: Path) -> None:
+ d = tmp_path
+
+ (d / "mkosi.conf").write_text(
+ """\
+ [Content]
+ InitrdPackages=package1
+ InitrdPackages=package2
+
+ [Content]
+ Bootable=yes
+ """
+ )
+
+ with chdir(d), resource_path(mkosi.resources) as resources:
+ _, _, [initrd, _] = parse_config(resources=resources)
+
+ assert "package1" in initrd.packages
+ assert "package2" in initrd.packages
+
+ # Make sure the InitrdPackages= are also picked up when a subimage is defined.
+ (d / "mkosi.images").mkdir()
+ (d / "mkosi.images/subimage.conf").touch()
+
+ with chdir(d), resource_path(mkosi.resources) as resources:
+ _, _, [_, initrd, _] = parse_config(resources=resources)
+
+ assert "package1" in initrd.packages
+ assert "package2" in initrd.packages