On Dec 27, 2007, at 8:13 AM, Jeff Johnson wrote:
That hack starts in build/reqprov.c adding the "build(...)" name space wrapper, and continues in rpmdsNew(), where all build(...) dependencies need to be droppedwhen loading a dependency set. There's another hack needed in rpmdbAdd() and rpmdbRemove() to skip indexing build(...) requires dependencies.
Actually it will be easier to just filter "build(...)" dependencies, either
in rpmdsNext() or at a higher level in rpmtsCheck() and rpmtsOrder(), than to drop "build(...)" build dependencies in rpmdsNew(). There's a filtering need in --query too, but that is largely cosmetic display fiddling rather than essential dependency mechanism that can be fluffed if necessary.
Assuming there is a path forward (there are many -- including me -- thatmake a sharp distinction between build <-> install dependencies whobelieve that adding BuildRequires: to binary packages is bad craziness), the name space "build(...)" will evolve into Yet Another arbitrary attribute called "build" that will be used more generally to direct dependency graphtraversals. The dependency flags could be used as an explicit context marker forbuild dependencies, but %track (or %sanitycheck I fergit) used the last available bit. While the bits can be garbage collected, and implementeddifferently using an enum instead of bit flipping, there's likely too little time to Get It Right. Sound like a plan?
The other part of the original request was to also tie the build dependencies
to --with foo and --without bar.A few years back I was given 10 days (before rpm&distro release) to implement arch sensitive build dependencies. That means that different build dependencies were seen on different arches. Your --with/--without request is just a different context
to test before exposing/hiding certain dependencies. I ripped the implementation mostly because noone was using (even though the original RFE was "Absoulutely MUSTHAVE this feature or the PNAELVstock price will suffer!" go figger), but the idea of exposing/hiding dependencies based on a filtering name space was perfectly sound. IIRC, the filtering syntax
looked like
BuildRequires: archfilter(N:!i386:ppc*)
Check rpmdsNew() in rpm-4.4.2 for the implementation. The tricky part
will be establishing reliable --with/--without foo conetx with macros or
with /etc/rpm/sysinfo/Stuff
73 de Jeff
73 de Jeff ______________________________________________________________________ RPM Package Manager http://rpm5.org Developer Communication List [email protected]
______________________________________________________________________ RPM Package Manager http://rpm5.org Developer Communication List [email protected]
