headerlist.c: getXMLPackageNFV: support of rich requirements containing 'or' (consider only the latter requirement with > or >=)
This commit is contained in:
parent
f5e33d9f50
commit
3197ec8cf7
@ -85,7 +85,7 @@ struct warningList* addWarning(struct headerSourceList *pkg, char* text)
|
|||||||
currwarning = currwarning->next;
|
currwarning = currwarning->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
currwarning=malloc(sizeof(currwarning));
|
currwarning=malloc(sizeof(struct warningList));
|
||||||
if (!currwarning) return NULL;
|
if (!currwarning) return NULL;
|
||||||
if (!pkg->firstwarning) pkg->firstwarning=currwarning;
|
if (!pkg->firstwarning) pkg->firstwarning=currwarning;
|
||||||
|
|
||||||
@ -866,7 +866,7 @@ void getXMLPackageChangelog(xmlNode *parent,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void getXMLPackageNFV(xmlNode *parent, char ***name,
|
void getXMLPackageNFV(char* package_name, xmlNode *parent, char ***name,
|
||||||
uint_32 **flags, char ***version, int *count) {
|
uint_32 **flags, char ***version, int *count) {
|
||||||
char *n, buf[PATH_MAX];
|
char *n, buf[PATH_MAX];
|
||||||
|
|
||||||
@ -940,8 +940,17 @@ void getXMLPackageNFV(xmlNode *parent, char ***name,
|
|||||||
(*name)[i] = strdup(n2);
|
(*name)[i] = strdup(n2);
|
||||||
(*flags)[i] = XMLFlagToInt(rel2);
|
(*flags)[i] = XMLFlagToInt(rel2);
|
||||||
(*version)[i] = strdup(v2);
|
(*version)[i] = strdup(v2);
|
||||||
|
} else if (ret == 7 && !strncmp(comp,"or",2)) {
|
||||||
|
// E.g. '(python3.7dist(requests) < 2.18 or python3.7dist(requests) > 2.18)'
|
||||||
|
// Considering the second part (> or >=)
|
||||||
|
free(n);
|
||||||
|
(*name)[i] = strdup(n2);
|
||||||
|
(*flags)[i] = XMLFlagToInt(rel2);
|
||||||
|
(*version)[i] = strdup(v2);
|
||||||
} else {
|
} else {
|
||||||
logmsg(LOG_WARNING,"getXMLPackageNFV: don't know how to process '%s'; ignoring", n);
|
logmsg(LOG_WARNING,
|
||||||
|
"%s: getXMLPackageNFV: don't know how to process '%s'; ignoring",
|
||||||
|
package_name, n);
|
||||||
(*name)[i] = n;
|
(*name)[i] = n;
|
||||||
(*flags)[i] = RPMSENSE_ANY;
|
(*flags)[i] = RPMSENSE_ANY;
|
||||||
(*version)[i] = strdup(buf);
|
(*version)[i] = strdup(buf);
|
||||||
@ -1183,7 +1192,8 @@ int addToSourceHeaderList(struct configTag *ct, int mode, int altrepository) {
|
|||||||
newheadersourcelist->patch = NULL;
|
newheadersourcelist->patch = NULL;
|
||||||
|
|
||||||
// Requires
|
// Requires
|
||||||
getXMLPackageNFV(findXMLPropertyByName(format, "requires"),
|
getXMLPackageNFV(package_name,
|
||||||
|
findXMLPropertyByName(format, "requires"),
|
||||||
&requirename, &requireflags, &requireversion, &requirecount);
|
&requirename, &requireflags, &requireversion, &requirecount);
|
||||||
newheadersourcelist->require = malloc(requirecount *
|
newheadersourcelist->require = malloc(requirecount *
|
||||||
sizeof(struct Require *));
|
sizeof(struct Require *));
|
||||||
@ -1650,12 +1660,15 @@ char* advanceXMLPackageNode(xmlNode **primary_node, xmlNode **filelists_node) {
|
|||||||
altidx, arch);
|
altidx, arch);
|
||||||
|
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
getXMLPackageNFV(findXMLPropertyByName(format, "obsoletes"),
|
getXMLPackageNFV(newheaderlist->name,
|
||||||
|
findXMLPropertyByName(format, "obsoletes"),
|
||||||
&obsoletename, &obsoleteflags, &obsoleteversion, &obsoletecount);
|
&obsoletename, &obsoleteflags, &obsoleteversion, &obsoletecount);
|
||||||
getXMLPackageNFV(findXMLPropertyByName(format, "provides"),
|
getXMLPackageNFV(newheaderlist->name,
|
||||||
|
findXMLPropertyByName(format, "provides"),
|
||||||
&providename, &provideflags, &provideversion, &providecount);
|
&providename, &provideflags, &provideversion, &providecount);
|
||||||
getXMLPackageNFV(findXMLPropertyByName(format, "requires"),
|
getXMLPackageNFV(newheaderlist->name,
|
||||||
&requirename, &requireflags, &requireversion, &requirecount);
|
findXMLPropertyByName(format, "requires"),
|
||||||
|
&requirename, &requireflags, &requireversion, &requirecount);
|
||||||
|
|
||||||
newheaderlist->provided = malloc(sizeof(struct providedList*)*providecount);
|
newheaderlist->provided = malloc(sizeof(struct providedList*)*providecount);
|
||||||
for (i=0; i < providecount; i++) {
|
for (i=0; i < providecount; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user