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