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

Reply via email to