From: Thomas Frohwein Subject: Re: [libcxx22] fallout To: Rafael Sadowski Cc: Theo Buehler , ports@openbsd.org, Thomas Frohwein Date: Thu, 27 Aug 2026 07:22:00 -0700 On Wed, 26 Aug 2026 09:22:16 +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. > > > I updated dxx-rebirth to the latest upstream commit. (We can commit > this in two different commits) > > std::make_unique and std::make_unique_for_overwrite are marked as > [[nodiscard]] in libcxx22. > > OK? Untested (no time this week sadly), but looks good to me so if it builds ok thfr@ > > diff --git a/games/dxx-rebirth/Makefile b/games/dxx-rebirth/Makefile > index 3f651616480..9d2d4b2054c 100644 > --- a/games/dxx-rebirth/Makefile > +++ b/games/dxx-rebirth/Makefile > @@ -1,8 +1,8 @@ > COMMENT = source port of Descent, a 6-degrees-of-freedom > shooter GH_ACCOUNT = dxx-rebirth > GH_PROJECT = dxx-rebirth > -GH_COMMIT = b749eadb4080f596ce90ef7b2be97d7c1213567f > -DISTNAME = dxx-rebirth-0.60pl20260412 > +GH_COMMIT = cb0473dbd5fb6e261223080ba1e60b6d7a228954 > +DISTNAME = dxx-rebirth-0.60pl20260823 > CATEGORIES = games x11 > > HOMEPAGE = https://www.dxx-rebirth.com/ > diff --git a/games/dxx-rebirth/distinfo b/games/dxx-rebirth/distinfo > index f49a44d3850..6b5c67c368a 100644 > --- a/games/dxx-rebirth/distinfo > +++ b/games/dxx-rebirth/distinfo > @@ -1,2 +1,2 @@ > -SHA256 (dxx-rebirth-0.60pl20260412-b749eadb.tar.gz) = > qCz2J9cIJjO71BfroOG9zhJ87OCf4aWs3rPYiT/aQss= -SIZE > (dxx-rebirth-0.60pl20260412-b749eadb.tar.gz) = 2292934 +SHA256 > (dxx-rebirth-0.60pl20260823-cb0473db.tar.gz) = > lSLigb6/80aTZHHSQI6TXQdYanH3ghyDe1cQkWoORF4= +SIZE > (dxx-rebirth-0.60pl20260823-cb0473db.tar.gz) = 2183482 diff --git > a/games/dxx-rebirth/patches/patch-SConstruct > b/games/dxx-rebirth/patches/patch-SConstruct index > a06224ad07d..abd39540158 100644 --- > a/games/dxx-rebirth/patches/patch-SConstruct +++ > b/games/dxx-rebirth/patches/patch-SConstruct @@ -1,7 +1,29 @@ Index: > SConstruct --- SConstruct.orig +++ SConstruct > -@@ -2179,7 +2179,7 @@ help:assume compiler supports > __attribute__((unused)) +@@ -601,8 +601,8 @@ struct A_%(N)s > + > Cxx20RequiredFeature('std::make_unique_for_overwrite', ''' > + #include > + ''', ''' > +- std::make_unique_for_overwrite(); > +- std::make_unique_for_overwrite(1); > ++ (void)std::make_unique_for_overwrite(); > ++ (void)std::make_unique_for_overwrite(1); > + '''), > + Cxx20RequiredFeature('requires clause', ''' > + template > +@@ -754,8 +754,8 @@ int a_%(N)s = U_%(N)s + 1; > + Cxx14RequiredFeature('std::make_unique', ''' > + #include > + ''', ''' > +- std::make_unique(0); > +- std::make_unique(1); > ++ (void)std::make_unique(0); > ++ (void)std::make_unique(1); > + '''), > + Cxx11RequiredFeature('std::addressof', ''' > + #include > +@@ -2254,7 +2254,7 @@ help:assume compiler supports > __attribute__((unused)) > self._check_macro(context,macro_name=macro_name,macro_value=macro_value,test=""" > dxx_compiler_attribute_unused static void a(){} > @@ -10,7 +32,7 @@ Index: SConstruct > > @_custom_test > def check_cxx11_static_assert(self,context,_f=''' > -@@ -2495,7 +2495,7 @@ $ x86_64-pc-linux-gnu-g++-5.4.0 -x c++ -S > -Wformat -o +@@ -2570,7 +2570,7 @@ $ x86_64-pc-linux-gnu-g++-5.4.0 -x > c++ -S -Wformat -o @_custom_test > def check_compiler_useless_cast(self,context): > Compile = self.Compile > @@ -19,7 +41,7 @@ Index: SConstruct > if Compile(context, text=''' > /* > * SDL on Raspbian provokes a warning from -Wuseless-cast > -@@ -4723,11 +4723,6 @@ class DXXCommon(LazyObjectConstructor): > +@@ -4882,11 +4882,6 @@ class DXXCommon(LazyObjectConstructor): > env = self.env > user_settings = self.user_settings >