openblas-vl.spec 26 KB

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