t.rmdir()
+def finalize_packages(config: Config) -> list[str]:
+ s = set(config.remove_packages)
+ return [p for p in config.packages if p not in s]
+
+
def install_distribution(context: Context) -> None:
+ packages = finalize_packages(context.config)
+
if context.config.base_trees:
- if not context.config.packages:
+ if not packages:
return
with complete_step(f"Installing extra packages for {context.config.distribution.pretty_name()}"):
- context.config.distribution.package_manager(context.config).install(
- context, context.config.packages
- )
+ context.config.distribution.package_manager(context.config).install(context, packages)
else:
if context.config.overlay or context.config.output_format.is_extension_image():
- if context.config.packages:
+ if packages:
die(
"Cannot install packages in extension images without a base tree",
hint="Configure a base tree with the BaseTrees= setting",
with umask(~0o600):
(context.root / "boot/loader/entries.srel").write_text("type1\n")
- if context.config.packages:
- context.config.distribution.package_manager(context.config).install(
- context, context.config.packages
- )
+ if packages:
+ context.config.distribution.package_manager(context.config).install(context, packages)
for f in (
"var/lib/systemd/random-seed",
),
"packages": sorted(self.packages),
"build_packages": sorted(self.build_packages),
+ "remove_packages": sorted(self.remove_packages),
"package_directories": [
(p.name, p.stat().st_mtime_ns)
for d in self.package_directories