From 0976fd4b2eb0d57efe41fdb0dd8ad0aa7547073d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 2 Feb 2025 15:06:56 +0000 Subject: [PATCH] repo: Cleanup old metadata before writing new stuff Signed-off-by: Michael Tremer --- src/pakfire/repo.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/pakfire/repo.c b/src/pakfire/repo.c index 29a24dce..c65cc3bc 100644 --- a/src/pakfire/repo.c +++ b/src/pakfire/repo.c @@ -1967,6 +1967,23 @@ int pakfire_repo_refresh(struct pakfire_repo* repo, int force) { return 0; } +static int pakfire_repo_cleanup_metadata(struct pakfire_repo* self) { + char path[PATH_MAX]; + int r; + + // Make sure we are running only on local repositories + if (!pakfire_repo_is_local(self)) + return -ENOTSUP; + + // Make the path + r = pakfire_repo_path(self, path, "%s", "repodata"); + if (r < 0) + return r; + + // Remove it all + return pakfire_rmtree(path, 0); +} + static int pakfire_repo_metadata_add_file(struct pakfire_repo* self, struct json_object* repomd, const char* type, const char* path) { struct pakfire_digests digests = {}; @@ -2174,6 +2191,11 @@ int pakfire_repo_write_metadata(struct pakfire_repo* self, struct pakfire_key* k if (!pakfire_repo_is_local(self)) return -ENOTSUP; + // Cleanup any previous metadata + r = pakfire_repo_cleanup_metadata(self); + if (r < 0) + goto ERROR; + // Make path to repomd.json r = pakfire_repo_path(self, repomd_path, "%s", "repodata/repomd.json"); if (r < 0) -- 2.39.5