Accepting request 533655 from home:eeich:hpc_alt
- Generate baselib.conf dynamically and only for the non-HPC builds: this avoids issues with the source validator. - Convert openblas to multibuild. - Add HPC build using environment modules. (FATE#321708). - fix-arm64-cpuid-return.patch Fix CPUID detection on ARM (From OHPC). OBS-URL: https://build.opensuse.org/request/show/533655 OBS-URL: https://build.opensuse.org/package/show/science/openblas?expand=0&rev=55
This commit is contained in:
parent
2dc7521b9a
commit
48de63cb9e
23
README.HPC.SUSE
Normal file
23
README.HPC.SUSE
Normal file
@ -0,0 +1,23 @@
|
||||
openSUSE specific packaging
|
||||
===========================
|
||||
|
||||
OpenBLAS provides optimized implementations of BLAS and LAPACK.
|
||||
openSUSE provides two variants:
|
||||
* With OpenMP support
|
||||
* With threading support
|
||||
The serial variant has been dropped. To run a program
|
||||
which requires the serial version (ie. because it is
|
||||
multi-threaded itself), either specify the environment
|
||||
variable OMP_NUM_THREADS=1 or place a call to
|
||||
void openblas_set_num_threads(int num_threads);
|
||||
in your program to limit the number of threads this library
|
||||
uses to 1.
|
||||
|
||||
On x86 systems OpenBLAS uses dynamic architectures support,
|
||||
so it contains all CPU-related optimizations.
|
||||
|
||||
How to switch between the various BLAS/LAPACK implementations
|
||||
=============================================================
|
||||
|
||||
The openmp and threaded variants may be installed in parallel.
|
||||
To select which one to use please use the 'modules' command.
|
10
_constraints
Normal file
10
_constraints
Normal file
@ -0,0 +1,10 @@
|
||||
<constraints>
|
||||
<hardware>
|
||||
<disk>
|
||||
<size unit="G">20</size>
|
||||
</disk>
|
||||
<memory>
|
||||
<size unit="M">8000</size>
|
||||
</memory>
|
||||
</hardware>
|
||||
</constraints>
|
7
_multibuild
Normal file
7
_multibuild
Normal file
@ -0,0 +1,7 @@
|
||||
<multibuild>
|
||||
<package>serial</package>
|
||||
<package>openmp</package>
|
||||
<package>pthreads</package>
|
||||
<package>gnu-hpc</package>
|
||||
<package>gnu-hpc-pthreads</package>
|
||||
</multibuild>
|
25
fix-arm64-cpuid-return.patch
Normal file
25
fix-arm64-cpuid-return.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 63d4fcdecd40cb9eee8228680521ff93a80a8e11 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Van Hensbergen <eric.vanhensbergen@arm.com>
|
||||
Date: Tue, 23 Aug 2016 11:29:27 -0500
|
||||
Subject: [PATCH] fix-arm64-cpuid-return
|
||||
|
||||
---
|
||||
cpuid_arm64.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/cpuid_arm64.c b/cpuid_arm64.c
|
||||
index c7a27f8..95fc708 100644
|
||||
--- a/cpuid_arm64.c
|
||||
+++ b/cpuid_arm64.c
|
||||
@@ -59,7 +59,7 @@ int get_feature(char *search)
|
||||
fclose(infile);
|
||||
|
||||
|
||||
- if( p == NULL ) return;
|
||||
+ if( p == NULL ) return(0);
|
||||
|
||||
t = strtok(p," ");
|
||||
while( t = strtok(NULL," "))
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,3 +1,18 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 12 10:01:10 UTC 2017 - eich@suse.com
|
||||
|
||||
- Generate baselib.conf dynamically and only for the non-HPC
|
||||
builds: this avoids issues with the source validator.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 8 14:30:29 UTC 2017 - eich@suse.com
|
||||
|
||||
- Convert openblas to multibuild.
|
||||
- Add HPC build using environment modules.
|
||||
(FATE#321708).
|
||||
- fix-arm64-cpuid-return.patch
|
||||
Fix CPUID detection on ARM (From OHPC).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 9 19:45:54 UTC 2017 - dmitry_r@opensuse.org
|
||||
|
||||
|
602
openblas.spec
602
openblas.spec
@ -16,152 +16,233 @@
|
||||
#
|
||||
|
||||
|
||||
Name: openblas
|
||||
Version: 0.2.20
|
||||
%global flavor @BUILD_FLAVOR@%{nil}
|
||||
|
||||
%define _vers 0_2_20
|
||||
%define vers 0.2.20
|
||||
%define pname openblas
|
||||
|
||||
%if "%flavor" == ""
|
||||
%define package_name %{pname}
|
||||
ExclusiveArch: do_not_build
|
||||
%endif
|
||||
|
||||
%global build_flags USE_THREAD=1 USE_OPENMP=1
|
||||
|
||||
%if "%flavor" == "serial"
|
||||
%define build_flags USE_THREAD=0 USE_OPENMP=0
|
||||
%define openblas_so_prio 20
|
||||
# we build devel packages only from one flavor
|
||||
%define build_devel 1
|
||||
%{bcond_with hpc}
|
||||
%endif
|
||||
|
||||
%if "%flavor" == "pthreads"
|
||||
%define build_flags USE_THREAD=1 USE_OPENMP=0
|
||||
%ifarch %ix86 x86_64
|
||||
%define openblas_so_prio 50
|
||||
%else
|
||||
%define openblas_so_prio 20
|
||||
%endif
|
||||
%{bcond_with hpc}
|
||||
%endif
|
||||
|
||||
%if "%flavor" == "openmp"
|
||||
%ifarch %ix86 x86_64
|
||||
%define openblas_so_prio 20
|
||||
%else
|
||||
%define openblas_so_prio 50
|
||||
%endif
|
||||
%{bcond_with hpc}
|
||||
%endif
|
||||
|
||||
%if "%flavor" == "gnu-hpc"
|
||||
%define compiler_family gnu
|
||||
%undefine c_f_ver
|
||||
%{bcond_without hpc}
|
||||
%endif
|
||||
|
||||
%if "%flavor" == "gnu6-hpc"
|
||||
%define compiler_family gnu
|
||||
%define c_f_ver 6
|
||||
%{bcond_without hpc}
|
||||
%endif
|
||||
|
||||
%if "%flavor" == "gnu-hpc-pthreads"
|
||||
%define compiler_family gnu
|
||||
%undefine c_f_ver
|
||||
%define ext pthreads
|
||||
%define build_flags USE_THREAD=1 USE_OPENMP=0
|
||||
%{bcond_without hpc}
|
||||
%endif
|
||||
|
||||
%if "%flavor" == "gnu6-hpc-pthreads"
|
||||
%define compiler_family gnu
|
||||
%define c_f_ver 6
|
||||
%define ext pthreads
|
||||
%define build_flags USE_THREAD=1 USE_OPENMP=0
|
||||
%{bcond_without hpc}
|
||||
%endif
|
||||
|
||||
%if %{without hpc}
|
||||
%if 0%{!?package_name:1}
|
||||
%define package_name %{pname}_%{flavor}
|
||||
%endif
|
||||
%define so_v 0
|
||||
%define p_prefix %_prefix
|
||||
%define p_includedir %_includedir/%pname
|
||||
%define p_libdir %_libdir
|
||||
%define p_cmakedir %{p_libdir}/cmake/%{pname}
|
||||
%define num_threads 64
|
||||
|
||||
%else
|
||||
%define package_name %{hpc_package_name %_vers}
|
||||
|
||||
%define p_prefix %hpc_prefix
|
||||
%define p_includedir %hpc_includedir
|
||||
%define p_libdir %hpc_libdir
|
||||
%define p_cmakedir %{hpc_libdir}/cmake
|
||||
%define num_threads 256
|
||||
|
||||
%{hpc_init -c %{compiler_family} %{?c_f_ver:-v %{c_f_ver}} %{?ext:-e %{ext}}}
|
||||
%endif
|
||||
|
||||
Name: %{package_name}
|
||||
Version: %vers
|
||||
Release: 0
|
||||
Summary: An optimized BLAS library based on GotoBLAS2
|
||||
License: BSD-3-Clause
|
||||
Group: Productivity/Scientific/Math
|
||||
Url: http://www.openblas.net
|
||||
Source0: https://github.com/xianyi/OpenBLAS/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||
Source0: https://github.com/xianyi/OpenBLAS/archive/v%{version}.tar.gz#/%{pname}-%{version}.tar.gz
|
||||
Source1: README.SUSE
|
||||
Source2: README.HPC.SUSE
|
||||
# PATCH-FIX-UPSTREAM c_xerbla_no-void-return.patch
|
||||
Patch1: c_xerbla_no-void-return.patch
|
||||
# PATCH-FIX-UPSTREAM openblas-noexecstack.patch
|
||||
Patch2: openblas-noexecstack.patch
|
||||
# PATCH-FIX-UPSTREADM fix-arm64-cpuid-return.patch
|
||||
Patch4: fix-arm64-cpuid-return.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%if %{without hpc}
|
||||
BuildRequires: gcc-fortran
|
||||
BuildRequires: update-alternatives
|
||||
Requires(post): update-alternatives
|
||||
Requires(preun): update-alternatives
|
||||
%else
|
||||
BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel
|
||||
BuildRequires: lua-lmod
|
||||
BuildRequires: suse-hpc
|
||||
%global dep_summary %{summary}
|
||||
%endif
|
||||
|
||||
%description
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
%package -n lib%{name}_serial0
|
||||
Summary: An optimized BLAS library based on GotoBLAS2, serial version
|
||||
%package -n lib%{name}%{?so_v}
|
||||
Summary: An optimized BLAS library based on GotoBLAS2, %{flavor} version
|
||||
Group: System/Libraries
|
||||
%if %{without hpc}
|
||||
Requires(post): update-alternatives
|
||||
Requires(preun): update-alternatives
|
||||
Obsoletes: lib%{name}0 < %{version}
|
||||
Provides: lib%{name}0 = %{version}
|
||||
%if "%flavor" == "serial"
|
||||
Obsoletes: lib%{pname}%{so_v} < %{version}
|
||||
Provides: lib%{pname}%{so_v} = %{version}
|
||||
%else
|
||||
Obsoletes: lib%{pname}0
|
||||
%endif
|
||||
%if "%flavor" == "pthreads"
|
||||
Obsoletes: lib%{pname}p0
|
||||
%endif
|
||||
%if "%flavor" == "openmp"
|
||||
Obsoletes: lib%{pname}o0
|
||||
%endif
|
||||
%else # with hpc
|
||||
Requires: lua-lmod
|
||||
%endif
|
||||
|
||||
%description -n lib%{name}_serial0
|
||||
%description -n lib%{name}%{?so_v}
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
%package -n lib%{name}_serial-devel
|
||||
Summary: Development libraries for OpenBLAS, serial version
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}-devel-headers = %{version}
|
||||
Requires: lib%{name}_serial0 = %{version}
|
||||
%{?with_hpc:%{hpc_master_package -l -L}}
|
||||
|
||||
%description -n lib%{name}_serial-devel
|
||||
%package -n lib%{name}-devel
|
||||
Summary: Development libraries for OpenBLAS, %{flavor} version
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: lib%{name}%{?so_v} = %{version}
|
||||
%if %{without hpc}
|
||||
Requires: %{pname}-devel-headers = %{version}
|
||||
%else
|
||||
%hpc_requires_devel
|
||||
%endif
|
||||
|
||||
%description -n lib%{name}-devel
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the development libraries for serial OpenBLAS version.
|
||||
|
||||
%package -n lib%{name}_openmp0
|
||||
Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
|
||||
Group: System/Libraries
|
||||
Requires(post): update-alternatives
|
||||
Requires(preun): update-alternatives
|
||||
Obsoletes: lib%{name}0
|
||||
Obsoletes: lib%{name}o0
|
||||
|
||||
%description -n lib%{name}_openmp0
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the library compiled with OpenMP support.
|
||||
|
||||
%package -n lib%{name}_openmp-devel
|
||||
Summary: Development libraries for OpenBLAS, OpenMP version
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}-devel-headers = %{version}
|
||||
Requires: lib%{name}_openmp0 = %{version}
|
||||
|
||||
%description -n lib%{name}_openmp-devel
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the development libraries for OpenMP OpenBLAS version.
|
||||
|
||||
%package -n lib%{name}_pthreads0
|
||||
Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
|
||||
Group: System/Libraries
|
||||
Requires(post): update-alternatives
|
||||
Requires(preun): update-alternatives
|
||||
Obsoletes: lib%{name}0
|
||||
Obsoletes: lib%{name}p0
|
||||
|
||||
%description -n lib%{name}_pthreads0
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the library compiled with threading support.
|
||||
|
||||
%package -n lib%{name}_pthreads-devel
|
||||
Summary: Development headers and libraries for OpenBLAS, pthreads version
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}-devel-headers = %{version}
|
||||
Requires: lib%{name}_pthreads0 = %{version}
|
||||
|
||||
%description -n lib%{name}_pthreads-devel
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the development libraries for pthreads OpenBLAS version.
|
||||
|
||||
%package devel
|
||||
Summary: Development headers and libraries for OpenBLAS
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}-devel-headers = %{version}
|
||||
%ifarch %ix86 x86_64
|
||||
Requires: lib%{name}_pthreads-devel = %{version}
|
||||
%else
|
||||
Requires: lib%{name}_openmp-devel = %{version}
|
||||
%endif
|
||||
|
||||
%description devel
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the development libraries and headers for OpenBLAS.
|
||||
|
||||
%package devel-headers
|
||||
Summary: Development headers for OpenBLAS
|
||||
Group: Development/Libraries/C and C++
|
||||
Conflicts: %{name}-devel < %{version}
|
||||
BuildArch: noarch
|
||||
|
||||
%description devel-headers
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains headers for OpenBLAS.
|
||||
%{?with_hpc:%{hpc_master_package -l -L devel}}
|
||||
|
||||
%package devel-static
|
||||
Summary: Static version of OpenBLAS
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{name}-devel = %{version}
|
||||
%if %{without hpc}
|
||||
Requires: %{pname}-devel = %{version}
|
||||
%else
|
||||
Requires: lib%{name}-devel = %{version}
|
||||
%endif
|
||||
|
||||
%description devel-static
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains the static libraries.
|
||||
|
||||
%prep
|
||||
%setup -q -c -T
|
||||
%package -n %{pname}-devel
|
||||
Summary: Development headers and libraries for OpenBLAS
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %{pname}-devel-headers = %{version}
|
||||
%ifarch %ix86 x86_64
|
||||
Requires: lib%{pname}_pthreads-devel = %{version}
|
||||
%else
|
||||
Requires: lib%{pname}_openmp-devel = %{version}
|
||||
%endif
|
||||
|
||||
# Untar source
|
||||
tar -zxf %{SOURCE0}
|
||||
cd OpenBLAS-%{version}
|
||||
%description -n %{pname}-devel
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
%package -n %{pname}-devel-headers
|
||||
Summary: Development headers for OpenBLAS
|
||||
Group: Development/Libraries/C and C++
|
||||
Conflicts: %{pname}-devel < %{version}
|
||||
BuildArch: noarch
|
||||
|
||||
%description -n %{pname}-devel-headers
|
||||
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
|
||||
|
||||
This package contains headers for OpenBLAS.
|
||||
|
||||
%prep
|
||||
|
||||
%setup -q -n OpenBLAS-%{version}
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
cd ..
|
||||
|
||||
# Prepare build for serial, pthreads and OpenMP versions
|
||||
cp -ar OpenBLAS-%{version} openmp
|
||||
cp -ar OpenBLAS-%{version} pthreads
|
||||
mv OpenBLAS-%{version} serial
|
||||
%patch4 -p1
|
||||
|
||||
%if %{without hpc}
|
||||
cp %{SOURCE1} .
|
||||
%else
|
||||
cp %{SOURCE2} .
|
||||
%endif
|
||||
|
||||
%build
|
||||
|
||||
%if %{with hpc}
|
||||
%hpc_debug
|
||||
%hpc_setup_compiler
|
||||
%endif
|
||||
|
||||
# Only x86/x86-64 CPUs support DYNAMIC_ARCH
|
||||
%ifarch %ix86 x86_64
|
||||
%define openblas_target DYNAMIC_ARCH=1
|
||||
@ -171,227 +252,206 @@ cp %{SOURCE1} .
|
||||
%define openblas_target TARGET=ARMV8
|
||||
%endif
|
||||
# Make serial, threaded and OpenMP versions
|
||||
make -C serial %{?openblas_target} USE_THREAD=0 USE_OPENMP=0 LIBNAMESUFFIX=serial \
|
||||
FC=gfortran CC=gcc COMMON_OPT="%{optflags}" NUM_THREADS=64 V=1
|
||||
make -C openmp %{?openblas_target} USE_THREAD=1 USE_OPENMP=1 LIBNAMESUFFIX=openmp \
|
||||
FC=gfortran CC=gcc COMMON_OPT="%{optflags}" NUM_THREADS=64 V=1
|
||||
make -C pthreads %{?openblas_target} USE_THREAD=1 USE_OPENMP=0 LIBNAMESUFFIX=pthreads \
|
||||
FC=gfortran CC=gcc COMMON_OPT="%{optflags}" NUM_THREADS=64 V=1
|
||||
make %{?_smp_mflags} %{?openblas_target} %{?build_flags} \
|
||||
COMMON_OPT="%{optflags}" \
|
||||
NUM_THREADS=%{num_threads} V=1 \
|
||||
OPENBLAS_LIBRARY_DIR=%{p_libdir} \
|
||||
OPENBLAS_INCLUDE_DIR=%{hpc_includedir} \
|
||||
OPENBLAS_CMAKE_DIR=%{p_cmakedir} \
|
||||
PREFIX=%{p_prefix} \
|
||||
%{!?with_hpc:LIBNAMESUFFIX=%flavor FC=gfortran CC=gcc}
|
||||
|
||||
%install
|
||||
%if %{with hpc}
|
||||
%hpc_setup_compiler
|
||||
%endif
|
||||
|
||||
# Install serial library and headers
|
||||
make -C serial USE_THREAD=0 LIBNAMESUFFIX=serial \
|
||||
OPENBLAS_LIBRARY_DIR=%{buildroot}%{_libdir} \
|
||||
OPENBLAS_INCLUDE_DIR=%{buildroot}%{_includedir}/%{name} \
|
||||
OPENBLAS_CMAKE_DIR=%{buildroot}%{_libdir}/cmake/%{name} \
|
||||
PREFIX=%{buildroot}%{_prefix} install
|
||||
%make_install %{?build_flags} \
|
||||
OPENBLAS_LIBRARY_DIR=%{p_libdir} \
|
||||
OPENBLAS_INCLUDE_DIR=%{p_includedir} \
|
||||
OPENBLAS_CMAKE_DIR=%{p_cmakedir} \
|
||||
PREFIX=%{p_prefix} \
|
||||
%{!?with_hpc:LIBNAMESUFFIX=%flavor}
|
||||
|
||||
# Delete info about OBS host cpu
|
||||
%ifarch %ix86 x86_64
|
||||
sed -i '/#define OPENBLAS_NEEDBUNDERSCORE/,/#define OPENBLAS_VERSION/{//!d}' \
|
||||
%{buildroot}%{p_includedir}/openblas_config.h
|
||||
%endif
|
||||
|
||||
%if %{without hpc}
|
||||
|
||||
%if 0%{!?build_devel:1}
|
||||
# We need the includes only once
|
||||
rm -rf %{buildroot}%{p_includedir}/
|
||||
rm -rf %{buildroot}%{p_libdir}/cmake/
|
||||
%else
|
||||
# Fix cmake config file
|
||||
sed -i 's|%{buildroot}||g' %{buildroot}%{p_cmakedir}/*.cmake
|
||||
sed -i 's|_serial||g' %{buildroot}%{p_cmakedir}/*.cmake
|
||||
%endif
|
||||
|
||||
# Put libraries in correct location
|
||||
rm -rf %{buildroot}%{_libdir}/lib%{name}*
|
||||
rm -rf %{buildroot}%{p_libdir}/lib%{name}*
|
||||
|
||||
# Install the serial library
|
||||
install -D -p -m 755 serial/lib%{name}_serial.so %{buildroot}%{_libdir}/lib%{name}_serial.so.0
|
||||
install -D -p -m 644 serial/lib%{name}_serial.a %{buildroot}%{_libdir}/lib%{name}_serial.a
|
||||
|
||||
# Install the OpenMP library
|
||||
install -D -p -m 755 openmp/lib%{name}_openmp.so %{buildroot}%{_libdir}/lib%{name}_openmp.so.0
|
||||
install -D -p -m 644 openmp/lib%{name}_openmp.a %{buildroot}%{_libdir}/lib%{name}_openmp.a
|
||||
|
||||
# Install the threaded library
|
||||
install -D -p -m 755 pthreads/lib%{name}_pthreads.so %{buildroot}%{_libdir}/lib%{name}_pthreads.so.0
|
||||
install -D -p -m 644 pthreads/lib%{name}_pthreads.a %{buildroot}%{_libdir}/lib%{name}_pthreads.a
|
||||
install -D -p -m 755 lib%{name}.so %{buildroot}%{p_libdir}/lib%{name}.so.0
|
||||
install -D -p -m 644 lib%{name}.a %{buildroot}%{p_libdir}/lib%{name}.a
|
||||
|
||||
# Fix source permissions (also applies to LAPACK)
|
||||
find -name \*.f -exec chmod 644 {} +
|
||||
|
||||
# Remove pkgconfig file, it can't be configured for different library suffixes we use and, as such, is useless
|
||||
rm -fr %{buildroot}%{_libdir}/pkgconfig/
|
||||
rm -fr %{buildroot}%{p_libdir}/pkgconfig/
|
||||
|
||||
# Dummy target for update-alternatives
|
||||
install -d %{buildroot}/%{_sysconfdir}/alternatives
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_libdir}/lib%{name}.so.0
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/lib%{name}.so.0
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_libdir}/libblas.so.3
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_libdir}/libcblas.so.3
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_libdir}/liblapack.so.3
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/libblas.so.3
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/libcblas.so.3
|
||||
ln -s lib%{name}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/liblapack.so.3
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{p_libdir}/lib%{pname}.so.0
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/lib%{pname}.so.0
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{p_libdir}/libblas.so.3
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{p_libdir}/libcblas.so.3
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{p_libdir}/liblapack.so.3
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/libblas.so.3
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/libcblas.so.3
|
||||
ln -s lib%{pname}.so.0 %{buildroot}/%{_sysconfdir}/alternatives/liblapack.so.3
|
||||
|
||||
# Fix symlinks
|
||||
pushd %{buildroot}%{_libdir}
|
||||
pushd %{buildroot}%{p_libdir}
|
||||
%if 0%{?build_devel}
|
||||
ln -sf lib%{pname}.so.0 lib%{pname}.so
|
||||
%endif
|
||||
ln -sf lib%{name}.so.0 lib%{name}.so
|
||||
# Serial libraries
|
||||
ln -sf lib%{name}_serial.so.0 lib%{name}_serial.so
|
||||
# OpenMP libraries
|
||||
ln -sf lib%{name}_openmp.so.0 lib%{name}_openmp.so
|
||||
# Threaded libraries
|
||||
ln -sf lib%{name}_pthreads.so.0 lib%{name}_pthreads.so
|
||||
|
||||
# Fix cmake config file
|
||||
sed -i 's|%{buildroot}||g' %{buildroot}%{_libdir}/cmake/%{name}/*.cmake
|
||||
sed -i 's|_serial||g' %{buildroot}%{_libdir}/cmake/%{name}/*.cmake
|
||||
%else # with hpc
|
||||
|
||||
# Delete info about OBS host cpu
|
||||
%ifarch %ix86 x86_64
|
||||
sed -i '/#define OPENBLAS_NEEDBUNDERSCORE/,/#define OPENBLAS_VERSION/{//!d}' %{buildroot}%{_includedir}/%{name}/openblas_config.h
|
||||
%endif
|
||||
# HPC module file
|
||||
%hpc_write_modules_files
|
||||
#%%Module1.0#####################################################################
|
||||
|
||||
%post -n lib%{name}_serial0
|
||||
proc ModulesHelp { } {
|
||||
|
||||
puts stderr " "
|
||||
puts stderr "This module loads the %{pname} library built with the %{compiler_family} compiler toolchain."
|
||||
puts stderr "\nVersion %{version}\n"
|
||||
|
||||
}
|
||||
module-whatis "Name: %{PNAME} built with %{compiler_family} toolchain"
|
||||
module-whatis "Version: %{version}"
|
||||
module-whatis "Category: runtime library"
|
||||
module-whatis "Description: %{dep_summary}"
|
||||
module-whatis "%{url}"
|
||||
|
||||
set version %{version}
|
||||
|
||||
prepend-path LD_LIBRARY_PATH %{p_libdir}
|
||||
|
||||
setenv %{hpc_upcase %pname}_DIR %{hpc_prefix}
|
||||
|
||||
if {[file isdirectory %{hpc_includedir}]} {
|
||||
prepend-path LIBRARY_PATH %{hpc_libdir}
|
||||
prepend-path CPATH %{hpc_includedir}
|
||||
prepend-path C_INCLUDE_PATH %{hpc_includedir}
|
||||
prepend-path CPLUS_INCLUDE_PATH %{hpc_includedir}
|
||||
prepend-path INCLUDE %{hpc_includedir}
|
||||
%hpc_modulefile_add_pkgconfig_path
|
||||
|
||||
setenv %{hpc_upcase %pname}_LIB %{hpc_libdir}
|
||||
}
|
||||
|
||||
family "openblas"
|
||||
EOF
|
||||
%{hpc_write_pkgconfig -l %{pname}}
|
||||
|
||||
%endif # with hpc
|
||||
|
||||
%if %{without hpc}
|
||||
|
||||
%post -n lib%{name}%{so_v}
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/libblas.so.3 libblas.so.3 %{_libdir}/lib%{name}_serial.so.0 20
|
||||
%{p_libdir}/libblas.so.3 libblas.so.3 %{p_libdir}/lib%{name}.so.%{so_v} 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/libcblas.so.3 libcblas.so.3 %{_libdir}/lib%{name}_serial.so.0 20
|
||||
%{p_libdir}/libcblas.so.3 libcblas.so.3 %{p_libdir}/lib%{name}.so.%{so_v} 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/liblapack.so.3 liblapack.so.3 %{_libdir}/lib%{name}_serial.so.0 20
|
||||
%{p_libdir}/liblapack.so.3 liblapack.so.3 %{p_libdir}/lib%{name}.so.%{so_v} 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/lib%{name}.so.0 lib%{name}.so.0 %{_libdir}/lib%{name}_serial.so.0 20
|
||||
%{p_libdir}/lib%{pname}.so.%{so_v} lib%{name}.so.%{so_v} %{p_libdir}/lib%{name}.so.%{so_v} %openblas_so_prio
|
||||
/sbin/ldconfig
|
||||
|
||||
%preun -n lib%{name}_serial0
|
||||
%preun -n lib%{name}%{so_v}
|
||||
if [ "$1" = 0 ] ; then
|
||||
%{_sbindir}/update-alternatives --remove libblas.so.3 %{_libdir}/lib%{name}_serial.so.0
|
||||
%{_sbindir}/update-alternatives --remove libcblas.so.3 %{_libdir}/lib%{name}_serial.so.0
|
||||
%{_sbindir}/update-alternatives --remove liblapack.so.3 %{_libdir}/lib%{name}_serial.so.0
|
||||
%{_sbindir}/update-alternatives --remove lib%{name}.so.0 %{_libdir}/lib%{name}_serial.so.0
|
||||
%{_sbindir}/update-alternatives --remove libblas.so.3 %{p_libdir}/lib%{name}.so.%{so_v}
|
||||
%{_sbindir}/update-alternatives --remove libcblas.so.3 %{p_libdir}/lib%{name}.so.%{so_v}
|
||||
%{_sbindir}/update-alternatives --remove liblapack.so.3 %{p_libdir}/lib%{name}.so.%{so_v}
|
||||
%{_sbindir}/update-alternatives --remove lib%{name}.so.0 %{p_libdir}/lib%{name}.so.%{so_v}
|
||||
fi
|
||||
|
||||
%postun -n lib%{name}_serial0 -p /sbin/ldconfig
|
||||
%postun -n lib%{name}%{so_v} -p /sbin/ldconfig
|
||||
|
||||
%posttrans -n lib%{name}_serial0
|
||||
%posttrans -n lib%{name}%{so_v}
|
||||
if [ "$1" = 0 ] ; then
|
||||
if ! [ -f %{_libdir}/lib%{name}.so.0 ] ; then
|
||||
%{_sbindir}/update-alternatives --auto lib%{name}.so.0
|
||||
if ! [ -f %{p_libdir}/lib%{name}.so.%{so_v} ] ; then
|
||||
%{_sbindir}/update-alternatives --auto lib%{pname}.so.%{so_v}
|
||||
fi
|
||||
fi
|
||||
|
||||
%post -n lib%{name}_openmp0
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/libblas.so.3 libblas.so.3 %{_libdir}/lib%{name}_openmp.so.0 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/libcblas.so.3 libcblas.so.3 %{_libdir}/lib%{name}_openmp.so.0 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/liblapack.so.3 liblapack.so.3 %{_libdir}/lib%{name}_openmp.so.0 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%ifarch %ix86 x86_64
|
||||
%{_libdir}/lib%{name}.so.0 lib%{name}.so.0 %{_libdir}/lib%{name}_openmp.so.0 20
|
||||
%else
|
||||
%{_libdir}/lib%{name}.so.0 lib%{name}.so.0 %{_libdir}/lib%{name}_openmp.so.0 50
|
||||
|
||||
%postun -n lib%{name}
|
||||
%hpc_module_delete_if_default
|
||||
|
||||
%endif
|
||||
/sbin/ldconfig
|
||||
|
||||
%preun -n lib%{name}_openmp0
|
||||
if [ "$1" = 0 ] ; then
|
||||
%{_sbindir}/update-alternatives --remove libblas.so.3 %{_libdir}/lib%{name}_openmp.so.0
|
||||
%{_sbindir}/update-alternatives --remove libcblas.so.3 %{_libdir}/lib%{name}_openmp.so.0
|
||||
%{_sbindir}/update-alternatives --remove liblapack.so.3 %{_libdir}/lib%{name}_openmp.so.0
|
||||
%{_sbindir}/update-alternatives --remove lib%{name}.so.0 %{_libdir}/lib%{name}_openmp.so.0
|
||||
fi
|
||||
|
||||
%postun -n lib%{name}_openmp0 -p /sbin/ldconfig
|
||||
|
||||
%posttrans -n lib%{name}_openmp0
|
||||
if [ "$1" = 0 ] ; then
|
||||
if ! [ -f %{_libdir}/lib%{name}.so.0 ] ; then
|
||||
%{_sbindir}/update-alternatives --auto lib%{name}.so.0
|
||||
fi
|
||||
fi
|
||||
|
||||
%post -n lib%{name}_pthreads0
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/libblas.so.3 libblas.so.3 %{_libdir}/lib%{name}_pthreads.so.0 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/libcblas.so.3 libcblas.so.3 %{_libdir}/lib%{name}_pthreads.so.0 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%{_libdir}/liblapack.so.3 liblapack.so.3 %{_libdir}/lib%{name}_pthreads.so.0 20
|
||||
%{_sbindir}/update-alternatives --install \
|
||||
%ifarch %ix86 x86_64
|
||||
%{_libdir}/lib%{name}.so.0 lib%{name}.so.0 %{_libdir}/lib%{name}_pthreads.so.0 50
|
||||
%if %{without hpc}
|
||||
%define libname %name
|
||||
%else
|
||||
%{_libdir}/lib%{name}.so.0 lib%{name}.so.0 %{_libdir}/lib%{name}_pthreads.so.0 20
|
||||
%define libname %pname
|
||||
%endif
|
||||
/sbin/ldconfig
|
||||
|
||||
%preun -n lib%{name}_pthreads0
|
||||
if [ "$1" = 0 ] ; then
|
||||
%{_sbindir}/update-alternatives --remove libblas.so.3 %{_libdir}/lib%{name}_pthreads.so.0
|
||||
%{_sbindir}/update-alternatives --remove libcblas.so.3 %{_libdir}/lib%{name}_pthreads.so.0
|
||||
%{_sbindir}/update-alternatives --remove liblapack.so.3 %{_libdir}/lib%{name}_pthreads.so.0
|
||||
%{_sbindir}/update-alternatives --remove lib%{name}.so.0 %{_libdir}/lib%{name}_pthreads.so.0
|
||||
fi
|
||||
|
||||
%postun -n lib%{name}_pthreads0 -p /sbin/ldconfig
|
||||
|
||||
%posttrans -n lib%{name}_pthreads0
|
||||
if [ "$1" = 0 ] ; then
|
||||
if ! [ -f %{_libdir}/lib%{name}.so.0 ] ; then
|
||||
%{_sbindir}/update-alternatives --auto lib%{name}.so.0
|
||||
fi
|
||||
fi
|
||||
|
||||
%files -n lib%{name}_serial0
|
||||
%files -n lib%{name}%{?so_v}
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_serial.so.0
|
||||
%ghost %{_libdir}/lib%{name}.so.0
|
||||
%ghost %{_libdir}/libblas.so.3
|
||||
%ghost %{_libdir}/libcblas.so.3
|
||||
%ghost %{_libdir}/liblapack.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/lib%{name}.so.0
|
||||
%{p_libdir}/lib%{libname}.so.0
|
||||
%if %{without hpc}
|
||||
%ghost %{p_libdir}/lib%{pname}.so.%{so_v}
|
||||
%ghost %{p_libdir}/libblas.so.3
|
||||
%ghost %{p_libdir}/libcblas.so.3
|
||||
%ghost %{p_libdir}/liblapack.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/lib%{pname}.so.%{so_v}
|
||||
%ghost %{_sysconfdir}/alternatives/libblas.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/libcblas.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/liblapack.so.3
|
||||
%else
|
||||
%hpc_dirs
|
||||
%{p_libdir}/libopenblas*r*.so
|
||||
%hpc_modules_files
|
||||
%endif
|
||||
|
||||
%files -n lib%{name}_serial-devel
|
||||
%files -n lib%{name}-devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_serial.so
|
||||
|
||||
%files -n lib%{name}_openmp0
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_openmp.so.0
|
||||
%ghost %{_libdir}/lib%{name}.so.0
|
||||
%ghost %{_libdir}/libblas.so.3
|
||||
%ghost %{_libdir}/libcblas.so.3
|
||||
%ghost %{_libdir}/liblapack.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/lib%{name}.so.0
|
||||
%ghost %{_sysconfdir}/alternatives/libblas.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/libcblas.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/liblapack.so.3
|
||||
|
||||
%files -n lib%{name}_openmp-devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_openmp.so
|
||||
|
||||
%files -n lib%{name}_pthreads0
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_pthreads.so.0
|
||||
%ghost %{_libdir}/lib%{name}.so.0
|
||||
%ghost %{_libdir}/libblas.so.3
|
||||
%ghost %{_libdir}/libcblas.so.3
|
||||
%ghost %{_libdir}/liblapack.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/lib%{name}.so.0
|
||||
%ghost %{_sysconfdir}/alternatives/libblas.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/libcblas.so.3
|
||||
%ghost %{_sysconfdir}/alternatives/liblapack.so.3
|
||||
|
||||
%files -n lib%{name}_pthreads-devel
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_pthreads.so
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root,-)
|
||||
%doc serial/Changelog.txt serial/GotoBLAS* serial/LICENSE serial/README.md README.SUSE
|
||||
%{_libdir}/lib%{name}.so
|
||||
%dir %{_libdir}/cmake
|
||||
%{_libdir}/cmake/%{name}/
|
||||
|
||||
%files devel-headers
|
||||
%defattr(-,root,root,-)
|
||||
%{_includedir}/%{name}/
|
||||
%{p_libdir}/lib%{libname}.so
|
||||
%if %{with hpc}
|
||||
%doc Changelog.txt GotoBLAS* LICENSE README.md README.HPC.SUSE
|
||||
%hpc_pkgconfig_file
|
||||
%{p_cmakedir}/
|
||||
%{p_includedir}/
|
||||
%endif
|
||||
|
||||
%files devel-static
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/lib%{name}_serial.a
|
||||
%{_libdir}/lib%{name}_openmp.a
|
||||
%{_libdir}/lib%{name}_pthreads.a
|
||||
#%%{p_libdir}/lib%{libname}.a
|
||||
%{p_libdir}/libopenblas*.a
|
||||
|
||||
%if 0%{?build_devel}
|
||||
%files -n %{pname}-devel
|
||||
%defattr(-,root,root,-)
|
||||
%doc Changelog.txt GotoBLAS* LICENSE README.md README.SUSE
|
||||
%{p_libdir}/libopenblas.so
|
||||
%dir %{p_libdir}/cmake
|
||||
%{p_cmakedir}/
|
||||
|
||||
%files -n %{pname}-devel-headers
|
||||
%defattr(-,root,root,-)
|
||||
%{p_includedir}/
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
Loading…
x
Reference in New Issue
Block a user