Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Nov 1995 02:16:28 GMT
From:      Mark Valentine <mark@linus.demon.co.uk>
To:        rkw@dataplex.net (Richard Wackerbarth)
Cc:        hackers@freebsd.org
Subject:   Re: LKM's still wont compile in -current
Message-ID:  <199511130216.CAA02290@linus.demon.co.uk>
In-Reply-To: Richard Wackerbarth's message of Nov 12,  6:39pm

next in thread | raw e-mail | index | archive | help
> From: rkw@dataplex.net (Richard Wackerbarth)
> Date: Sun 12 Nov, 1995
> Subject: Re: LKM's still wont compile in -current

> I think that you are skirting the fact that there are three separate
> environments.
> 1) The host environment.
> 2) The bootstrap environment.
> 3) The target environment.
> 
> The host environment just "is". I'm not allowed to change it.

Amen!

> The bootstrap environment has the customized tools to build the target.
> In many cases, these tools are the generic tools available from the host
> environment. In those cases, they are specified by a configuration link of
> some sort.
> However, I can override any of them by providing the source code that will
> run in the host environment. For example, I might have a revised version of
> a compiler or make that has a feature that I am using in building the
> target.

OK, I've been treating the bootstrap environment as simply a set of tools
which exist in the host environment (e.g. ``CC=/usr/bin/cc'' for the common
case, ``CC=/usr/local/bin/gcc -V 2.7.0'' or ``CC=gcc -b sparc'' for other
interesting cases).

However, even in the common case, you still want to treat the bootstrap
tools specially (e.g. to end up with a target compiler compiled by itself,
which make world already does in its own brutal way; the standard FSF build
method does this without clobbering the host environment).

So, I agree that we need to firm out a build model which embodies this
distinction (more concrete examples will help this process, since talking
in abstractions won't make the problems clear to a wider audience who
don't have the brain cycles to spare in following all of this).

> And the target is the target. When building the target, we don't step on
> anything in either the host or bootstrap environments. However, we do
> associate with each target the bootstrap environment that knows how to
> build the target.

As in src/make.conf, perhaps...

> Right now, make world tries to pile all three of these environments on top
> of each other. I "sortta" works only because in most cases, the host,
> bootstrap, and target environments are the same.

The "sortta" is probably generous, since building an -experimental system on
a -stable or -current host must be awfully common...

I think that if we fix this, we'll make it easier for people without lots
of kit to play with to join in the development effort (all you should need
is enough disk space on your "working" system for a target build and a
separate boot partition containing a minimal target installation for testing;
or a spare 386 with 4MB^H^H^H5MB RAM and a small disk...).

		Mark.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511130216.CAA02290>