source: projects/specs/trunk/o/openblas/openblas-vl.spec @ 12032

Revision 12032, 26.8 KB checked in by ara_t, 5 years ago (diff)

opneblas: rebuild with gfortran-8.2.0

Line 
1%define pkg_name    openblas
2%define pkg_version 0.3.3
3%define pkg_release 2%{?_dist_release}
4
5# Version of bundled lapack
6%global lapackver 3.8.0
7%global lapacke 1
8
9# Build 64-bit interface binaries?
10%ifarch %{ix86}
11%global build64 0
12%global libblas    libblas.so.3 libcblas.so.3
13%global liblapack  liblapack.so.3 liblapacke.so.3
14%endif
15%ifarch x86_64
16%global build64 1
17%global libblas    libblas.so.3()(64bit) libcblas.so.3()(64bit)
18%global liblapack  liblapack.so.3()(64bit) liblapacke.so.3()(64bit)
19%endif
20
21
22Summary: An optimized BLAS library based on GotoBLAS2
23Name:    %{pkg_name}
24Version: %{pkg_version}
25Release: %{pkg_release}
26
27Group:   Development/Libraries
28License: BSD
29URL:     https://github.com/xianyi/OpenBLAS/
30
31Source0: https://github.com/xianyi/OpenBLAS/archive/v%{version}.tar.gz
32
33# pkg-config file (modoified)
34Source11: blas.pc.in
35Source12: cblas.pc.in
36Source13: lapack.pc.in
37Source14: lapacke.pc.in
38
39# Drop extra p from threaded library name
40Patch1: openblas-0.2.5-libname.patch
41# # Supply the proper flags to the test makefile
42# Patch2: openblas-0.2.19-tests.patch
43# # Disable CPU affinity, from upstream
44# Patch3: https://patch-diff.githubusercontent.com/raw/xianyi/OpenBLAS/pull/1495.patch
45
46BuildRoot: %{_tmppath}/%{name}-%{version}-root
47BuildRequires: gcc-gfortran
48
49Provides: blas lapack = %{lapackver} %{libblas} %{liblapack}
50
51ExclusiveArch: x86_64 %{ix86}
52
53
54%global base_description \
55OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD \
56version. The project is supported by the Lab of Parallel Software and \
57Computational Science, ISCAS. http://www.rdcps.ac.cn
58
59%description
60%{base_description}
61
62%package Rblas
63Summary: A version of OpenBLAS for R to use as libRblas
64Group:   Development/Libraries
65
66%description Rblas
67%{base_description}
68
69%package openmp
70Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
71Group:   Development/Libraries
72Provides: blas lapack = %{lapackver} %{libblas} %{liblapack}
73
74%description openmp
75%{base_description}
76
77This package contains the library compiled with OpenMP support.
78
79%package threads
80Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
81Group:   Development/Libraries
82Provides: blas lapack = %{lapackver} %{libblas} %{liblapack}
83
84%description threads
85%{base_description}
86
87This package contains the library compiled with threading support.
88
89%if %build64
90%package serial64
91Summary: An optimized BLAS library based on GotoBLAS2, serial version
92Group:   Development/Libraries
93Provides: blas64 lapack64 = %{lapackver}
94
95%description serial64
96%{base_description}
97
98This package contains the sequential library compiled with a 64-bit
99interface.
100
101%package serial64_
102Summary: An optimized BLAS library based on GotoBLAS2, serial version
103Group:   Development/Libraries
104Provides: blas64 lapack64 = %{lapackver}
105
106%description serial64_
107%{base_description}
108
109This package contains the sequential library compiled with a 64-bit
110interface and a symbol name suffix.
111
112
113%package openmp64
114Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
115Group:   Development/Libraries
116Provides: blas64 lapack64 = %{lapackver}
117
118%description openmp64
119%{base_description}
120
121This package contains the library compiled with OpenMP support and
12264-bit interface.
123
124%package openmp64_
125Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
126Group:   Development/Libraries
127Provides: blas64 lapack64 = %{lapackver}
128
129%description openmp64_
130%{base_description}
131
132This package contains the library compiled with OpenMP support and
13364-bit interface and a symbol name suffix.
134
135
136%package threads64
137Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
138Group:   Development/Libraries
139Provides: blas64 lapack64 = %{lapackver}
140
141%description threads64
142%{base_description}
143
144This package contains the library compiled with threading support and
14564-bit interface.
146
147%package threads64_
148Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
149Group:   Development/Libraries
150Provides: blas64 lapack64 = %{lapackver}
151
152%description threads64_
153%{base_description}
154
155This package contains the library compiled with threading support and
15664-bit interface and a symbol name suffix.
157%endif
158
159
160%package devel
161Summary:  Development headers and libraries for OpenBLAS
162Group:    Development/Libraries
163Requires: %{name} = %{version}-%{release}
164Requires: %{name}-openmp = %{version}-%{release}
165Requires: %{name}-threads = %{version}-%{release}
166
167%description devel
168%{base_description}
169
170This package contains the development headers and libraries.
171
172
173%package static
174Summary:  Static version of OpenBLAS
175Group:    Development/Libraries
176Requires: %{name}-devel = %{version}-%{release}
177
178%description static
179%{base_description}
180
181This package contains the static libraries.
182
183
184%if %build64
185%package -n %{name}64-devel
186Summary:  Development headers and libraries for OpenBLAS (64bit)
187Group:    Development/Libraries
188Requires: %{name}-openmp64 = %{version}-%{release}
189Requires: %{name}-threads64 = %{version}-%{release}
190Requires: %{name}-serial64 = %{version}-%{release}
191Requires: %{name}-openmp64_ = %{version}-%{release}
192Requires: %{name}-threads64_ = %{version}-%{release}
193Requires: %{name}-serial64_ = %{version}-%{release}
194Requires: %{name}-devel = %{version}-%{release}
195
196%description  -n %{name}64-devel
197%{base_description}
198
199This package contains the development headers and libraries
200 compiled with a 64-bit interface.
201
202
203%package -n %{name}64-static
204Summary:  Static version of OpenBLAS (64bit)
205Group:    Development/Libraries
206Requires: %{name}64-devel = %{version}-%{release}
207
208%description -n %{name}64-static
209%{base_description}
210
211This package contains the static libraries
212 compiled with a 64-bit interface.
213%endif
214
215
216%prep
217%setup -q -c -T
218
219# Untar source
220tar zxf %{SOURCE0}
221cd OpenBLAS-%{version}
222%patch1 -p1 -b .libname
223# %patch2 -p1 -b .tests
224# %patch3 -p1 -b .affinity
225
226# Fix source permissions
227find -name \*.f -exec chmod 644 {} \;
228
229# Make serial, threaded and OpenMP versions; as well as 64-bit versions
230# Also make an libRblas.so
231cd ..
232cp -ar OpenBLAS-%{version} openmp
233cp -ar OpenBLAS-%{version} threaded
234
235%if %build64
236for d in {serial,threaded,openmp}64{,_}; do
237    cp -ar OpenBLAS-%{version} $d
238done
239%endif
240cp -ar OpenBLAS-%{version} Rblas
241mv OpenBLAS-%{version} serial
242
243# Hackup Rblas Makefiles
244sed -i 's|.so.$(MAJOR_VERSION)|.so|g' Rblas/Makefile
245sed -i 's|.so.$(MAJOR_VERSION)|.so|g' Rblas/exports/Makefile
246sed -i 's|@ln -fs $(LIBSONAME) $(LIBPREFIX).so|#@ln -fs $(LIBSONAME) $(LIBPREFIX).so|g' Rblas/Makefile
247
248%build
249# Maximum possible amount of processors
250NMAX="NUM_THREADS=128"
251TARGET="TARGET=CORE2 DYNAMIC_ARCH=1"
252export AVX="NO_AVX2=1"
253
254FCOMMON="%{optflags} -fPIC -frecursive"
255
256make -C Rblas      $TARGET USE_THREAD=0 USEOPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libRblas" LIBSONAME="libRblas.so" $AVX $LAPACKE INTERFACE64=0
257
258# Declare some necessary build flags
259COMMON="%{optflags} -fPIC"
260FCOMMON="$COMMON -frecursive"
261make -C serial     $TARGET USE_THREAD=0 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblas"      $AVX $LAPACKE INTERFACE64=0
262make -C threaded   $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp"     $AVX $LAPACKE INTERFACE64=0
263
264# USE_THREAD determines use of SMP, not of pthreads
265COMMON="%{optflags} -fPIC -fopenmp -pthread"
266FCOMMON="$COMMON -frecursive"
267make -C openmp     $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso"     $AVX $LAPACKE INTERFACE64=0
268
269%if %build64
270COMMON="%{optflags} -fPIC"
271FCOMMON="$COMMON -frecursive -fdefault-integer-8"
272make -C serial64   $TARGET USE_THREAD=0 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblas64"    $AVX $LAPACKE INTERFACE64=1
273make -C threaded64 $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp64"   $AVX $LAPACKE INTERFACE64=1
274
275COMMON="%{optflags} -fPIC -fopenmp -pthread"
276FCOMMON="$COMMON -frecursive -fdefault-integer-8"
277make -C openmp64   $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso64"   $AVX $LAPACKE INTERFACE64=1
278
279COMMON="%{optflags} -fPIC"
280FCOMMON="$COMMON -frecursive  -fdefault-integer-8"
281make -C serial64_   $TARGET USE_THREAD=0 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblas64_"  $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_
282make -C threaded64_ $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp64_" $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_
283
284COMMON="%{optflags} -fPIC -fopenmp -pthread"
285FCOMMON="$COMMON -frecursive -fdefault-integer-8"
286make -C openmp64_   $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso64_" $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_
287%endif
288
289%install
290rm -rf %{buildroot}
291# Install serial library and headers
292make -C serial USE_THREAD=0 PREFIX=%{buildroot} OPENBLAS_LIBRARY_DIR=%{buildroot}%{_libdir}/ OPENBLAS_INCLUDE_DIR=%{buildroot}%{_includedir}/%{name} OPENBLAS_BINARY_DIR=%{buildroot}%{_bindir} OPENBLAS_CMAKE_DIR=%{buildroot}%{_libdir}/cmake install
293
294slibname=`basename %{buildroot}%{_libdir}/libopenblas${suffix}-*.so .so`
295mv %{buildroot}%{_libdir}/${slibname}.a \
296   %{buildroot}%{_libdir}/lib%{name}.a
297if [[ "$suffix" != "" ]]; then
298   sname=$(echo $slibname | sed "s|$suffix||g")
299   mv %{buildroot}%{_libdir}/${slibname}.so \
300      %{buildroot}%{_libdir}/${sname}.so
301else
302   sname=${slibname}
303fi
304
305# Install the Rblas library
306mkdir -p %{buildroot}%{_libdir}/R/lib/
307install -p -m 755 Rblas/libRblas.so %{buildroot}%{_libdir}/R/lib/
308
309# Install the OpenMP library
310olibname=`echo ${slibname} | sed "s|lib%{name}|lib%{name}o|g"`
311install -D -p -m 644 openmp/${olibname}.a \
312        %{buildroot}%{_libdir}/lib%{name}o.a
313if [[ "$suffix" != "" ]]; then
314   oname=$(echo $olibname | sed "s|$suffix||g")
315else
316   oname=${olibname}
317fi
318install -D -p -m 755 openmp/${olibname}.so \
319        %{buildroot}%{_libdir}/${oname}.so
320
321# Install the threaded library
322plibname=`echo ${slibname} | sed "s|lib%{name}|lib%{name}p|g"`
323install -D -p -m 644 threaded/${plibname}.a \
324        %{buildroot}%{_libdir}/lib%{name}p.a
325if [[ "$suffix" != "" ]]; then
326   pname=$(echo $plibname | sed "s|$suffix||g")
327else
328   pname=${plibname}
329fi
330install -D -p -m 755 threaded/${plibname}.so \
331        %{buildroot}%{_libdir}/${pname}.so
332
333# Install the 64-bit interface libraries
334%if %build64
335slibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}64|g"`
336install -D -p -m 644 serial64/${slibname64}.a \
337        %{buildroot}%{_libdir}/lib%{name}64.a
338slibname64_=`echo ${slibname} | sed "s|lib%{name}|lib%{name}64_|g"`
339install -D -p -m 644 serial64_/${slibname64_}.a \
340        %{buildroot}%{_libdir}/lib%{name}64_.a
341
342if [[ "$suffix" != "" ]]; then
343   sname64=$(echo ${slibname64} | sed "s|$suffix||g")
344   sname64_=$(echo ${slibname64_} | sed "s|$suffix||g")
345else
346   sname64=${slibname64}
347   sname64_=${slibname64_}
348fi
349install -D -p -m 755 serial64/${slibname64}.so \
350        %{buildroot}%{_libdir}/${sname64}.so
351install -D -p -m 755 serial64_/${slibname64_}.so \
352        %{buildroot}%{_libdir}/${sname64_}.so
353
354olibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}o64|g"`
355install -D -p -m 644 openmp64/${olibname64}.a \
356        %{buildroot}%{_libdir}/lib%{name}o64.a
357olibname64_=`echo ${slibname} | sed "s|lib%{name}|lib%{name}o64_|g"`
358install -D -p -m 644 openmp64_/${olibname64_}.a \
359        %{buildroot}%{_libdir}/lib%{name}o64_.a
360
361if [[ "$suffix" != "" ]]; then
362   oname64=$(echo ${olibname64} | sed "s|$suffix||g")
363   oname64_=$(echo ${olibname64_} | sed "s|$suffix||g")
364else
365   oname64=${olibname64}
366   oname64_=${olibname64_}
367fi
368install -D -p -m 755 openmp64/${olibname64}.so \
369        %{buildroot}%{_libdir}/${oname64}.so
370install -D -p -m 755 openmp64_/${olibname64_}.so \
371        %{buildroot}%{_libdir}/${oname64_}.so
372
373plibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}p64|g"`
374install -D -p -m 644 threaded64/${plibname64}.a \
375        %{buildroot}%{_libdir}/lib%{name}p64.a
376plibname64_=`echo ${slibname} | sed "s|lib%{name}|lib%{name}p64_|g"`
377install -D -p -m 644 threaded64_/${plibname64_}.a \
378        %{buildroot}%{_libdir}/lib%{name}p64_.a
379
380if [[ "$suffix" != "" ]]; then
381   pname64=$(echo $plibname64 | sed "s|$suffix||g")
382   pname64_=$(echo $plibname64_ | sed "s|$suffix||g")
383else
384   pname64=${plibname64}
385   pname64_=${plibname64_}
386fi
387install -D -p -m 755 threaded64/${plibname64}.so \
388        %{buildroot}%{_libdir}/${pname64}.so
389install -D -p -m 755 threaded64_/${plibname64_}.so \
390        %{buildroot}%{_libdir}/${pname64_}.so
391%endif
392
393# Fix symlinks
394pushd %{buildroot}%{_libdir}
395# Serial libraries
396ln -sf ${sname}.so lib%{name}.so
397ln -sf ${sname}.so lib%{name}.so.0
398# OpenMP libraries
399ln -sf ${oname}.so lib%{name}o.so
400ln -sf ${oname}.so lib%{name}o.so.0
401# Threaded libraries
402ln -sf ${pname}.so lib%{name}p.so
403ln -sf ${pname}.so lib%{name}p.so.0
404
405%if %build64
406# Serial libraries
407ln -sf ${sname64}.so lib%{name}64.so
408ln -sf ${sname64}.so lib%{name}64.so.0
409ln -sf ${sname64_}.so lib%{name}64_.so
410ln -sf ${sname64_}.so lib%{name}64_.so.0
411# OpenMP libraries
412ln -sf ${oname64}.so lib%{name}o64.so
413ln -sf ${oname64}.so lib%{name}o64.so.0
414ln -sf ${oname64_}.so lib%{name}o64_.so
415ln -sf ${oname64_}.so lib%{name}o64_.so.0
416# Threaded libraries
417ln -sf ${pname64}.so lib%{name}p64.so
418ln -sf ${pname64}.so lib%{name}p64.so.0
419ln -sf ${pname64_}.so lib%{name}p64_.so
420ln -sf ${pname64_}.so lib%{name}p64_.so.0
421%endif
422popd
423
424# Get rid of generated CMake config
425rm -rf %{buildroot}%{_libdir}/cmake
426
427# pkg-config
428# fix libdir/includedir in openblas.pc
429pushd %{buildroot}%{_libdir}/pkgconfig
430mv openblas.pc tmp
431echo "libdir=%{_libdir}" > openblas.pc
432echo "includedir=%{_includedir}/%{name}" >> openblas.pc
433sed -e "1,2d" tmp >> openblas.pc
434rm -f tmp
435
436sed "s/-lopenblas/-lopenblaso/" openblas.pc >> openblaso.pc
437sed "s/-lopenblas/-lopenblasp/" openblas.pc >> openblasp.pc
438
439%if %build64
440sed "s/-lopenblas/-lopenblas64/" openblas.pc >> openblas64.pc
441sed "s/-lopenblas/-lopenblaso64/" openblas.pc >> openblaso64.pc
442sed "s/-lopenblas/-lopenblasp64/" openblas.pc >> openblasp64.pc
443sed "s/-lopenblas/-lopenblas64_/" openblas.pc >> openblas64_.pc
444sed "s/-lopenblas/-lopenblaso64_/" openblas.pc >> openblaso64_.pc
445sed "s/-lopenblas/-lopenblasp64_/" openblas.pc >> openblasp64_.pc
446%endif
447popd
448
449# blas/lapack
450mkdir -p %{buildroot}%{_libdir}/%{name}
451
452pushd %{buildroot}%{_libdir}/%{name}
453cp %{SOURCE11} blas.pc
454cp %{SOURCE12} cblas.pc
455cp %{SOURCE13} lapack.pc
456cp %{SOURCE14} lapacke.pc
457
458# blas
459sed -i 's|@libdir@|%{_libdir}|g' blas.pc
460sed -i 's|@LAPACK_VERSION@|%{version}|g' blas.pc
461
462# cblas
463sed -i 's|@libdir@|%{_libdir}|g' cblas.pc
464sed -i 's|@includedir@|%{_includedir}/%{name}|g' cblas.pc
465sed -i 's|@LAPACK_VERSION@|%{version}|g' cblas.pc
466
467# lapack
468sed -i 's|@libdir@|%{_libdir}|g' lapack.pc
469sed -i 's|@LAPACK_VERSION@|%{version}|g' lapack.pc
470
471# lapacke
472sed -i 's|@libdir@|%{_libdir}|g' lapacke.pc
473sed -i 's|@includedir@|%{_includedir}/%{name}|g' lapacke.pc
474sed -i 's|@LAPACK_VERSION@|%{version}|g' lapacke.pc
475
476%if %build64
477sed 's/-lblas/-blas64_/g' blas.pc > blas64.pc
478sed 's/-lcblas/-cblas64_/g' cblas.pc > cblas64.pc
479sed 's/-llapack/-llapack64_/g' lapack.pc > lapack64.pc
480sed 's/-llapacke/-llapacke64_/g' lapacke.pc > lapacke64.pc
481%endif
482popd
483
484
485%post
486update-alternatives \
487    --install %{_libdir}/libblas.so.3 libblas.so.3 \
488              %{_libdir}/libopenblas.so.0 40 \
489    --slave   %{_libdir}/libcblas.so.3 libcblas.so.3 \
490              %{_libdir}/libopenblas.so.0
491update-alternatives \
492    --install %{_libdir}/liblapack.so.3 liblapack.so.3 \
493              %{_libdir}/libopenblas.so.0 40 \
494    --slave   %{_libdir}/liblapacke.so.3 liblapacke.so.3 \
495              %{_libdir}/libopenblas.so.0
496/sbin/ldconfig
497
498%preun
499if [ "$1" = "0" ]
500then
501    update-alternatives \
502        --remove libblas.so.3 %{_libdir}/libopenblas.so.0
503    update-alternatives \
504        --remove liblapack.so.3 %{_libdir}/libopenblas.so.0
505fi
506
507%postun -p /sbin/ldconfig
508
509
510%post openmp
511update-alternatives \
512    --install %{_libdir}/libblas.so.3 libblas.so.3 \
513              %{_libdir}/libopenblaso.so.0 42 \
514    --slave   %{_libdir}/libcblas.so.3 libcblas.so.3 \
515              %{_libdir}/libopenblaso.so.0
516update-alternatives \
517    --install %{_libdir}/liblapack.so.3 liblapack.so.3 \
518              %{_libdir}/libopenblaso.so.0 42 \
519    --slave   %{_libdir}/liblapacke.so.3 liblapacke.so.3 \
520              %{_libdir}/libopenblaso.so.0
521/sbin/ldconfig
522
523%preun openmp
524if [ "$1" = "0" ]
525then
526    update-alternatives \
527        --remove libblas.so.3 %{_libdir}/libopenblaso.so.0
528    update-alternatives \
529        --remove liblapack.so.3 %{_libdir}/libopenblaso.so.0
530fi
531
532%postun openmp -p /sbin/ldconfig
533
534
535%post threads
536update-alternatives \
537    --install %{_libdir}/libblas.so.3 libblas.so.3 \
538              %{_libdir}/libopenblasp.so.0 45 \
539    --slave   %{_libdir}/libcblas.so.3 libcblas.so.3 \
540              %{_libdir}/libopenblasp.so.0
541update-alternatives \
542    --install %{_libdir}/liblapack.so.3 liblapack.so.3 \
543              %{_libdir}/libopenblasp.so.0 45 \
544    --slave   %{_libdir}/liblapacke.so.3 liblapacke.so.3 \
545              %{_libdir}/libopenblasp.so.0
546/sbin/ldconfig
547
548%preun threads
549if [ "$1" = "0" ]
550then
551    update-alternatives \
552        --remove libblas.so.3 %{_libdir}/libopenblasp.so.0
553    update-alternatives \
554        --remove liblapack.so.3 %{_libdir}/libopenblasp.so.0
555fi
556
557%postun threads -p /sbin/ldconfig
558
559
560%if %build64
561%post serial64 -p /sbin/ldconfig
562%postun serial64 -p /sbin/ldconfig
563
564%post openmp64 -p /sbin/ldconfig
565%postun openmp64 -p /sbin/ldconfig
566
567%post threads64 -p /sbin/ldconfig
568%postun threads64 -p /sbin/ldconfig
569
570
571%post serial64_
572update-alternatives \
573    --install %{_libdir}/libblas64_.so.3 libblas64_.so.3 \
574              %{_libdir}/libopenblas64_.so.0 40 \
575    --slave   %{_libdir}/libcblas64_.so.3 libcblas64_.so.3 \
576              %{_libdir}/libopenblas64_.so.0
577update-alternatives \
578    --install %{_libdir}/liblapack64_.so.3 liblapack64_.so.3 \
579              %{_libdir}/libopenblas64_.so.0 40
580update-alternatives \
581    --install %{_libdir}/liblapacke64_.so.3 liblapacke64_.so.3 \
582              %{_libdir}/libopenblas64_.so.0 40
583/sbin/ldconfig
584
585%preun serial64_
586if [ "$1" = "0" ]
587then
588    update-alternatives \
589        --remove libblas64_.so.3 %{_libdir}/libopenblas64_.so.0
590    update-alternatives \
591        --remove liblapack64_.so.3 %{_libdir}/libopenblas64_.so.0
592    update-alternatives \
593        --remove liblapacke64_.so.3 %{_libdir}/libopenblas64_.so.0
594fi
595
596%postun serial64_ -p /sbin/ldconfig
597
598
599%post openmp64_
600update-alternatives \
601    --install %{_libdir}/libblas64_.so.3 libblas64_.so.3 \
602              %{_libdir}/libopenblaso64_.so.0 42 \
603    --slave   %{_libdir}/libcblas64_.so.3 libcblas64_.so.3 \
604              %{_libdir}/libopenblaso64_.so.0
605update-alternatives \
606    --install %{_libdir}/liblapack64_.so.3 liblapack64_.so.3 \
607              %{_libdir}/libopenblaso64_.so.0 42
608update-alternatives \
609    --install %{_libdir}/liblapacke64_.so.3 liblapacke64_.so.3 \
610              %{_libdir}/libopenblaso64_.so.0 42
611/sbin/ldconfig
612
613%preun openmp64_
614if [ "$1" = "0" ]
615then
616    update-alternatives \
617        --remove libblas64_.so.3 %{_libdir}/libopenblaso64_.so.0
618    update-alternatives \
619        --remove liblapack64_.so.3 %{_libdir}/libopenblaso64_.so.0
620    update-alternatives \
621        --remove liblapacke64_.so.3 %{_libdir}/libopenblaso64_.so.0
622fi
623
624%postun openmp64_ -p /sbin/ldconfig
625
626
627%post threads64_
628update-alternatives \
629    --install %{_libdir}/libblas64_.so.3 libblas64_.so.3 \
630              %{_libdir}/libopenblasp64_.so.0 45 \
631    --slave   %{_libdir}/libcblas64_.so.3 libcblas64_.so.3 \
632              %{_libdir}/libopenblasp64_.so.0
633update-alternatives \
634    --install %{_libdir}/liblapack64_.so.3 liblapack64_.so.3 \
635              %{_libdir}/libopenblasp64_.so.0 45
636update-alternatives \
637    --install %{_libdir}/liblapacke64_.so.3 liblapacke64_.so.3 \
638              %{_libdir}/libopenblasp64_.so.0 45
639/sbin/ldconfig
640
641%preun threads64_
642if [ "$1" = "0" ]
643then
644    update-alternatives \
645        --remove libblas64_.so.3 %{_libdir}/libopenblasp64_.so.0
646    update-alternatives \
647        --remove liblapack64_.so.3 %{_libdir}/libopenblasp64_.so.0
648    update-alternatives \
649        --remove liblapacke64_.so.3 %{_libdir}/libopenblasp64_.so.0
650fi
651
652%postun threads64_ -p /sbin/ldconfig
653%endif
654
655
656%post devel
657update-alternatives \
658    --install %{_libdir}/libblas.so libblas.so \
659              %{_libdir}/libopenblas.so 40 \
660    --slave   %{_libdir}/libcblas.so libcblas.so \
661              %{_libdir}/libopenblas.so \
662    --slave   %{_libdir}/pkgconfig/blas.pc blas.pc \
663              %{_libdir}/%{name}/blas.pc \
664    --slave   %{_libdir}/pkgconfig/cblas.pc cblas.pc \
665              %{_libdir}/%{name}/cblas.pc
666update-alternatives \
667    --install %{_libdir}/liblapack.so liblapack.so \
668              %{_libdir}/libopenblas.so 40 \
669    --slave   %{_libdir}/liblapacke.so liblapacke.so \
670              %{_libdir}/libopenblas.so \
671    --slave   %{_libdir}/pkgconfig/lapack.pc lapack.pc \
672              %{_libdir}/%{name}/lapack.pc \
673    --slave   %{_libdir}/pkgconfig/lapacke.pc lapacke.pc \
674              %{_libdir}/%{name}/lapacke.pc
675/sbin/ldconfig
676
677%preun devel
678if [ "$1" = "0" ]
679then
680    update-alternatives \
681        --remove libblas.so %{_libdir}/libopenblas.so
682    update-alternatives \
683        --remove liblapack.so %{_libdir}/libopenblas.so
684fi
685
686%postun devel -p /sbin/ldconfig
687
688
689%if %build64
690%post -n %{name}64-devel
691update-alternatives \
692    --install %{_libdir}/libblas64_.so libblas64_.so \
693              %{_libdir}/libopenblas64_.so 40 \
694    --slave   %{_libdir}/libcblas64_.so libcblas64_.so \
695              %{_libdir}/libopenblas64_.so \
696    --slave   %{_libdir}/pkgconfig/blas64.pc blas64.pc \
697              %{_libdir}/%{name}/blas64.pc \
698    --slave   %{_libdir}/pkgconfig/cblas64.pc cblas64.pc \
699              %{_libdir}/%{name}/cblas64.pc
700update-alternatives \
701    --install %{_libdir}/liblapack64_.so liblapack64_.so \
702              %{_libdir}/libopenblas64_.so 40 \
703    --slave   %{_libdir}/pkgconfig/lapack64.pc lapack64.pc \
704              %{_libdir}/%{name}/lapack64.pc
705update-alternatives \
706    --install %{_libdir}/liblapacke64_.so liblapacke64_.so \
707              %{_libdir}/libopenblas64_.so 40 \
708    --slave   %{_libdir}/pkgconfig/lapacke64.pc lapacke64.pc \
709              %{_libdir}/%{name}/lapacke64.pc
710/sbin/ldconfig
711
712%preun -n %{name}64-devel
713if [ "$1" = "0" ]
714then
715    update-alternatives \
716        --remove libblas64_.so %{_libdir}/libopenblas64_.so
717    update-alternatives \
718        --remove liblapack64_.so %{_libdir}/libopenblas64_.so
719    update-alternatives \
720        --remove liblapacke64_.so %{_libdir}/libopenblas64_.so
721fi
722
723%postun -n %{name}64-devel -p /sbin/ldconfig
724%endif
725
726
727%post static
728update-alternatives \
729    --install %{_libdir}/libblas.a libblas.a \
730              %{_libdir}/libopenblas.a 40 \
731    --slave   %{_libdir}/libcblas.a libcblas.a \
732              %{_libdir}/libopenblas.a
733update-alternatives \
734    --install %{_libdir}/liblapack.a liblapack.a \
735              %{_libdir}/libopenblas.a 40 \
736    --slave   %{_libdir}/liblapacke.a liblapacke.a \
737              %{_libdir}/libopenblas.a
738
739%preun static
740if [ "$1" = "0" ]
741then
742    update-alternatives \
743        --remove libblas.a %{_libdir}/libopenblas.a
744    update-alternatives \
745        --remove liblapack.a %{_libdir}/libopenblas.a
746fi
747
748
749%if %build64
750%post -n %{name}64-static
751update-alternatives \
752    --install %{_libdir}/libblas64_.a libblas64_.a \
753              %{_libdir}/libopenblas64_.a 40 \
754    --slave   %{_libdir}/libcblas64_.a libcblas64_.a \
755              %{_libdir}/libopenblas64_.a
756update-alternatives \
757    --install %{_libdir}/liblapack64_.a liblapack64_.a \
758              %{_libdir}/libopenblas64_.a 40
759update-alternatives \
760    --install %{_libdir}/liblapacke64_.a liblapacke64_.a \
761              %{_libdir}/libopenblas64_.a 40
762
763%preun -n %{name}64-static
764if [ "$1" = "0" ]
765then
766    update-alternatives \
767        --remove libblas64_.a %{_libdir}/libopenblas64_.a
768    update-alternatives \
769        --remove liblapack64_.a %{_libdir}/libopenblas64_.a
770    update-alternatives \
771        --remove liblapacke64_.a %{_libdir}/libopenblas64_.a
772fi
773%endif
774
775
776%post Rblas -p /sbin/ldconfig
777%postun Rblas -p /sbin/ldconfig
778
779
780%clean
781rm -rf %{buildroot}
782
783
784%files
785%doc serial/Changelog.txt serial/GotoBLAS* serial/LICENSE
786%{_libdir}/lib%{name}-*.so
787%{_libdir}/lib%{name}.so.*
788
789%files openmp
790%doc openmp/Changelog.txt openmp/GotoBLAS* openmp/LICENSE
791%{_libdir}/lib%{name}o-*.so
792%{_libdir}/lib%{name}o.so.*
793
794%files threads
795%doc threaded/Changelog.txt threaded/GotoBLAS* threaded/LICENSE
796%{_libdir}/lib%{name}p-*.so
797%{_libdir}/lib%{name}p.so.*
798
799%if %build64
800%files serial64
801%doc serial64/Changelog.txt serial64/GotoBLAS* serial64/LICENSE
802%{_libdir}/lib%{name}64-*.so
803%{_libdir}/lib%{name}64.so.*
804
805%files serial64_
806%doc serial64_/Changelog.txt serial64_/GotoBLAS* serial64_/LICENSE
807%{_libdir}/lib%{name}64_-*.so
808%{_libdir}/lib%{name}64_.so.*
809
810%files openmp64
811%doc openmp64/Changelog.txt openmp64/GotoBLAS* openmp64/LICENSE
812%{_libdir}/lib%{name}o64-*.so
813%{_libdir}/lib%{name}o64.so.*
814
815%files openmp64_
816%doc openmp64_/Changelog.txt openmp64_/GotoBLAS* openmp64_/LICENSE
817%{_libdir}/lib%{name}o64_-*.so
818%{_libdir}/lib%{name}o64_.so.*
819
820%files threads64
821%doc threaded64/Changelog.txt threaded64/GotoBLAS* threaded64/LICENSE
822%{_libdir}/lib%{name}p64-*.so
823%{_libdir}/lib%{name}p64.so.*
824
825%files threads64_
826%doc threaded64_/Changelog.txt threaded64_/GotoBLAS* threaded64_/LICENSE
827%{_libdir}/lib%{name}p64_-*.so
828%{_libdir}/lib%{name}p64_.so.*
829%endif
830
831%files Rblas
832%dir %{_libdir}/R/lib
833%{_libdir}/R/lib/libRblas.so
834
835%files devel
836%{_includedir}/%{name}/
837%{_libdir}/lib%{name}.so
838%{_libdir}/lib%{name}o.so
839%{_libdir}/lib%{name}p.so
840%{_libdir}/pkgconfig/openblas.pc
841%{_libdir}/pkgconfig/openblaso.pc
842%{_libdir}/pkgconfig/openblasp.pc
843%dir %{_libdir}/%{name}
844%{_libdir}/%{name}/blas.pc
845%{_libdir}/%{name}/cblas.pc
846%{_libdir}/%{name}/lapack.pc
847%{_libdir}/%{name}/lapacke.pc
848
849%files static
850%{_libdir}/lib%{name}.a
851%{_libdir}/lib%{name}o.a
852%{_libdir}/lib%{name}p.a
853
854%if %build64
855%files -n %{name}64-devel
856%{_libdir}/lib%{name}64.so
857%{_libdir}/lib%{name}o64.so
858%{_libdir}/lib%{name}p64.so
859%{_libdir}/lib%{name}64_.so
860%{_libdir}/lib%{name}o64_.so
861%{_libdir}/lib%{name}p64_.so
862%{_libdir}/pkgconfig/*64.pc
863%{_libdir}/pkgconfig/*64_.pc
864%dir %{_libdir}/%{name}
865%{_libdir}/%{name}/*64*.pc
866
867%files -n %{name}64-static
868%{_libdir}/lib%{name}64.a
869%{_libdir}/lib%{name}o64.a
870%{_libdir}/lib%{name}p64.a
871%{_libdir}/lib%{name}64_.a
872%{_libdir}/lib%{name}o64_.a
873%{_libdir}/lib%{name}p64_.a
874%endif
875
876
877%changelog
878* Fri Jan 25 2019 Toshiaki Ara <ara_t@384.jp> 0.3.3-2
879- rebuild with gfortran-8.2.0
880
881* Sat Oct 06 2018 Toshiaki Ara <ara_t@384.jp> 0.3.3-1
882- update to 0.3.3
883- drop Patch2 and 3
884
885* Mon Jul 02 2018 Toshiaki Ara <ara_t@384.jp> 0.2.20-2
886- divide subpackages: openblas64-devel openblas64-static
887- fix wrong Provides
888
889* Wed Jun 27 2018 Toshiaki Ara <ara_t@384.jp> 0.2.20-1
890- initial build for Vine Linux (only x86_64 and %%{ix86})
891
Note: See TracBrowser for help on using the repository browser.