It appears that files specified in <dependencies> elements are used for
calculation of the dependency tree, but not for determination of whether or not
the rule will actually be executed. In other words, if a file listed in
<dependencies> for a rule matches the output of another rule the other rule
will be executed first (if at all), but if such a file has a timestamp later
than that of an output file of the rule for which it was specified it will not
force the rule's task to be executed.
The manual is ambiguous about this behavior; all it says is: "In case you want
to specify some external data a dataflow transformation rule will depend on,
you can use <dependencies> tag whithin <foreach> or <fold> elements."
My expectation would be that if a file listed in <dependencies> is newer than
that an output file of the same rule, then that rule's task _will_ be executed.
In the case of <foreach>, this means that it will be executed once for each
input (or batch of inputs) whose output is older than any <dependencies> file.
In the case of <fold> this would make <dependencies> effectively synonymous
with <input>.
If it really is the intent that <dependencies> affect only the order of
execution of tasks, and not whether or not the tasks are executed, then I
propose adding a flag to <foreach> that enables the behavior I expected as
described above: an "execute on dependency change" attribute or some such.
-peter
Original issue reported on code.google.com by petenewc...@gmail.com on 25 Aug 2011 at 10:17
Original issue reported on code.google.com by
petenewc...@gmail.com
on 25 Aug 2011 at 10:17