[Rake-devel] A handful of issues
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.
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?
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