repodata: check for duplicated SRPM packages
This commit is contained in:
parent
b94d504063
commit
10e111f785
@ -1049,6 +1049,35 @@ int addToSourceHeaderList(struct configTag *ct, int mode, int altrepository) {
|
|||||||
filelists_node = filelists_node->next,
|
filelists_node = filelists_node->next,
|
||||||
other_node = other_node->next) {
|
other_node = other_node->next) {
|
||||||
if (!strcmp((char*)package_node->name, "package")) {
|
if (!strcmp((char*)package_node->name, "package")) {
|
||||||
|
char *package_name = strdup((char*)
|
||||||
|
findXMLPropertyByName(package_node, "name")->children->content);
|
||||||
|
xmlNode *version = findXMLPropertyByName(package_node, "version");
|
||||||
|
tmp = (char*)findXMLAttributeByName(version, "epoch");
|
||||||
|
int package_epoch = atoi(tmp);
|
||||||
|
free(tmp);
|
||||||
|
char *package_version = (char*)findXMLAttributeByName(version, "ver");
|
||||||
|
char *package_release = (char*)findXMLAttributeByName(version, "rel");
|
||||||
|
|
||||||
|
// Check next package for duplicates
|
||||||
|
xmlNode *next_package = package_node->next;
|
||||||
|
while (next_package && strcmp((char*)next_package->name, "package")) {
|
||||||
|
next_package = next_package->next;
|
||||||
|
}
|
||||||
|
if (next_package) {
|
||||||
|
char *next_package_name = strdup((char*)
|
||||||
|
findXMLPropertyByName(next_package, "name")->children->content);
|
||||||
|
if (!strcmp(package_name, next_package_name)) {
|
||||||
|
// Assuming that older packages come first
|
||||||
|
logmsg(LOG_WARNING,"skipping older duplicated SRPM package %s(%d:%s:%s)",
|
||||||
|
package_name, package_epoch, package_version, package_release);
|
||||||
|
free(next_package_name);
|
||||||
|
free(package_name);
|
||||||
|
free(package_version);
|
||||||
|
free(package_release);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
newheadersourcelist = malloc(sizeof(struct headerSourceList));
|
newheadersourcelist = malloc(sizeof(struct headerSourceList));
|
||||||
if (newheadersourcelist == NULL) return 1;
|
if (newheadersourcelist == NULL) return 1;
|
||||||
|
|
||||||
@ -1063,14 +1092,10 @@ int addToSourceHeaderList(struct configTag *ct, int mode, int altrepository) {
|
|||||||
newheadersourcelist->old = NULL;
|
newheadersourcelist->old = NULL;
|
||||||
newheadersourcelist->id = ++sourceid;
|
newheadersourcelist->id = ++sourceid;
|
||||||
|
|
||||||
newheadersourcelist->name = strdup((char*)
|
newheadersourcelist->name = package_name;
|
||||||
findXMLPropertyByName(package_node, "name")->children->content);
|
newheadersourcelist->epoch = package_epoch;
|
||||||
xmlNode *version = findXMLPropertyByName(package_node, "version");
|
newheadersourcelist->version = package_version;
|
||||||
tmp = (char*)findXMLAttributeByName(version, "epoch");
|
newheadersourcelist->release = package_release;
|
||||||
newheadersourcelist->epoch = atoi(tmp);
|
|
||||||
free(tmp);
|
|
||||||
newheadersourcelist->version = (char*)findXMLAttributeByName(version, "ver");
|
|
||||||
newheadersourcelist->release = (char*)findXMLAttributeByName(version, "rel");
|
|
||||||
newheadersourcelist->summary = strdup((char*)
|
newheadersourcelist->summary = strdup((char*)
|
||||||
findXMLPropertyByName(package_node, "summary")->children->content);
|
findXMLPropertyByName(package_node, "summary")->children->content);
|
||||||
newheadersourcelist->arch = strdup((char*)
|
newheadersourcelist->arch = strdup((char*)
|
||||||
|
Loading…
Reference in New Issue
Block a user