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);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
Fix with Makefile tweaks and libcxx22 fixes. I think this will unbreak
the sparce64 build.
OK?
diff --git a/games/cataclysm-dda/Makefile b/games/cataclysm-dda/Makefile
index 6623808252a..4fa7089570e 100644
--- a/games/cataclysm-dda/Makefile
+++ b/games/cataclysm-dda/Makefile
@@ -1,11 +1,10 @@
-BROKEN-sparc64= strtoll_l strtoull_l strtod_l strtof_l not declared this scope
-
COMMENT= rogue-like zombie survival game
CATEGORIES= games
V= 0.I
DIST_TUPLE+= github CleverRaven Cataclysm-DDA ${V} .
PKGNAME= cataclysm-dda-${V:S/-RELEASE//}
+REVISION= 0
HOMEPAGE= https://cataclysmdda.org
MAINTAINER= Kirill Bychkov <[email protected]>
@@ -37,14 +36,15 @@ CONFIGURE_ARGS = -DLOCALIZE=ON \
-DBACKTRACE=OFF \
-DGIT_VERSION=${V} \
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON \
- -DCMAKE_CXX_FLAGS="${CXXFLAGS} -I${LOCALBASE}/include \
- -I${X11BASE}/include
-I${X11BASE}/include/freetype2 \
- -DCATCH_CONFIG_NO_COUNTER" \
- -DCMAKE_EXE_LINKER_FLAGS="-L${LOCALBASE}/lib \
- -L${X11BASE}/lib -lintl -liconv" \
-DCMAKE_INSTALL_LOCALEDIR="${PREFIX}/share/locale" \
-Wno_dev
+CXXFLAGS += -I${LOCALBASE}/include -I${X11BASE}/include
+CXXFLAGS += -I${X11BASE}/include/freetype2
+CXXFLAGS += -DCATCH_CONFIG_NO_COUNTER
+
+MODCMAKE_LDFLAGS = -L${LOCALBASE}/lib -L${X11BASE}/lib -lintl -liconv
+
SUBST_VARS += V
.if ${FLAVOR:Mno_x11}
@@ -64,6 +64,8 @@ MAN_TILES= -tiles
NO_TEST= Yes
+MODCMAKE_POLICY_VERSION_OVERRIDE = Yes
+
post-extract:
mv ${WRKSRC}/src/third-party/flatbuffers/ \
${WRKSRC}/src/third-party/flatbuffers_int/
@@ -103,8 +105,9 @@ post-install:
${INSTALL_DATA}
${WRKSRC}/data/xdg/org.cataclysmdda.CataclysmDDA.appdata.xml \
${PREFIX}/share/metainfo/
-
-
-MODCMAKE_POLICY_VERSION_OVERRIDE = Yes
-
.include <bsd.port.mk>
+
+# fix build when ccache is installed but not enabled
+.if ${USE_CCACHE:L} != "yes"
+CONFIGURE_ARGS += -DCATA_CCACHE=OFF
+.endif
diff --git
a/games/cataclysm-dda/patches/patch-src_third-party_flatbuffers_int_util_h
b/games/cataclysm-dda/patches/patch-src_third-party_flatbuffers_int_util_h
new file mode 100644
index 00000000000..0236fedf7af
--- /dev/null
+++ b/games/cataclysm-dda/patches/patch-src_third-party_flatbuffers_int_util_h
@@ -0,0 +1,15 @@
+Index: src/third-party/flatbuffers_int/util.h
+--- src/third-party/flatbuffers_int/util.h.orig
++++ src/third-party/flatbuffers_int/util.h
+@@ -243,6 +243,11 @@ inline std::string IntToStringHex(int i, int xdigits)
+ #else
+ #define __strtof_impl(s, pe) static_cast<float>(_strtod_l(s, pe,
ClassicLocale::Get()))
+ #endif
++ #elif defined(__OpenBSD__)
++ #define __strtoull_impl(s, pe, b) strtoull(s, pe, b)
++ #define __strtoll_impl(s, pe, b) strtoll(s, pe, b)
++ #define __strtod_impl(s, pe) strtod(s, pe)
++ #define __strtof_impl(s, pe) strtof(s, pe)
+ #else
+ #define __strtoull_impl(s, pe, b) strtoull_l(s, pe, b,
ClassicLocale::Get())
+ #define __strtoll_impl(s, pe, b) strtoll_l(s, pe, b, ClassicLocale::Get())
diff --git a/games/cataclysm-dda/patches/patch-tests_new_character_test_cpp
b/games/cataclysm-dda/patches/patch-tests_new_character_test_cpp
new file mode 100644
index 00000000000..b3a8bc5bb82
--- /dev/null
+++ b/games/cataclysm-dda/patches/patch-tests_new_character_test_cpp
@@ -0,0 +1,13 @@
+Index: tests/new_character_test.cpp
+--- tests/new_character_test.cpp.orig
++++ tests/new_character_test.cpp
+@@ -90,6 +90,9 @@ struct failure {
+ std::vector<trait_id> mut;
+ itype_id item_name;
+ std::string reason;
++ bool operator<( const failure &rhs ) const {
++ return prof < rhs.prof;
++ }
+ };
+
+ namespace std