]> git.pld-linux.org Git - packages/lapack.git/blob - lapack.spec
- updated to 3.11.0
[packages/lapack.git] / lapack.spec
1 #
2 # Conditional build:
3 %bcond_without  static_libs     # static libraries
4 %bcond_without  tests           # unit tests
5 %bcond_with     xblas           # use xblas
6
7 Summary:        The LAPACK libraries for numerical linear algebra
8 Summary(pl.UTF-8):      Biblioteki numeryczne LAPACK do algebry liniowej
9 Name:           lapack
10 Version:        3.11.0
11 Release:        1
12 License:        BSD-like
13 Group:          Libraries
14 #Source0Download: https://github.com/Reference-LAPACK/lapack/releases
15 Source0:        https://github.com/Reference-LAPACK/lapack/archive/v%{version}/%{name}-%{version}.tar.gz
16 # Source0-md5:  595b064fd448b161cd711fe346f498a7
17 Source1:        https://netlib.org/lapack/manpages.tgz
18 # Source1-md5:  b13491eb1bcb381918a5b86437c4b029
19 Patch0:         blas-nan.patch
20 URL:            https://netlib.org/lapack/
21 BuildRequires:  cmake >= 3.2
22 BuildRequires:  gcc-fortran
23 %{?with_xblas:BuildRequires:    xblas-devel}
24 Requires:       blas = %{version}-%{release}
25 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
26
27 # missing __stack_chk_fail symbol when only Fortran sources used
28 %undefine       _fortify_cflags
29 %undefine       _ssp_cflags
30
31 %description
32 LAPACK (Linear Algebra PACKage) is a standard library for numerical
33 linear algebra. LAPACK provides routines for solving systems of
34 simultaneous linear equations, least-squares solutions of linear
35 systems of equations, eigenvalue problems, and singular value
36 problems. Associated matrix factorizations (LU, Cholesky, QR, SVD,
37 Schur, and generalized Schur) and related computations (i.e.,
38 reordering of Schur factorizations and estimating condition numbers)
39 are also included. LAPACK can handle dense and banded matrices, but
40 not general sparse matrices. Similar functionality is provided for
41 real and complex matrices in both single and double precision. LAPACK
42 is coded in Fortran77.
43
44 %description -l pl.UTF-8
45 LAPACK (Linear Algebra PACKage) jest standardową biblioteką numeryczną
46 do algebry liniowej. Dostarcza funkcje rozwiązywania: układów równań
47 liniowych, układów równań metodą najmniejszych kwadratów, problemów
48 własnych. Zawiera algorytmy faktoryzacji macierzy (LU, Cholesky'ego,
49 QR, SVD, Schura, uogólnioną Schura) i związanych z tym obliczeń (np.
50 przenumerowywanie w faktoryzacji Schura i estymację uwarunkowania).
51 LAPACK może obsługiwać macierze blokowe i pasmowe, ale nie rzadkie w
52 ogólnym przypadku. Zapewnia funkcjonalność dla macierzy rzeczywistych
53 i zespolonych, dla liczb pojedynczej i podwójnej precyzji. LAPACK jest
54 napisany w Fortranie 77.
55
56 %package devel
57 Summary:        LAPACK development files
58 Summary(pl.UTF-8):      Pliki programistyczne LAPACK
59 Group:          Development/Libraries
60 Requires:       %{name} = %{version}-%{release}
61 Requires:       blas-devel = %{version}-%{release}
62 Obsoletes:      lapack-man < 3.0-3
63
64 %description devel
65 LAPACK development files.
66
67 %description devel -l pl.UTF-8
68 Pliki programistyczne LAPACK.
69
70 %package static
71 Summary:        Static LAPACK libraries
72 Summary(pl.UTF-8):      Biblioteki statyczne LAPACK
73 Group:          Development/Libraries
74 Requires:       %{name}-devel = %{version}-%{release}
75
76 %description static
77 Static LAPACK libraries.
78
79 %description static -l pl.UTF-8
80 Biblioteki statyczne LAPACK.
81
82 %package -n blas
83 Summary:        The BLAS (Basic Linear Algebra Subprograms) library for Linux
84 Summary(pl.UTF-8):      Biblioteka BLAS (Basic Linear Algebra Subprograms) dla Linuksa
85 Group:          Libraries
86 URL:            https://netlib.org/blas/
87 Obsoletes:      lapack-blas < 3.1
88
89 %description -n blas
90 BLAS (Basic Linear Algebra Subprograms) is a standard library for
91 numerical algebra. BLAS provides a number of basic algorithms for
92 linear algebra. BLAS is fast and well-tested, was written in FORTRAN
93 77.
94
95 Warning: this is a reference implementation from Netlib. If possible,
96 use version optimized for your architecture instead.
97
98 %description -n blas -l pl.UTF-8
99 BLAS (Basic Linear Algebra Subprograms) jest standardową biblioteką
100 numeryczną algebry. Dostarcza wiele podstawowych algorytmów dla
101 algebry liniowej. Jest szybka i dobrze przetestowana, została napisana
102 w Fortranie 77.
103
104 Ostrzeżenie: to jest implementacja przykładowa z repozytorium Netlib.
105 Jeżeli to możliwe, należy używać zamiast niej wersji zoptymalizowanej
106 pod daną architekturę.
107
108 %package -n blas-devel
109 Summary:        BLAS development files
110 Summary(pl.UTF-8):      Pliki programistyczne BLAS
111 Group:          Development/Libraries
112 URL:            http://www.netlib.org/blas/
113 Requires:       blas = %{version}-%{release}
114 Obsoletes:      blas-man < 3.0-3
115
116 %description -n blas-devel
117 BLAS development files.
118
119 %description -n blas-devel -l pl.UTF-8
120 Pliki programistyczne BLAS.
121
122 %package -n blas-static
123 Summary:        Static BLAS library
124 Summary(pl.UTF-8):      Biblioteka statyczna BLAS
125 Group:          Development/Libraries
126 URL:            http://www.netlib.org/blas/
127 Requires:       blas-devel = %{version}-%{release}
128
129 %description -n blas-static
130 Static BLAS library.
131
132 %description -n blas-static -l pl.UTF-8
133 Biblioteka statyczna BLAS.
134
135 %package -n cblas
136 Summary:        C Standard Interface to BLAS Basic Linear Algebra Subprograms
137 Summary(pl.UTF-8):      Interfejs C do procedur BLAS (Basic Linear Algebra Subprograms)
138 Group:          Libraries
139 URL:            http://www.netlib.org/blas/#_cblas
140 Requires:       blas = %{version}-%{release}
141
142 %description -n cblas
143 C Standard Interface to BLAS Basic Linear Algebra Subprograms.
144
145 %description -n cblas -l pl.UTF-8
146 Interfejs C do procedur BLAS (Basic Linear Algebra Subprograms -
147 podstawowych procedur algebry liniowej).
148
149 %package -n cblas-devel
150 Summary:        Header files of C Standard Interface to BLAS
151 Summary(pl.UTF-8):      Pliki nagłówkowe interfejsu C do BLAS
152 Group:          Libraries
153 URL:            http://www.netlib.org/blas/#_cblas
154 Requires:       blas-devel = %{version}-%{release}
155 Requires:       cblas = %{version}-%{release}
156
157 %description -n cblas-devel
158 Header files of C Standard Interface to BLAS.
159
160 %description -n cblas-devel -l pl.UTF-8
161 Pliki nagłówkowe interfejsu C do BLAS.
162
163 %package -n cblas-static
164 Summary:        Static CBLAS library
165 Summary(pl.UTF-8):      Statyczna biblioteka CBLAS
166 Group:          Libraries
167 URL:            http://www.netlib.org/blas/#_cblas
168 Requires:       cblas-devel = %{version}-%{release}
169
170 %description -n cblas-static
171 Static CBLAS library.
172
173 %description -n cblas-static -l pl.UTF-8
174 Statyczna biblioteka CBLAS.
175
176 %package -n lapacke
177 Summary:        LAPACKE - native C interface to LAPACK library routines
178 Summary(pl.UTF-8):      LAPACKE - natywny interfejs C do procedur biblioteki LAPACK
179 Group:          Libraries
180 URL:            http://www.netlib.org/lapack/lapacke.html
181 Requires:       lapack = %{version}-%{release}
182
183 %description -n lapacke
184 This library is a part of reference implementation for the C interface
185 to LAPACK project according to the specifications described at the
186 forum for the Intel(R) Math Kernel Library (Intel(R) MKL).
187
188 This implementation provides a native C interface to LAPACK routines
189 to facilitate usage of LAPACK functionality for C programmers.
190
191 %description -n lapacke -l pl.UTF-8
192 Ta bilioteka jest częścią implementacji referencyjnej interfejsu C do
193 projektu LAPACK, zgodnej ze specyfikacją opisaną na forum biblioteki
194 Intel(R) Math Kernel Library.
195
196 Ta implementacja udostępnia natywny interfejs C do procedur biblioteki
197 LAPACK, ułatwiając jej użycie programistom C.
198
199 %package -n lapacke-devel
200 Summary:        Header files for LAPACKE - native C interface to LAPACK
201 Summary(pl.UTF-8):      Pliki nagłówkowe biblioteki LAPACKE - natywnego interfejsu C do biblioteki LAPACK
202 Group:          Development/Libraries
203 URL:            http://www.netlib.org/lapack/lapacke.html
204 Requires:       lapack-devel = %{version}-%{release}
205 Requires:       lapacke = %{version}-%{release}
206
207 %description -n lapacke-devel
208 Header files for LAPACKE - native C interface to LAPACK.
209
210 %description -n lapacke-devel -l pl.UTF-8
211 Pliki nagłówkowe biblioteki LAPACKE - natywnego interfejsu C do
212 biblioteki LAPACK.
213
214 %package -n lapacke-static
215 Summary:        Static LAPACKE library - native C interface to LAPACK
216 Summary(pl.UTF-8):      Statyczna biblioteka LAPACKE - natywny interfejs C do biblioteki LAPACK
217 Group:          Development/Libraries
218 URL:            http://www.netlib.org/lapack/lapacke.html
219 Requires:       lapacke-devel = %{version}-%{release}
220
221 %description -n lapacke-static
222 Static LAPACKE library - native C interface to LAPACK.
223
224 %description -n lapacke-static -l pl.UTF-8
225 Statyczna biblioteka LAPACKE - natywny interfejs C do biblioteki
226 LAPACK.
227
228 %prep
229 %setup -q -a1
230 %patch0 -p1
231 # copy selected routines; use INT_ETIME versions of second
232 # FIXME? CMakeLists doesn't handle second
233 #cp -f INSTALLSRC/{second_INT_ETIME,dsecnd_INT_ETIME}.f SRC
234
235 # bogus
236 %{__rm} man/man3/_Users_julielangou_Documents_GitHub_lapack_*.3
237 %{__rm} man/man3/groups-usr.dox.3
238 # duplicated...
239 %{__rm} man/man3/{SRC_xerbla,SRC_xerbla_array}.f.3
240 # ...in BLAS and LAPACK sources; keep versions from BLAS
241 %{__mv} man/man3/BLAS_SRC_xerbla.f.3 man/man3/xerbla.f.3
242 %{__mv} man/man3/BLAS_SRC_xerbla_array.f.3 man/man3/xerbla_array.f.3
243 %{__sed} -i -e 's/BLAS_SRC_//' man/man3/{xerbla,xerbla_array}.3
244 # in base and variants; adjust .so links to use base
245 %{__sed} -i -e 's/VARIANTS_qr_LL_//' man/man3/zgeqrf.3
246 %{__sed} -i -e 's/VARIANTS_lu_CR_//' man/man3/zgetrf.3
247 %{__sed} -i -e 's/VARIANTS_cholesky_RL_//' man/man3/zpotrf.3
248 # not used variants of some procedures
249 %{__rm} man/man3/{VARIANTS_*,sceil,sceil.f}.3
250 # documentation for examples
251 %{__rm} man/man3/{LDA,LDB,N,NRHS,example_*,lapacke_example_aux.*,main,print_*}.3
252 # too common names
253 %{__mv} man/man3/{testing,lapacktesting}.3
254 %{__mv} man/man3/{level1,blaslevel1}.3
255 %{__mv} man/man3/{level2,blaslevel2}.3
256 %{__mv} man/man3/{level3,blaslevel3}.3
257
258 %build
259 %if %{with static_libs}
260 install -d build-static
261 cd build-static
262 %cmake .. \
263         -DBUILD_DEPRECATED=ON \
264         -DBUILD_SHARED_LIBS=OFF \
265         -DCBLAS=ON \
266         -DLAPACKE_WITH_TMG=ON \
267         %{?with_xblas:-DUSE_XBLAS=ON}
268 %{__make}
269 cd ..
270 %endif
271
272 install -d build
273 cd build
274 %cmake .. \
275         -DBUILD_DEPRECATED=ON \
276         %{?with_tests:-DBUILD_TESTING=ON} \
277         -DCBLAS=ON \
278         -DLAPACKE_WITH_TMG=ON \
279         %{?with_xblas:-DUSE_XBLAS=ON}
280 %{__make}
281
282 %{?with_tests:ctest}
283
284 %install
285 rm -rf $RPM_BUILD_ROOT
286
287 %if %{with static_libs}
288 %{__make} -C build-static install \
289         DESTDIR=$RPM_BUILD_ROOT
290 %endif
291
292 %{__make} -C build install \
293         DESTDIR=$RPM_BUILD_ROOT
294
295 # install man pages, distributing them among blas-devel and lapack-devel
296 install -d $RPM_BUILD_ROOT%{_mandir}/man3
297 echo "%defattr(644,root,root,755)" > blasmans.list
298 echo "%defattr(644,root,root,755)" > mans.list
299 echo "%defattr(644,root,root,755)" > lapackemans.list
300 BLAS_ADDITIONAL='blas|blaslevel[123]|blastesting|aux_blas|(complex|complex16|double|single)_blas_(level[123]|testing)'
301 LAPACK_ADDITIONAL='lapack|lapacktesting|OTHERauxiliary|(aux|auxiliary|complex|complex16|computational|double|eigen|real|sing|solve|variants)?(GB|GE|GT|HE|OTHER|PO|PT|SY)(auxiliary|computational|eigen|sing|solve)?|((aux|complex|complex16|double|real|single)_)?(eig|lin|matgen)|variants(GE|OTHER|PO)computational'
302 MANS_ADDITIONAL="$BLAS_ADDITIONAL|$LAPACK_ADDITIONAL"
303 for f in man/man3/*.3 ; do
304         cp -p "$f" $RPM_BUILD_ROOT%{_mandir}/man3
305         bn=$(basename $f)
306         if echo "$bn" | grep '\.[Fcfh]\.3$' ; then
307                 ffn="${bn%.3}"
308         elif echo "$bn" | grep -E "^($MANS_ADDITIONAL)\.3\$" ; then
309                 ffn="${bn%.3}"
310         elif grep '^\.so man3/.*\.[Fcfh]\.3$' "$f" ; then
311                 ffn=$(sed -e '1s,^\.so man3/\(.*\.[Fcfh]\)\.3,\1,' $f)
312         elif grep -E "^\.so man3/($MANS_ADDITIONAL)\.3" "$f"; then
313                 ffn=$(sed -e '1s,^\.so man3/\([^.]*\)\.3,\1,' $f)
314         else
315                 echo "Unknown manpage: $f"
316                 exit 1
317         fi
318         if [ -f "BLAS/SRC/$ffn" ] || echo "$ffn" | grep -E "^($BLAS_ADDITIONAL)\$" ; then
319                 echo "%{_mandir}/man3/${bn}*" >> blasmans.list
320         elif [ -f "SRC/$ffn" -o -f "INSTALLSRC/$ffn" ] || echo "$ffn" | grep -E "^($LAPACK_ADDITIONAL)\$"; then
321                 echo "%{_mandir}/man3/${bn}*" >> mans.list
322         elif [ -f "LAPACKE/include/$ffn" -o -f "LAPACKE/src/$ffn" -o -f "LAPACKE/utils/$ffn" ]; then
323                 echo "%{_mandir}/man3/${bn}*" >> lapackemans.list
324         else
325                 echo "Unknown manpage: $f (source file: $ffn)"
326                 exit 1
327         fi
328 done
329
330 %clean
331 rm -rf $RPM_BUILD_ROOT
332
333 %post   -p /sbin/ldconfig
334 %postun -p /sbin/ldconfig
335
336 %post   -n blas -p /sbin/ldconfig
337 %postun -n blas -p /sbin/ldconfig
338
339 %post   -n cblas -p /sbin/ldconfig
340 %postun -n cblas -p /sbin/ldconfig
341
342 %post   -n lapacke -p /sbin/ldconfig
343 %postun -n lapacke -p /sbin/ldconfig
344
345 %files
346 %defattr(644,root,root,755)
347 %doc LICENSE README.md
348 %attr(755,root,root) %{_libdir}/liblapack.so.*.*.*
349 %attr(755,root,root) %ghost %{_libdir}/liblapack.so.3
350
351 %files devel -f mans.list
352 %defattr(644,root,root,755)
353 %attr(755,root,root) %{_libdir}/liblapack.so
354 %{_includedir}/lapack.h
355 %{_pkgconfigdir}/lapack.pc
356 %{_libdir}/cmake/lapack-%{version}
357
358 %if %{with static_libs}
359 %files static
360 %defattr(644,root,root,755)
361 %{_libdir}/liblapack.a
362 %endif
363
364 %files -n blas
365 %defattr(644,root,root,755)
366 %attr(755,root,root) %{_libdir}/libblas.so.*.*.*
367 %attr(755,root,root) %ghost %{_libdir}/libblas.so.3
368
369 %files -n blas-devel -f blasmans.list
370 %defattr(644,root,root,755)
371 %attr(755,root,root) %{_libdir}/libblas.so
372 %{_pkgconfigdir}/blas.pc
373
374 %if %{with static_libs}
375 %files -n blas-static
376 %defattr(644,root,root,755)
377 %{_libdir}/libblas.a
378 %endif
379
380 %files -n cblas
381 %defattr(644,root,root,755)
382 %attr(755,root,root) %{_libdir}/libcblas.so.*.*.*
383 %attr(755,root,root) %ghost %{_libdir}/libcblas.so.3
384
385 %files -n cblas-devel
386 %defattr(644,root,root,755)
387 %attr(755,root,root) %{_libdir}/libcblas.so
388 %{_includedir}/cblas*.h
389 %{_pkgconfigdir}/cblas.pc
390 %{_libdir}/cmake/cblas-%{version}
391
392 %if %{with static_libs}
393 %files -n cblas-static
394 %defattr(644,root,root,755)
395 %{_libdir}/libcblas.a
396 %endif
397
398 %files -n lapacke -f lapackemans.list
399 %defattr(644,root,root,755)
400 %doc LAPACKE/{LICENSE,README}
401 %attr(755,root,root) %{_libdir}/liblapacke.so.*.*.*
402 %attr(755,root,root) %ghost %{_libdir}/liblapacke.so.3
403 %attr(755,root,root) %{_libdir}/libtmglib.so.*.*.*
404 %attr(755,root,root) %ghost %{_libdir}/libtmglib.so.3
405
406 %files -n lapacke-devel
407 %defattr(644,root,root,755)
408 %attr(755,root,root) %{_libdir}/liblapacke.so
409 %attr(755,root,root) %{_libdir}/libtmglib.so
410 %{_includedir}/lapacke*.h
411 %{_pkgconfigdir}/lapacke.pc
412 %{_libdir}/cmake/lapacke-%{version}
413
414 %if %{with static_libs}
415 %files -n lapacke-static
416 %defattr(644,root,root,755)
417 %{_libdir}/liblapacke.a
418 %{_libdir}/libtmglib.a
419 %endif
This page took 0.079957 seconds and 3 git commands to generate.