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
tsort(1) just needs 1 line of input for each package containing the name followed by a
list of prerequisites ending with a new line
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.