[Sablevm-developer] Obsoleting sablevm-classpath NOW!
Brought to you by:
egagnon
From: Grzegorz B. P. <ga...@de...> - 2004-03-22 03:14:10
|
Hi everybody, Spoiler: this SableVM supports GNU Classpath CVS out-of-the-box svn co svn://svn.sablevm.org/developers/gadek/sandbox/svm-cpootb [ Instalation instructions are at the end ] How big hack it is, you'd ask? Well, yes, it is one, but not that big. But let me explain from the beginning. ==== Story ==== I discussed with Mark integration of GNU CP and SableVM. As far as I could understand his POV, the course will probably be so that each VM itself supplied own set of VM* classes. These classes wouldn't need to reside in GNU CP tree, so ./vm/reference will move to ./vm. (this is still a matter of discussion, I am not stating what will be!) Since some time I was looking at the diff between our classpath and upstream besides changes in VM* classes there were mainly thing related to ClassLoader, which currently is broken/doesn't exist in GNU CP, plus some other stuff that will have to be actually merged, ie. removing static initializers (though not too many of such things). So I simply integrated VM* classes subtree with sablevm source, plus added these classes, which we have to have modifed because of the above reasons. This approach can be seen as controversial, but IMO there's no reason for SableVM to suffer just because all CP developers (us including) haven't agreed on ex. what ClassLoader should look/work like! The list of "classes that should not be there" (there's currently 12! of them) is provided and these classes should be eliminated one by one as soon as Classpath's code of this classes becomes usable for us. But this can be done incrementally and we can work w/ GNU CP CVS now, and not at the end of the process. If this or similar idea gets accepted (are you liestening Etienne? ;-) we can stop providing our "own" sablevm-classpath tree, but simply ship (almost) original classpath 'dist' tarball plus sablevm tarball. Unfortunatelly this doesn't let us forget about merging with GNU CP, as merging of changes to the VM* classes will always be needed until the interface isn't stabilized. And of course we need to merge changes done to these "classes that should not be there" in our tree, but we do that already anyway and this too should go away after some time. ==== Rough edges ==== The current code has some "features" you should be aware of. 1. Classpath *must* be installed first because jikes needs these classes to properly compile VM* classes. 2. WARNING: During 'make install' VM* classes from sablevm *overwrite* Classpath VM* classes (and the "classes that shouldn't be there" overwrite their counterparts). 3. I assume you're going to use jikes, no other javac is supported ATM. 1. will probably never go away, and 3. don't seem to be very harmful. Ad. 2: this is because currently bootclasspath can NOT contain more that one path. This should go away if we add support like for normal classpath values, so that ":" was used as a separator. Put onto immediate TODO list *IF* this or similar approach is accepted. ==== Installation instructions ==== 1. get SableVM from the above SVN address. 2. get GNU Classpath from CVS http://savannah.gnu.org/cvs/?group_id=85 3. get easy-classpath-build script by using: svn cat svn://svn.sablevm.org/sablevm-classpath/branches/staging \ >./build_sablevm-classpath chmod +x ./build_sablevm-classpath 4. go into GNU Classpath source dir and run ../svm-cpootb/autogen.sh ../build_sablevm-classpath /where/you/want/to/install 5. go into SableVM source dir 'svm-cpootb' ./autogen.sh && ./configure --prefix=/where/you/want/to/install && \ make && make install Have fun! Grzegorz B. Prokopski -- Grzegorz B. Prokopski <ga...@de...> Debian GNU/Linux http://www.debian.org SableVM - LGPLed JVM http://www.sablevm.org Why SableVM ?!? http://devel.sablevm.org/wiki/WhySableVM |