806c88
%global with_mpich 1
806c88
%global with_openmpi 1
c2a349
%global with_serial 1
c2a349
451c88
%if 0%{?fedora} >= 33
451c88
%global blaslib flexiblas
451c88
%else
451c88
%global blaslib openblas
451c88
%endif
451c88
f881ba
%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64
f881ba
%global arch64 0
f881ba
%else
f881ba
%global arch64 0
f881ba
%endif
f881ba
973649
# Use devtoolset 8
973649
%if 0%{?rhel} && 0%{?rhel} == 7
973649
%global dts devtoolset-8-
973649
%endif
973649
6ac417
# Workarounf for GCC-10
6ac417
# https://gcc.gnu.org/gcc-10/porting_to.html
6ac417
%if 0%{?fedora} && 0%{?fedora} > 31
6ac417
%global fc_optflags %{build_fflags} -fallow-argument-mismatch
6ac417
%endif
bd5819
a8e5ce
%if 0%{?rhel} || 0%{?fedora} < 32
a8e5ce
%global fc_optflags %{build_fflags}
a8e5ce
%endif
a8e5ce
c2a349
%global major_version 3
8de017
%global major_minor %{major_version}.6
f881ba
%global postrelease_version -4
c2a349
857f56
Name: psblas3
c2a349
Summary: Parallel Sparse Basic Linear Algebra Subroutines
9f7b2f
Version: %{major_minor}.1
451c88
Release: 11%{?dist}
c2a349
License: BSD
857f56
URL: https://github.com/sfilippone/psblas3
c3ccd5
Source0: https://github.com/sfilippone/psblas3/archive/v%{version}%{?postrelease_version}/psblas3-%{version}%{?postrelease_version}.tar.gz
c2a349
c2a349
# Call default Fedora ldflags when linker creates links 
857f56
Patch0: %{name}-fix_ldflags.patch
70e921
f881ba
# Rename libraries for psblas3_64
f881ba
Patch1: %{name}-rename_libs_for_arch64.patch
f881ba
c2a349
BuildRequires: suitesparse-devel
451c88
BuildRequires: %{blaslib}-devel
c2a349
BuildRequires: metis-devel
c2a349
c2a349
%description
c2a349
The PSBLAS library, developed with the aim to facilitate the parallelization
c2a349
of computationally intensive scientific applications,
c2a349
is designed to address parallel implementation of iterative solvers for sparse
c2a349
linear systems through the distributed memory paradigm.
c2a349
It includes routines for multiplying sparse matrices by dense matrices,
c2a349
solving block diagonal systems with triangular diagonal entries,
c2a349
preprocessing sparse matrices, and contains additional routines for
c2a349
dense matrix operations.
c2a349
The current implementation of PSBLAS addresses a distributed memory execution
c2a349
model operating with message passing.
c2a349
c2a349
%if 0%{?with_serial}
c2a349
%package serial
c2a349
Summary: %{name} serial mode
973649
BuildRequires: %{?dts}gcc-gfortran
973649
BuildRequires: %{?dts}gcc, %{?dts}gcc-c++
c2a349
Requires: %{name}-common = %{version}-%{release}
c2a349
Requires: gcc-gfortran%{?_isa}
c2a349
c2a349
%description serial
c2a349
The PSBLAS library, developed with the aim to facilitate the parallelization
c2a349
of computationally intensive scientific applications,
c2a349
is designed to address parallel implementation of iterative solvers for sparse
c2a349
linear systems through the distributed memory paradigm.
c2a349
It includes routines for multiplying sparse matrices by dense matrices,
c2a349
solving block diagonal systems with triangular diagonal entries,
c2a349
preprocessing sparse matrices, and contains additional routines for
c2a349
dense matrix operations.
c2a349
The current implementation of PSBLAS addresses a distributed memory execution
c2a349
model operating with message passing.
c2a349
This is a PSBLAS version in pure serial mode.
c2a349
c2a349
%package serial-devel
c2a349
Summary: Development files for %{name}
c2a349
Requires: %{name}-serial%{?_isa} = %{version}-%{release}
a4b629
Provides: %{name}-serial-static = %{version}-%{release}
c2a349
%description serial-devel
a4b629
Shared links, header files and static libraries for serial %{name}.
c2a349
%endif
c2a349
c2a349
%package common
c2a349
Summary: Documentation files for %{name}
c2a349
BuildArch: noarch
bd5819
#BuildRequires: texlive-tex4ht, texlive-latex, doxygen, ghostscript
bd5819
#BuildRequires: texlive-fancybox, texlive-kpathsea, texlive-metafont
bd5819
#BuildRequires: texlive-mfware, texlive-iftex
c2a349
%description common
c2a349
HTML, PDF and license files of %{name}.
c2a349
c2a349
########################################################
f881ba
%if 0%{?arch64}
f881ba
%package -n %{name}_64
f881ba
Summary: %{name} for long-integer (8-byte) data
f881ba
BuildRequires: suitesparse64-devel
451c88
BuildRequires: %{blaslib}-devel
f881ba
BuildRequires: metis64-devel
f881ba
f881ba
Requires: %{name}-common = %{version}-%{release}
f881ba
%description -n psblas3_64
f881ba
The PSBLAS library, developed with the aim to facilitate the parallelization
f881ba
of computationally intensive scientific applications,
f881ba
is designed to address parallel implementation of iterative solvers for sparse
f881ba
linear systems through the distributed memory paradigm.
f881ba
It includes routines for multiplying sparse matrices by dense matrices,
f881ba
solving block diagonal systems with triangular diagonal entries,
f881ba
preprocessing sparse matrices, and contains additional routines for
f881ba
dense matrix operations.
f881ba
The current implementation of PSBLAS addresses a distributed memory execution
f881ba
model operating with message passing.
f881ba
This is a PSBLAS version for long-integer (8-byte) data.
f881ba
f881ba
%package -n %{name}_64-devel
f881ba
Summary: The %{name}_64 headers and development-related files
f881ba
Requires: %{name}_64%{?_isa} = %{version}-%{release}
f881ba
Provides: %{name}_64-static = %{version}-%{release}
f881ba
%description -n %{name}_64-devel
f881ba
Shared links, header files and static libraries for %{name}_64.
f881ba
%endif
f881ba
##########################################################
f881ba
f881ba
########################################################
c2a349
%if 0%{?with_openmpi}
c2a349
%package openmpi
c2a349
Summary: OpenMPI %{name}
c2a349
BuildRequires:	openmpi-devel
c2a349
c2a349
Requires: openmpi%{?_isa}
c2a349
Requires: %{name}-common = %{version}-%{release}
c2a349
%description openmpi
c2a349
The PSBLAS library, developed with the aim to facilitate the parallelization
c2a349
of computationally intensive scientific applications,
c2a349
is designed to address parallel implementation of iterative solvers for sparse
c2a349
linear systems through the distributed memory paradigm.
c2a349
It includes routines for multiplying sparse matrices by dense matrices,
c2a349
solving block diagonal systems with triangular diagonal entries,
c2a349
preprocessing sparse matrices, and contains additional routines for
c2a349
dense matrix operations.
c2a349
The current implementation of PSBLAS addresses a distributed memory execution
c2a349
model operating with message passing.
c2a349
This is a OpenMPI PSBLAS version.
c2a349
c2a349
%package openmpi-devel
c2a349
Summary: The OpenMPI %{name} headers and development-related files
c2a349
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
a4b629
Provides: %{name}-openmpi-static = %{version}-%{release}
c2a349
%description openmpi-devel
a4b629
Shared links, header files and static libraries for OpenMPI %{name}.
c2a349
%endif
c2a349
##########################################################
c2a349
########################################################
c2a349
%if 0%{?with_mpich}
c2a349
%package mpich
c2a349
Summary: MPICH %{name}
c2a349
BuildRequires:	mpich-devel
c2a349
c2a349
Requires: mpich%{?_isa}
c2a349
Requires: %{name}-common = %{version}-%{release}
c2a349
%description mpich
c2a349
The PSBLAS library, developed with the aim to facilitate the parallelization
c2a349
of computationally intensive scientific applications,
c2a349
is designed to address parallel implementation of iterative solvers for sparse
c2a349
linear systems through the distributed memory paradigm.
c2a349
It includes routines for multiplying sparse matrices by dense matrices,
c2a349
solving block diagonal systems with triangular diagonal entries,
c2a349
preprocessing sparse matrices, and contains additional routines for
c2a349
dense matrix operations.
c2a349
The current implementation of PSBLAS addresses a distributed memory execution
c2a349
model operating with message passing.
c2a349
This is a MPICH PSBLAS version.
c2a349
c2a349
%package mpich-devel
c2a349
Summary: The MPICH %{name} headers and development-related files
c2a349
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
a4b629
Provides: %{name}-mpich-static = %{version}-%{release}
c2a349
%description mpich-devel
a4b629
Shared links, header files and static libraries for MPICH %{name}.
c2a349
%endif
c2a349
##########################################################
c2a349
c2a349
%prep
c3ccd5
%setup -qc -n psblas3-%{version}%{?postrelease_version}
c2a349
c3ccd5
pushd psblas3-%{version}%{?postrelease_version}
c2a349
%patch0 -p0
c2a349
popd
c2a349
c2a349
#######################################################
c2a349
## Copy source for MPI versions
c2a349
%if 0%{?with_openmpi}
c3ccd5
cp -a psblas3-%{version}%{?postrelease_version} openmpi-build
c2a349
%endif
c2a349
%if 0%{?with_mpich}
c3ccd5
cp -a psblas3-%{version}%{?postrelease_version} mpich-build
c2a349
%endif
c2a349
######################################################
c2a349
f881ba
#######################################################
f881ba
## Copy source for long-integer version
f881ba
%if 0%{?arch64}
f881ba
cp -a psblas3-%{version}%{?postrelease_version} build64
f881ba
pushd build64
f881ba
%patch1 -p1
f881ba
popd
f881ba
%endif
f881ba
#####################################################
f881ba
c2a349
%build
c2a349
%if 0%{?with_serial}
c3ccd5
cd psblas3-%{version}%{?postrelease_version}
c2a349
973649
%if 0%{?el7}
973649
%{?dts:source /opt/rh/devtoolset-8/enable}
973649
%endif
973649
857f56
%configure \
f881ba
 --enable-serial --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \
