On 29/01/13 07:44, Adam Murdoch wrote:
Implementation-wise, I would think about busting up building the task
graph into 2 steps:
1. Build the task graph proper, with a node for each task in the graph
and edges to represent the various types of dependencies.
2. Once the graph is built, calculate the execution plan:
- Take each node that has no incoming edges, sort them and then
traverse each in turn.
- To traverse a node
- Take each soft dependency, sort them and traverse each in turn.
- Take each hard dependency, sort them and traverse each in turn.
I think I know what you mean here and have some ideas on how that could
be built. I will take some time now to implement it and come back with
code ready for a review.