1 --- rpm-5.4.10/lib/rpmds.c~ 2012-07-06 17:39:16.000000000 +0200
2 +++ rpm-5.4.10/lib/rpmds.c 2012-09-13 12:40:32.439076460 +0200
5 assert((rpmdsFlags(A) & RPMSENSE_SENSEMASK) == A->ns.Flags);
6 assert((rpmdsFlags(B) & RPMSENSE_SENSEMASK) == B->ns.Flags);
7 + /* Different namespaces don't overlap. */
8 + if (A->ns.Type != B->ns.Type) {
13 /* Different names (and/or name.arch's) don't overlap. */
14 if (rpmdsNAcmp(A, B)) {
16 diff -ur rpm-5.4.10/lib/depends.c rpm-5.4.10.nstype/lib/depends.c
17 --- rpm-5.4.10/lib/depends.c 2012-11-30 13:03:40.350619256 +0100
18 +++ rpm-5.4.10.nstype/lib/depends.c 2012-11-30 12:08:01.266204377 +0100
20 #define _RPMDB_INTERNAL /* XXX response cache needs dbiOpen et al. */
23 +#define _RPMDS_INTERNAL
24 #define _RPMEVR_INTERNAL
28 /*@null@*/ rpmds dirnames,
29 /*@null@*/ rpmds linktos,
30 /*@null@*/ const char * depName,
32 rpmuint32_t tscolor, int adding)
33 /*@globals rpmGlobalMacroContext, h_errno,
34 fileSystem, internalState @*/
36 rpmps ps = rpmtsProblems(ts);
40 int terminate = 2; /* XXX terminate if rc >= terminate */
43 @@ -1598,6 +1609,11 @@
44 if (depName != NULL && strcmp(depName, Name))
47 + NSType = rpmdsNSType(requires);
49 + if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
52 /* Ignore colored requires not in our rainbow. */
53 dscolor = rpmdsColor(requires);
54 if (tscolor && dscolor && !(tscolor & dscolor))
55 @@ -1639,6 +1659,11 @@
56 if (depName != NULL && strcmp(depName, Name))
59 + NSType = rpmdsNSType(conflicts);
61 + if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
64 /* Ignore colored conflicts not in our rainbow. */
65 dscolor = rpmdsColor(conflicts);
66 if (tscolor && dscolor && !(tscolor & dscolor))
67 @@ -1676,6 +1703,11 @@
68 if (depName != NULL && strcmp(depName, Name))
71 + NSType = rpmdsNSType(dirnames);
73 + if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
76 /* Ignore colored dirnames not in our rainbow. */
77 dscolor = rpmdsColor(dirnames);
78 if (tscolor && dscolor && !(tscolor & dscolor))
79 @@ -1724,6 +1758,11 @@
80 if (depName != NULL && strcmp(depName, Name))
83 + NSType = rpmdsNSType(linktos);
85 + if (depNS != RPMNS_TYPE_UNKNOWN && depNS != NSType)
88 /* Ignore colored linktos not in our rainbow. */
89 dscolor = rpmdsColor(linktos);
90 if (tscolor && dscolor && !(tscolor & dscolor))
92 * @param adding dependency is from added package set?
93 * @return 0 no problems found
95 -static int checkPackageSet(rpmts ts, const char * depName,
96 +static int checkPackageSet(rpmts ts, const char * depName, nsType depNS,
97 /*@only@*/ /*@null@*/ rpmmi mi, int adding)
98 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
99 /*@modifies ts, mi, rpmGlobalMacroContext, fileSystem, internalState @*/
100 @@ -1816,7 +1857,7 @@
102 rc = checkPackageDeps(ts, he->p.str,
103 requires, conflicts, dirnames, linktos,
104 - depName, tscolor, adding);
105 + depName, depNS, tscolor, adding);
107 (void)rpmdsFree(linktos);
109 @@ -1844,7 +1886,7 @@
110 * @param depName requires name
111 * @return 0 no problems found
113 -static int checkDependentPackages(rpmts ts, const char * depName)
114 +static int checkDependentPackages(rpmts ts, const char * depName, nsType depNS)
115 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
116 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
118 @@ -1854,7 +1896,7 @@
119 if (rpmtsGetRdb(ts) != NULL) {
121 mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, depName, 0);
122 - rc = checkPackageSet(ts, depName, mi, 0);
123 + rc = checkPackageSet(ts, depName, depNS, mi, 0);
127 @@ -1865,7 +1908,7 @@
128 * @param depName conflicts name
129 * @return 0 no problems found
131 -static int checkDependentConflicts(rpmts ts, const char * depName)
132 +static int checkDependentConflicts(rpmts ts, const char * depName, nsType depNS)
133 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
134 /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
136 @@ -1875,7 +1918,7 @@
137 if (rpmtsGetRdb(ts) != NULL) {
139 mi = rpmtsInitIterator(ts, RPMTAG_CONFLICTNAME, depName, 0);
140 - rc = checkPackageSet(ts, depName, mi, 1);
141 + rc = checkPackageSet(ts, depName, depNS, mi, 1);
145 @@ -1939,7 +1985,7 @@
147 rc = checkPackageDeps(ts, rpmteNEVRA(p),
148 requires, conflicts, dirnames, linktos,
150 + NULL, RPMNS_TYPE_UNKNOWN, tscolor, 1);
151 if (rc && (ourrc = rc) >= terminate)
154 @@ -1963,7 +2011,7 @@
157 /* Adding: check provides key against conflicts matches. */
158 - if (checkDependentConflicts(ts, depName))
159 + if (checkDependentConflicts(ts, depName, rpmdsNSType(provides)))
162 if (rc && (ourrc = rc) >= terminate)
163 @@ -1975,7 +2026,7 @@
164 depName = _free(depName);
165 depName = xstrdup(rpmfiFN(fi));
166 /* Adding: check filename against conflicts matches. */
167 - if (checkDependentConflicts(ts, depName))
168 + if (checkDependentConflicts(ts, depName, RPMNS_TYPE_UNKNOWN))
171 if (rc && (ourrc = rc) >= terminate)
172 @@ -2006,7 +2058,7 @@
173 depName = xstrdup(rpmdsN(provides));
175 /* Erasing: check provides against requiredby matches. */
176 - if (checkDependentPackages(ts, depName))
177 + if (checkDependentPackages(ts, depName, rpmdsNSType(provides)))
180 if (rc && (ourrc = rc) >= terminate)
181 @@ -2018,7 +2070,7 @@
182 depName = _free(depName);
183 depName = xstrdup(rpmfiFN(fi));
184 /* Erasing: check filename against requiredby matches. */
185 - if (checkDependentPackages(ts, depName))
186 + if (checkDependentPackages(ts, depName, RPMNS_TYPE_UNKNOWN))
189 if (rc && (ourrc = rc) >= terminate)
190 @@ -2039,7 +2091,7 @@
191 const char * dep = NULL;
193 tscolor = 0; /* XXX no coloring for transaction dependencies. */
194 - rc = checkPackageDeps(ts, tsNEVRA, R, C, D, L, dep, tscolor, adding);
195 + rc = checkPackageDeps(ts, tsNEVRA, R, C, D, L, dep, RPMNS_TYPE_UNKNOWN, tscolor, adding);
197 if (rc && (ourrc = rc) >= terminate)