]> git.ipfire.org Git - pakfire.git/commitdiff
build: Read all built packages into a package list
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 31 Oct 2022 16:23:40 +0000 (16:23 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 31 Oct 2022 16:23:40 +0000 (16:23 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/packager.c

index 35045f1cb297ec3e6abd8a920a07c21a23453820..ae4f5c882b2cab3022ec8660e76a4819b4b9b7f4 100644 (file)
@@ -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);
index 8e3a8faeb713487c0aa993653fcf54948a1bef2c..f2161be69f541e31c0799952ca677f40e0068a3d 100644 (file)
@@ -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) {