From 88f4e4f4e3ca29de4e022d8de1c31060f04a09a3 Mon Sep 17 00:00:00 2001 From: Lindley Vieira Date: Fri, 18 Oct 2024 12:05:34 -0300 Subject: [PATCH] Enhance package deletion If a corrupted Debian package is uploaded, apt-ostree fails to remove it. This commit enhances the package deletion by removing the component folders where the package resides. Test-plan: PASS: Remove a package using "apt-ostree repo remove \ --feed <> --release bullseye --component <>" Story: 2010676 Task: 51229 Change-Id: I37bb8ee125ef885b0c4ebf73a05e57c9a83ea50b Signed-off-by: Lindley Vieira --- apt_ostree/repo.py | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/apt_ostree/repo.py b/apt_ostree/repo.py index 5d43c4b..aa67cc4 100644 --- a/apt_ostree/repo.py +++ b/apt_ostree/repo.py @@ -146,9 +146,41 @@ class Repo: config = self.repo.joinpath("conf/distributions") if utils.remove_component_from_config(config, component): - utils.run_command( - ["reprepro", "-b", str(self.repo), "clearvanished"], - check=True) + dist_component = self.repo.joinpath( + f"dists/bullseye/{component}") + pool_component = self.repo.joinpath(f"pool/{component}") + + try: + utils.run_command( + ["rm", "-r", str(dist_component)], + check=True) + except Exception: + self.logging.info(f"Could not remove {dist_component}," + " skipping anyway\n") + try: + utils.run_command( + ["rm", "-r", str(pool_component)], + check=True) + except Exception: + self.logging.info(f"Could not remove {pool_component}," + " skipping anyway\n") + try: + utils.run_command( + ["reprepro", "-b", str(self.repo), + "--delete", "clearvanished"], + check=True) + except Exception: + self.logging.info("Could not run reprepro clearvanished," + " skipping anyway\n") + try: + utils.run_command( + ["reprepro", "-b", str(self.repo), + "deleteunreferenced"], + check=True) + except Exception: + self.logging.info("Could not run reprepro " + "deleteunreferenced, skipping anyway\n") + self.logging.info(f"Removed component {component}\n") else: self.logging.error(f"Failed to remove component {component}\n")