Hello community,

here is the log from the commit of package rpm for openSUSE:Factory checked in 
at 2013-09-27 19:48:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpm (Old)
 and      /work/SRC/openSUSE:Factory/.rpm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rpm"

Changes:
--------
rpm-python.changes: same change
--- /work/SRC/openSUSE:Factory/rpm/rpm.changes  2013-09-26 11:52:18.000000000 
+0200
+++ /work/SRC/openSUSE:Factory/.rpm.new/rpm.changes     2013-09-27 
19:48:38.000000000 +0200
@@ -1,0 +2,6 @@
+Fri Sep 27 15:13:45 CEST 2013 - [email protected]
+
+- add selfconflicts.diff: fix self-conflicts and self-obsoletes
+  handling for verify operations [bnc#838133]
+
+-------------------------------------------------------------------

New:
----
  selfconflicts.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
rpm-python.spec: same change
++++++ rpm.spec ++++++
--- /var/tmp/diff_new_pack.jeIgBP/_old  2013-09-27 19:48:41.000000000 +0200
+++ /var/tmp/diff_new_pack.jeIgBP/_new  2013-09-27 19:48:41.000000000 +0200
@@ -139,6 +139,7 @@
 Patch85:        brp-compress-no-img.patch
 Patch86:        strpoolrehash.diff
 Patch87:        ignore_poolstr_dummy_entries.diff
+Patch88:        selfconflicts.diff
 Patch6464:      auto-config-update-aarch64.diff
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 #
@@ -225,7 +226,7 @@
 %patch -P 50 -P 51 -P 52 -P 53 -P 54 -P 55 -P 56 -P 57 -P 58 -P 59
 %patch -P 60 -P 61 -P 62 -P 63 -P 64 -P 65 -P 66 -P 67 -P 68 -P 69
 %patch -P 70 -P 71 -P 72 -P 73 -P 74 -P 75 -P 76 -P 77 -P 78 -P 79
-%patch -P 80 -P 81 -P 82 -P 83 -P 84 -P 85 -P 86 -P 87
+%patch -P 80 -P 81 -P 82 -P 83 -P 84 -P 85 -P 86 -P 87 -P 88
 %ifarch aarch64
 %patch6464
 %endif

++++++ selfconflicts.diff ++++++
>From fae0eef24582dd9e071be8e884ff0851d4b57437 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <[email protected]>
Date: Fri, 27 Sep 2013 15:09:20 +0200
Subject: [PATCH] Ignore self-obsoletes and self-conflicts in dependency check
 code

We already ignored them when checking against the added package list,
but not when checking against installed packages. Thus, rpm -V reported
them as errors.
---
 lib/depends.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git lib/depends.c lib/depends.c
index 3d70e68..3ef27bc 100644
--- lib/depends.c
+++ lib/depends.c
@@ -504,6 +504,12 @@ static int rpmdbProvides(rpmts ts, depCache dcache, rpmds 
dep)
     if (deptag != RPMTAG_OBSOLETENAME && Name[0] == '/') {
        mi = rpmtsPrunedIterator(ts, RPMDBI_INSTFILENAMES, Name, prune);
        while ((h = rpmdbNextIterator(mi)) != NULL) {
+           /* Ignore self-conflicts */
+           if (deptag == RPMTAG_CONFLICTNAME) {
+               unsigned int instance = headerGetInstance(h);
+               if (instance && instance == rpmdsInstance(dep))
+                   continue;
+           }
            rpmdsNotify(dep, "(db files)", rc);
            break;
        }
@@ -527,6 +533,12 @@ static int rpmdbProvides(rpmts ts, depCache dcache, rpmds 
dep)
            int prix = (selfevr) ? -1 : rpmdbGetIteratorFileNum(mi);
            int match = rpmdsMatches(tspool, h, prix, dep, selfevr,
                                        _rpmds_nopromote);
+           /* Ignore self-obsoletes and self-conflicts */
+           if (match && (deptag == RPMTAG_OBSOLETENAME || deptag == 
RPMTAG_CONFLICTNAME)) {
+               unsigned int instance = headerGetInstance(h);
+               if (instance && instance == rpmdsInstance(dep))
+                   match = 0;
+           }
            if (match) {
                rpmdsNotify(dep, "(db provides)", rc);
                break;
@@ -672,8 +684,18 @@ static void checkInstDeps(rpmts ts, depCache dcache, rpmte 
te,
     rpmstrPool pool = rpmtsPool(ts);
 
     while ((h = rpmdbNextIterator(mi)) != NULL) {
-       char * pkgNEVRA = headerGetAsString(h, RPMTAG_NEVRA);
-       rpmds ds = rpmdsNewPool(pool, h, depTag, 0);
+       char * pkgNEVRA;
+       rpmds ds;
+
+       /* Ignore self-obsoletes and self-conflicts */
+       if (depTag == RPMTAG_OBSOLETENAME || depTag == RPMTAG_CONFLICTNAME) {
+           unsigned int instance = headerGetInstance(h);
+           if (instance && instance == rpmteDBInstance(te))
+               continue;
+       }
+
+       pkgNEVRA = headerGetAsString(h, RPMTAG_NEVRA);
+       ds = rpmdsNewPool(pool, h, depTag, 0);
 
        checkDS(ts, dcache, te, pkgNEVRA, ds, dep, 0);
 
-- 
1.8.1.4

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to