From: Archie Cobbs (archie@whistle.com)
Date: Wed Sep 09 1998 - 20:29:27 EDT
Godmar Back writes:
> > A larger problem is that the dependencies are recursive, so you can never
> > really be sure, eg.
> >
> > Klasses.jar depends on:
> > - the classes used by the compiler to build it (including Klasses.jar)
> > - the java runtime used to run the compiler
> > Kaffe and kaffeh depend on:
> > - the derived header files
> > The derived header files depend on:
> > - Klasses.jar
> > - the version of kaffeh used to generate them
>
> No, we don't have circular dependencies because Klasses.jar does
> not depend the classes used by the compiler to build it or on the
> java runtime used to run the compiler. It solely depends on the
> .java files in the various directories.
To me something depends on something if the bytes change because
of it... in which case it most certainly does depend on the compiler,
as well as the runtime the compiler runs under (they both could
have bugs), the "zip" program, the time of day that you zip it
(which is stored in the zip file), and a bunch of other things.
Now in theory changing these things shouldn't affect kaffe's ultimate
behavior, but that assumption only holds if you assume there are
no bugs anywhere in the whole system, which of course you can't.
Sure the timestamp shouldn't affect anything, but you can't really
claim it doesn't without asserting there's not some crazy bug
triggered by a different timestamp.
The only hope is to put together a reliable set of tools that you
trust and stick with them.
> Also, kaffeh does not depend on the derived header files.
> (At least, it shouldn't: if it does, we need to fix it.)
Right..
> > That's why to me the easiest thing is to just run some automated
> > script that rebuilds, reinstalls, and regenerates everything a few
> > times, then saves it :-)
>
> No no no. I think there is a deterministic way. We're not the
> first bunch of people attempting to bootstrap.
If you relax the condition that you want to use kaffe to compile
itself, then many of the recursivities diminish. The recipie in
my previous email is deterministic.. but it must start with a fixed
set of tools (ie, a build environment). You do all compiling, etc.
with these tools and not with anything you've just built.
The only problem is kaffeh.. if something changes wrt. header files,
then that makes the fixed tool version of kaffeh suddenly out of date.
But this is normal... upgrading tools, that is.
> > By the way, if you want to tweak more Makefiles or whatever while
> > this discussion is still fresh please go ahead because I've gotten
> > busier with work this past few days and it make take a while before
> > I can work on them.
> >
>
> I don't have a whole lot of time either, but I'll see what I can do.
> I just wanted to make sure we're on the same wavelength here.
I was wrong to suggest that kaffe should be re-built using the
version just installed... all building should be done using a fixed
set of tools (even kaffeh). Nothing that gets built should be
executed during the building process. Is that more consistent with
what you had in mind?
-Archie
___________________________________________________________________________
Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 19:56:56 EDT