[prev in list] [next in list] [prev in thread] [next in thread]
List: rpm-cvs
Subject: [CVS] RPM: rpm-5_3: rpm/ CHANGES rpm/lib/ transaction.c
From: "Per ?yvind Karlsen" <pkarlsen () rpm5 ! org>
Date: 2011-10-19 13:00:54
Message-ID: 20111019130054.049F18F2AC () rpm5 ! org
[Download RAW message or body]
RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Per Øyvind Karlsen
Root: /v/rpm/cvs Email: pkarlsen@rpm5.org
Module: rpm Date: 19-Oct-2011 15:00:53
Branch: rpm-5_3 Handle: 2011101913005201
Modified files: (Branch: rpm-5_3)
rpm CHANGES
rpm/lib transaction.c
Log:
fix different epoch being ignored when comparing two packages with
same NVRA.
Summary:
Revision Changes Path
1.3296.2.251+2 -0 rpm/CHANGES
1.428.2.8 +22 -16 rpm/lib/transaction.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.3296.2.250 -r1.3296.2.251 CHANGES
--- rpm/CHANGES 15 Oct 2011 12:58:19 -0000 1.3296.2.250
+++ rpm/CHANGES 19 Oct 2011 13:00:52 -0000 1.3296.2.251
@@ -1,4 +1,6 @@
5.3.12 -> 5.3.13
+ - proyvind: fix different epoch being ignored when comparing two packages
+ with same NVRA.
- proyvind: add %ruby_sitedir and %ruby_vendor macros.
- proyvind: really always invoke %clean at end
- proyvind: add sparc64v2 arch to %sparcx.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/transaction.c
============================================================================
$ cvs diff -u -r1.428.2.7 -r1.428.2.8 transaction.c
--- rpm/lib/transaction.c 12 Jul 2011 10:44:41 -0000 1.428.2.7
+++ rpm/lib/transaction.c 19 Oct 2011 13:00:53 -0000 1.428.2.8
@@ -1169,28 +1169,34 @@
RPMMIRE_STRCMP, rpmteNEVRA(p), &keys);
nkeys = argvCount(keys);
-#if defined(RPM_VENDOR_MANDRIVA)
/* mdvbz: #63711
- * workaround for distepoch never being added to RPMTAG_NVRA yet,
- * leading to packages of same EVRA but with different distepoch
+ * workaround for epoch & distepoch not being part of RPMTAG_NVRA,
+ * leading to packages of same VRA but with different epoch or distepoch
* being treated as the same package */
if (nkeys > 0) {
- int i;
- for (i = 0; i < nkeys; i++) {
- rpmmi mi = rpmtsInitIterator(ts, RPMTAG_NVRA, keys[i], 0);
- Header h;
- while ((h = rpmmiNext(mi)) != NULL) {
- HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
- he->tag = RPMTAG_DISTEPOCH;
- xx = headerGet(h, he, 0);
- if (strcmp(he->p.str ? he->p.str : "", rpmteD(p) ? rpmteD(p) : ""))
- nkeys--;
- he->p.ptr = _free(he->p.ptr);
+ int i, t;
+ rpmTag tags[2] = { RPMTAG_EPOCH, RPMTAG_DISTEPOCH };
+ for (t = 0; t < 2; t++) {
+ for (i = 0; i < nkeys; i++) {
+ rpmmi mi = rpmtsInitIterator(ts, RPMTAG_NVRA, keys[i], 0);
+ Header h;
+ while ((h = rpmmiNext(mi)) != NULL) {
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+ const char *val = NULL;
+ he->tag = tags[t];
+ xx = headerGet(h, he, 0);
+ if (he->tag == RPMTAG_EPOCH)
+ val = rpmteE(p);
+ else if (he->tag == RPMTAG_DISTEPOCH)
+ val = rpmteD(p);
+ if (strcmp(he->p.str ? he->p.str : "", val ? val : ""))
+ nkeys--;
+ he->p.ptr = _free(he->p.ptr);
+ }
+ mi = rpmmiFree(mi);
}
- mi = rpmmiFree(mi);
}
}
-#endif
if (nkeys > 0)
rpmpsAppend(ps, RPMPROB_PKG_INSTALLED,
rpmteNEVR(p), rpmteKey(p),
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository rpm-cvs@rpm5.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic