Fix support for multiple build providers

This commit is contained in:
Silvan Calarco 2013-07-13 11:53:05 +02:00
parent 1570c792be
commit 59e25e737f

View File

@ -666,7 +666,6 @@ resolveFirstLevelSourceDependencies(struct configTag *ct, int archidx)
currsourceheader->require[i]->name,1,archidx);
if (provided->numbuildproviders == 0) {
// check if require[i]->name requirement is met
scanheader = ct->headerlist[archidx];
if ((currsourceheader->require[i]->name)[0] == '/') {
/* requirement is a file, find who provides it */
@ -677,25 +676,31 @@ resolveFirstLevelSourceDependencies(struct configTag *ct, int archidx)
provided->buildprovider=file->provider;
provided->flags=0;
logmsg(LOG_DEBUG,"file %s is a build provider for %s",currsourceheader->require[i]->name,currsourceheader->name);
} else {
scanheader=NULL;
}
} else {
/* requirement is not a file, cross-check with provides */
while (scanheader &&
!checkRequireWithProvides(
scanheader = ct->headerlist[archidx];
while (scanheader) {
if (checkRequireWithProvides(
currsourceheader->require[i]->name,
scanheader)) scanheader = scanheader->next;
if (scanheader) {
provided->numbuildproviders=1;
provided->buildprovider=malloc(sizeof(struct headerList*));
provided->buildprovider[0]=scanheader;
provided->flags=0;
scanheader)) provided->numbuildproviders+=1;
scanheader = scanheader->next;
}
if (provided->numbuildproviders > 0) {
provided->buildprovider = malloc(sizeof(struct headerList*) * provided->numbuildproviders);
provided->flags = 0;
scanheader = ct->headerlist[archidx];
j = 0;
while (scanheader) {
if (checkRequireWithProvides(
currsourceheader->require[i]->name,
scanheader)) provided->buildprovider[j++] = scanheader;
scanheader = scanheader->next;
}
logmsg(LOG_DEBUG,"%s is a build provider for %s",provided->name,currsourceheader->name);
}
logmsg(LOG_DEBUG,"%s is a build provider for %s",provided->name,currsourceheader->name);
}
if (!scanheader) {
if (provided->numbuildproviders == 0) {
snprintf(warning,PATH_MAX,"missing build provider for %s",currsourceheader->require[i]->name);
fprintf(stderr,"Warning: %s(source,%s): %s\n",
currsourceheader->name,
@ -703,17 +708,7 @@ resolveFirstLevelSourceDependencies(struct configTag *ct, int archidx)
warning);
addWarning(currsourceheader,warning);
}
/* if (scanheader) {
provided->numbuildproviders=1;
provided->buildprovider=malloc(sizeof(struct headerList*));
provided->buildprovider[0]=scanheader;
provided->flags=0;
} else {
snprintf(warning, PATH_MAX, "missing build provider for %s", currsourceheader->require[i]->name);
fprintf(stderr,"Warning: %s: %s\n",currsourceheader->name, warning);
addWarning(currsourceheader, warning);
}*/
} else if (provided->numbuildproviders > 1) {
//} else if (provided->numbuildproviders > 1) {
/*printf("Multiple providers for %s in package %s\n",currsourceheader->require[i]->name,currsourceheader->name);*/
}