On Dec 27, 2007, at 7:46 AM, Jeff Johnson wrote:
On Dec 27, 2007, at 3:11 AM, Ralf S. Engelschall wrote:
On Wed, Dec 26, 2007, Ralf S. Engelschall wrote:
[...]
The "BuildRequire" tag is not passed-through
to the binary RPM and the RPM database at all!
[...]
So, can we please store this already internally available
BuildRequire
information from the -bb step into the binary RPM? This is IMHO one
really essential but still missing feature in RPM 5...
Jeff, I really need your assistance here as I'm unable to figure out
in the sources how to actually implement this. I do not well enough
understand the internal processings.
It's fine for me if the actual implementation is still under
#ifdef/#endif for OpenPKG (in case you personally dislike the
idea), but
I really have to come up with a solution for this as this feature
is a
very long-standing shortcoming we are faced with since years and
hence I
really would appreciate to still resolve this for 5.0.
So, can you help out, Jeff? What do I have to patch to get the
"BuildRequire" tags from the .spec to be available via the query
variables BUILDREQUIRENAME/BUILDREQUIREFLAGS/BUILDREQUIREVERSION from
the *binary* RPM and the *installed* package?
On today's TODO, all my other replies were at 80mph on lappie
through gsm,
or with champagne glass in hand ;-)
coffee first ...
Much better now ...
The only 2-day implementation hack I can think of is to make
BuildRequires: N = E:V-R
syntactically equivalent to
Requires: build(N) = E:V-R
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.
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?
73 de Jeff
______________________________________________________________________
RPM Package Manager http://rpm5.org
Developer Communication List [email protected]