format_bytes,
parse_boolean,
parse_config,
+ resolve_deps,
summary,
systemd_tool_version,
want_selinux_relabel,
images[i] = config = run_configure_scripts(config)
# The images array has been modified so we need to reevaluate last again.
+ # Also ensure that all other images are reordered in case their dependencies were modified.
last = images[-1]
+ images = resolve_deps(images[:-1], last.dependencies) + [last]
if not (last.output_dir_or_cwd() / last.output).exists() or last.output_format == OutputFormat.none:
for config in images:
return parser
-def resolve_deps(images: Sequence[argparse.Namespace], include: Sequence[str]) -> list[argparse.Namespace]:
+def resolve_deps(images: Sequence[Config], include: Sequence[str]) -> list[Config]:
graph = {config.image: config.dependencies for config in images}
if any((missing := i) not in graph for i in include):
if dependencies is not None:
setattr(config, "dependencies", dependencies)
- images = resolve_deps(images, config.dependencies)
+ main = load_config(config)
- return args, tuple([load_config(ns) for ns in images] + [load_config(config)])
+ subimages = [load_config(ns) for ns in images]
+ subimages = resolve_deps(subimages, main.dependencies)
+
+ return args, tuple(subimages + [main])
def finalize_term() -> str: