// Fetch build dependencies
if (is_source) {
char* requires = pakfire_parser_get(parser, "build", "requires");
- if (requires && *requires)
+ if (requires) {
pakfire_parse_deps(parser->pakfire, *pkg,
pakfire_package_add_requires, requires);
+ free(requires);
+ }
+ } else {
+ const struct relation {
+ const char* type;
+ void (*func)(PakfirePackage, const char* dep);
+ } relations[] = {
+ { "provides", pakfire_package_add_provides },
+ { "prerequires", pakfire_package_add_prerequires },
+ { "requires", pakfire_package_add_requires },
+ { "conflicts", pakfire_package_add_conflicts },
+ { "obsoletes", pakfire_package_add_obsoletes },
+ { "recommends", pakfire_package_add_recommends },
+ { "suggests", pakfire_package_add_suggests },
+ { "supplements", pakfire_package_add_supplements },
+ { "enhances", pakfire_package_add_enhances },
+ { NULL, NULL },
+ };
+
+ for (const struct relation* relation = relations; relation->type; relation++) {
+ char* relations = pakfire_parser_get(parser, namespace, relation->type);
+ if (relations) {
+ pakfire_parse_deps(parser->pakfire, *pkg, relation->func, relations);
+ free(relations);
+ }
+ }
}
// All okay