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