On 6/7/2010 2:03 AM, James M. Lawrence wrote:
==== 2 - Task#needed? can be wrong even for immediate prereqs
Should be fixed if Task#needed? (or Task#locally_needed?) is
"officially" supported.
http://github.com/quix/rake/commits/mainline-file-task-needed
Instead of that change to out_of_date?(), I think there should be a
different return value for Task#timestamp that indicates a missing file
(instead of EARLY like it does now). Perhaps nil, or another 'special'
time "LATE" which works like EARLY except LATE>time is always true.
==== 3 - Filesystem timestamp granularity
Unless you have ext4fs, your filesystem most likely records timestamps
only to the nearest second, making it easy to create same-time files.
The fix is easy: change timestamp comparison from> to>=. It's a
pessimization: "When in doubt, rerun." It sounds safer, but what
consequences lurk?
http://github.com/quix/rake/commits/mainline-timestamp-granularity
My immediate feeling is this change should be safe... but like you said,
there may be unforeseen problems.
==== 4 - Dependency relation should be transitive
Let ~> denote "eventually depends on". If a~>b and b~>c, then we want
a~>c. Thus if c executes then a should execute, as is implied by the
dependency graph. Parallel Rake has to assume transitivity, so its
behavior is different.
I think a file task which executes but does not update the file is
reneging. Regarding this as an error would make regular Rake
consistent with parallel Rake, sidestepping the transitivity issue.
I don't think it's necessarily the case that dependencies should be
strictly transitive. I think it's useful to have a task not execute if
its immediate dependencies aren't updated, even if the dependencies'
dependencies were (such as the example I mentioned in my previous message).
-heath
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________
_______________________________________________
Rake-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rake-devel