mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
sci-libs/mumps: version bump to 5.1.2
Signed-off-by: Matthias Maier <tamiko@gentoo.org> Package-Manager: Portage-2.3.50, Repoman-2.3.11
This commit is contained in:
@@ -1 +1,2 @@
|
||||
DIST MUMPS_4.10.0.tar.gz 2481516 BLAKE2B ddd3f28bf9627806e9bb5597adc94e2b8f504adf220a8a64ea50630edbde75358bd97e91a53ebd341132a34db5d7248d32a892a060bdf8f205c8aac3b9c88722 SHA512 348df048618ea2086fbe805a90f2e31f57e0db4aa6f4843a0e3c7142bac80fe45e54768e65921657c970bc286b59c2bca91e5006ed8000678f26ba2efe2bfda8
|
||||
DIST MUMPS_5.1.2.tar.gz 3351215 BLAKE2B 1c77c2a217c101245a9a96a59be6b9bfd67ceffa603d807b5a7173026c5c33e2c4de78c14833d7b7f0a90130b9ebc0ac9c7d4ebfbf881d0bd2210a542887c239 SHA512 38a63b14a8df835be68b5fa310b39aa1815799220d56c176e4005797800959e9e08c9a6bf11d308ab82ea40b6f34d36072cebe7c1de39e0c314eb138b93f1b74
|
||||
|
||||
186
sci-libs/mumps/mumps-5.1.2.ebuild
Normal file
186
sci-libs/mumps/mumps-5.1.2.ebuild
Normal file
@@ -0,0 +1,186 @@
|
||||
# Copyright 1999-2018 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit eutils toolchain-funcs flag-o-matic versionator fortran-2 multilib
|
||||
|
||||
MYP=MUMPS_${PV}
|
||||
|
||||
DESCRIPTION="MUltifrontal Massively Parallel sparse direct matrix Solver"
|
||||
HOMEPAGE="http://mumps.enseeiht.fr/"
|
||||
SRC_URI="${HOMEPAGE}${MYP}.tar.gz"
|
||||
|
||||
LICENSE="public-domain"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
|
||||
IUSE="doc examples metis mpi +scotch static-libs"
|
||||
|
||||
RDEPEND="
|
||||
virtual/blas
|
||||
metis? ( || ( sci-libs/metis <sci-libs/parmetis-4 )
|
||||
mpi? ( <sci-libs/parmetis-4 ) )
|
||||
scotch? ( <sci-libs/scotch-6[mpi=] )
|
||||
mpi? ( sci-libs/scalapack )"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/pkgconfig"
|
||||
|
||||
S="${WORKDIR}/${MYP}"
|
||||
|
||||
static_to_shared() {
|
||||
local libstatic=${1}; shift
|
||||
local libname=$(basename ${libstatic%.a})
|
||||
local soname=${libname}$(get_libname $(get_version_component_range 1-2))
|
||||
local libdir=$(dirname ${libstatic})
|
||||
|
||||
einfo "Making ${soname} from ${libstatic}"
|
||||
if [[ ${CHOST} == *-darwin* ]] ; then
|
||||
${LINK:-$(tc-getCC)} ${LDFLAGS} \
|
||||
-dynamiclib -install_name "${EPREFIX}"/usr/lib/"${soname}" \
|
||||
-Wl,-all_load -Wl,${libstatic} \
|
||||
"$@" -o ${libdir}/${soname} || die "${soname} failed"
|
||||
else
|
||||
${LINK:-$(tc-getCC)} ${LDFLAGS} \
|
||||
-shared -Wl,-soname=${soname} \
|
||||
-Wl,--whole-archive ${libstatic} -Wl,--no-whole-archive \
|
||||
"$@" -o ${libdir}/${soname} || die "${soname} failed"
|
||||
[[ $(get_version_component_count) -gt 1 ]] && \
|
||||
ln -s ${soname} ${libdir}/${libname}$(get_libname $(get_major_version))
|
||||
ln -s ${soname} ${libdir}/${libname}$(get_libname)
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
sed -e "s:^\(CC\s*=\).*:\1$(tc-getCC):" \
|
||||
-e "s:^\(FC\s*=\).*:\1$(tc-getFC):" \
|
||||
-e "s:^\(FL\s*=\).*:\1$(tc-getFC):" \
|
||||
-e "s:^\(AR\s*=\).*:\1$(tc-getAR) cr :" \
|
||||
-e "s:^\(RANLIB\s*=\).*:\1$(tc-getRANLIB):" \
|
||||
-e "s:^\(LIBBLAS\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs blas):" \
|
||||
-e "s:^\(INCPAR\s*=\).*:\1:" \
|
||||
-e 's:^\(LIBPAR\s*=\).*:\1$(SCALAP):' \
|
||||
-e "s:^\(OPTF\s*=\).*:\1${FFLAGS} -DALLOW_NON_INIT \$(PIC):" \
|
||||
-e "s:^\(OPTC\s*=\).*:\1${CFLAGS} \$(PIC):" \
|
||||
-e "s:^\(OPTL\s*=\).*:\1${LDFLAGS}:" \
|
||||
Make.inc/Makefile.inc.generic > Makefile.inc || die
|
||||
# fixed a missing copy of libseq to libdir
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
LIBADD="$($(tc-getPKG_CONFIG) --libs blas) -Llib -lpord"
|
||||
local ord="-Dpord"
|
||||
if use metis && use mpi; then
|
||||
sed -i \
|
||||
-e "s:#\s*\(LMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs parmetis):" \
|
||||
-e "s:#\s*\(IMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --cflags parmetis):" \
|
||||
Makefile.inc || die
|
||||
LIBADD="${LIBADD} $($(tc-getPKG_CONFIG) --libs parmetis)"
|
||||
ord="${ord} -Dparmetis"
|
||||
elif use metis; then
|
||||
sed -i \
|
||||
-e "s:#\s*\(LMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs metis):" \
|
||||
-e "s:#\s*\(IMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --cflags metis):" \
|
||||
Makefile.inc || die
|
||||
LIBADD="${LIBADD} $($(tc-getPKG_CONFIG) --libs metis)"
|
||||
ord="${ord} -Dmetis"
|
||||
fi
|
||||
if use scotch && use mpi; then
|
||||
sed -i \
|
||||
-e "s:#\s*\(LSCOTCH\s*=\).*:\1-lptesmumps -lptscotch -lptscotcherr:" \
|
||||
-e "s:#\s*\(ISCOTCH\s*=\).*:\1-I${EROOT}usr/include/scotch:" \
|
||||
Makefile.inc || die
|
||||
LIBADD="${LIBADD} -lptesmumps -lptscotch -lptscotcherr"
|
||||
ord="${ord} -Dptscotch"
|
||||
elif use scotch; then
|
||||
sed -i \
|
||||
-e "s:#\s*\(LSCOTCH\s*=\).*:\1-lesmumps -lscotch -lscotcherr:" \
|
||||
-e "s:#\s*\(ISCOTCH\s*=\).*:\1-I${EROOT}usr/include/scotch:" \
|
||||
Makefile.inc || die
|
||||
LIBADD="${LIBADD} -lesmumps -lscotch -lscotcherr"
|
||||
ord="${ord} -Dscotch"
|
||||
fi
|
||||
if use mpi; then
|
||||
sed -i \
|
||||
-e "s:^\(CC\s*=\).*:\1mpicc:" \
|
||||
-e "s:^\(FC\s*=\).*:\1mpif90:" \
|
||||
-e "s:^\(FL\s*=\).*:\1mpif90:" \
|
||||
-e "s:^\(SCALAP\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs scalapack):" \
|
||||
Makefile.inc || die
|
||||
export LINK=mpif90
|
||||
LIBADD="${LIBADD} $($(tc-getPKG_CONFIG) --libs scalapack)"
|
||||
else
|
||||
sed -i \
|
||||
-e 's:-Llibseq:-L$(topdir)/libseq:' \
|
||||
-e 's:PAR):SEQ):g' \
|
||||
-e "s:^\(SCALAP\s*=\).*:\1:" \
|
||||
-e 's:^LIBSEQNEEDED =:LIBSEQNEEDED = libseqneeded:g' \
|
||||
Makefile.inc || die
|
||||
export LINK="$(tc-getFC)"
|
||||
fi
|
||||
sed -i -e "s:^\s*\(ORDERINGSF\s*=\).*:\1 ${ord}:" Makefile.inc || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
# Workaround #462602
|
||||
export FAKEROOTKEY=1
|
||||
|
||||
# -j1 because of static archive race
|
||||
emake -j1 alllib PIC="-fPIC"
|
||||
if ! use mpi; then
|
||||
#$(tc-getAR) crs lib/libmumps_common.a libseq/*.o || die
|
||||
LIBADD+=" -Llibseq -lmpiseq"
|
||||
static_to_shared libseq/libmpiseq.a
|
||||
fi
|
||||
static_to_shared lib/libpord.a ${LIBADD}
|
||||
static_to_shared lib/libmumps_common.a ${LIBADD}
|
||||
|
||||
local i
|
||||
for i in c d s z; do
|
||||
static_to_shared lib/lib${i}mumps.a -Llib -lmumps_common ${LIBADD}
|
||||
done
|
||||
if use static-libs; then
|
||||
emake clean
|
||||
emake -j1 alllib
|
||||
fi
|
||||
}
|
||||
|
||||
src_test() {
|
||||
emake all
|
||||
local dotest
|
||||
if use mpi; then
|
||||
dotest="mpirun -np 2"
|
||||
else
|
||||
export LD_LIBRARY_PATH="${S}/libseq:${LD_LIBRARY_PATH}"
|
||||
fi
|
||||
cd examples
|
||||
${dotest} ./ssimpletest < input_simpletest_real || die
|
||||
${dotest} ./dsimpletest < input_simpletest_real || die
|
||||
${dotest} ./csimpletest < input_simpletest_cmplx || die
|
||||
${dotest} ./zsimpletest < input_simpletest_cmplx || die
|
||||
einfo "The solutions should be close to (1,2,3,4,5)"
|
||||
${dotest} ./c_example || die
|
||||
einfo "The solution should be close to (1,2)"
|
||||
make clean
|
||||
}
|
||||
|
||||
src_install() {
|
||||
dolib.so lib/lib*$(get_libname)*
|
||||
use static-libs && dolib.a lib/lib*.a
|
||||
insinto /usr
|
||||
doins -r include
|
||||
if ! use mpi; then
|
||||
dolib.so libseq/lib*$(get_libname)*
|
||||
insinto /usr/include/mpiseq
|
||||
doins libseq/*.h
|
||||
use static-libs && dolib.a libseq/libmpiseq.a
|
||||
fi
|
||||
dodoc README ChangeLog VERSION
|
||||
use doc && dodoc doc/*.pdf
|
||||
if use examples; then
|
||||
insinto /usr/share/doc/${PF}
|
||||
doins -r examples
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user