On 5/22/26 09:34, Slawa Olhovchenkov wrote:
> On Sat, Apr 25, 2026 at 02:18:54PM +0000, Dimitry Andric wrote:
> 
>> The branch main has been updated by dim:
>>
>> URL: 
>> https://cgit.FreeBSD.org/src/commit/?id=700637cbb5e582861067a11aaca4d053546871d2
>>
>> commit 700637cbb5e582861067a11aaca4d053546871d2
>> Merge: 6243d755fb82 3f709e42e3be
>> Author:     Dimitry Andric <[email protected]>
>> AuthorDate: 2025-12-07 15:15:22 +0000
>> Commit:     Dimitry Andric <[email protected]>
>> CommitDate: 2026-04-25 14:08:55 +0000
>>
>>     Merge llvm-project main llvmorg-21-init-19288-gface93e724f4
>>     
>>     This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
>>     openmp to llvm-project main llvmorg-21-init-19288-gface93e724f4, the
>>     last commit before the upstream release/21.x branch was created.
>>     
>>     PR:             292067
>>     MFC after:      1 month
> 
> This is broke at least graphics/krita
> I mean __type_traits/is_integral.h is incorrect now: template <class
> _Tp> struct __libcpp_is_integral defined only for
> !__has_builtin(__is_integral)
> 
> 


Well, use of  non-public LLVM lib++ types are subject to upstream
removal or redesign at any LLVM update:

QUOTE
In file included from
/wrkdirs/usr/ports/graphics/krita/work/.build/libs/pigment/kritapigment_autogen/EWIEGA46WW/../../../../../krita-5.2.14/libs/pigment/KoColorSpaceMaths.h:109:
/wrkdirs/usr/ports/graphics/krita/work/krita-5.2.14/libs/global/KisHalfTraits.h:33:10:
error: no template named '__libcpp_is_integral'; did you mean
'__libcpp_is_final'?
   33 |   struct __libcpp_is_integral<half>
      |          ^~~~~~~~~~~~~~~~~~~~
      |          __libcpp_is_final
/usr/include/c++/v1/__type_traits/is_final.h:22:8: note:
'__libcpp_is_final' declared here
   22 | struct __libcpp_is_final : integral_constant<bool,
__is_final(_Tp)> {};
      |        ^
1 error generated.
END QUOTE

Where:

work/krita-5.2.14/libs/global/KisHalfTraits.h has:

QUOTE
#elif defined _LIBCPP_VERSION

template<>
  struct __libcpp_is_integral<half>
  : public false_type { };
END QUOTE

That __ prefix in the __libcpp_is_integral name indicates it is only for
internal LLVM libc++ use and is subject to removal or
incompatible-redesign updates or such between any 2 libc++ updates.

graphics/krita can not validly expect to be portable across LLVM
releases as written. It is actually in violation of the C++ standards
relative to its use of names with __ prefixes.


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

Reply via email to