Subject: Re: sendmail licensing again
To: NetBSD-current Discussion List <current-users@netbsd.org>
From: Greg A. Woods <woods@most.weird.com>
List: current-users
Date: 12/11/1998 12:27:59
[ On Fri, December 11, 1998 at 17:19:18 (+1100), Simon Burge wrote: ]
> Subject: Re: sendmail licensing again 
>
> A simple idea that _may_ make everyone happy (the separatists and the
> integrationists ;) is to have all GNU source in gnu/dist, but have the
> reach-over directories in the "normal" source tree.  Is this workable?

It is the makefiles and build system that pretends to look normal, but
then sucks in its sources from a foreign directory that I'm suggesting
is evil, ugly, inelegant, hard to debug, a pain to write (sometimes),
etc.

I did a lot of work upgrading all the stuff in /usr/src/contrib for
FreeBSD 2.2.x (and adding a couple of new things) and it was a
hair-pulling headache of the worst kind.  The worst part was that I
never got the chance to submit my changes to them (and they likely
wouldn't have taken them anyway because the general FreeBSD policy
w.r.t. 2.2.x was that changes should always only be pulled over from the
trunk).

The *2netbsd scripts are indeed, by evidence of hard-won experience, the
most elegant way of actually integrating a piece of contributed software
into a source tree, and though they require a bit of care and up-front
planning, and sometimes a bit of after-the-fact re-tuning, they're not
all that difficult to maintain and the result is simple to understand,
to build, to fix, to debug, and to make local changes to (assuming the
result of running such a script is imported onto a vendor branch in the
repository).  Sometimes such scripts aren't even necessary -- just
import, merge, and go.

I guess it really doesn't matter if the original third-party
distributions are also imported into the repository too, just so long as
nothing in the final build system ever reaches over into those
directories for any reason whatsoever.  However since this doesn't
really meet the expectations and intent of something like the FSF GNU
GPL copyright license, it's still necessary to also bundle up the actual
sources and makefiles used to build the final product.  As I've shown
this can be done very simply with a simple grep or awk script to
maintain a list of tagged sources which can be fed to an archiver of
choice for bundling up (pax -wzf gnusrc.tar.gz < list-of-gnu-files).

Maybe if the build system was not based no a recursive make system, then
it would be OK to do VPATH-like things to pull sources from non-local
directories (actually it would be mandatory!).  However the current
build system gives the implication (if not always the explicit
permission) to run make at any level, and this has the implication that
any level can be disconnected from the full tree and still be built.

Recursive make systems also lend the impression that make can be easily
bypassed by running commands directly.  This is ever so much more
difficult if the source isn't in the same directory where you're doing
the build.

Segregation of source by copyright doesn't necessarily break the
implications of a recursive make system, but using VPATH mechanisms to
pull sources into a build directory certainly does.

-- 
							Greg A. Woods

+1 416 218-0098      VE3TCP      <gwoods@acm.org>      <robohack!woods>
Planix, Inc. <woods@planix.com>; Secrets of the Weird <woods@weird.com>