451c88
 --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I%{_fmoddir}" \
451c88
 --with-metis=-lmetis --with-amd=-lamd --with-blas=-l%{blaslib} --with-lapack= \
857f56
 --with-amdincdir=%{_includedir}/suitesparse
c2a349
%make_build
c2a349
c2a349
# Make shared libraries
c2a349
pushd lib
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb_base.a -Wl,-no-whole-archive -Wl,-Bdynamic -L%{_libdir} -l%{blaslib} -lgfortran -lm -Wl,-soname,libpsb_base.so.%{version} -o libpsb_base.so.%{version}
c2a349
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb_krylov.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L%{_libdir} -l%{blaslib} -lgfortran -lm -Wl,-soname,libpsb_krylov.so.%{version} -o libpsb_krylov.so.%{version}
c2a349
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb_prec.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L%{_libdir} -l%{blaslib} -lgfortran -lm -Wl,-soname,libpsb_prec.so.%{version} -o libpsb_prec.so.%{version}
c2a349
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb_util.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -Wl,-soname,libpsb_util.so.%{version} -o libpsb_util.so.%{version}
c2a349
popd
bd5819
c2a349
cd ../
c2a349
9f7b2f
#make -C test/util MODDIR=../../modules -j1
f881ba
##
f881ba
f881ba
%if 0%{?arch64}
f881ba
cd build64
f881ba
f881ba
%if 0%{?el7}
f881ba
%{?dts:source /opt/rh/devtoolset-8/enable}
f881ba
%endif
f881ba
f881ba
%configure \
f881ba
 --enable-serial --enable-long-integers --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \
