From: Thomas Frohwein Subject: Re: [libcxx22] fallout To: Rafael Sadowski Cc: Theo Buehler , ports@openbsd.org, Thomas Frohwein Date: Fri, 28 Aug 2026 06:33:47 -0700 On Fri, 28 Aug 2026 11:12:51 +0200 Rafael Sadowski wrote: > On Fri Aug 21, 2026 at 02:15:34PM +0200, Theo Buehler wrote: > > Here is the directly libcxx22-related breakage of my first bulk. > > > > There may be a few more because mono got stuck with a weird error. > > And I did not try to build the V8 monsters: codex, deno, chromiums > > and a few others because my machine isn't beefy enough. I don't > > think anything super important is directly affected or hiding > > behind those. So as far as ports are concerned, I think we can land > > libcxx22 whenever we want: > > > > audio/ncmpcpp > > audio/rubberband > > cad/freecad > > databases/mongodb/44 > > games/cataclysm-dda > > games/dxx-rebirth > > games/flightgear/base > > games/keeperrl > > mail/kopano/core > > misc/subsurface > > shells/fish/v3 > > textproc/lttoolbox > > > > There are basically two main classes of failures: comparison > > operators and locale things and a few odd ones like fish/v3 and > > > > audio/ncmpcpp > > /usr/include/c++/v1/__algorithm/sift_down.h:49:39: error: no > > matching function for call to object of type 'LocaleBasedSorting' > > 49 | } else if ((__child + 1) < __len && __comp(__first[__child], > > __first[__child + 1])) { | > > ^~~~~~ > > > > audio/rubberband > > ../rubberband-4.0.0/src/common/mathmisc.h:58:1: error: unknown type > > name 'size_t'; did you mean 'std::size_t'? 58 | size_t > > roundUp(size_t value); // to nearest power of two | ^~~~~~ > > | std::size_t > > > > cad/freecad > > /usr/include/c++/v1/__utility/lazy_synth_three_way_comparator.h:45:21: > > error: no matching function for call to object of type 'const > > std::less' 45 | bool __result = __comp_(__lhs_, __rhs_); > > | ^~~~~~~ > > > > databases/mongodb/44 > > /usr/include/c++/v1/__utility/lazy_synth_three_way_comparator.h:45:21: > > error: no matching function for call to object of type 'const > > std::less' 45 | bool __result = __comp_(__lhs_, __rhs_); > > | ^~~~~~~ > > > > games/cataclysm-dda > > /usr/ports/pobj/cataclysm-dda-0.I/Cataclysm-DDA-0.I/src/third-party/flatbuffers_int/util.h:267:12: > > error: use of undeclared identifier 'strtoll_l' 267 | *val = > > __strtoll_impl(str, endptr, base); | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > games/dxx-rebirth > > scons: *** Failed to initialize profile ('d1x', ''): C++ compiler > > does not support std::make_unique_for_overwrite, std::make_unique. > > See build/config.log for details. Stop. > > > > games/flightgear/base > > /usr/ports/pobj/flightgear-2024.1.3/flightgear-2024.1.3/src/FDM/JSBSim/input_output/string_utilities.cpp:91:18: > > error: use of undeclared identifier 'strtod_l' 91 | double value > > = strtod_l(first, nullptr, numeric_c.Locale); | > > ^~~~~~~~ 1 error generated. > > ninja: build stopped: subcommand failed. > > > > games/keeperrl > > /usr/include/c++/v1/__algorithm/sift_down.h:49:46: error: type > > 'vector::Iterator' does not provide a > > subscript operator 49 | } else if ((__child + 1) < __len && > > __comp(__first[__child], __first[__child + 1])) { | > > ^~~~~~~ ~~~~~~~ > > OK? Thanks, ok! (include REVISION bump) > > diff --git a/games/keeperrl/patches/patch-my_containers_h > b/games/keeperrl/patches/patch-my_containers_h new file mode 100644 > index 00000000000..c1fc215fd23 > --- /dev/null > +++ b/games/keeperrl/patches/patch-my_containers_h > @@ -0,0 +1,16 @@ > +Unbreak libcxx22 build > +Index: my_containers.h > +--- my_containers.h.orig > ++++ my_containers.h > +@@ -333,6 +333,11 @@ class vector { > + return *it; > + } > + > ++ decltype(auto) operator[] (difference_type n) const { > ++ checkParent(); > ++ return it[n]; > ++ } > ++ > + decltype(auto) operator-> () const { > + checkParent(); > + return *it;