From: Michael Tremer Date: Wed, 24 Mar 2021 11:38:16 +0000 (+0000) Subject: repo: Drop all content before loading from database X-Git-Tag: 0.9.28~1285^2~476 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fe22178701b128d331e6e2adc277d7c257888d2;p=pakfire.git repo: Drop all content before loading from database Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/db.c b/src/libpakfire/db.c index a163c4c8f..0b27c6b2f 100644 --- a/src/libpakfire/db.c +++ b/src/libpakfire/db.c @@ -1571,6 +1571,9 @@ int pakfire_db_load(struct pakfire_db* db, PakfireRepo repo) { DEBUG(db->pakfire, "Loading package database...\n"); + // Drop contents of the repository + pakfire_repo_clear(repo); + // Save starting time clock_t t_start = clock(); clock_t t_end; diff --git a/src/libpakfire/include/pakfire/repo.h b/src/libpakfire/include/pakfire/repo.h index 0297b1ec2..8e511b7bb 100644 --- a/src/libpakfire/include/pakfire/repo.h +++ b/src/libpakfire/include/pakfire/repo.h @@ -33,6 +33,8 @@ PakfireRepo pakfire_repo_ref(PakfireRepo repo); PakfireRepo pakfire_repo_unref(PakfireRepo repo); Pakfire pakfire_repo_get_pakfire(PakfireRepo repo); +int pakfire_repo_clear(PakfireRepo repo); + int pakfire_repo_identical(PakfireRepo repo1, PakfireRepo repo2); int pakfire_repo_cmp(PakfireRepo repo1, PakfireRepo repo2); int pakfire_repo_count(PakfireRepo repo); diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 7fbc47ec6..7bb4dd3c9 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -80,20 +80,6 @@ Id pakfire_repo_add_solvable(PakfireRepo repo) { return repo_add_solvable(repo->repo); } -static int pakfire_repo_clear(PakfireRepo repo) { - repo_empty(repo->repo, 0); - - // Allocate repodata - repo->appdata->repodata = repo_add_repodata(repo->repo, - REPO_EXTEND_SOLVABLES|REPO_LOCALPOOL|REPO_NO_INTERNALIZE|REPO_NO_LOCATION); - if (!repo->appdata->repodata) { - ERROR(repo->pakfire, "Could not allocate repodata\n"); - return 1; - } - - return 0; -} - static struct pakfire_downloader* pakfire_repo_downloader(PakfireRepo repo) { if (!repo->downloader) { int r = pakfire_downloader_create(&repo->downloader, repo->pakfire); @@ -437,6 +423,20 @@ PAKFIRE_EXPORT Pakfire pakfire_repo_get_pakfire(PakfireRepo repo) { return pakfire_ref(repo->pakfire); } +int pakfire_repo_clear(PakfireRepo repo) { + repo_empty(repo->repo, 0); + + // Allocate repodata + repo->appdata->repodata = repo_add_repodata(repo->repo, + REPO_EXTEND_SOLVABLES|REPO_LOCALPOOL|REPO_NO_INTERNALIZE|REPO_NO_LOCATION); + if (!repo->appdata->repodata) { + ERROR(repo->pakfire, "Could not allocate repodata\n"); + return 1; + } + + return 0; +} + Repo* pakfire_repo_get_repo(PakfireRepo repo) { return repo->repo; }