Gentoo Archives: gentoo-commits

From: Matthias Maier <tamiko@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sci-libs/mumps/
Date: Mon, 08 Oct 2018 17:56:14
Message-Id: 1539021350.d0feaf39eeeb49c7e0954504e6c847d5a27be50e.tamiko@gentoo
1 commit: d0feaf39eeeb49c7e0954504e6c847d5a27be50e
2 Author: Matthias Maier <tamiko <AT> gentoo <DOT> org>
3 AuthorDate: Mon Oct 8 17:49:42 2018 +0000
4 Commit: Matthias Maier <tamiko <AT> gentoo <DOT> org>
5 CommitDate: Mon Oct 8 17:55:50 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d0feaf39
7
8 sci-libs/mumps: version bump to 5.1.2
9
10 Signed-off-by: Matthias Maier <tamiko <AT> gentoo.org>
11 Package-Manager: Portage-2.3.50, Repoman-2.3.11
12
13 sci-libs/mumps/Manifest | 1 +
14 sci-libs/mumps/mumps-5.1.2.ebuild | 186 ++++++++++++++++++++++++++++++++++++++
15 2 files changed, 187 insertions(+)
16
17 diff --git a/sci-libs/mumps/Manifest b/sci-libs/mumps/Manifest
18 index fa2f846fabd..973e51a036a 100644
19 --- a/sci-libs/mumps/Manifest
20 +++ b/sci-libs/mumps/Manifest
21 @@ -1 +1,2 @@
22 DIST MUMPS_4.10.0.tar.gz 2481516 BLAKE2B ddd3f28bf9627806e9bb5597adc94e2b8f504adf220a8a64ea50630edbde75358bd97e91a53ebd341132a34db5d7248d32a892a060bdf8f205c8aac3b9c88722 SHA512 348df048618ea2086fbe805a90f2e31f57e0db4aa6f4843a0e3c7142bac80fe45e54768e65921657c970bc286b59c2bca91e5006ed8000678f26ba2efe2bfda8
23 +DIST MUMPS_5.1.2.tar.gz 3351215 BLAKE2B 1c77c2a217c101245a9a96a59be6b9bfd67ceffa603d807b5a7173026c5c33e2c4de78c14833d7b7f0a90130b9ebc0ac9c7d4ebfbf881d0bd2210a542887c239 SHA512 38a63b14a8df835be68b5fa310b39aa1815799220d56c176e4005797800959e9e08c9a6bf11d308ab82ea40b6f34d36072cebe7c1de39e0c314eb138b93f1b74
24
25 diff --git a/sci-libs/mumps/mumps-5.1.2.ebuild b/sci-libs/mumps/mumps-5.1.2.ebuild
26 new file mode 100644
27 index 00000000000..725e1ab60e6
28 --- /dev/null
29 +++ b/sci-libs/mumps/mumps-5.1.2.ebuild
30 @@ -0,0 +1,186 @@
31 +# Copyright 1999-2018 Gentoo Authors
32 +# Distributed under the terms of the GNU General Public License v2
33 +
34 +EAPI=6
35 +
36 +inherit eutils toolchain-funcs flag-o-matic versionator fortran-2 multilib
37 +
38 +MYP=MUMPS_${PV}
39 +
40 +DESCRIPTION="MUltifrontal Massively Parallel sparse direct matrix Solver"
41 +HOMEPAGE="http://mumps.enseeiht.fr/"
42 +SRC_URI="${HOMEPAGE}${MYP}.tar.gz"
43 +
44 +LICENSE="public-domain"
45 +SLOT="0"
46 +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
47 +IUSE="doc examples metis mpi +scotch static-libs"
48 +
49 +RDEPEND="
50 + virtual/blas
51 + metis? ( || ( sci-libs/metis <sci-libs/parmetis-4 )
52 + mpi? ( <sci-libs/parmetis-4 ) )
53 + scotch? ( <sci-libs/scotch-6[mpi=] )
54 + mpi? ( sci-libs/scalapack )"
55 +
56 +DEPEND="${RDEPEND}
57 + virtual/pkgconfig"
58 +
59 +S="${WORKDIR}/${MYP}"
60 +
61 +static_to_shared() {
62 + local libstatic=${1}; shift
63 + local libname=$(basename ${libstatic%.a})
64 + local soname=${libname}$(get_libname $(get_version_component_range 1-2))
65 + local libdir=$(dirname ${libstatic})
66 +
67 + einfo "Making ${soname} from ${libstatic}"
68 + if [[ ${CHOST} == *-darwin* ]] ; then
69 + ${LINK:-$(tc-getCC)} ${LDFLAGS} \
70 + -dynamiclib -install_name "${EPREFIX}"/usr/lib/"${soname}" \
71 + -Wl,-all_load -Wl,${libstatic} \
72 + "$@" -o ${libdir}/${soname} || die "${soname} failed"
73 + else
74 + ${LINK:-$(tc-getCC)} ${LDFLAGS} \
75 + -shared -Wl,-soname=${soname} \
76 + -Wl,--whole-archive ${libstatic} -Wl,--no-whole-archive \
77 + "$@" -o ${libdir}/${soname} || die "${soname} failed"
78 + [[ $(get_version_component_count) -gt 1 ]] && \
79 + ln -s ${soname} ${libdir}/${libname}$(get_libname $(get_major_version))
80 + ln -s ${soname} ${libdir}/${libname}$(get_libname)
81 + fi
82 +}
83 +
84 +src_prepare() {
85 + sed -e "s:^\(CC\s*=\).*:\1$(tc-getCC):" \
86 + -e "s:^\(FC\s*=\).*:\1$(tc-getFC):" \
87 + -e "s:^\(FL\s*=\).*:\1$(tc-getFC):" \
88 + -e "s:^\(AR\s*=\).*:\1$(tc-getAR) cr :" \
89 + -e "s:^\(RANLIB\s*=\).*:\1$(tc-getRANLIB):" \
90 + -e "s:^\(LIBBLAS\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs blas):" \
91 + -e "s:^\(INCPAR\s*=\).*:\1:" \
92 + -e 's:^\(LIBPAR\s*=\).*:\1$(SCALAP):' \
93 + -e "s:^\(OPTF\s*=\).*:\1${FFLAGS} -DALLOW_NON_INIT \$(PIC):" \
94 + -e "s:^\(OPTC\s*=\).*:\1${CFLAGS} \$(PIC):" \
95 + -e "s:^\(OPTL\s*=\).*:\1${LDFLAGS}:" \
96 + Make.inc/Makefile.inc.generic > Makefile.inc || die
97 + # fixed a missing copy of libseq to libdir
98 +
99 + default
100 +}
101 +
102 +src_configure() {
103 + LIBADD="$($(tc-getPKG_CONFIG) --libs blas) -Llib -lpord"
104 + local ord="-Dpord"
105 + if use metis && use mpi; then
106 + sed -i \
107 + -e "s:#\s*\(LMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs parmetis):" \
108 + -e "s:#\s*\(IMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --cflags parmetis):" \
109 + Makefile.inc || die
110 + LIBADD="${LIBADD} $($(tc-getPKG_CONFIG) --libs parmetis)"
111 + ord="${ord} -Dparmetis"
112 + elif use metis; then
113 + sed -i \
114 + -e "s:#\s*\(LMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs metis):" \
115 + -e "s:#\s*\(IMETIS\s*=\).*:\1$($(tc-getPKG_CONFIG) --cflags metis):" \
116 + Makefile.inc || die
117 + LIBADD="${LIBADD} $($(tc-getPKG_CONFIG) --libs metis)"
118 + ord="${ord} -Dmetis"
119 + fi
120 + if use scotch && use mpi; then
121 + sed -i \
122 + -e "s:#\s*\(LSCOTCH\s*=\).*:\1-lptesmumps -lptscotch -lptscotcherr:" \
123 + -e "s:#\s*\(ISCOTCH\s*=\).*:\1-I${EROOT}usr/include/scotch:" \
124 + Makefile.inc || die
125 + LIBADD="${LIBADD} -lptesmumps -lptscotch -lptscotcherr"
126 + ord="${ord} -Dptscotch"
127 + elif use scotch; then
128 + sed -i \
129 + -e "s:#\s*\(LSCOTCH\s*=\).*:\1-lesmumps -lscotch -lscotcherr:" \
130 + -e "s:#\s*\(ISCOTCH\s*=\).*:\1-I${EROOT}usr/include/scotch:" \
131 + Makefile.inc || die
132 + LIBADD="${LIBADD} -lesmumps -lscotch -lscotcherr"
133 + ord="${ord} -Dscotch"
134 + fi
135 + if use mpi; then
136 + sed -i \
137 + -e "s:^\(CC\s*=\).*:\1mpicc:" \
138 + -e "s:^\(FC\s*=\).*:\1mpif90:" \
139 + -e "s:^\(FL\s*=\).*:\1mpif90:" \
140 + -e "s:^\(SCALAP\s*=\).*:\1$($(tc-getPKG_CONFIG) --libs scalapack):" \
141 + Makefile.inc || die
142 + export LINK=mpif90
143 + LIBADD="${LIBADD} $($(tc-getPKG_CONFIG) --libs scalapack)"
144 + else
145 + sed -i \
146 + -e 's:-Llibseq:-L$(topdir)/libseq:' \
147 + -e 's:PAR):SEQ):g' \
148 + -e "s:^\(SCALAP\s*=\).*:\1:" \
149 + -e 's:^LIBSEQNEEDED =:LIBSEQNEEDED = libseqneeded:g' \
150 + Makefile.inc || die
151 + export LINK="$(tc-getFC)"
152 + fi
153 + sed -i -e "s:^\s*\(ORDERINGSF\s*=\).*:\1 ${ord}:" Makefile.inc || die
154 +}
155 +
156 +src_compile() {
157 + # Workaround #462602
158 + export FAKEROOTKEY=1
159 +
160 + # -j1 because of static archive race
161 + emake -j1 alllib PIC="-fPIC"
162 + if ! use mpi; then
163 + #$(tc-getAR) crs lib/libmumps_common.a libseq/*.o || die
164 + LIBADD+=" -Llibseq -lmpiseq"
165 + static_to_shared libseq/libmpiseq.a
166 + fi
167 + static_to_shared lib/libpord.a ${LIBADD}
168 + static_to_shared lib/libmumps_common.a ${LIBADD}
169 +
170 + local i
171 + for i in c d s z; do
172 + static_to_shared lib/lib${i}mumps.a -Llib -lmumps_common ${LIBADD}
173 + done
174 + if use static-libs; then
175 + emake clean
176 + emake -j1 alllib
177 + fi
178 +}
179 +
180 +src_test() {
181 + emake all
182 + local dotest
183 + if use mpi; then
184 + dotest="mpirun -np 2"
185 + else
186 + export LD_LIBRARY_PATH="${S}/libseq:${LD_LIBRARY_PATH}"
187 + fi
188 + cd examples
189 + ${dotest} ./ssimpletest < input_simpletest_real || die
190 + ${dotest} ./dsimpletest < input_simpletest_real || die
191 + ${dotest} ./csimpletest < input_simpletest_cmplx || die
192 + ${dotest} ./zsimpletest < input_simpletest_cmplx || die
193 + einfo "The solutions should be close to (1,2,3,4,5)"
194 + ${dotest} ./c_example || die
195 + einfo "The solution should be close to (1,2)"
196 + make clean
197 +}
198 +
199 +src_install() {
200 + dolib.so lib/lib*$(get_libname)*
201 + use static-libs && dolib.a lib/lib*.a
202 + insinto /usr
203 + doins -r include
204 + if ! use mpi; then
205 + dolib.so libseq/lib*$(get_libname)*
206 + insinto /usr/include/mpiseq
207 + doins libseq/*.h
208 + use static-libs && dolib.a libseq/libmpiseq.a
209 + fi
210 + dodoc README ChangeLog VERSION
211 + use doc && dodoc doc/*.pdf
212 + if use examples; then
213 + insinto /usr/share/doc/${PF}
214 + doins -r examples
215 + fi
216 +}