commit:     054f5ce87ab5e96a7224e2e396f897472d0d8f62
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Fri Dec 15 16:50:01 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jan 20 12:26:30 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=054f5ce8

media-libs/assimp: add 5.2.5-r2, add 5.3.1

Rework tests to make use of gtest via ctest.
Some tests generate random input data which might fail on fma-enabled CPUs due 
to smaller rounding errors on fused operations, so we repeat those
tests until they succeed.

Closes: https://bugs.gentoo.org/908403
Closes: https://bugs.gentoo.org/910362
Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/34346
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-libs/assimp/Manifest                         |   1 +
 media-libs/assimp/assimp-5.2.5-r2.ebuild           |  94 ++++++++++++++++
 media-libs/assimp/assimp-5.3.1.ebuild              | 125 +++++++++++++++++++++
 .../files/assimp-5.2.5-float-comparison.patch      |  84 ++++++++++++++
 media-libs/assimp/files/assimp-5.2.5-gtest.patch   |  30 +++++
 5 files changed, 334 insertions(+)

diff --git a/media-libs/assimp/Manifest b/media-libs/assimp/Manifest
index 34611184f6fc..cef7c0a6b33c 100644
--- a/media-libs/assimp/Manifest
+++ b/media-libs/assimp/Manifest
@@ -1 +1,2 @@
 DIST assimp-5.2.5.tar.gz 49543936 BLAKE2B 
77e0eecd1307646211a86244a371e24401dffd03dceb569acdd63751cdb38bd169c8b12c942efd2e77b5f541653f2775739150b9fe352b8c903dcc4fe7bccca8
 SHA512 
ac0dc4243f9d1ff077966f0037187b4374075ac97e75e1a3cd6bdc1caf5f8e4d40953d9a8a316480969c09524d87daa9d3ed75e6ac6f037dd5b1c5f25fce3afb
+DIST assimp-5.3.1.tar.gz 52826870 BLAKE2B 
1f3eac17deb6d19777f2a7cdf74e5be9d6df12a70e9b0449a90f3cc6f85b6d4170de2b870c028e2ad9c7f6ac7269daa0cbb3971dd1feb83a5b12a683ff8bb72f
 SHA512 
49963f84ed0a8145f3af249890a533f0b12f5553ae09581289cb1f20cb49cb1a3ed3f3c4c966ceb43aa897b90deca268aa6554066b2bd34f2ac9c15041420ddb

diff --git a/media-libs/assimp/assimp-5.2.5-r2.ebuild 
b/media-libs/assimp/assimp-5.2.5-r2.ebuild
new file mode 100644
index 000000000000..d8f7abc1a02b
--- /dev/null
+++ b/media-libs/assimp/assimp-5.2.5-r2.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Importer library to import assets from 3D files"
+HOMEPAGE="https://github.com/assimp/assimp";
+SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="samples test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       sys-libs/zlib[minizip]
+       samples? (
+               media-libs/freeglut
+               media-libs/libglvnd
+       )
+       test? (
+               dev-cpp/gtest
+       )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-5.2.5-gtest.patch"
+       "${FILESDIR}/${PN}-5.2.5-float-comparison.patch"
+)
+
+DOCS=( CodeConventions.md Readme.md )
+
+src_prepare() {
+       sed -r \
+               -e "s#PROJECT\(Assimp VERSION 
[0-9]+\.[0-9]+\.[0-9]+\)#PROJECT(Assimp VERSION ${PV})#g" \
+               -i CMakeLists.txt || die
+       sed -r \
+               -e "s#EXPECT_EQ\(aiGetVersionPatch\(\), [0-9]+U 
\);#EXPECT_EQ(aiGetVersionPatch(), $(ver_cut 3)U );#g" \
+               -e "s#EXPECT_NE\( aiGetVersionRevision#EXPECT_EQ\( 
aiGetVersionRevision#g" \
+               -i test/unit/utVersion.cpp || die
+       sed \
+               -e "s# -O0 -g # #g" \
+               -i \
+                       cmake-modules/Coveralls.cmake \
+                       contrib/android-cmake/android.toolchain.cmake \
+                       contrib/openddlparser/CMakeLists.txt \
+                       CMakeLists.txt \
+               || die
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DASSIMP_ASAN=OFF
+               -DASSIMP_BUILD_ASSIMP_TOOLS=ON
+               -DASSIMP_BUILD_DOCS=OFF
+               -DASSIMP_BUILD_SAMPLES=$(usex samples)
+               -DASSIMP_BUILD_TESTS=$(usex test)
+               -DASSIMP_BUILD_ZLIB=OFF
+               -DASSIMP_DOUBLE_PRECISION=OFF
+               -DASSIMP_INJECT_DEBUG_POSTFIX=OFF
+               -DASSIMP_IGNORE_GIT_HASH=ON
+               -DASSIMP_UBSAN=OFF
+               -DASSIMP_WARNINGS_AS_ERRORS=OFF
+               # bug #891787 (CVE-2022-45748), intentionally not in alphabetic 
ordering
+               -DASSIMP_BUILD_COLLADA_IMPORTER=OFF
+               -DASSIMP_BUILD_COLLADA_EXPORTER=OFF
+       )
+
+       if use samples; then
+               mycmakeargs+=( -DOpenGL_GL_PREFERENCE="GLVND" )
+       fi
+
+       cmake_src_configure
+}
+
+src_test() {
+       local CMAKE_SKIP_TESTS=(
+               # ( Failed )
+               "^utCollada.*"
+               "^utIssues.OpacityBugWhenExporting_727$"
+       )
+       myctestargs+=(
+               --repeat until-pass:100
+       )
+
+       cmake_src_test
+}

