mirror of
https://abf.rosa.ru/djam/rpm.git
synced 2025-02-23 10:23:04 +00:00
70 lines
4.3 KiB
Diff
70 lines
4.3 KiB
Diff
--- rpm-5.4.7/build/reqprov.c.equal_overlap~ 2012-03-13 15:06:59.272736274 +0100
|
|
+++ rpm-5.4.7/build/reqprov.c 2012-03-13 16:37:17.389488443 +0100
|
|
@@ -128,12 +128,14 @@ int addReqProv(/*@unused@*/ Spec spec, H
|
|
#define RPMSENSE_SCRIPTS (RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN|RPMSENSE_SCRIPT_VERIFY)
|
|
if (!((Flags & RPMSENSE_GREATER && flags[len] & RPMSENSE_LESS) ||
|
|
(Flags & RPMSENSE_LESS && flags[len] & RPMSENSE_GREATER)) &&
|
|
+ /* R: foo >= 1 cannot overlap R: foo <= 1*/
|
|
+ !(((Flags & RPMSENSE_GREATER) && (flags[len] & RPMSENSE_LESS)) ||
|
|
+ ((flags[len] & RPMSENSE_GREATER) && (Flags & RPMSENSE_LESS))) &&
|
|
/* do not merge script dependencies with non-script dependencies */
|
|
!(((Flags & RPMSENSE_SCRIPTS) && !(flags[len] & RPMSENSE_SCRIPTS)) ||
|
|
((flags[len] & RPMSENSE_SCRIPTS) && !(Flags & RPMSENSE_SCRIPTS))))
|
|
overlap = rpmdsCompare(new, old);
|
|
#undef RPMSENSE_SCRIPTS
|
|
-
|
|
if (overlap) {
|
|
EVR_t lEVR = rpmEVRnew(RPMSENSE_ANY, 0),
|
|
rEVR = rpmEVRnew(RPMSENSE_ANY, 0);
|
|
@@ -165,8 +167,11 @@ int addReqProv(/*@unused@*/ Spec spec, H
|
|
rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(old), rpmdsDNEVR(new), rpmdsDNEVR(old));
|
|
} else if (res < 0)
|
|
rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(new), rpmdsDNEVR(old), rpmdsDNEVR(new));
|
|
- else if (flags[len] != Flags)
|
|
+ else if (flags[len] != Flags) {
|
|
+ if (((Flags & RPMSENSE_SENSEMASK) == RPMSENSE_EQUAL && (flags[len] & (RPMSENSE_GREATER|RPMSENSE_LESS))))
|
|
+ flags[len] &= ~(RPMSENSE_GREATER|RPMSENSE_LESS);
|
|
rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s and merging flags\n", rpmdsDNEVR(new), rpmdsDNEVR(old), rpmdsDNEVR(new));
|
|
+ }
|
|
|
|
flags[len] |= newflags;
|
|
he->tag = flagtag;
|
|
--- rpm-5.4.7/lib/rpmfc.c.equal_overlap~ 2012-03-13 15:07:42.416787385 +0100
|
|
+++ rpm-5.4.7/lib/rpmfc.c 2012-03-13 16:37:24.110497118 +0100
|
|
@@ -502,11 +502,12 @@ assert(EVR != NULL);
|
|
|
|
ds = rpmdsSingle(tagN, N, EVR, Flags);
|
|
|
|
+ int overlap = 0;
|
|
#if defined(RPM_VENDOR_MANDRIVA) /* filter-overlapping-dependencies */
|
|
/* XXX: should really share same code path as with what's in
|
|
* build/reqprov.c:addReqProv()
|
|
*/
|
|
- int overlap = 0, res = 0;
|
|
+ int res = 0;
|
|
if (*depsp) {
|
|
int ix = rpmdsSearch(*depsp, ds);
|
|
if (ix >= 0) {
|
|
@@ -516,6 +517,9 @@ assert(EVR != NULL);
|
|
#define RPMSENSE_SCRIPTS (RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN|RPMSENSE_SCRIPT_VERIFY)
|
|
if (!((Flags & RPMSENSE_GREATER && (*depsp)->Flags[(*depsp)->i] & RPMSENSE_LESS) ||
|
|
(Flags & RPMSENSE_LESS && (*depsp)->Flags[(*depsp)->i] & RPMSENSE_GREATER)) &&
|
|
+ /* R: foo >= 1 cannot overlap R: foo <= 1*/
|
|
+ !(((Flags & RPMSENSE_GREATER) && ((*depsp)->Flags[(*depsp)->i] & RPMSENSE_LESS)) ||
|
|
+ (((*depsp)->Flags[(*depsp)->i] & RPMSENSE_GREATER) && (Flags & RPMSENSE_LESS))) &&
|
|
/* do not merge script dependencies with non-script dependencies */
|
|
!(((Flags & RPMSENSE_SCRIPTS) && !((*depsp)->Flags[(*depsp)->i] & RPMSENSE_SCRIPTS)) ||
|
|
(((*depsp)->Flags[(*depsp)->i] & RPMSENSE_SCRIPTS) && !(Flags & RPMSENSE_SCRIPTS))))
|
|
@@ -554,8 +558,11 @@ assert(EVR != NULL);
|
|
rpmlog(RPMLOG_WARNING, "%s (%s) overlaps %s (%s), removing %s\n", rpmdsDNEVR(*depsp), ix < (int)fc->nfiles ? fc->fn[ix] + fc->brlen : "explicit", rpmdsDNEVR(ds), fc->fn[fc->ix] + fc->brlen, rpmdsDNEVR(*depsp));
|
|
} else if (res < 0)
|
|
rpmlog(RPMLOG_WARNING, "%s (%s) overlaps %s (%s), removing %s\n", rpmdsDNEVR(ds), fc->fn[fc->ix] + fc->brlen, rpmdsDNEVR(*depsp), ix < (int)fc->nfiles ? fc->fn[ix] + fc->brlen : "explicit", rpmdsDNEVR(ds));
|
|
- else
|
|
+ else if ((*depsp)->Flags[(*depsp)->i] != Flags) {
|
|
+ if (((Flags & RPMSENSE_SENSEMASK) == RPMSENSE_EQUAL) && ((*depsp)->Flags[(*depsp)->i] & (RPMSENSE_GREATER|RPMSENSE_LESS)))
|
|
+ (*depsp)->Flags[(*depsp)->i] &= ~(RPMSENSE_GREATER|RPMSENSE_LESS);
|
|
rpmlog(RPMLOG_WARNING, "%s (%s) overlaps %s (%s), removing %s and merging flags\n", rpmdsDNEVR(ds), fc->fn[fc->ix] + fc->brlen, rpmdsDNEVR(*depsp), ix < (int)fc->nfiles ? fc->fn[ix] + fc->brlen : "explicit", rpmdsDNEVR(ds));
|
|
+ }
|
|
|
|
(*depsp)->Flags[(*depsp)->i] |= newflags;
|
|
|