Bonio Lopez wrote:
>   Hi Gary,
>   
>> What happens if you just make a change to p22?  How would you rebuild it
>>     
> without rebuilding the rest? 
> I am sorry, but I don't understand where is the difference to the current
> approach. The nant will run over all projects and see that p1, p11, p12,p13
> are not changed. So it will not rebuild those. Then it will see that p21
> changed and will rebuild it, it also will see that p22 and p23 are not
> changed.
>   
NAnt, per se, doesn't do that.  Individual tasks within NAnt will do 
that.  That means that you're still going to fire up each of the NAnt 
build files.  If you use, for example, a number of <csc> tasks, then 
each one will do its own dependency analysis, which means redundant 
opening and closing of files.

Alternatively, you could just put them all into a single solution file, 
which will get all of the dependency analysis done at once.  But that 
would mean making the solution task smart enough to do compilations in 
parallel, or alternatively, just letting Microsoft worry about doing 
that in msbuild.
> I don't see any problem.
>
> Suppose someone introduces a dependency between p21 and p22.  What are the
> implications for your build process?  Do you have to manually change the
> build script?
> Yes, but with current <nant> task it is the same. Right? So I see no new
>   
No, it's not the same if you use solutions.  You wouldn't have to change 
anything. 

But with NAnt doing the work, it's important to have the parallelism 
integrated with the dependency analysis.  Just allowing the NAnt task to 
build multiple sub-NAnt projects in parallel doesn't quite do that.

> implications. Currently you need to pay attention that you build p21 before
> p22. i.e. that in the <nant> task you include p21 before p22. It would be
> even simpler using "order" attribute. You would only need to change this
> one. 
>   
True, but I dislike anything that permits allows things to execute in an 
order other than top to bottom.  I'd rather see group markers, and just 
move the file to an earlier group.
> Have you looked at using CruiseControl.Net for this?
> Yes, I did. Indeed, it could be solved by CC. But it seems to me to be a
> workaround and overkill (may be I am wrong), to use the second tool in order
> to organize a build process. BTW Gmake also have switches for
> multithreading. 
>   
It's not overkill at all, nor is it a workaround.  It's a separation of 
concerns.  It's much easier to maintain the programs (i.e. maintain NAnt 
and CC.Net) if one program is responsible for managing the parallel 
execution, while another worries about having finer grained control and 
a rich, extensible set of tasks.  I encourage you to revisit this.

The difference between NAnt and gmake is that NAnt has a two-tiered 
dependency analysis, while gmake just has one.  With gmake, the 
dependency analysis is done globally, and then individual tasks 
executed.  With NAnt, the targets are first ordered, but then the 
individual tasks do their own analysis about what to do.  It's not clear 
to me whether one is better than the other, but it is clear that we 
can't assume that a tactic that works for one will be as effective in 
the other.  At a minimum, I'd prefer to see some more study.

Enough people have told me that parallel gmake is more trouble than its 
worth, that I've always avoided it for running on a single system.  It's 
too easy to thrash, and there are a number of tools that weren't 
designed to be run in parallel on the same code base.  I consider it 
mostly useful for doing remote executions in parallel.

Gary



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to