summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-gfx/netgen')
-rw-r--r--media-gfx/netgen/Manifest2
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2204-disable-failing-tests.patch19
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2204-disable-python-tests.patch17
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2204-find-Tk-include-directories.patch21
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2204-link-against-ffmpeg.patch20
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2204-use-system-catch.patch40
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2204-use-system-spdlog.patch40
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2301-find-libjpeg-turbo-library.patch34
-rw-r--r--media-gfx/netgen/files/netgen-6.2.2301-fix-nullptr-deref-in-archive.patch31
-rw-r--r--media-gfx/netgen/metadata.xml19
-rw-r--r--media-gfx/netgen/netgen-6.2.2301.ebuild157
-rw-r--r--media-gfx/netgen/netgen-6.2.2302.ebuild157
12 files changed, 557 insertions, 0 deletions
diff --git a/media-gfx/netgen/Manifest b/media-gfx/netgen/Manifest
new file mode 100644
index 000000000000..dc16404903f1
--- /dev/null
+++ b/media-gfx/netgen/Manifest
@@ -0,0 +1,2 @@
+DIST netgen-6.2.2301.tar.gz 3394480 BLAKE2B 358b0cf7ff4d372a9ede8ab9b7df24435a75bcad880cc83607443707ae096f2bafa35d8cd581533917d1aae85a18ac0ca902876a1c68f11664a0a3ef1ae00593 SHA512 7aebbc5cc3e3227b455ac9c5538e1f0110d5621e6ca7315f6811733bd93e88ccca467296b7915894a45202ed375b45d9387a1d113a720d4199eff782afb43070
+DIST netgen-6.2.2302.tar.gz 3398683 BLAKE2B 7cf4626ee8163898864af0346cf2c4fa73dcca3ac2068d67f80b05ee926024b36552b33013c2ef8f74026ab942ae08c0628af0ce0c0dac2d004ba26e18bf4619 SHA512 da6e8e43d73af6b7bfae2e3c771d46e34601ff481c251924673f7330bae032a743fb9d5ff2792855e91ed5addb4d22fd4bf9cd7a9dcfb53f476e22a30f1eedb3
diff --git a/media-gfx/netgen/files/netgen-6.2.2204-disable-failing-tests.patch b/media-gfx/netgen/files/netgen-6.2.2204-disable-failing-tests.patch
new file mode 100644
index 000000000000..a11df8e3d427
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2204-disable-failing-tests.patch
@@ -0,0 +1,19 @@
+From 21bfc56e76a448170dc4bb305c97b8f957b6e75d Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Wed, 14 Dec 2022 07:12:04 +0100
+Subject: [PATCH] disable failing tests
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/tests/catch/CMakeLists.txt
++++ b/tests/catch/CMakeLists.txt
+@@ -34,7 +34,6 @@ add_unit_test(archive archive.cpp)
+ target_link_libraries(test_archive netgen_python)
+ add_unit_test(array array.cpp)
+ add_unit_test(ranges ranges.cpp)
+-add_unit_test(symboltable symboltable.cpp)
+ add_unit_test(utils utils.cpp)
+ add_unit_test(version version.cpp)
+
+--
+2.38.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2204-disable-python-tests.patch b/media-gfx/netgen/files/netgen-6.2.2204-disable-python-tests.patch
new file mode 100644
index 000000000000..7a6def41898b
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2204-disable-python-tests.patch
@@ -0,0 +1,17 @@
+From 2c402f3b552ce18483119de1d3a91fd457c9c170 Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Wed, 14 Dec 2022 08:50:07 +0100
+Subject: [PATCH] disable python tests
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -1,5 +1,4 @@
+ add_subdirectory(catch)
+-add_subdirectory(pytest)
+
+ # this code goes here, because tests is the last add_subdirectory (otherwise it gets executed too early)
+ if(APPLE AND BUILD_FOR_CONDA)
+--
+2.38.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2204-find-Tk-include-directories.patch b/media-gfx/netgen/files/netgen-6.2.2204-find-Tk-include-directories.patch
new file mode 100644
index 000000000000..cf7b9d31ef07
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2204-find-Tk-include-directories.patch
@@ -0,0 +1,21 @@
+From 53c45343f5a26841be10d930467e215da4a779f2 Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Sun, 30 Oct 2022 15:17:55 +0100
+Subject: [PATCH] find Tk include directories
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -270,6 +270,9 @@ if (USE_GUI)
+ endif(APPLE)
+ find_package(OpenGL REQUIRED)
+
++ include_directories(${TK_INCLUDE_PATH}/generic)
++ include_directories(${TK_INCLUDE_PATH}/unix)
++
+ target_compile_definitions(netgen_gui INTERFACE -DTCL -DOPENGL -DUSE_TOGL_2 -DUSE_TCL_STUBS -DUSE_TK_STUBS)
+ target_include_directories(netgen_gui INTERFACE ${TCL_INCLUDE_PATH} ${TK_INCLUDE_PATH})
+ target_link_libraries(netgen_gui INTERFACE ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY})
+--
+2.38.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2204-link-against-ffmpeg.patch b/media-gfx/netgen/files/netgen-6.2.2204-link-against-ffmpeg.patch
new file mode 100644
index 000000000000..6f7a8bc3cd9a
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2204-link-against-ffmpeg.patch
@@ -0,0 +1,20 @@
+From 69d9c2da29adc9b7a209e78aae950d9834683f58 Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Mon, 31 Oct 2022 13:07:05 +0100
+Subject: [PATCH] link against ffmpeg
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/ng/CMakeLists.txt
++++ b/ng/CMakeLists.txt
+@@ -28,7 +28,7 @@ if(USE_GUI)
+ if(APPLE)
+ set_target_properties(netgen PROPERTIES OUTPUT_NAME netgen)
+ endif(APPLE)
+- target_link_libraries( netgen ${PYTHON_LIBRARIES} ${TCL_LIBRARY} ${TK_LIBRARY})
++ target_link_libraries( netgen ${PYTHON_LIBRARIES} ${TCL_LIBRARY} ${TK_LIBRARY} ${FFMPEG_LIBRARIES})
+ endif(NOT BUILD_FOR_CONDA)
+
+ install(TARGETS nggui ${NG_INSTALL_DIR})
+--
+2.38.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2204-use-system-catch.patch b/media-gfx/netgen/files/netgen-6.2.2204-use-system-catch.patch
new file mode 100644
index 000000000000..1c08e49e7524
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2204-use-system-catch.patch
@@ -0,0 +1,40 @@
+From 6eaa13cc02ccd5f1bfa448fbcff3a1d9af8ba90a Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Wed, 14 Dec 2022 07:04:29 +0100
+Subject: [PATCH] use system catch
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -474,7 +474,7 @@ enable_testing()
+ include(CTest)
+
+ if(ENABLE_UNIT_TESTS)
+- include(${CMAKE_CURRENT_LIST_DIR}/cmake/external_projects/catch.cmake)
++ find_package(Catch2 REQUIRED)
+ endif(ENABLE_UNIT_TESTS)
+
+
+--- a/tests/catch/CMakeLists.txt
++++ b/tests/catch/CMakeLists.txt
+@@ -3,11 +3,15 @@ if(ENABLE_UNIT_TESTS)
+ add_custom_target(unit_tests)
+
+ # Build catch_main test object
+-include_directories(${CATCH_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../libsrc/include ${SPDLOG_INCLUDE_DIR})
++if(TARGET Catch2::Catch2)
++ get_target_property(CATCH_INCLUDE_DIR Catch2::Catch2 INTERFACE_INCLUDE_DIRECTORIES)
++ include_directories(${CATCH_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../libsrc/include ${SPDLOG_INCLUDE_DIR})
++else()
++ message(SEND_ERROR "Catch header files couldn't be found.")
++endif()
+ add_library(catch_main STATIC main.cpp)
+ set_target_properties(catch_main PROPERTIES CXX_STANDARD 17)
+ add_dependencies(unit_tests catch_main)
+-add_dependencies(catch_main project_catch)
+
+ # ensure the test targets are built before testing
+ add_test(NAME unit_tests_built COMMAND ${CMAKE_COMMAND} --build . --target unit_tests --config ${CMAKE_BUILD_TYPE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../.. )
+--
+2.38.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2204-use-system-spdlog.patch b/media-gfx/netgen/files/netgen-6.2.2204-use-system-spdlog.patch
new file mode 100644
index 000000000000..cbd45ca07f3f
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2204-use-system-spdlog.patch
@@ -0,0 +1,40 @@
+From e20e1e2e2109f1ce6580587f63ad000ac6bdd877 Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Tue, 13 Dec 2022 08:14:12 +0100
+Subject: [PATCH] use system spdlog
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -481,8 +481,13 @@ endif(ENABLE_UNIT_TESTS)
+ #######################################################################
+
+ if(USE_SPDLOG)
+- include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/external_projects/spdlog.cmake)
+- include_directories(${SPDLOG_INCLUDE_DIR})
++ find_package(spdlog REQUIRED CONFIG)
++ if(TARGET spdlog::spdlog)
++ get_target_property(SPDLOG_INCLUDE_DIR spdlog::spdlog INTERFACE_INCLUDE_DIRECTORIES)
++ include_directories(${SPDLOG_INCLUDE_DIR})
++ else()
++ message(SEND_ERROR "You enabled USE_SPDLOG, but the spdlog package could not be found.")
++ endif()
+ endif(USE_SPDLOG)
+
+ if(ENABLE_CPP_CORE_GUIDELINES_CHECK)
+--- a/libsrc/core/CMakeLists.txt
++++ b/libsrc/core/CMakeLists.txt
+@@ -50,10 +50,6 @@ endif(TRACE_MEMORY)
+
+ if(USE_SPDLOG)
+ include_directories(${SPDLOG_INCLUDE_DIR})
+- install(DIRECTORY ${SPDLOG_INCLUDE_DIR}
+- DESTINATION ${NG_INSTALL_DIR_INCLUDE}
+- )
+- add_dependencies(ngcore project_spdlog)
+ target_compile_definitions(ngcore PUBLIC NETGEN_USE_SPDLOG)
+ if(DEBUG_LOG)
+ target_compile_definitions(ngcore PUBLIC NETGEN_LOG_DEBUG)
+--
+2.38.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2301-find-libjpeg-turbo-library.patch b/media-gfx/netgen/files/netgen-6.2.2301-find-libjpeg-turbo-library.patch
new file mode 100644
index 000000000000..3b01321f7ced
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2301-find-libjpeg-turbo-library.patch
@@ -0,0 +1,34 @@
+From d8a654a61452c39e3e611493ad70b8c6e818130e Mon Sep 17 00:00:00 2001
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Wed, 15 Feb 2023 12:28:00 +0100
+Subject: [PATCH] find libjpeg-turbo library
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/libsrc/visualization/CMakeLists.txt
++++ b/libsrc/visualization/CMakeLists.txt
+@@ -7,7 +7,7 @@ target_sources(nggui PRIVATE
+ vssolution.cpp
+ visualpkg.cpp
+ )
+-target_link_libraries( nggui PUBLIC "$<BUILD_INTERFACE:netgen_python>" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} nglib)
++target_link_libraries( nggui PUBLIC "$<BUILD_INTERFACE:netgen_python>" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} ${JPEG_LIBRARIES} nglib)
+
+ install(FILES
+ meshdoc.hpp mvdraw.hpp visual_api.hpp
+--- a/nglib/CMakeLists.txt
++++ b/nglib/CMakeLists.txt
+@@ -7,6 +7,11 @@ endif(USE_OCC)
+
+ target_link_libraries(nglib PUBLIC ngcore)
+
++if(TARGET JPEG::JPEG)
++ get_target_property(JPEG_LIBRARIES JPEG::JPEG IMPORTED_LOCATION_RELEASE)
++else()
++ set(JPEG_LIBRARIES ${JPEG_LIBRARY_RELEASE})
++endif()
+ target_link_libraries( nglib PRIVATE ${MPI_CXX_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${JPEG_LIBRARIES} ${MKL_LIBRARIES} ${ZLIB_LIBRARIES} ${OCC_LIBRARIES} netgen_cgns )
+
+ install(TARGETS nglib netgen_cgns ${NG_INSTALL_DIR})
+--
+2.39.1
+
diff --git a/media-gfx/netgen/files/netgen-6.2.2301-fix-nullptr-deref-in-archive.patch b/media-gfx/netgen/files/netgen-6.2.2301-fix-nullptr-deref-in-archive.patch
new file mode 100644
index 000000000000..b05d71221ca5
--- /dev/null
+++ b/media-gfx/netgen/files/netgen-6.2.2301-fix-nullptr-deref-in-archive.patch
@@ -0,0 +1,31 @@
+https://github.com/NGSolve/netgen/pull/123/commits/5ee4e43393936ab4c00feb58c48bc3a10e6bcbdb
+
+From 76276c5a3b0e70b27d44f7ce0a3ea064b23909da Mon Sep 17 00:00:00 2001
+From: Christopher Montgomery <monty@xiph.org>
+From: Bernd Waibel <waebbl-gentoo@posteo.net>
+Date: Sun, 19 Feb 2023 12:18:12 +0100
+Subject: [PATCH] fix nullptr deref in archive
+
+Hardened toolchains (eg, mainline Fedora) no longer tolerate null
+derefs that were silently trapped/ignored in earlier versions. This
+eliminates a nullptr deref in archive.hpp that was failing several
+unit tests (and causing crashes) when trying to manipulate
+default-constructed archive objects.
+
+Adapted original patch according the comment in the PR.
+
+Signed-off-by: Bernd Waibel <waebbl-gentoo@posteo.net>
+--- a/libsrc/core/archive.hpp
++++ b/libsrc/core/archive.hpp
+@@ -225,7 +225,7 @@ namespace ngcore
+ (*this) & size;
+ if(Input())
+ v.resize(size);
+- Do(&v[0], size);
++ Do(v.data(), size);
+ return (*this);
+ }
+
+--
+2.39.2
+
diff --git a/media-gfx/netgen/metadata.xml b/media-gfx/netgen/metadata.xml
new file mode 100644
index 000000000000..201e5f704aba
--- /dev/null
+++ b/media-gfx/netgen/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project" proxied="proxy">
+ <email>sci-mathematics@gentoo.org</email>
+ <name>Gentoo Mathematics Project</name>
+ </maintainer>
+ <maintainer type="person" proxied="yes">
+ <email>negril.nx+gentoo@gmail.com</email>
+ <name>Paul Zander</name>
+ </maintainer>
+ <use>
+ <flag name="logging">Enable logging through <pkg>dev-libs/spdlog</pkg></flag>
+ <flag name="opencascade">Enable OpenCASCADE support</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">NGSolve/netgen</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/media-gfx/netgen/netgen-6.2.2301.ebuild b/media-gfx/netgen/netgen-6.2.2301.ebuild
new file mode 100644
index 000000000000..0975a50189e0
--- /dev/null
+++ b/media-gfx/netgen/netgen-6.2.2301.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10,11} )
+inherit cmake desktop python-single-r1 xdg
+
+DESCRIPTION="Automatic 3d tetrahedral mesh generator"
+HOMEPAGE="https://ngsolve.org/ https://github.com/NGSolve/netgen"
+SRC_URI="https://github.com/NGSolve/netgen/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="LGPL-2.1"
+KEYWORDS="amd64 ~x86"
+
+IUSE="ffmpeg gui jpeg logging mpi opencascade python test"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ ffmpeg? ( gui )
+ jpeg? ( gui )
+ python? ( gui )
+"
+
+DEPEND="
+ sys-libs/zlib
+ ffmpeg? ( media-video/ffmpeg:= )
+ gui? (
+ dev-lang/tcl:0/8.6
+ dev-lang/tk:0/8.6
+ media-libs/glu
+ virtual/opengl
+ x11-libs/libX11
+ x11-libs/libXmu
+ x11-libs/libxcb:=
+ )
+ jpeg? ( media-libs/libjpeg-turbo:0= )
+ logging? ( dev-libs/spdlog:= )
+ mpi? (
+ sci-libs/metis
+ virtual/mpi
+ )
+ opencascade? ( sci-libs/opencascade:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ '
+ )
+ mpi? (
+ $(python_gen_cond_dep 'dev-python/mpi4py[${PYTHON_USEDEP}]' )
+ )
+ )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ sys-apps/lsb-release
+ virtual/pkgconfig
+ gui? ( virtual/imagemagick-tools[png] )
+ test? (
+ <dev-cpp/catch-3:0
+ python? ( $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') )
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.2.2204-find-Tk-include-directories.patch"
+ "${FILESDIR}/${PN}-6.2.2204-link-against-ffmpeg.patch"
+ "${FILESDIR}/${PN}-6.2.2204-use-system-spdlog.patch"
+ "${FILESDIR}/${PN}-6.2.2204-use-system-catch.patch"
+ "${FILESDIR}/${PN}-6.2.2204-disable-failing-tests.patch"
+ "${FILESDIR}/${PN}-6.2.2204-disable-python-tests.patch"
+ "${FILESDIR}/${PN}-6.2.2301-find-libjpeg-turbo-library.patch"
+ "${FILESDIR}/${PN}-6.2.2301-fix-nullptr-deref-in-archive.patch"
+)
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ # NOTE: need to manually check and update this string on version bumps!
+ # git describe --tags --match "v[0-9]*" --long --dirty
+ cat <<- EOF > "${S}/version.txt" || die
+ v${PV}-0-g26d12898
+ EOF
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ # currently not working in a sandbox, expects netgen to be installed
+ # see https://github.com/NGSolve/netgen/issues/132
+ -DBUILD_STUB_FILES=OFF
+ -DENABLE_UNIT_TESTS=$(usex test)
+ -DINSTALL_PROFILES=OFF
+ -DNG_INSTALL_DIR_CMAKE="$(get_libdir)/cmake/${PN}"
+ -DNG_INSTALL_DIR_INCLUDE="include/${PN}"
+ -DNG_INSTALL_DIR_LIB="$(get_libdir)"
+ -DUSE_CCACHE=OFF
+ # doesn't build with this version
+ -DUSE_CGNS=OFF
+ -DUSE_GUI=$(usex gui)
+ -DUSE_INTERNAL_TCL=OFF
+ -DUSE_JPEG=$(usex jpeg)
+ -DUSE_MPEG=$(usex ffmpeg)
+ # respect users -march= choice
+ -DUSE_NATIVE_ARCH=OFF
+ -DUSE_MPI=$(usex mpi)
+ -DUSE_OCC=$(usex opencascade)
+ -DUSE_PYTHON=$(usex python)
+ -DUSE_SPDLOG=$(usex logging)
+ -DUSE_SUPERBUILD=OFF
+ )
+ # no need to set this, if we only build the library
+ if use gui; then
+ mycmakeargs+=( -DTK_INCLUDE_PATH="/usr/$(get_libdir)/tk8.6/include" )
+ fi
+ if use python; then
+ mycmakeargs+=(
+ -DPREFER_SYSTEM_PYBIND11=ON
+ # needed, so the value gets passed to NetgenConfig.cmake instead of ${T}/pythonX.Y
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ fi
+ if use mpi && use python; then
+ mycmakeargs+=( -DUSE_MPI4PY=ON )
+ else
+ mycmakeargs+=( -DUSE_MPI4PY=OFF )
+ fi
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ use python && python_optimize
+
+ local NETGENDIR="/usr/share/${PN}"
+ echo -e "NETGENDIR=${NETGENDIR}" > ./99netgen || die
+ doenvd 99netgen
+
+ if use gui; then
+ mv "${ED}"/usr/bin/{*.tcl,*.ocf} "${ED}${NETGENDIR}" || die
+
+ convert -deconstruct "${S}/windows/${PN}.ico" netgen.png || die
+ newicon -s 32 "${S}"/${PN}-2.png ${PN}.png
+ newicon -s 16 "${S}"/${PN}-3.png ${PN}.png
+ make_desktop_entry ${PN} "Netgen" netgen Graphics
+ fi
+
+ mv "${ED}"/usr/share/${PN}/doc/ng4.pdf "${ED}"/usr/share/doc/${PF} || die
+ dosym -r /usr/share/doc/${PF}/ng4.pdf /usr/share/${PN}/doc/ng4.pdf
+
+ use python || rm -r "${ED}${NETGENDIR}"/py_tutorials || die
+}
diff --git a/media-gfx/netgen/netgen-6.2.2302.ebuild b/media-gfx/netgen/netgen-6.2.2302.ebuild
new file mode 100644
index 000000000000..b28b9244b838
--- /dev/null
+++ b/media-gfx/netgen/netgen-6.2.2302.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10,11} )
+inherit cmake desktop python-single-r1 xdg
+
+DESCRIPTION="Automatic 3d tetrahedral mesh generator"
+HOMEPAGE="https://ngsolve.org/ https://github.com/NGSolve/netgen"
+SRC_URI="https://github.com/NGSolve/netgen/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="LGPL-2.1"
+KEYWORDS="amd64 ~x86"
+
+IUSE="ffmpeg gui jpeg logging mpi opencascade python test"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ ffmpeg? ( gui )
+ jpeg? ( gui )
+ python? ( gui )
+"
+
+DEPEND="
+ sys-libs/zlib
+ ffmpeg? ( media-video/ffmpeg:= )
+ gui? (
+ dev-lang/tcl:0/8.6
+ dev-lang/tk:0/8.6
+ media-libs/glu
+ virtual/opengl
+ x11-libs/libX11
+ x11-libs/libXmu
+ x11-libs/libxcb:=
+ )
+ jpeg? ( media-libs/libjpeg-turbo:0= )
+ logging? ( dev-libs/spdlog:= )
+ mpi? (
+ sci-libs/metis
+ virtual/mpi
+ )
+ opencascade? ( sci-libs/opencascade:= )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ '
+ )
+ mpi? (
+ $(python_gen_cond_dep 'dev-python/mpi4py[${PYTHON_USEDEP}]' )
+ )
+ )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ sys-apps/lsb-release
+ virtual/pkgconfig
+ gui? ( virtual/imagemagick-tools[png] )
+ test? (
+ <dev-cpp/catch-3:0
+ python? ( $(python_gen_cond_dep 'dev-python/pytest[${PYTHON_USEDEP}]') )
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.2.2204-find-Tk-include-directories.patch"
+ "${FILESDIR}/${PN}-6.2.2204-link-against-ffmpeg.patch"
+ "${FILESDIR}/${PN}-6.2.2204-use-system-spdlog.patch"
+ "${FILESDIR}/${PN}-6.2.2204-use-system-catch.patch"
+ "${FILESDIR}/${PN}-6.2.2204-disable-failing-tests.patch"
+ "${FILESDIR}/${PN}-6.2.2204-disable-python-tests.patch"
+ "${FILESDIR}/${PN}-6.2.2301-find-libjpeg-turbo-library.patch"
+ "${FILESDIR}/${PN}-6.2.2301-fix-nullptr-deref-in-archive.patch"
+)
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ # NOTE: need to manually check and update this string on version bumps!
+ # git describe --tags --match "v[0-9]*" --long --dirty
+ cat <<- EOF > "${S}/version.txt" || die
+ v${PV}-0-g3e52c44a
+ EOF
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ # currently not working in a sandbox, expects netgen to be installed
+ # see https://github.com/NGSolve/netgen/issues/132
+ -DBUILD_STUB_FILES=OFF
+ -DENABLE_UNIT_TESTS=$(usex test)
+ -DINSTALL_PROFILES=OFF
+ -DNG_INSTALL_DIR_CMAKE="$(get_libdir)/cmake/${PN}"
+ -DNG_INSTALL_DIR_INCLUDE="include/${PN}"
+ -DNG_INSTALL_DIR_LIB="$(get_libdir)"
+ -DUSE_CCACHE=OFF
+ # doesn't build with this version
+ -DUSE_CGNS=OFF
+ -DUSE_GUI=$(usex gui)
+ -DUSE_INTERNAL_TCL=OFF
+ -DUSE_JPEG=$(usex jpeg)
+ -DUSE_MPEG=$(usex ffmpeg)
+ # respect users -march= choice
+ -DUSE_NATIVE_ARCH=OFF
+ -DUSE_MPI=$(usex mpi)
+ -DUSE_OCC=$(usex opencascade)
+ -DUSE_PYTHON=$(usex python)
+ -DUSE_SPDLOG=$(usex logging)
+ -DUSE_SUPERBUILD=OFF
+ )
+ # no need to set this, if we only build the library
+ if use gui; then
+ mycmakeargs+=( -DTK_INCLUDE_PATH="/usr/$(get_libdir)/tk8.6/include" )
+ fi
+ if use python; then
+ mycmakeargs+=(
+ -DPREFER_SYSTEM_PYBIND11=ON
+ # needed, so the value gets passed to NetgenConfig.cmake instead of ${T}/pythonX.Y
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ )
+ fi
+ if use mpi && use python; then
+ mycmakeargs+=( -DUSE_MPI4PY=ON )
+ else
+ mycmakeargs+=( -DUSE_MPI4PY=OFF )
+ fi
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ use python && python_optimize
+
+ local NETGENDIR="/usr/share/${PN}"
+ echo -e "NETGENDIR=${NETGENDIR}" > ./99netgen || die
+ doenvd 99netgen
+
+ if use gui; then
+ mv "${ED}"/usr/bin/{*.tcl,*.ocf} "${ED}${NETGENDIR}" || die
+
+ convert -deconstruct "${S}/windows/${PN}.ico" netgen.png || die
+ newicon -s 32 "${S}"/${PN}-2.png ${PN}.png
+ newicon -s 16 "${S}"/${PN}-3.png ${PN}.png
+ make_desktop_entry ${PN} "Netgen" netgen Graphics
+ fi
+
+ mv "${ED}"/usr/share/${PN}/doc/ng4.pdf "${ED}"/usr/share/doc/${PF} || die
+ dosym -r /usr/share/doc/${PF}/ng4.pdf /usr/share/${PN}/doc/ng4.pdf
+
+ use python || rm -r "${ED}${NETGENDIR}"/py_tutorials || die
+}