[Rake-devel] A handful of issues

Heath Kehoe hkehoe at budcat.com
Mon Jun 7 13:36:52 EDT 2010

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).


This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 

More information about the Rake-devel mailing list