RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Per Øyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 01-Apr-2011 11:51:45 Branch: HEAD Handle: 2011040109514500 Modified files: rpm CHANGES rpm/build reqprov.c Log: filter overlapping depencies. leaving under mandriva #ifdef for now, need to properly determine 'correctness' & sanity.. Summary: Revision Changes Path 1.3593 +1 -0 rpm/CHANGES 1.95 +40 -0 rpm/build/reqprov.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3592 -r1.3593 CHANGES --- rpm/CHANGES 1 Apr 2011 07:29:51 -0000 1.3592 +++ rpm/CHANGES 1 Apr 2011 09:51:45 -0000 1.3593 @@ -1,4 +1,5 @@ 5.4.0 -> 5.4.1: + - proyvind: mandriva: filter overlapping depencies. - proyvind: rubygems.rb: add/provide ruby(abi) dependencies for non-gems. - proyvind: rpmfc: add classifiers for gstreamer plugins & dep generator. - proyvind: use pythoneggs.py for python deps generated by internal generator. @@ . patch -p0 <<'@@ .' Index: rpm/build/reqprov.c ============================================================================ $ cvs diff -u -r1.94 -r1.95 reqprov.c --- rpm/build/reqprov.c 16 Mar 2011 15:23:45 -0000 1.94 +++ rpm/build/reqprov.c 1 Apr 2011 09:51:45 -0000 1.95 @@ -103,9 +103,49 @@ len--; if (strcmp(names[len], N)) continue; + +#if defined(RPM_VENDOR_MANDRIVA) /* filter-overlapping-dependencies */ + /* XXX: Potential drawbacks? Need to study & discuess this one a + * bit further, leaving under #ifdef for now... + * TODO: auto-generated deps too + */ + if (flagtag && versions != NULL) { + int overlap; + + if(*EVR && !*versions[len]) { + overlap = 1; + flags[len] = Flags; + he->tag = flagtag; + he->t = RPM_UINT32_TYPE; + he->p.argv = (void *) &Flags; + xx = headerMod(h, he, 0); + } else { + EVR_t lEVR = rpmEVRnew(RPMSENSE_ANY, 0), + rEVR = rpmEVRnew(RPMSENSE_ANY, 0); + + rpmEVRparse(EVR, lEVR); + rpmEVRparse(versions[len], rEVR); + lEVR->Flags = Flags | RPMSENSE_EQUAL; + rEVR->Flags = flags[len] | RPMSENSE_EQUAL; + overlap = rpmEVRoverlap(lEVR, rEVR); + lEVR = rpmEVRfree(lEVR); + rEVR = rpmEVRfree(rEVR); + } + if (overlap) { + versions[len] = EVR; + he->tag = versiontag; + he->t = RPM_STRING_ARRAY_TYPE; + he->p.argv = versions; + xx = headerMod(h, he, 0); + } else + continue; + } +#else if (flagtag && versions != NULL && (strcmp(versions[len], EVR) || (rpmsenseFlags)flags[len] != Flags)) continue; +#endif + if (indextag && indexes != NULL && indexes[len] != index) continue; @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org