New OPTIONS and make.conf knobs

Mel Flynn rflynn at acsalaska.net
Mon Jun 4 13:34:05 UTC 2012


On 4-6-2012 14:58, Bernhard Froehlich wrote:
> On 04.06.2012 13:29, Miroslav Lachman wrote:
>> Bernhard Froehlich wrote:
>>> On 04.06.2012 11:55, Miroslav Lachman wrote:
>>>> There is another problem with options and portmaster.
>>>>
>>>> I have WITHOUT_X11=yes in make.conf and if I try to install
>>>> emulators/virtualbox-ose for the first time it immediately ends with
>>>> error message instead of showing options dialog.
>>>>
>>>> --------------------------------------------------------
>>>> # portmaster emulators/virtualbox-ose
>>>>
>>>> ===>>> Currently installed version: virtualbox-ose-4.1.16
>>>> ===>>> Port directory: /usr/ports/emulators/virtualbox-ose
>>>>
>>>> ===>>> This port is marked BROKEN
>>>> ===>>> QT4 frontend requires X11 support. Run 'make config' again!
>>>>
>>>>
>>>> ===>>> If you are sure you can build it, remove the
>>>> BROKEN line in the Makefile and try again.
>>>> Terminated
>>>> --------------------------------------------------------
>>>>
>>>>
>>>> I don't know the order of processing options / knobs so I don't know
>>>> if this is the problem of portmaster, OPTIONSng or Makefile it-self.
>>>>
>>>> To fix this problem, I must manually run `make config` in ports
>>>> directory and uncheck QT4, then run portmaster again.
>>>
>>> That is not a bug at all. It was that way for the last 2 years and still
>>> is. The virtualbox ports do not use the new optionsng stuff yet and the
>>> problem that you are seeing is just because QT4 GUI without X11 doesn't
>>> make sense. If you don't want X11 you also don't want QT4.
>>
>> Yes, that's right. But I am confused why portmaster does not show the
>> options dialog to let user uncheck QT4?
>>
>> What I expect is:
>> - run portmaster
>> - show dialog with unchecked X11
>> - let user uncheck QT4
>> - save options in /var/db/ports
>> - show error about conflicting options
>>
>> Now is:
>> - run portmaster
>> - show error about conflicting options
>>
>> I don't know if it can be solved by portmaster, ports framework or
>> anything else.
> 
> From the BROKEN message:
> 
> QT4 frontend requires X11 support. Run 'make config' again!
> 
> 
> I think it will be fixed once virtualbox uses optionsng because it is
> able to handle such option dependencies but for now it's the same as
> it ever was.

I think only the port can handle this as it falls in the "sane defaults"
category and a framework can never assess what is sane in the specific
port's case.

A solution that works with old options is to assign the On/Off state
with a variable:
.ifdef WITHOUT_X11
QT4_DEFAULT=	off
.else
QT4_DEFAULT=	on
.endif
OPTIONS=	QT4	"Enable QT4 support" ${QT4_DEFAULT}

I think the same will work with optionsng and probably offers better
sanity checking as you can query for ${UNIQUENAME}_SET of a related
port, like OPENLDAP24_SASL_SET to set the default for ldap sasl support
accordingly instead of throwing an exception.
-- 
Mel


More information about the freebsd-ports mailing list