At Mon, 14 Dec 2009 14:56:29 -0500, Greg Troxel <gdt%ir.bbn.com@localhost>
wrote:
Subject: Re: Sets, subsets, syspkgs, and MK*
>
> Masao Uebayashi <uebayasi%tombi.co.jp@localhost> writes:
> >
> > My point is to clarify
> >
> > a) what variable (condition) changes installed files ("subsets")
> > b) what variable (condition) changes file contents ("contents")
> >
> > For example, usr.bin/login is conditionally built by USE_KERBEROS / USE_PAM
> > / USE_SKEY. It is always installed. So it doesn't belong to the "subsets"
> > I'm saying.
>
> That's right - you'd need to have MKLOGIN :-) But no one has ever wanted
> a system without login enough to add a MK variable. So probably there's
> a MKBASE=YES for the things that are really required.
Indeed -- usr.bin/login is always built -- it just looks different on
the inside depending on which USE_* flags are set.
> > Such a technique is very common & OK for source distribution. If you build
> > your image by yourself, you'll get a consistent image.
Perhaps the point missing here is that these MK* and USE_* flags are
adjustable _only_ for those who build from scratch from source.
> The rest of the world has just one distribution. For binary updates,
> all MK/USE should be in their default states.
Indeed, the "official" distributions are expected to be built always
using the same default MK* and USE_* settings. They are not adjustable
and need not be compensated for from the perspective of the official
binaries and users of the official binary distributions.
Or at least that's how I as a third-party developer expect things to be
done.
> > Unfortunately MK* vs. USE_* usages are a little too confused now. I'd
> > propose
> > two variables for now to clearly distinguish "subsets" / "contents" (or
> > whatever better words):
> >
> > NETBSD_CONFIG_HAVE_* - include a subset
> > NETBSD_CONFIG_USE_* - enable a feature (implying to change
> > "contents")
>
> I don't think that does anything except renaming. MK is HAVE and USE is
> USE.
Sort of.... "NETBSD_CONFIG_HAVE_*" is sort of like "USE_*" and
"NETBSD_CONFIG_USE_*" is sort of like "MK*".
It might be a useful renaming though -- just from a name-space
clarification point of view. And I would stick pretty much with the
current meanings and prefixes:
NETBSD_CONFIG_MK_* - _build_ (and install) a subset
(implying to change "contents")
NETBSD_CONFIG_USE_* - enable a feature in a program
(implying NO change to "contents")
(the current HAVE_* variables have different semantics to the build and
are not, as far as I can see, related in any way to the products of a
"make release")
Again, share/mk/bsd.README documents most of this _quite_ clearly, not
as a summary per se, but definitely in whole based on the descriptions
of all the MK* and USE_* variables taken together.
It's also further clarified in how things work in distrib/sets.
There are of course exceptions to every rule, though I think most or all
of these are simply mistakes, i.e. mis-uses of USE_* vs. MK* and I'm
surprised that they still exist and have not yet been fixed.
Namely USE_INET6, USE_KERBEROS, and USE_YP _also_ currently imply
changes to the contents of a distribution. Everything else in
distrib/sets is controlled only by MK* variables.
For example in every case where USE_INET6 currently affects the contents
of a distribution, this affect could and should be achieved with MKINET6
instead. The same goes for USE_YP vs. MKYP and USE_KERBEROS
vs. MKKERBEROS (which is really only yppasswd and kpasswd, and their
documentation, respectively).
So, perhaps what's confused you are just these simple bugs where USE_*
has been misused?
--
Greg A. Woods
Planix, Inc.
<woods%planix.com@localhost> +1 416 218 0099 http://www.planix.com/
Attachment:
pgpg8vXbQKNJX.pgp
Description: PGP signature