Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Jul 2026 07:37:26 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        Steve Kargl <kargls@comcast.net>, ports@freebsd.org
Subject:   Re: What is a FLAVOR and how to unbreak ports?
Message-ID:  <56f4719d-0400-4883-b191-7e415d329a5d@yahoo.com>
In-Reply-To: <3f997b54-c1d1-49a5-9205-6019ce828cf5@yahoo.com>
References:  <add809af-41f1-4f3a-9f8d-246f2a01ec36@comcast.net> <CALH631nghtQpj%2BLoxsx3SL7tfr_URbW7pHRZScLpyki8HvBjBg@mail.gmail.com> <6ce75735-75f7-4852-814c-91b8105692e6@comcast.net> <SA1PR11MB88113E9A84985B293F61293BE6CC2@SA1PR11MB8811.namprd11.prod.outlook.com> <f73caf78-c17c-40e6-9b02-c6137725029c@comcast.net> <3f997b54-c1d1-49a5-9205-6019ce828cf5@yahoo.com>

index | next in thread | previous in thread | raw e-mail

On 7/26/26 22:30, Mark Millard wrote:
> On 7/26/26 19:43, Steve Kargl wrote:
>> On 7/26/26 18:41, Edward Sanford Sutton, III wrote:
>>>    Flavors are a way to have separate packages created for different
>>> configurations of a port. That way users of pkg do not need to go
>>> manually build software for relatively common software variation
>>> possibilities that they may want or need in place of a single default
>>> set of options.
>>
>> Yeah, I read the porter's documentation.  I could not find where
>> it mentions a comprehensive list of the FLAVORs.  There is no
>> discussion of how one can query for the list of FLAVORs.
>>
>>> On 7/26/26 13:18, Steve Kargl wrote:
>>>> On 7/26/26 12:51, Gleb Popov wrote:
>>>>> On Sun, Jul 26, 2026 at 10:43 PM Steve Kargl <kargls@comcast.net>
>>>>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Updating a laptop that had a year old FreeBSD on it
>>>>>> to top-of-tree.
>>>>>>
>>>>>> % portmaster -Byd --force-config sqlite3 |& tee sgk.log
>>>>>
>>>>> Try updating libclc first using portmaster or plain make.
>>>>
>>>> I did try plain make in libclc.  See the end of original email.
>>>> make dies with an error about llvm15 no longer being supported.
>>>> If llvm15 is no longer supported on fbsd 16, then the libclc
>>>> Makefile should simply skip trying to build for llvm15.

The libclc Makefile's:

.if ${FLAVOR} == llvm15
BROKEN_FreeBSD_16=      Base libc++ is now too fresh for Clang 15 to compile
.endif

seems oddly placed, as worded. It would seem better placed in
devel/llvm15 if the wording is accurate.

I'll also note that stable/15 and stable/14 now are llvm21 based. So
releng/14.5 and releng.15.2 will be llvm21 based, not llvm19 based.

So, if the wording is correct now, the broken list will need to grow
beyond FreeBSD_16 in the future: the libc++ wi update to be like is now
in FreeBSD's main (16).

