commit: 56fbf7edb94d3b775a02cb7ce2eaa1c6ec7d037f Author: Holger Hoffstätte <holger <AT> applied-asynchrony <DOT> com> AuthorDate: Sun Feb 8 16:01:39 2026 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed Feb 11 03:42:22 2026 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56fbf7ed
dev-libs/collada-dom: fix build with clang & assorted other problems Fixes from upstream PRs and a fork to fix building with clang, C++ conformance issues and cmake4. Closes: https://bugs.gentoo.org/864355 Closes: https://bugs.gentoo.org/958019 Closes: https://bugs.gentoo.org/968501 Signed-off-by: Holger Hoffstätte <holger <AT> applied-asynchrony.com> Part-of: https://github.com/gentoo/gentoo/pull/45691 Closes: https://github.com/gentoo/gentoo/pull/45691 Signed-off-by: Sam James <sam <AT> gentoo.org> dev-libs/collada-dom/collada-dom-2.5.0-r3.ebuild | 43 ++++++++++ .../files/collada-dom-2.5.0-cmake4.patch | 20 +++++ .../files/collada-dom-2.5.0-fPIC-for-clang.patch | 28 +++++++ .../collada-dom-2.5.0-fix-int-return-type.patch | 42 ++++++++++ .../files/collada-dom-2.5.0-unique_ptr.patch | 93 ++++++++++++++++++++++ 5 files changed, 226 insertions(+) diff --git a/dev-libs/collada-dom/collada-dom-2.5.0-r3.ebuild b/dev-libs/collada-dom/collada-dom-2.5.0-r3.ebuild new file mode 100644 index 000000000000..4010ef9a0ad3 --- /dev/null +++ b/dev-libs/collada-dom/collada-dom-2.5.0-r3.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/rdiankov/collada-dom" +else + SRC_URI="https://github.com/rdiankov/collada-dom/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~x86" +fi + +DESCRIPTION="COLLADA Document Object Model (DOM) C++ Library" +HOMEPAGE="https://github.com/rdiankov/collada-dom" + +LICENSE="MIT" +SLOT="0/25" + +RDEPEND=" + dev-libs/boost:= + dev-libs/libxml2:= + dev-libs/libpcre[cxx] + virtual/minizip:=" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${P}-boost-1.{85,89}.patch # bugs 932316, 968458 + "${FILESDIR}"/${P}-fPIC-for-clang.patch # bug 968501 + "${FILESDIR}"/${P}-fix-int-return-type.patch + "${FILESDIR}"/${P}-unique_ptr.patch + "${FILESDIR}"/${P}-cmake4.patch +) + +src_configure() { + # bug 618960 + append-cxxflags -std=c++14 + + cmake_src_configure +} diff --git a/dev-libs/collada-dom/files/collada-dom-2.5.0-cmake4.patch b/dev-libs/collada-dom/files/collada-dom-2.5.0-cmake4.patch new file mode 100644 index 000000000000..e7a9a4b5d633 --- /dev/null +++ b/dev-libs/collada-dom/files/collada-dom-2.5.0-cmake4.patch @@ -0,0 +1,20 @@ +https://github.com/Gepetto/collada-dom/commit/f6c6a2bea63c637937959e863673a89c91ffb629 + +From: Guilhem Saurel <[email protected]> +Date: Wed, 8 Oct 2025 09:59:04 +0200 +Subject: [PATCH] CMake: bump cmake_minimum_required to 3.10, fix for CMake v4 + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9764534..43601f6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,4 @@ +-cmake_minimum_required (VERSION 2.6.0) ++cmake_minimum_required (VERSION 3.10) + project (collada-dom) + set( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE ) + diff --git a/dev-libs/collada-dom/files/collada-dom-2.5.0-fPIC-for-clang.patch b/dev-libs/collada-dom/files/collada-dom-2.5.0-fPIC-for-clang.patch new file mode 100644 index 000000000000..ac94aff8385a --- /dev/null +++ b/dev-libs/collada-dom/files/collada-dom-2.5.0-fPIC-for-clang.patch @@ -0,0 +1,28 @@ +https://github.com/rdiankov/collada-dom/pull/44 + +From: lenik terenin <[email protected]> +Date: Thu, 14 Nov 2024 14:59:37 +0900 +Subject: [PATCH] enable "-fPIC" for CLANG toolchain + +--- + CMakeLists.txt | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 20635b2..9764534 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -183,7 +183,12 @@ foreach(ldir ${Boost_LIBRARY_DIRS}) + set(COLLADA_DOM_BOOST_LIB_DIRS "${COLLADA_DOM_BOOST_LIB_DIRS} -L${ldir}") + endforeach() + +-if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) ++set(COMPILER_IS_CLANG FALSE) ++if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") ++ set(COMPILER_IS_CLANG TRUE) ++endif() ++ ++if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG) + set(EXTRA_COMPILE_FLAGS "${COLLADA_DOM_EXTERNAL_FLAGS} -DCOLLADA_DOM_NAMESPACE -fPIC") + else() + set(EXTRA_COMPILE_FLAGS "${COLLADA_DOM_EXTERNAL_FLAGS} -DCOLLADA_DOM_NAMESPACE") diff --git a/dev-libs/collada-dom/files/collada-dom-2.5.0-fix-int-return-type.patch b/dev-libs/collada-dom/files/collada-dom-2.5.0-fix-int-return-type.patch new file mode 100644 index 000000000000..f42db4d8b04e --- /dev/null +++ b/dev-libs/collada-dom/files/collada-dom-2.5.0-fix-int-return-type.patch @@ -0,0 +1,42 @@ +https://github.com/rdiankov/collada-dom/pull/40 + +From: Atsushi Watanabe <[email protected]> +Date: Fri, 20 Jan 2023 14:59:45 +0900 +Subject: [PATCH] Fix int return type + +NULL is std::nullptr_t since gcc11 and not implicitly casted. +--- + dom/src/dae/daeDom.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/dom/src/dae/daeDom.cpp b/dom/src/dae/daeDom.cpp +index 916116e..c5312af 100644 +--- a/dom/src/dae/daeDom.cpp ++++ b/dom/src/dae/daeDom.cpp +@@ -111,7 +111,7 @@ daeInt getDomAnyID(DAE& dae) + return ColladaDOM141::domAny::ID(); + } + #endif +- return NULL; ++ return 0; + } + + daeInt getDomSourceID(DAE& dae) +@@ -126,7 +126,7 @@ daeInt getDomSourceID(DAE& dae) + return ColladaDOM141::domSource::ID(); + } + #endif +- return NULL; ++ return 0; + } + + daeInt getDomCOLLADAID(const char* specversion) +@@ -141,7 +141,7 @@ daeInt getDomCOLLADAID(const char* specversion) + return ColladaDOM141::domCOLLADA::ID(); + } + #endif +- return NULL; ++ return 0; + } + + void copyElementAny(daeElementRef dstAny, daeElement* srcAny) diff --git a/dev-libs/collada-dom/files/collada-dom-2.5.0-unique_ptr.patch b/dev-libs/collada-dom/files/collada-dom-2.5.0-unique_ptr.patch new file mode 100644 index 000000000000..e17afafad501 --- /dev/null +++ b/dev-libs/collada-dom/files/collada-dom-2.5.0-unique_ptr.patch @@ -0,0 +1,93 @@ +https://github.com/Gepetto/collada-dom/commit/5adebc004f9ee7bb0fc1f498205cf5449812ced1 + +From: Tan Li Boon <[email protected]> +Date: Sat, 13 Nov 2021 10:06:46 +0900 +Subject: [PATCH] collada-dom: Replace deprecated auto_ptr with unique_ptr + +--- + dom/include/dae.h | 2 +- + dom/include/dae/daeErrorHandler.h | 2 +- + dom/include/dae/daeWin32Platform.h | 2 +- + dom/src/dae/daeErrorHandler.cpp | 2 +- + dom/test/1.4/domTest.cpp | 2 +- + dom/test/1.5/domTest.cpp | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/dom/include/dae.h b/dom/include/dae.h +index e53388b..b041e55 100644 +--- a/dom/include/dae.h ++++ b/dom/include/dae.h +@@ -290,7 +290,7 @@ class DLLSPEC DAE + daeSidRefCache sidRefCache; + daeString COLLADA_VERSION, COLLADA_NAMESPACE; // dynamic + +- std::auto_ptr<charEncoding> localCharEncoding; ++ std::unique_ptr<charEncoding> localCharEncoding; + static charEncoding globalCharEncoding; + }; + +diff --git a/dom/include/dae/daeErrorHandler.h b/dom/include/dae/daeErrorHandler.h +index 6ffab01..8b02c15 100644 +--- a/dom/include/dae/daeErrorHandler.h ++++ b/dom/include/dae/daeErrorHandler.h +@@ -55,7 +55,7 @@ class DLLSPEC daeErrorHandler { + + private: + static daeErrorHandler *_instance; +- static std::auto_ptr<daeErrorHandler> _defaultInstance; ++ static std::unique_ptr<daeErrorHandler> _defaultInstance; + }; + + #endif +diff --git a/dom/include/dae/daeWin32Platform.h b/dom/include/dae/daeWin32Platform.h +index e501597..e97822c 100644 +--- a/dom/include/dae/daeWin32Platform.h ++++ b/dom/include/dae/daeWin32Platform.h +@@ -38,7 +38,7 @@ typedef int intptr_t; + + // GCC doesn't understand "#pragma warning" + #ifdef _MSC_VER +-// class 'std::auto_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'daeErrorHandler' ++// class 'std::unique_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'daeErrorHandler' + #pragma warning(disable: 4251) + // warning C4100: 'profile' : unreferenced formal parameter + #pragma warning(disable: 4100) +diff --git a/dom/src/dae/daeErrorHandler.cpp b/dom/src/dae/daeErrorHandler.cpp +index 264c343..e38c9da 100644 +--- a/dom/src/dae/daeErrorHandler.cpp ++++ b/dom/src/dae/daeErrorHandler.cpp +@@ -10,7 +10,7 @@ + #include <modules/stdErrPlugin.h> + + daeErrorHandler *daeErrorHandler::_instance = NULL; +-std::auto_ptr<daeErrorHandler> daeErrorHandler::_defaultInstance(new stdErrPlugin); ++std::unique_ptr<daeErrorHandler> daeErrorHandler::_defaultInstance(new stdErrPlugin); + + daeErrorHandler::daeErrorHandler() { + } +diff --git a/dom/test/1.4/domTest.cpp b/dom/test/1.4/domTest.cpp +index 28aefa5..5e38019 100644 +--- a/dom/test/1.4/domTest.cpp ++++ b/dom/test/1.4/domTest.cpp +@@ -368,7 +368,7 @@ DefineTest(tinyXmlLoad) { + // saved document, and make sure the results are the same. + DAE dae; + CheckResult(dae.open(seymourOrig)); +- auto_ptr<daeTinyXMLPlugin> tinyXmlPlugin(new daeTinyXMLPlugin); ++ unique_ptr<daeTinyXMLPlugin> tinyXmlPlugin(new daeTinyXMLPlugin); + dae.setIOPlugin(tinyXmlPlugin.get()); + CheckResult(dae.writeTo(seymourOrig, seymourTinyXml)); + CheckResult(dae.open(seymourTinyXml)); +diff --git a/dom/test/1.5/domTest.cpp b/dom/test/1.5/domTest.cpp +index 0ba3449..1d4b7b5 100644 +--- a/dom/test/1.5/domTest.cpp ++++ b/dom/test/1.5/domTest.cpp +@@ -371,7 +371,7 @@ DefineTest(tinyXmlLoad) { + // saved document, and make sure the results are the same. + DAE dae; + CheckResult(dae.open(seymourOrig)); +- auto_ptr<daeTinyXMLPlugin> tinyXmlPlugin(new daeTinyXMLPlugin); ++ unique_ptr<daeTinyXMLPlugin> tinyXmlPlugin(new daeTinyXMLPlugin); + dae.setIOPlugin(tinyXmlPlugin.get()); + CheckResult(dae.writeTo(seymourOrig, seymourTinyXml)); + CheckResult(dae.open(seymourTinyXml));