diff --git a/media-libs/assimp/assimp-5.3.1.ebuild 
b/media-libs/assimp/assimp-5.3.1.ebuild
new file mode 100644
index 000000000000..1fd76e9b1701
--- /dev/null
+++ b/media-libs/assimp/assimp-5.3.1.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Importer library to import assets from 3D files"
+HOMEPAGE="https://github.com/assimp/assimp";
+SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="doc samples test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       sys-libs/zlib[minizip]
+       doc? ( app-doc/doxygen )
+       samples? (
+               media-libs/freeglut
+               media-libs/libglvnd
+       )
+       test? (
+               dev-cpp/gtest
+       )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-5.2.5-gtest.patch"
+       "${FILESDIR}/${PN}-5.2.5-float-comparison.patch"
+)
+
+DOCS=( CodeConventions.md Readme.md )
+
+src_prepare() {
+       sed -r \
+               -e "s#PROJECT\(Assimp VERSION 
[0-9]+\.[0-9]+\.[0-9]+\)#PROJECT(Assimp VERSION ${PV})#g" \
+               -i CMakeLists.txt || die
+       sed -r \
+               -e "s#EXPECT_EQ\(aiGetVersionPatch\(\), [0-9]+U 
\);#EXPECT_EQ(aiGetVersionPatch(), $(ver_cut 3)U );#g" \
+               -e "s#EXPECT_NE\( aiGetVersionRevision#EXPECT_EQ\( 
aiGetVersionRevision#g" \
+               -i test/unit/utVersion.cpp || die
+       sed \
+               -e "s# -g -O0 # #g" \
+               -i \
+                       cmake-modules/Coveralls.cmake \
+                       contrib/android-cmake/android.toolchain.cmake \
+                       contrib/openddlparser/CMakeLists.txt \
+                       CMakeLists.txt \
+               || die
+       sed -r \
+               -e "s#(PROJECT_NUMBER *= \").*\"#\1v${PV}\"#g" \
+               -e "s#(GENERATE_XML *= )(YES|NO)#\1NO#g" \
+               -e "s#(GENERATE_HTML *= )(YES|NO)#\1YES#g" \
+               -i doc/Doxyfile.in || die
+       sed -r \
+               -e "s#AssimpDoc_Html(/AnimationOverview)#architecture\1#g" \
+               -e "s#AssimpDoc_Html(/dragonsplash)#images\1#g" \
+               -i doc/CMakeLists.txt || die
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               # -DASSIMP_ASAN=yes # Enable AddressSanitizer.
+               -DASSIMP_BUILD_ASSIMP_TOOLS=yes # If the supplementary tools 
for Assimp are built in addition to the library.
+               -DASSIMP_BUILD_DOCS=$(usex doc) # Build documentation using 
Doxygen.
+               # -DASSIMP_BUILD_DRACO=no # If the Draco libraries are to be 
built. Primarily for glTF
+               # -DASSIMP_BUILD_NONFREE_C4D_IMPORTER=no # Build the C4D 
importer, which relies on the non-free Cineware SDK.
+               -DASSIMP_BUILD_SAMPLES=$(usex samples) # If the official 
samples are built as well (needs Glut).
+               -DASSIMP_BUILD_TESTS=$(usex test) # If the test suite for 
Assimp is built in addition to the library.
+               -DASSIMP_BUILD_ZLIB=no # Build your own zlib
+               -DASSIMP_COVERALLS=$(usex test) # Enable this to measure test 
coverage.
+               # breaks tests
+               # -DASSIMP_DOUBLE_PRECISION=no # Set to yes to enable double 
precision processing
+               # -DASSIMP_HUNTER_ENABLED=no # Enable Hunter package manager 
support
+               -DASSIMP_IGNORE_GIT_HASH=yes # Don't call git to get the hash.
+               -DASSIMP_INJECT_DEBUG_POSTFIX=no # Inject debug postfix in 
.a/.so/.dll lib names
+               # -DASSIMP_INSTALL=yes # Disable this if you want to use assimp 
as a submodule.
+               # -DASSIMP_LIBRARY_SUFFIX= # Suffix to append to library names
+               # -DASSIMP_NO_EXPORT=no # Disable Assimp's export functionality.
+               # -DASSIMP_OPT_BUILD_PACKAGES=no # Set to yes to generate CPack 
configuration files and packaging targets
+               -DASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR=no # Suppress rapidjson 
warning on MSVC (NOTE: breaks android build)
+               # -DASSIMP_UBSAN=yes # Enable Undefined Behavior sanitizer.
+               -DASSIMP_WARNINGS_AS_ERRORS=no # Treat all warnings as errors.
+               # -DBUILD_SHARED_LIBS=yes # Build package with shared libraries.
+               # bug #891787 (CVE-2022-45748), intentionally not in alphabetic 
ordering
+               -DASSIMP_BUILD_COLLADA_IMPORTER=OFF
+               -DASSIMP_BUILD_COLLADA_EXPORTER=OFF
+       )
+
+       if use doc; then
+               mycmakeargs+=(
+                       -DHTML_OUTPUT="html"
+               )
+       fi
+       if use samples; then
+               mycmakeargs+=(
+                       -DOpenGL_GL_PREFERENCE="GLVND"
+               )
+       fi
+       if use test; then
+               # adds the target headercheck which compiles every header file, 
default disabled because it adds many targets
+               -DASSIMP_HEADERCHECK=$(usex test)
+       fi
+
+       cmake_src_configure
+}
+
+src_test() {
+       local CMAKE_SKIP_TESTS=(
+               # ( Failed )
+               "^utCollada.*"
+               "^utIssues.OpacityBugWhenExporting_727$"
+       )
+       myctestargs+=(
+               --repeat until-pass:100
+       )
+       cmake_src_test
+}

