]> git.pld-linux.org Git - packages/rpm.git/commitdiff
- clean, proper fix for namespace clash
authorJan Rękorajski <baggins@pld-linux.org>
Thu, 13 Sep 2012 12:47:26 +0000 (14:47 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Thu, 13 Sep 2012 12:47:26 +0000 (14:47 +0200)
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 [new file with mode: 0644]
rpm-namespace-probe.patch [deleted file]
rpm.spec

diff --git a/rpm-namespace-compare.patch b/rpm-namespace-compare.patch
new file mode 100644 (file)
index 0000000..7a2dfa8
--- /dev/null
@@ -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 (file)
index acbfb4b..0000000
+++ /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:
index fa8579ecbf841866ab60c7c587f4610be3406ffb..752c73c85b08bcc06880e306b5a7fc72b9e65794 100644 (file)
--- 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
This page took 0.087925 seconds and 4 git commands to generate.