From 05c8fafc3245ebd0e34ebd6004ae952edb45c997 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Tue, 7 Sep 2021 23:35:24 +0100 Subject: [PATCH] mkosi: implement metadata cleanup for apt and dpkg --- mkosi/__init__.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 602fe9973..04d60d6fa 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -1753,6 +1753,41 @@ def clean_tdnf_metadata(root: Path, always: bool) -> None: unlink_try_hard(path) +def clean_apt_metadata(root: Path, always: bool) -> None: + """Remove apt metadata if /usr/bin/apt is not present in the image""" + paths = [ + root / "var/lib/apt", + root / "var/log/apt", + root / "var/cache/apt", + ] + + cond = always or not os.access(root / "usr/bin/apt", os.F_OK, follow_symlinks=False) + + if not cond or not any(path.exists() for path in paths): + return + + with complete_step("Cleaning apt metadata…"): + for path in paths: + unlink_try_hard(path) + + +def clean_dpkg_metadata(root: Path, always: bool) -> None: + """Remove dpkg metadata if /usr/bin/dpkg is not present in the image""" + paths = [ + root / "var/lib/dpkg", + root / "var/log/dpkg.log", + ] + + cond = always or not os.access(root / "usr/bin/dpkg", os.F_OK, follow_symlinks=False) + + if not cond or not any(path.exists() for path in paths): + return + + with complete_step("Cleaning dpkg metadata…"): + for path in paths: + unlink_try_hard(path) + + def clean_package_manager_metadata(args: CommandLineArguments, root: Path) -> None: """Remove package manager metadata @@ -1770,6 +1805,8 @@ def clean_package_manager_metadata(args: CommandLineArguments, root: Path) -> No clean_yum_metadata(root, always=args.clean_package_metadata is True) clean_rpm_metadata(root, always=args.clean_package_metadata is True) clean_tdnf_metadata(root, always=args.clean_package_metadata is True) + clean_apt_metadata(root, always=args.clean_package_metadata is True) + clean_dpkg_metadata(root, always=args.clean_package_metadata is True) # FIXME: implement cleanup for other package managers -- 2.47.2