Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Sep 2003 16:09:15 -0400
From:      Richard Coleman <richardcoleman@mindspring.com>
To:        Ulrich Spoerlein <q@uni.de>
Cc:        ports@freebsd.org
Subject:   Re: First attempt at unifying WITH_* options
Message-ID:  <3F773FEB.6010809@mindspring.com>
In-Reply-To: <20030928155434.GA770@galgenberg.net>
References:  <20030928155434.GA770@galgenberg.net>

next in thread | previous in thread | raw e-mail | index | archive | help
I want to voice my support for adding this type of facility to the port 
system for FreeBSD.  This is sorely needed.

I haven't tried the patch yet.  But from a brief glance, it apppears to 
be exactly what we need.

We also need a place for the port maintainer to record a summary of the 
options, as well as any comment that is specific to that option and 
port.  For instance, if each port had a file "pkg-options", this could 
print:

make print-option
     WITH_TCL - Add tcl support.  Currently experimental.
     WITH_TK  - Add tk support.  Currently broken.
     WITH_FOO - Add support for foo.  Developers only.

etc.

Richard Coleman
richardcoleman@mindspring.com

Ulrich Spoerlein wrote:
> Hello all,
> 
> attached is a small patch to bsd.port.mk and a new file I dubbed
> bsd.options.mk. I also included a diff against the QuakeForge port,
> which shows how to use the new PROVIDE_OPTIONS and DEFAULT_OPTIONS
> variables (sorry for the long diff, it was necessary because of the
> PLIST_SUB)
> 
> What this patch does is this:
> 
> A port specifies PROVIDE_OPTIONS= sdl xmms.
> A user can then lookup these options with 'make print-options' and set
> them in the build process. There is also a print-options-recursive
> target which prints all the options for the build/run depends. This
> "fixes" one grief I always had with user-settable options. You want to
> install some port, which depends on another port. This other port _can_
> use SDL for example. You have SDL installed and want the port to use
> SDL. Now you can either watch the complete build process and interrupt,
> when a dependancy get's pulled in which _can_ use additional software
> you have installed, or you manually check all not-already-installed
> dependancies and see if they can use additional components which you
> would like them to use.
> Of course you could set WITH_SDL=yes in /etc/make.conf, but maybe there
> is port X which is broken when using SDL so you don't want that
> particular port to be build with SDL.
> Note: You can't use this with portupgrade, because it will not
> pre-install dependancies when installing a new port. That means you can
> have your MAKE_ARGS hash loaded with options, but when you install one
> port, and the Make-Magic pulls in another Port, it's build flags are not
> set (I hope you can follow me here :)
> 
> bsd.options.mk then checks to see if either WITH_SDL=yes/WITHOUT_SDL=no
> or WITH_SDL=no/WITHOUT_SDL=yes is specified. This allows for overriding
> port-defaults set in DEFAULT_OPTIONS.
> 
> An additional benefit of this centralized approach is, that all those
> "shlib version bump chases" get vastly simplified.
> 
> Implementing an interactive 'menuconfig' target is very easy (some
> people have requested this...)
> 
> Issues to resolve:
> - Right now, a port can't use 'print-options' without pulling in all the
> LIB_DEPENDS/CONF_ARGS stuff. So either another Variable is needed or the
> stuff in bsd.options.mk has to be overrideable.
> - I'm defaulting to LIB_DEPENDS right now, obviously this is only
> correct if the port links agains libxmms for example. But there are
> enough ports, that only run-depend on xmms (the binary). I'm not quite
> sure how to fix this.
> - I'm using tons of Variables right now (OPTIONS_xmms, OPTIONS_sdl, ...)
> perhaps this should be changed to one variable, adding all the _set_
> options and removing the _unset_ options. Something like FLAVOR on
> OpenBSD.
> 
> Please try the patches and tell me what you think.
> 
> Ulrich Spörlein





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F773FEB.6010809>