Subject: Re: Consistent "Optional Dependecy" handling
To: None <tech-pkg@netbsd.org>
From: Nate Hill <vugdeox@freeshell.org>
List: tech-pkg
Date: 07/31/2003 19:31:20
Damnit! I can't seem to send mail... Here it is:
On Thu July 31 2003 18:33, Juan RP wrote:
> On Thu, Jul 31, 2003 at 06:32:55PM -0500, Nate Hill wrote:
> > Okay, I see that there is already a USE_OSS flag (which is
> > undefined default) and it is checked in kdemultimedia3:
> >
> > .if defined(USE_OSS)
> > CONFIGURE_ARGS+=        --enable-audio=oss
> > .endif
> >
> > My question is wether I can implement this by just adding a
> > USE_GTK flag in bsd.pkg.defaults.mk? Is there some kludge that
> > needs changing elsewhere?
>
> bsd.pkg.defaults.mk is only used to see what commons variables we
> can use. You will have to do on any package that uses GTK, btw I
> don't like this option, because we don't want many differents
> binaries packages, instead I prefer package-gtk or package-esd or
> whatever.

It has come to my attention that this binary package "issue" is going 
to become a rather large one. So, I'd like to address it before 
another flamewar begins.

-This problem already exists.
 There are many trivial USE-like flags in the various .mk files which 
change aspects of a package. The binary packages released by NetBSD 
are all built with the default settings. Major features (I can really 
only think of the gtk one atm) are handled with alternate package 
names, like: foo-gtk1 and foo-gtk2. If you want to build a foo 
package  differently then, you build from source and change settings 
via .mk infrastructure. Your binary package will be named the same 
but will differ.

-Using this extensively will expose the problem.
 By changing the major feature differences to use USE_* variables 
instead of naming conventions we expose a problem with the naming 
system. If we build package foo with PREFER_GTK2 it will be named the 
same as foo with GTK1. This can be solved with a Flavor-style 
feature. Basically, we _can_ use a flavor feature to label packages 
with their USE_* flags. If we set PREFER_GTK2 and FLAVOR_PREFER_GTK2 
(these is not hardcoded of course) then our packages built with GTK2 
(if supported) will label themselves foo-gtk2. Of course, if this 
flavoring where done by default we would have millions of 
combinations. The NetBSD official binaries will only turn on 
flavoring for major features such as gtk.

-Ultimately nothing will _really_ change.
 --Basically, the official binaries will keep their names and custom 
binaries will differ slightly (not a real problem)
 --With major subsets (like gtk) their names will not be set by 
package name but NetBSD will release two flavors by default (eg, 
editors/vim will produce vim-gtk1 and vim-gtk2 on release, by 
default).

-- 
Nate Hill <vugdeox@freeshell.org>