>>>>
>>>>> Figure out what flavor you need by looking at the installed
>>>>> package's name
>>>>
>>>> That's the question.  What is a FLAVOR and how do I determine what
>>>> FLAVOR is the right flavor?
>>>>
>>>>> pkg info -x libclc
>>>>>
>>>>> If going the plain make route, append FLAVOR=llvmXY to make invocation.
>>>>
>>>> Is there a comprehensive list of FLAVORs?  'man make.conf' does not
>>>> mention FLAVOR.  Is it possible to set FLAVORS there?
>>>
>>>    Flavors are a property of each port individually and not an
>>> externally defined property; some different ports use common flavors
>>> like 'nox11' but there is no hard rule to it. In the ports tree you
>>> can list flavors with `make -C /usr/ports/devel/libclc -VFLAVORS` and
>>> drop - C if you run it in the port's folder.
>>
>> Well, that's inconvenient,
> 
> If one reads enough Makefile notation:
> 
> # grep FLAVORS= /usr/ports/devel/libclc/Makefile
> FLAVORS=	${15 16 17 18 19 20 21 22:L:S/^/llvm/}
> 
> So: llvm15 llvm16 . . . llvm22
> 
> llvm15 is being reported because it is listed first and that is the
> default default-value for a FLAVOR. (There is notation that could be in
> the Makefile to have a different default without adjusting there order.
> There is even notation for finding out what llvm vintage is the
> port-infrastructure's default --but it does not seem to be in use in the
> Makefile.
> 
> I've not kept track of portmaster's notation handling but a common
> notation could be:
> 
> devel/libclc@llvm21
> 
> (as an example). I've not recently checked which value LLVM_DEFAULT has
> as the upstream default ( 19 ?). (I force my own preferences locally.)
> 
> MAINTAINER=     x11@FreeBSD.org
> 
> So: likely no one is keeping the FLAVORS list up to date at the low end
> of the range where folks tend to just stop trying to use the old
> versions. At the upper end it is more obvious when an addition is needed
> and someone takes care of doing so. (Thus, 22 is present.)
> 
>> but that make command should be provided
>> in the porter's documentation.  At the moment, portmaster dies
>> with some mystery error.  Going to /usr/ports/devel/libclc and type
>> 'make' leads to all sorts of fun.  libclc dies because llvm15
>> is no longer supported; so, well, the port shouldn't even try
>> to build that flavor.
>>
>>>    For manually running make, `make -C /usr/ports/devel/libclc
>>> FLAVOR=llvm17` would be an example of overriding it. Not sure if there
>>> are other ways to express it.
>>
>> That's the problem.  There are apparently 8 flavors.  How do I determine
>> I need llvm17 instead of llvm20?
>>
>>>    Some changes I assume should happen:
>>>    1. The default of libclc should be reconsidered if it is broken on
>>> a platform unless it is being actively worked on. Why are we
>>> defaulting to the oldest compiler, a compiler not included as a base
>>> compiler on any supported FreeBSD version, and not even having a
>>> comment as to why?
>>
>> Good question.
>>
>>
>>>> In the old days, one could cd into any directory under /usr/port
>>>> and simply type 'make'.
>>>
>>>    Unless things are broken. Having been building things since 2004,
>>> you can usually find broken things when you look.
>>
>> I've been building ports since its inception.  In fact, I was the
>> maintainer for lang/f2c and few others prior to the creation of
>> portmgr.  portmgr broke lang/f2c, I received daily complaints it
>> was broken, and it only wasted a few weeks of my time trying to
>> figure out what portmgr did.  I dropped maintainership decades
>> ago due to that experience.
>>
>>  at over 30,000 port
>>> folders, its hard to have the tree in a state where 'nothing' fails.
>>
>> Sure, I find a number of issues every time I need to rebuild
>> ports.  I fix/workaround the issue and move on with life.  The
>> math/arpack-ng port now has a mpich and openmpi flavor, because
>> I got tired of editing out the hardcoded use of mpich and asked
>> for either 'none' or 'openmpi' build option.  Unfortunately,
>> math/octave has a hardcoded dependency on arpack-ng@mpich.  Fun
>> times.
>>
>>>> My actual problem is building devel/node24, which dies with an
>>>> error:
>>>> ld.lld: error: undefined symbol: sqlite3session_patchset.
>>>
>>>    I'd have to see a more complete error log to guess properly. 
>>
>> I've found a fix.  It seems that node24 requires sqlite3 built
>> with the sessions compile option set.  For some reason, it was
>> unset when I last built it on my system.  I suppose default
>> options change over time.
>>
> 
> 


-- 
===
Mark Millard
marklmi at yahoo.com


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56f4719d-0400-4883-b191-7e415d329a5d>