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;

Reply via email to