Hi!

As Mono is progressing towards 1.0, I think we should start thinking about a
binary distribution of NAnt that would run unmodified on all CLI platforms.

I've done some review of the NAnt source code and looks like there are no
fundamental problems that would prevent us from achieving this soon.

Here are my thoughts:

1. Some code (actually very little) is P/Invoke dependent. This code should
be isolated and put in one place.

2. There is one bug in Mono which requires NAnt to use conditional
compilation to overcome the bug. Vide "_timeout" in ExternalProgramBase.cs.
There's no reason why this should be done at compile time.

3. Some task assemblies aren't made to work with Mono yet. Win32Tasks and
VSNet tasks. What about <solution> task then?

4. I've tried to run mono win "log4net.dll" compiled for .NET 1.0 and it
works fine. In fact this version should run just fine on all CLI platforms
because NAnt doesn't use any platform specific features of log4net.

5. I'm not sure about other binaries in "lib" directory. Are there any
limitations of mono that prevent us from using .NET 1.0 binaries on all
platforms? The DLLs are 6 months old, I believe we've seen a huge progress
in Mono world since then.

To address issues 1 & 2 I've prepared a patch that attempts to fix the
issues.

With these fixes in place I was able to rebuild NAnt on Windows, move
binaries to Linux (removing VSNetTasks and Win32Tasks) and rebuild NAnt
completely on Linux without resorting to makefile.

Can you review it and tell me your opinion?

Jarek

Attachment: mono.diff
Description: Binary data

Reply via email to