Download raw body.
libc++ 19.1.7 ports fallout
On Mon Jun 23, 2025 at 07:27:54AM +0200, Theo Buehler wrote:
> I ran an update for libc++ 19.1.7 through an amd64 bulk with a local fix
> to unbreak libexecinfo.
>
> By far the most common cause for breakage is this change:
>
> The base template for std::char_traits has been removed in LLVM 19.
> If you are using std::char_traits with types other than char, wchar_t,
> char8_t, char16_t, char32_t or a custom character type for which you
> specialized std::char_traits, your code will stop working.
>
> Many upstreams already have fixes, otherwise freebsd and gentoo likely
> have something.
>
> Another common cause is the new bsd_locale_fallbacks.h which causes some
> weird breakage. This is OpenBSD specific since FreeBSD and NetBSD don't
> use this thanks to xlocale support. Not sure where the bug is, whether
> in OpenBSD's C headers or in the libc++ headers. It can often be worked
> around by bumping _XOPEN_SOURCE to 800 or similar.
>
>
> textproc/nlohmann-json will need an update to at least 3.11.3. I updated
> it locally to 3.12.0 to avoid some breakage (one test breaks because of
> LC_NUMERIC), but this bump fest will need to be tested and handled by
> someone on -current with a clean tree.
Thanks for the list, I think it makes it easier to update all the
old horrible ones when possible and fix the rest by hand.
I'll be happy to do that next time.
>
>
> cad/kicad:
> https://github.com/nanodbc/nanodbc/pull/434
> and
> implicit instantiation of undefined template 'std::char_traits<unsigned short>'
>
> databases/libpqxx:
> implicit instantiation of undefined template 'std::char_traits<unsigned char>'
>
> databases/mongodb/44!
> implicit instantiation of undefined template 'std::char_traits<fmt::char8_t>'
>
> devel/cbmc
> implicit instantiation of undefined template 'std::char_traits<unsigned int>'
>
> devel/mygui
> implicit instantiation of undefined template 'std::char_traits<unsigned short>'
>
> devel/arm-none-eabi/gcc,arm
> devel/or1k-elf/gcc
> devel/riscv-elf/gcc
> devel/riscv32-esp-elf/gcc-bootstrap
> devel/xtensa-esp32-elf/gcc-bootstrap
> devel/xtensa-esp32s2-elf/gcc-bootstrap
> devel/xtensa-esp32s3-elf/gcc-bootstrap
> devel/xtensa-lx106-elf/gcc-bootstrap
>
> #define islower(c) do_not_use_islower_with_safe_ctype
>
> editors/abiword
> implicit instantiation of undefined template 'std::char_traits<unsigned int>'
>
> editors/le
> ./edit.h:158:26: note: expanded from macro 'hex'
> 158 | #define hex (editmode==HEXM)
>
> emulators/dosbox-x
> implicit instantiation of undefined template 'std::char_traits<unsigned short>'
>
> games/endless-sky!
> reference to 'queue' is ambiguous
>
> games/openrct2
> implicit instantiation of undefined template 'std::char_traits<unsigned char>'
>
> games/recoil-rts
> fatal error: 'experimental/memory_resource' file not found
>
> games/scorched3d
> implicit instantiation of undefined template 'std::char_traits<unsigned int>'
>
> games/xye
> reference to 'lock' is ambiguous
>
> graphics/mapnik
> implicit instantiation of undefined template 'std::char_traits<int>'
>
> graphics/mypaint
> use of undeclared identifier 'vasprintf'; did you mean 'vsprintf'?
>
> graphics/opencolorio
> no member named 'strtol_l' in the global namespace; did you mean 'strtoll_l'?
>
> graphics/zxing-cpp
> implicit instantiation of undefined template 'std::char_traits<unsigned char>'
>
> inputmethods/fcitx-hangul
> implicit instantiation of undefined template 'std::char_traits<unsigned int>'
>
> lang/apl
> implicit instantiation of undefined template 'std::char_traits<unsigned char>'
>
> mail/grommunio/gromox
> use of undeclared identifier 'time'
>
> math/igraph
> use of undeclared identifier 'vasprintf'; did you mean 'vsprintf'?
>
> multimedia/sfml
> implicit instantiation of undefined template 'std::char_traits<unsigned int>'
>
> net/kea,mysql
> implicit instantiation of undefined template 'std::char_traits<unsigned char>'
>
> net/ns
> invalid operands to binary expression ('const TracedInt' and 'const TracedInt')
>
> textproc/wkhtmltopdf!
> declaration conflicts with target of using declaration already in scope
> 105 | inline bool isfinite(double x) { return finite(x); }
>
> www/ruby-passenger
> no member named 'swap' in namespace 'std'
>
> x11/blackbox
> implicit instantiation of undefined template 'std::char_traits<unsigned int>'
>
> x11/kde-applications/cantor
> /usr/local/lib/R/include/Rinternals.h:1009:9: note: macro 'length' defined here
> 1009 | #define length(x) Rf_length(x)
>
> x11/ogre
> implicit instantiation of undefined template 'std::char_traits<unsigned short>'
>
libc++ 19.1.7 ports fallout