[Mono-list] Mono CVS build issue

Piers Haken piersh@friskit.com
Fri, 13 Sep 2002 01:46:34 -0700


Yup, your diagnosis of the problem is correct, there's a conflict with
the newly-built corlib.dll.

Here's a repost of my advice from a while back, hope it helps...

>>>
Building the class libraries on linux is currectly a bit of a black art
sue to the dependancies between the compiler and the runtime.

You'll need to do the following steps:

- Install a working version of mono (I'll refer to this as the
'install')
- Get the CVS sources for mcs and mono (I'll refer to these as 'CVS mcs'
and 'CVS mono')
- build the CVS mcs.exe and the CVS corlib.dll and copy these to your
install directory (bin & lib)
- build CVS mono and copy the bits over your install
- now build the rest of the CVS class libs and copy them over your
install

Piers.

> -----Original Message-----
> From: Andrew Birkett [mailto:andy@nobugs.org] 
> Sent: Friday, September 13, 2002 1:17 AM
> To: mono-list
> Subject: Re: [Mono-list] Mono CVS build issue
> 
> 
> On Fri, 2002-09-13 at 02:23, Ricardo Kirkner wrote:
> > Your mono runtime and corlib are out of sync.
> 
> Ah, I only recompile corlib just now because that's what I'm 
> working on.  Sure enough, if I try to build the other dll's I 
> get the same error message.  
> 
> Some of the method in the class libraries don't contain any 
> bytecode and are instead flagged as 'implemented directly by 
> the runtime'.  When the runtime encounters one of these at 
> execution time, it checks that it has a suitably named 
> function and runs it.  If you've got up-to-date dlls but an 
> out-of-date runtime then the dll might say 'method foobar is 
> directly implemented' but your out-of-date jit doesn't know 
> about foobar.
> 
> The problem appears to be that when System.dll is built, the 
> following command is run:
> 
> MONO_PATH=../lib: mono ../../mcs/mcs.exe --target library 
> --noconfig -o ../lib/System.dll -r corlib -r System.Xml -r 
> mscorlib @.response
> 
> .. which will use the corlib.dll which has been put into 
> ../lib (earlier in the build) rather than the one in your 
> installed version.  The corlib in ../lib is almost certainly 
> more recent than your installed version, so you will probably 
> get an error.  I thought there used to be some fancy renaming 
> scheme to stop this happening?  The current scheme looks like 
> it will only work so long as there has been no new builtins 
> since mono-0.15 (or whatever your installed version is).  I 
> remember for a while I just hacked the makefiles so it wrote 
> ../lib/new_corlib.dll instead.
> 
> *confused*
> 
> Andrew
> - www.nobugs.org -
> 
> 
> 
> _______________________________________________
> Mono-list maillist  -  Mono-list@ximian.com 
> http://lists.ximian.com/mailman/listinfo/mono-> list
>