[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#132885: ITP: mcs -- C# compiler



On 02/08/02 Eric Molitor wrote:
> Mono itself is...
>    Classes (MIT X11)
>    Mint - MSIL/CIL Interpreter (LGPL)
>    Mono - MSIL/CIL JIT Compiler (LGPL)
>    Meta Data

There is a disassembler, too, and a compiler tool that may be useful
also for other projects (monoburg). Both are GPL.

> (all of which come in one mono package from upstream [cvs module mono])
> 
> The c# compiler is a separate module from upstream [cvs module mcs]
> MCS - C# Compiler (GPL)

In the end I think we'll have a single package (note that the class
libraries are in mcs as well).

> Per consultation with Doogie (AKA Adam Heath) since there were two upstream 
> packages I sent two ITP's. (There will probably actually be several debs to 
> handle all of this... mcs, mono, mono-classes, mono-mint, mono-meta, etc. I 
> hesitate to speculate at this time how everything will be packaged.)

My suggestion is something like:
	mono-lib-corlib: core class library
	mono-lib-system: System.dll
	mono-lib-*: other libraries
	libmono and libmono-dev: runtime C libraries
	mono-utils: mondis, pedump
	mono-mint: interpreter
	mono-compiler: mcs
	mono: JIT

> Mono (mint, the jit compiler, classes, and metadata) would go into main.
> mcs   (the compiler which depends on a c# compiler) would go into contrib.

Note that the jit and mint depend on the classes and the classes, too are
built with non-free sw. Actually, while I'm confident mcs will be
compiled on linux pretty soon, the classes are a harder problem and will
take longer.

> My interpretation is that mcs is free software that depends on non-free 
> software. Eventually I hope this will change but for now thats my 
> interpretation.

Well, mcs depend on free sw, but that free sw still has bugs :-)
The current free classes are capable enough that you can compile simple
programs with mcs on linux.
Anyway, I think it's not a big problem if the packages go into contrib
until mcs and the classes can be compiled with a bootstrapped mcs
on the target system:

	csc compiles mcs to mcs1
	mcs1 compiles mcs to mcs2
	mcs2 compiles mcs to mcs3

	mcs3 compiles corlib to corlib1
	mcs3 compiles corlib to corlib2 (using corlib1)
	mcs3 compiles mcs to mcs4 (using corlib2)

	mcs4 and corlib2 ship as mcs and corlib in the tarball

At this point on linux you'll just use the included mcs and corlib
to compile them again.
We have a few steps more than gcc because we have to compile corlib,
too.

lupus

-- 
-----------------------------------------------------------------
lupus@debian.org                                     debian/rules
lupus@ximian.com                             Monkeys do it better



Reply to: