From: Michael Tremer Date: Mon, 24 May 2021 13:00:57 +0000 (+0000) Subject: parser: Read dependencies from package blocks X-Git-Tag: 0.9.28~1285^2~84 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e3a7b947e37b6bb406c9ec7b350f8b0a42207da;p=pakfire.git parser: Read dependencies from package blocks Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/parser.c b/src/libpakfire/parser.c index 99991038c..320db7f84 100644 --- a/src/libpakfire/parser.c +++ b/src/libpakfire/parser.c @@ -924,9 +924,35 @@ PAKFIRE_EXPORT int pakfire_parser_create_package(PakfireParser parser, // 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