On 11/02/2013, at 7:31 PM, Marcin Erdmann <[email protected]> wrote:

> 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 have already found an issue with the solution I proposed in my 
> previous email.
> 
> Currently it is valid to add a new task to the execution graph from within 
> gradle.taskGraph.whenReady{}

This is news to me. I always thought things were locked by this point, but I am 
far from familiar with this part of the codebase.

> which means that we should probably indeed build a graph and determine 
> executionPlan every single time TaskExecutionPlan.addToTaskGraph() is called 
> not to break that contract. Looks like I'll need to work on building the 
> graph in the end.

-- 
Luke Daley
Principal Engineer, Gradleware 
http://gradleware.com


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to