Subject: Re: CVS commit: src/usr.bin/make
To: None <>
From: r.o.s.s <>
List: source-changes
Date: 02/06/2004 21:23:00
> From Perry
> Why not just include our getopt in the compat library?

I considered that briefly, but make is bootstrapped early, so it
is initially built with the host getopt(3). It seems unwise to run
with known bugs for many reasons. How, for example, would you test
it? ("Well, this test suite is for the make I built 3 minutes ago
and this test suite is for the one I built 15 seconds ago, oh, and
this test suite doesn't work unless run on host X99 ..."--for good
material on testing see junit and "extreme programming" for some
interesting philosophy.)

Secondly, it still leaves the code depending on artifacts of the
bsd getopt(3) implementation that aren't in posix and have been
proven unportable. Groff isn't the only problem this has caused.

The decision to allow intermixed X=Y assignments and command line
options (itself, sigh, a posix extension, there is a lesson there
somewhere) was made years ago in both pmake and gmake. I can't
remove functionality from a release but I can deal with the
requirement of make for portable extra-fancy argument parsing.

If getopt(3) works for 199/200 programs and 0.5% of them need to
be handcoded then I say mix metaphors, declare victory, and call
it a day.

Having said all that, I'm perfectly happy to withdraw it and check
it into the Wasabi tree, rather than argue too much...