sci-mathematics/slepc: add 3.23.1

Closes: https://bugs.gentoo.org/951047
Closes: https://bugs.gentoo.org/952691
Closes: https://bugs.gentoo.org/958033
Signed-off-by: Matthias Maier <tamiko@gentoo.org>
This commit is contained in:
Matthias Maier 2025-06-28 12:58:58 -05:00
parent 430d378504
commit a6fc307b4b
No known key found for this signature in database
GPG Key ID: 9208A532F2CFB0CE
2 changed files with 127 additions and 0 deletions

View File

@ -1,2 +1,4 @@
DIST slepc-3.22.1.tar.gz 1867493 BLAKE2B 812ce600ef88ff6cb3933f33d5c39f36402e0980f66988d21e2401d1eddd58ae0176ca09e457bbdcee6ba45d8bca33d829090c142255b27a0a06281bb682c14d SHA512 f82c6c867a720c3c4d02187f664f3889116ea0a926ecb19bf7153a64518721f3cc0497badf93df680155463d6b5484884d2b42556aa1140b6dfaa5ef8b9db6db
DIST slepc-3.23.1.tar.gz 1769307 BLAKE2B 99ca6841d5d089577cb1f2b2892d0d263a8187104a6eed14a20294d5e23021dc0f02bfa4bc9e08c3ea3b71feeb31788ca6aa2c895cbf3c149614fcb7edbb7e3b SHA512 b91d1b014cab0f53ada0b57c796d0cea2d1baf2d6ea093e351164e6ab34cf11d3d159120851ac40f3bd4ae8b7f15f185700e3f6dd2312bf4e6aeb5203770a0ad
DIST slepc-with-docs-3.22.1.tar.gz 6492734 BLAKE2B d019dc15bb27e82579bd56c90f100787567ff18c9c78664fa26f290323af545a95b970d5bf679d0fac992b4860d4c2d2d7617d95af24cf05e875301469550585 SHA512 c46b47825a50a9f8433b7710ba8a1d43371bd7acecb41498a710fd9b1b1e4bf3f50613f22e39c2f02cd19779cadb3ffe22bc0b57b123871c0f2a19c0e9298723
DIST slepc-with-docs-3.23.1.tar.gz 6417187 BLAKE2B 81c56d8c2b0eacdc1763822819f4db98eb91cbde0f80f22652d3e14ba48245248fbe53e9c5df9740f223d81b5ad1c45b8069dbeafb2015aea33f5c3f11653d35 SHA512 b6c082b4ce3a59bc530f37f73d6ec675c75a1fa1cc7a96f2e2705bbec809f74b95dafed60dd3f41f4acfaed4ce9794f816b48697562b2c8d2706361c7c63f147

View File

@ -0,0 +1,125 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..13} )
inherit python-any-r1
DESCRIPTION="Scalable Library for Eigenvalue Problem Computations"
HOMEPAGE="https://slepc.upv.es/"
SRC_URI="
!doc? ( https://slepc.upv.es/download/distrib/${P}.tar.gz )
doc? ( https://slepc.upv.es/download/distrib/${PN}-with-docs-${PV}.tar.gz )"
LICENSE="LGPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="arpack complex-scalars doc +examples mpi"
REQUIRED_USE="arpack? ( mpi )"
RDEPEND="
=sci-mathematics/petsc-$(ver_cut 1-2)*:=[examples,mpi=,complex-scalars=]
arpack? ( sci-libs/arpack[mpi=] )
mpi? ( virtual/mpi )
"
DEPEND="${RDEPEND}
${PYTHON_DEPS}
virtual/pkgconfig
dev-build/cmake
"
MAKEOPTS="${MAKEOPTS} V=1"
src_unpack() {
use doc || unpack ${P}.tar.gz
use doc && unpack ${PN}-with-docs-${PV}.tar.gz
}
src_configure() {
# *sigh*
addpredict "${PETSC_DIR}"/.nagged
# Make sure that the environment is set up correctly:
unset PETSC_DIR
unset PETSC_ARCH
source "${EPREFIX}"/etc/env.d/99petsc
export PETSC_DIR
export PETSC_ARCH
export SLEPC_DIR="${S}"
# configure is a custom python script and doesn't want to have default
# configure arguments that we set with econf
if use arpack; then
./configure \
--prefix="${EPREFIX}/usr/$(get_libdir)/slepcdir" \
--with-arpack=1 \
--with-arpack-lib="$(usex mpi "-lparpack -larpack" "-larpack")"
else
./configure \
--prefix="${EPREFIX}/usr/$(get_libdir)/slepcdir" \
--with-arpack=0
fi
}
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)/slepcdir/include,include/slepc} || die "mv failed (include)"
# put libraries and pkconfig file into proper place
mv "${ED}"/usr/$(get_libdir)/slepcdir/lib/{libslepc*,pkgconfig} \
"${ED}/usr/$(get_libdir)" || die "mv failed (lib)"
# move share to proper location
mv "${ED}"/usr/{$(get_libdir)/slepcdir/share,share} || die "mv failed (share)"
# fix pc files:
sed -i \
-e 's#include$#include/slepc#' \
-e "s#lib\$#$(get_libdir)#" \
-e "s#^prefix=.*slepcdir\$#prefix=${EPREFIX}/usr#" \
"${ED}"/usr/$(get_libdir)/pkgconfig/*.pc || die "sed failed (pkgconfig)"
# recreate a "valid" slepcdir:
for i in "${ED}"/usr/$(get_libdir)/*; do
[ $(basename $i) = slepcdir ] && continue
ln -s "${EPREFIX}/usr/$(get_libdir)/$(basename $i)" \
"${ED}/usr/$(get_libdir)/slepcdir/lib/$(basename $i)" || die "ln failed (slepcdir)"
done
ln -s "${EPREFIX}"/usr/include/slepc/ \
"${ED}/usr/$(get_libdir)/slepcdir/include" || die "ln failed (slepcdir)"
mkdir "${ED}/usr/$(get_libdir)/slepcdir/share" || die "mkdir fialed (slepcdir)"
ln -s "${EPREFIX}"/usr/share/slepc/ \
"${ED}/usr/$(get_libdir)/slepcdir/share/slepc" || die "ln failed (slepcdir)"
if use examples; then
mkdir -p "${ED}"/usr/share/doc/${PF} || die "mkdir failed (examples)"
mv "${ED}"/usr/share/slepc/examples "${ED}"/usr/share/doc/${PF} || die "mv failed (examples)"
ln -s "${EPREFIX}"/usr/share/doc/${PF}/examples "${ED}"/usr/share/slepc/examples || die "ln failed (examples)"
docompress -x /usr/share/doc/${PF}/examples
else
rm -r "${ED}"/usr/share/slepc/examples || die "rm failed (examples)"
fi
if use doc ; then
dodoc docs/slepc.pdf
docinto html
dodoc -r docs/*.html docs/manualpages
fi
# add PETSC_DIR to environmental variables
cat >> 99slepc <<- EOF
SLEPC_DIR=${EPREFIX}/usr/$(get_libdir)/slepcdir
EOF
doenvd 99slepc
}