summaryrefslogtreecommitdiff
path: root/sci-libs
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-03-23 13:01:09 +0000
committerV3n3RiX <venerix@koprulu.sector>2024-03-23 13:01:09 +0000
commitacc2dacf2ee9a5b03df96da670153f2e3a24d80c (patch)
tree852bc5b5f64c3dc59ac09c6a2314c63b9a901ac0 /sci-libs
parent2c9b8fbe41c04a94054b0540b54fcf2de0b79166 (diff)
gentoo auto-resync : 23:03:2024 - 13:01:09
Diffstat (limited to 'sci-libs')
-rw-r--r--sci-libs/Manifest.gzbin45142 -> 45149 bytes
-rw-r--r--sci-libs/opencascade/Manifest18
-rw-r--r--sci-libs/opencascade/files/opencascade-7.7.0-jemalloc-lib-type.patch27
-rw-r--r--sci-libs/opencascade/files/opencascade-7.8.0-cmake-min-version.patch14
-rw-r--r--sci-libs/opencascade/files/opencascade-7.8.0-tests.patch19
-rw-r--r--sci-libs/opencascade/metadata.xml33
-rw-r--r--sci-libs/opencascade/opencascade-7.6.3-r2.ebuild1
-rw-r--r--sci-libs/opencascade/opencascade-7.7.0-r2.ebuild1
-rw-r--r--sci-libs/opencascade/opencascade-7.7.1.ebuild366
-rw-r--r--sci-libs/opencascade/opencascade-7.7.2.ebuild366
-rw-r--r--sci-libs/opencascade/opencascade-7.8.0.ebuild365
-rw-r--r--sci-libs/opencascade/opencascade-9999.ebuild365
12 files changed, 1549 insertions, 26 deletions
diff --git a/sci-libs/Manifest.gz b/sci-libs/Manifest.gz
index 3448b4707cb2..f32ea7715386 100644
--- a/sci-libs/Manifest.gz
+++ b/sci-libs/Manifest.gz
Binary files differ
diff --git a/sci-libs/opencascade/Manifest b/sci-libs/opencascade/Manifest
index 3f5f0d194556..113205e2a3e2 100644
--- a/sci-libs/opencascade/Manifest
+++ b/sci-libs/opencascade/Manifest
@@ -7,10 +7,22 @@ AUX opencascade-7.7.0-add-missing-include-limits.patch 459 BLAKE2B 507fd80c08c52
AUX opencascade-7.7.0-avoid-pre-stripping-binaries.patch 1357 BLAKE2B 2f26c4a4e4737971b0bf14828acc7c6049ad75920853f565705699ab58bf60d6e4aa5473114c6224938870e19439b569ce2112af2e9b0742c361cc54a68421ae SHA512 202994e6a0b42c2469f8fc11ace7364ce41056192393bd2930fba1468809ce8992169a6ccbe909930ad181d9c633fc9f6169f7ef72ef071c0186ae7f2ecdb456
AUX opencascade-7.7.0-build-against-vtk-9.2.patch 1360 BLAKE2B 39bcae904286687ff2aca6662f18d67e72a341e98281b0b04b7b302ad9d0adfa576ad82ce3cfa646e1b9f4107580231bf8613d0cdb72791fda478485c8072827 SHA512 3afb471767b78b4096e00a8eab4c71a90944c70945a16f45ac372ab824c4c6a140c165882e7cb15c95c95d70ae4c9298cc03fc7cd4ebe920bb7ed4eb38aba0a5
AUX opencascade-7.7.0-fix-installation-of-cmake-config-files.patch 1823 BLAKE2B e84bb8627ba5cee166c483631511d150ef9af2c1aa966d7154926600da0674214b3fce8363dcff7d94204c36a92f236ede0f7849039a3bd4509d04d91444204f SHA512 242604d59b3596644b1efa95ce9d7b3d30dbb1bd49f79e28a4ea66ac9b6d4728a32cf31ceb9078875a39bb7b8775ba3ce685560045684b803037a61e2f37d2a4
+AUX opencascade-7.7.0-jemalloc-lib-type.patch 783 BLAKE2B baa529cd277dac5e97fc77b30a8a5b2349364a60948abbb56d754dcb1a1bfd4fc76745798b4163d1b5d76752e3ff61b121323cf4a15195b4bab0e4ad5dd56fd1 SHA512 1ac1a56cec067184ced6cf632d4b18c50bbbc7380f397f55dd4be5003938aaa4899d857f6a1c14f342550c1fdd43e23829a9a174042cbf8d76e2844d740aa20c
AUX opencascade-7.7.0-musl.patch 3095 BLAKE2B ad17417a93f42b4871c469cd7a50c48ed987f9333c626ca103fedabd49b84b7061de8eefbe834ead65325d606f2ea7f89210156364b55de75336d6493ff483c1 SHA512 6fb94bd075448d4ede48df918d070eda4607956d7a66b01f8b8b3621c0dc57348daa120661c5f1fe6ba7b818fec5737936b2620d62bfd0a7a224d03cbdd3ffc6
+AUX opencascade-7.8.0-cmake-min-version.patch 388 BLAKE2B ebeda19b2bb855a1b01bafb0a69e4bac51b95a84ca1d2fdfb58bfb4af007ba11efb4452812bd51060be5d45233258aabac305bb4048364fb0663c42cabe60d1f SHA512 025611176fdb894e53e413a5de32aabf7822743393dd847e01d650f3fdf00f56fc73b22c1faae97b94b2120d016055f0fd23a2d47c6211e49d2097fe6d510e99
+AUX opencascade-7.8.0-tests.patch 539 BLAKE2B 519e97a2881da6d437c4b54beaeb5e77883669ff8d16b491bc6859db6c02e807dc4ceffa1052ece9a8ec56ba9024c5abb61caca1a1efa7847efbe3bce7d5ef95 SHA512 4ba8fcf8277b4dda3ceb84010299b925ccb561e9bb3d1097dc41c437be6be9499160ac1c3f36d63ca6f4fa9f9f9d012f787125c0bd693b44028c50b9c858bd8a
AUX opencascade.env.in 4571 BLAKE2B 81780f83a476ba5a2691c003c7fde48fec14be4e355480080749800602307d64b88f779cde09aa94a7bb815849d669b054d5ca00908199d1a9857b07518b4f0d SHA512 98e6861469725f6880e38a2d7389f7bc748bcbdf54930aa3fe05ab6a5e1fab5249c4ffed4f45b6ef982325acece0d5acb7ffd8d92adac9be2db9a41ee5356019
DIST opencascade-7.6.3.tar.gz 48216090 BLAKE2B ff0b63250e77b0240bd99bba38cd0e6b0a8c88bf39e495f5d51d7913f097e2cad83a5ad121e9d56de11c74008249c99a41f4615269a085b7cf97c3d7f0477d6d SHA512 c708f76edb707ba18bdfe7442ed8fa500894ee6c1cd8d0313eb906b3aa7dfa40a575f04dbccd70e84395d670f2b93fb8529f3d59726449234e627b9f35b9dded
DIST opencascade-7.7.0.tar.gz 48393806 BLAKE2B b41da7bdd07aa6ef52f7833bef3e8a9fc2ca16cbf754773cb7adcc059c11c2a7937d279a2b6cf3096e7af6fbb42c6fdc2a5c98340d6b084d2ba100ba2c538f2a SHA512 6c90e2761f752241417ae6f18d819f51e66b32f3a50a97384f29ed73fa07f4cded84c71a6f6ba302d5e35c57e2fc13001619521eaf45757e4e5ff670d94bbf5c
-EBUILD opencascade-7.6.3-r2.ebuild 4724 BLAKE2B b3de0675bf17cf889646ae2ee50097b47b4b8544c6151b2f2f6f515e22df37883da477e2176e6231a410942c7b67f1e38a9f01bffd0901449c5a77c896d269ef SHA512 b916d80bd1c367a2079a72957d5531deca041bca3fdd773a9b6dc77fb351bb44e053e4e72e1bc4adb8b63b10387d9838fc777bad0712b8d075f024fdaaa42869
-EBUILD opencascade-7.7.0-r2.ebuild 4872 BLAKE2B 251ec7e583e2d38727da929f0319a983f97c1bdeb14e08c0d0c8df2bea7e14499a03d111beb102ddf97dd209104bc86a627b629bcdd0c6243fe1162da2fb82fa SHA512 d800c6a8dd8b79d19d2adb6c6772cc5928b2b8aac1f3efa15e1cb3e8bb42ca859d4aa22f5413ea4bccfbb5681fb4e3ce3608e6109ccc5e55030a441da33c4ed3
-MISC metadata.xml 1053 BLAKE2B 946125fdaf332fb577655b71f63e7d55cba3af624f817ecee100f1307b97fa94710f16a4c8f8af4d32d822bbe85a07af1bf5170064061c6dfe62fdd1d7d107c4 SHA512 106def99d7a94c3e2efdbf2024bff00558891c92be9ff7909dfcf9a53635c8d0f01bed474e475aefc29c8239a5bf3cc7d15689288852b087ca54ad39584f0d25
+DIST opencascade-7.7.1.tar.gz 48408076 BLAKE2B 46e14a47a0ce555ac17a3fca520c1f21d7ca05c67b54259e3d2d8560618db096313d5be3d5e4a24acad1912534c17293ad203f48dd7464690aec86e287d9f230 SHA512 f095848d212afbe7e71614d46f57222e347246aec7c92aafae59e6f07798f5371c7a125042c149393ee7d361f28eb89b5196de17a7cc37233f1586ba919c0839
+DIST opencascade-7.7.2.tar.gz 48404428 BLAKE2B 28d637e75eca570e38401a0a59127ffdbcb06838a91cc3899fe905834bb47e0e9a92d16cde52027d94e78b0fbddc2043340a35dcb0f4a472c4f2bdac2713216c SHA512 d9e882d44bb65616f8cfce68ebdcd5765669b84e3d82cfb2d1bc22b71b0e878442c079bacc37e9d54f28ce98a7c23bf81f2a3e3e7bbeeec38927ca739f423dee
+DIST opencascade-7.8.0.tar.gz 48428565 BLAKE2B 91253101072af27c94b82b82beed5c1f1d7460f4154600fba805c5b2d27976a4841b9a9dfab9e67706d02463b2c630c5b63d1f056e84c69c9c8eeaca7e7caebf SHA512 af176cbd105c49949282c16bb6e30f69167bc6c00a50e0ae69aea555815d47ac3c4540c233e596c5add7cb846c2b33d7be267d8e02472286e758b662b4a652ab
+DIST opencascade-dataset-7.7.0.tar.gz 128392200 BLAKE2B ebfbe6f24520144ca4a82e4ddd0486890552c2de1b62bf5c0d4990d777d4a1458dea54f8a6f08d8a0999582fb4325eda0002fc8a0137b9e66d024a47145d1279 SHA512 71d7e807b1d629fe7371b9d1d503024d00b7c1ae1775e62803eeffd127bd1c768e5240fdd1f949a237737089d528b5d4e43d26db025bbe14a4e0e4616ebdc5d8
+DIST opencascade-dataset-7.8.0.tar.xz 97049756 BLAKE2B aae5f076d9fc8a0d8a05028b0d9ffb527978e7acfdf5ecbc7e71c5ee3d6060cd7db9e56dba5b94a445bf5cf208126711cda70306607bdc5cd5e8b68df8fc150c SHA512 9b4c91d7b4743c47f2cf8d9a3b6ded73409a13133013424150ee9bdb61fd771c0b8799c7f31b459a7d2ba140399b9c0c972e2d0476188006361b4fb04042d990
+EBUILD opencascade-7.6.3-r2.ebuild 4690 BLAKE2B 8447a1b6c95c13c14a21bc58fbe82bb113e4d042e1034f66723f19eeddb558f8a243e77514c27ed53b0f220cb077d5bc91a8856f41a74d5fa396c16c3548e658 SHA512 d5821c186e2715fa7cea2b21f043b9c08c99de015789837b5e27a537c4a4017af0366752840d817b92506bea2d9bd2450fa6fca914c2e266001cde0cd483ebf4
+EBUILD opencascade-7.7.0-r2.ebuild 4838 BLAKE2B d0fba653700a337109b5c41c80b68560c2703b56592fc57d5f588e507f68637ff4db7938f91436e5e520799585044c97fc7c9fcc914b48114411a1a83d75c549 SHA512 c4d9522d65bd199a0fd4f5dddad91224c4fe7b2e383324f3a2fdf36c752c22ce7afc934cda38f9a558f6ce4a528688163b446e99ddc2c5a9e2ac4950b2f7d2fd
+EBUILD opencascade-7.7.1.ebuild 9410 BLAKE2B c29aafd2f1e7a7305b25fc2eeaa82ab2b337c78193f73d1838545368735b0b0628f0ff8b737d11363b16a3f55e78ebf48a34d8a0a08a4b4ccbe4cab562b2a232 SHA512 1bee8ef7ba89382d533510356d307d0f87b88af4dbf00be86124c146bfdcd1e82b7e179371c1154688c0069912f707bad5569118c59f4edf90f8f85fee5fc634
+EBUILD opencascade-7.7.2.ebuild 9410 BLAKE2B c29aafd2f1e7a7305b25fc2eeaa82ab2b337c78193f73d1838545368735b0b0628f0ff8b737d11363b16a3f55e78ebf48a34d8a0a08a4b4ccbe4cab562b2a232 SHA512 1bee8ef7ba89382d533510356d307d0f87b88af4dbf00be86124c146bfdcd1e82b7e179371c1154688c0069912f707bad5569118c59f4edf90f8f85fee5fc634
+EBUILD opencascade-7.8.0.ebuild 9373 BLAKE2B f4140665caaaa607bf22af4a3828944f69e7f74483dbaf768865e93e9127655427527e1f21bbaa6ec563a1da1eac94337885d5d4f60005980bdcc525f16f19fe SHA512 1940b0465b5023a6b53530fe25f832d653ecd06b95aacf33984ce76fc1df579eccade33889ffd2ee81bfed8839c82bb3977accef467a7173b2279ccbf7598752
+EBUILD opencascade-9999.ebuild 9373 BLAKE2B f4140665caaaa607bf22af4a3828944f69e7f74483dbaf768865e93e9127655427527e1f21bbaa6ec563a1da1eac94337885d5d4f60005980bdcc525f16f19fe SHA512 1940b0465b5023a6b53530fe25f832d653ecd06b95aacf33984ce76fc1df579eccade33889ffd2ee81bfed8839c82bb3977accef467a7173b2279ccbf7598752
+MISC metadata.xml 1377 BLAKE2B ca7101643c8e08017ec12840cecf9e852a5fcfa8e40f50589ce70b21e55bb4b61598689d15596ed132bba7f592fb9672fc14e559540deb6900709bcfc2dcfcc3 SHA512 a6c3e37cda18e3838f4277383a0067166cb14449905d6c1dd566f7d78064b9e20ac35acf3dadb75ef82f9a6a59f463f870e08ea7f501dadf6f06834606a3526d
diff --git a/sci-libs/opencascade/files/opencascade-7.7.0-jemalloc-lib-type.patch b/sci-libs/opencascade/files/opencascade-7.7.0-jemalloc-lib-type.patch
new file mode 100644
index 000000000000..c80d9946b7c6
--- /dev/null
+++ b/sci-libs/opencascade/files/opencascade-7.7.0-jemalloc-lib-type.patch
@@ -0,0 +1,27 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Only try to find the jemalloc libs we are going to use
+
+diff --git a/adm/cmake/jemalloc.cmake b/adm/cmake/jemalloc.cmake
+index b37d5d276..deef66d6c 100644
+--- a/adm/cmake/jemalloc.cmake
++++ b/adm/cmake/jemalloc.cmake
+@@ -128,6 +128,7 @@ endmacro()
+ # Reset CSF variable
+ set (CSF_MMGR "")
+
++if(BUILD_LIBRARY_TYPE EQUAL "Static")
+ # find static jemalloc lib
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a")
+ if (WIN32)
+@@ -137,7 +138,10 @@ elseif(NOT WIN32)
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES "" "so")
+ JEMALLOC_LIB_SEARCH ("jemalloc.so.2" "SHARED")
+ endif()
++endif()
+
++if(BUILD_LIBRARY_TYPE EQUAL "Shared")
+ # find shared jemalloc lib
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".so")
+ JEMALLOC_LIB_SEARCH ("jemalloc" "SHARED")
++endif()
diff --git a/sci-libs/opencascade/files/opencascade-7.8.0-cmake-min-version.patch b/sci-libs/opencascade/files/opencascade-7.8.0-cmake-min-version.patch
new file mode 100644
index 000000000000..b0a9d026f34e
--- /dev/null
+++ b/sci-libs/opencascade/files/opencascade-7.8.0-cmake-min-version.patch
@@ -0,0 +1,14 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Bump cmake minimum version to remove warning
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 88d34f0..232c643 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
++cmake_minimum_required (VERSION 3.5 FATAL_ERROR)
+
+ set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/adm/cmake")
+
diff --git a/sci-libs/opencascade/files/opencascade-7.8.0-tests.patch b/sci-libs/opencascade/files/opencascade-7.8.0-tests.patch
new file mode 100644
index 000000000000..cf45ca5ce246
--- /dev/null
+++ b/sci-libs/opencascade/files/opencascade-7.8.0-tests.patch
@@ -0,0 +1,19 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Fix test harness script
+
+diff --git a/adm/templates/draw.sh b/adm/templates/draw.sh
+index 02e6043..c7347e0 100755
+--- a/adm/templates/draw.sh
++++ b/adm/templates/draw.sh
+@@ -4,7 +4,8 @@ aCurrentPath="$PWD"
+ aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
+
+ source "${aScriptPath}/env.sh" "$1"
++shift
+
+ echo 'Hint: use "pload ALL" command to load standard commands'
+-cd ${aCurrentPath}
+-DRAWEXE
++cd "${aCurrentPath}"
++DRAWEXE "$@"
diff --git a/sci-libs/opencascade/metadata.xml b/sci-libs/opencascade/metadata.xml
index 482d7bde88bb..f3b6e96ad889 100644
--- a/sci-libs/opencascade/metadata.xml
+++ b/sci-libs/opencascade/metadata.xml
@@ -10,26 +10,17 @@
<name>Proxy Maintainers</name>
</maintainer>
<use>
- <flag name="eigen">
- Enable support for eigenvalues through the header-only
- <pkg>dev-cpp/eigen</pkg> package.
- </flag>
- <flag name="freeimage">
- Enable support for image i/o via <pkg>media-libs/freeimage</pkg>
- </flag>
- <flag name="json">
- Enable JSON support through <pkg>dev-libs/rapidjson</pkg>
- </flag>
- <flag name="optimize">
- Don't clear allocated memory. Use optimized memory manager unless
- tbb USE flag is set.
- </flag>
- <flag name="tbb">
- Enable multithreading with the Intel Threads Building Block
- <pkg>dev-cpp/tbb</pkg>
- </flag>
- <flag name="vtk">
- Enable Visualization Toolkit support via <pkg>sci-libs/vtk</pkg>
- </flag>
+ <flag name="eigen">Enable support for eigenvalues through the header-only <pkg>dev-cpp/eigen</pkg> package.</flag>
+ <flag name="freeimage">Enable support for image i/o via <pkg>media-libs/freeimage</pkg></flag>
+ <flag name="freetype">Enable <pkg>media-libs/freetype</pkg> support</flag>
+ <flag name="jemalloc">Enable jemalloc allocator support via <pkg>dev-libs/jemalloc</pkg></flag>
+ <flag name="json">Enable JSON support through <pkg>dev-libs/rapidjson</pkg></flag>
+ <flag name="optimize">Don't clear allocated memory. Use optimized memory manager unlesstbb USE flag is set.</flag>
+ <flag name="tbb">Enable multithreading with the Intel Threads Building Block <pkg>dev-cpp/tbb</pkg></flag>
+ <flag name="testprograms">Indicates whether non-regression OCCT test scripts should be installed</flag>
+ <flag name="vtk">Enable Visualization Toolkit support via <pkg>sci-libs/vtk</pkg></flag>
</use>
+<upstream>
+ <remote-id type="github">Open-Cascade-SAS/OCCT</remote-id>
+</upstream>
</pkgmetadata>
diff --git a/sci-libs/opencascade/opencascade-7.6.3-r2.ebuild b/sci-libs/opencascade/opencascade-7.6.3-r2.ebuild
index 25a8b78a8a7a..2e561ce32b79 100644
--- a/sci-libs/opencascade/opencascade-7.6.3-r2.ebuild
+++ b/sci-libs/opencascade/opencascade-7.6.3-r2.ebuild
@@ -27,7 +27,6 @@ RESTRICT="test"
# ffmpeg: https://dev.opencascade.org/content/build-error-when-compiling-against-ffmpeg-5
RDEPEND="
- !app-eselect/eselect-opencascade
dev-lang/tcl:=
dev-lang/tk:=
dev-tcltk/itcl
diff --git a/sci-libs/opencascade/opencascade-7.7.0-r2.ebuild b/sci-libs/opencascade/opencascade-7.7.0-r2.ebuild
index 31f9cb4cbfca..547ddb45705a 100644
--- a/sci-libs/opencascade/opencascade-7.7.0-r2.ebuild
+++ b/sci-libs/opencascade/opencascade-7.7.0-r2.ebuild
@@ -28,7 +28,6 @@ RESTRICT="test"
# ffmpeg: https://tracker.dev.opencascade.org/view.php?id=32871
RDEPEND="
- !app-eselect/eselect-opencascade
dev-lang/tcl:=
dev-lang/tk:=
media-libs/fontconfig
diff --git a/sci-libs/opencascade/opencascade-7.7.1.ebuild b/sci-libs/opencascade/opencascade-7.7.1.ebuild
new file mode 100644
index 000000000000..384a99eaaf44
--- /dev/null
+++ b/sci-libs/opencascade/opencascade-7.7.1.ebuild
@@ -0,0 +1,366 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake virtualx
+
+DESCRIPTION="Development platform for CAD/CAE, 3D surface/solid modeling and data exchange"
+HOMEPAGE="https://www.opencascade.com"
+
+MY_PN="OCCT"
+
+MY_TEST_PV="7.7.0"
+MY_TEST_PV2="${MY_TEST_PV//./_}"
+
+SRC_URI="
+ test? ( https://github.com/Open-Cascade-SAS/${MY_PN}/releases/download/V${MY_TEST_PV2}/${PN}-dataset-${MY_TEST_PV}.tgz
+ -> ${PN}-dataset-${MY_TEST_PV}.tar.gz )
+"
+
+if [[ ${PV} = *9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Open-Cascade-SAS/${MY_PN}.git"
+else
+ MY_PV="${PV//./_}"
+ SRC_URI+="
+ https://github.com/Open-Cascade-SAS/${MY_PN}/archive/refs/tags/V${MY_PV}.tar.gz -> ${P}.tar.gz
+ "
+ S="${WORKDIR}/${MY_PN}-${MY_PV}"
+ KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+fi
+
+LICENSE="|| ( Open-CASCADE-LGPL-2.1-Exception-1.0 LGPL-2.1 )"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="X debug doc examples ffmpeg freeimage freetype gles2-only +gui jemalloc json +opengl optimize tbb test testprograms tk vtk"
+
+REQUIRED_USE="
+ ?? ( optimize tbb )
+ ?? ( opengl gles2-only )
+ test? ( freeimage json opengl )
+"
+
+# There's no easy way to test. Testing needs a rather big environment properly set up.
+RESTRICT="!test? ( test )"
+
+# ffmpeg: https://tracker.dev.opencascade.org/view.php?id=32871
+RDEPEND="
+ dev-lang/tcl:=
+ tk? ( dev-lang/tk:= )
+ dev-libs/double-conversion
+ freetype? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ )
+ opengl? (
+ media-libs/libglvnd
+ )
+ X? (
+ x11-libs/libX11
+ )
+ gui? (
+ examples? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtquickcontrols2:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ )
+ )
+ ffmpeg? ( <media-video/ffmpeg-5:= )
+ freeimage? ( media-libs/freeimage )
+ jemalloc? ( dev-libs/jemalloc )
+ tbb? ( dev-cpp/tbb:= )
+ vtk? (
+ sci-libs/vtk:=[rendering]
+ tbb? (
+ sci-libs/vtk:=[tbb,-cuda]
+ )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ json? ( dev-libs/rapidjson )
+"
+BDEPEND="
+ doc? ( app-text/doxygen[dot] )
+ gui? (
+ examples? ( dev-qt/linguist-tools:5 )
+ )
+ test? ( dev-tcltk/thread )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-7.5.1-0005-fix-write-permissions-on-scripts.patch"
+ "${FILESDIR}/${PN}-7.5.1-0006-fix-creation-of-custom.sh-script.patch"
+ "${FILESDIR}/${PN}-7.7.0-fix-installation-of-cmake-config-files.patch"
+ "${FILESDIR}/${PN}-7.7.0-avoid-pre-stripping-binaries.patch"
+ "${FILESDIR}/${PN}-7.7.0-build-against-vtk-9.2.patch"
+ "${FILESDIR}/${PN}-7.7.0-musl.patch"
+ "${FILESDIR}/${PN}-7.7.0-jemalloc-lib-type.patch"
+ "${FILESDIR}/${PN}-7.8.0-cmake-min-version.patch"
+ "${FILESDIR}/${PN}-7.8.0-tests.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]] ; then
+ git-r3_src_unpack
+ else
+ unpack "${P}.tar.gz"
+ fi
+
+ if use test; then
+ mkdir "${WORKDIR}/data"
+ pushd "${WORKDIR}/data" > /dev/null || die
+ # should be in paths indicated by CSF_TestDataPath environment variable,
+ # or in subfolder data in the script directory
+ unpack "${PN}-dataset-${MY_TEST_PV}.tar.gz"
+ popd > /dev/null || die
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -e 's|/lib\$|/'"$(get_libdir)"'\$|' \
+ -i adm/templates/OpenCASCADEConfig.cmake.in || die
+
+ # There is an OCCT_UPDATE_TARGET_FILE cmake macro that fails due to some
+ # assumptions it makes about installation paths. Rather than fixing it, just
+ # get rid of the mechanism altogether - its purpose is to allow a
+ # side-by-side installation of release and debug libraries.
+ sed -e 's|\\${OCCT_INSTALL_BIN_LETTER}||' \
+ -i adm/cmake/occt_toolkit.cmake || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -D3RDPARTY_DIR="${ESYSROOT}/usr"
+ -DBUILD_CPP_STANDARD="C++17"
+ -DBUILD_SOVERSION_NUMBERS=2
+
+ -DBUILD_DOC_Overview="$(usex doc)"
+ -DBUILD_Inspector="$(usex gui)"
+
+ -DBUILD_ENABLE_FPE_SIGNAL_HANDLER="$(usex debug)"
+ -DBUILD_USE_PCH="no"
+ # -DBUILD_OPT_PROFILE="Default" # Production
+ # -DBUILD_RESOURCES="yes"
+ # -DBUILD_YACCLEX="yes"
+
+ -DBUILD_RELEASE_DISABLE_EXCEPTIONS="no" # bug #847916
+ -DINSTALL_DIR="${EPREFIX}/usr"
+ -DINSTALL_DIR_BIN="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_CMAKE="$(get_libdir)/cmake/${PN}"
+ -DINSTALL_DIR_DATA="share/${PN}/data"
+ -DINSTALL_DIR_DOC="share/doc/${PF}"
+ -DINSTALL_DIR_INCLUDE="include/${PN}"
+ -DINSTALL_DIR_LIB="$(get_libdir)/${PN}"
+ -DINSTALL_DIR_RESOURCE="share/${PN}/resources"
+ -DINSTALL_DIR_SAMPLES="share/${PN}/samples"
+ -DINSTALL_DIR_SCRIPT="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_TESTS="share/${PN}/tests"
+ -DINSTALL_DIR_WITH_VERSION="no"
+ -DINSTALL_SAMPLES="$(usex examples)"
+
+ -DINSTALL_TEST_CASES="$(usex testprograms)"
+
+ # no package yet in tree
+ -DUSE_DRACO="no"
+ -DUSE_FFMPEG="$(usex ffmpeg)"
+ -DUSE_FREEIMAGE="$(usex freeimage)"
+ -DUSE_FREETYPE="$(usex freetype)"
+ # Indicates whether OpenGL ES 2.0 should be used in OCCT visualization module
+ -DUSE_GLES2="$(usex gles2-only)"
+ # Indicates whether OpenGL desktop should be used in OCCT visualization module
+ -DUSE_OPENGL="$(usex opengl)"
+ # no package in tree
+ -DUSE_OPENVR="no"
+ -DUSE_RAPIDJSON="$(usex json)"
+ -DUSE_TBB="$(usex tbb)"
+ -DUSE_TK="$(usex tk)"
+ -DUSE_VTK="$(usex vtk)"
+ -DUSE_XLIB="$(usex X)"
+ )
+
+ # Select using memory manager tool.
+ if ! use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=NATIVE )
+ elif use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=JEMALLOC )
+ elif ! use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=TBB )
+ elif use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=FLEXIBLE )
+ fi
+
+ if use doc; then
+ mycmakeargs+=(
+ -DINSTALL_DOC_Overview="yes"
+ -D3RDPARTY_SKIP_DOT_EXECUTABLE="no"
+ )
+ fi
+
+ if use gui; then
+ mycmakeargs+=(
+ -D3RDPARTY_QT_DIR="${ESYSROOT}/usr"
+ -DBUILD_SAMPLES_QT="$(usex examples)"
+ )
+ fi
+
+ if use jemalloc; then
+ mycmakeargs+=(
+ -D3RDPARTY_JEMALLOC_INCLUDE_DIR="${ESYSROOT}/usr/include/jemalloc"
+ )
+ fi
+
+ if use tbb; then
+ mycmakeargs+=(
+ -D3RDPARTY_TBB_DIR="${ESYSROOT}/usr"
+ )
+ fi
+
+ if use vtk; then
+ local vtk_ver
+ vtk_ver="$(best_version "sci-libs/vtk")"
+ vtk_ver=$(ver_cut 1-2 "${vtk_ver#sci-libs/vtk-}")
+ mycmakeargs+=(
+ -D3RDPARTY_VTK_INCLUDE_DIR="${ESYSROOT}/usr/include/vtk-${vtk_ver}"
+ -D3RDPARTY_VTK_LIBRARY_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ )
+ fi
+
+ cmake_src_configure
+
+ sed -e "s|lib/|$(get_libdir)/|" \
+ -e "s|VAR_CASROOT|${EPREFIX}/usr|" \
+ < "${FILESDIR}/${PN}.env.in" > "${T}/99${PN}" || die
+
+ # use TBB for memory allocation optimizations
+ if use tbb; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=2|' -i "${T}/99${PN}" || die
+ fi
+
+ # use internal optimized memory manager and don't clear memory with this
+ # memory manager.
+ if use optimize ; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=1|' \
+ -e 's|^#MMGT_CLEAR=1$|MMGT_CLEAR=0|' \
+ -i "${T}/99${PN}" || die
+ fi
+}
+
+src_test() {
+ echo "export CSF_OCCTDataPath=${WORKDIR}/data" >> "${BUILD_DIR}/custom.sh" || die
+
+ if has_version media-fonts/dejavu; then
+ cp "${ESYSROOT}/usr/share/fonts/dejavu/DejaVuSans.ttf" "${WORKDIR}/data/" # no die here as this isn't fatal
+ fi
+
+ local test_file=${T}/testscript.tcl
+
+ local draw_opts=(
+ i # see ${BUILD_DIR}/custom*.sh
+ # -b # batch mode (no GUI, no viewers)
+ -v # no GUI, use virtual (off-screen) windows for viewers
+ )
+
+ local test_names=(
+ "demo draw bug30430" # prone to dying due to cpu limit
+ )
+ local test_opts=( # run single tests
+ -overwrite
+ )
+ for test_name in "${test_names[@]}"; do
+ cat >> "${test_file}" <<- _EOF_ || die
+ test ${test_name} -outfile "${BUILD_DIR}/test_results/${test_name// /\/}.html" ${test_opts[@]}
+ _EOF_
+ done
+
+ local testgrid_opts=()
+
+ local SKIP_TESTS=()
+
+ if [[ "${OCCT_OPTIONAL_TESTS}" != "true" ]]; then
+ SKIP_TESTS+=(
+ 'blend complex F4'
+ 'bugs'
+ 'geometry circ2d3Tan '{CircleCircleLin_11,CircleLinPoint_11}
+ 'heal checkshape bug32448_1'
+ 'hlr exact_hlr bug25813_2'
+
+ 'hlr poly_hlr '{bug25813_2,bug25813_3,bug25813_4,Plate}
+ 'lowalgos intss bug'{565,567_1,25950,27431,29807_i1003,29807_i2006,29807_i3003,29807_i5002,30703}
+ 'lowalgos proximity '{A4,A5}
+ 'opengl background bug27836'
+ 'opengl drivers opengles'
+ 'opengles3'
+
+ 'demo draw bug30430'
+ )
+
+ local DEL_TESTS=(
+ 'opengl/data/background/bug27836'
+ 'perf/mesh/bug26965'
+ 'v3d/trsf/bug26029'
+ )
+
+ for test in "${DEL_TESTS[@]}"; do
+ rm "${CMAKE_USE_DIR}/tests/${test}" || die
+ done
+ fi
+
+ if ! use vtk; then
+ SKIP_TESTS+=(
+ 'vtk'
+ )
+ echo "IGNORE /Could not open: libTKIVtkDraw/skip VTK" >> "${CMAKE_USE_DIR}/tests/opengl/parse.rules"
+ fi
+
+ if [[ -n "${SKIP_TESTS[*]}" ]]; then
+ testgrid_opts+=( -exclude "$(IFS=',' ; echo "${SKIP_TESTS[*]}")" )
+ fi
+
+ testgrid_opts+=(
+ # -refresh 5
+ -overwrite
+ )
+ cat >> "${test_file}" <<- _EOF_ || die
+ testgrid -outdir "${BUILD_DIR}/test_results" ${testgrid_opts[@]}
+ _EOF_
+
+ # # regenerate summary in case we have to
+ # cat >> "${test_file}" <<- _EOF_ || die
+ # testsummarize "${BUILD_DIR}/test_results"
+ # _EOF_
+
+ # Work around zink warnings
+ export LIBGL_ALWAYS_SOFTWARE="true"
+
+ export CASROOT="${BUILD_DIR}"
+
+ virtx \
+ "${BUILD_DIR}/draw.sh" \
+ "${draw_opts[@]}" \
+ -f "${test_file}"
+
+ if [[ ! -f "${BUILD_DIR}/test_results/tests.log" ]]; then
+ eerror "tests never ran!"
+ die
+ fi
+ failed_tests="$(grep ": FAILED" "${BUILD_DIR}/test_results/tests.log")"
+ if [[ -n ${failed_tests} ]]; then
+ eerror "Failed tests:"
+ eerror "${failed_tests}"
+ die
+ fi
+}
+
+src_install() {
+ cmake_src_install
+
+ doenvd "${T}/99${PN}"
+
+ docompress -x "/usr/share/doc/${PF}/overview/html"
+}
diff --git a/sci-libs/opencascade/opencascade-7.7.2.ebuild b/sci-libs/opencascade/opencascade-7.7.2.ebuild
new file mode 100644
index 000000000000..384a99eaaf44
--- /dev/null
+++ b/sci-libs/opencascade/opencascade-7.7.2.ebuild
@@ -0,0 +1,366 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake virtualx
+
+DESCRIPTION="Development platform for CAD/CAE, 3D surface/solid modeling and data exchange"
+HOMEPAGE="https://www.opencascade.com"
+
+MY_PN="OCCT"
+
+MY_TEST_PV="7.7.0"
+MY_TEST_PV2="${MY_TEST_PV//./_}"
+
+SRC_URI="
+ test? ( https://github.com/Open-Cascade-SAS/${MY_PN}/releases/download/V${MY_TEST_PV2}/${PN}-dataset-${MY_TEST_PV}.tgz
+ -> ${PN}-dataset-${MY_TEST_PV}.tar.gz )
+"
+
+if [[ ${PV} = *9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Open-Cascade-SAS/${MY_PN}.git"
+else
+ MY_PV="${PV//./_}"
+ SRC_URI+="
+ https://github.com/Open-Cascade-SAS/${MY_PN}/archive/refs/tags/V${MY_PV}.tar.gz -> ${P}.tar.gz
+ "
+ S="${WORKDIR}/${MY_PN}-${MY_PV}"
+ KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+fi
+
+LICENSE="|| ( Open-CASCADE-LGPL-2.1-Exception-1.0 LGPL-2.1 )"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="X debug doc examples ffmpeg freeimage freetype gles2-only +gui jemalloc json +opengl optimize tbb test testprograms tk vtk"
+
+REQUIRED_USE="
+ ?? ( optimize tbb )
+ ?? ( opengl gles2-only )
+ test? ( freeimage json opengl )
+"
+
+# There's no easy way to test. Testing needs a rather big environment properly set up.
+RESTRICT="!test? ( test )"
+
+# ffmpeg: https://tracker.dev.opencascade.org/view.php?id=32871
+RDEPEND="
+ dev-lang/tcl:=
+ tk? ( dev-lang/tk:= )
+ dev-libs/double-conversion
+ freetype? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ )
+ opengl? (
+ media-libs/libglvnd
+ )
+ X? (
+ x11-libs/libX11
+ )
+ gui? (
+ examples? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtquickcontrols2:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ )
+ )
+ ffmpeg? ( <media-video/ffmpeg-5:= )
+ freeimage? ( media-libs/freeimage )
+ jemalloc? ( dev-libs/jemalloc )
+ tbb? ( dev-cpp/tbb:= )
+ vtk? (
+ sci-libs/vtk:=[rendering]
+ tbb? (
+ sci-libs/vtk:=[tbb,-cuda]
+ )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ json? ( dev-libs/rapidjson )
+"
+BDEPEND="
+ doc? ( app-text/doxygen[dot] )
+ gui? (
+ examples? ( dev-qt/linguist-tools:5 )
+ )
+ test? ( dev-tcltk/thread )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-7.5.1-0005-fix-write-permissions-on-scripts.patch"
+ "${FILESDIR}/${PN}-7.5.1-0006-fix-creation-of-custom.sh-script.patch"
+ "${FILESDIR}/${PN}-7.7.0-fix-installation-of-cmake-config-files.patch"
+ "${FILESDIR}/${PN}-7.7.0-avoid-pre-stripping-binaries.patch"
+ "${FILESDIR}/${PN}-7.7.0-build-against-vtk-9.2.patch"
+ "${FILESDIR}/${PN}-7.7.0-musl.patch"
+ "${FILESDIR}/${PN}-7.7.0-jemalloc-lib-type.patch"
+ "${FILESDIR}/${PN}-7.8.0-cmake-min-version.patch"
+ "${FILESDIR}/${PN}-7.8.0-tests.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]] ; then
+ git-r3_src_unpack
+ else
+ unpack "${P}.tar.gz"
+ fi
+
+ if use test; then
+ mkdir "${WORKDIR}/data"
+ pushd "${WORKDIR}/data" > /dev/null || die
+ # should be in paths indicated by CSF_TestDataPath environment variable,
+ # or in subfolder data in the script directory
+ unpack "${PN}-dataset-${MY_TEST_PV}.tar.gz"
+ popd > /dev/null || die
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -e 's|/lib\$|/'"$(get_libdir)"'\$|' \
+ -i adm/templates/OpenCASCADEConfig.cmake.in || die
+
+ # There is an OCCT_UPDATE_TARGET_FILE cmake macro that fails due to some
+ # assumptions it makes about installation paths. Rather than fixing it, just
+ # get rid of the mechanism altogether - its purpose is to allow a
+ # side-by-side installation of release and debug libraries.
+ sed -e 's|\\${OCCT_INSTALL_BIN_LETTER}||' \
+ -i adm/cmake/occt_toolkit.cmake || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -D3RDPARTY_DIR="${ESYSROOT}/usr"
+ -DBUILD_CPP_STANDARD="C++17"
+ -DBUILD_SOVERSION_NUMBERS=2
+
+ -DBUILD_DOC_Overview="$(usex doc)"
+ -DBUILD_Inspector="$(usex gui)"
+
+ -DBUILD_ENABLE_FPE_SIGNAL_HANDLER="$(usex debug)"
+ -DBUILD_USE_PCH="no"
+ # -DBUILD_OPT_PROFILE="Default" # Production
+ # -DBUILD_RESOURCES="yes"
+ # -DBUILD_YACCLEX="yes"
+
+ -DBUILD_RELEASE_DISABLE_EXCEPTIONS="no" # bug #847916
+ -DINSTALL_DIR="${EPREFIX}/usr"
+ -DINSTALL_DIR_BIN="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_CMAKE="$(get_libdir)/cmake/${PN}"
+ -DINSTALL_DIR_DATA="share/${PN}/data"
+ -DINSTALL_DIR_DOC="share/doc/${PF}"
+ -DINSTALL_DIR_INCLUDE="include/${PN}"
+ -DINSTALL_DIR_LIB="$(get_libdir)/${PN}"
+ -DINSTALL_DIR_RESOURCE="share/${PN}/resources"
+ -DINSTALL_DIR_SAMPLES="share/${PN}/samples"
+ -DINSTALL_DIR_SCRIPT="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_TESTS="share/${PN}/tests"
+ -DINSTALL_DIR_WITH_VERSION="no"
+ -DINSTALL_SAMPLES="$(usex examples)"
+
+ -DINSTALL_TEST_CASES="$(usex testprograms)"
+
+ # no package yet in tree
+ -DUSE_DRACO="no"
+ -DUSE_FFMPEG="$(usex ffmpeg)"
+ -DUSE_FREEIMAGE="$(usex freeimage)"
+ -DUSE_FREETYPE="$(usex freetype)"
+ # Indicates whether OpenGL ES 2.0 should be used in OCCT visualization module
+ -DUSE_GLES2="$(usex gles2-only)"
+ # Indicates whether OpenGL desktop should be used in OCCT visualization module
+ -DUSE_OPENGL="$(usex opengl)"
+ # no package in tree
+ -DUSE_OPENVR="no"
+ -DUSE_RAPIDJSON="$(usex json)"
+ -DUSE_TBB="$(usex tbb)"
+ -DUSE_TK="$(usex tk)"
+ -DUSE_VTK="$(usex vtk)"
+ -DUSE_XLIB="$(usex X)"
+ )
+
+ # Select using memory manager tool.
+ if ! use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=NATIVE )
+ elif use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=JEMALLOC )
+ elif ! use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=TBB )
+ elif use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=FLEXIBLE )
+ fi
+
+ if use doc; then
+ mycmakeargs+=(
+ -DINSTALL_DOC_Overview="yes"
+ -D3RDPARTY_SKIP_DOT_EXECUTABLE="no"
+ )
+ fi
+
+ if use gui; then
+ mycmakeargs+=(
+ -D3RDPARTY_QT_DIR="${ESYSROOT}/usr"
+ -DBUILD_SAMPLES_QT="$(usex examples)"
+ )
+ fi
+
+ if use jemalloc; then
+ mycmakeargs+=(
+ -D3RDPARTY_JEMALLOC_INCLUDE_DIR="${ESYSROOT}/usr/include/jemalloc"
+ )
+ fi
+
+ if use tbb; then
+ mycmakeargs+=(
+ -D3RDPARTY_TBB_DIR="${ESYSROOT}/usr"
+ )
+ fi
+
+ if use vtk; then
+ local vtk_ver
+ vtk_ver="$(best_version "sci-libs/vtk")"
+ vtk_ver=$(ver_cut 1-2 "${vtk_ver#sci-libs/vtk-}")
+ mycmakeargs+=(
+ -D3RDPARTY_VTK_INCLUDE_DIR="${ESYSROOT}/usr/include/vtk-${vtk_ver}"
+ -D3RDPARTY_VTK_LIBRARY_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ )
+ fi
+
+ cmake_src_configure
+
+ sed -e "s|lib/|$(get_libdir)/|" \
+ -e "s|VAR_CASROOT|${EPREFIX}/usr|" \
+ < "${FILESDIR}/${PN}.env.in" > "${T}/99${PN}" || die
+
+ # use TBB for memory allocation optimizations
+ if use tbb; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=2|' -i "${T}/99${PN}" || die
+ fi
+
+ # use internal optimized memory manager and don't clear memory with this
+ # memory manager.
+ if use optimize ; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=1|' \
+ -e 's|^#MMGT_CLEAR=1$|MMGT_CLEAR=0|' \
+ -i "${T}/99${PN}" || die
+ fi
+}
+
+src_test() {
+ echo "export CSF_OCCTDataPath=${WORKDIR}/data" >> "${BUILD_DIR}/custom.sh" || die
+
+ if has_version media-fonts/dejavu; then
+ cp "${ESYSROOT}/usr/share/fonts/dejavu/DejaVuSans.ttf" "${WORKDIR}/data/" # no die here as this isn't fatal
+ fi
+
+ local test_file=${T}/testscript.tcl
+
+ local draw_opts=(
+ i # see ${BUILD_DIR}/custom*.sh
+ # -b # batch mode (no GUI, no viewers)
+ -v # no GUI, use virtual (off-screen) windows for viewers
+ )
+
+ local test_names=(
+ "demo draw bug30430" # prone to dying due to cpu limit
+ )
+ local test_opts=( # run single tests
+ -overwrite
+ )
+ for test_name in "${test_names[@]}"; do
+ cat >> "${test_file}" <<- _EOF_ || die
+ test ${test_name} -outfile "${BUILD_DIR}/test_results/${test_name// /\/}.html" ${test_opts[@]}
+ _EOF_
+ done
+
+ local testgrid_opts=()
+
+ local SKIP_TESTS=()
+
+ if [[ "${OCCT_OPTIONAL_TESTS}" != "true" ]]; then
+ SKIP_TESTS+=(
+ 'blend complex F4'
+ 'bugs'
+ 'geometry circ2d3Tan '{CircleCircleLin_11,CircleLinPoint_11}
+ 'heal checkshape bug32448_1'
+ 'hlr exact_hlr bug25813_2'
+
+ 'hlr poly_hlr '{bug25813_2,bug25813_3,bug25813_4,Plate}
+ 'lowalgos intss bug'{565,567_1,25950,27431,29807_i1003,29807_i2006,29807_i3003,29807_i5002,30703}
+ 'lowalgos proximity '{A4,A5}
+ 'opengl background bug27836'
+ 'opengl drivers opengles'
+ 'opengles3'
+
+ 'demo draw bug30430'
+ )
+
+ local DEL_TESTS=(
+ 'opengl/data/background/bug27836'
+ 'perf/mesh/bug26965'
+ 'v3d/trsf/bug26029'
+ )
+
+ for test in "${DEL_TESTS[@]}"; do
+ rm "${CMAKE_USE_DIR}/tests/${test}" || die
+ done
+ fi
+
+ if ! use vtk; then
+ SKIP_TESTS+=(
+ 'vtk'
+ )
+ echo "IGNORE /Could not open: libTKIVtkDraw/skip VTK" >> "${CMAKE_USE_DIR}/tests/opengl/parse.rules"
+ fi
+
+ if [[ -n "${SKIP_TESTS[*]}" ]]; then
+ testgrid_opts+=( -exclude "$(IFS=',' ; echo "${SKIP_TESTS[*]}")" )
+ fi
+
+ testgrid_opts+=(
+ # -refresh 5
+ -overwrite
+ )
+ cat >> "${test_file}" <<- _EOF_ || die
+ testgrid -outdir "${BUILD_DIR}/test_results" ${testgrid_opts[@]}
+ _EOF_
+
+ # # regenerate summary in case we have to
+ # cat >> "${test_file}" <<- _EOF_ || die
+ # testsummarize "${BUILD_DIR}/test_results"
+ # _EOF_
+
+ # Work around zink warnings
+ export LIBGL_ALWAYS_SOFTWARE="true"
+
+ export CASROOT="${BUILD_DIR}"
+
+ virtx \
+ "${BUILD_DIR}/draw.sh" \
+ "${draw_opts[@]}" \
+ -f "${test_file}"
+
+ if [[ ! -f "${BUILD_DIR}/test_results/tests.log" ]]; then
+ eerror "tests never ran!"
+ die
+ fi
+ failed_tests="$(grep ": FAILED" "${BUILD_DIR}/test_results/tests.log")"
+ if [[ -n ${failed_tests} ]]; then
+ eerror "Failed tests:"
+ eerror "${failed_tests}"
+ die
+ fi
+}
+
+src_install() {
+ cmake_src_install
+
+ doenvd "${T}/99${PN}"
+
+ docompress -x "/usr/share/doc/${PF}/overview/html"
+}
diff --git a/sci-libs/opencascade/opencascade-7.8.0.ebuild b/sci-libs/opencascade/opencascade-7.8.0.ebuild
new file mode 100644
index 000000000000..2f819b1746e8
--- /dev/null
+++ b/sci-libs/opencascade/opencascade-7.8.0.ebuild
@@ -0,0 +1,365 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake virtualx
+
+DESCRIPTION="Development platform for CAD/CAE, 3D surface/solid modeling and data exchange"
+HOMEPAGE="https://www.opencascade.com"
+
+MY_PN="OCCT"
+
+MY_TEST_PV="7.8.0"
+MY_TEST_PV2="${MY_TEST_PV//./_}"
+
+SRC_URI="
+ test? ( https://github.com/Open-Cascade-SAS/${MY_PN}/releases/download/V${MY_TEST_PV2}/${PN}-dataset-${MY_TEST_PV}.tar.xz )
+"
+
+if [[ ${PV} = *9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Open-Cascade-SAS/${MY_PN}.git"
+else
+ MY_PV="${PV//./_}"
+ SRC_URI+="
+ https://github.com/Open-Cascade-SAS/${MY_PN}/archive/refs/tags/V${MY_PV}.tar.gz -> ${P}.tar.gz
+ "
+ S="${WORKDIR}/${MY_PN}-${MY_PV}"
+ KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+fi
+
+LICENSE="|| ( Open-CASCADE-LGPL-2.1-Exception-1.0 LGPL-2.1 )"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="X debug doc examples ffmpeg freeimage freetype gles2-only +gui jemalloc json +opengl optimize tbb test testprograms tk vtk"
+
+REQUIRED_USE="
+ ?? ( optimize tbb )
+ ?? ( opengl gles2-only )
+ test? ( freeimage json opengl )
+"
+
+# There's no easy way to test. Testing needs a rather big environment properly set up.
+RESTRICT="!test? ( test )"
+
+# ffmpeg: https://tracker.dev.opencascade.org/view.php?id=32871
+RDEPEND="
+ dev-lang/tcl:=
+ tk? ( dev-lang/tk:= )
+ dev-libs/double-conversion
+ freetype? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ )
+ opengl? (
+ media-libs/libglvnd
+ )
+ X? (
+ x11-libs/libX11
+ )
+ gui? (
+ examples? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtquickcontrols2:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ )
+ )
+ ffmpeg? ( <media-video/ffmpeg-5:= )
+ freeimage? ( media-libs/freeimage )
+ jemalloc? ( dev-libs/jemalloc )
+ tbb? ( dev-cpp/tbb:= )
+ vtk? (
+ sci-libs/vtk:=[rendering]
+ tbb? (
+ sci-libs/vtk:=[tbb,-cuda]
+ )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ json? ( dev-libs/rapidjson )
+"
+BDEPEND="
+ doc? ( app-text/doxygen[dot] )
+ gui? (
+ examples? ( dev-qt/linguist-tools:5 )
+ )
+ test? ( dev-tcltk/thread )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-7.5.1-0005-fix-write-permissions-on-scripts.patch"
+ "${FILESDIR}/${PN}-7.5.1-0006-fix-creation-of-custom.sh-script.patch"
+ "${FILESDIR}/${PN}-7.7.0-fix-installation-of-cmake-config-files.patch"
+ "${FILESDIR}/${PN}-7.7.0-avoid-pre-stripping-binaries.patch"
+ "${FILESDIR}/${PN}-7.7.0-build-against-vtk-9.2.patch"
+ "${FILESDIR}/${PN}-7.7.0-musl.patch"
+ "${FILESDIR}/${PN}-7.7.0-jemalloc-lib-type.patch"
+ "${FILESDIR}/${PN}-7.8.0-cmake-min-version.patch"
+ "${FILESDIR}/${PN}-7.8.0-tests.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]] ; then
+ git-r3_src_unpack
+ else
+ unpack "${P}.tar.gz"
+ fi
+
+ if use test; then
+ mkdir "${WORKDIR}/data"
+ pushd "${WORKDIR}/data" > /dev/null || die
+ # should be in paths indicated by CSF_TestDataPath environment variable,
+ # or in subfolder data in the script directory
+ unpack "${PN}-dataset-${MY_TEST_PV}.tar.xz"
+ popd > /dev/null || die
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -e 's|/lib\$|/'"$(get_libdir)"'\$|' \
+ -i adm/templates/OpenCASCADEConfig.cmake.in || die
+
+ # There is an OCCT_UPDATE_TARGET_FILE cmake macro that fails due to some
+ # assumptions it makes about installation paths. Rather than fixing it, just
+ # get rid of the mechanism altogether - its purpose is to allow a
+ # side-by-side installation of release and debug libraries.
+ sed -e 's|\\${OCCT_INSTALL_BIN_LETTER}||' \
+ -i adm/cmake/occt_toolkit.cmake || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -D3RDPARTY_DIR="${ESYSROOT}/usr"
+ -DBUILD_CPP_STANDARD="C++17"
+ -DBUILD_SOVERSION_NUMBERS=2
+
+ -DBUILD_DOC_Overview="$(usex doc)"
+ -DBUILD_Inspector="$(usex gui)"
+
+ -DBUILD_ENABLE_FPE_SIGNAL_HANDLER="$(usex debug)"
+ -DBUILD_USE_PCH="no"
+ # -DBUILD_OPT_PROFILE="Default" # Production
+ # -DBUILD_RESOURCES="yes"
+ # -DBUILD_YACCLEX="yes"
+
+ -DBUILD_RELEASE_DISABLE_EXCEPTIONS="no" # bug #847916
+ -DINSTALL_DIR="${EPREFIX}/usr"
+ -DINSTALL_DIR_BIN="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_CMAKE="$(get_libdir)/cmake/${PN}"
+ -DINSTALL_DIR_DATA="share/${PN}/data"
+ -DINSTALL_DIR_DOC="share/doc/${PF}"
+ -DINSTALL_DIR_INCLUDE="include/${PN}"
+ -DINSTALL_DIR_LIB="$(get_libdir)/${PN}"
+ -DINSTALL_DIR_RESOURCE="share/${PN}/resources"
+ -DINSTALL_DIR_SAMPLES="share/${PN}/samples"
+ -DINSTALL_DIR_SCRIPT="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_TESTS="share/${PN}/tests"
+ -DINSTALL_DIR_WITH_VERSION="no"
+ -DINSTALL_SAMPLES="$(usex examples)"
+
+ -DINSTALL_TEST_CASES="$(usex testprograms)"
+
+ # no package yet in tree
+ -DUSE_DRACO="no"
+ -DUSE_FFMPEG="$(usex ffmpeg)"
+ -DUSE_FREEIMAGE="$(usex freeimage)"
+ -DUSE_FREETYPE="$(usex freetype)"
+ # Indicates whether OpenGL ES 2.0 should be used in OCCT visualization module
+ -DUSE_GLES2="$(usex gles2-only)"
+ # Indicates whether OpenGL desktop should be used in OCCT visualization module
+ -DUSE_OPENGL="$(usex opengl)"
+ # no package in tree
+ -DUSE_OPENVR="no"
+ -DUSE_RAPIDJSON="$(usex json)"
+ -DUSE_TBB="$(usex tbb)"
+ -DUSE_TK="$(usex tk)"
+ -DUSE_VTK="$(usex vtk)"
+ -DUSE_XLIB="$(usex X)"
+ )
+
+ # Select using memory manager tool.
+ if ! use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=NATIVE )
+ elif use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=JEMALLOC )
+ elif ! use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=TBB )
+ elif use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=FLEXIBLE )
+ fi
+
+ if use doc; then
+ mycmakeargs+=(
+ -DINSTALL_DOC_Overview="yes"
+ -D3RDPARTY_SKIP_DOT_EXECUTABLE="no"
+ )
+ fi
+
+ if use gui; then
+ mycmakeargs+=(
+ -D3RDPARTY_QT_DIR="${ESYSROOT}/usr"
+ -DBUILD_SAMPLES_QT="$(usex examples)"
+ )
+ fi
+
+ if use jemalloc; then
+ mycmakeargs+=(
+ -D3RDPARTY_JEMALLOC_INCLUDE_DIR="${ESYSROOT}/usr/include/jemalloc"
+ )
+ fi
+
+ if use tbb; then
+ mycmakeargs+=(
+ -D3RDPARTY_TBB_DIR="${ESYSROOT}/usr"
+ )
+ fi
+
+ if use vtk; then
+ local vtk_ver
+ vtk_ver="$(best_version "sci-libs/vtk")"
+ vtk_ver=$(ver_cut 1-2 "${vtk_ver#sci-libs/vtk-}")
+ mycmakeargs+=(
+ -D3RDPARTY_VTK_INCLUDE_DIR="${ESYSROOT}/usr/include/vtk-${vtk_ver}"
+ -D3RDPARTY_VTK_LIBRARY_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ )
+ fi
+
+ cmake_src_configure
+
+ sed -e "s|lib/|$(get_libdir)/|" \
+ -e "s|VAR_CASROOT|${EPREFIX}/usr|" \
+ < "${FILESDIR}/${PN}.env.in" > "${T}/99${PN}" || die
+
+ # use TBB for memory allocation optimizations
+ if use tbb; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=2|' -i "${T}/99${PN}" || die
+ fi
+
+ # use internal optimized memory manager and don't clear memory with this
+ # memory manager.
+ if use optimize ; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=1|' \
+ -e 's|^#MMGT_CLEAR=1$|MMGT_CLEAR=0|' \
+ -i "${T}/99${PN}" || die
+ fi
+}
+
+src_test() {
+ echo "export CSF_OCCTDataPath=${WORKDIR}/data" >> "${BUILD_DIR}/custom.sh" || die
+
+ if has_version media-fonts/dejavu; then
+ cp "${ESYSROOT}/usr/share/fonts/dejavu/DejaVuSans.ttf" "${WORKDIR}/data/" # no die here as this isn't fatal
+ fi
+
+ local test_file=${T}/testscript.tcl
+
+ local draw_opts=(
+ i # see ${BUILD_DIR}/custom*.sh
+ # -b # batch mode (no GUI, no viewers)
+ -v # no GUI, use virtual (off-screen) windows for viewers
+ )
+
+ local test_names=(
+ "demo draw bug30430" # prone to dying due to cpu limit
+ )
+ local test_opts=( # run single tests
+ -overwrite
+ )
+ for test_name in "${test_names[@]}"; do
+ cat >> "${test_file}" <<- _EOF_ || die
+ test ${test_name} -outfile "${BUILD_DIR}/test_results/${test_name// /\/}.html" ${test_opts[@]}
+ _EOF_
+ done
+
+ local testgrid_opts=()
+
+ local SKIP_TESTS=()
+
+ if [[ "${OCCT_OPTIONAL_TESTS}" != "true" ]]; then
+ SKIP_TESTS+=(
+ 'blend complex F4'
+ 'bugs'
+ 'geometry circ2d3Tan '{CircleCircleLin_11,CircleLinPoint_11}
+ 'heal checkshape bug32448_1'
+ 'hlr exact_hlr bug25813_2'
+
+ 'hlr poly_hlr '{bug25813_2,bug25813_3,bug25813_4,Plate}
+ 'lowalgos intss bug'{565,567_1,25950,27431,29807_i1003,29807_i2006,29807_i3003,29807_i5002,30703}
+ 'lowalgos proximity '{A4,A5}
+ 'opengl background bug27836'
+ 'opengl drivers opengles'
+ 'opengles3'
+
+ 'demo draw bug30430'
+ )
+
+ local DEL_TESTS=(
+ 'opengl/data/background/bug27836'
+ 'perf/mesh/bug26965'
+ 'v3d/trsf/bug26029'
+ )
+
+ for test in "${DEL_TESTS[@]}"; do
+ rm "${CMAKE_USE_DIR}/tests/${test}" || die
+ done
+ fi
+
+ if ! use vtk; then
+ SKIP_TESTS+=(
+ 'vtk'
+ )
+ echo "IGNORE /Could not open: libTKIVtkDraw/skip VTK" >> "${CMAKE_USE_DIR}/tests/opengl/parse.rules"
+ fi
+
+ if [[ -n "${SKIP_TESTS[*]}" ]]; then
+ testgrid_opts+=( -exclude "$(IFS=',' ; echo "${SKIP_TESTS[*]}")" )
+ fi
+
+ testgrid_opts+=(
+ # -refresh 5
+ -overwrite
+ )
+ cat >> "${test_file}" <<- _EOF_ || die
+ testgrid -outdir "${BUILD_DIR}/test_results" ${testgrid_opts[@]}
+ _EOF_
+
+ # # regenerate summary in case we have to
+ # cat >> "${test_file}" <<- _EOF_ || die
+ # testsummarize "${BUILD_DIR}/test_results"
+ # _EOF_
+
+ # Work around zink warnings
+ export LIBGL_ALWAYS_SOFTWARE="true"
+
+ export CASROOT="${BUILD_DIR}"
+
+ virtx \
+ "${BUILD_DIR}/draw.sh" \
+ "${draw_opts[@]}" \
+ -f "${test_file}"
+
+ if [[ ! -f "${BUILD_DIR}/test_results/tests.log" ]]; then
+ eerror "tests never ran!"
+ die
+ fi
+ failed_tests="$(grep ": FAILED" "${BUILD_DIR}/test_results/tests.log")"
+ if [[ -n ${failed_tests} ]]; then
+ eerror "Failed tests:"
+ eerror "${failed_tests}"
+ die
+ fi
+}
+
+src_install() {
+ cmake_src_install
+
+ doenvd "${T}/99${PN}"
+
+ docompress -x "/usr/share/doc/${PF}/overview/html"
+}
diff --git a/sci-libs/opencascade/opencascade-9999.ebuild b/sci-libs/opencascade/opencascade-9999.ebuild
new file mode 100644
index 000000000000..2f819b1746e8
--- /dev/null
+++ b/sci-libs/opencascade/opencascade-9999.ebuild
@@ -0,0 +1,365 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake virtualx
+
+DESCRIPTION="Development platform for CAD/CAE, 3D surface/solid modeling and data exchange"
+HOMEPAGE="https://www.opencascade.com"
+
+MY_PN="OCCT"
+
+MY_TEST_PV="7.8.0"
+MY_TEST_PV2="${MY_TEST_PV//./_}"
+
+SRC_URI="
+ test? ( https://github.com/Open-Cascade-SAS/${MY_PN}/releases/download/V${MY_TEST_PV2}/${PN}-dataset-${MY_TEST_PV}.tar.xz )
+"
+
+if [[ ${PV} = *9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/Open-Cascade-SAS/${MY_PN}.git"
+else
+ MY_PV="${PV//./_}"
+ SRC_URI+="
+ https://github.com/Open-Cascade-SAS/${MY_PN}/archive/refs/tags/V${MY_PV}.tar.gz -> ${P}.tar.gz
+ "
+ S="${WORKDIR}/${MY_PN}-${MY_PV}"
+ KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+fi
+
+LICENSE="|| ( Open-CASCADE-LGPL-2.1-Exception-1.0 LGPL-2.1 )"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="X debug doc examples ffmpeg freeimage freetype gles2-only +gui jemalloc json +opengl optimize tbb test testprograms tk vtk"
+
+REQUIRED_USE="
+ ?? ( optimize tbb )
+ ?? ( opengl gles2-only )
+ test? ( freeimage json opengl )
+"
+
+# There's no easy way to test. Testing needs a rather big environment properly set up.
+RESTRICT="!test? ( test )"
+
+# ffmpeg: https://tracker.dev.opencascade.org/view.php?id=32871
+RDEPEND="
+ dev-lang/tcl:=
+ tk? ( dev-lang/tk:= )
+ dev-libs/double-conversion
+ freetype? (
+ media-libs/fontconfig
+ media-libs/freetype:2
+ )
+ opengl? (
+ media-libs/libglvnd
+ )
+ X? (
+ x11-libs/libX11
+ )
+ gui? (
+ examples? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtquickcontrols2:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ )
+ )
+ ffmpeg? ( <media-video/ffmpeg-5:= )
+ freeimage? ( media-libs/freeimage )
+ jemalloc? ( dev-libs/jemalloc )
+ tbb? ( dev-cpp/tbb:= )
+ vtk? (
+ sci-libs/vtk:=[rendering]
+ tbb? (
+ sci-libs/vtk:=[tbb,-cuda]
+ )
+ )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ json? ( dev-libs/rapidjson )
+"
+BDEPEND="
+ doc? ( app-text/doxygen[dot] )
+ gui? (
+ examples? ( dev-qt/linguist-tools:5 )
+ )
+ test? ( dev-tcltk/thread )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-7.5.1-0005-fix-write-permissions-on-scripts.patch"
+ "${FILESDIR}/${PN}-7.5.1-0006-fix-creation-of-custom.sh-script.patch"
+ "${FILESDIR}/${PN}-7.7.0-fix-installation-of-cmake-config-files.patch"
+ "${FILESDIR}/${PN}-7.7.0-avoid-pre-stripping-binaries.patch"
+ "${FILESDIR}/${PN}-7.7.0-build-against-vtk-9.2.patch"
+ "${FILESDIR}/${PN}-7.7.0-musl.patch"
+ "${FILESDIR}/${PN}-7.7.0-jemalloc-lib-type.patch"
+ "${FILESDIR}/${PN}-7.8.0-cmake-min-version.patch"
+ "${FILESDIR}/${PN}-7.8.0-tests.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]] ; then
+ git-r3_src_unpack
+ else
+ unpack "${P}.tar.gz"
+ fi
+
+ if use test; then
+ mkdir "${WORKDIR}/data"
+ pushd "${WORKDIR}/data" > /dev/null || die
+ # should be in paths indicated by CSF_TestDataPath environment variable,
+ # or in subfolder data in the script directory
+ unpack "${PN}-dataset-${MY_TEST_PV}.tar.xz"
+ popd > /dev/null || die
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -e 's|/lib\$|/'"$(get_libdir)"'\$|' \
+ -i adm/templates/OpenCASCADEConfig.cmake.in || die
+
+ # There is an OCCT_UPDATE_TARGET_FILE cmake macro that fails due to some
+ # assumptions it makes about installation paths. Rather than fixing it, just
+ # get rid of the mechanism altogether - its purpose is to allow a
+ # side-by-side installation of release and debug libraries.
+ sed -e 's|\\${OCCT_INSTALL_BIN_LETTER}||' \
+ -i adm/cmake/occt_toolkit.cmake || die
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -D3RDPARTY_DIR="${ESYSROOT}/usr"
+ -DBUILD_CPP_STANDARD="C++17"
+ -DBUILD_SOVERSION_NUMBERS=2
+
+ -DBUILD_DOC_Overview="$(usex doc)"
+ -DBUILD_Inspector="$(usex gui)"
+
+ -DBUILD_ENABLE_FPE_SIGNAL_HANDLER="$(usex debug)"
+ -DBUILD_USE_PCH="no"
+ # -DBUILD_OPT_PROFILE="Default" # Production
+ # -DBUILD_RESOURCES="yes"
+ # -DBUILD_YACCLEX="yes"
+
+ -DBUILD_RELEASE_DISABLE_EXCEPTIONS="no" # bug #847916
+ -DINSTALL_DIR="${EPREFIX}/usr"
+ -DINSTALL_DIR_BIN="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_CMAKE="$(get_libdir)/cmake/${PN}"
+ -DINSTALL_DIR_DATA="share/${PN}/data"
+ -DINSTALL_DIR_DOC="share/doc/${PF}"
+ -DINSTALL_DIR_INCLUDE="include/${PN}"
+ -DINSTALL_DIR_LIB="$(get_libdir)/${PN}"
+ -DINSTALL_DIR_RESOURCE="share/${PN}/resources"
+ -DINSTALL_DIR_SAMPLES="share/${PN}/samples"
+ -DINSTALL_DIR_SCRIPT="$(get_libdir)/${PN}/bin"
+ -DINSTALL_DIR_TESTS="share/${PN}/tests"
+ -DINSTALL_DIR_WITH_VERSION="no"
+ -DINSTALL_SAMPLES="$(usex examples)"
+
+ -DINSTALL_TEST_CASES="$(usex testprograms)"
+
+ # no package yet in tree
+ -DUSE_DRACO="no"
+ -DUSE_FFMPEG="$(usex ffmpeg)"
+ -DUSE_FREEIMAGE="$(usex freeimage)"
+ -DUSE_FREETYPE="$(usex freetype)"
+ # Indicates whether OpenGL ES 2.0 should be used in OCCT visualization module
+ -DUSE_GLES2="$(usex gles2-only)"
+ # Indicates whether OpenGL desktop should be used in OCCT visualization module
+ -DUSE_OPENGL="$(usex opengl)"
+ # no package in tree
+ -DUSE_OPENVR="no"
+ -DUSE_RAPIDJSON="$(usex json)"
+ -DUSE_TBB="$(usex tbb)"
+ -DUSE_TK="$(usex tk)"
+ -DUSE_VTK="$(usex vtk)"
+ -DUSE_XLIB="$(usex X)"
+ )
+
+ # Select using memory manager tool.
+ if ! use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=NATIVE )
+ elif use jemalloc && ! use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=JEMALLOC )
+ elif ! use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=TBB )
+ elif use jemalloc && use tbb; then
+ mycmakeargs+=( -DUSE_MMGR_TYPE=FLEXIBLE )
+ fi
+
+ if use doc; then
+ mycmakeargs+=(
+ -DINSTALL_DOC_Overview="yes"
+ -D3RDPARTY_SKIP_DOT_EXECUTABLE="no"
+ )
+ fi
+
+ if use gui; then
+ mycmakeargs+=(
+ -D3RDPARTY_QT_DIR="${ESYSROOT}/usr"
+ -DBUILD_SAMPLES_QT="$(usex examples)"
+ )
+ fi
+
+ if use jemalloc; then
+ mycmakeargs+=(
+ -D3RDPARTY_JEMALLOC_INCLUDE_DIR="${ESYSROOT}/usr/include/jemalloc"
+ )
+ fi
+
+ if use tbb; then
+ mycmakeargs+=(
+ -D3RDPARTY_TBB_DIR="${ESYSROOT}/usr"
+ )
+ fi
+
+ if use vtk; then
+ local vtk_ver
+ vtk_ver="$(best_version "sci-libs/vtk")"
+ vtk_ver=$(ver_cut 1-2 "${vtk_ver#sci-libs/vtk-}")
+ mycmakeargs+=(
+ -D3RDPARTY_VTK_INCLUDE_DIR="${ESYSROOT}/usr/include/vtk-${vtk_ver}"
+ -D3RDPARTY_VTK_LIBRARY_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ )
+ fi
+
+ cmake_src_configure
+
+ sed -e "s|lib/|$(get_libdir)/|" \
+ -e "s|VAR_CASROOT|${EPREFIX}/usr|" \
+ < "${FILESDIR}/${PN}.env.in" > "${T}/99${PN}" || die
+
+ # use TBB for memory allocation optimizations
+ if use tbb; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=2|' -i "${T}/99${PN}" || die
+ fi
+
+ # use internal optimized memory manager and don't clear memory with this
+ # memory manager.
+ if use optimize ; then
+ sed -e 's|^#MMGT_OPT=0$|MMGT_OPT=1|' \
+ -e 's|^#MMGT_CLEAR=1$|MMGT_CLEAR=0|' \
+ -i "${T}/99${PN}" || die
+ fi
+}
+
+src_test() {
+ echo "export CSF_OCCTDataPath=${WORKDIR}/data" >> "${BUILD_DIR}/custom.sh" || die
+
+ if has_version media-fonts/dejavu; then
+ cp "${ESYSROOT}/usr/share/fonts/dejavu/DejaVuSans.ttf" "${WORKDIR}/data/" # no die here as this isn't fatal
+ fi
+
+ local test_file=${T}/testscript.tcl
+
+ local draw_opts=(
+ i # see ${BUILD_DIR}/custom*.sh
+ # -b # batch mode (no GUI, no viewers)
+ -v # no GUI, use virtual (off-screen) windows for viewers
+ )
+
+ local test_names=(
+ "demo draw bug30430" # prone to dying due to cpu limit
+ )
+ local test_opts=( # run single tests
+ -overwrite
+ )
+ for test_name in "${test_names[@]}"; do
+ cat >> "${test_file}" <<- _EOF_ || die
+ test ${test_name} -outfile "${BUILD_DIR}/test_results/${test_name// /\/}.html" ${test_opts[@]}
+ _EOF_
+ done
+
+ local testgrid_opts=()
+
+ local SKIP_TESTS=()
+
+ if [[ "${OCCT_OPTIONAL_TESTS}" != "true" ]]; then
+ SKIP_TESTS+=(
+ 'blend complex F4'
+ 'bugs'
+ 'geometry circ2d3Tan '{CircleCircleLin_11,CircleLinPoint_11}
+ 'heal checkshape bug32448_1'
+ 'hlr exact_hlr bug25813_2'
+
+ 'hlr poly_hlr '{bug25813_2,bug25813_3,bug25813_4,Plate}
+ 'lowalgos intss bug'{565,567_1,25950,27431,29807_i1003,29807_i2006,29807_i3003,29807_i5002,30703}
+ 'lowalgos proximity '{A4,A5}
+ 'opengl background bug27836'
+ 'opengl drivers opengles'
+ 'opengles3'
+
+ 'demo draw bug30430'
+ )
+
+ local DEL_TESTS=(
+ 'opengl/data/background/bug27836'
+ 'perf/mesh/bug26965'
+ 'v3d/trsf/bug26029'
+ )
+
+ for test in "${DEL_TESTS[@]}"; do
+ rm "${CMAKE_USE_DIR}/tests/${test}" || die
+ done
+ fi
+
+ if ! use vtk; then
+ SKIP_TESTS+=(
+ 'vtk'
+ )
+ echo "IGNORE /Could not open: libTKIVtkDraw/skip VTK" >> "${CMAKE_USE_DIR}/tests/opengl/parse.rules"
+ fi
+
+ if [[ -n "${SKIP_TESTS[*]}" ]]; then
+ testgrid_opts+=( -exclude "$(IFS=',' ; echo "${SKIP_TESTS[*]}")" )
+ fi
+
+ testgrid_opts+=(
+ # -refresh 5
+ -overwrite
+ )
+ cat >> "${test_file}" <<- _EOF_ || die
+ testgrid -outdir "${BUILD_DIR}/test_results" ${testgrid_opts[@]}
+ _EOF_
+
+ # # regenerate summary in case we have to
+ # cat >> "${test_file}" <<- _EOF_ || die
+ # testsummarize "${BUILD_DIR}/test_results"
+ # _EOF_
+
+ # Work around zink warnings
+ export LIBGL_ALWAYS_SOFTWARE="true"
+
+ export CASROOT="${BUILD_DIR}"
+
+ virtx \
+ "${BUILD_DIR}/draw.sh" \
+ "${draw_opts[@]}" \
+ -f "${test_file}"
+
+ if [[ ! -f "${BUILD_DIR}/test_results/tests.log" ]]; then
+ eerror "tests never ran!"
+ die
+ fi
+ failed_tests="$(grep ": FAILED" "${BUILD_DIR}/test_results/tests.log")"
+ if [[ -n ${failed_tests} ]]; then
+ eerror "Failed tests:"
+ eerror "${failed_tests}"
+ die
+ fi
+}
+
+src_install() {
+ cmake_src_install
+
+ doenvd "${T}/99${PN}"
+
+ docompress -x "/usr/share/doc/${PF}/overview/html"
+}