Subject: Re: CVS commit: src
To: None <tech-misc@netbsd.org>
From: Scott Reynolds <scottr@og.org>
List: tech-misc
Date: 02/20/1999 02:59:56
On Thu, 18 Feb 1999, Ted Lemon wrote:

> Module Name:	src
> Committed By:	mellon
> Date:		Thu Feb 18 14:49:59 UTC 1999
> 
> Modified Files:
> 	src: Makefile
> Log Message:
> Build and install texinfo before building and installing the world.

This change is a nice thought and all, but once we've built texinfo the
first time, why do we have to keep compiling it early in the process for
every subsequent build?  It's a one-shot event, it was announced on
current-users, and it's costly on slower platforms.  For reference: it
adds ~18 minutes to a build on a 40MHz 68030 with 20MB of RAM, about 1.5%
of the total build time.  This is not a machine on the extreme low end
like the MicroVAX 2000 or some poor 68020-based Sun3 or Macintosh II.

I have backed out this change.

<soapbox>
Historically, the top-level Makefile's `build' target has been used by
people who are keeping close tabs on the development of the system.  In
the last 2 or 3 years there have been several gross misinterpretations of
the purpose of the target, leading to much wailing and gnashing of teeth
on the part of those who do regular, frequent builds.  Each time there's
been some level of flaming about why the build target `must' do this or
that action while ignoring the impact that it has on the real target
audience.  To my knowledge, these conflicts have only been resolved in
rare instances.

Anyway, back to the primary point.  We frequently have `update libc',
`update lex', `update rpcgen', and similar one-time prerequisites for a
build.  I maintain that it's unreasonable to dump every single one of
these into the top-level build target.  Based on previous experience, I'm
also convinced that the potential for circular dependencies is pretty
high.  This problem is exacerbated by the length of time between releases.

If someone wants to come up with a method to compile and install the
toolchain and other prerequisites before starting the main part of the
build, go right ahead.  However,

	** please leave the `build' target alone! **

Some users do multiple consecutive builds from (virtually) the same source
tree on the same platform in the process of testing things, and all of
this overhead is painful and unnecessary the vast majority of the time.
</soapbox>

--scott