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<void>'
> 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<void>'
> 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<Creature *>::Iterator<Creature **>' does not provide a subscript
> operator
> 49 | } else if ((__child + 1) < __len && __comp(__first[__child],
> __first[__child + 1])) {
> | ^~~~~~~ ~~~~~~~
OK?
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;