On Mon, 2011-10-10 at 10:22 +0100, Gordan Bobic wrote:
Hi,
Is there a script already available that generates a package dependency
tree from src.rpms? At the moment, rebuilding a distro is quite
inefficient because for each mock run the setup takes a non-trivial
amount of time. What I'm thinking about doing is writing a script that
generates a dependency tree which can then be used, for example, to
generate a Makefile. That would allow for building all the packages in
the correct order with no wasted time on multiple passes in which most
package builds fail due to dependencies.
Anyway, my question is, before I set out to write it, is there such a
script already?
Gordan
Hi Gordan,
You might want to take a look at Styrene, which is in the ARM git repo.
It's a tool that lets you load up a database with deps (typically from
another arch, such as one of the primary archs; this is done from a
binary repo instead of a source repo because a lot of deps aren't
expressed in the srpms), and then queues builds on a koji system based
on that dependency information.
Rather than solve the global dependency graph, it uses a pass-based
approach -- it queues builds for all packages which have their build
dependencies currently satisfied, and then collects the results from
that pass, marking which packages built successfully. The process is
then repeated until no more packages can be built. This allows the next
pass to be queued even if some packages didn't build in the previous
pass (which is a very common scenario). Besides actually queuing builds,
it can simulate/model build passes, which will tell you how much of the
target package set can be built starting from the current base.
Styrene was written over the summer by Jon Chiappetta (fossjon on IRC)
and was used to drive the F13 updates build.
-Chris