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
};
// 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;