mirror of
https://abf.rosa.ru/djam/rpm.git
synced 2025-02-23 18:33:04 +00:00
82 lines
3.5 KiB
Diff
82 lines
3.5 KiB
Diff
![]() |
--- rpm-5.4.5/build/reqprov.c.fc_overlap~ 2012-03-02 13:44:16.088580152 +0100
|
||
|
+++ rpm-5.4.5/build/reqprov.c 2012-03-02 13:59:18.740030066 +0100
|
||
|
@@ -158,11 +158,10 @@ int addReqProv(/*@unused@*/ Spec spec, H
|
||
|
he->p.argv = versions;
|
||
|
xx = headerMod(h, he, 0);
|
||
|
rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(old), rpmdsDNEVR(new), rpmdsDNEVR(old));
|
||
|
- } else if (res < 0) {
|
||
|
+ } else if (res < 0)
|
||
|
rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(new), rpmdsDNEVR(old), rpmdsDNEVR(new));
|
||
|
- } else {
|
||
|
- rpmlog(RPMLOG_DEBUG, "%s overlaps %s, removing %s and merging flags\n", rpmdsDNEVR(new), rpmdsDNEVR(old), rpmdsDNEVR(new));
|
||
|
- }
|
||
|
+ else if (flags[len] != Flags)
|
||
|
+ 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.5/lib/rpmfc.c.fc_overlap~ 2012-03-01 18:00:49.989188179 +0100
|
||
|
+++ rpm-5.4.5/lib/rpmfc.c 2012-03-01 19:53:37.145561224 +0100
|
||
|
@@ -518,7 +518,7 @@ assert(EVR != NULL);
|
||
|
* build/reqprov.c:addReqProv()
|
||
|
*/
|
||
|
int overlap = 0, res = 0;
|
||
|
- if (*depsp && rpmExpandNumeric("%{?_use_internal_dependency_generator}")) {
|
||
|
+ if (*depsp) {
|
||
|
int ix = rpmdsSearch(*depsp, ds);
|
||
|
if (ix >= 0) {
|
||
|
/* do not consider dependency ranges like R: foo > 1, R: foo < 3
|
||
|
@@ -550,18 +550,33 @@ assert(EVR != NULL);
|
||
|
rEVR->Flags = (*depsp)->Flags[(*depsp)->i];
|
||
|
|
||
|
res = rpmEVRcompare(lEVR, rEVR);
|
||
|
- if (res > 0) {
|
||
|
- (*depsp)->Flags[(*depsp)->i] = Flags;
|
||
|
- (*depsp)->EVR[(*depsp)->i] = EVR;
|
||
|
- rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(*depsp), rpmdsDNEVR(ds), rpmdsDNEVR(*depsp));
|
||
|
- } else if (res < 0) {
|
||
|
- rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(ds), rpmdsDNEVR(*depsp), rpmdsDNEVR(ds));
|
||
|
- } else {
|
||
|
- rpmlog(RPMLOG_DEBUG, "%s overlaps %s, removing %s and merging flags\n", rpmdsDNEVR(ds), rpmdsDNEVR(*depsp), rpmdsDNEVR(ds));
|
||
|
+ if (res == 0 && rpmdsFlags(*depsp) == rpmdsFlags(ds))
|
||
|
+ overlap = 0;
|
||
|
+ else {
|
||
|
+ char *oldVal = xstrdup(strchr(rpmfcFileDep(buf, fc->ix, *depsp), ' '));
|
||
|
+ if (res > 0) {
|
||
|
+ (*depsp)->Flags[(*depsp)->i] = Flags;
|
||
|
+ (*depsp)->EVR[(*depsp)->i] = EVR;
|
||
|
+ rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(*depsp), rpmdsDNEVR(ds), rpmdsDNEVR(*depsp));
|
||
|
+ } else if (res < 0)
|
||
|
+ rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s\n", rpmdsDNEVR(ds), rpmdsDNEVR(*depsp), rpmdsDNEVR(ds));
|
||
|
+ else
|
||
|
+ rpmlog(RPMLOG_WARNING, "%s overlaps %s, removing %s and merging flags\n", rpmdsDNEVR(ds), rpmdsDNEVR(*depsp), rpmdsDNEVR(ds));
|
||
|
+
|
||
|
+ (*depsp)->Flags[(*depsp)->i] |= newflags;
|
||
|
+
|
||
|
+ /* update references in dictionary */
|
||
|
+ for (ix = 0; ix < argvCount(fc->ddict); ix++) {
|
||
|
+ if (!strcmp(strchr(fc->ddict[ix], ' '), oldVal)) {
|
||
|
+ size_t fcix = atol(fc->ddict[ix]);
|
||
|
+ _free(fc->ddict[ix]);
|
||
|
+ fc->ddict[ix] = xstrdup(rpmfcFileDep(buf, fcix, *depsp));
|
||
|
+ }
|
||
|
+ }
|
||
|
+ argvSort(fc->ddict, NULL);
|
||
|
+ free(oldVal);
|
||
|
}
|
||
|
|
||
|
- (*depsp)->Flags[(*depsp)->i] |= newflags;
|
||
|
-
|
||
|
lEVR = rpmEVRfree(lEVR);
|
||
|
rEVR = rpmEVRfree(rEVR);
|
||
|
}
|
||
|
@@ -573,7 +588,7 @@ assert(EVR != NULL);
|
||
|
xx = rpmdsMerge(depsp, ds);
|
||
|
|
||
|
/* Add to file dependencies. */
|
||
|
- xx = rpmfcSaveArg(&fc->ddict, rpmfcFileDep(buf, fc->ix, ds));
|
||
|
+ xx = rpmfcSaveArg(&fc->ddict, rpmfcFileDep(buf, fc->ix, overlap ? *depsp : ds));
|
||
|
|
||
|
(void)rpmdsFree(ds);
|
||
|
ds = NULL;
|