Subject: Re: CVS commit: src
To: Scott Reynolds <scottr@og.org>
From: John Darrow <John.P.Darrow@wheaton.edu>
List: current-users
Date: 03/13/1999 01:38:37
> On Thu, 11 Mar 1999, John Darrow wrote:
> 
> > As I noted in PR 7089, this still leaves make release/snapshot broken
> > wrt. domestic binaries going into the 'exportable' tarballs.
> 
> I've seen the PR and intend to review it when I have some free time.

Fair enough.

> The change you referred to actually ensures that we do not decend into the
> domestic tree at all unless one of the following is true:
> 
>   o  the user has a `domestic' subtree, EXPORTABLE_SYSTEM is not set, and 
>      the user does a `make build',
> 
> OR
> 
>   o  the user does a `make obj', `make clean', or `make cleandir'.
> 
> The release procedure for several ports starts with two exportable builds
> (bootstrap and build-with-self), after which release sets are generated. 
> Only after these steps are completed -- which is often the case, anyway,
> since many release sets are generated outside of North America -- the
> domestic binaries and secr set are generated.
> 

One of my intentions with the build modifications was to streamline this
process by reducing the amount of repeated compiles and hand-run commands,
while still providing the full flexibility necessary.  For example, the
two-stage release process above could be done (using my modifications)
by a make build in src (with DESTDIR unset) followed by a make build-rel in
src/etc.  This streamlining comes in very handy on the slower architectures,
where the build process may take days and be left unattended most of the
time.  I also tried to make sure that my changes didn't break anything new
in a cross-compiling environment.

(Part of the impetus for these modifications was my purchase of a
PII/333 which builds fast enough for me to test the changes I've made.
For reference, it takes approx. 135 min for a make build in src, 90 min
for a make build in xsrc, and another 90 minutes for an (expanded) make
release, which includes tarballing domestic, X, and all the sources 
including xsrc and pkgsrc.)

> A little more background on the problem these commits were solving...  One
> of the primary goals of the changes I've made over the last 8 weeks was to
> insulate the main tree from domestic build dependencies.  I did this for
> three reasons:
> 
> (a) to make it ~trivial for someone to build the domestic binaries and/or
>     secr set after installing a previously-built exportable distribution
>     ("cd domestic; make build"),
> (b) to make it possible for someone outside of North America to graft in a
>     replacement domestic tree with as little pain as possible, and
> (c) to eliminate some nasty cycles in the dependency graph as cleanly as
>     possible.
> 
> I believe at this point that I've hit pretty close to the mark on all
> counts while maintaining process coherency for the ways that people
> actually use the build system.  However, this doesn't imply that things
> can't be improved.  In particular, I ignored the snapshot/release targets. 
> Those weren't my baby, and to be honest, just the chunk I bit off was
> enough of a challenge.
> 
Conversely, my changes basically left the build target as-is, and focused
on the snapshot/release targets, with the build-rel target added as a
convenience.  If we wanted, we could even add further targets, such as
a 'make two-stage' which performed the two-stage build process
automatically... though at that point we get into issues of feeping
creaturism :)

> --scott
> 

jdarrow

--
John Darrow
Computing Services, Wheaton College, Wheaton, IL
John.P.Darrow@wheaton.edu