See ivy_extension.rb line 589 (http://github.com/klaas1979/ivy4r/blob/15452546811bc9ae74b0c56f53f52002059d37a8/lib/buildr/ivy_extension.rb).
Pepijn On 15 Mar 2010, at 23:26, Alex Boisvert wrote: > Yes, calling Buildr.projects is a little dangerous at this stage. I would > need to see what actually happens (call order) to give you a good answer. > Can you provide a simple buildfile that illustrates this? > > alex > > > On Mon, Mar 15, 2010 at 3:01 PM, Pepijn Van Eeckhoudt < > [email protected]> wrote: > >> Will do. I uncivered this one when trying to use ivy4r with buildr trunk. >> Turns out ivy4r causes a circular dependency in trunk but not in 1.3.5 due >> to this issue. The circular dependency is caused by a call to >> Buildr.projects from an after_define callback. This causes a call to invoke >> on the project being defined as well triggering the circular dependency >> exception. Is there a way to resolve this or should ivy4r be tweaked so the >> projects call is avoided? >> >> Pepijn >> >> Op 15-mrt-2010 om 18:23 heeft Alex Boisvert <[email protected]> het >> volgende geschreven:\ >> >> >> Would you mind filing a Jira issue with your spec? Just to clear the IP. >>> >>> thanks, >>> alex >>> >>> >>> On Mon, Mar 15, 2010 at 10:20 AM, Alex Boisvert <[email protected] >>>> wrote: >>> >>> Wheeep! Yes, it's an issue. I'll fix it right away. >>>> >>>> alex >>>> >>>> >>>> >>>> On Mon, Mar 15, 2010 at 10:10 AM, Pepijn Van Eeckhoudt < >>>> [email protected]> wrote: >>>> >>>> I'm bumping into unpredictable behaviour related to the call chain >>>>> handling. It seems invoke_with_call_chain doesn't restore the call chain >>>>> correctly after calling invoke. Since this is in the core of buildr I >>>>> wanted >>>>> to just check with you guys before creating an issue in jira. >>>>> >>>>> invoke_with_call_chain currently does >>>>> begin >>>>> old_chain, Thread.current[:rake_chain] = Thread.current[:rake_chain], >>>>> new_chain >>>>> execute(task_args) if needed? >>>>> ensure >>>>> Thread.current[:rake_chain] = nil >>>>> end >>>>> >>>>> The ensure block seems obviously incorrect. Shouldn't this be >>>>> Thread.current[:rake_chain] = old_chain? >>>>> >>>>> The following spec shows when this causes things to go wrong: >>>>> describe Buildr do >>>>> it 'should restore call chain when invoke is called' do >>>>> task1 = Rake::Task.define_task('task1') do >>>>> end >>>>> >>>>> task2 = Rake::Task.define_task('task2') do >>>>> chain1 = Thread.current[:rake_chain] >>>>> task1.invoke >>>>> chain2 = Thread.current[:rake_chain] >>>>> chain2.should == chain1 >>>>> end >>>>> >>>>> task2.invoke >>>>> end >>>>> end >>>>> >>>>> So is this an issue or intentional? >>>>> >>>>> Regards, >>>>> >>>>> Pepijn >>>>> >>>>> >>>> >>>>