diff --git a/media-libs/assimp/files/assimp-5.2.5-float-comparison.patch 
b/media-libs/assimp/files/assimp-5.2.5-float-comparison.patch
new file mode 100644
index 000000000000..ccbcffe2c167
--- /dev/null
+++ b/media-libs/assimp/files/assimp-5.2.5-float-comparison.patch
@@ -0,0 +1,84 @@
+diff --git a/include/assimp/matrix3x3.inl b/include/assimp/matrix3x3.inl
+index 99d9197..0ffa433 100644
+--- a/include/assimp/matrix3x3.inl
++++ b/include/assimp/matrix3x3.inl
+@@ -140,9 +140,7 @@ const TReal* aiMatrix3x3t<TReal>::operator[] (unsigned int 
p_iIndex) const {
+ template <typename TReal>
+ AI_FORCE_INLINE
+ bool aiMatrix3x3t<TReal>::operator== (const aiMatrix3x3t<TReal>& m) const {
+-    return a1 == m.a1 && a2 == m.a2 && a3 == m.a3 &&
+-           b1 == m.b1 && b2 == m.b2 && b3 == m.b3 &&
+-           c1 == m.c1 && c2 == m.c2 && c3 == m.c3;
++    return this->Equal(m);
+ }
+ 
+ // 
------------------------------------------------------------------------------------------------
+diff --git a/include/assimp/matrix4x4.inl b/include/assimp/matrix4x4.inl
+index 54d176d..0d9da5d 100644
+--- a/include/assimp/matrix4x4.inl
++++ b/include/assimp/matrix4x4.inl
+@@ -328,10 +328,7 @@ const TReal* aiMatrix4x4t<TReal>::operator[](unsigned int 
p_iIndex) const {
+ template <typename TReal>
+ AI_FORCE_INLINE
+ bool aiMatrix4x4t<TReal>::operator== (const aiMatrix4x4t<TReal>& m) const {
+-    return (a1 == m.a1 && a2 == m.a2 && a3 == m.a3 && a4 == m.a4 &&
+-            b1 == m.b1 && b2 == m.b2 && b3 == m.b3 && b4 == m.b4 &&
+-            c1 == m.c1 && c2 == m.c2 && c3 == m.c3 && c4 == m.c4 &&
+-            d1 == m.d1 && d2 == m.d2 && d3 == m.d3 && d4 == m.d4);
++    return this->Equal(m);
+ }
+ 
+ // 
----------------------------------------------------------------------------------------
+diff --git a/include/assimp/quaternion.inl b/include/assimp/quaternion.inl
+index 960e91a..d6bcbe7 100644
+--- a/include/assimp/quaternion.inl
++++ b/include/assimp/quaternion.inl
+@@ -73,7 +73,7 @@ aiQuaterniont<TReal> operator * (const aiMatrix4x4t<TReal>& 
pMatrix, const aiQua
+ template<typename TReal>
+ bool aiQuaterniont<TReal>::operator== (const aiQuaterniont& o) const
+ {
+-    return x == o.x && y == o.y && z == o.z && w == o.w;
++    return this->Equal(o);
+ }
+ 
+ // ---------------------------------------------------------------------------
+diff --git a/include/assimp/vector2.inl b/include/assimp/vector2.inl
+index 245eb31..cd057fe 100644
+--- a/include/assimp/vector2.inl
++++ b/include/assimp/vector2.inl
+@@ -144,14 +144,14 @@ TReal aiVector2t<TReal>::operator[](unsigned int i) 
const {
+ template <typename TReal>
+ inline
+ bool aiVector2t<TReal>::operator== (const aiVector2t& other) const {
+-    return x == other.x && y == other.y;
++    return this->Equal(other);
+ }
+ 
+ // 
------------------------------------------------------------------------------------------------
+ template <typename TReal>
+ inline
+ bool aiVector2t<TReal>::operator!= (const aiVector2t& other) const {
+-    return x != other.x || y != other.y;
++    return !(*this == other);
+ }
+ 
+ // ---------------------------------------------------------------------------
+diff --git a/include/assimp/vector3.inl b/include/assimp/vector3.inl
+index 28ca2be..daa63e8 100644
+--- a/include/assimp/vector3.inl
++++ b/include/assimp/vector3.inl
+@@ -198,12 +198,12 @@ AI_FORCE_INLINE TReal& 
aiVector3t<TReal>::operator[](unsigned int i) {
+ // 
------------------------------------------------------------------------------------------------
+ template <typename TReal>
+ AI_FORCE_INLINE bool aiVector3t<TReal>::operator== (const aiVector3t<TReal>& 
other) const {
+-    return x == other.x && y == other.y && z == other.z;
++    return this->Equal(other);
+ }
+ // 
------------------------------------------------------------------------------------------------
+ template <typename TReal>
+ AI_FORCE_INLINE bool aiVector3t<TReal>::operator!= (const aiVector3t<TReal>& 
other) const {
+-    return x != other.x || y != other.y || z != other.z;
++    return !(*this == other);
+ }
+ // ---------------------------------------------------------------------------
+ template<typename TReal>

diff --git a/media-libs/assimp/files/assimp-5.2.5-gtest.patch 
b/media-libs/assimp/files/assimp-5.2.5-gtest.patch
new file mode 100644
index 000000000000..9441141337ac
--- /dev/null
+++ b/media-libs/assimp/files/assimp-5.2.5-gtest.patch
@@ -0,0 +1,30 @@
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index afe4874..5a87cc2 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -191,7 +191,6 @@ SET( POST_PROCESSES
+   unit/utRemoveComments.cpp
+   unit/utRemoveComponent.cpp
+   unit/utVertexTriangleAdjacency.cpp
+-  unit/utJoinVertices.cpp
+   unit/utSplitLargeMeshes.cpp
+   unit/utFindDegenerates.cpp
+   unit/utFindInvalidData.cpp
+@@ -281,4 +281,6 @@ target_link_libraries( unit assimp ${platform_libs} )
+ 
+ add_subdirectory(headercheck)
+ 
+-add_test( unittests unit )
++get_target_property(unit_SOURCES unit SOURCES)
++find_package(GTest REQUIRED)
++gtest_add_tests(TARGET unit ${unit_SOURCES})
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -725,6 +725,7 @@ IF ( ASSIMP_BUILD_SAMPLES )
+ ENDIF ()
+ 
+ IF ( ASSIMP_BUILD_TESTS )
++  enable_testing()
+   ADD_SUBDIRECTORY( test/ )
+ ENDIF ()
+ 

Reply via email to