On Fri, Jul 27, 2018 at 12:42 AM Jeff Johnson <n3npq.jbj@gmail.com> wrote:
There are easier ways to accomplish build ordering using tsort(1) and a minor amount of scripting with the same simplifying assumptions your program is making:
1) no cycles
2) every package provides its own name
3) every package supplies prerequisite package names without versions

Yes that is essentially what my program does (just using a graph library).
(But I don't think tsort can determine reverse deps etc - but it could be scripted too sure.)
I should test some larger package sets to see how well rpmbuild-order scales too...

More important than build ordering is scheduling a set of builds efficiently across multiple build machines to complete in the shortest amount of time taking into account the cost in memory and cpu time of each package build.

That's correct, and I want to do ordered parallel builds over such dependency graphs.