]> git.ipfire.org Git - pakfire.git/commitdiff
build: Create function to call dependency scripts
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 24 Nov 2022 21:33:02 +0000 (21:33 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 24 Nov 2022 21:33:02 +0000 (21:33 +0000)
This makes it easier to call this function many times.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c

index 8e2b61f0b1782ef3eda6f07148de8f168c6f1f5a..3d3f6ca94b3a9e81a01f1807d69dea023393bd55 100644 (file)
@@ -221,10 +221,36 @@ ERROR:
        return r;
 }
 
+static int pakfire_build_run_dependency_script(struct pakfire_build* build,
+               struct pakfire_package* pkg, int dep, const char* script, const char** args) {
+       char* output = NULL;
+       int r;
+
+       // Run the script
+       r = pakfire_build_run_script(build, script, args, &output);
+       if (r) {
+               ERROR(build->pakfire, "%s returned with error %d\n", script, r);
+               goto ERROR;
+       }
+
+       // Add all output to the package
+       if (output) {
+               r = pakfire_str2deps(build->pakfire, pkg, dep, output);
+               if (r) {
+                       ERROR(build->pakfire, "Could not add dependencies: %m\n");
+                       goto ERROR;
+               }
+       }
+
+ERROR:
+       if (output)
+               free(output);
+
+       return r;
+}
+
 static int pakfire_build_find_dependencies(struct pakfire_build* build,
                struct pakfire_package* pkg, struct pakfire_filelist* filelist, const char* buildroot) {
-       char* provides = NULL;
-       char* requires = NULL;
        char path[PATH_MAX];
 
        // Allocate path to write the filelist to
@@ -254,45 +280,21 @@ static int pakfire_build_find_dependencies(struct pakfire_build* build,
        };
 
        // Find all provides
-       r = pakfire_build_run_script(build, "find-provides", args, &provides);
-       if (r) {
-               ERROR(build->pakfire, "find-provides returned with error %d\n", r);
+       r = pakfire_build_run_dependency_script(build, pkg,
+               PAKFIRE_PKG_PROVIDES, "find-provides", args);
+       if (r)
                goto ERROR;
-       }
 
        // Find all requires
-       r = pakfire_build_run_script(build, "find-requires", args, &requires);
-       if (r) {
-               ERROR(build->pakfire, "find-requires returned with error %d\n", r);
+       r = pakfire_build_run_dependency_script(build, pkg,
+               PAKFIRE_PKG_REQUIRES, "find-requires", args);
+       if (r)
                goto ERROR;
-       }
-
-       // Add all provides to the package
-       if (provides) {
-               r = pakfire_str2deps(build->pakfire, pkg, PAKFIRE_PKG_PROVIDES, provides);
-               if (r) {
-                       ERROR(build->pakfire, "Could not add provides: %m\n");
-                       goto ERROR;
-               }
-       }
-
-       // Add all requires to the package
-       if (requires) {
-               r = pakfire_str2deps(build->pakfire, pkg, PAKFIRE_PKG_REQUIRES, requires);
-               if (r) {
-                       ERROR(build->pakfire, "Could not add provides: %m\n");
-                       goto ERROR;
-               }
-       }
 
        // Success
        r = 0;
 
 ERROR:
-       if (provides)
-               free(provides);
-       if (requires)
-               free(requires);
        unlink(path);
 
        return r;