Subject: Re: another 1.1 to 1.1B (i386) upgrade report...
To: None <current-users@NetBSD.ORG>
From: John F. Woods <jfw@FunHouse.com>
List: current-users
Date: 03/29/1996 08:31:18
> But the day is coming when I would
> like to be _able_ to build from source without encountering a discontinuity
> in the life-graph of the binary/source world.]

Yeah, I would LIKE that too, but it occurs to me that at least for GCC,
you're just about guaranteed that it is not possible.  GCC is outside
the control of the NetBSD core group (unless you want them never to
upgrade again, in which case maybe you can argue with all the people who
want every single patch and point release thrown into the tree immediately),
and it is structured so that a large number of its features are wired into
the compiler source in a way that guarantees discontinuity (remember the
recent _XF problem?).

Aside from that, though, it would be nice if the number of discontinuities
were small.  But how much does that really take?  Keep the Makefiles in
share/mk and usr.bin/make as plain as possible, and don't use exciting new
library features in make and whatever other tools are needed to build the
library, and it should be possible at least to build make with old headers
and libraries, build libc.a with new headers, build the rest of the build
tools, then you're ready to roll -- but probably with a manual process,
since you're not likely to want to overwrite your live system with half-built
stuff (if you *do* want to, you're probably living dangerously enough to
render moot the conservativism that led you to want a source-only distribution
in the first place).

So, aside from gcc (and that's a big aside, in more than one way!), it should
take relatively little discipline to make source-only rebuilds *possible*,
but I think making source-only rebuilds *automatic* for *everyone* is still
not really practical.

Hmm.  Yeah, ld also rears its ugly head every few months with sea changes,
and some of the important changes can't be accomplished gracefully.  (Well,
I guess the least graceful changes have been in dynamic linking, so using
static-linking to generate one's rebuild-kit might be sufficient.)

Perhaps a reasonable compromise would be to accompany full releases with a
"development kit" that comprises static-linked build tools sufficient to build
a new source tree from scratch.  This could even be created by some interested
third party, rather than being a core release function.