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

Reply via email to