451c88
 --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I%{_fmoddir}" \
451c88
 --with-metis=-lmetis64 --with-amd=-lamd64 --with-blas=-l%{blaslib}64 --with-lapack= \
f881ba
 --with-amdincdir=%{_includedir}/suitesparse
f881ba
%make_build
f881ba
f881ba
# Make shared libraries
f881ba
pushd lib
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb64_base.a -Wl,-no-whole-archive -Wl,-Bdynamic -L%{_libdir} -l%{blaslib}64 -lgfortran -lm -Wl,-soname,libpsb64_base.so.%{version} -o libpsb64_base.so.%{version}
f881ba
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb64_krylov.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb64_base -L%{_libdir} -l%{blaslib}64 -lgfortran -lm -Wl,-soname,libpsb64_krylov.so.%{version} -o libpsb64_krylov.so.%{version}
f881ba
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb64_prec.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb64_base -L%{_libdir} -l%{blaslib}64 -lgfortran -lm -Wl,-soname,libpsb_prec.so.%{version} -o libpsb_prec.so.%{version}
f881ba
451c88
gfortran -shared %{__global_ldflags} -Wl,--whole-archive libpsb64_util.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb64_base -L%{_libdir} -l%{blaslib}64 -lmetis64 -lamd64 -lgfortran -lm -Wl,-soname,libpsb64_util.so.%{version} -o libpsb64_util.so.%{version}
f881ba
popd
f881ba
f881ba
cd ../
f881ba
f881ba
%endif
c2a349
%endif
c2a349
c2a349
#######################################################
c2a349
## Build MPI versions
c2a349
%if 0%{?with_openmpi}
c2a349
pushd openmpi-build
c2a349
%{_openmpi_load}
c2a349
export CC=mpicc
857f56
%configure \
f881ba
 --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \
