Index | Thread | Search

From:
Rafael Sadowski <rafael@sizeofvoid.org>
Subject:
Re: libc++ 19.1.7 ports fallout
To:
Theo Buehler <tb@theobuehler.org>
Cc:
ports@openbsd.org
Date:
Wed, 25 Jun 2025 21:13:01 +0200

Download raw body.

Thread
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>'
>