Tim Ellison wrote:
As a follow-up to the recent discussion with Geir about repository
layout, I've been thinking a bit more about the componentization of the
class library, and in particular about how day-to-day development would
progress.
The 'interesting' attribute of the components is that there are circular
dependencies between some of them. For example, SECURITY depends upon
LUNI, and vice versa. I briefly discussed some options for resolving
the circularities earlier, but the point is that this is a bootstrapping
issue -- once we have implementations of SECURITY and LUNI then each can
be built independently against the compiled version of the others.
So I propose that we make a clear distinction between the initial
bootstrap build, and the subsequent component builds. The build.xml
that exists today (.../classlib/trunk/make/build.xml) invokes a 'global'
i.e. cross-component compilation to avoid circularities. The results
are put into .../trunk/deploy/jre/lib/boot.
I say we keep this build.xml as the bootstrap build, then create build
scripts within each component that build only that component against the
jre/lib/boot jars thereby giving localized builds. We can also write
the component build scripts to use the deployed JRE to run ant and the
compiler to be self-hosting!
Unless anyone objects or has a better idea I'll do the minor
restructuring of classlib required (likely next week now).
Maybe I'm missing something, but if A depends on B and B depends on A,
isn't the separation between A and B something to reconsider?
--
Stefano.