tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Sets, subsets, syspkgs, and MK*

At Mon, 14 Dec 2009 14:56:29 -0500, Greg Troxel <> 
Subject: Re: Sets, subsets, syspkgs, and MK*
> Masao Uebayashi <> 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

> > 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.

<>       +1 416 218 0099

Attachment: pgpg8vXbQKNJX.pgp
Description: PGP signature

Home | Main Index | Thread Index | Old Index