451c88
 --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I${MPI_FORTRAN_MOD_DIR}" \
bd5819
 MPIFC=mpifort MPICC=mpicc \
451c88
 --with-metis=-lmetis --with-amd=-lamd --with-blas=-l%{blaslib} --with-lapack= \
857f56
 --with-amdincdir=%{_includedir}/suitesparse
c2a349
%make_build
c2a349
c2a349
# Make shared libraries
c2a349
cd lib
451c88
mpifort -shared %{__global_ldflags} -Wl,--whole-archive libpsb_base.a -Wl,-no-whole-archive -Wl,-Bdynamic -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,--enable-new-dtags -lmpi_mpifh -L%{_libdir} -l%{blaslib} -lgfortran -lm -Wl,-soname,libpsb_base.so.%{version} -o libpsb_base.so.%{version}
c2a349
451c88
mpifort -shared %{__global_ldflags} -Wl,--whole-archive libpsb_krylov.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,--enable-new-dtags -lmpi_mpifh -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_krylov.so.%{version} -o libpsb_krylov.so.%{version}
c2a349
451c88
mpifort -shared %{__global_ldflags} -Wl,--whole-archive libpsb_prec.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,--enable-new-dtags -lmpi_mpifh -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_prec.so.%{version} -o libpsb_prec.so.%{version}
c2a349
451c88
mpifort -shared %{__global_ldflags} -Wl,--whole-archive libpsb_util.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,--enable-new-dtags -lmpi_mpifh -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_util.so.%{version} -o libpsb_util.so.%{version}
c2a349
cd ../
c2a349
c2a349
%{_openmpi_unload}
c2a349
popd
c2a349
%endif
c2a349
c2a349
%if 0%{?with_mpich}
c2a349
pushd mpich-build
c2a349
%{_mpich_load}
c2a349
export CC=mpicc
857f56
%configure \
f881ba
 --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \
451c88
 --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I${MPI_FORTRAN_MOD_DIR}" \
bd5819
 MPIFC=mpif90 MPICC=mpicc \
451c88
 --with-metis=-lmetis --with-amd=-lamd --with-blas=-l%{blaslib} --with-lapack= \
857f56
 --with-amdincdir=%{_includedir}/suitesparse
