Thanks for this work, Heath. I've pushed a version of your patch and added some tests.
You corrected an inadequate fix I made for some curious behavior in mainline rake, mentioned in the second half of http://rubyforge.org/pipermail/rake-devel/2008-October/000610.html Though my solution is more efficient, it fails on a kite-shaped graph (a diamond with a tail). However your solution is simpler, nicer and (incidentally!) fixes the problem. Do you have an example which shows the reason for the "if needed?" clause after "task.execute(task_args)" in your patch? I'd be surprised if that does anything; nodes are executed only once, and duplicate nodes are not possible (being keyed on object_id). While investigating this bug I found some more curiosities with mainline rake (next email). JL On Thu, May 20, 2010 at 11:42 AM, Heath Kehoe <[email protected]> wrote: > > On 5/19/2010 1:00 PM, Heath Kehoe wrote: >> >> So we're sticking with ruby 1.8 for now. As I said, perhaps drake's >> approach will be better for 1.9, I'll try that out sometime. >> >> -heath >> >> > > I tried drake, and it is promising, since its compute tree model is much > more efficient than the MultiTask model I was using, especially in null > builds (no creating/joining of thousands of threads). > > However, it has a bug that prevents me from deploying it in our project; > that bug is it sometimes fails to execute tasks during parallel builds. I > created a simple test case and filed a bug on the drake rubyforge tracker. > > -h _______________________________________________ Rake-devel mailing list [email protected] http://rubyforge.org/mailman/listinfo/rake-devel
