port variants

Chris Rees crees at FreeBSD.org
Sat Apr 14 16:37:36 UTC 2012


On 13 April 2012 23:38, Kevin Oberman <kob6558 at gmail.com> wrote:
> 2012/4/13 Konstantin Tokarev <annulen at yandex.ru>:
>> 13.04.2012, 23:55, "Chris Inacio" <nacho319 at gmail.com>:
>>> On Apr 13, 2012, at 3:39 PM, Freddie Cash <fjwcash at gmail.com> wrote:
>>>
>>>>  On Fri, Apr 13, 2012 at 12:04 PM, Chris Inacio <nacho319 at gmail.com> wrote:
>>>>>  I was recently asked to do some FreeBSD ports support work.  I mostly use a
>>>>>  Mac and the MacPorts system.  MacPorts has the concept of a variant for a
>>>>>  port, but I can't find the analogue in the FreeBSD system.
>>>>>
>>>>>  Does the FreeBSD ports system have the concept of a variant?  If so, can
>>>>>  someone point me in the right direction on how to create one?
>>>>  Describing what a "variant" is, how it works in MacPorts, and what you
>>>>  are trying to do would help a lot.  :)
>>>>
>>>>  The closest guess I could make would be "slave port", but I don't
>>>>  think that works the same way.
>>>
>>> Sorry, you're right.
>>>
>>> For example, a port of say Emacs could have a variant of X11.
>>>
>>> So Emacs or Emacs+X11.
>>>
>>> The X11 variant would (somewhat obviously) include building regular Emacs but also the X11 toolbar etc. while Emacs wouldn't include any X11 features (& dependencies).
>>>
>>> On the Mac, we can build universal binaries (PowerPC, ia32, and x86_64), at the cost of disk space. So we can build almost any package with the +universal variant.
>>>
>>> Is that a reasonable explanation?
>>
>> Seems like you need makefile options:
>>
>> http://www.freebsd.org/doc/en/books/porters-handbook/makefile-options.html
>
> While I think makefile-options is the way to go, I should also point
> out that for the specific case of emacs and X11, it is not used due to
> the very large differences. Other "variants" are handled via options,
> but there are separate emacs and emacs-nox11 ports.
>
> Most obviously, all of the emacs options are X11 related and there is
> no way that I know to have two sets of options with one list dependent
> on the other. If there are only a coupe of cases of this, it may be
> noted on the options like:
> THREADS       " Build with thread support"
>            On \
> FOO                "Foo support (requires THREADS)"
>         OFF \
>
> The port maintainer/developer has to make a call as to which approach
> is more practical, but I suspect portmgr@ will press for maximum use
> of makefile-options.

It's unusual for portmgr to intervene in individual ports-- if the
maintainer takes the trouble to make test and support OPTIONS, then
great, but it's by no means mandatory.  It's better to be slightly
less flexible than have loads of OPTIONS which break other ports in
subtle ways.

Chris


More information about the freebsd-ports mailing list