diff options
author | Paul Zander <negril.nx+gentoo@gmail.com> | 2023-12-15 17:50:01 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-01-20 12:26:30 +0000 |
commit | 054f5ce87ab5e96a7224e2e396f897472d0d8f62 (patch) | |
tree | 14e8d80ec44db3712d83045991f821bad2fdbc4c /media-libs/assimp | |
parent | sys-kernel/gentoo-sources: add 6.1.74 (diff) | |
download | gentoo-054f5ce87ab5e96a7224e2e396f897472d0d8f62.tar.gz gentoo-054f5ce87ab5e96a7224e2e396f897472d0d8f62.tar.bz2 gentoo-054f5ce87ab5e96a7224e2e396f897472d0d8f62.zip |
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@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/34346
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-libs/assimp')
-rw-r--r-- | media-libs/assimp/Manifest | 1 | ||||
-rw-r--r-- | media-libs/assimp/assimp-5.2.5-r2.ebuild | 94 | ||||
-rw-r--r-- | media-libs/assimp/assimp-5.3.1.ebuild | 125 | ||||
-rw-r--r-- | media-libs/assimp/files/assimp-5.2.5-float-comparison.patch | 84 | ||||
-rw-r--r-- | media-libs/assimp/files/assimp-5.2.5-gtest.patch | 30 |
5 files changed, 334 insertions, 0 deletions
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 () + |