Blame nameversioncompare.diff

Bernhard M. Wiedemann 1250f9
Also compare the name/arch and not only the version when checking if
Bernhard M. Wiedemann 1250f9
two packages are the same. rh#104066
Bernhard M. Wiedemann 1250f9
Bernhard M. Wiedemann 1250f9
--- ./lib/depends.c.orig	2014-06-26 06:51:54.163820067 +0000
Bernhard M. Wiedemann 1250f9
+++ ./lib/depends.c	2014-08-04 12:22:24.030575105 +0000
Bernhard M. Wiedemann 1250f9
@@ -158,6 +158,24 @@ static int skipColor(rpm_color_t tscolor
Bernhard M. Wiedemann 1250f9
     return tscolor && color && ocolor && !(color & ocolor);
Bernhard M. Wiedemann 1250f9
 }
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
+static int rpmNameVersionCompare(Header first, Header second)
Bernhard M. Wiedemann 1250f9
+{
Bernhard M. Wiedemann 1250f9
+    const char * one, * two;
Bernhard M. Wiedemann 1250f9
+    int rc;
Bernhard M. Wiedemann 1250f9
+
Bernhard M. Wiedemann 1250f9
+    one = headerGetString(first, RPMTAG_NAME);
Bernhard M. Wiedemann 1250f9
+    two = headerGetString(second, RPMTAG_NAME);
Bernhard M. Wiedemann 1250f9
+    rc = strcmp(one, two);
Bernhard M. Wiedemann 1250f9
+    if (rc)
Bernhard M. Wiedemann 1250f9
+	return rc;
Bernhard M. Wiedemann 1250f9
+    one = headerGetString(first, RPMTAG_ARCH);
Bernhard M. Wiedemann 1250f9
+    two = headerGetString(second, RPMTAG_ARCH);
Bernhard M. Wiedemann 1250f9
+    rc = strcmp(one, two);
Bernhard M. Wiedemann 1250f9
+    if (rc)
Bernhard M. Wiedemann 1250f9
+	return rc;
Bernhard M. Wiedemann 1250f9
+    return rpmVersionCompare(first, second);
Bernhard M. Wiedemann 1250f9
+}
Bernhard M. Wiedemann 1250f9
+
Bernhard M. Wiedemann 1250f9
 /* Add erase elements for older packages of same color (if any). */
Bernhard M. Wiedemann 1250f9
 static int addSelfErasures(rpmts ts, rpm_color_t tscolor, int op,
Bernhard M. Wiedemann 1250f9
 				rpmte p, rpm_color_t hcolor, Header h)
Bernhard M. Wiedemann 1250f9
@@ -172,7 +190,7 @@ static int addSelfErasures(rpmts ts, rpm
Bernhard M. Wiedemann 1250f9
 	if (skipColor(tscolor, hcolor, headerGetNumber(oh, RPMTAG_HEADERCOLOR)))
Bernhard M. Wiedemann 1250f9
 	    continue;
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
-	cmp = rpmVersionCompare(h, oh);
Bernhard M. Wiedemann 1250f9
+	cmp = rpmNameVersionCompare(h, oh);
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
 	/* On upgrade, skip packages that contain identical NEVR. */
Bernhard M. Wiedemann 1250f9
 	if ((op == RPMTE_UPGRADE) && (cmp == 0))