diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 13:49:04 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 17:38:18 -0700 |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /sci-libs/mumps | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sci-libs/mumps')
-rw-r--r-- | sci-libs/mumps/Manifest | 1 | ||||
-rw-r--r-- | sci-libs/mumps/metadata.xml | 18 | ||||
-rw-r--r-- | sci-libs/mumps/mumps-4.10.0-r1.ebuild | 185 |
3 files changed, 204 insertions, 0 deletions
diff --git a/sci-libs/mumps/Manifest b/sci-libs/mumps/Manifest new file mode 100644 index 000000000000..1e9601e52c81 --- /dev/null +++ b/sci-libs/mumps/Manifest @@ -0,0 +1 @@ +DIST MUMPS_4.10.0.tar.gz 2481516 SHA256 d0f86f91a74c51a17a2ff1be9c9cee2338976f13a6d00896ba5b43a5ca05d933 SHA512 348df048618ea2086fbe805a90f2e31f57e0db4aa6f4843a0e3c7142bac80fe45e54768e65921657c970bc286b59c2bca91e5006ed8000678f26ba2efe2bfda8 WHIRLPOOL 268a22811395b0a193eed90798ede8bc1a1478da25354711fbc8a220b5cfc3af78e0aedff787deb1592871ff450835533e1266393592056228fa8685f51f13fd diff --git a/sci-libs/mumps/metadata.xml b/sci-libs/mumps/metadata.xml new file mode 100644 index 000000000000..3aa8aad22ee4 --- /dev/null +++ b/sci-libs/mumps/metadata.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd>sci</herd> +<longdescription lang='en'> + MUltifrontal Massively Parallel sparse direct Solver implements a + direct solver for large sparse linear systems, with a particular + focus on symmetric positive definite matrices. It can operate on + distributed matrices e.g. over a cluster. It has Fortran and C + interfaces, and can interface with ordering tools such + as Scotch or Metis. +</longdescription> +<use> + <flag name="metis">Enable matrix ordering with METIS + (<pkg>sci-libs/metis</pkg>, <pkg>sci-libs/parmetis</pkg>)</flag> + <flag name="scotch">Enable matrix ordering with <pkg>sci-libs/scotch</pkg></flag> +</use> +</pkgmetadata> diff --git a/sci-libs/mumps/mumps-4.10.0-r1.ebuild b/sci-libs/mumps/mumps-4.10.0-r1.ebuild new file mode 100644 index 000000000000..99d0f210fa47 --- /dev/null +++ b/sci-libs/mumps/mumps-4.10.0-r1.ebuild @@ -0,0 +1,185 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +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 +} + +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 +} |