I have run into a possible bug when working with macrodef and parallel in a
recursive situation.
The following build file snip example exhibits this: (This requires the <if>
ant-contrib task, and <math> from Antelope, soon to be ant-contrib).
<macrodef name="recurse">
<attribute name="until"/>
<attribute name="current"/>
<attribute name="method"/>
<sequential>
<if>
<equals arg1="${until}" arg2="${current}"/>
<then>
<echo message="Method: ${method} done"/>
</then>
<else>
<math
datatype = "int"
operand1 = "${current}"
operand2 = "1"
operation = "+"
result = "newcurrent"
/>
<echo
message = "1: M: ${method}, C: ${current}, U: ${until}"
/>
<sleep seconds="1"/>
<echo
message = "2: M: ${method}, C: ${current}, U: ${until}"
/>
<recurse
current = "${newcurrent}"
method = "${method}"
until = "${until}"
/>
</else>
</if>
</sequential>
</macrodef>
<target name="test">
<parallel>
<recurse current="0" method="0" until="5"/>
<recurse current="0" method="1" until="10"/>
<recurse current="0" method="2" until="15"/>
<recurse current="0" method="3" until="20"/>
</parallel>
</target>
Depending on the situation, this could result in an endless loop.
I use something similar to this method when checking out/updating a list of
cvs projects in parallel, and ran across the methoddef's steeping on each
others toes. I was converting from using antcall to macrodef.
I don't know how to handle this, since macrodef should be able to set and
read properties in a global context, but sometimes you want local variables.
Maybe add a flag to <attribute> of global/local?
-- Larry
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]