Fix findBuildDependencyInQueue

Previously this function didn't actually have a lot of effect. If a build A had a dependency B, Hydra would start B first. But on the next scan through the queue, it would start A anyway, because of the "busy => 0" restriction.

Now the queue runner won't start a build if a dependency is already running. (This is not necessarily optimal, since the build may have other dependencies that don't correspond to a build in the queue but could run. One day we'll start all Hydra builds in parallel…)

Also, for performance, use computeFSClosure instead of "nix-store -qR". And don't bother with topological sorting because it didn't have an effect anyway since the database returns dependencies in arbitrary order.

Created by  Eelco Dolstra  on May 3, 2013
YEXD7CBKPTMRCYQFNJFWXJUFOAKXNCVVYYJW3PHXQ5CX53Y5CUGQC
Change contents