c2a349
%make_build
c2a349
c2a349
# Make shared libraries
c2a349
cd lib
c2a349
c2a349
%if 0%{?fedora}
c2a349
export MPIFLIB=-lmpifort
c2a349
%else
c2a349
export MPIFLIB=-lmpich
c2a349
%endif
c2a349
451c88
mpif90 -shared %{__global_ldflags} -Wl,--whole-archive libpsb_base.a -Wl,-no-whole-archive -Wl,-Bdynamic -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,-z,noexecstack $MPIFLIB -L%{_libdir} -l%{blaslib} -lgfortran -lm -Wl,-soname,libpsb_base.so.%{version} -o libpsb_base.so.%{version}
c2a349
451c88
mpif90 -shared %{__global_ldflags} -Wl,--whole-archive libpsb_krylov.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,-z,noexecstack $MPIFLIB -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_krylov.so.%{version} -o libpsb_krylov.so.%{version}
c2a349
451c88
mpif90 -shared %{__global_ldflags} -Wl,--whole-archive libpsb_prec.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,-z,noexecstack $MPIFLIB -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_prec.so.%{version} -o libpsb_prec.so.%{version}
c2a349
451c88
mpif90 -shared %{__global_ldflags} -Wl,--whole-archive libpsb_util.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB $MPIFLIB -Wl,-z,noexecstack -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_util.so.%{version} -o libpsb_util.so.%{version}
c2a349
cd ../
c2a349
c2a349
%{_mpich_unload}
c2a349
popd
c2a349
%endif
c2a349
#######################################################
c2a349
%if 0%{?with_serial}
37b00b
%ldconfig_scriptlets serial
c2a349
%endif
c2a349
c2a349
%install
c2a349
%if 0%{?with_serial}
c3ccd5
pushd psblas3-%{version}%{?postrelease_version}
c2a349
mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}
c2a349
mkdir -p $RPM_BUILD_ROOT%{_fmoddir}/%{name}
c2a349
c2a349
pushd lib
c2a349
install -pm 755 *.so.%{version} $RPM_BUILD_ROOT%{_libdir}/
a4b629
install -pm 644 *.a $RPM_BUILD_ROOT%{_libdir}/
c2a349
c2a349
ln -sf %{_libdir}/libpsb_base.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_base.so.%{major_version}
8de017
ln -sf %{_libdir}/libpsb_base.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_base.so.%{major_minor}
c2a349
ln -sf %{_libdir}/libpsb_base.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_base.so
c2a349
c2a349
ln -sf %{_libdir}/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_krylov.so.%{major_version}
8de017
ln -sf %{_libdir}/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_krylov.so.%{major_minor}
c2a349
ln -sf %{_libdir}/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_krylov.so
c2a349
c2a349
ln -sf %{_libdir}/libpsb_prec.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_prec.so.%{major_version}
8de017
ln -sf %{_libdir}/libpsb_prec.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_prec.so.%{major_minor}
c2a349
ln -sf %{_libdir}/libpsb_prec.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_prec.so
c2a349
c2a349
ln -sf %{_libdir}/libpsb_util.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_util.so.%{major_version}
8de017
ln -sf %{_libdir}/libpsb_util.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_util.so.%{major_minor}
c2a349
ln -sf %{_libdir}/libpsb_util.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb_util.so
c2a349
popd
c2a349
c2a349
install -pm 644 modules/*.mod $RPM_BUILD_ROOT%{_fmoddir}/%{name}
c2a349
install -pm 644 include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}/
c2a349
popd
c2a349
%endif
c2a349
f881ba
%if 0%{?arch64}
f881ba
pushd build64
f881ba
mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}64
f881ba
mkdir -p $RPM_BUILD_ROOT%{_fmoddir}/%{name}64
f881ba
f881ba
pushd lib
f881ba
install -pm 755 *.so.%{version} $RPM_BUILD_ROOT%{_libdir}/
f881ba
install -pm 644 *.a $RPM_BUILD_ROOT%{_libdir}/
f881ba
f881ba
ln -sf %{_libdir}/libpsb64_base.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_base.so.%{major_version}
f881ba
ln -sf %{_libdir}/libpsb64_base.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_base.so.%{major_minor}
f881ba
ln -sf %{_libdir}/libpsb64_base.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_base.so
f881ba
f881ba
ln -sf %{_libdir}/libpsb64_krylov.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_krylov.so.%{major_version}
f881ba
ln -sf %{_libdir}/libpsb64_krylov.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_krylov.so.%{major_minor}
f881ba
ln -sf %{_libdir}/libpsb64_krylov.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_krylov.so
f881ba
f881ba
ln -sf %{_libdir}/libpsb64_prec.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_prec.so.%{major_version}
f881ba
ln -sf %{_libdir}/libpsb64_prec.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_prec.so.%{major_minor}
f881ba
ln -sf %{_libdir}/libpsb64_prec.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_prec.so
f881ba
f881ba
ln -sf %{_libdir}/libpsb64_util.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_util.so.%{major_version}
f881ba
ln -sf %{_libdir}/libpsb64_util.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_util.so.%{major_minor}
f881ba
ln -sf %{_libdir}/libpsb64_util.so.%{version} $RPM_BUILD_ROOT%{_libdir}/libpsb64_util.so
f881ba
popd
f881ba
f881ba
install -pm 644 modules/*.mod $RPM_BUILD_ROOT%{_fmoddir}/%{name}64
f881ba
install -pm 644 include/*.h $RPM_BUILD_ROOT%{_includedir}/%{name}64/
f881ba
popd
f881ba
%endif
f881ba
c2a349
#######################################################
c2a349
## Install MPI versions
c2a349
%if 0%{?with_openmpi}
c2a349
pushd openmpi-build
c2a349
%{_openmpi_load}
c2a349
mkdir -p $RPM_BUILD_ROOT$MPI_LIB
7db084
mkdir -p $RPM_BUILD_ROOT$MPI_INCLUDE/%{name}
c2a349
mkdir -p $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}
c2a349
c2a349
cd lib
c2a349
install -pm 755 *.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/
a4b629
install -pm 644 *.a $RPM_BUILD_ROOT$MPI_LIB/
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_base.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_base.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_base.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_base.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_base.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_base.so
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_krylov.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_krylov.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_krylov.so
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_prec.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_prec.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_prec.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_prec.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_prec.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_prec.so
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_util.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_util.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_util.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_util.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_util.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_util.so
c2a349
cd ../
c2a349
c2a349
install -pm 644 modules/*.mod $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}
7db084
install -pm 644 include/*.h $RPM_BUILD_ROOT$MPI_INCLUDE/%{name}/
c2a349
%{_openmpi_unload}
c2a349
popd
c2a349
%endif
c2a349
c2a349
%if 0%{?with_mpich}
c2a349
pushd mpich-build
c2a349
%{_mpich_load}
c2a349
mkdir -p $RPM_BUILD_ROOT$MPI_LIB
7db084
mkdir -p $RPM_BUILD_ROOT$MPI_INCLUDE/%{name}
c2a349
mkdir -p $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}
c2a349
c2a349
cd lib
c2a349
install -pm 755 *.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/
a4b629
install -pm 644 *.a $RPM_BUILD_ROOT$MPI_LIB/
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_base.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_base.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_base.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_base.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_base.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_base.so
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_krylov.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_krylov.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_krylov.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_krylov.so
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_prec.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_prec.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_prec.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_prec.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_prec.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_prec.so
c2a349
c2a349
ln -sf $MPI_LIB/libpsb_util.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_util.so.%{major_version}
8de017
ln -sf $MPI_LIB/libpsb_util.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_util.so.%{major_minor}
c2a349
ln -sf $MPI_LIB/libpsb_util.so.%{version} $RPM_BUILD_ROOT$MPI_LIB/libpsb_util.so
c2a349
cd ../
c2a349
c2a349
install -pm 644 modules/*.mod $RPM_BUILD_ROOT$MPI_FORTRAN_MOD_DIR/%{name}
7db084
install -pm 644 include/*.h $RPM_BUILD_ROOT$MPI_INCLUDE/%{name}/
c2a349
%{_mpich_unload}
c2a349
popd
c2a349
%endif
c2a349
#######################################################
c2a349
c2a349
%if 0%{?with_serial}
c2a349
%files serial
c2a349
%{_libdir}/*.so.*
c2a349
c2a349
%files serial-devel
c2a349
%{_libdir}/*.so
a4b629
%{_libdir}/*.a
c2a349
%{_fmoddir}/%{name}/
c2a349
%{_includedir}/%{name}/
f881ba
f881ba
%if 0%{?arch64}
f881ba
%files -n %{name}_64
f881ba
%{_libdir}/libpsb64*.so.*
f881ba
f881ba
%files -n %{name}_64-devel
f881ba
%{_libdir}/libpsb64*.so
f881ba
%{_libdir}/libpsb64*.a
f881ba
%{_fmoddir}/%{name}64/
f881ba
%{_includedir}/%{name}64/
f881ba
%endif
c2a349
%endif
c2a349
c2a349
%files common
c3ccd5
%doc psblas3-%{version}%{?postrelease_version}/README.md psblas3-%{version}%{?postrelease_version}/Changelog
c3ccd5
%doc psblas3-%{version}%{?postrelease_version}/ReleaseNews
c3ccd5
%doc psblas3-%{version}%{?postrelease_version}/docs/html psblas3-%{version}%{?postrelease_version}/docs/*.pdf
c3ccd5
%license psblas3-%{version}%{?postrelease_version}/LICENSE
c2a349
c2a349
#######################################################
c2a349
## MPI versions
c2a349
%if 0%{?with_openmpi}
c2a349
%files openmpi
c2a349
%{_libdir}/openmpi/lib/*.so.*
c2a349
c2a349
%files openmpi-devel
c2a349
%{_libdir}/openmpi/lib/*.so
a4b629
%{_libdir}/openmpi/lib/*.a
7db084
%{_includedir}/openmpi-%{_arch}/%{name}/
9f7b2f
%if 0%{?fedora} || 0%{?rhel} > 7
c2a349
%{_fmoddir}/openmpi/%{name}/
c2a349
%else
c2a349
%{_fmoddir}/openmpi-%{_arch}/%{name}/
c2a349
%endif
c2a349
%endif
c2a349
c2a349
%if 0%{?with_mpich}
c2a349
%files mpich
c2a349
%{_libdir}/mpich/lib/*.so.*
c2a349
c2a349
%files mpich-devel
c2a349
%{_libdir}/mpich/lib/*.so
a4b629
%{_libdir}/mpich/lib/*.a
7db084
%{_includedir}/mpich-%{_arch}/%{name}/
9f7b2f
%if 0%{?fedora} || 0%{?rhel} > 7
c2a349
%{_fmoddir}/mpich/%{name}/
c2a349
%else
c2a349
%{_fmoddir}/mpich-%{_arch}/%{name}/
c2a349
%endif
c2a349
%endif
c2a349
######################################################
c2a349
c2a349
%changelog
451c88
* Thu Aug 13 2020 Iñaki Úcar <iucar@fedoraproject.org> - 3.6.1-11
451c88
- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager
451c88
7af651
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.1-10
7af651
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
7af651
f881ba
* Sat Jul 18 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-9
f881ba
- Release 3.6.1-4
f881ba
51cea1
* Sun Jun 28 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-8
51cea1
- Release 3.6.1-3
51cea1
a8e5ce
* Sat Apr 11 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-7
a8e5ce
- Fix Fortran optimization compiler flags
a8e5ce
1596ec
* Sat Apr 11 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-6
0df1e9
- Release 3.6.1-2
1596ec
- Drop MUMPS as dependency
0df1e9
c31e9d
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.1-5
c31e9d
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
c31e9d
6ac417
* Sun Jan 26 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-4
6ac417
- Workaround for GCC-10 (-fallow-argument-mismatch)
7962f2
930e81
* Sat Dec 21 2019 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-3
930e81
- Rebuild for MUMPS-5.2.1 on EPEL7
930e81
973649
* Fri Dec 20 2019 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-2
973649
- Use devtoolset-8 on EPEL7
973649
bd5819
* Fri Dec 20 2019 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-1
bd5819
- Release 3.6.1
bd5819
- Remove format-security flags
bd5819
f4a766
* Sun Dec 15 2019 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-0.2.rc1
f4a766
- Disable -Wl,--as-needed flags
f4a766
9f7b2f
* Fri Dec 13 2019 Antonio Trande <sagitter@fedoraproject.org> - 3.6.1-0.1.rc1
9f7b2f
- Pre-release 3.6.1-rc1
9f7b2f
5f3f02
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.0-5
5f3f02
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
5f3f02
2cd420
* Sat Jul 20 2019 Antonio Trande <sagitter@fedoraproject.org> - 3.6.0-4
2cd420
- Rebuild for mumps-5.2.1
2cd420
01e707
* Thu Feb 14 2019 Orion Poplawski <orion@nwra.com> - 3.6.0-3
01e707
- Rebuild for openmpi 3.1.3
01e707
0bf329
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.0-2
0bf329
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
0bf329
c3ccd5
* Tue Dec 04 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.6.0-1
c3ccd5
- Release 3.6.0
c3ccd5
8de017
* Fri Nov 09 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.6.0-0.1
8de017
- Pre-release 3.6.0-rc1
8de017
806c88
* Fri Nov 02 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.2-5
806c88
- Enable MPI builds
806c88
857f56
* Fri Nov 02 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.2-4
857f56
- Update to release 3.5.2-2
857f56
70e921
* Fri Sep 14 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.2-3
70e921
- Fix upstream bug #9 (rhbz #1628858)
70e921
16b708
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.2-2
16b708
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
16b708
ecee9d
* Thu Jun 28 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.2-1
ecee9d
- Update to release 3.5.2
ecee9d
db73a4
* Wed Apr 11 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.1-1
db73a4
- Update to release 3.5.1
db73a4
37b00b
* Sat Feb 17 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-19
37b00b
- Use %%ldconfig_scriptlets
37b00b
70447a
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.5.0-18
70447a
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
70447a
573a7a
* Wed Jan 31 2018 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-17
573a7a
- Minor fix post-release 3.5.0-3
573a7a
- Rebuild for GCC-8
573a7a
2cf446
* Thu Dec 07 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-16
2cf446
- Hotfix post-release 3.5.0-2
2cf446
5c450b
* Sun Nov 12 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-15
5c450b
- Update to post-release 3.5.0-1
5c450b
034720
* Mon Nov 06 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-14
034720
- Use -Wl,-Bdynamic for linking psb_base library
034720
a4b629
* Mon Nov 06 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-13
a4b629
- Install static libraries
a4b629
- Use -Wl,-Bdynamic for linking
a4b629
85b12d
* Sun Nov 05 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-12
85b12d
- libpsb_util serial library linked to Metis/AMD
85b12d
85b12d
* Sat Nov 04 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-11
85b12d
- Metis/AMD unused by psblas3-serial
85b12d
85b12d
* Sat Nov 04 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-10
85b12d
- Fix unused-direct-shlib-dependency
85b12d
64ac71
* Thu Nov 02 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-9
64ac71
- MPI builds activated
64ac71
a483a9
* Thu Nov 02 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-8
a483a9
- Remove -Wl,--as-needed flag
a483a9
7db084
* Tue Oct 31 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-7
7db084
- Install header files in a private MPI directory
7db084
c2a349
* Sun Oct 29 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-6
c2a349
- Fix MPICH fortran links
c2a349
c2a349
* Sat Oct 28 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-5
c2a349
- Rebuild against openblas
c2a349
c2a349
* Fri Oct 27 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-4
c2a349
- Fix unused-direct-shlib-dependency warnings
c2a349
c2a349
* Thu Oct 26 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-3
c2a349
- Fix ldconfig scriptlet
c2a349
c2a349
* Thu Oct 26 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-2
c2a349
- PSBLAS not compiled on epel6
c2a349
c2a349
* Thu Oct 26 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-1
c2a349
- Update to 3.5.0 (stable release)
c2a349
- Rebuilt against blas
c2a349
c2a349
* Wed May 31 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.5.0-0.1.rc2
c2a349
- Update to 3.5.0-rc2
c2a349
c2a349
* Fri Feb 10 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.1-4
c2a349
- Packed example files
c2a349
c2a349
* Thu Feb 09 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.1-3
c2a349
- Rebuilt against atlas
c2a349
c2a349
* Thu Feb 09 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.1-2
c2a349
- Fortran module's directory renamed
c2a349
c2a349
* Tue Feb 07 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.1-1
c2a349
- Update to 3.4.1
c2a349
- Drop obsolete patch
c2a349
c2a349
* Fri Feb 03 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.0-3
c2a349
- Rebuild without disable-serial option
c2a349
c2a349
* Fri Feb 03 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.0-2
c2a349
- Set MPICH Fortran compiler on RHEL7
c2a349
c2a349
* Thu Feb 02 2017 Antonio Trande <sagitter@fedoraproject.org> - 3.4.0-1
c2a349
- First package