commit:     c7e516e82bbfe2ce3618130a7b47f0b49604ff49
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 23 07:35:30 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Aug 23 07:35:30 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c7e516e8

dev-games/ogre: fix tests w/ AVX512

Closes: https://bugs.gentoo.org/961871
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-games/ogre/files/ogre-14.4.0-avx512-nan.patch |  39 +++++
 dev-games/ogre/ogre-14.4.0-r1.ebuild              | 186 ++++++++++++++++++++++
 2 files changed, 225 insertions(+)

diff --git a/dev-games/ogre/files/ogre-14.4.0-avx512-nan.patch 
b/dev-games/ogre/files/ogre-14.4.0-avx512-nan.patch
new file mode 100644
index 000000000000..366c26acf97f
--- /dev/null
+++ b/dev-games/ogre/files/ogre-14.4.0-avx512-nan.patch
@@ -0,0 +1,39 @@
+https://bugs.gentoo.org/961871
+https://github.com/OGRECave/ogre/issues/3431
+https://github.com/OGRECave/ogre/pull/3434
+
+From 2130758685a58b963ee1012e0bf0ef50859d38f5 Mon Sep 17 00:00:00 2001
+From: Pavel Rojtberg <[email protected]>
+Date: Sat, 23 Aug 2025 01:36:01 +0200
+Subject: [PATCH] Main: Bitwise - do not generate nan for bits=0
+
+---
+ OgreMain/include/OgreBitwise.h      | 2 +-
+ Tests/OgreMain/src/BitwiseTests.cpp | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/OgreMain/include/OgreBitwise.h b/OgreMain/include/OgreBitwise.h
+index 3ce2115546b..ab321cfc5fb 100644
+--- a/OgreMain/include/OgreBitwise.h
++++ b/OgreMain/include/OgreBitwise.h
+@@ -246,7 +246,7 @@ namespace Ogre {
+          */
+         static inline float fixedToFloat(unsigned value, unsigned int bits)
+         {
+-            return (float)value/(float)((1<<bits)-1);
++            return bits ? (float)value/(float)((1<<bits)-1) : 0.0f;
+         }
+ 
+         /**
+diff --git a/Tests/OgreMain/src/BitwiseTests.cpp 
b/Tests/OgreMain/src/BitwiseTests.cpp
+index 2d482795904..3afb4e86acb 100644
+--- a/Tests/OgreMain/src/BitwiseTests.cpp
++++ b/Tests/OgreMain/src/BitwiseTests.cpp
+@@ -46,6 +46,7 @@ TEST(BitwiseTests,FixedPointConversion)
+ 
+     EXPECT_EQ(Bitwise::fixedToFloat(0xFF, 8), 1.0f);
+     EXPECT_EQ(Bitwise::fixedToFloat(0x00, 8), 0.0f);
++    EXPECT_EQ(Bitwise::fixedToFloat(0xFF, 0), 0.0f);
+ 
+     EXPECT_EQ(Bitwise::floatToFixed(1.0f, 8), (unsigned int)0xFF);
+     EXPECT_EQ(Bitwise::floatToFixed(0.0f, 8), (unsigned int)0x00);

diff --git a/dev-games/ogre/ogre-14.4.0-r1.ebuild 
b/dev-games/ogre/ogre-14.4.0-r1.ebuild
new file mode 100644
index 000000000000..2f5bc8a38055
--- /dev/null
+++ b/dev-games/ogre/ogre-14.4.0-r1.ebuild
@@ -0,0 +1,186 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake flag-o-matic virtualx
+
+# Components/Overlay/CMakeLists.txt
+IMGUI_PV="1.91.9b"
+
+DESCRIPTION="Object-oriented Graphics Rendering Engine"
+HOMEPAGE="https://www.ogre3d.org/";
+SRC_URI="
+       https://github.com/OGRECave/ogre/archive/refs/tags/v${PV}.tar.gz
+               -> ${P}.tar.gz
+       https://github.com/ocornut/imgui/archive/v${IMGUI_PV}.tar.gz
+               -> imgui-${IMGUI_PV}.tar.gz
+"
+
+LICENSE="MIT public-domain"
+SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64 ~arm ~x86"
+
+IUSE="assimp bullet cg doc +dotscene egl-only freeimage +gl3plus gles2 glslang 
opengl qt6 samples test tiny tools sdl vulkan wayland"
+REQUIRED_USE="
+       || ( gl3plus gles2 opengl tiny vulkan )
+       egl-only? ( || ( gl3plus gles2 opengl ) )
+       test? ( samples )
+       vulkan? ( glslang )
+       wayland? ( egl-only )
+"
+# vulkan broken, proper handling required for wayland
+RESTRICT="
+       !test? ( test )
+       vulkan? ( test )
+       wayland? ( test )
+"
+
+# freetype and zlib are automagic
+# vulkan-loader is dlopen'd
+RDEPEND="
+       media-libs/freetype:2
+       sys-libs/zlib
+       assimp? ( media-libs/assimp:= )
+       bullet? ( sci-physics/bullet:= )
+       cg? ( media-gfx/nvidia-cg-toolkit )
+       dotscene? ( dev-libs/pugixml )
+       freeimage? ( media-libs/freeimage )
+       gl3plus? ( virtual/opengl )
+       glslang? ( dev-util/glslang:= )
+       gles2? ( virtual/opengl )
+       opengl? ( virtual/opengl )
+       qt6? ( dev-qt/qtbase:6[gui] )
+       sdl? ( media-libs/libsdl2 )
+       tools? ( dev-libs/pugixml )
+       vulkan? ( media-libs/vulkan-loader )
+       wayland? ( dev-libs/wayland )
+       !wayland? (
+               x11-libs/libX11
+               x11-libs/libXaw
+               x11-libs/libXt
+               gl3plus? ( x11-libs/libXrandr )
+               gles2? ( x11-libs/libXrandr )
+               opengl? ( x11-libs/libXrandr )
+       )
+"
+DEPEND="${RDEPEND}
+       test? ( dev-cpp/gtest )
+       vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+       virtual/pkgconfig
+       doc? ( app-text/doxygen[dot] )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-14.4.0-avx512-nan.patch
+)
+
+src_prepare() {
+       cmake_src_prepare
+
+       # Users should set this via their CFLAGS (like -march)
+       sed -e '/check_cxx_compiler_flag(-msse OGRE_GCC_HAS_SSE)/d' \
+               -i CMakeLists.txt || die
+
+       # Force Qt6
+       sed -e '/find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui QUIET 
CONFIG)/ { s/Qt5// }' \
+               -i CMake/Dependencies.cmake || die
+
+       # Lets not install test binaries
+       sed -e '/ogre_install_target(Test_Ogre "" FALSE)/d' \
+               -i Tests/CMakeLists.txt || die
+}
+
+src_configure() {
+       # odr violations
+       filter-lto
+
+       local mycmakeargs=(
+               # 
https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fb809aeadee57ffa24591e60cfb41aecd4823090
+               -DOGRE_ENABLE_PRECOMPILED_HEADERS=OFF
+
+               -DOGRE_BUILD_COMPONENT_BITES=ON
+               -DOGRE_BUILD_COMPONENT_BULLET=$(usex bullet)
+               -DOGRE_BUILD_COMPONENT_CSHARP=OFF
+               -DOGRE_BUILD_COMPONENT_JAVA=OFF
+               -DOGRE_BUILD_COMPONENT_MESHLODGENERATOR=ON
+               -DOGRE_BUILD_COMPONENT_OVERLAY=ON
+               -DOGRE_BUILD_COMPONENT_OVERLAY_IMGUI=ON
+               -DOGRE_BUILD_COMPONENT_PAGING=ON
+               -DOGRE_BUILD_COMPONENT_PROPERTY=ON
+               -DOGRE_BUILD_COMPONENT_PYTHON=OFF
+               -DOGRE_BUILD_COMPONENT_RTSHADERSYSTEM=ON
+               -DOGRE_BUILD_COMPONENT_TERRAIN=ON
+               -DOGRE_BUILD_COMPONENT_VOLUME=ON
+
+               -DOGRE_BUILD_PLUGIN_ASSIMP=$(usex assimp)
+               -DOGRE_BUILD_PLUGIN_BSP=ON
+               -DOGRE_BUILD_PLUGIN_CG=$(usex cg) # "deprecated"
+               -DOGRE_BUILD_PLUGIN_DOT_SCENE=$(usex dotscene)
+               -DOGRE_BUILD_PLUGIN_EXRCODEC=OFF # "deprecated" and doesn't work
+               -DOGRE_BUILD_PLUGIN_FREEIMAGE=$(usex freeimage) # "deprecated"
+               -DOGRE_BUILD_PLUGIN_GLSLANG=$(usex glslang)
+               -DOGRE_BUILD_PLUGIN_OCTREE=ON
+               -DOGRE_BUILD_PLUGIN_PCZ=ON
+               -DOGRE_BUILD_PLUGIN_PFX=ON
+               -DOGRE_BUILD_PLUGIN_RSIMAGE=OFF # rust
+               -DOGRE_BUILD_PLUGIN_STBI=ON # vendored stb headers
+
+               -DOGRE_BUILD_RENDERSYSTEM_GL=$(usex opengl)
+               -DOGRE_BUILD_RENDERSYSTEM_GL3PLUS=$(usex gl3plus)
+               -DOGRE_BUILD_RENDERSYSTEM_GLES2=$(usex gles2)
+               # "BETA". Tests will not pass with this
+               -DOGRE_BUILD_RENDERSYSTEM_VULKAN=$(usex vulkan)
+               -DOGRE_BUILD_RENDERSYSTEM_TINY=$(usex tiny)
+
+               -DOGRE_BUILD_SAMPLES=$(usex samples)
+               -DOGRE_INSTALL_SAMPLES=$(usex samples)
+               -DOGRE_BUILD_TOOLS=$(usex tools)
+               -DOGRE_INSTALL_TOOLS=$(usex tools)
+               -DOGRE_BUILD_XSIEXPORTER=OFF # softimage
+               -DOGRE_BUILD_TESTS=$(usex test)
+
+               -DOGRE_BUILD_DEPENDENCIES=OFF
+               -DIMGUI_DIR="${WORKDIR}/imgui-${IMGUI_PV}"
+
+               -DOGRE_CFG_INSTALL_PATH="/etc/OGRE"
+               -DOGRE_MEDIA_PATH="share/OGRE/Media"
+
+               -DOGRE_DOCS_PATH="share/docs/${PF}"
+               -DOGRE_INSTALL_DOCS=$(usex doc)
+
+               $(cmake_use_find_package qt6 QT)
+               $(cmake_use_find_package sdl SDL2)
+       )
+
+       if use gl3plus || use gles2 || use opengl ; then
+               mycmakeargs+=(
+                       # TODO: wayland support needs more work.
+                       # tests don't run with tinywl and it doesnt work at 
runtime
+                       -DOGRE_USE_WAYLAND=$(usex wayland)
+                       -DOGRE_GLSUPPORT_USE_EGL=$(usex egl-only)
+               )
+       fi
+
+       cmake_src_configure
+}
+
+src_compile() {
+       cmake_src_compile
+       use doc && cmake_build OgreDoc
+}
+
+src_test() {
+       virtx cmake_src_test
+}
+
+pkg_postinst() {
+       if use samples; then
+               elog "If you experience crashes when starting 
/usr/bin/SampleBrowser,"
+               elog "remove the cache directory at:"
+               elog "  '~/.cache/OGRE Sample Browser'"
+               elog "first, before filing a bug report."
+       fi
+}

Reply via email to