forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sci-mathematics/petsc: version bump to 3.12.1
Package-Manager: Portage-2.3.78, Repoman-2.3.17 Signed-off-by: Matthias Maier <[email protected]>
- Loading branch information
Showing
3 changed files
with
195 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
DIST petsc-3.11.3.tar.gz 33279017 BLAKE2B 870b8245e5e06d8538ea3ee1d01fa2cebade4a0bd79dfcf17d74e6201f41d21ca021e206744ece28847b434ece142a2789851b5514a8a1e3f82a8551288b695b SHA512 e545f69e87bc72950939ff3cec3e0ba225a5b3e7f1cb93b0fb6123194eb7240ac1d97ba397235d8ab872c653caab1427673124e5e1e706b796c0ae46ec1bcffa | ||
DIST petsc-3.12.1.tar.gz 34592587 BLAKE2B b48056a1fe1d507338f7d145f5fceeab2b2f576470d8af90c9d7828de9b775daadf11198fecc46b5e48fcf1eb38addb366e3a908dab5c4ffaf7f9b71ff17b3d8 SHA512 df33170922c0b34136d2fd5bdc3c68a80d3a5873d66bfb03b2cea4a6456393c7181a8da673911b89ea0fcb51d5fd89b5b4c8b76ddb1df573180a92d029fbc1fb |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,193 @@ | ||
# Copyright 1999-2019 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=7 | ||
|
||
PYTHON_COMPAT=( python2_7 ) | ||
|
||
inherit flag-o-matic fortran-2 python-any-r1 toolchain-funcs | ||
|
||
DESCRIPTION="Portable, Extensible Toolkit for Scientific Computation" | ||
HOMEPAGE="http://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 cxx debug doc 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.8.0b[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-util/cmake | ||
" | ||
|
||
PATCHES=( | ||
"${FILESDIR}"/${PN}-3.7.0-disable-rpath.patch \ | ||
"${FILESDIR}"/${PN}-3.9.0-fix_sandbox_violation.patch | ||
) | ||
|
||
src_prepare() { | ||
default | ||
|
||
sed -i -e 's%/usr/bin/env python%/usr/bin/env python2%' configure || die | ||
} | ||
|
||
# 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/ | ||
|
||
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) \ | ||
$(petsc_with sparse suitesparse) \ | ||
$(petsc_with superlu superlu \ | ||
/usr/include/superlu -lsuperlu) \ | ||
$(petsc_with X x) \ | ||
$(petsc_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 \ | ||
$(petsc_with boost) \ | ||
$(petsc_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 | ||
|
||
if use doc ; then | ||
docinto html | ||
dodoc -r docs/*.html docs/changes docs/manualpages | ||
fi | ||
} |