What is the actual syntax used to FLAVOR ports?

Chris portmaster at BSDforge.com
Sun Feb 9 09:09:08 UTC 2020


On Sat, 8 Feb 2020 21:44:35 -0800 Kevin Oberman rkoberman at gmail.com said

> On Sat, Feb 8, 2020 at 1:27 PM Chris <portmaster at bsdforge.com> wrote:
> 
> > OK I know FLAVOR is an evolving concept. But I can not find
> > the FLAVOR documentation. Only references in the porters
> > handbook. What I think needs to be available is an entire
> > list of flavor tags for all (port) categories.
> > For example;
> > make FLAVOR=python27 returns the error use py27.
> > OK now I know how to flavor, and build python flavors.
> > But what of Perl?
> > make FLAVOR=perl2.8. Nope. How about make FLAVOR=p5-28,
> > and so it goes...
> > Does there exist a definitive list of flavors? It'd
> > also be valuable for defining defaults in make.conf(5)
> >
> > Thanks!
> >
> > --Chris
> 
> 
> The problem is not having a clear understanding of what a FLAVOR is and
> when it is used.
> 
> FLAVORS are generally a way to deal with the problem of incompatible
> versions and Python is the poster child. Python2 and Python3 are two
> version of a VERY popular language that have significant syntax
> incompatibilities. While a program written for gcc-4.2 should work fine
> when compiled with gcc-7, it is VERY unlikely that a program written for
> Python2 will work with Python3. While the changes needed are often fairly
> straight forward, they have to be made. The result is a requirement of
> having both interpreters installed and two packages of of most Python
> libraries built from a single source.
> 
> Adding FLAVORS for a port is an expensive operation and is never lightly
> approved by the ports management team as it adds a great deal of complexity
> and both human and machine overhead. Requests to FLAVOR a port are
> carefully reviewed and will only be approved with adequate justification.
> 
> In the case of Perl, no attempt to flavor it has been needed. Most Perl
> packages (p5-*) will work with any of the three available ports. In most
> cases they may be installed and continue to work across versions with no
> changes. Python (py-) ports MUST be reinstalled to move from Python2 to
> Python3. Some have not had required changes to work with Python3 made and,
> initially, almost none did. Some have now been written with no support for
> Python2. All of this has to be properly handled by the package building
> system and it is not at all trivial.
> 
> As of today, I believe the only FLAVORed ports are those using emacs,
> lazarus, php, and, of course, python. By "using", I mean that the port
> Makefile includes "USE_PYTHON" or similar USE_ definitions of the other
> languages. (Yes, emacs is not a language, but elisp, the core of emacs, is
> and lazarus is an IDE for Pascal.)
> 
> I'm sorry of this is not entirely clear, but I hope it helps and I hope it
> is all correct. I may have worded some of it poorly.
Thank you for taking the time to provide a very informative answer, Kevin.
You did a fine job!
I currently am Maintainer for ~150 ports. So have become very familiar
with the prerequisites. But have become fairly frustrated with the
introduction of FLAVOR(s). Not the concept. But the lack of documenting
them. As a user; what would I use to apply a FLAVOR for any given port I
want to install; as in what is the correct syntax for all the languages
that are, or will be flavored? I can't seem to find any definitive
documentation. As a porter, the subject matter is fairly terse in the
porters handbook. Not many clues in /usr/ports/MK either.
So since I was unable to find much FLAVOR documentation. Specifically;
syntax for all the languages available to FLAVOR(s). I thought I might
try here.

Thanks again, for taking the time to reply!

--Chris




More information about the freebsd-ports mailing list