DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=35464>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=35464





------- Additional Comments From [EMAIL PROTECTED]  2005-06-27 15:52 -------
Firstly, I had a quick look at Maven. I am not too sure how suitable it is to 
my 
need. 
In fact, thinking again about my business use case, I now believe that I am 
trying to achieve something closer to "auditing" or "monitoring" (more passive 
behavior) than to "building" (more prescriptive behavior).
The idea is that I could have an overall view of that *can* be built from the 
source, which is a superset of what *will* be built. If something is added or 
removed, (even if should not be built) then I can see that as well.

Also, I thought about Steve Loughran's observation (comment #1) that "you need 
to know the output of all predecessors before you can predict what the next 
components will do, something that is done using the filesystem as a persistent 
state communication mechanism".
Indeed. 
This made me thought about the fact that merely *simulating* the chaining of 
input and output files on the filesystem could be enough to get a reasonnably 
meaningful set of deliverables. What I mean is that it is possible to define 
for 
many tasks which file(s) name(s) they will consume and which they will emit as 
a 
result (assuming successful completion). For instance, the <tar> tasks produces 
what is specified in the "destfile" attributes and consumes whatever file in 
the 
"basedir" folder whose name match/don't match the include/exclude patterns. 
<javac> produces a set of .class files from a certain set of .java files etc...
The idea would be then to simulate the lifecycle of files (production/
consumption/deletion), simulate the chaining and deduce from it what are the 
deliverables.

Of course this scenario breaks in various cases :
- <taskdefs> : In the current version of Ant, custom-define <taskdefs> have 
umpredictable inputs and outputs. If Ant mandated that taskdefs explicitely 
define their inputs and outputs, then this issue would disappear.
- output filename existence that depends on input file contents (and not merely 
on existence + Ant build file content). An example is linker output located in 
response files. I would suspect that this is truly hard to solve only if the 
input file is dynamically generated during the build. Otherwise, parsing of 
static input files (that exists before the build is started) can do the job 
(Admitedly could be very tedious to cover formats exhaustively, but feasible in 
theory).
- A variant of the previous case is when a task has unpredictable output(s) 
(like <get> when used with wildcards). Maybe a deeper/smarter simulation could 
help hint the filenames (ie in the case of <get>, obtain a directory listing of 
the files and track the filenames so obtained ?). Non-Ant scripting may be one 
sticky case where output may be truly unpredictable (<telnet> tasks with 
embedded shell scripting come to mind).

I also have the gut feeling in such a file-lifecycle tracking, outputs are more 
important than the input : In many cases, inputs are pattern-based, whereas 
output is well-defined.

Then there is the fact that simulating all targets (at least all target without 
predecessors) will cause different execution paths, that will yield different 
file chains, all of which needs to be simulated. That may well cause a 
combinatorial explosion of cases (?).

One of the things I don't know is how prevalent in practice are the cases that 
cannot be simulated (I suspect that there may be well more than the above 
mentionned three...).

Comments ?


-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to