commit e3f16e1bf34ee15f4065aac1c00e07bad7a080ae
Author: Jan Rękorajski <[email protected]>
Date:   Thu Sep 13 14:47:26 2012 +0200

    - clean, proper fix for namespace clash
    
    This fixes the case when 'P:group(NAME)' satisfies 'C:NAME < EVR'
    group(NAME) belongs to RPMNS_TYPE_GROUP namespace and 'NAME < EVR'
    to RPMNS_TYPE_VERSION namespace, so they should not be compared.
    This should also fix triggers firing on NAME uninstal for packages
    providing group(NAME).

 rpm-namespace-compare.patch | 15 +++++++++++++++
 rpm-namespace-probe.patch   | 39 ---------------------------------------
 rpm.spec                    |  4 ++--
 3 files changed, 17 insertions(+), 41 deletions(-)
---
diff --git a/rpm.spec b/rpm.spec
index fa8579e..752c73c 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -47,7 +47,7 @@ Summary(ru.UTF-8):    Менеджер пакетов от RPM
 Summary(uk.UTF-8):     Менеджер пакетів від RPM
 Name:          rpm
 Version:       5.4.10
-Release:       0.13
+Release:       0.14
 License:       LGPL
 Group:         Base
 # http://rpm5.org/files/rpm/rpm-5.4/rpm-5.4.10-0.20120706.src.rpm
@@ -117,7 +117,7 @@ Patch33:    %{name}-cleanbody.patch
 Patch34:       %{name}-dirdeps-macro.patch
 Patch35:       %{name}-installbeforeerase.patch
 Patch36:       %{name}-libmagic-locale.patch
-Patch37:       %{name}-namespace-probe.patch
+Patch37:       %{name}-namespace-compare.patch
 Patch38:       %{name}-popt-coreutils.patch
 Patch39:       %{name}-postun-nofail.patch
 Patch40:       %{name}-silence-RPM_CHAR_TYPE.patch
diff --git a/rpm-namespace-compare.patch b/rpm-namespace-compare.patch
new file mode 100644
index 0000000..7a2dfa8
--- /dev/null
+++ b/rpm-namespace-compare.patch
@@ -0,0 +1,15 @@
+--- rpm-5.4.10/lib/rpmds.c~    2012-07-06 17:39:16.000000000 +0200
++++ rpm-5.4.10/lib/rpmds.c     2012-09-13 12:40:32.439076460 +0200
+@@ -4036,6 +4036,12 @@
+ 
+ assert((rpmdsFlags(A) & RPMSENSE_SENSEMASK) == A->ns.Flags);
+ assert((rpmdsFlags(B) & RPMSENSE_SENSEMASK) == B->ns.Flags);
++    /* Different namespaces don't overlap. */
++    if (A->ns.Type != B->ns.Type) {
++      result = 0;
++      goto exit;
++    }
++
+     /* Different names (and/or name.arch's) don't overlap. */
+     if (rpmdsNAcmp(A, B)) {
+       result = 0;
diff --git a/rpm-namespace-probe.patch b/rpm-namespace-probe.patch
deleted file mode 100644
index acbfb4b..0000000
--- a/rpm-namespace-probe.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Disable Provides: user(NAME), group(NAME) probes as it would fire trigger on 
NAME uninstall
-
-as for example uninstalling this spec: 
https://bugs.pld-linux.org/attachment.cgi?id=20
-
-15:30:53  jbj> glen_: rpmns.c splits group(mailman) into the tuple {group, 
mailman} for name space processing.
-15:32:48  jbj> the code in unbsatisfiedDepnds is driven by the name "group". 
if split, then its not the string
-               "group(mailman)" any more.
-
---- rpm-4.4.9/lib/depends.c~   2008-04-08 19:44:02.000000000 +0300
-+++ rpm-4.4.9/lib/depends.c    2008-04-25 15:12:52.734623679 +0300
-@@ -611,6 +611,7 @@
-       goto exit;
-     }
- 
-+#if !defined(RPM_VENDOR_PLD)
-     /* Evaluate user/group lookup probes. */
-     if (NSType == RPMNS_TYPE_USER) {
-       const char *s;
-@@ -646,6 +647,7 @@
-       rpmdsNotify(dep, _("(group lookup)"), rc);
-       goto exit;
-     }
-+#endif
- 
-     /* Evaluate access(2) probe dependencies. */
-     if (NSType == RPMNS_TYPE_ACCESS) {
---- rpm-4.4.9/rpmdb/rpmns.c~   2007-05-16 14:31:58.000000000 +0300
-+++ rpm-4.4.9/rpmdb/rpmns.c    2008-04-25 15:36:20.223855745 +0300
-@@ -179,8 +179,10 @@
-     case RPMNS_TYPE_UNAME:
-     case RPMNS_TYPE_SONAME:
-     case RPMNS_TYPE_ACCESS:
-+#if !defined(RPM_VENDOR_PLD)
-     case RPMNS_TYPE_USER:
-     case RPMNS_TYPE_GROUP:
-+#endif
-     case RPMNS_TYPE_MOUNTED:
-     case RPMNS_TYPE_DISKSPACE:
-     case RPMNS_TYPE_DIGEST:
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm.git/commitdiff/e3f16e1bf34ee15f4065aac1c00e07bad7a080ae

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to