From c918439264408d65ab9224b93a680fffc1247230 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 24 Nov 2022 21:33:02 +0000 Subject: [PATCH] build: Create function to call dependency scripts This makes it easier to call this function many times. Signed-off-by: Michael Tremer --- src/libpakfire/build.c | 66 ++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 8e2b61f0b..3d3f6ca94 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -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; -- 2.39.5