----- Original Message ----- From: "Ian MacLean" <[EMAIL PROTECTED]> To: "Gert Driesen" <[EMAIL PROTECTED]> Cc: "'Troy Laurin'" <[EMAIL PROTECTED]>; "'J. Christopher Six'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Friday, December 03, 2004 9:58 AM Subject: Re: [Nant-users] Re: Segfault during compilation with mono on Linux
> Gert Driesen wrote: > > >>-----Original Message----- > >>From: [EMAIL PROTECTED] > >>[mailto:[EMAIL PROTECTED] On Behalf Of > >>Ian MacLean > >>Sent: vrijdag 3 december 2004 9:29 > >>To: Gert Driesen > >>Cc: 'Troy Laurin'; 'J. Christopher Six'; > >>[EMAIL PROTECTED] > >>Subject: Re: [Nant-users] Re: Segfault during compilation > >>with mono on Linux > >> > >>Gert Driesen wrote: > >> > >> > >> > >>>>>This is a legacy of Ant not having expressions or an if > >>>>> > >>>>> > >>>>> > >>>>> > >>>>statement, so > >>>> > >>>> > >>>> > >>>> > >>>>>the only way to conditionally perform tasks was via this > >>>>> > >>>>> > >>depends/if > >> > >> > >>>>>mechanism: > >>>>> > >>>>><target name="foo" depends="foo-test" if="${foo-exists}"> > >>>>> <do-foo /> > >>>>></target> > >>>>><target name="foo-test"> > >>>>> <available file="foo.txt" property="foo-exists" /> > >>>>></target> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>Since NAnt now does have expressions then that behaviour > >>>>doesn't make as > >>>>much sense. You can achieve the same thing by putting the if > >>>>test inside > >>>>the target. However with the current behaviour you *can't* > >>>>prevent both > >>>>a target and its dependencies from being executed just by > >>>>using the "if" > >>>>attribute. This seems like one case where diverging from Ants > >>>>behaviour > >>>>might not be a bad thing. Certainly the current behaviour > >>>>violates the > >>>>"principle of least suprise". > >>>> > >>>> > >>>> > >>>> > >>>I understand, but it does make sense that dependencies can > >>> > >>> > >>have influence on > >> > >> > >>>whether or not the target should be executed. > >>> > >>> > >>> > >>> > >>they can anyway : > >> > >><target name="foo" depends="foo-test" > > >> <if test="${foo-exists}" > > >> <do-foo /> > >> </if> > >></target> > >> > >> > > > >Ofcourse, but I prefer having the condition on the target (when possible). > > > > > > > >>however right now you *can't* stop a target *and* all its > >>dependencies > >>from being run by using the if attribute - and that seems > >>like a big > >>functionality hole. > >> > >> > > > >Yeah, I know ... > > > > > > > >>I think the "stop this target and all its dependencies from running" > >>use-case is a more common one than the: > >> > >>"stop only this target but let all its dependencies execute" one. > >> > >> > > > >If you put it like that yes, but another common use-case is : "execute a > >target, but have its dependencies decide whether tasks in that target should > >indeed be executed" > > > > > > > yes and as I pointed out - that can be done with: > > <target name="foo" depends="foo-test" > > <if test="${foo-exists}" > > <do-foo /> > </if> > </target> > > ie the dependencies set the value of foo-exists. Yes, ofcourse. > >If your first use-case is that common, then how come it has taken several > >years for this to become an issue ? ;-) > > > > > > > fair point - I guess everyong has just worked around it up till now. Yeah, could very well be. But I think you must agree that in some (most?) circumstances, other targets (that determine whether a given target should be executed) should get executed first (and set some property indicating whether the "build" target should be executed). eg. how can I determine whether a "build" target should be executed, if the "is-uptodate" target is not executed first ? I think it would be pretty common to consider the "is-uptodate" as a dependency. > >>well - adding useful functionality seems like a pretty good reason - > >>especially when the Ant behaviour is only there because they lack an > >>expression system. > >> > >> > > > >Is that indeed the reason ? > > > > > > > Troy seemed to think so. Maybe Stefan is reading and can offer his > opinion. Personally I have no idea. I'll change the topic of this thread and "Cc" Stephane to get his attention ;-) > > >>Sure - of course breaking compatibility is a bad thing generally - > >>however in this case I think there are probably more users who are > >>frustrated/confused by the current behaviour than are > >>actively relying > >>on it. I could be wrong though - I'd love to get peoples > >>opinions on this. > >> > >> > > > >Yeah, me too. I have no problem with this change, if our user base (and not > >just one or two persons) agrees its for the best, and if the Ant developers > >only implemented it like this because they do not have an expression system. > > > > > Excellent - we have reached agreement :) You didn't have doubts that we would, or did you ? ;-) > > >> should be secondary to having it do the > >>right thing. > >> > >> > > > >But we should at least make sure the new behavior is clearly documented, and > >announced as a (major) breaking change (if we decide to change this > >behavior). > > > > > totally - no argument there. Ok Gert ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ Nant-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-users