From 9217a0cce81e89f5648599fcda4e549903c7b9bd Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 23 Feb 2023 15:45:01 +0000 Subject: gentoo auto-resync : 23:02:2023 - 15:45:01 --- media-gfx/Manifest.gz | Bin 37983 -> 37977 bytes media-gfx/freecad/Manifest | 10 +- ...FreeCAD-segfaults-being-run-with-paramete.patch | 22 ++ ...tgen-add-headers-to-support-recent-Netgen.patch | 93 ++++++ ...s-src-Qt-only-build-test-for-BUILD_GUI-ON.patch | 24 ++ media-gfx/freecad/freecad-0.20.1.ebuild | 303 ------------------- media-gfx/freecad/freecad-0.20.2-r1.ebuild | 324 +++++++++++++++++++++ media-gfx/freecad/freecad-9999.ebuild | 70 +++-- media-gfx/freecad/metadata.xml | 7 +- media-gfx/netgen/Manifest | 8 +- ...etgen-6.2.2204-find-libjpeg-turbo-library.patch | 34 --- .../netgen-6.2.2204-use-external-pybind11.patch | 30 -- ...etgen-6.2.2301-find-libjpeg-turbo-library.patch | 34 +++ ...gen-6.2.2301-fix-nullptr-deref-in-archive.patch | 31 ++ media-gfx/netgen/netgen-6.2.2204.ebuild | 155 ---------- media-gfx/netgen/netgen-6.2.2301.ebuild | 157 ++++++++++ 16 files changed, 743 insertions(+), 559 deletions(-) create mode 100644 media-gfx/freecad/files/freecad-0.20.2-Fixes-8206-FreeCAD-segfaults-being-run-with-paramete.patch create mode 100644 media-gfx/freecad/files/freecad-0.20.2-Netgen-add-headers-to-support-recent-Netgen.patch create mode 100644 media-gfx/freecad/files/freecad-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch delete mode 100644 media-gfx/freecad/freecad-0.20.1.ebuild create mode 100644 media-gfx/freecad/freecad-0.20.2-r1.ebuild delete mode 100644 media-gfx/netgen/files/netgen-6.2.2204-find-libjpeg-turbo-library.patch delete mode 100644 media-gfx/netgen/files/netgen-6.2.2204-use-external-pybind11.patch create mode 100644 media-gfx/netgen/files/netgen-6.2.2301-find-libjpeg-turbo-library.patch create mode 100644 media-gfx/netgen/files/netgen-6.2.2301-fix-nullptr-deref-in-archive.patch delete mode 100644 media-gfx/netgen/netgen-6.2.2204.ebuild create mode 100644 media-gfx/netgen/netgen-6.2.2301.ebuild (limited to 'media-gfx') diff --git a/media-gfx/Manifest.gz b/media-gfx/Manifest.gz index 9ebfa56c8964..f60f7097da78 100644 Binary files a/media-gfx/Manifest.gz and b/media-gfx/Manifest.gz differ diff --git a/media-gfx/freecad/Manifest b/media-gfx/freecad/Manifest index 13843ca43b96..5afa9e98728a 100644 --- a/media-gfx/freecad/Manifest +++ b/media-gfx/freecad/Manifest @@ -1,8 +1,10 @@ AUX freecad-0.19.1-0001-Gentoo-specific-Remove-ccache-usage.patch 797 BLAKE2B 1bd09caaa265e370b70efe9dd23171a61a98920d659c2f19bb3ec07bf77b1d59712c135f421bbc3164bec6c2b19ac0886185bb6200c45cefaaaea94d5cf54222 SHA512 b449fc466a22300c8a4b0a5b223d68b0ef4437512abcdf875580efc364570b157a55e283faa0ddaad5fd4ce98585bf6dd043b4e7a2a7aa86e98bdb9e8a846a30 AUX freecad-0.19.4-Gentoo-specific-don-t-check-vcs.patch 701 BLAKE2B 963afb463acc00fc20f2ed2aa356c0bb9df8b359fb350e948fa7b23df6cd65db521ebd76d74fda53ca76ce0ba89e7ea3737e1903f850c5a04271eaeba45e5eaf SHA512 457f58461744d42db81db6868498b583ba9a4f599cc0cc1d8e98dae50f2d9d91216cd9787548ae83db57b4a8d056e0267e70055d3fba6405f51de80355eef18f -DIST freecad-0.20.1.tar.gz 75545072 BLAKE2B be2d2970b80523b34f7400a2762f997b815a5ae90dcb6cee6e560316712ebe3ab8a64053bd73e9f50548ff076920af0304a6780c94c4f3708d30b82bbee3b5d9 SHA512 ab4cfab4008300b8273769b9395602261c88c19f0893dabe6498a2eac020f1fe3fbf7284928144f1d4147d8627a47d83a40a1777a298673da2e24d956006d827 +AUX freecad-0.20.2-Fixes-8206-FreeCAD-segfaults-being-run-with-paramete.patch 746 BLAKE2B 7cba7847956b9f6dbb4161c2bf70a72790cab98a1110c98ac34160c9dd5005b87ff9a2c71e42b7c4523f3fff9cc428ca0ad3b8f61e13b73d1b3bfdd142f5794f SHA512 08d3a8b849eed184b557b8e918c77e294daa40dad81944e19f0ce0c3a8477910ef6cb426e83a986d03050f1a1bfd935b5efbc27146704930d48ff65cd73389db +AUX freecad-0.20.2-Netgen-add-headers-to-support-recent-Netgen.patch 3622 BLAKE2B fb68ca931c5fa67873d5a60a8b175d6481c572e233974f8b59545f05aef13ced9baf576a51f4aba89020ecb794f39431bca5e8e081536db34f3a15737a11e374 SHA512 ef2ea194176ff10fdf71b7335a84ab97dead7093f9f46b562e8e659ae793d8d7a1e204cdc0be253d3fc4402a88caf95694f1249c38908f150263a00ec37150c7 +AUX freecad-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch 606 BLAKE2B acef2151a4ddc90a40ae565fe89032d832a8596b9f9c2608b6b8c3e76125b69b9be12db34d72e3646bd76abeae041bb3f0fd33a0933f22174f48095634568dc2 SHA512 f1d830591dc6532d9517e13da00cfc886e70fc57ec84f7a406f68096a683dd4b86909190858e8aba69c4f668dd963d8de3765e8363ce9661718ac873c729f3f6 DIST freecad-0.20.2.tar.gz 75555561 BLAKE2B 278b05a3fe3bdccb46da62926aee46f066cb073f034b273dc4d8b27975724b754a6822b7eb0b673500db4592237690decb830cc7a30e8da689c6b067c256d4f8 SHA512 c3acd77dd2bb9a2a23ac354da3b6102effb89c95d675e91421d65486414dfe8cc0188a7212245e0deb63f17b9c5df76133017be09e4cd14b833be8cbec52a08d -EBUILD freecad-0.20.1.ebuild 9813 BLAKE2B 39713988546185e5a44b59f6726c0cb6aff8ae7cb949c0b88483fcd229b35d3a347151db10d80ea08378d2c400a0e6219f135a75e76af87d39306bbee68095b4 SHA512 5f0e9c1b9ddc1a0da8898aa93496856a58d0486c307219c6382190c2f8b309817527c06a89fd894726dbe9133343ea474eb9094bbf3911c8f8856638810d3984 +EBUILD freecad-0.20.2-r1.ebuild 10338 BLAKE2B 6743b981e7f7c152a6045960b9e5e79315497af2e5b1fc3e706afeac3b1208162c2ea4e1b3f02652188685068875492e0bcd28dd5558861723f818c5cb0ce3db SHA512 ee94890a79bd87c944ef2215b890360518627f5d4dcae95ebe2ab7c810f113d10c366515193d6bfe1ced550cd0d3c1d4d0e5bb72938b7de0e25827c61687f388 EBUILD freecad-0.20.2.ebuild 9858 BLAKE2B 254dcc53a8eecf329854e10af1d13bd6995f4d2720268cd0e0e59ca3e5c10385d6edfe18ff1c5a36fe03d4ae0a4bccf4eafa6f778424b9ef281b15e0e368c6e4 SHA512 5e6f6bffadf57ab79b578790e9bf62934f5b598e09cdb8a6f08c07a06ff8a4d8daf297114c88f4abb5400991526abd28bb00cd7be79333b27a8f0f92179b49cb -EBUILD freecad-9999.ebuild 9822 BLAKE2B 0765e55171d7aea441dae4ca6589779c69a9be7f6ae2ecfc349f031b315af29c5527fa8b45a2c8ea52865b198011dc72d8d61cd88bed743e4ca27333c2561293 SHA512 9f47a5269abe293862d767ba7bb2495134739ec29ecf0664c16381d32edb0961ad28c85d6149f8b822d105ee4346ea3df5a04e8948290d82e0d1c3164eed0ff5 -MISC metadata.xml 3256 BLAKE2B 1dc274ea8c4d8198f53dc6155a2b70cf8952391902a510c11be93bcad4731314f8a4dea0eec465e3b6307c39596a169127d979f17011d0b27280d3860e05a226 SHA512 e201c191df4d8f352660d075bfc729da3b2ac9d87fc8617907c36b142ada3e844257ed19aabc3a017d4bb4a31ff51f1dfa6c430125f3d870106f73d70bc7d53d +EBUILD freecad-9999.ebuild 10319 BLAKE2B 1bc46e346c02c179adbb29c8354e3ee4e338970be58844fc47eb86292cf1a2ddac94865ac80fd25015eb980d2a6bb70c72235604f4b0f40386e39b8d13c5db15 SHA512 e5163ccb3f71547e030e2e7832fb83f9fe6bf9456217dd6b2bc1477e50de871b359f83358495d1469c5dcd3a75f3dd06497378ffe3710cb175ec3f2ad9ab374e +MISC metadata.xml 3189 BLAKE2B b236dc1ac3c1a56609cc0d40b6f6ed5cb0c70ce06bd3c5dce45c5f3bcf1d06548a3d62e7e5c786278f84a6874ed330a470a753946c1e6963e7b5fa7d43854eb8 SHA512 ac8018f6c6819c237168228bd767659e1fd1b7aec18c8581a284e498a91dceda78ced26f7a5a1f3b110956fd940f72c677984e1127f76c9fd6330a7d54044fa2 diff --git a/media-gfx/freecad/files/freecad-0.20.2-Fixes-8206-FreeCAD-segfaults-being-run-with-paramete.patch b/media-gfx/freecad/files/freecad-0.20.2-Fixes-8206-FreeCAD-segfaults-being-run-with-paramete.patch new file mode 100644 index 000000000000..44d49ca3bf94 --- /dev/null +++ b/media-gfx/freecad/files/freecad-0.20.2-Fixes-8206-FreeCAD-segfaults-being-run-with-paramete.patch @@ -0,0 +1,22 @@ +https://github.com/FreeCAD/FreeCAD/commit/c7a21ecbeecefe7c2dfc9e950b3d6bb42351d476 + +From c7a21ecbeecefe7c2dfc9e950b3d6bb42351d476 Mon Sep 17 00:00:00 2001 +From: wmayer +Date: Sat, 11 Feb 2023 17:47:49 +0100 +Subject: [PATCH 02/51] Fixes #8206: FreeCAD segfaults being run with + parameters (e.g .desktop file has /usr/bin/freecad --single-instance) + +--- a/src/Base/Interpreter.cpp ++++ b/src/Base/Interpreter.cpp +@@ -563,7 +563,7 @@ void initInterpreter(int argc,char *argv[]) + { + PyStatus status; + PyConfig config; +- PyConfig_InitPythonConfig(&config); ++ PyConfig_InitIsolatedConfig(&config); + + status = PyConfig_SetBytesArgv(&config, argc, argv); + if (PyStatus_Exception(status)) { +-- +2.39.1 + diff --git a/media-gfx/freecad/files/freecad-0.20.2-Netgen-add-headers-to-support-recent-Netgen.patch b/media-gfx/freecad/files/freecad-0.20.2-Netgen-add-headers-to-support-recent-Netgen.patch new file mode 100644 index 000000000000..402c84ee4d28 --- /dev/null +++ b/media-gfx/freecad/files/freecad-0.20.2-Netgen-add-headers-to-support-recent-Netgen.patch @@ -0,0 +1,93 @@ +https://github.com/FreeCAD/FreeCAD/commit/8b056f156fd087b3df36a5223fc5ca6900649a83 + +From 8b056f156fd087b3df36a5223fc5ca6900649a83 Mon Sep 17 00:00:00 2001 +From: Uwe +Date: Wed, 17 Aug 2022 12:32:02 +0200 +Subject: [PATCH 0008/1678] [Netgen] add headers to support recent Netgen + +- as reported here: https://forum.freecadweb.org/viewtopic.php?p=618174#p618174 +- also fix compiler warnings about unsafe bool handling +--- a/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp ++++ b/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_Mesher.cpp +@@ -50,7 +50,9 @@ + + #include + ++#include + #include ++#include + #include + #include + #include +@@ -66,6 +68,7 @@ + #include + #include + #include ++#include + + #ifdef _MSC_VER + #pragma warning(disable : 4067) +@@ -3027,7 +3030,7 @@ bool NETGENPlugin_Mesher::Compute() + } + } + } +- if (!err && mparams.secondorder > 0) ++ if (!err && mparams.secondorder) + { + try + { +@@ -3302,7 +3305,7 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap) + // calculate total nb of segments and length of edges + double fullLen = 0.0; + int fullNbSeg = 0; +- int entity = mparams.secondorder > 0 ? SMDSEntity_Quad_Edge : SMDSEntity_Edge; ++ int entity = mparams.secondorder ? SMDSEntity_Quad_Edge : SMDSEntity_Edge; + TopTools_DataMapOfShapeInteger Edge2NbSeg; + for (TopExp_Explorer exp(_shape, TopAbs_EDGE); exp.More(); exp.Next()) + { +@@ -3340,7 +3343,7 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap) + { + vector& aVec = aResMap[_mesh->GetSubMesh(Edge2NbSegIt.Key())]; + if ( aVec[ entity ] > 1 && aVec[ SMDSEntity_Node ] == 0 ) +- aVec[SMDSEntity_Node] = mparams.secondorder > 0 ? 2*aVec[ entity ]-1 : aVec[ entity ]-1; ++ aVec[SMDSEntity_Node] = mparams.secondorder ? 2*aVec[ entity ]-1 : aVec[ entity ]-1; + + fullNbSeg += aVec[ entity ]; + Edge2NbSeg( Edge2NbSegIt.Key() ) = aVec[ entity ]; +@@ -3386,7 +3389,7 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap) + int nbNodes = tooManyElems ? hugeNb : (( nbFaces*3 - (nb1d-1)*2 ) / 6 + 1 ); + + vector aVec(SMDSEntity_Last, 0); +- if( mparams.secondorder > 0 ) { ++ if (mparams.secondorder) { + int nb1d_in = (nbFaces*3 - nb1d) / 2; + aVec[SMDSEntity_Node] = nbNodes + nb1d_in; + aVec[SMDSEntity_Quad_Triangle] = nbFaces; +@@ -3428,11 +3431,11 @@ bool NETGENPlugin_Mesher::Evaluate(MapShapeNbElems& aResMap) + if ( tooManyElems ) // avoid FPE + { + aVec[SMDSEntity_Node] = hugeNb; +- aVec[ mparams.secondorder > 0 ? SMDSEntity_Quad_Tetra : SMDSEntity_Tetra] = hugeNb; ++ aVec[ mparams.secondorder ? SMDSEntity_Quad_Tetra : SMDSEntity_Tetra] = hugeNb; + } + else + { +- if( mparams.secondorder > 0 ) { ++ if (mparams.secondorder) { + aVec[SMDSEntity_Node] = nb1d_in/3 + 1 + nb1d_in; + aVec[SMDSEntity_Quad_Tetra] = nbVols; + } +--- a/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cpp ++++ b/src/3rdParty/salomesmesh/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cpp +@@ -39,6 +39,8 @@ + #include + #include + #include ++#include ++#include + + #include + #include +-- +2.39.1 + diff --git a/media-gfx/freecad/files/freecad-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch b/media-gfx/freecad/files/freecad-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch new file mode 100644 index 000000000000..5455c0ee2992 --- /dev/null +++ b/media-gfx/freecad/files/freecad-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch @@ -0,0 +1,24 @@ +From cb77c7d937c259224699273fee1ba5907588fa4c Mon Sep 17 00:00:00 2001 +From: Bernd Waibel +Date: Sun, 12 Feb 2023 19:54:13 +0100 +Subject: [PATCH] tests/src/Qt: only build test for BUILD_GUI=ON + +Signed-off-by: Bernd Waibel +--- a/tests/src/Qt/CMakeLists.txt ++++ b/tests/src/Qt/CMakeLists.txt +@@ -30,6 +30,7 @@ endfunction() + set(CMAKE_AUTOMOC ON) + + # Qt Test ++if(BUILD_GUI) + include_directories( + ${QtGui_INCLUDE_DIRS} + ${QtTest_INCLUDE_DIRS} +@@ -46,3 +47,4 @@ set (InventorBuilder_LIBS + SETUP_TESTS( + InventorBuilder + ) ++endif() +-- +2.39.1 + diff --git a/media-gfx/freecad/freecad-0.20.1.ebuild b/media-gfx/freecad/freecad-0.20.1.ebuild deleted file mode 100644 index 746a966ee4d0..000000000000 --- a/media-gfx/freecad/freecad-0.20.1.ebuild +++ /dev/null @@ -1,303 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{9..10} ) - -inherit check-reqs cmake optfeature python-single-r1 xdg - -DESCRIPTION="QT based Computer Aided Design application" -HOMEPAGE="https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD" - -MY_PN=FreeCAD - -if [[ ${PV} = *9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/${MY_PN}/${MY_PN}.git" - S="${WORKDIR}/freecad-${PV}" -else - SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="amd64" - S="${WORKDIR}/FreeCAD-${PV}" -fi - -# code is licensed LGPL-2 -# examples are licensed CC-BY-SA (without note of specific version) -LICENSE="LGPL-2 CC-BY-SA-4.0" -SLOT="0" -IUSE="debug designer headless test" - -FREECAD_EXPERIMENTAL_MODULES="cloud pcl" -FREECAD_STABLE_MODULES="addonmgr fem idf image inspection material - openscad part-design path points raytracing robot show surface - techdraw tux" - -for module in ${FREECAD_STABLE_MODULES}; do - IUSE="${IUSE} +${module}" -done -for module in ${FREECAD_EXPERIMENTAL_MODULES}; do - IUSE="${IUSE} ${module}" -done -unset module - -RESTRICT="!test? ( test )" - -RDEPEND=" - ${PYTHON_DEPS} - dev-libs/OpenNI2[opengl(+)] - dev-libs/libspnav[X] - dev-libs/xerces-c[icu] - dev-qt/designer:5 - dev-qt/qtconcurrent:5 - dev-qt/qtcore:5 - dev-qt/qtgui:5 - dev-qt/qtnetwork:5 - dev-qt/qtopengl:5 - dev-qt/qtprintsupport:5 - dev-qt/qtsvg:5 - dev-qt/qtwebengine:5[widgets] - dev-qt/qtwidgets:5 - dev-qt/qtx11extras:5 - dev-qt/qtxml:5 - >=media-libs/coin-4.0.0 - media-libs/freetype - media-libs/qhull:= - sci-libs/flann[openmp] - sci-libs/hdf5:=[fortran,zlib] - >=sci-libs/med-4.0.0-r1[python,${PYTHON_SINGLE_USEDEP}] - =sci-libs/pcl-1.8.1:=[opengl,openni2,qt5,vtk] ) - $(python_gen_cond_dep ' - dev-libs/boost:=[python,${PYTHON_USEDEP}] - dev-python/matplotlib[${PYTHON_USEDEP}] - dev-python/numpy[${PYTHON_USEDEP}] - >=dev-python/pivy-0.6.5[${PYTHON_USEDEP}] - dev-python/pybind11[${PYTHON_USEDEP}] - dev-python/pyside2[gui,svg,webchannel,webengine,${PYTHON_USEDEP}] - dev-python/shiboken2[${PYTHON_USEDEP}] - addonmgr? ( dev-python/GitPython[${PYTHON_USEDEP}] ) - fem? ( dev-python/ply[${PYTHON_USEDEP}] ) - ') -" -DEPEND=" - ${RDEPEND} - >=dev-cpp/eigen-3.3.1:3 -" -BDEPEND=" - app-text/dos2unix - dev-lang/swig -" - -# To get required dependencies: -# 'grep REQUIRES_MODS cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake' -# We set the following requirements by default: -# arch, draft, drawing, import, mesh, part, qt5, sketcher, spreadsheet, start, web. -# -# Additionally, we auto-enable mesh_part, flat_mesh and smesh -# Fem actually needs smesh, but as long as we don't have a smesh package, we enable -# smesh through the mesh USE flag. Note however, the fem<-smesh dependency isn't -# reflected by the REQUIRES_MODS macro, but at -# cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake:187. -# -# The increase in auto-enabled workbenches is due to their need in parts of the -# test suite when compiled with a minimal set of USE flags. -REQUIRED_USE=" - ${PYTHON_REQUIRED_USE} - inspection? ( points ) - path? ( robot ) -" - -PATCHES=( - "${FILESDIR}"/${PN}-0.19.4-Gentoo-specific-don-t-check-vcs.patch - "${FILESDIR}"/${PN}-0.19.1-0001-Gentoo-specific-Remove-ccache-usage.patch -) - -DOCS=( CODE_OF_CONDUCT.md ChangeLog.txt README.md ) - -CHECKREQS_DISK_BUILD="2G" - -pkg_setup() { - check-reqs_pkg_setup - python-single-r1_pkg_setup - [[ -z ${CASROOT} ]] && die "\${CASROOT} not set, please run eselect opencascade" -} - -src_prepare() { - # Fix desktop file - sed -e 's/Exec=FreeCAD/Exec=freecad/' -i src/XDGData/org.freecadweb.FreeCAD.desktop || die - - find "${S}" -type f -exec dos2unix -q {} \; || die "failed to convert to unix line endings" - - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DBUILD_ADDONMGR=$(usex addonmgr) - -DBUILD_ARCH=ON - -DBUILD_ASSEMBLY=OFF # deprecated - -DBUILD_CLOUD=$(usex cloud) - -DBUILD_COMPLETE=OFF # deprecated - -DBUILD_DRAFT=ON - -DBUILD_DESIGNER_PLUGIN=$(usex designer) - -DBUILD_DRAWING=ON - -DBUILD_ENABLE_CXX_STD:STRING="C++17" # needed for >=boost-1.77.0 - -DBUILD_FEM=$(usex fem) - -DBUILD_FEM_NETGEN=OFF - -DBUILD_FLAT_MESH=ON - -DBUILD_FORCE_DIRECTORY=ON # force building in a dedicated directory - -DBUILD_FREETYPE=ON # automagic dep - -DBUILD_GUI=$(usex !headless) - -DBUILD_IDF=$(usex idf) - -DBUILD_IMAGE=$(usex image) - -DBUILD_IMPORT=ON # import module for various file formats - -DBUILD_INSPECTION=$(usex inspection) - -DBUILD_JTREADER=OFF # code has been removed upstream, but option is still there - -DBUILD_MATERIAL=$(usex material) - -DBUILD_MESH=ON - -DBUILD_MESH_PART=ON - -DBUILD_OPENSCAD=$(usex openscad) - -DBUILD_PART=ON - -DBUILD_PART_DESIGN=$(usex part-design) - -DBUILD_PATH=$(usex path) - -DBUILD_POINTS=$(usex points) - -DBUILD_QT5=ON # OFF means to use Qt4 - -DBUILD_RAYTRACING=$(usex raytracing) - -DBUILD_REVERSEENGINEERING=OFF # currently only an empty sandbox - -DBUILD_ROBOT=$(usex robot) - -DBUILD_SHOW=$(usex show) - -DBUILD_SKETCHER=ON # needed by draft workspace - -DBUILD_SMESH=ON - -DBUILD_SPREADSHEET=ON - -DBUILD_START=ON - -DBUILD_SURFACE=$(usex surface) - -DBUILD_TECHDRAW=$(usex techdraw) - -DBUILD_TEST=ON # always build test workbench for run-time testing - -DBUILD_TUX=$(usex tux) - -DBUILD_VR=OFF - -DBUILD_WEB=ON # needed by start workspace - -DBUILD_WITH_CONDA=OFF - - -DCMAKE_INSTALL_DATADIR=/usr/share/${PN}/data - -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${PF} - -DCMAKE_INSTALL_INCLUDEDIR=/usr/include/${PN} - -DCMAKE_INSTALL_PREFIX=/usr/$(get_libdir)/${PN} - - -DFREECAD_BUILD_DEBIAN=OFF - - -DFREECAD_USE_EXTERNAL_KDL=ON - -DFREECAD_USE_EXTERNAL_SMESH=OFF # no package in Gentoo - -DFREECAD_USE_EXTERNAL_ZIPIOS=OFF # doesn't work yet, also no package in Gentoo tree - -DFREECAD_USE_FREETYPE=ON - -DFREECAD_USE_OCC_VARIANT:STRING="Official Version" - -DFREECAD_USE_PCL=$(usex pcl) - -DFREECAD_USE_PYBIND11=ON - -DFREECAD_USE_QT_FILEDIALOG=ON - -DFREECAD_USE_QTWEBMODULE:STRING="Qt WebEngine" - - # install python modules to site-packages' dir. True only for the main package, - # sub-packages will still be installed inside /usr/lib64/freecad - -DINSTALL_TO_SITEPACKAGES=ON - - # Use the version of shiboken2 that matches the selected python version - -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}" - -DPython3_EXECUTABLE=${PYTHON} - ) - - if use debug; then - # BUILD_SANDBOX currently broken, see - # https://forum.freecadweb.org/viewtopic.php?f=4&t=36071&start=30#p504595 - mycmakeargs+=( - -DBUILD_SANDBOX=OFF - -DBUILD_TEMPLATE=ON - ) - else - mycmakeargs+=( - -DBUILD_SANDBOX=OFF - -DBUILD_TEMPLATE=OFF - ) - fi - - cmake_src_configure -} - -# We use the FreeCADCmd binary instead of the FreeCAD binary here -# for two reasons: -# 1. It works out of the box with USE=headless as well, not needing a guard -# 2. We don't need virtualx.eclass and it's dependencies -# The exported environment variables are needed, so freecad does know -# where to save it's temporary files, and where to look and write it's -# configuration. Without those, there are sandbox violation, when it -# tries to create /var/lib/portage/home/.FreeCAD directory. -src_test() { - pushd "${BUILD_DIR}" > /dev/null || die - export FREECAD_USER_HOME="${HOME}" - export FREECAD_USER_DATA="${T}" - export FREECAD_USER_TEMP="${T}" - nonfatal ./bin/FreeCADCmd --run-test 0 - popd > /dev/null || die -} - -src_install() { - cmake_src_install - - dobin src/Tools/freecad-thumbnailer - - if ! use headless; then - dosym -r /usr/$(get_libdir)/${PN}/bin/FreeCAD /usr/bin/freecad - mv "${ED}"/usr/$(get_libdir)/${PN}/share/* "${ED}"/usr/share || die "failed to move shared resources" - fi - dosym -r /usr/$(get_libdir)/${PN}/bin/FreeCADCmd /usr/bin/freecadcmd - - python_optimize "${ED}"/usr/share/${PN}/data/Mod/Start/StartPage "${ED}"/usr/$(get_libdir)/${PN}{/Ext,/Mod}/ - # compile main package in python site-packages as well - python_optimize -} - -pkg_postinst() { - xdg_pkg_postinst - - einfo "You can load a lot of additional workbenches using the integrated" - einfo "AddonManager." - - # ToDo: check opencv, pysolar (::science), elmerfem (::science) - # ifc++, ifcopenshell, netgen, z88 (no pkgs), calculix-ccx (::waebbl) - einfo "There are a lot of additional tools, for which FreeCAD has builtin" - einfo "support. Some of them are available in Gentoo. Take a look at" - einfo "https://wiki.freecadweb.org/Installing#External_software_supported_by_FreeCAD" - optfeature_header "Computational utilities" - optfeature "BLAS library" sci-libs/openblas - optfeature "Statistical computation with Python" dev-python/pandas - optfeature "Use scientific computation with Python" dev-python/scipy - optfeature "Use symbolic math with Python" dev-python/sympy - optfeature_header "Imaging, Plotting and Rendering utilities" - optfeature "Dependency graphs" media-gfx/graphviz - optfeature "PBR Rendering" media-gfx/povray - optfeature_header "Import / Export" - optfeature "Interact with git repositories" dev-python/GitPython - optfeature "Work with COLLADA documents" dev-python/pycollada - optfeature "YAML importer and emitter" dev-python/pyyaml - optfeature "Importing and exporting 2D AutoCAD DWG files" media-gfx/libredwg - optfeature "Importing and exporting geospatial data formats" sci-libs/gdal - optfeature "Working with projection data" sci-libs/proj - optfeature_header "Meshing and FEM" - optfeature "FEM mesh generator" sci-libs/gmsh - optfeature "Triangulating meshes" sci-libs/gts - optfeature "Visualization" sci-visualization/paraview -} - -pkg_postrm() { - xdg_pkg_postrm -} diff --git a/media-gfx/freecad/freecad-0.20.2-r1.ebuild b/media-gfx/freecad/freecad-0.20.2-r1.ebuild new file mode 100644 index 000000000000..4099ed239e45 --- /dev/null +++ b/media-gfx/freecad/freecad-0.20.2-r1.ebuild @@ -0,0 +1,324 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) + +inherit check-reqs cmake optfeature python-single-r1 xdg + +DESCRIPTION="QT based Computer Aided Design application" +HOMEPAGE="https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD" + +MY_PN=FreeCAD + +if [[ ${PV} = *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/${MY_PN}/${MY_PN}.git" + S="${WORKDIR}/freecad-${PV}" +else + SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + S="${WORKDIR}/FreeCAD-${PV}" +fi + +# code is licensed LGPL-2 +# examples are licensed CC-BY-SA (without note of specific version) +LICENSE="LGPL-2 CC-BY-SA-4.0" +SLOT="0" +IUSE="debug designer +gui test" + +FREECAD_EXPERIMENTAL_MODULES="cloud netgen pcl" +FREECAD_STABLE_MODULES="addonmgr fem idf image inspection material + openscad part-design path points raytracing robot show surface + techdraw tux" + +for module in ${FREECAD_STABLE_MODULES}; do + IUSE="${IUSE} +${module}" +done +for module in ${FREECAD_EXPERIMENTAL_MODULES}; do + IUSE="${IUSE} ${module}" +done +unset module + +RESTRICT="!test? ( test )" + +RDEPEND=" + ${PYTHON_DEPS} + dev-libs/OpenNI2[opengl(+)] + dev-libs/boost:= + dev-libs/libspnav[X] + dev-libs/xerces-c[icu] + dev-qt/qtconcurrent:5 + dev-qt/qtcore:5 + dev-qt/qtnetwork:5 + dev-qt/qtxml:5 + dev-qt/qtxmlpatterns:5 + media-libs/freetype + media-libs/qhull:= + sci-libs/flann[openmp] + sci-libs/hdf5:=[fortran,zlib] + >=sci-libs/med-4.0.0-r1 + =media-libs/coin-4.0.0 + virtual/glu + virtual/opengl + $(python_gen_cond_dep ' + dev-python/matplotlib[${PYTHON_USEDEP}] + >=dev-python/pivy-0.6.5[${PYTHON_USEDEP}] + dev-python/pyside2[gui,svg,webchannel,webengine,${PYTHON_USEDEP}] + dev-python/shiboken2[${PYTHON_USEDEP}] + ') + ) + netgen? ( media-gfx/netgen[opencascade] ) + openscad? ( media-gfx/openscad ) + pcl? ( sci-libs/pcl:=[opengl,openni2,qt5,vtk] ) + $(python_gen_cond_dep ' + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/pybind11[${PYTHON_USEDEP}] + addonmgr? ( dev-python/GitPython[${PYTHON_USEDEP}] ) + fem? ( dev-python/ply[${PYTHON_USEDEP}] ) + ') +" +DEPEND=" + ${RDEPEND} + >=dev-cpp/eigen-3.3.1:3 + test? ( + $(python_gen_cond_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + dev-qt/qttest:5 + ) +" +BDEPEND=" + app-text/dos2unix + dev-lang/swig + test? ( + $(python_gen_cond_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + dev-qt/qttest:5 + ) +" + +# To get required dependencies: +# 'grep REQUIRES_MODS cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake' +# We set the following requirements by default: +# arch, draft, drawing, import, mesh, part, qt5, sketcher, spreadsheet, start, web. +# +# Additionally, we auto-enable mesh_part, flat_mesh and smesh +# Fem actually needs smesh, but as long as we don't have a smesh package, we enable +# smesh through the mesh USE flag. Note however, the fem<-smesh dependency isn't +# reflected by the REQUIRES_MODS macro, but at +# cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake:187. +# +# The increase in auto-enabled workbenches is due to their need in parts of the +# test suite when compiled with a minimal set of USE flags. +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + designer? ( gui ) + inspection? ( points ) + path? ( robot ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-0.19.4-Gentoo-specific-don-t-check-vcs.patch + "${FILESDIR}"/${PN}-0.19.1-0001-Gentoo-specific-Remove-ccache-usage.patch + "${FILESDIR}"/${PN}-0.20.2-Netgen-add-headers-to-support-recent-Netgen.patch + "${FILESDIR}"/${PN}-0.20.2-Fixes-8206-FreeCAD-segfaults-being-run-with-paramete.patch +) + +DOCS=( CODE_OF_CONDUCT.md ChangeLog.txt README.md ) + +CHECKREQS_DISK_BUILD="2G" + +pkg_setup() { + check-reqs_pkg_setup + python-single-r1_pkg_setup + [[ -z ${CASROOT} ]] && die "\${CASROOT} not set, please run eselect opencascade" +} + +src_prepare() { + # Fix desktop file + sed -e 's/Exec=FreeCAD/Exec=freecad/' -i src/XDGData/org.freecadweb.FreeCAD.desktop || die + + find "${S}" -type f -exec dos2unix -q {} \; || die "failed to convert to unix line endings" + + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DBUILD_ADDONMGR=$(usex addonmgr) + -DBUILD_ARCH=ON + -DBUILD_ASSEMBLY=OFF # deprecated + -DBUILD_CLOUD=$(usex cloud) + -DBUILD_COMPLETE=OFF # deprecated + -DBUILD_DRAFT=ON + -DBUILD_DESIGNER_PLUGIN=$(usex designer) + -DBUILD_DRAWING=ON + -DBUILD_ENABLE_CXX_STD:STRING="C++17" # needed for >=boost-1.77.0 + -DBUILD_FEM=$(usex fem) + -DBUILD_FEM_NETGEN=$(usex netgen) + -DBUILD_FLAT_MESH=ON + -DBUILD_FORCE_DIRECTORY=ON # force building in a dedicated directory + -DBUILD_FREETYPE=ON # automagic dep + -DBUILD_GUI=$(usex gui) + -DBUILD_IDF=$(usex idf) + -DBUILD_IMAGE=$(usex image) + -DBUILD_IMPORT=ON # import module for various file formats + -DBUILD_INSPECTION=$(usex inspection) + -DBUILD_JTREADER=OFF # code has been removed upstream, but option is still there + -DBUILD_MATERIAL=$(usex material) + -DBUILD_MESH=ON + -DBUILD_MESH_PART=ON + -DBUILD_OPENSCAD=$(usex openscad) + -DBUILD_PART=ON + -DBUILD_PART_DESIGN=$(usex part-design) + -DBUILD_PATH=$(usex path) + -DBUILD_POINTS=$(usex points) + -DBUILD_QT5=ON # OFF means to use Qt4 + -DBUILD_RAYTRACING=$(usex raytracing) + -DBUILD_REVERSEENGINEERING=OFF # currently only an empty sandbox + -DBUILD_ROBOT=$(usex robot) + -DBUILD_SHOW=$(usex show) + -DBUILD_SKETCHER=ON # needed by draft workspace + -DBUILD_SMESH=ON + -DBUILD_SPREADSHEET=ON + -DBUILD_START=ON + -DBUILD_SURFACE=$(usex surface) + -DBUILD_TECHDRAW=$(usex techdraw) + -DBUILD_TEST=ON # always build test workbench for run-time testing + -DBUILD_TUX=$(usex tux) + -DBUILD_VR=OFF + -DBUILD_WEB=ON # needed by start workspace + -DBUILD_WITH_CONDA=OFF + + -DCMAKE_INSTALL_DATADIR=/usr/share/${PN}/data + -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${PF} + -DCMAKE_INSTALL_INCLUDEDIR=/usr/include/${PN} + -DCMAKE_INSTALL_PREFIX=/usr/$(get_libdir)/${PN} + + -DFREECAD_BUILD_DEBIAN=OFF + + -DFREECAD_QT_VERSION="5" + + -DFREECAD_USE_EXTERNAL_KDL=ON + -DFREECAD_USE_EXTERNAL_SMESH=OFF # no package in Gentoo + -DFREECAD_USE_EXTERNAL_ZIPIOS=OFF # doesn't work yet, also no package in Gentoo tree + -DFREECAD_USE_FREETYPE=ON + -DFREECAD_USE_OCC_VARIANT:STRING="Official Version" + -DFREECAD_USE_PCL=$(usex pcl) + -DFREECAD_USE_PYBIND11=ON + -DFREECAD_USE_QT_FILEDIALOG=ON + -DFREECAD_USE_QTWEBMODULE:STRING="Qt WebEngine" + + # install python modules to site-packages' dir. True only for the main package, + # sub-packages will still be installed inside /usr/lib64/freecad + -DINSTALL_TO_SITEPACKAGES=ON + + # Use the version of shiboken2 that matches the selected python version + -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}" + -DPython3_EXECUTABLE=${PYTHON} + ) + + if use debug; then + # BUILD_SANDBOX currently broken, see + # https://forum.freecadweb.org/viewtopic.php?f=4&t=36071&start=30#p504595 + mycmakeargs+=( + -DBUILD_SANDBOX=OFF + -DBUILD_TEMPLATE=ON + ) + else + mycmakeargs+=( + -DBUILD_SANDBOX=OFF + -DBUILD_TEMPLATE=OFF + ) + fi + + cmake_src_configure +} + +# We use the FreeCADCmd binary instead of the FreeCAD binary here +# for two reasons: +# 1. It works out of the box with USE=-gui as well, not needing a guard +# 2. We don't need virtualx.eclass and it's dependencies +# The exported environment variables are needed, so freecad does know +# where to save it's temporary files, and where to look and write it's +# configuration. Without those, there are sandbox violation, when it +# tries to create /var/lib/portage/home/.FreeCAD directory. +src_test() { + pushd "${BUILD_DIR}" > /dev/null || die + export FREECAD_USER_HOME="${HOME}" + export FREECAD_USER_DATA="${T}" + export FREECAD_USER_TEMP="${T}" + nonfatal ./bin/FreeCADCmd --run-test 0 + popd > /dev/null || die +} + +src_install() { + cmake_src_install + + dobin src/Tools/freecad-thumbnailer + + if use gui; then + dosym -r /usr/$(get_libdir)/${PN}/bin/FreeCAD /usr/bin/freecad + mv "${ED}"/usr/$(get_libdir)/${PN}/share/* "${ED}"/usr/share || die "failed to move shared resources" + fi + dosym -r /usr/$(get_libdir)/${PN}/bin/FreeCADCmd /usr/bin/freecadcmd + + rm -r "${ED}"/usr/$(get_libdir)/${PN}/include/E57Format || die "failed to drop unneeded include directory E57Format" + + python_optimize "${ED}"/usr/share/${PN}/data/Mod/Start/StartPage "${ED}"/usr/$(get_libdir)/${PN}{/Ext,/Mod}/ + # compile main package in python site-packages as well + python_optimize +} + +pkg_postinst() { + xdg_pkg_postinst + + einfo "You can load a lot of additional workbenches using the integrated" + einfo "AddonManager." + + # ToDo: check opencv, pysolar (::science), elmerfem (::science) + # ifc++, ifcopenshell, z88 (no pkgs), calculix-ccx (::waebbl) + einfo "There are a lot of additional tools, for which FreeCAD has builtin" + einfo "support. Some of them are available in Gentoo. Take a look at" + einfo "https://wiki.freecadweb.org/Installing#External_software_supported_by_FreeCAD" + optfeature_header "Computational utilities" + optfeature "BLAS library" sci-libs/openblas + optfeature "Statistical computation with Python" dev-python/pandas + optfeature "Use scientific computation with Python" dev-python/scipy + optfeature "Use symbolic math with Python" dev-python/sympy + optfeature_header "Imaging, Plotting and Rendering utilities" + optfeature "Dependency graphs" media-gfx/graphviz + optfeature "PBR Rendering" media-gfx/povray + optfeature_header "Import / Export" + optfeature "Interact with git repositories" dev-python/GitPython + optfeature "Work with COLLADA documents" dev-python/pycollada + optfeature "YAML importer and emitter" dev-python/pyyaml + optfeature "Importing and exporting 2D AutoCAD DWG files" media-gfx/libredwg + optfeature "Importing and exporting geospatial data formats" sci-libs/gdal + optfeature "Working with projection data" sci-libs/proj + optfeature_header "Meshing and FEM" + optfeature "FEM mesh generator" sci-libs/gmsh + optfeature "Triangulating meshes" sci-libs/gts + optfeature "Visualization" sci-visualization/paraview +} + +pkg_postrm() { + xdg_pkg_postrm +} diff --git a/media-gfx/freecad/freecad-9999.ebuild b/media-gfx/freecad/freecad-9999.ebuild index ba5840c6b720..a006497fe1bd 100644 --- a/media-gfx/freecad/freecad-9999.ebuild +++ b/media-gfx/freecad/freecad-9999.ebuild @@ -3,7 +3,7 @@ EAPI=8 -PYTHON_COMPAT=( python3_{9..10} ) +PYTHON_COMPAT=( python3_{9..11} ) inherit check-reqs cmake optfeature python-single-r1 xdg @@ -28,7 +28,7 @@ LICENSE="LGPL-2 CC-BY-SA-4.0" SLOT="0" IUSE="debug designer +gui test" -FREECAD_EXPERIMENTAL_MODULES="cloud pcl" +FREECAD_EXPERIMENTAL_MODULES="cloud netgen pcl" FREECAD_STABLE_MODULES="addonmgr fem idf image inspection material openscad part-design path points raytracing robot show surface techdraw tux" @@ -46,47 +46,54 @@ RESTRICT="!test? ( test )" RDEPEND=" ${PYTHON_DEPS} dev-libs/OpenNI2[opengl(+)] + dev-libs/boost:= + dev-libs/libfmt:= dev-libs/libspnav[X] dev-libs/xerces-c[icu] - dev-qt/designer:5 dev-qt/qtconcurrent:5 dev-qt/qtcore:5 - dev-qt/qtgui:5 dev-qt/qtnetwork:5 - dev-qt/qtopengl:5 - dev-qt/qtprintsupport:5 - dev-qt/qtsvg:5 - dev-qt/qtwebengine:5[widgets] - dev-qt/qtwidgets:5 - dev-qt/qtx11extras:5 dev-qt/qtxml:5 - >=media-libs/coin-4.0.0 + dev-qt/qtxmlpatterns:5 media-libs/freetype media-libs/qhull:= sci-libs/flann[openmp] sci-libs/hdf5:=[fortran,zlib] - >=sci-libs/med-4.0.0-r1[python,${PYTHON_SINGLE_USEDEP}] - sci-libs/opencascade:=[json,vtk(+)] + >=sci-libs/med-4.0.0-r1 + sci-libs/opencascade:=[json,vtk] sci-libs/orocos_kdl:= sys-libs/zlib - virtual/glu virtual/libusb:1 - virtual/opengl cloud? ( dev-libs/openssl:= net-misc/curl ) - fem? ( sci-libs/vtk:=[boost(+),python,qt5,rendering,${PYTHON_SINGLE_USEDEP}] ) + fem? ( sci-libs/vtk:=[qt5,rendering] ) + gui? ( + dev-qt/designer:5 + dev-qt/qtgui:5 + dev-qt/qtopengl:5 + dev-qt/qtprintsupport:5 + dev-qt/qtsvg:5 + dev-qt/qtwebengine:5[widgets] + dev-qt/qtwidgets:5 + dev-qt/qtx11extras:5 + >=media-libs/coin-4.0.0 + virtual/glu + virtual/opengl + $(python_gen_cond_dep ' + dev-python/matplotlib[${PYTHON_USEDEP}] + >=dev-python/pivy-0.6.5[${PYTHON_USEDEP}] + dev-python/pyside2[gui,svg,webchannel,webengine,${PYTHON_USEDEP}] + dev-python/shiboken2[${PYTHON_USEDEP}] + ') + ) + netgen? ( media-gfx/netgen[opencascade] ) openscad? ( media-gfx/openscad ) - pcl? ( sci-libs/pcl:=[opengl,openni2(+),qt5(+),vtk(+)] ) + pcl? ( sci-libs/pcl:=[opengl,openni2,qt5,vtk] ) $(python_gen_cond_dep ' - dev-libs/boost:=[python,${PYTHON_USEDEP}] - dev-python/matplotlib[${PYTHON_USEDEP}] dev-python/numpy[${PYTHON_USEDEP}] - >=dev-python/pivy-0.6.5[${PYTHON_USEDEP}] dev-python/pybind11[${PYTHON_USEDEP}] - dev-python/pyside2[gui,svg,webchannel,webengine,${PYTHON_USEDEP}] - dev-python/shiboken2[${PYTHON_USEDEP}] addonmgr? ( dev-python/GitPython[${PYTHON_USEDEP}] ) fem? ( dev-python/ply[${PYTHON_USEDEP}] ) ') @@ -94,10 +101,18 @@ RDEPEND=" DEPEND=" ${RDEPEND} >=dev-cpp/eigen-3.3.1:3 + test? ( + $(python_gen_cond_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + dev-qt/qttest:5 + ) " BDEPEND=" app-text/dos2unix dev-lang/swig + test? ( + $(python_gen_cond_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + dev-qt/qttest:5 + ) " # To get required dependencies: @@ -115,6 +130,7 @@ BDEPEND=" # test suite when compiled with a minimal set of USE flags. REQUIRED_USE=" ${PYTHON_REQUIRED_USE} + designer? ( gui ) inspection? ( points ) path? ( robot ) " @@ -122,9 +138,10 @@ REQUIRED_USE=" PATCHES=( "${FILESDIR}"/${PN}-0.19.4-Gentoo-specific-don-t-check-vcs.patch "${FILESDIR}"/${PN}-0.19.1-0001-Gentoo-specific-Remove-ccache-usage.patch + "${FILESDIR}"/${PN}-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch ) -DOCS=( CODE_OF_CONDUCT.md ChangeLog.txt README.md ) +DOCS=( CODE_OF_CONDUCT.md README.md ) CHECKREQS_DISK_BUILD="2G" @@ -155,7 +172,7 @@ src_configure() { -DBUILD_DRAWING=ON -DBUILD_ENABLE_CXX_STD:STRING="C++17" # needed for current git master -DBUILD_FEM=$(usex fem) - -DBUILD_FEM_NETGEN=OFF + -DBUILD_FEM_NETGEN=$(usex netgen) -DBUILD_FLAT_MESH=ON -DBUILD_FORCE_DIRECTORY=ON # force building in a dedicated directory -DBUILD_FREETYPE=ON # automagic dep @@ -263,6 +280,9 @@ src_install() { fi dosym -r /usr/$(get_libdir)/${PN}/bin/FreeCADCmd /usr/bin/freecadcmd + rm -r "${ED}"/usr/$(get_libdir)/${PN}/include/E57Format || die "failed to drop unneeded include directory E57Format" + use test && rm -r "${ED}"/usr/include/${PN}/{gmock,gtest} || die + python_optimize "${ED}"/usr/share/${PN}/data/Mod/Start/StartPage "${ED}"/usr/$(get_libdir)/${PN}{/Ext,/Mod}/ # compile main package in python site-packages as well python_optimize @@ -275,7 +295,7 @@ pkg_postinst() { einfo "AddonManager." # ToDo: check opencv, pysolar (::science), elmerfem (::science) - # ifc++, ifcopenshell, netgen, z88 (no pkgs), calculix-ccx (::waebbl) + # ifc++, ifcopenshell, z88 (no pkgs), calculix-ccx (::waebbl) einfo "There are a lot of additional tools, for which FreeCAD has builtin" einfo "support. Some of them are available in Gentoo. Take a look at" einfo "https://wiki.freecadweb.org/Installing#External_software_supported_by_FreeCAD" diff --git a/media-gfx/freecad/metadata.xml b/media-gfx/freecad/metadata.xml index 6e0770f45ea8..17e33f46262b 100644 --- a/media-gfx/freecad/metadata.xml +++ b/media-gfx/freecad/metadata.xml @@ -33,10 +33,6 @@ The Python modules are available, without their GUI parts though, if this is unset. - - Build FreeCAD without a GUI, usable for server-side instances. - The Python modules are still available, without their GUI parts though. - Build the IDF module to provide file exchange capabilities with IDF files @@ -52,6 +48,9 @@ Build the material module and workbench to work with materials + + Build support for the netgen mesher through media-gfx/netgen. + Build the OpenSCAD module for interoperability with OpenSCAD and repairing Constructive Solid Geometry (CSG) history diff --git a/media-gfx/netgen/Manifest b/media-gfx/netgen/Manifest index 1a0bb67781ba..0d58ce09a18d 100644 --- a/media-gfx/netgen/Manifest +++ b/media-gfx/netgen/Manifest @@ -1,11 +1,11 @@ AUX netgen-6.2.2204-disable-failing-tests.patch 612 BLAKE2B e5fad5fcc21942ece9fbc69a0a66fbcdb46dc9233000fe27c6321e4f30210c0f7951adb820a9f05f7131dab7cdd908cb315b101ac7078b036fbdce3c5c46f736 SHA512 81504313f1b7d4b317e54aa03f4c8b5a63505db8fb25e135c51b5c811fe31eeade4455efbb69053df841eba32bc0104d2f6c66791f9b59b5a9ba6c97d861942a AUX netgen-6.2.2204-disable-python-tests.patch 521 BLAKE2B ed98bd8c54d3a7e77fdbe3e74ad381bf6d807d47b887e4f7aa9813b65b1d6440a6429faf365a1a463f294788545c7b6aaae86aafd7c69ac4e050d31d464bcdce SHA512 af99b5b1a1d6d0b999fc524ce7d72285b30c040d25846c177c019a7bdf0d7823c3ca2457f9bc2a90a1ae6f8594e9c7513d324451cf4054f57fcb3a299607c1f7 AUX netgen-6.2.2204-find-Tk-include-directories.patch 797 BLAKE2B b1d049ef7e05936f762bfe0b409f8c8dde4730718007fd62e4ab0ca7178336d439aa52eadabce6bd6a9ccf56c61dcbc23e416cf3e18dec68e2fe9b36b23f0d3c SHA512 cc144615fb3ef4df21aa0f39c370d716a1afdf2a35d570ab92a80a14aeebffd79b7ff24d61378a363faad2024f90a1a672441fdc2578efd45cfaefe166552b5e -AUX netgen-6.2.2204-find-libjpeg-turbo-library.patch 1270 BLAKE2B b48245414ba9864f896a37913cb3b7268a0958c47d3d793f48a44ccfe3e60383b62419b74426f851fa2582009b297061f56775c20addebf9b3041bfda386f3b0 SHA512 ae28d6509039d027c1848530fc4bc3303a5069d7c2c2453d299f6ab839fbcd2f80ea032585a7d459364c6469e5a9fffb7b0a0e896f38d53b76059e091a82eba4 AUX netgen-6.2.2204-link-against-ffmpeg.patch 710 BLAKE2B 28b01b18480af48c4967a25b8de303dbc21b52a63d3a441d5d8d8463c4498198868c8b96049b68ad5e1302c30d15c6d3a028a0cbd593d608d3d865a4b51abcc0 SHA512 df42aaf831ade1cb4bd36b59bcdee69f7f1b1f7c25f3e668e90fc391fccff6861cbcb58807189d5051bbfae0035c0f42a93c144caf44c89a636fa43c802d02ab -AUX netgen-6.2.2204-use-external-pybind11.patch 1209 BLAKE2B f1fbb7ecc9f07d5d0ccb6cef5ff8a5e6cd0866e12c47ad005f34b088d78d43f400a2b40543e6d34273b88f327dd11d46825c28a40655e608fb3692bee90319e1 SHA512 ca755f4074424feba97b5882e86b2645c7edb24bcb163594eb2dbb98fbcd38f86713e66d0f3b249adc50e896f4ae8c55ebe1a01937b79e94910cdfe7e2156232 AUX netgen-6.2.2204-use-system-catch.patch 1521 BLAKE2B 34ee6fedced5381a1e2152fdd215774ac4dfd5d349ca4f342030cc98cd8370de4db260e7c4a6091785056766f652d4cd621964c0b68134bea56b6cd56903dcb8 SHA512 973fa6e6ce38567343548db09d1f7d56b2ef78b3c77aa11c94eda72f03e2c97ab495d9975df15bbdd3545fc3346059ef6d91a1cf1632744459c08bc4a8ac7d40 AUX netgen-6.2.2204-use-system-spdlog.patch 1390 BLAKE2B 541725d179a0b3f9f9430f1268478adfdf378940b4503e962dd59071e8ac0dba60c5445d036d73103f6ec25017a1335f6eb7bfc38debb0ccff810229d5466890 SHA512 1519ce3628f2c5f17afea34bd4ebf102f2688c9440504f6828c611b749b0ae5b7d80b2b688c13769f6bd911faeb3d9d4f83e1ba663d8d5bdb2ef5bc2076f873c -DIST netgen-6.2.2204.tar.gz 3394806 BLAKE2B 2b99854cab0890662f1ab7ffee6fb444b60a28ba0bfe9970a89c80c0e4c930c40b8034f9c600ddd61c9b60f542d1cae758a8c220a1ba76949bf9f97fb2fe9020 SHA512 964c40753613c111b0372b0e403b19734cc0c559d1e7e45bbe6b452f4daba10c6bde8abaa5c9541c92b4bccff02d32ea6ba8e8e06ba64f11fec1733f2e374cbf -EBUILD netgen-6.2.2204.ebuild 3974 BLAKE2B d57636eef686e9bcc95d48b54d4a37d1879bfa96d005e24fff43777f71a422c207f14e660dd1bfcba73cf89d62eb541a164cd7021d0e6cc84c16bb7023043196 SHA512 18aac8d8f61e9c6e2d53273cad48254707bda9d7af4aa64bdb301350a077669997de18257e39f8ffbb9887b8755b1b4b3abf52c8c5e2aae7def7c21065866f39 +AUX netgen-6.2.2301-find-libjpeg-turbo-library.patch 1280 BLAKE2B 47cbb27914badd316078acbf57d0ec13da80ade19c6f20602dec1bb42d9b6929cd017ee9120c651dfffcfb2e9c925798a327bd07561823f50702536487343a06 SHA512 c0c774d47bc405357c09454c528391062cec9d2f4a39757409894407bca28a8bf2332bfa60bdba3f99948d5d8871833cc56123ba212e97862f6cc7d09dedb3a8 +AUX netgen-6.2.2301-fix-nullptr-deref-in-archive.patch 1012 BLAKE2B 2de4195438ce6dec88d1bc0d05f841bb959690b271cb1a40464ae81cc056e4520246c49533a2dc90ee88a29f450b9bf89a285342f9e8a08f0b9a44cee1933ec2 SHA512 3f28bce676c3db1d0dd05ff21716745dfc01b8d9f5cc6c278baed76f10514d283e78012f04fca956f71337f4a34287f949b06881a12cb84ae812a61bd1ff79ea +DIST netgen-6.2.2301.tar.gz 3394480 BLAKE2B 358b0cf7ff4d372a9ede8ab9b7df24435a75bcad880cc83607443707ae096f2bafa35d8cd581533917d1aae85a18ac0ca902876a1c68f11664a0a3ef1ae00593 SHA512 7aebbc5cc3e3227b455ac9c5538e1f0110d5621e6ca7315f6811733bd93e88ccca467296b7915894a45202ed375b45d9387a1d113a720d4199eff782afb43070 +EBUILD netgen-6.2.2301.ebuild 4089 BLAKE2B 3eaa6a00dfc3a6f4ff173fd2455e34e0c58901e4f9afe41f3a95d57080d9fd2271419eea6814cb6f6ca1c36a59760bdaa0bf94689b93e39feddc306df796b72e SHA512 c3f52aafaf1bc63f103d88e39a7a36bd26b6f856ea6b864856cd42429818810401b98762caa57718c922f1c35eeaeda2af51c263bbd32fec330051635475685c MISC metadata.xml 647 BLAKE2B bbd454b748f78fe5a95e956b00a4ada9d46ba38c98f6d763c63d2c09541fe8243f6d7d033ff7b96dd2a00ae14e2d9dbac5150015d950ba74c5c1b69a68678f2a SHA512 334ef398fa5da9f565c1a8b53c67b223fb710ce4b47b2bae5561695ff46c159c56ccaf43afc0ac7810e651e73953f609f04909ae3a1300cd411b8125341222a2 diff --git a/media-gfx/netgen/files/netgen-6.2.2204-find-libjpeg-turbo-library.patch b/media-gfx/netgen/files/netgen-6.2.2204-find-libjpeg-turbo-library.patch deleted file mode 100644 index c45f5a4e4bdb..000000000000 --- a/media-gfx/netgen/files/netgen-6.2.2204-find-libjpeg-turbo-library.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 39160b692fd051f2638f1a6e1df38eb616b6d6cb Mon Sep 17 00:00:00 2001 -From: Bernd Waibel -Date: Sun, 30 Oct 2022 16:09:43 +0100 -Subject: [PATCH] find libjpeg-turbo library - -Signed-off-by: Bernd Waibel ---- 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 "$" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} ) -+target_link_libraries( nggui PUBLIC "$" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} ${JPEG_LIBRARIES} ) - - 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.38.1 - diff --git a/media-gfx/netgen/files/netgen-6.2.2204-use-external-pybind11.patch b/media-gfx/netgen/files/netgen-6.2.2204-use-external-pybind11.patch deleted file mode 100644 index ef11c8b0821a..000000000000 --- a/media-gfx/netgen/files/netgen-6.2.2204-use-external-pybind11.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c3c55fe646ad6934e429edd080aceae54260551c Mon Sep 17 00:00:00 2001 -From: Bernd Waibel -Date: Sun, 30 Oct 2022 14:50:48 +0100 -Subject: [PATCH] use external pybind11 - -Signed-off-by: Bernd Waibel ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -302,7 +302,7 @@ else() - endif() - - if (USE_PYTHON) -- add_subdirectory(external_dependencies/pybind11) -+ find_package(pybind11) - find_path(PYBIND_INCLUDE_DIR pybind11/pybind11.h HINTS ${PYTHON_INCLUDE_DIR}) - if( PYBIND_INCLUDE_DIR ) - message(STATUS "Found Pybind11: ${PYBIND_INCLUDE_DIR}") ---- a/cmake/SuperBuild.cmake -+++ b/cmake/SuperBuild.cmake -@@ -154,7 +154,6 @@ endif() - ####################################################################### - if (USE_PYTHON) - find_path(PYBIND_INCLUDE_DIR pybind11/pybind11.h PATHS ${CMAKE_CURRENT_SOURCE_DIR}/external_dependencies/pybind11/include NO_DEFAULT_PATH) -- set(NG_INSTALL_PYBIND ON) - if( NOT PYBIND_INCLUDE_DIR ) - # if the pybind submodule is missing, try to initialize and update all submodules - execute_process(COMMAND git submodule update --init --recursive WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) --- -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 +Date: Wed, 15 Feb 2023 12:28:00 +0100 +Subject: [PATCH] find libjpeg-turbo library + +Signed-off-by: Bernd Waibel +--- 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 "$" ${MPI_CXX_LIBRARIES} ${OPENGL_LIBRARIES} nglib) ++target_link_libraries( nggui PUBLIC "$" ${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 +From: Bernd Waibel +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 +--- 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/netgen-6.2.2204.ebuild b/media-gfx/netgen/netgen-6.2.2204.ebuild deleted file mode 100644 index f4a8413a9832..000000000000 --- a/media-gfx/netgen/netgen-6.2.2204.ebuild +++ /dev/null @@ -1,155 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_10 ) -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? ( - "${S}/version.txt" || die - v${PV}-0-gde0d706e - 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+=( - -DPYBIND_INCLUDE_DIR="/usr/lib/${EPYTHON}/site-packages/pybind11/include/" - -DNG_INSTALL_PYBIND=OFF - ) - 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.2301.ebuild b/media-gfx/netgen/netgen-6.2.2301.ebuild new file mode 100644 index 000000000000..bd9fbd4c967b --- /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? ( + "${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 +} -- cgit v1.2.3