Yeah,
I think Ant needs to clean up the definition of the depends attribute.
The current definition for 'depends' leads to 2 kinds of dependencies, taking
the example below :-
<target name="a" depends="b,c"/>
1) a depends upon b & c.
This is an explicit dependency, and is persistent for the life-time of the Ant
script - it is impossible for b or c to execute before a, regardless of which
targets in the build script you call.
HOWEVER, due to this ordering rule, the above example also has an additional
consequence.
2) b implicitly depends upon c *UNLESS* c explicitly depends upon b.
This implicit dependency is local to only this target definition.
If a different target within the build script were invoked, it could be
possible for c to execute before b.
Extending the above example :-
<target name="a" depends="b,c"/>
<target name="a2" depends="c, b"/>
We now have 2 targets that both have explicit dependencies upon c & b, but we
also have implicit dependencies that conflict.
Obviously if both targets 'a' & 'a2' can execute successfully, then there is
infact NO dependency between b & c (and consequently they should be eligable
for parallel execution)
Eliminating the ordering rule to completely get rid of implicit dependencies is
fundamental to adding support for parallel target execution. (without adding
additional complication to the depends syntax)
----- Original Message -----
From: Klaus Malorny
To: Ant Users List
Sent: Tuesday, December 18, 2007 11:08 AM
Subject: Re: AW: extended parallelism
[EMAIL PROTECTED] wrote:
>> Isn't this the default behaviour anyway?
>
> No - there is no multithreading by default.
> That's why I write the ParallelExecutor.
>
>
>> <target name="a" depends="b,c,d"/>
>> If such a dependency did exist, it should be incorporated in
>> the depends attribute of the 'b' & 'c' target declarations.
>
> Thats the meaning - unordered list.
>
>
>> Assuming in the example above that targets b, c & d have no
>> dependencies of their own, they should be eligable for
>> parallel execution automatically without any need for
>> additions to the syntax.
>
> Thats the ParallelExecutor implementation ;)
>
>
Hmm, interesting view. I was under the impression that there is an implicit
order of the targets listed in the "depends" attribute. Two sentences in [1]
suggest the same:
[...]
Ant tries to execute the targets in the depends attribute
in the order they appear (from left to right)
[...]
It is a good practice to place your tstamp tasks in
a so-called initialization target, on which all other
targets depend. Make sure that target is always the
^^^^^^^^^^^^^^^^^^^^^^^^^
first one in the depends list of the other targets.
^^^^^^^^^
In this manual, most initialization targets have
the name "init".
[...]
[1] http://ant.apache.org/manual/using.html#targets
Klaus
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
________________________________________________________________________
E-mail is an informal method of communication and may be subject to data
corruption, interception and unauthorised amendment for which I-play, a trading
name of Digital Bridges Ltd will accept no liability. Therefore, it will
normally be inappropriate to rely on information contained on e-mail without
obtaining written confirmation.
This e-mail may contain confidential and/or privileged information. If you are
not the intended recipient (or have received this e-mail in error) please
notify the sender immediately and destroy this e-mail. Any unauthorized
copying, disclosure or distribution of the material in this e-mail is strictly
forbidden.
(C) 2005. I-play is a trademark and trading name of Digital Bridges Limited.
All Rights Reserved.
________________________________________________________________________
This message has been checked for all known viruses by the
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp