From e3f21c8aff8a76afe3423721c437a088e9232840 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 23 Apr 2024 23:59:27 +0100 Subject: gentoo auto-resync : 23:04:2024 - 23:59:26 --- sci-mathematics/Manifest.gz | Bin 19312 -> 19314 bytes sci-mathematics/cadabra/Manifest | 3 + sci-mathematics/cadabra/cadabra-2.4.5.7.ebuild | 112 ++++++++++ .../cadabra/files/cadabra2-2.4.5.7-cmake.patch | 50 +++++ sci-mathematics/petsc/Manifest | 14 +- sci-mathematics/petsc/petsc-3.16.0-r1.ebuild | 192 ----------------- sci-mathematics/petsc/petsc-3.16.0-r2.ebuild | 192 +++++++++++++++++ sci-mathematics/petsc/petsc-3.17.1-r1.ebuild | 190 ---------------- sci-mathematics/petsc/petsc-3.17.1-r2.ebuild | 190 ++++++++++++++++ sci-mathematics/petsc/petsc-3.18.2-r1.ebuild | 235 ++++++++++++++++++++ sci-mathematics/petsc/petsc-3.18.2.ebuild | 235 -------------------- sci-mathematics/petsc/petsc-3.19.1-r1.ebuild | 235 ++++++++++++++++++++ sci-mathematics/petsc/petsc-3.19.1.ebuild | 235 -------------------- sci-mathematics/petsc/petsc-3.19.2-r1.ebuild | 235 ++++++++++++++++++++ sci-mathematics/petsc/petsc-3.19.2.ebuild | 235 -------------------- sci-mathematics/petsc/petsc-3.19.4-r1.ebuild | 240 +++++++++++++++++++++ sci-mathematics/petsc/petsc-3.19.4.ebuild | 240 --------------------- sci-mathematics/petsc/petsc-3.20.5-r1.ebuild | 240 +++++++++++++++++++++ sci-mathematics/petsc/petsc-3.20.5.ebuild | 240 --------------------- 19 files changed, 1739 insertions(+), 1574 deletions(-) create mode 100644 sci-mathematics/cadabra/cadabra-2.4.5.7.ebuild create mode 100644 sci-mathematics/cadabra/files/cadabra2-2.4.5.7-cmake.patch delete mode 100644 sci-mathematics/petsc/petsc-3.16.0-r1.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.16.0-r2.ebuild delete mode 100644 sci-mathematics/petsc/petsc-3.17.1-r1.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.17.1-r2.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.18.2-r1.ebuild delete mode 100644 sci-mathematics/petsc/petsc-3.18.2.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.19.1-r1.ebuild delete mode 100644 sci-mathematics/petsc/petsc-3.19.1.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.19.2-r1.ebuild delete mode 100644 sci-mathematics/petsc/petsc-3.19.2.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.19.4-r1.ebuild delete mode 100644 sci-mathematics/petsc/petsc-3.19.4.ebuild create mode 100644 sci-mathematics/petsc/petsc-3.20.5-r1.ebuild delete mode 100644 sci-mathematics/petsc/petsc-3.20.5.ebuild (limited to 'sci-mathematics') diff --git a/sci-mathematics/Manifest.gz b/sci-mathematics/Manifest.gz index 0106cbf07a3b..10b4f5fc451a 100644 Binary files a/sci-mathematics/Manifest.gz and b/sci-mathematics/Manifest.gz differ diff --git a/sci-mathematics/cadabra/Manifest b/sci-mathematics/cadabra/Manifest index 35a70f65285d..0092b9e28549 100644 --- a/sci-mathematics/cadabra/Manifest +++ b/sci-mathematics/cadabra/Manifest @@ -1,6 +1,9 @@ +AUX cadabra2-2.4.5.7-cmake.patch 2449 BLAKE2B 712fe729b001c1fe4df3a8426c479413ef9f308ee2414e20701c8c2fb7b83412abc21a8f9bec8dc374f740c5d5c42844a9ba74a2c95a6a59344e696f6a2b2b9a SHA512 2d7d8fe5d70f70ce15555887a09c205997293d63b3f2947994012650e3aa369150923718397ddcda93ee8fc82ce8b18ba990bcb5fc8c20c3347f7a212ecc68ef AUX cadabra2-CMake.patch 3184 BLAKE2B afa702834d5eb82a8056307b419fc20bbc2d45b0474994328b70fee383dff415ea37ef2e70c83e9cb7776e06f9295cf5cb9afddddaf857227f7a72f362b61726 SHA512 ddd6b451f81e465d4fef9401340808922bcb1074895173d83d699614e0c967024863848fabdd207f7124ff6396e8c2c75d2ed1425ba73d7bb6d5ac6fe56a87f1 DIST cadabra-2.4.5.4.tar.gz 26825874 BLAKE2B 90562e4ddb08a99a38f32d5cf3fe237b2ca5ece80e4bf70caa8db23a2b6af246b289eb41e7d366c5a242e6e06a680ab0917deb43f29efcf7d6703338c7e97d00 SHA512 907e291880aac84a4f5695f77dd34512c13dba320b38fee59c765b070235c9ef777f6e188c675c8247f56144624edb84459d8b500e4c074731633a2b9cf9ee74 DIST cadabra-2.4.5.6.tar.gz 26827151 BLAKE2B ee08687c55a29582787ce66d2596ec182eca7f9d8eafde7c68477f316baf41f8e798fcdf3d307e0d9d3b68f5c66cd0805686bdd8a41f1d33ef09c11009808e91 SHA512 e0e9af7d492077137e6edba334b74b36905bfec633096a714158881c3bdd424d174b4a1f9053cd570f6652f53aa445a22220f44b396cf3c0fb69860d6d4aecc7 +DIST cadabra-2.4.5.7.tar.gz 26833908 BLAKE2B 3f44ba9035f8181e475232da7bf81c8baf6b19b37651c438ebb656867e54fc213cd4f547a512a1be270a0449ea4b390bd777a4e38ad174e151723c2e2a90c4ae SHA512 860e166ba965fdd6e8afa4265d62ae388f33b8468912e63f7575a819419b9ee90a93e058e7aa4a9c44c80afef9fcce96c7b9d3fd1d35b3059a82548e54804328 EBUILD cadabra-2.4.5.4.ebuild 2349 BLAKE2B 7150b06e2425b70d36670f6849e0626b054b79f263463db8b78375731cc65b9ee6e840c3a8956a9adb13b03d0c73003107858806a067802d81b40cb0c617f7f9 SHA512 28e5f53aca9bd310c0becdf391599f020dd740c7a619c6426aa55f54c19224cdbf4ec230b6b890769708a174a53560040a6b5821faaca6a910d773966be336b7 EBUILD cadabra-2.4.5.6.ebuild 2351 BLAKE2B f031cc63d771d26e9fb13ab0793bb5200d2a4e510cd222b702d404d5ef5eb58c791c1c64224cf51e9bb31666c57a0a93bb93ec178f646b545d4ff002efa14c5d SHA512 b36360335712eb5d944ea9a2ecef60b29db1d10ac2f08946291b9d12ecab12d3958db15c1e1682810a129ede6fcd98f4e7a222840826e6d12489a9df89f7c74a +EBUILD cadabra-2.4.5.7.ebuild 2359 BLAKE2B 7535f52d0deae630be85c6676e08c2f51d501fc9947d572f34b37a0c26d12a993942871937c8c074c1ef10d99158a115bfd76e334292573313fc239e127de93b SHA512 d012ab8451da78ea1a75bbdd33208ed5845b57ee747b32c8111aa2e5a5639116e7a145eefafa2e6e749279ed038a3eac47cbbbdce0a5c5e178c94edff52c1812 MISC metadata.xml 1342 BLAKE2B 2f34aae73fc01d4b8fd4326505b7b0785663c62593641d1d0a01f64adc12cbc8676271612ce91258927ac22957a8d5aba53dd2627130582c744bc32c28e0e207 SHA512 41dffbcfae16f8f0702df5a1837b225100761d48817a2d70fa03aca6246b9d3184d60989cf265282286b02a77a126ac82695c2d74c6de91da45e8f64fcb91811 diff --git a/sci-mathematics/cadabra/cadabra-2.4.5.7.ebuild b/sci-mathematics/cadabra/cadabra-2.4.5.7.ebuild new file mode 100644 index 000000000000..5d08d2e820db --- /dev/null +++ b/sci-mathematics/cadabra/cadabra-2.4.5.7.ebuild @@ -0,0 +1,112 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MAJOR="$(ver_cut 1)" +CADABRA="${PN}${MAJOR}" + +PYTHON_COMPAT=( python3_{10..12} ) + +inherit xdg-utils python-single-r1 cmake + +DESCRIPTION="Field-theory motivated approach to computer algebra" +HOMEPAGE="https://cadabra.science/ + https://github.com/kpeeters/cadabra2/" + +if [[ "${PV}" == *9999* ]] ; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/kpeeters/${CADABRA}.git" +else + SRC_URI="https://github.com/kpeeters/${CADABRA}/archive/${PV}.tar.gz + -> ${P}.tar.gz" + S="${WORKDIR}/${CADABRA}-${PV}" + + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="GPL-3" +SLOT="0/${MAJOR}" +IUSE="gui +jupyter test" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +RESTRICT="!test? ( test )" + +RDEPEND=" + ${PYTHON_DEPS} + app-text/dvipng + dev-cpp/glibmm:2 + dev-db/sqlite:3= + dev-libs/boost:= + dev-libs/gmp:=[cxx] + dev-libs/jsoncpp:= + dev-libs/libsigc++:2 + dev-texlive/texlive-basic + $(python_gen_cond_dep ' + dev-python/gmpy:2[${PYTHON_USEDEP}] + dev-python/matplotlib[${PYTHON_USEDEP}] + dev-python/sympy[${PYTHON_USEDEP}] + jupyter? ( dev-python/jupyter[${PYTHON_USEDEP}] ) + ') + gui? ( + dev-cpp/gtkmm:3.0 + ) +" +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + $(python_gen_cond_dep 'dev-python/pybind11[${PYTHON_USEDEP}]') +" + +PATCHES=( "${FILESDIR}/${CADABRA}-2.4.5.7-cmake.patch" ) + +DOCS=( CODE_OF_CONDUCT.md CONTRIBUTING.md JUPYTER.rst README.rst ) + +xdg_update() { + if use gui ; then + xdg_icon_cache_update + xdg_desktop_database_update + xdg_mimeinfo_database_update + fi +} + +src_prepare() { + # Clean postinst script which calls libtool and icon-cache update + echo '#!/bin/sh' > "${S}/config/postinst.in" || die + + # Fix "PYTHON_EXECUTABLE" in Jupyter kernel + sed -i "s|@PYTHON_EXECUTABLE@|${EPYTHON}|" \ + "${S}/jupyterkernel/kernelspec/kernel.json.in" || die + + cmake_src_prepare +} + +src_configure() { + local -a mycmakeargs=( + -DENABLE_SYSTEM_JSONCPP=ON + -DPACKAGING_MODE=ON + -DUSE_PYTHON_3=ON + -DBUILD_AS_CPP_LIBRARY=OFF + -DENABLE_JUPYTER=OFF # special Xeus Jupyter kernel (uses xtl) + -DENABLE_MATHEMATICA=OFF + -DINSTALL_TARGETS_ONLY=OFF + -DBUILD_TESTS="$(usex test)" + -DENABLE_FRONTEND="$(usex gui)" + -DENABLE_PY_JUPYTER="$(usex jupyter)" + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + python_optimize +} + +pkg_postinst() { + xdg_update +} + +pkg_postrm() { + xdg_update +} diff --git a/sci-mathematics/cadabra/files/cadabra2-2.4.5.7-cmake.patch b/sci-mathematics/cadabra/files/cadabra2-2.4.5.7-cmake.patch new file mode 100644 index 000000000000..ef2a929a921d --- /dev/null +++ b/sci-mathematics/cadabra/files/cadabra2-2.4.5.7-cmake.patch @@ -0,0 +1,50 @@ +index 0f2ba31..7e6ace8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -166,7 +166,6 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + message(FATAL_ERROR "GCC version must be at least 4.9 for regex support! See http://askubuntu.com/questions/428198/getting-installing-gcc-g-4-9-on-ubuntu and then set the environment variables CXX to g++-4.9 and CC to gcc-4.9. You may have to erase the build directory before re-running cmake.") + endif() + endif() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -Wall -fvisibility=hidden -Wno-unused-but-set-variable") + endif() + + # Clang +@@ -175,7 +174,6 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5) + message(FATAL_ERROR "Clang version must be at least 3.5 to avoid known bugs.") + endif() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O2 -fvisibility=hidden -Wall -Wextra -Wunused") + endif() + + # Visual Studio +index d21069e..69f4f52 100644 +--- a/c++lib/CMakeLists.txt ++++ b/c++lib/CMakeLists.txt +@@ -48,14 +48,6 @@ if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions("-Wall -g -Wno-unused-but-set-variable") + endif() + +-if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") +-endif() +- +-if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") +-endif() +- + if(MSVC) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + set(MSVC_FLAGS +index b7869a9..91567ec 100644 +--- a/frontend/gtkmm/CMakeLists.txt ++++ b/frontend/gtkmm/CMakeLists.txt +@@ -160,9 +160,6 @@ if (NOT INSTALL_TARGETS_ONLY) + install(FILES ${CADABRA_IMAGES_DIR}/256x256/cadabra2-gtk.png DESTINATION ${ICON_PREFIX}/share/icons/hicolor/256x256/apps) + install(FILES ${CADABRA_IMAGES_DIR}/cadabra2-gtk.svg DESTINATION ${ICON_PREFIX}/share/icons/hicolor/scalable/apps) + install(FILES ${CADABRA_ROOT_DIR}/config/cadabra2-gtk.desktop DESTINATION ${ICON_PREFIX}/share/applications) +- install(CODE "execute_process(COMMAND touch ${ICON_PREFIX_WITH_DESTDIR}/share/icons/hicolor/icon-theme.cache)") +- install(CODE "execute_process(COMMAND gtk-update-icon-cache-3.0 {ICON_PREFIX_WITH_DESTDIR}/share/icons/hicolor)") +- install(CODE "execute_process(COMMAND chmod go+r ${ICON_PREFIX_WITH_DESTDIR}/share/icons/hicolor/icon-theme.cache)") + + # Install shared libraries on Windows. + # https://stackoverflow.com/questions/32662215/how-do-you-install-gtk-3-0-on-windows diff --git a/sci-mathematics/petsc/Manifest b/sci-mathematics/petsc/Manifest index 3ecf051197f3..9e6237acb008 100644 --- a/sci-mathematics/petsc/Manifest +++ b/sci-mathematics/petsc/Manifest @@ -8,11 +8,11 @@ DIST petsc-3.19.1.tar.gz 16659061 BLAKE2B 8c7b22e5f97756261a5d0e8b707670d55db53e DIST petsc-3.19.2.tar.gz 16627765 BLAKE2B 1267db717989c3819f32ac6a62642054af2ac49d9e9276ffd4f0846d73e31ae4a5dcca4ad794b91cdb29463b7ec68040baa4e1cad99aaef8ab910ff7b64d7478 SHA512 f8feeb66fa8bd2406227be0e2cc2946485238362270d40e3f07dc89491177751f6bf680f51b70696bc30b677624c0e525c3fa9784eabdeb2337697ec56f63fc1 DIST petsc-3.19.4.tar.gz 16630006 BLAKE2B 577655fff12f9f54570393b2023d3386e66c7d4351ef20922f4b8100cbc54eeec0fb6ce249774cb54d2d06062a610c7d755e3b44994a3e053c0c02889810adc8 SHA512 b32b8cf72ea6bf3d976067ce0b722a6fb2ede525bc2293b72daf5693de48c6256e50f3968c0464a5e0d3bb067b936e1d78b66b51626fd27bbef2f57322509564 DIST petsc-3.20.5.tar.gz 17077395 BLAKE2B e76ff83572f7f0fcfa85b80f36301e0378d240e60726f07ab78a66b87591434bda6a96758037580370965f91c03341d95f60cfb961c2ab6707eeaafd5a7b1e1d SHA512 1e0ebdacbcc9db22dbe3803cbc13f5e0138d0412c328ff49cab024c839527c73b28983717104daf0858d482a8804b931c5c2bf20363c6b801d2be7d27219692f -EBUILD petsc-3.16.0-r1.ebuild 5423 BLAKE2B f4d1bccdc64f6b1eafe0c88da617f138a3836ef96057d660569c7a010a30d4f12e08127f412290f59386a04896446c8f2202408a3816e9bb8ab9cbfe13fe860b SHA512 61bff72a6c246205bd78b459a5e3357744fa448c9f485474f7e7b56ec0bd96cdb45f0b1e008a509da2bebb52d6b987960defeff21e6b622d8df68ba2d64d9a29 -EBUILD petsc-3.17.1-r1.ebuild 5399 BLAKE2B 75ac3b4b90a9e41f9252a87947396b95fbee6d2ee320d8d5aac4425779021f84d625dbffb2988a2b71e9352ab12710ea85a758081861841afe2f03fce6145567 SHA512 ee28658210f894b5725bc7aeb0e8988124125e9e02ffdf70ded3110140cdcdb803e3cbf1943975c8a75402413c8009d3a769131488e71c026e7d64397d378ca2 -EBUILD petsc-3.18.2.ebuild 7321 BLAKE2B 657741c39700e87eb9f5b72e2ec872897a9ea4dccd4817e546f385eda874113f51e820d068a90a116a3a8a27831690c0066c353491609ffefb3dc682577fa2fc SHA512 6f7f735eb892c3ce8b78d07f45b5974eafb9b34a18af19d7e93ddd2f23697372c025b2fa375d3062aeedff442884420a36445eaba6cf1a490fc14cf17b587279 -EBUILD petsc-3.19.1.ebuild 7321 BLAKE2B 657741c39700e87eb9f5b72e2ec872897a9ea4dccd4817e546f385eda874113f51e820d068a90a116a3a8a27831690c0066c353491609ffefb3dc682577fa2fc SHA512 6f7f735eb892c3ce8b78d07f45b5974eafb9b34a18af19d7e93ddd2f23697372c025b2fa375d3062aeedff442884420a36445eaba6cf1a490fc14cf17b587279 -EBUILD petsc-3.19.2.ebuild 7321 BLAKE2B 657741c39700e87eb9f5b72e2ec872897a9ea4dccd4817e546f385eda874113f51e820d068a90a116a3a8a27831690c0066c353491609ffefb3dc682577fa2fc SHA512 6f7f735eb892c3ce8b78d07f45b5974eafb9b34a18af19d7e93ddd2f23697372c025b2fa375d3062aeedff442884420a36445eaba6cf1a490fc14cf17b587279 -EBUILD petsc-3.19.4.ebuild 7445 BLAKE2B b5abdce667a803e4a3ae5ff056efb61de97e0ebe1efd056d8ef68e986fbc94507cf5fe697830008d56975eb5105a9b74ba09bc19ae38e17f2cad56529cf3bd15 SHA512 87c81ee5e63bf186efa6cddc9b81921b9ba8d137cbc40bae4dc42191254e66328cc4b5e86f94cc237129b524d776362f8fad7a21c5b05ac1b0d6302679fd60b7 -EBUILD petsc-3.20.5.ebuild 7458 BLAKE2B 88b01eb4e9801453dda22fea6768091b523ef2e3c7d6f2fc0dda01693458e2cfd76d8a3860d2aa050b2a1414825d04b0a18e387b6f776e115eb13dede59c6d86 SHA512 e3133fa1ef73a21596bb7e3625ab687e802157b61e31f2e4117be866ed4cc562685e85002202c3c21a68a5ec620ef497887e8fc498e82f17944753a17ed3e867 +EBUILD petsc-3.16.0-r2.ebuild 5425 BLAKE2B a38f36283aa2a802f886565daebfd57681c8bf81a56ba8fde8f82247216cdb21548fc4bf5088d76f0e4ea56afc29f8891ac20986cbfb1cd05c3408e85977a636 SHA512 ed7e01fef273d5c6acbb39dfcf94df854555cd5c27173a5b6e4acdc2f542a3cfc126c361cb0193c7a8fa266478182634a97615a9c72bbe2b98e6cce5ba7d0cd9 +EBUILD petsc-3.17.1-r2.ebuild 5401 BLAKE2B 0e77a30b419b34758ac36ece7f3a210c1ca8a878bf2cf381039def0ef354d497b5e5d5172e5c663a61e54d256c43bd623fd299839f73db8d9cd9885c1d1cab2a SHA512 c9820edc2ae6218ccffcb4fc8213431c33e9e0dc2d1b7c4e79a70f79485ee0dbd6ecacdc2630732b2b65fc98044914d25b8a6c5fbee35908bef4e4d41f6a6d63 +EBUILD petsc-3.18.2-r1.ebuild 7323 BLAKE2B d42ef6d5dea72728bca65edbd783ad38ed809ed9ab312cd5f21e9039d560166beca6a44859094346a52f33ea5810b429cd61db4812ef8747966778d77636d233 SHA512 540bbc5210587b45df3fd5038b0671eafbe330683198661fdacd1eda10a08c4f89d7dbed6966b69154dd54a98fc5238c615bc27cff2ddee270d32fb170d2d7ef +EBUILD petsc-3.19.1-r1.ebuild 7323 BLAKE2B d42ef6d5dea72728bca65edbd783ad38ed809ed9ab312cd5f21e9039d560166beca6a44859094346a52f33ea5810b429cd61db4812ef8747966778d77636d233 SHA512 540bbc5210587b45df3fd5038b0671eafbe330683198661fdacd1eda10a08c4f89d7dbed6966b69154dd54a98fc5238c615bc27cff2ddee270d32fb170d2d7ef +EBUILD petsc-3.19.2-r1.ebuild 7323 BLAKE2B d42ef6d5dea72728bca65edbd783ad38ed809ed9ab312cd5f21e9039d560166beca6a44859094346a52f33ea5810b429cd61db4812ef8747966778d77636d233 SHA512 540bbc5210587b45df3fd5038b0671eafbe330683198661fdacd1eda10a08c4f89d7dbed6966b69154dd54a98fc5238c615bc27cff2ddee270d32fb170d2d7ef +EBUILD petsc-3.19.4-r1.ebuild 7447 BLAKE2B 25b7431319effec19012133dd480cc76309206f3de7789262fc09d2724cde19dcdc9ae86a40432fa40dc6b927c49e445d5e67c010e5e47eee1c27aa8db8510b2 SHA512 835ef674e227720e47e86165143b3b55d79694c9424b666f94a9191d70d2f435acd5d4f0aada1765520194eb97126e064b49c71a2efaf90775a867eec9a49acd +EBUILD petsc-3.20.5-r1.ebuild 7460 BLAKE2B ba8adc670eb453336766c670caa28fd1130f10eb222bc1aafa3e69e616288059908ff845d3a290f71f65d6011f82f0d94c4ba87d79a298b80f17035575ead102 SHA512 89db7fbeda8e15bac7194b84f07a0a12f85d2916be9ba45d5ae64e389fd9dd39233611bab424b8916be2a55569409afd08bd8efb830b422bd18347d16e9cc428 MISC metadata.xml 1310 BLAKE2B 04161c348ae88640222ad8d6c3f3471defbfdc0adc223acc6e8d0d21f62090b62f2887caacae5de751cb4b1ddb1e0d4bb4de5ea57d9381c710837262668fc37b SHA512 327aa86d4dba087c0de4ab7e2099bf8df13f2eb04138207802f664c316b74c09b2b15f82e9766b6b713d530f3ee094844f490c4769a1b5719f4912b486156ba9 diff --git a/sci-mathematics/petsc/petsc-3.16.0-r1.ebuild b/sci-mathematics/petsc/petsc-3.16.0-r1.ebuild deleted file mode 100644 index 743b36c54912..000000000000 --- a/sci-mathematics/petsc/petsc-3.16.0-r1.ebuild +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -PYTHON_COMPAT=( python3_10 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://www.mcs.anl.gov/petsc/" -SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" -SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-fftw-without-mpi.patch.bz2" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars cxx debug fftw - fortran hdf5 hypre mpi metis mumps scotch sparse superlu threads X" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - hdf5? ( mpi ) - hypre? ( cxx mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" - -RDEPEND=" - virtual/blas - virtual/lapack - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[cxx?,fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[mpi?] ) - sparse? ( sci-libs/suitesparse >=sci-libs/cholmod-1.7.0 ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" - -DEPEND="${RDEPEND} - ${PYTHON_DEPS} - virtual/pkgconfig - dev-build/cmake - sys-apps/which -" - -PATCHES=( - "${FILESDIR}"/${PN}-3.7.0-disable-rpath.patch - "${FILESDIR}"/${P}-fix_sandbox_violation.patch - "${WORKDIR}"/${P}-fftw-without-mpi.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local mylang - local myopt - - use cxx && mylang="cxx" || mylang="c" - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-${mylang}-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - FFLAGS="${FFLAGS} -fPIC" \ - CFLAGS="${CFLAGS} -fPIC" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petsc" \ - --with-shared-libraries \ - --with-single-library \ - --with-clanguage=${mylang} \ - $(use cxx && ! use complex-scalars && echo "with-c-support=1") \ - --with-petsc-arch=${PETSC_ARCH} \ - --with-precision=double \ - --with-gnu-compilers \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - $(petsc_enable debug debugging) \ - $(petsc_enable mpi) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_enable fortran) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_select complex-scalars scalar-type complex real) \ - --with-windows-graphics=0 \ - --with-matlab=0 \ - --with-cmake:BOOL=1 \ - $(petsc_enable threads pthread) \ - $(petsc_with afterimage afterimage \ - /usr/include/libAfterImage -lAfterImage) \ - $(use_with hdf5) \ - $(petsc_with hypre hypre \ - /usr/include/hypre -lHYPRE) \ - $(use_with sparse suitesparse) \ - $(petsc_with superlu superlu \ - /usr/include/superlu -lsuperlu) \ - $(use_with X x) \ - $(use_with X x11) \ - $(petsc_with scotch ptscotch \ - /usr/include/scotch \ - [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack \ - /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps \ - /usr/include \ - [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - --with-imagemagick=0 \ - --with-python=0 \ - $(use_with boost) \ - $(use_with fftw) -} - -src_install() { - emake DESTDIR="${ED}" install - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petsc - LDPATH=${EPREFIX}/usr/$(get_libdir)/petsc/lib - EOF - doenvd 99petsc -} diff --git a/sci-mathematics/petsc/petsc-3.16.0-r2.ebuild b/sci-mathematics/petsc/petsc-3.16.0-r2.ebuild new file mode 100644 index 000000000000..03c4e3d5a062 --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.16.0-r2.ebuild @@ -0,0 +1,192 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_10 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://www.mcs.anl.gov/petsc/" +SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" +SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-fftw-without-mpi.patch.bz2" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars cxx debug fftw + fortran hdf5 hypre mpi metis mumps scotch sparse superlu threads X" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + hdf5? ( mpi ) + hypre? ( cxx mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" + +RDEPEND=" + virtual/blas + virtual/lapack + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[cxx?,fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[mpi?] ) + sparse? ( sci-libs/suitesparse >=sci-libs/cholmod-1.7.0 ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" + +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + virtual/pkgconfig + dev-build/cmake + sys-apps/which +" + +PATCHES=( + "${FILESDIR}"/${PN}-3.7.0-disable-rpath.patch + "${FILESDIR}"/${P}-fix_sandbox_violation.patch + "${WORKDIR}"/${P}-fftw-without-mpi.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local mylang + local myopt + + use cxx && mylang="cxx" || mylang="c" + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-${mylang}-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + FFLAGS="${FFLAGS} -fPIC" \ + CFLAGS="${CFLAGS} -fPIC" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petsc" \ + --with-shared-libraries \ + --with-single-library \ + --with-clanguage=${mylang} \ + $(use cxx && ! use complex-scalars && echo "with-c-support=1") \ + --with-petsc-arch=${PETSC_ARCH} \ + --with-precision=double \ + --with-gnu-compilers \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + $(petsc_enable debug debugging) \ + $(petsc_enable mpi) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_enable fortran) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_select complex-scalars scalar-type complex real) \ + --with-windows-graphics=0 \ + --with-matlab=0 \ + --with-cmake:BOOL=1 \ + $(petsc_enable threads pthread) \ + $(petsc_with afterimage afterimage \ + /usr/include/libAfterImage -lAfterImage) \ + $(use_with hdf5) \ + $(petsc_with hypre hypre \ + /usr/include/hypre -lHYPRE) \ + $(use_with sparse suitesparse) \ + $(petsc_with superlu superlu \ + /usr/include/superlu -lsuperlu) \ + $(use_with X x) \ + $(use_with X x11) \ + $(petsc_with scotch ptscotch \ + /usr/include/scotch \ + [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack \ + /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps \ + /usr/include \ + [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + --with-imagemagick=0 \ + --with-python=0 \ + $(use_with boost) \ + $(use_with fftw) +} + +src_install() { + emake DESTDIR="${ED}" install + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petsc + LDPATH=${EPREFIX}/usr/$(get_libdir)/petsc/lib + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.17.1-r1.ebuild b/sci-mathematics/petsc/petsc-3.17.1-r1.ebuild deleted file mode 100644 index 5caa2d8578da..000000000000 --- a/sci-mathematics/petsc/petsc-3.17.1-r1.ebuild +++ /dev/null @@ -1,190 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_10 pypy3 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://www.mcs.anl.gov/petsc" -SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars debug fftw -fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" - -# readd sparse when suitesparse-5.6.0 is in tree -# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) -# $(use_with sparse suitesparse) \ -RDEPEND=" - virtual/blas - virtual/lapack - - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[int64?,mpi?] ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} -" -BDEPEND=" - dev-build/cmake - sys-apps/which - virtual/pkgconfig -" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - hdf5? ( mpi ) - hypre? ( mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" -PATCHES=( - "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" - "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local myopt - - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-c-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - tc-export AR RANLIB - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - AR="${AR}" \ - CFLAGS="${CFLAGS} -fPIC" \ - CPPFLAGS="${CPPFLAGS}" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ - FCFLAGS="${FCFLAGS} -fPIC" \ - FFLAGS="${FFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - MAKEFLAGS="${MAKEFLAGS}" \ - RANLIB="${RANLIB}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petsc" \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - --with-cmake:BOOL=1 \ - --with-gnu-compilers \ - --with-imagemagick=0 \ - --with-matlab=0 \ - --with-petsc-arch="${PETSC_ARCH}" \ - --with-precision=double \ - --with-python=0 \ - --with-shared-libraries \ - --with-single-library \ - --with-windows-graphics=0 \ - $(petsc_enable debug debugging) \ - $(petsc_enable fortran) \ - $(petsc_enable mpi) \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_enable threads pthread) \ - $(petsc_select complex-scalars scalar-type complex real) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ - $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ - $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ - $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(use int64 && echo "--with-index-size=64") \ - $(use_with boost) \ - $(use_with fftw) \ - $(use_with hdf5) \ - $(use_with X x) \ - $(use_with X x11) -} - -src_install() { - emake DESTDIR="${ED}" install - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petsc - LDPATH=${EPREFIX}/usr/$(get_libdir)/petsc/lib - EOF - doenvd 99petsc -} diff --git a/sci-mathematics/petsc/petsc-3.17.1-r2.ebuild b/sci-mathematics/petsc/petsc-3.17.1-r2.ebuild new file mode 100644 index 000000000000..df212d111e62 --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.17.1-r2.ebuild @@ -0,0 +1,190 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_10 pypy3 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://www.mcs.anl.gov/petsc" +SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars debug fftw +fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" + +# readd sparse when suitesparse-5.6.0 is in tree +# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) +# $(use_with sparse suitesparse) \ +RDEPEND=" + virtual/blas + virtual/lapack + + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[int64?,mpi?] ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + dev-build/cmake + sys-apps/which + virtual/pkgconfig +" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + hdf5? ( mpi ) + hypre? ( mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" +PATCHES=( + "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" + "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local myopt + + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-c-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + tc-export AR RANLIB + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + AR="${AR}" \ + CFLAGS="${CFLAGS} -fPIC" \ + CPPFLAGS="${CPPFLAGS}" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ + FCFLAGS="${FCFLAGS} -fPIC" \ + FFLAGS="${FFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + MAKEFLAGS="${MAKEFLAGS}" \ + RANLIB="${RANLIB}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petsc" \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + --with-cmake:BOOL=1 \ + --with-gnu-compilers \ + --with-imagemagick=0 \ + --with-matlab=0 \ + --with-petsc-arch="${PETSC_ARCH}" \ + --with-precision=double \ + --with-python=0 \ + --with-shared-libraries \ + --with-single-library \ + --with-windows-graphics=0 \ + $(petsc_enable debug debugging) \ + $(petsc_enable fortran) \ + $(petsc_enable mpi) \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_enable threads pthread) \ + $(petsc_select complex-scalars scalar-type complex real) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ + $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ + $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ + $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(use int64 && echo "--with-index-size=64") \ + $(use_with boost) \ + $(use_with fftw) \ + $(use_with hdf5) \ + $(use_with X x) \ + $(use_with X x11) +} + +src_install() { + emake DESTDIR="${ED}" install + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petsc + LDPATH=${EPREFIX}/usr/$(get_libdir)/petsc/lib + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.18.2-r1.ebuild b/sci-mathematics/petsc/petsc-3.18.2-r1.ebuild new file mode 100644 index 000000000000..00ca06c193f2 --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.18.2-r1.ebuild @@ -0,0 +1,235 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} pypy3 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://www.mcs.anl.gov/petsc" +SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars debug +examples fftw +fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" + +# readd sparse when suitesparse-5.6.0 is in tree +# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) +# $(use_with sparse suitesparse) \ +RDEPEND=" + virtual/blas + virtual/lapack + + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[int64?,mpi?] ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + dev-build/cmake + virtual/pkgconfig +" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + fftw? ( mpi ) + hdf5? ( mpi ) + hypre? ( mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" +PATCHES=( + "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" + "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local myopt + + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-c-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + tc-export AR RANLIB + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + AR="${AR}" \ + CFLAGS="${CFLAGS} -fPIC" \ + CPPFLAGS="${CPPFLAGS}" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ + FCFLAGS="${FCFLAGS} -fPIC" \ + FFLAGS="${FFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + MAKEFLAGS="${MAKEFLAGS}" \ + RANLIB="${RANLIB}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + --with-cmake:BOOL=1 \ + --with-gnu-compilers \ + --with-imagemagick=0 \ + --with-petsc-arch="${PETSC_ARCH}" \ + --with-precision=double \ + --with-python=0 \ + --with-shared-libraries \ + --with-single-library \ + --with-windows-graphics=0 \ + $(petsc_enable debug debugging) \ + $(petsc_enable fortran) \ + $(petsc_enable mpi) \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_enable threads pthread) \ + $(petsc_select complex-scalars scalar-type complex real) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ + $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ + $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ + $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(use int64 && echo "--with-index-size=64") \ + $(use_with boost) \ + $(use_with fftw) \ + $(use_with hdf5) \ + $(use_with X x) \ + $(use_with X x11) +} + +src_install() { + emake DESTDIR="${ED}" install + + # + # Clean up the mess: + # + + # put all include directories under a proper subdirectory + mkdir "${ED}"/usr/include || die "mkdir failed (include)" + mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" + + # put libraries and pkconfig file into proper place + mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ + "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" + + # move share to proper location + mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" + + # fix pc files: + sed -i \ + -e 's#include$#include/petsc#' \ + -e "s#lib\$#$(get_libdir)#" \ + -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ + "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" + + # recreate a "valid" petscdir: + for i in "${ED}"/usr/$(get_libdir)/*; do + [ $(basename $i) = petscdir ] && continue + ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ + "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" + done + ln -s "${EPREFIX}"/usr/include/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" + mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" + ln -s "${EPREFIX}"/usr/share/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" + + # automatically symlink petsc matlab modules: + mkdir -p "${ED}"/usr/share/octave/site/m/ + ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" + + if use examples; then + mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" + mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" + ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" + docompress -x /usr/share/doc/${PF}/examples + else + rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" + fi + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.18.2.ebuild b/sci-mathematics/petsc/petsc-3.18.2.ebuild deleted file mode 100644 index 30f4763b16a3..000000000000 --- a/sci-mathematics/petsc/petsc-3.18.2.ebuild +++ /dev/null @@ -1,235 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..11} pypy3 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://www.mcs.anl.gov/petsc" -SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars debug +examples fftw -fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" - -# readd sparse when suitesparse-5.6.0 is in tree -# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) -# $(use_with sparse suitesparse) \ -RDEPEND=" - virtual/blas - virtual/lapack - - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[int64?,mpi?] ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} -" -BDEPEND=" - dev-build/cmake - virtual/pkgconfig -" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - fftw? ( mpi ) - hdf5? ( mpi ) - hypre? ( mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" -PATCHES=( - "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" - "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local myopt - - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-c-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - tc-export AR RANLIB - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - AR="${AR}" \ - CFLAGS="${CFLAGS} -fPIC" \ - CPPFLAGS="${CPPFLAGS}" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ - FCFLAGS="${FCFLAGS} -fPIC" \ - FFLAGS="${FFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - MAKEFLAGS="${MAKEFLAGS}" \ - RANLIB="${RANLIB}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - --with-cmake:BOOL=1 \ - --with-gnu-compilers \ - --with-imagemagick=0 \ - --with-petsc-arch="${PETSC_ARCH}" \ - --with-precision=double \ - --with-python=0 \ - --with-shared-libraries \ - --with-single-library \ - --with-windows-graphics=0 \ - $(petsc_enable debug debugging) \ - $(petsc_enable fortran) \ - $(petsc_enable mpi) \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_enable threads pthread) \ - $(petsc_select complex-scalars scalar-type complex real) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ - $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ - $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ - $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(use int64 && echo "--with-index-size=64") \ - $(use_with boost) \ - $(use_with fftw) \ - $(use_with hdf5) \ - $(use_with X x) \ - $(use_with X x11) -} - -src_install() { - emake DESTDIR="${ED}" install - - # - # Clean up the mess: - # - - # put all include directories under a proper subdirectory - mkdir "${ED}"/usr/include || die "mkdir failed (include)" - mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" - - # put libraries and pkconfig file into proper place - mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ - "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" - - # move share to proper location - mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" - - # fix pc files: - sed -i \ - -e 's#include$#include/petsc#' \ - -e "s#lib\$#$(get_libdir)#" \ - -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" - - # recreate a "valid" petscdir: - for i in "${ED}"/usr/$(get_libdir)/*; do - [ $(basename $i) = petscdir ] && continue - ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ - "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" - done - ln -s "${EPREFIX}"/usr/include/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" - mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" - ln -s "${EPREFIX}"/usr/share/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" - - # automatically symlink petsc matlab modules: - mkdir -p "${ED}"/usr/share/octave/site/m/ - ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" - - if use examples; then - mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" - mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" - ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" - docompress -x /usr/share/doc/${PF}/examples - else - rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" - fi - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir - EOF - doenvd 99petsc -} diff --git a/sci-mathematics/petsc/petsc-3.19.1-r1.ebuild b/sci-mathematics/petsc/petsc-3.19.1-r1.ebuild new file mode 100644 index 000000000000..00ca06c193f2 --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.19.1-r1.ebuild @@ -0,0 +1,235 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} pypy3 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://www.mcs.anl.gov/petsc" +SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars debug +examples fftw +fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" + +# readd sparse when suitesparse-5.6.0 is in tree +# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) +# $(use_with sparse suitesparse) \ +RDEPEND=" + virtual/blas + virtual/lapack + + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[int64?,mpi?] ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + dev-build/cmake + virtual/pkgconfig +" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + fftw? ( mpi ) + hdf5? ( mpi ) + hypre? ( mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" +PATCHES=( + "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" + "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local myopt + + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-c-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + tc-export AR RANLIB + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + AR="${AR}" \ + CFLAGS="${CFLAGS} -fPIC" \ + CPPFLAGS="${CPPFLAGS}" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ + FCFLAGS="${FCFLAGS} -fPIC" \ + FFLAGS="${FFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + MAKEFLAGS="${MAKEFLAGS}" \ + RANLIB="${RANLIB}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + --with-cmake:BOOL=1 \ + --with-gnu-compilers \ + --with-imagemagick=0 \ + --with-petsc-arch="${PETSC_ARCH}" \ + --with-precision=double \ + --with-python=0 \ + --with-shared-libraries \ + --with-single-library \ + --with-windows-graphics=0 \ + $(petsc_enable debug debugging) \ + $(petsc_enable fortran) \ + $(petsc_enable mpi) \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_enable threads pthread) \ + $(petsc_select complex-scalars scalar-type complex real) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ + $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ + $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ + $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(use int64 && echo "--with-index-size=64") \ + $(use_with boost) \ + $(use_with fftw) \ + $(use_with hdf5) \ + $(use_with X x) \ + $(use_with X x11) +} + +src_install() { + emake DESTDIR="${ED}" install + + # + # Clean up the mess: + # + + # put all include directories under a proper subdirectory + mkdir "${ED}"/usr/include || die "mkdir failed (include)" + mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" + + # put libraries and pkconfig file into proper place + mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ + "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" + + # move share to proper location + mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" + + # fix pc files: + sed -i \ + -e 's#include$#include/petsc#' \ + -e "s#lib\$#$(get_libdir)#" \ + -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ + "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" + + # recreate a "valid" petscdir: + for i in "${ED}"/usr/$(get_libdir)/*; do + [ $(basename $i) = petscdir ] && continue + ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ + "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" + done + ln -s "${EPREFIX}"/usr/include/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" + mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" + ln -s "${EPREFIX}"/usr/share/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" + + # automatically symlink petsc matlab modules: + mkdir -p "${ED}"/usr/share/octave/site/m/ + ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" + + if use examples; then + mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" + mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" + ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" + docompress -x /usr/share/doc/${PF}/examples + else + rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" + fi + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.19.1.ebuild b/sci-mathematics/petsc/petsc-3.19.1.ebuild deleted file mode 100644 index 30f4763b16a3..000000000000 --- a/sci-mathematics/petsc/petsc-3.19.1.ebuild +++ /dev/null @@ -1,235 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..11} pypy3 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://www.mcs.anl.gov/petsc" -SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars debug +examples fftw -fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" - -# readd sparse when suitesparse-5.6.0 is in tree -# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) -# $(use_with sparse suitesparse) \ -RDEPEND=" - virtual/blas - virtual/lapack - - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[int64?,mpi?] ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} -" -BDEPEND=" - dev-build/cmake - virtual/pkgconfig -" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - fftw? ( mpi ) - hdf5? ( mpi ) - hypre? ( mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" -PATCHES=( - "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" - "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local myopt - - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-c-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - tc-export AR RANLIB - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - AR="${AR}" \ - CFLAGS="${CFLAGS} -fPIC" \ - CPPFLAGS="${CPPFLAGS}" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ - FCFLAGS="${FCFLAGS} -fPIC" \ - FFLAGS="${FFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - MAKEFLAGS="${MAKEFLAGS}" \ - RANLIB="${RANLIB}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - --with-cmake:BOOL=1 \ - --with-gnu-compilers \ - --with-imagemagick=0 \ - --with-petsc-arch="${PETSC_ARCH}" \ - --with-precision=double \ - --with-python=0 \ - --with-shared-libraries \ - --with-single-library \ - --with-windows-graphics=0 \ - $(petsc_enable debug debugging) \ - $(petsc_enable fortran) \ - $(petsc_enable mpi) \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_enable threads pthread) \ - $(petsc_select complex-scalars scalar-type complex real) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ - $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ - $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ - $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(use int64 && echo "--with-index-size=64") \ - $(use_with boost) \ - $(use_with fftw) \ - $(use_with hdf5) \ - $(use_with X x) \ - $(use_with X x11) -} - -src_install() { - emake DESTDIR="${ED}" install - - # - # Clean up the mess: - # - - # put all include directories under a proper subdirectory - mkdir "${ED}"/usr/include || die "mkdir failed (include)" - mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" - - # put libraries and pkconfig file into proper place - mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ - "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" - - # move share to proper location - mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" - - # fix pc files: - sed -i \ - -e 's#include$#include/petsc#' \ - -e "s#lib\$#$(get_libdir)#" \ - -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" - - # recreate a "valid" petscdir: - for i in "${ED}"/usr/$(get_libdir)/*; do - [ $(basename $i) = petscdir ] && continue - ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ - "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" - done - ln -s "${EPREFIX}"/usr/include/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" - mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" - ln -s "${EPREFIX}"/usr/share/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" - - # automatically symlink petsc matlab modules: - mkdir -p "${ED}"/usr/share/octave/site/m/ - ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" - - if use examples; then - mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" - mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" - ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" - docompress -x /usr/share/doc/${PF}/examples - else - rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" - fi - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir - EOF - doenvd 99petsc -} diff --git a/sci-mathematics/petsc/petsc-3.19.2-r1.ebuild b/sci-mathematics/petsc/petsc-3.19.2-r1.ebuild new file mode 100644 index 000000000000..00ca06c193f2 --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.19.2-r1.ebuild @@ -0,0 +1,235 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} pypy3 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://www.mcs.anl.gov/petsc" +SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars debug +examples fftw +fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" + +# readd sparse when suitesparse-5.6.0 is in tree +# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) +# $(use_with sparse suitesparse) \ +RDEPEND=" + virtual/blas + virtual/lapack + + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[int64?,mpi?] ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + dev-build/cmake + virtual/pkgconfig +" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + fftw? ( mpi ) + hdf5? ( mpi ) + hypre? ( mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" +PATCHES=( + "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" + "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local myopt + + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-c-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + tc-export AR RANLIB + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + AR="${AR}" \ + CFLAGS="${CFLAGS} -fPIC" \ + CPPFLAGS="${CPPFLAGS}" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ + FCFLAGS="${FCFLAGS} -fPIC" \ + FFLAGS="${FFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + MAKEFLAGS="${MAKEFLAGS}" \ + RANLIB="${RANLIB}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + --with-cmake:BOOL=1 \ + --with-gnu-compilers \ + --with-imagemagick=0 \ + --with-petsc-arch="${PETSC_ARCH}" \ + --with-precision=double \ + --with-python=0 \ + --with-shared-libraries \ + --with-single-library \ + --with-windows-graphics=0 \ + $(petsc_enable debug debugging) \ + $(petsc_enable fortran) \ + $(petsc_enable mpi) \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_enable threads pthread) \ + $(petsc_select complex-scalars scalar-type complex real) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ + $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ + $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ + $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(use int64 && echo "--with-index-size=64") \ + $(use_with boost) \ + $(use_with fftw) \ + $(use_with hdf5) \ + $(use_with X x) \ + $(use_with X x11) +} + +src_install() { + emake DESTDIR="${ED}" install + + # + # Clean up the mess: + # + + # put all include directories under a proper subdirectory + mkdir "${ED}"/usr/include || die "mkdir failed (include)" + mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" + + # put libraries and pkconfig file into proper place + mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ + "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" + + # move share to proper location + mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" + + # fix pc files: + sed -i \ + -e 's#include$#include/petsc#' \ + -e "s#lib\$#$(get_libdir)#" \ + -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ + "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" + + # recreate a "valid" petscdir: + for i in "${ED}"/usr/$(get_libdir)/*; do + [ $(basename $i) = petscdir ] && continue + ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ + "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" + done + ln -s "${EPREFIX}"/usr/include/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" + mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" + ln -s "${EPREFIX}"/usr/share/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" + + # automatically symlink petsc matlab modules: + mkdir -p "${ED}"/usr/share/octave/site/m/ + ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" + + if use examples; then + mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" + mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" + ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" + docompress -x /usr/share/doc/${PF}/examples + else + rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" + fi + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.19.2.ebuild b/sci-mathematics/petsc/petsc-3.19.2.ebuild deleted file mode 100644 index 30f4763b16a3..000000000000 --- a/sci-mathematics/petsc/petsc-3.19.2.ebuild +++ /dev/null @@ -1,235 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..11} pypy3 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://www.mcs.anl.gov/petsc" -SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars debug +examples fftw -fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" - -# readd sparse when suitesparse-5.6.0 is in tree -# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) -# $(use_with sparse suitesparse) \ -RDEPEND=" - virtual/blas - virtual/lapack - - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[int64?,mpi?] ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} -" -BDEPEND=" - dev-build/cmake - virtual/pkgconfig -" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - fftw? ( mpi ) - hdf5? ( mpi ) - hypre? ( mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" -PATCHES=( - "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" - "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local myopt - - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-c-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - tc-export AR RANLIB - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - AR="${AR}" \ - CFLAGS="${CFLAGS} -fPIC" \ - CPPFLAGS="${CPPFLAGS}" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ - FCFLAGS="${FCFLAGS} -fPIC" \ - FFLAGS="${FFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - MAKEFLAGS="${MAKEFLAGS}" \ - RANLIB="${RANLIB}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - --with-cmake:BOOL=1 \ - --with-gnu-compilers \ - --with-imagemagick=0 \ - --with-petsc-arch="${PETSC_ARCH}" \ - --with-precision=double \ - --with-python=0 \ - --with-shared-libraries \ - --with-single-library \ - --with-windows-graphics=0 \ - $(petsc_enable debug debugging) \ - $(petsc_enable fortran) \ - $(petsc_enable mpi) \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_enable threads pthread) \ - $(petsc_select complex-scalars scalar-type complex real) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ - $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ - $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ - $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(use int64 && echo "--with-index-size=64") \ - $(use_with boost) \ - $(use_with fftw) \ - $(use_with hdf5) \ - $(use_with X x) \ - $(use_with X x11) -} - -src_install() { - emake DESTDIR="${ED}" install - - # - # Clean up the mess: - # - - # put all include directories under a proper subdirectory - mkdir "${ED}"/usr/include || die "mkdir failed (include)" - mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" - - # put libraries and pkconfig file into proper place - mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ - "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" - - # move share to proper location - mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" - - # fix pc files: - sed -i \ - -e 's#include$#include/petsc#' \ - -e "s#lib\$#$(get_libdir)#" \ - -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" - - # recreate a "valid" petscdir: - for i in "${ED}"/usr/$(get_libdir)/*; do - [ $(basename $i) = petscdir ] && continue - ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ - "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" - done - ln -s "${EPREFIX}"/usr/include/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" - mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" - ln -s "${EPREFIX}"/usr/share/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" - - # automatically symlink petsc matlab modules: - mkdir -p "${ED}"/usr/share/octave/site/m/ - ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" - - if use examples; then - mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" - mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" - ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" - docompress -x /usr/share/doc/${PF}/examples - else - rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" - fi - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir - EOF - doenvd 99petsc -} diff --git a/sci-mathematics/petsc/petsc-3.19.4-r1.ebuild b/sci-mathematics/petsc/petsc-3.19.4-r1.ebuild new file mode 100644 index 000000000000..e24eda87a3af --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.19.4-r1.ebuild @@ -0,0 +1,240 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} pypy3 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://www.mcs.anl.gov/petsc" +SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars debug +examples fftw +fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" + +# readd sparse when suitesparse-5.6.0 is in tree +# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) +# $(use_with sparse suitesparse) \ +RDEPEND=" + virtual/blas + virtual/lapack + + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[int64?,mpi?] ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + dev-build/cmake + virtual/pkgconfig +" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + fftw? ( mpi ) + hdf5? ( mpi ) + hypre? ( mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" +PATCHES=( + "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" + "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # -Werror=lto-type-mismatch + # https://bugs.gentoo.org/863260 + # https://gitlab.com/petsc/petsc/-/issues/1560 + filter-lto + + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local myopt + + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-c-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + tc-export AR RANLIB + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + AR="${AR}" \ + CFLAGS="${CFLAGS} -fPIC" \ + CPPFLAGS="${CPPFLAGS}" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ + FCFLAGS="${FCFLAGS} -fPIC" \ + FFLAGS="${FFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + MAKEFLAGS="${MAKEFLAGS}" \ + RANLIB="${RANLIB}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + --with-cmake:BOOL=1 \ + --with-gnu-compilers \ + --with-imagemagick=0 \ + --with-petsc-arch="${PETSC_ARCH}" \ + --with-precision=double \ + --with-python=0 \ + --with-shared-libraries \ + --with-single-library \ + --with-windows-graphics=0 \ + $(petsc_enable debug debugging) \ + $(petsc_enable fortran) \ + $(petsc_enable mpi) \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_enable threads pthread) \ + $(petsc_select complex-scalars scalar-type complex real) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ + $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ + $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ + $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(use int64 && echo "--with-index-size=64") \ + $(use_with boost) \ + $(use_with fftw) \ + $(use_with hdf5) \ + $(use_with X x) \ + $(use_with X x11) +} + +src_install() { + emake DESTDIR="${ED}" install + + # + # Clean up the mess: + # + + # put all include directories under a proper subdirectory + mkdir "${ED}"/usr/include || die "mkdir failed (include)" + mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" + + # put libraries and pkconfig file into proper place + mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ + "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" + + # move share to proper location + mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" + + # fix pc files: + sed -i \ + -e 's#include$#include/petsc#' \ + -e "s#lib\$#$(get_libdir)#" \ + -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ + "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" + + # recreate a "valid" petscdir: + for i in "${ED}"/usr/$(get_libdir)/*; do + [ $(basename $i) = petscdir ] && continue + ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ + "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" + done + ln -s "${EPREFIX}"/usr/include/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" + mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" + ln -s "${EPREFIX}"/usr/share/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" + + # automatically symlink petsc matlab modules: + mkdir -p "${ED}"/usr/share/octave/site/m/ + ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" + + if use examples; then + mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" + mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" + ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" + docompress -x /usr/share/doc/${PF}/examples + else + rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" + fi + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.19.4.ebuild b/sci-mathematics/petsc/petsc-3.19.4.ebuild deleted file mode 100644 index fcd1c43750f1..000000000000 --- a/sci-mathematics/petsc/petsc-3.19.4.ebuild +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..11} pypy3 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://www.mcs.anl.gov/petsc" -SRC_URI="http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${P}.tar.gz" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars debug +examples fftw -fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" - -# readd sparse when suitesparse-5.6.0 is in tree -# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) -# $(use_with sparse suitesparse) \ -RDEPEND=" - virtual/blas - virtual/lapack - - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[int64?,mpi?] ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} -" -BDEPEND=" - dev-build/cmake - virtual/pkgconfig -" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - fftw? ( mpi ) - hdf5? ( mpi ) - hypre? ( mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" -PATCHES=( - "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" - "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # -Werror=lto-type-mismatch - # https://bugs.gentoo.org/863260 - # https://gitlab.com/petsc/petsc/-/issues/1560 - filter-lto - - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local myopt - - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-c-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - tc-export AR RANLIB - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - AR="${AR}" \ - CFLAGS="${CFLAGS} -fPIC" \ - CPPFLAGS="${CPPFLAGS}" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ - FCFLAGS="${FCFLAGS} -fPIC" \ - FFLAGS="${FFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - MAKEFLAGS="${MAKEFLAGS}" \ - RANLIB="${RANLIB}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - --with-cmake:BOOL=1 \ - --with-gnu-compilers \ - --with-imagemagick=0 \ - --with-petsc-arch="${PETSC_ARCH}" \ - --with-precision=double \ - --with-python=0 \ - --with-shared-libraries \ - --with-single-library \ - --with-windows-graphics=0 \ - $(petsc_enable debug debugging) \ - $(petsc_enable fortran) \ - $(petsc_enable mpi) \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_enable threads pthread) \ - $(petsc_select complex-scalars scalar-type complex real) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ - $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ - $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ - $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(use int64 && echo "--with-index-size=64") \ - $(use_with boost) \ - $(use_with fftw) \ - $(use_with hdf5) \ - $(use_with X x) \ - $(use_with X x11) -} - -src_install() { - emake DESTDIR="${ED}" install - - # - # Clean up the mess: - # - - # put all include directories under a proper subdirectory - mkdir "${ED}"/usr/include || die "mkdir failed (include)" - mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" - - # put libraries and pkconfig file into proper place - mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ - "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" - - # move share to proper location - mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" - - # fix pc files: - sed -i \ - -e 's#include$#include/petsc#' \ - -e "s#lib\$#$(get_libdir)#" \ - -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" - - # recreate a "valid" petscdir: - for i in "${ED}"/usr/$(get_libdir)/*; do - [ $(basename $i) = petscdir ] && continue - ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ - "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" - done - ln -s "${EPREFIX}"/usr/include/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" - mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" - ln -s "${EPREFIX}"/usr/share/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" - - # automatically symlink petsc matlab modules: - mkdir -p "${ED}"/usr/share/octave/site/m/ - ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" - - if use examples; then - mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" - mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" - ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" - docompress -x /usr/share/doc/${PF}/examples - else - rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" - fi - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir - EOF - doenvd 99petsc -} diff --git a/sci-mathematics/petsc/petsc-3.20.5-r1.ebuild b/sci-mathematics/petsc/petsc-3.20.5-r1.ebuild new file mode 100644 index 000000000000..98e1795c95fc --- /dev/null +++ b/sci-mathematics/petsc/petsc-3.20.5-r1.ebuild @@ -0,0 +1,240 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} pypy3 ) + +inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs + +DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" +HOMEPAGE="https://petsc.org/release/" +SRC_URI="https://web.cels.anl.gov/projects/petsc/download/release-snapshots/${P}.tar.gz" + +LICENSE="BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="afterimage boost complex-scalars debug +examples fftw +fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" + +# readd sparse when suitesparse-5.6.0 is in tree +# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) +# $(use_with sparse suitesparse) \ +RDEPEND=" + virtual/blas + virtual/lapack + + afterimage? ( media-libs/libafterimage ) + boost? ( dev-libs/boost ) + fftw? ( sci-libs/fftw:3.0[mpi?] ) + hdf5? ( sci-libs/hdf5:=[mpi?] ) + hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) + metis? ( >=sci-libs/parmetis-4 ) + mpi? ( virtual/mpi[fortran?] ) + mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) + scotch? ( sci-libs/scotch[int64?,mpi?] ) + superlu? ( >=sci-libs/superlu-5 ) + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + ${PYTHON_DEPS} +" +BDEPEND=" + dev-build/cmake + virtual/pkgconfig +" + +# hypre and superlu curretly exclude each other due to missing linking to hypre +# if both are enabled +REQUIRED_USE=" + afterimage? ( X ) + complex-scalars? ( !hypre !superlu ) + fftw? ( mpi ) + hdf5? ( mpi ) + hypre? ( mpi !superlu ) + mumps? ( mpi scotch ) + scotch? ( mpi ) + superlu? ( !hypre ) +" +PATCHES=( + "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" + "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch +) + +# petsc uses --with-blah=1 and --with-blah=0 to en/disable options +petsc_enable() { + use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" +} +# add external library: +# petsc_with use_flag libname libdir +# petsc_with use_flag libname include linking_libs +petsc_with() { + local myuse p=${2:-${1}} + if use ${1}; then + myuse="--with-${p}=1" + if [[ $# -ge 4 ]]; then + myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" + shift 3 + myuse="${myuse} --with-${p}-lib=$@" + else + myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" + fi + else + myuse="--with-${p}=0" + fi + echo ${myuse} +} + +# select between configure options depending on use flag +petsc_select() { + use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" +} + +src_configure() { + # -Werror=lto-type-mismatch + # https://bugs.gentoo.org/863260 + # https://gitlab.com/petsc/petsc/-/issues/1560 + filter-lto + + # bug 548498 + # PETSc runs mpi processes during configure that result in a sandbox + # violation by trying to open /proc/mtrr rw. This is not easy to + # mitigate because it happens in libpciaccess.so called by libhwloc.so, + # which is used by libmpi.so. + addpredict /proc/mtrr + # if mpi is built with knem support it needs /dev/knem too + addpredict /dev/knem + + # configureMPITypes with openmpi-2* insists on accessing the scaling + # governor rw. + addpredict /sys/devices/system/cpu/ + + # bug 771711 + # configureMPIEXEC and configureMPITypes access /dev/nvidiactl + addpredict /dev/nvidiactl + + # bug 810841 + addpredict /dev/kfd + + local myopt + + use debug && myopt="debug" || myopt="opt" + + # environmental variables expected by petsc during build + + export PETSC_DIR="${S}" + export PETSC_ARCH="linux-gnu-c-${myopt}" + + if use debug; then + strip-flags + filter-flags -O* + fi + + tc-export AR RANLIB + + # C Support on CXX builds is enabled if possible i.e. when not using + # complex scalars (no complex type for both available at the same time) + + econf \ + scrollOutput=1 \ + AR="${AR}" \ + CFLAGS="${CFLAGS} -fPIC" \ + CPPFLAGS="${CPPFLAGS}" \ + CXXFLAGS="${CXXFLAGS} -fPIC" \ + CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ + FCFLAGS="${FCFLAGS} -fPIC" \ + FFLAGS="${FFLAGS} -fPIC" \ + LDFLAGS="${LDFLAGS}" \ + MAKEFLAGS="${MAKEFLAGS}" \ + RANLIB="${RANLIB}" \ + --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ + --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ + --with-cmake:BOOL=1 \ + --with-gnu-compilers \ + --with-imagemagick=0 \ + --with-petsc-arch="${PETSC_ARCH}" \ + --with-precision=double \ + --with-python=0 \ + --with-shared-libraries \ + --with-single-library \ + --with-windows-graphics=0 \ + $(petsc_enable debug debugging) \ + $(petsc_enable fortran) \ + $(petsc_enable mpi) \ + $(petsc_enable mpi mpi-compilers) \ + $(petsc_enable threads pthread) \ + $(petsc_select complex-scalars scalar-type complex real) \ + $(petsc_select mpi cc mpicc $(tc-getCC)) \ + $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ + $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ + $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ + $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ + $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ + $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ + $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ + $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ + $(use int64 && echo "--with-index-size=64") \ + $(use_with boost) \ + $(use_with fftw) \ + $(use_with hdf5) \ + $(use_with X x) \ + $(use_with X x11) +} + +src_install() { + emake DESTDIR="${ED}" install + + # + # Clean up the mess: + # + + # put all include directories under a proper subdirectory + mkdir "${ED}"/usr/include || die "mkdir failed (include)" + mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" + + # put libraries and pkconfig file into proper place + mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ + "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" + + # move share to proper location + mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" + + # fix pc files: + sed -i \ + -e 's#include$#include/petsc#' \ + -e "s#lib\$#$(get_libdir)#" \ + -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ + "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" + + # recreate a "valid" petscdir: + for i in "${ED}"/usr/$(get_libdir)/*; do + [ $(basename $i) = petscdir ] && continue + ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ + "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" + done + ln -s "${EPREFIX}"/usr/include/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" + mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" + ln -s "${EPREFIX}"/usr/share/petsc/ \ + "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" + + # automatically symlink petsc matlab modules: + mkdir -p "${ED}"/usr/share/octave/site/m/ + ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" + + if use examples; then + mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" + mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" + ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" + docompress -x /usr/share/doc/${PF}/examples + else + rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" + fi + + # add PETSC_DIR to environmental variables + cat >> 99petsc <<- EOF + PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir + EOF + doenvd 99petsc +} diff --git a/sci-mathematics/petsc/petsc-3.20.5.ebuild b/sci-mathematics/petsc/petsc-3.20.5.ebuild deleted file mode 100644 index ccf9449db9cb..000000000000 --- a/sci-mathematics/petsc/petsc-3.20.5.ebuild +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{10..11} pypy3 ) - -inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs - -DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" -HOMEPAGE="https://petsc.org/release/" -SRC_URI="https://web.cels.anl.gov/projects/petsc/download/release-snapshots/${P}.tar.gz" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="afterimage boost complex-scalars debug +examples fftw -fortran hdf5 hypre int64 mpi metis mumps scotch superlu threads X" - -# readd sparse when suitesparse-5.6.0 is in tree -# sparse? ( >=sci-libs/suitesparse-5.6.0 >=sci-libs/cholmod-1.7.0 ) -# $(use_with sparse suitesparse) \ -RDEPEND=" - virtual/blas - virtual/lapack - - afterimage? ( media-libs/libafterimage ) - boost? ( dev-libs/boost ) - fftw? ( sci-libs/fftw:3.0[mpi?] ) - hdf5? ( sci-libs/hdf5[mpi?] ) - hypre? ( >=sci-libs/hypre-2.18.0[int64?,mpi?] ) - metis? ( >=sci-libs/parmetis-4 ) - mpi? ( virtual/mpi[fortran?] ) - mumps? ( sci-libs/mumps[mpi?] sci-libs/scalapack ) - scotch? ( sci-libs/scotch[int64?,mpi?] ) - superlu? ( >=sci-libs/superlu-5 ) - X? ( x11-libs/libX11 ) -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} -" -BDEPEND=" - dev-build/cmake - virtual/pkgconfig -" - -# hypre and superlu curretly exclude each other due to missing linking to hypre -# if both are enabled -REQUIRED_USE=" - afterimage? ( X ) - complex-scalars? ( !hypre !superlu ) - fftw? ( mpi ) - hdf5? ( mpi ) - hypre? ( mpi !superlu ) - mumps? ( mpi scotch ) - scotch? ( mpi ) - superlu? ( !hypre ) -" -PATCHES=( - "${FILESDIR}/${PN}-3.7.0-disable-rpath.patch" - "${FILESDIR}"/${PN}-3.16.0-fix_sandbox_violation.patch -) - -# petsc uses --with-blah=1 and --with-blah=0 to en/disable options -petsc_enable() { - use "$1" && echo "--with-${2:-$1}=1" || echo "--with-${2:-$1}=0" -} -# add external library: -# petsc_with use_flag libname libdir -# petsc_with use_flag libname include linking_libs -petsc_with() { - local myuse p=${2:-${1}} - if use ${1}; then - myuse="--with-${p}=1" - if [[ $# -ge 4 ]]; then - myuse="${myuse} --with-${p}-include=${EPREFIX}${3}" - shift 3 - myuse="${myuse} --with-${p}-lib=$@" - else - myuse="${myuse} --with-${p}-dir=${EPREFIX}${3:-/usr}" - fi - else - myuse="--with-${p}=0" - fi - echo ${myuse} -} - -# select between configure options depending on use flag -petsc_select() { - use "$1" && echo "--with-$2=$3" || echo "--with-$2=$4" -} - -src_configure() { - # -Werror=lto-type-mismatch - # https://bugs.gentoo.org/863260 - # https://gitlab.com/petsc/petsc/-/issues/1560 - filter-lto - - # bug 548498 - # PETSc runs mpi processes during configure that result in a sandbox - # violation by trying to open /proc/mtrr rw. This is not easy to - # mitigate because it happens in libpciaccess.so called by libhwloc.so, - # which is used by libmpi.so. - addpredict /proc/mtrr - # if mpi is built with knem support it needs /dev/knem too - addpredict /dev/knem - - # configureMPITypes with openmpi-2* insists on accessing the scaling - # governor rw. - addpredict /sys/devices/system/cpu/ - - # bug 771711 - # configureMPIEXEC and configureMPITypes access /dev/nvidiactl - addpredict /dev/nvidiactl - - # bug 810841 - addpredict /dev/kfd - - local myopt - - use debug && myopt="debug" || myopt="opt" - - # environmental variables expected by petsc during build - - export PETSC_DIR="${S}" - export PETSC_ARCH="linux-gnu-c-${myopt}" - - if use debug; then - strip-flags - filter-flags -O* - fi - - tc-export AR RANLIB - - # C Support on CXX builds is enabled if possible i.e. when not using - # complex scalars (no complex type for both available at the same time) - - econf \ - scrollOutput=1 \ - AR="${AR}" \ - CFLAGS="${CFLAGS} -fPIC" \ - CPPFLAGS="${CPPFLAGS}" \ - CXXFLAGS="${CXXFLAGS} -fPIC" \ - CXXOPTFLAGS="${CXXFLAGS} -fPIC" \ - FCFLAGS="${FCFLAGS} -fPIC" \ - FFLAGS="${FFLAGS} -fPIC" \ - LDFLAGS="${LDFLAGS}" \ - MAKEFLAGS="${MAKEFLAGS}" \ - RANLIB="${RANLIB}" \ - --prefix="${EPREFIX}/usr/$(get_libdir)/petscdir/" \ - --with-blas-lapack-lib="$($(tc-getPKG_CONFIG) --libs blas lapack)" \ - --with-cmake:BOOL=1 \ - --with-gnu-compilers \ - --with-imagemagick=0 \ - --with-petsc-arch="${PETSC_ARCH}" \ - --with-precision=double \ - --with-python=0 \ - --with-shared-libraries \ - --with-single-library \ - --with-windows-graphics=0 \ - $(petsc_enable debug debugging) \ - $(petsc_enable fortran) \ - $(petsc_enable mpi) \ - $(petsc_enable mpi mpi-compilers) \ - $(petsc_enable threads pthread) \ - $(petsc_select complex-scalars scalar-type complex real) \ - $(petsc_select mpi cc mpicc $(tc-getCC)) \ - $(petsc_select mpi cxx mpicxx $(tc-getCXX)) \ - $(petsc_with afterimage afterimage /usr/include/libAfterImage -lAfterImage) \ - $(petsc_with hypre hypre /usr/include/hypre -lHYPRE) \ - $(petsc_with superlu superlu /usr/include/superlu -lsuperlu) \ - $(petsc_with scotch ptscotch /usr/include/scotch [-lptesmumps,-lptscotch,-lptscotcherr,-lscotch,-lscotcherr]) \ - $(petsc_with mumps scalapack /usr/include/scalapack -lscalapack) \ - $(petsc_with mumps mumps /usr/include [-lcmumps,-ldmumps,-lsmumps,-lzmumps,-lmumps_common,-lpord]) \ - $(use fortran && echo "$(petsc_select mpi fc mpif77 $(tc-getF77))") \ - $(use int64 && echo "--with-index-size=64") \ - $(use_with boost) \ - $(use_with fftw) \ - $(use_with hdf5) \ - $(use_with X x) \ - $(use_with X x11) -} - -src_install() { - emake DESTDIR="${ED}" install - - # - # Clean up the mess: - # - - # put all include directories under a proper subdirectory - mkdir "${ED}"/usr/include || die "mkdir failed (include)" - mv "${ED}"/usr/{$(get_libdir)/petscdir/include,include/petsc} || die "mv failed (include)" - - # put libraries and pkconfig file into proper place - mv "${ED}"/usr/$(get_libdir)/petscdir/lib/{libpetsc*,pkgconfig} \ - "${ED}/usr/$(get_libdir)" || die "mv failed (lib)" - - # move share to proper location - mv "${ED}"/usr/{$(get_libdir)/petscdir/share,share} || die "mv failed (share)" - - # fix pc files: - sed -i \ - -e 's#include$#include/petsc#' \ - -e "s#lib\$#$(get_libdir)#" \ - -e "s#^prefix=.*petscdir\$#prefix=${EPREFIX}/usr#" \ - "${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)" - - # recreate a "valid" petscdir: - for i in "${ED}"/usr/$(get_libdir)/*; do - [ $(basename $i) = petscdir ] && continue - ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \ - "${ED}/usr/$(get_libdir)/petscdir/lib/$(basename $i)" || die "ln failed (petscdir)" - done - ln -s "${EPREFIX}"/usr/include/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/include" || die "ln failed (petscdir)" - mkdir "${ED}/usr/$(get_libdir)/petscdir/share" || die "mkdir fialed (petscdir)" - ln -s "${EPREFIX}"/usr/share/petsc/ \ - "${ED}/usr/$(get_libdir)/petscdir/share/petsc" || die "ln failed (petscdir)" - - # automatically symlink petsc matlab modules: - mkdir -p "${ED}"/usr/share/octave/site/m/ - ln -s "${EPREFIX}"/usr/share/petsc/matlab "${ED}"/usr/share/octave/site/m/petsc || die "ln failed (matlab)" - - if use examples; then - mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)" - mv "${ED}"/usr/share/petsc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)" - ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/petsc/examples || die "ln failed (examples)" - docompress -x /usr/share/doc/${PF}/examples - else - rm -r "${ED}"/usr/share/petsc/examples || die "rm failed (examples)" - fi - - # add PETSC_DIR to environmental variables - cat >> 99petsc <<- EOF - PETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petscdir - EOF - doenvd 99petsc -} -- cgit v1.2.3