[kaffe] Build System (was: 1.1.0 development release + ideas)

Dalibor Topic robilad@yahoo.com
Fri, 5 Jul 2002 03:09:23 -0700 (PDT)


--- Jim Pick <jim@kaffe.org> wrote:
> * New build system
>   - The first thing that happens in the build
> process is that a
>     "bootstrap" version of kaffe gets built (for the
> host platform),
>     using a fairly conventional configure/make type
> process.  After
>     that, the build process is done from a (still
> somewhat crude)
>     Java application, called "kaffe-buildtool".

I like the idea of bootstrapping using makefiles first
before handing it all to kaffe to rebuild itself. May
I propose jakarta ant for the building process? That
woul d leave the intrisics of the build to ant's
build.xml file, while allowing the kaffe-buildtool to
be a simple ant frontend.

>   - kaffe-buildtool will support interactive
> configuration (similar
>     to Linux's "make menuconfig" or "make xconfig"),
> so it will be
>     possible to tune Kaffe to specific environments
> or applications
>     (eg. cross-compiling subsets for embedded uses).
>  (WARNING!  I'm
>     not a great Java programmer, please don't laugh
> at my code)

If we used ant, that would mean kaffe-buildtool would
be used to set and properties and passing them to the
ant underneath. Properties like kaffe.engine for
example.
 
>   - because the build process is Java driven, there
> is no need for
>     Makefiles outside of the stuff needed to build
> the bootstrap.
>     The logic currently encapsulated in
> libtool/automake/libltdl
>     gets moved into the java build tool.  This will
> make maintenance
>     much easier.

Ant's xml build descriptions, while a little verbose,
could be easier to maintain then encoding the logic
into the tool.

>   - the class libraries will be built at runtime. 
> We shouldn't have to
>     check anything other than a few bootstrap
> classes into CVS if we
>     require the use of jikes (for releases, we can
> ship a pre-built
>     Klasses.jar with enough classes to run kjc).

Sounds like a good solution to the Klasses.jar chicken
& egg problem. Running kjc with kaffe -verbose should
give us a good idea of what classes are needed to
recompile Klasses.jar and friends.

>   - unfortunately, the build system I've got so far
> (that I did for
>     KaffePro) is only partially complete, and isn't
> quite ready to
>     replace what we've currently got.  I'd like to
> check what I've
>     got in to get some feedback, but it's not good
> enough yet that
>     it could be used to replace the current build
> system without
>     breaking most ports.  So I'm going to do
> development on the build
>     system in parallel with our development
> releases, until it's
>     ready to be merged in.

Go for it. There has been some demand on the list for
tailoring kaffe to specific needs, and your code could
give those people the opportunity to do it in an
easier way than hacking make files. I'd assume that
most users of a virtual machine are more familliar
with its language than auto* or make languages. ;)

> * Automated regression testing
> 
>   - I had set up a multi-platform regression testing
> rig for KaffePro
>     back at Transvirtual.  I'd like to do something
> similar (sort of
>     like TinderBox) on kaffe.org.  The scripts will
> need to be somewhat
>     different since the machines won't all be on the
> same network (my
>     old scripts did most of the work over NFS). 
> Something like this
>     would be invaluable, since it's there are so
> many ports.
> 

I believe that regression testing may be more
attractive for new developers if we used junit instead
of our current shell script. Junit integrates nicely
with ant and is well documented. Our shell script does
neither.

There are several continuous integration tools for
ant: anthill, cruisecontrol and jakarta's gump. There
is Rant, a version of ant that can execute build tasks
remotely. That might help you solve the different
network problem.

We could also take a look at jakarta's alexandria. It
apparently uses project descriptors in xml to manage
builds, testing and so on for a project.

Oh, and there is a c-compiler task for ant in
developement on sourceforge. That might eventually
help those people who want to build kaffe with
different compilers (ms vc++).

cheers,

dalibor topic

__________________________________________________
Do You Yahoo!?
Sign up for SBC Yahoo! Dial - First Month Free
http://sbc.yahoo.com