Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Jun 1997 22:27:07 -0700
From:      "Jordan K. Hubbard" <jkh@time.cdrom.com>
To:        Mike Tancsa <mike@sentex.net>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: make world error in RELENG_2_2 
Message-ID:  <26034.866784427@time.cdrom.com>
In-Reply-To: Your message of "Thu, 19 Jun 1997 17:17:04 EDT." <3.0.2.32.19970619171704.02693930@sentex.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
> You have sort of proved my point... As I said before, I try and follow the
> mailling lists as closely as possbile for any caveats / changes to the
> cvsup process... My sup file consists of the following
> ...

I think the real problem here is that some folks are simply unclear on
the amount of "expertise" required to use /usr/src as an effective
upgrade tool.

You ask why we don't document the world target - but we do!
/usr/src/Makefile is the documentation for the world target, and
before you start laughing and figuring 'ol Jordan is copping-out here,
let me just explain that for anything which requires building from
sources, we *definitely assume* a very comfortable degree of knowledge
in how to analyze Makefiles and see exactly what they are doing, up to
and including making inferences about where the dependencies are and,
if necessary, taking whatever steps are necessary to ensure that a
failed build is jump-started from the right place.

The world target *does* generally work, don't get me wrong, but it's
also exceedingly easy to get to a point where the delta between where
you are and where /usr/src would like to take you has diverged too far
to allow "world" to actually work.  In such cases, you need to know
how to shepard the process through by hand and the Makefile truly says
it all where that's concerned.  I can't imagine any more effective or
concise body of documentation than the build system itself to someone
who knows what they're doing, and someone who doesn't know what
they're doing really shouldn't be using the world target - they should
be hanging back at the major release points and upgrading via binaries
only.

We're proud of our integrated build system and, given that it's also
often the quickest way of getting a fix into a user's tree, we do
sometimes tend to recommend it as a solution in situations where we
really shouldn't.  Building from source is NOT a generic,
targeted-at-the-end-user kinda mechanism and I'm sorry if we ever lent
that impression.  It's not.  It's for software engineering types to
use, those who are more than comfortable with the idea of reading
Makefiles and figuring it out, and in that sense I'd say it's probably
as documented as it's ever going to be.

This is also hardly the "elitist" stance some might see it as - it's
just being honest about how this process works and hardly unknown in
this industry.  If you walked into IBM tomorrow as an engineer, for
example, and were tasked with porting some large, obscure product of
theirs from AIX to another UNIX variant, do you think you'd find a
source tree with a carefully documented build system, all easily
understandable in a ten minute study?  Ha Ha.  No.  What you'd find
instead is almost certainly something which was completely opaque to
the average joe and aimed strictly at those who know how to take a
build system apart in its entirety, say "aha, so THAT is what you
idiots had in mind", and then adapt it to the new target system (or,
as I've frequently done in such situations, do it over since the
original designers had all the pan-UNIX expertise of a team of Visual
Basic programmers and did it wrong for anything _but_ AIX).

That's just the nature of the beast, and if anything I'd say that
FreeBSD has one of the _easiest_ build systems to understand.
You really have it easy, so quit whinging and start reading the
Makefiles in the future, OK? :-)

					Jordan



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