I worked on this a bit last week. I thought I'd mention it here:
http://fedorapeople.org/gitweb?p=skvidal/public_git/scripts.git;a=tree;f=moc...
mockchain.py
mockchain.py [options] chrootname file.src.rpm [file1.src.rpm] [file2.src.rpm] ...
Builds a series of srpms in mock one at a time. After each successful build of a package it adds the resulting packages to a local repo which are available to the next package to satisfy buildreqs.
options: -c - continue on package build failure - by default it will exit if a package fails to build. set this if you wish it to try and continue for the rest of the packages.
-l path - set the path to put the results/repo in. This path needs to be somewhere accessible to users other than you for reading as the mock process doesn't run as you.
-a url - add this repo url to the yumconfig for the buildroot. This can be specified multiple times. Let's you point to multiple paths beyond the default to pull build deps from.
--recurse - build all pkgs, record the failures and try to rebuild them again and again until everything gets built (or until the set of pkgs failing to build are the same over)
This does not try to sort the packages by build order b/c that is too much effort and not obviously doable with the buildreq information we have.
The build process when you use -l is idempotent so a package which has already been successfully built will not be built again.
If you want to force the rebuild of a package which has been built successfully simply remove the 'success' file from the dir with the package results in it. Package results are written out into a dir named: chrootname/pkgname-ver-rel/
for example: fedora-16-x86_64/yum-3.2.29-0/
-sv
buildsys@lists.fedoraproject.org