Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Jun 2014 12:40:36 +0200
From:      Marco Steinbach <coco@executive-computing.de>
To:        Miroslav Lachman <000.fbsd@quip.cz>
Cc:        FreeBSD Ports <ports@freebsd.org>
Subject:   Re: How can I override global OPTIONS_UNSET for specific port in make.conf? www/xcache
Message-ID:  <53A56124.7010409@executive-computing.de>
In-Reply-To: <53A37AFD.3060302@executive-computing.de>
References:  <53A33F83.7050807@quip.cz> <53A35AE9.8090702@executive-computing.de> <53A37AFD.3060302@executive-computing.de>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------060204000606030209090903
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Marco Steinbach wrote on 20.06.2014 02:06:
> Marco Steinbach wrote on 19.06.2014 23:49:
>> Miroslav Lachman schrieb:
>>> I don't need DOCS, EXAMPLES etc. for each port as I normaly do not 
>>> use them on servers.
>>> I have this line in make.conf
>>>
>>> OPTIONS_UNSET= X11 GUI CUPS DOCS EXAMPLES NLS
>>>
>>> Now I need www/xcache port installed with EXAMPLES.
>>> I tried following in make.conf:
>>>
>>> xcache_SET= EXAMPLES
>>>
>>> or
>>>
>>> xcache_SET_FORCE= EXAMPLES
>>>
>>> In both cases, xcache is installed without EXAMPLES.
>>>
>>> So how can I have globally disabled EXAMPLES and enable it only for 
>>> one specific port?
>>
>> After some testing, I think this could be a bug in the handling of 
>> PORTEXAMPLES / PORTDOCS, since flipping EXAMPLES / DOCS options (and 
>> any other options I tried) with these switches works as expected.
>>
>> I'll try and have a go at this.
>>
> 
> [...]
> 
> If a port does not explicitly define an option for a feature in its 
> Makefile, then a port specific setting for that option has no effect, 
> since it simply doesn't match against the options defined in the ports 
> Makefile.
> 
> IOW: If a port does not explicity define an EXAMPLES option, then a port 
> specific SET or UNSET for the EXAMPLES option in /etc/make.conf has no 
> effect.
> 
> Consequently, in the case of www/xcache, simply adding a dummy EXAMPLE 
> option to OPTIONS_DEFINE makes xcache_SET_FORCE=EXAMPLES work as 
> expected: It installs examples, overriding OPTIONS_UNSET_FORCE.
> 
> 
> Depending on ones point of view, one could say, that this works as 
> advertised.  But it's confusing and robs us of port specific _FORCE 
> flags in certain cases.
> 
> One possible solution could be, to have Mk/bsd.options.mk detect the use 
> of PORTEXAMPLES and PORTDOCS in a port, and then silently translate 
> these into DOCS / EXAMPLES options (adding them to 
> ${COMPLETE_OPTIONS_LIST}), if they're not present.
> 
> Without them popping up in a dialog, since that would be the maintainers 
> domain, and without persisting them, of course.
> 
> I'm still trying to wrap my head around these parts of the ports system, 
> though, in order to not accidentially break things.
> 
> MfG CoCo
> PS: I'm taking bapt@ out of the loop again, until we're either 
> completely stuck or are able to produce a patch.
> 
> 

I think I found a more simple way to do this.  Could you please try the 
attached patch ?

Thanks.

MfG CoCo

--------------060204000606030209090903
Content-Type: text/plain;
 name="bsd.options.mk.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="bsd.options.mk.patch"

Index: Mk/bsd.options.mk
===================================================================
--- Mk/bsd.options.mk	(revision 357923)
+++ Mk/bsd.options.mk	(working copy)
@@ -199,6 +199,14 @@
 
 # complete list
 COMPLETE_OPTIONS_LIST=	${ALL_OPTIONS}
+
+# Handle ports that are using PORTDOCS / PORTEXAMPLES
+.for m in DOCS EXAMPLES
+.  if !empty(PORT_OPTIONS:M${m}) && empty(COMPLETE_OPTIONS_LIST:M${m})
+COMPLETE_OPTIONS_LIST+= ${m}
+.  endif
+.endfor
+
 .for otype in SINGLE RADIO MULTI GROUP
 .  for m in ${OPTIONS_${otype}}
 COMPLETE_OPTIONS_LIST+=	${OPTIONS_${otype}_${m}}

--------------060204000606030209090903--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53A56124.7010409>