Questions about/issues with new OPTIONS framework

Jeremy Chadwick jdc at
Tue Aug 7 19:32:37 UTC 2012

On Tue, Aug 07, 2012 at 08:43:18PM +0200, Olli Hauer wrote:
> On 2012-08-06 18:04, Jeremy Chadwick wrote:
> > (Please keep me CC'd, as I'm not subscribed to the list)
> > 
> > I've been trying to adapt my /etc/make.conf to make use of the new
> > OPTIONS framework.  I've run into some snags that I was hoping someone
> > could help me with, as I'm unable to find any "official" documentation
> > other than these two documents, which don't help me in this case:
> > 
> >
> >
> > 
> > Below are my questions so far.  Note that these questions are all
> > preceded by a key fact: /var/db/ports/* is completely empty.  Keep that
> > in mind please.
> > 
> > 1. databases/mysql55-server and databases/mysql55-client both ask for
> > the same variables (OPENSSL and FASTMTX).  I want FASTMTX to be enabled
> > by default for both ports.
> > 
> > When I have the following in /etc/make.conf:
> > 
> > mysql_SET=	FASTMTX
> > 
> > Doing "make config" in databases/mysql55-server shows FASTMTX as checked
> > (which is correct).  However, when I do the exact same procedure in
> > databases/mysql55-client, FASTMTX is not checked.
> > 
> > I am aware that databases/mysql55-client is a slave port, but I'm not
> > sure how/why that would matter...?
> > 
> > What am I doing wrong, or is this a port bug which needs to be fixed by
> > the maintainer?
> > 
> > 2. ports/KNOBS is very explicit in stating, and even visually
> ...
> 2) alredy answerd ...
> answer for question 1)
> $> cd mysql55-client && make -V UNIQUENAME
> or
> $> make -V UNIQUENAME -C /usr/ports/databases/mysql55-client/
>  mysql55-client

So it's based off of UNIQUENAME?  That's interesting.

The ""documentation"" implies that the name of the variable itself
should be the {nameofport}_SET or {nameofport}_UNSET, where {nameofport}
should equal the name of the actual port directory you're in.  Yet, take
a look at this:

root at icarus:/usr/ports/devel/apr0 # make -V UNIQUENAME

root at icarus:/usr/ports/devel/apr1 # make -V UNIQUENAME

root at icarus:/usr/ports/devel/apr2 # make -V UNIQUENAME

Another one where the names are consistent (mtr-nox11 is a stub/slave

root at icarus:/usr/ports/net/mtr # make -V UNIQUENAME

root at icarus:/usr/ports/net/mtr-nox11 # make -V UNIQUENAME

All of these consistently use the same UNIQUENAME.  To me that seems
like the Right Choice(tm), but then there's this:

root at icarus:/usr/ports/databases/mysql55-server # make -V UNIQUENAME

root at icarus:/usr/ports/databases/mysql55-client # make -V UNIQUENAME

I would imagine these should return the same thing (e.g. mysql55-client
should have a UNIQUENAME of mysql, or alternately mysql55-server should
have a UNIQUENAME of mysql55-server).

...while for other ports, it does seem to be based off of the port name
itself.  Examples ports include apache22-itk-mpm, p5-DBD-mysql,
p5-libwww, and so on.

How are users supposed to know what the name of the variable is they
should be setting in make.conf?  There doesn't even appear to be a "make
show-xxx" command to help people out with this.

Trial and error seems to be the only way to figure it out, and that's
time-consuming.  Luckily this is my home system where I only have 81
ports installed, and only a handful require adjustments, but you can see
my point?

> make.conf entry constructed from UNIQUENAME
>  mysql55-client_SET+=	FASTMTX
> Please note the '+=' instead '='.
> If you have a port where you set more then on option but not as one expression
> all ${UNIQUENAME}_SET+= are applied else only the last entry in make.conf.

I don't quite understand your last paragraph (maybe a language barrier;
I say that politely, not insultingly).  Can you rephrase for me?  Also
how does OPTIONS_SET and OPTIONS_UNSET (talking about the "global"
variables) fit into this?

Next: the ""documentation"" does not state to use '+=' on these entries
in make.conf, it says to use '=':

See, for example, the OPTIONS_SET and OPTIONS_UNSET examples, in
addition to the zsh_SET and zsh_UNSET examples on that web page.

There's nothing about any of this framework in make.conf(5) either.

This is frustrating.  There isn't even anything in ports/UPDATING about
any of this, so what am I supposed to go off of?  :-(

> Additional if you have done `make config' already, then your make.conf entry
> is useless since with options NG the OPTIONSFILE has now a higher priority.

Absolutely -- and this is why I outlined (for my case anyway) that
/var/db/ports was empty prior to me doing my tests.  I'm well-aware of
the options file and how it takes precedence.  :-)

| Jeremy Chadwick                                   jdc at |
| UNIX Systems Administrator       |
| Mountain View, CA, US                                            |
| Making life hard for others since 1977.             PGP 4BD6C0CB |

More information about the freebsd-ports mailing list