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 dropped
when 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 -- that
make a sharp distinction between build <-> install dependencies who
believe 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 graph
traversals.

The dependency flags could be used as an explicit context marker for
build dependencies, but %track (or %sanitycheck I fergit) used the last available bit. While the bits can be garbage collected, and implemented
differently 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 PNAELV
stock 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]

Reply via email to