From 57eb5f474ee3d00a2152bc80b2d2638eb2152201 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 27 Aug 2026 17:07:08 +0500 Subject: [PATCH] build-all: always apply `tr1` removal patch Just to use consistent patches between the builds. It was previously guarded by `WASM`, but it was a dead code - `OpenCOLLADA` is skipped on wasm, so it was never exercised. Regarding the "specializing std::hash outside of the std:: namespace" issue on gcc - it was caused by patch missing fixes for `COLLADABU_HASH_NAMESPACE_OPEN` and `COLLADABU_HASH_NAMESPACE_CLOSE`. So in theory it should have also result in an error in clang or in an invalid code/ub. Either way, now it's fixed. --- nix/build-all.py | 8 +------- nix/patches/opencollada/remove_tr1.patch | 12 ++++++++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/nix/build-all.py b/nix/build-all.py index ccf7e42cc6..d849b288fe 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -1285,13 +1285,7 @@ if "OpenCOLLADA" in targets: # OpenCOLLADAConfig.cmake.in hardcodes shared-lib targets on Unix regardless of # whether shared libs were actually built. We make it follow `USE_SHARED` instead. patches.append("./patches/opencollada/config_select_libs_by_use_shared.patch") - - if WASM: - # This is necessary for the WASM build, because recent versions of - # clang don't have the tr1:: namespace anymore. However, it breaks - # some versions of gcc (9.4.0 at least) due to specializing std::hash - # outside of the std:: namespace. - patches.append("./patches/opencollada/remove_tr1.patch") + patches.append("./patches/opencollada/remove_tr1.patch") build_dependency( "OpenCOLLADA", diff --git a/nix/patches/opencollada/remove_tr1.patch b/nix/patches/opencollada/remove_tr1.patch index f586279d49..6b08b45595 100644 --- a/nix/patches/opencollada/remove_tr1.patch +++ b/nix/patches/opencollada/remove_tr1.patch @@ -27,11 +27,13 @@ index 8ab0fb9b..12503bfb 100644 - #define COLLADABU_HASH_MAP std::tr1::unordered_map - #define COLLADABU_HASH_MULTIMAP std::tr1::unordered_multimap - #define COLLADABU_HASH_SET std::tr1::unordered_set +- #define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1 +- #define COLLADABU_HASH_NAMESPACE_CLOSE } + #define COLLADABU_HASH_MAP std::unordered_map + #define COLLADABU_HASH_MULTIMAP std::unordered_multimap + #define COLLADABU_HASH_SET std::unordered_set - #define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1 - #define COLLADABU_HASH_NAMESPACE_CLOSE } ++ #define COLLADABU_HASH_NAMESPACE_OPEN std ++ #define COLLADABU_HASH_NAMESPACE_CLOSE #define COLLADABU_HASH_FUN hash @@ -107,12 +107,12 @@ #define COLLADABU_HASH_NAMESPACE_CLOSE @@ -45,11 +47,13 @@ index 8ab0fb9b..12503bfb 100644 - #define COLLADABU_HASH_MAP std::tr1::unordered_map - #define COLLADABU_HASH_MULTIMAP std::tr1::unordered_multimap - #define COLLADABU_HASH_SET std::tr1::unordered_set +- #define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1 +- #define COLLADABU_HASH_NAMESPACE_CLOSE } + #define COLLADABU_HASH_MAP std::unordered_map + #define COLLADABU_HASH_MULTIMAP std::unordered_multimap + #define COLLADABU_HASH_SET std::unordered_set - #define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1 - #define COLLADABU_HASH_NAMESPACE_CLOSE } ++ #define COLLADABU_HASH_NAMESPACE_OPEN std ++ #define COLLADABU_HASH_NAMESPACE_CLOSE #define COLLADABU_HASH_FUN hash diff --git a/common/libBuffer/include/CommonFWriteBufferFlusher.h b/common/libBuffer/include/CommonFWriteBufferFlusher.h index c7af45b2..fac4f133 100644