54 lines
1.8 KiB
Diff
54 lines
1.8 KiB
Diff
Also compare the name and not only the version when checking if
|
|
two packages are the same. rh#104066
|
|
|
|
--- ./lib/depends.c.orig 2005-12-14 19:51:34.000000000 +0000
|
|
+++ ./lib/depends.c 2006-01-27 21:05:13.000000000 +0000
|
|
@@ -124,6 +124,24 @@ static int removePackage(rpmts ts, Heade
|
|
return 0;
|
|
}
|
|
|
|
+static int rpmNameVersionCompare(Header first, Header second)
|
|
+{
|
|
+ const char * one, * two;
|
|
+ int rc;
|
|
+
|
|
+ rc = headerGetEntry(first, RPMTAG_NAME, NULL, (void **) &one, NULL);
|
|
+ rc = headerGetEntry(second, RPMTAG_NAME, NULL, (void **) &two, NULL);
|
|
+ rc = strcmp(one, two);
|
|
+ if (rc)
|
|
+ return rc;
|
|
+ rc = headerGetEntry(first, RPMTAG_ARCH, NULL, (void **) &one, NULL);
|
|
+ rc = headerGetEntry(second, RPMTAG_ARCH, NULL, (void **) &two, NULL);
|
|
+ rc = strcmp(one, two);
|
|
+ if (rc)
|
|
+ return rc;
|
|
+ return rpmVersionCompare(first, second);
|
|
+}
|
|
+
|
|
int rpmtsAddInstallElement(rpmts ts, Header h,
|
|
fnpyKey key, int upgrade, rpmRelocation * relocs)
|
|
{
|
|
@@ -303,7 +322,7 @@ addheader:
|
|
continue;
|
|
|
|
/* Skip packages that contain identical NEVR. */
|
|
- if (rpmVersionCompare(h, oh) == 0)
|
|
+ if (rpmNameVersionCompare(h, oh) == 0)
|
|
continue;
|
|
|
|
xx = removePackage(ts, oh, rpmdbGetIteratorOffset(mi), pkgKey);
|
|
@@ -354,11 +373,9 @@ addheader:
|
|
* If no obsoletes version info is available, match all names.
|
|
*/
|
|
if (rpmdsEVR(obsoletes) == NULL
|
|
- || rpmdsAnyMatchesDep(oh, obsoletes, _rpmds_nopromote)) {
|
|
+ || rpmdsNVRMatchesDep(oh, obsoletes, _rpmds_nopromote)) {
|
|
const char * ohNEVRA = hGetNEVRA(oh, NULL);
|
|
-#ifdef DYING /* XXX see http://bugzilla.redhat.com #134497 */
|
|
- if (rpmVersionCompare(h, oh))
|
|
-#endif
|
|
+ if (rpmNameVersionCompare(h, oh))
|
|
xx = removePackage(ts, oh, rpmdbGetIteratorOffset(mi), pkgKey);
|
|
/*@-nullptrarith@*/
|
|
rpmMessage(RPMMESS_DEBUG, _(" Obsoletes: %s\t\terases %s\n"),
|