[MonoDevelop] Cross platform build strategy

Jayme jayme.edwards at gmail.com
Wed May 25 13:12:50 EDT 2005


Hi John - thanks for your comments!

Well just for kicks I created NAnt scripts for MonoDevelop.Dock, 
ICSharpCode.SharpAssembly, ICSharpCode,SharpRefactory, MonoDevelop.Core, and 
MonoDevelop.Gui.Utils (until I ran into the dependency on Gnome-Sharp which 
isn't included in mono on windows) and these all build and run the tests 
flawlessly under 1.1.7 on Windows. 

I've been writing tasks for NAnt for almost 4 years now and have used it on 
two commercial projects at the companies I've worked as a software architect 
for and I can tell you there are alot of great people on the NAnt project 
that Microsoft basically ignored when they started the MSBuild stuff. While 
MSBuild is cool because Microsoft has finally decided to "wake up" and 
support a standard file format, the reality is Whidbey is still a while 
away, the community (as usual) is who innovated here in the first place (by 
porting Ant to .NET) and there are over 80 tasks available for NAnt that do 
all kinds of things that Microsoft won't have out the shoot (because of 
competitive conflict of interest) such as support for the mono-specific 
parameters of gcsc, subversion support, and oppenoffice etc.

I hate to get into a religious discussion here but I will point out a couple 
things. NAnt is available today and if Monodevelop used it I can see the 
current NAnt developers being more than happy to test on mono (and other 
platforms) even more rigorously then they already do. Also since MSBuild and 
NAnt both use XML files, you can create an XSL stylesheet that will convert 
from one format to another should MSBuild become stable and released and 
have enough tasks to want to switch. Some custom tasks like C# script etc. 
would have to be converted manually, but I can't see that being a reason to 
not use it.

I am going to try getting the remaining gnome-dependent build scripts 
working on my FC3 image when I get home today. If you or anyone would like, 
I can send these in a zip file when I get further to get you started. I've 
already more than halved the lines of code that were in the makefiles 
because of NAnt's powerful pattern matching syntax!

Monodevelop is a great IDE. Mono is an even better runtime. It would just be 
so great if we can finally write and run CLR code on any platform and 
without the licensing and time-to-market constraints Microsoft is currently 
placing on C# developers.

-Jayme

On 5/25/05, John Luke <john.luke at gmail.com> wrote:
> 
> Hello,
> On Wed, 2005-05-25 at 08:05 -0500, Jayme wrote:
> >
> > I would recommend switching the build system for Monodevelop to NAnt
> > (http://nant.sourceforge.net).
> >
> > - Create a build script that someone with NAnt installed can download
> > to their computer and run on their local windows / linux / OSX box
> > that will use the subversion tasks for NAnt to get the code from SVN
> > and any other dependencies on wierd versions of GTK# etc. This seems
> > to be happening each time you guys release and expecting people who
> > are just making the switch to linux to understand all the issues with
> > dependency management when you could do this with a NAnt build script
> > seems to not be the most efficient method for getting people going
> > with a development build of Monodevelop they can use to contribute
> > patches back with.
> >
> > -Switch the build scripts for Monodevelop itself over to NAnt. NAnt is
> > in version 0.85 RC3 and has alot of really great people working on it.
> > I will personally volunteer to help write any new tasks needed to get
> > things that are being done by the makefiles today working in NAnt.
> >
> So I agree (keep in mind it is just my personal opinion) in the abstract
> that we want to allow people to just download and build in an easier
> fashion than auto* tools, but keep in mind that wasn't really an option
> to fairly recently as we had a dependency on a C library. Now that we
> no longer have that issue we can discuss certain things but I am not
> sure nant is the answer.
> 
> Some of what I would consider a requirement:
> - msbuild compatibility in some sense
> vs.net <http://vs.net>, sharpdevelop 2, and x-develop I believe all will 
> use this file
> format and I think there would be great value in also using it
> - allows installation and dependency checking
> - the logical equivalent of configure && make && make install
> but it could be much simpler then how the auto* tools do it
> - allows dist-like target easily (probably trivial)
> - easy to learn and work with (the people who maintain MD are already
> familiar with the current way)
> - is guaranteed to work on mono reliably
> - someone does the work to do it and posts a patch
> 
> The people who work on nant seem like very nice people but I am not sure
> if fits very well with the way we work or is consistently working on
> mono nowadays.
> 
> Perhaps a much lower-tech solution would be to provide already built zip
> files with source? This way people could just download, unzip , and run
> then if they needed the source it would still be there.
> 
> By the way MonoDevelop doesn't work on windows currently.
> 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://galactus.ximian.com/pipermail/monodevelop-list/attachments/20050525/a9dab62a/attachment.html


More information about the Monodevelop-list mailing list