From 6ed07bc4187e2a45144f4c660ffe32477d6d38ee Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 31 Oct 2022 16:23:40 +0000 Subject: [PATCH] build: Read all built packages into a package list Signed-off-by: Michael Tremer --- src/libpakfire/build.c | 36 ++++++++++++++++++++++++++++-------- src/libpakfire/packager.c | 7 ------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 35045f1cb..ae4f5c882 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -74,6 +74,9 @@ struct pakfire_build { // The build repository struct pakfire_repo* repo; + // A list of all built packages + struct pakfire_packagelist* packages; + // Buildroot char buildroot[PATH_MAX]; @@ -545,14 +548,6 @@ static int pakfire_build_package(struct pakfire_build* build, struct pakfire_par goto ERROR; } -#ifdef ENABLE_DEBUG - char* dump = pakfire_package_dump(pkg, PAKFIRE_PKG_DUMP_LONG); - if (dump) { - DEBUG(build->pakfire, "%s\n", dump); - free(dump); - } -#endif - // Cleanup all packaged files r = pakfire_packager_cleanup(packager); if (r) @@ -572,6 +567,18 @@ ERROR: return r; } +static int pakfire_build_package_dump(struct pakfire* pakfire, + struct pakfire_package* pkg, void* p) { + char* dump = pakfire_package_dump(pkg, PAKFIRE_PKG_DUMP_LONG); + if (!dump) + return 1; + + INFO(pakfire, "%s\n", dump); + free(dump); + + return 0; +} + static int pakfire_build_packages(struct pakfire_build* build, struct pakfire_parser* makefile) { DEBUG(build->pakfire, "Creating packages..."); @@ -606,6 +613,16 @@ static int pakfire_build_packages(struct pakfire_build* build, if (r) goto ERROR; + // Fetch all packages + r = pakfire_repo_create_packagelist(build->repo, &build->packages); + if (r) + goto ERROR; + + // Dump them all + r = pakfire_packagelist_walk(build->packages, pakfire_build_package_dump, NULL); + if (r) + goto ERROR; + // Success r = 0; @@ -700,6 +717,9 @@ static int pakfire_build_run_post_build_scripts(struct pakfire_build* build) { } static void pakfire_build_free(struct pakfire_build* build) { + if (build->packages) + pakfire_packagelist_unref(build->packages); + if (build->repo) { pakfire_repo_clean(build->repo, PAKFIRE_REPO_CLEAN_FLAGS_DESTROY); pakfire_repo_unref(build->repo); diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index 8e3a8faeb..f2161be69 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -405,13 +405,6 @@ int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { if (r) goto ERROR; - // Dump package metadata - char* dump = pakfire_package_dump(packager->pkg, PAKFIRE_PKG_DUMP_LONG); - if (dump) { - INFO(packager->pakfire, "%s\n", dump); - free(dump); - } - // Open a new archive a = archive_write_new(); if (!a) { -- 2.39.5