OPTIONSng: Overide options in /var/db/ports/*/options ?

Marco Steinbach coco at executive-computing.de
Sun Mar 17 20:04:26 UTC 2013


Baptiste Daroussin wrote on 17.03.2013 19:49:
> On Sun, Mar 17, 2013 at 07:27:56PM +0100, Marco Steinbach wrote:
>> Chris Rees wrote on 17.03.2013 17:15:
>>> On 17 Mar 2013 15:45, "Marco Steinbach" <coco at executive-computing.de> wrote:
>>>> Matthew Seaman wrote on 17.03.2013 14:49:
>>>>
>>>>> On 17/03/2013 12:16, Marco Steinbach wrote:
>>>>>> Hi,
>>>>>>
>>>>>> is there a way to overide options stored in /var/db/ports/*/options,
>>>>>> basically getting back the pre-OPTIONSng behaviour of being able to
>>>>>> overide port options in /etc/make.conf ?
>>>>>>
>>>>>> Before OPTIONSng was introduced, I was able to specify options in
>>>>>> /etc/make.conf (WITHOUT_X11, WITHOUT_CUPS, WITH_MAILHEAD, WITH_SSL,
>>>>>> WITH_MYSQL, WITH_DOVECOT, ...), which then overode any occurency of that
>>>>>> option in any port (or just specific ones, by e.g. checking .CURDIR),
>>>>>> regardless of the setting the ports option file contained.
>>>>> Find the uniquename of the port[*] (by 'make -V UNIQUENAME') then in
>>>>> /etc/make.conf
>>>>>
>>>>> uniquename_SET= FOO BAR BAZ
>>>>> uniquename_UNSET= BLURFL
>>>>>
>>>>> will override the default settings in that port's Makefile for the FOO,
>>>>> BAR, BAZ and BLURFL options.
>>>>>
>>>>> Note: this won't override any settings you make from an options dialog.
>>>>> Might be a good idea to 'make rmconfig' if you only want to rely on
>>>>> /etc/make.conf
>>>> [...]
>>>>
>>>> Exactly my point.  Currently, with OPTIONSng there seems to be no way to
>>> overide anything in /var/db/ports/*/options.
>>>> I find it irritating, that I no longer can be sure about options in
>>> /etc/make.conf.  I have to check/reconfigure to make sure.
>>>> As much as I like OPTIONSng (especially in combination with
>>> dialog4ports), this is one thing I'd very much like OPTIONSng to relearn:
>>> Enforce options regardless of what's in a ports options file.
>>>
>>> No, that's a bad idea.  It's more confusing to have options not being set
>>> that are checked in the OPTIONS dialog.
>>>
>>> Setting those in make.conf sets defaults, and allows them to be overridden
>>> in individual ports.
>> Let's say I never want CUPS, X11, EXAMPLES and DOCS, regardless of what 
>> I willingly or accidentially configured in an OPTIONS dialog (or is 
>> defaulted to in a ports Makefile), either because I didn't understand 
>> the dependancy of a choice, I fat-fingered something or someone helps me 
>> configuring something, and wants to make sure I get it right:
>>
>> OPTIONS_UNSET_FORCE= CUPS X11 EXAMPLES DOCS
>>
>> Same goes for the complementary case of having options set forcibly, 
>> either system-wide or per port:
>>
>> particularport_SET_FORCE= EXAMPLES DOCS
>>
>> I'd set these in /etc/make.conf, and be done for good.
>>
>> I have a local patch for that kind of behaviour, but wanted to check for 
>> possible alternatives besides the beaten path, before bothering bapt at .
>>
> 
> The thing is half of people wants the /var/db/*/options to be the last word, the
> other half want the behaviour you are exposing, so getting a final word that
> will satisfy everyone is hard.

I think the approach of having a choice between the two by allowing for 
a new 'force it down the throat'-mechanism could serve both quite nicely.

Existing /var/db/*/options files would still be read, but options can be 
forcibly set or unset from /etc/make.conf, overriding the corresponding 
options setting in options files.

> I personnally really dislike /var/db/port/*/options and the dialog :).
>
> The new option framework has been design to:
> 1/ respect the same behaviour has it used to be before: /var/db/port/*/options
> has the final word.
> 
> 2/ provide the ability to users to be able to tune the whole system in a
> consistent way.
> 
> 3/ provide a way to totally disable the dialog thing (NO_DIALOG) so that you
> can't save a option file by mistake.
> 
> What we can probably do in the end is provide a new macro to totally in all
> cases ignore /var/db/port/*/options.
> 
> Would that satisfy your needs?

I'll recap the approaches:

a) Options in /etc/make.conf only take precedence, if no 
/var/db/ports/*/options file exists for a given port

b) Options in /etc/make.conf always take precedence over options of the 
same name read from /var/db/ports/*/options

c) Options in /etc/make.conf are the only source of wisdom, anything in 
/var/db/ports/*/options is ignored


a) is currently in place (*_SET, *_UNSET)
b) is what I'd very much like to see added (*_SET_FORCE, *_UNSET_FORCE)
c) probably comes closer to what you're suggesting

I've attached my current workaround for b), where I simply duplicated 
parts of your code in bsd.options.mk, adding a new suffix.  Maybe this 
further clarifies, what I'm currently missing.

c) would come in handy, if you'd like to make sure nothing whatsoever 
from /var/db/ports/*/options impacts a build.


MfG CoCo

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch.txt
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20130317/68239311/attachment.txt>


More information about the freebsd-ports mailing list