diff --git a/.gitignore b/.gitignore index 89b7978..417f60b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /psblas3-3.6.1-2.tar.gz /psblas3-3.6.1-3.tar.gz /psblas3-3.6.1-4.tar.gz +/psblas3-3.7.0.1.tar.gz diff --git a/psblas3-rename_libs_for_arch64.patch b/psblas3-rename_libs_for_arch64.patch index 9b39f67..8b33e3f 100644 --- a/psblas3-rename_libs_for_arch64.patch +++ b/psblas3-rename_libs_for_arch64.patch @@ -15,3 +15,36 @@ ############################################################################### # Variable substitutions : the Make.inc.in will have these @VARIABLES@ +--- a/Make.inc.orig.in 2021-04-13 16:54:47.000000000 +0200 ++++ b/Make.inc.in 2021-04-14 19:19:17.346198652 +0200 +@@ -64,7 +64,7 @@ + METHDMODNAME=@METHDMODNAME@ + UTILMODNAME=@UTILMODNAME@ + +-CBINDLIBNAME=libpsb_cbind.a ++CBINDLIBNAME=libpsb64_cbind.a + + + @PSBLASRULES@ +--- a/test/serial/Makefile.orig 2021-04-13 16:54:47.000000000 +0200 ++++ b/test/serial/Makefile 2021-04-16 18:49:56.595706787 +0200 +@@ -6,7 +6,7 @@ + MODDIR=$(INSTALLDIR)/modules/ + include $(INCDIR)/Make.inc.psblas + LIBDIR=$(INSTALLDIR)/lib/ +-PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base ++PSBLAS_LIB= -L$(LIBDIR) -lpsb64_util -lpsb64_krylov -lpsb64_prec -lpsb64_base + LDLIBS=$(PSBLDLIBS) + + FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). +--- a/test/hello/Makefile.orig 2021-04-13 16:54:47.000000000 +0200 ++++ b/test/hello/Makefile 2021-04-16 18:53:43.607318360 +0200 +@@ -5,7 +5,7 @@ + # + # Libraries used + LIBDIR=$(BASEDIR)/lib +-PSBLAS_LIB= -L$(LIBDIR) -lpsb_util -lpsb_krylov -lpsb_prec -lpsb_base ++PSBLAS_LIB= -L$(LIBDIR) -lpsb64_util -lpsb64_krylov -lpsb64_prec -lpsb64_base + LDLIBS=$(PSBLDLIBS) + # + # Compilers and such diff --git a/psblas3.spec b/psblas3.spec index da91542..88aff26 100644 --- a/psblas3.spec +++ b/psblas3.spec @@ -1,6 +1,7 @@ %global with_mpich 1 %global with_openmpi 1 %global with_serial 1 +%global with_check 1 # Use devtoolset-6 # Warning: openblas on epel7 is compiled with gcc-gfortran-4.8.5 (libgfortran.so.3) @@ -9,36 +10,41 @@ %global dts devtoolset-6- %endif -%if 0%{?fedora} >= 33 -%global blaslib flexiblas +%if 0%{?fedora} +%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 +%global arch64 1 %else -%global blaslib openblas +%global arch64 0 +%endif %endif -%if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 +%if 0%{?rhel} %global arch64 0 +%endif + +%if 0%{?fedora} +%global blaslib flexiblas %else -%global arch64 0 +%global blaslib openblas %endif -# Workarounf for GCC-10 +# Workaround for GCC-10 # https://gcc.gnu.org/gcc-10/porting_to.html -%if 0%{?fedora} && 0%{?fedora} > 31 %global fc_optflags %{build_fflags} -fallow-argument-mismatch -%endif +%define _legacy_common_support 1 %if 0%{?rhel} || 0%{?fedora} < 32 %global fc_optflags %{build_fflags} %endif %global major_version 3 -%global major_minor %{major_version}.6 -%global postrelease_version -4 +%global major_minor %{major_version}.7 +%global postrelease_version %{nil} Name: psblas3 Summary: Parallel Sparse Basic Linear Algebra Subroutines -Version: %{major_minor}.1 -Release: 14%{?dist} +Version: %{major_minor}.0.1 +Release: 1%{?dist} License: BSD URL: https://github.com/sfilippone/psblas3 Source0: https://github.com/sfilippone/psblas3/archive/v%{version}%{?postrelease_version}/psblas3-%{version}%{?postrelease_version}.tar.gz @@ -46,7 +52,7 @@ Source0: https://github.com/sfilippone/psblas3/archive/v%{version}%{?postrelease # Call default Fedora ldflags when linker creates links Patch0: %{name}-fix_ldflags.patch -# Rename libraries for psblas3_64 +# Rename libraries for psblas3-serial64 Patch1: %{name}-rename_libs_for_arch64.patch BuildRequires: suitesparse-devel @@ -106,14 +112,14 @@ HTML, PDF and license files of %{name}. ######################################################## %if 0%{?arch64} -%package -n %{name}_64 +%package -n %{name}-serial64 Summary: %{name} for long-integer (8-byte) data BuildRequires: suitesparse64-devel BuildRequires: %{blaslib}-devel BuildRequires: metis64-devel Requires: %{name}-common = %{version}-%{release} -%description -n psblas3_64 +%description -n psblas3-serial64 The PSBLAS library, developed with the aim to facilitate the parallelization of computationally intensive scientific applications, is designed to address parallel implementation of iterative solvers for sparse @@ -126,12 +132,12 @@ The current implementation of PSBLAS addresses a distributed memory execution model operating with message passing. This is a PSBLAS version for long-integer (8-byte) data. -%package -n %{name}_64-devel -Summary: The %{name}_64 headers and development-related files -Requires: %{name}_64%{?_isa} = %{version}-%{release} -Provides: %{name}_64-static = %{version}-%{release} -%description -n %{name}_64-devel -Shared links, header files and static libraries for %{name}_64. +%package -n %{name}-serial64-devel +Summary: The %{name}-serial64 headers and development-related files +Requires: %{name}-serial64%{?_isa} = %{version}-%{release} +Provides: %{name}-serial64-static = %{version}-%{release} +%description -n %{name}-serial64-devel +Shared links, header files and static libraries for %{name}-serial64. %endif ########################################################## @@ -229,29 +235,42 @@ cd psblas3-%{version}%{?postrelease_version} %{?dts:source /opt/rh/devtoolset-6/enable} %endif +# '-Werror=format-security' flag is not valid for gfortran +FC_OPT_FLAGS=$(echo "%{?fc_optflags}" | %{__sed} -e 's/-Werror=format-security//') %configure \ - --enable-serial --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \ + --enable-serial --with-fcopt="$FC_OPT_FLAGS -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \ --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I%{_fmoddir}" \ --with-metis=-lmetis --with-amd=-lamd --with-blas=-l%{blaslib} --with-lapack= \ - --with-amdincdir=%{_includedir}/suitesparse -%make_build + --with-amdincdir=%{_includedir}/suitesparse --with-lpk=4 --includedir=%{_includedir}/%{name}-serial + +# Reduce number of jobs for preventing failures +make %{?fedora: -O} %{?el8: -O} -j2 V=1 # Make shared libraries pushd lib -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} +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.%{major_minor} -o libpsb_base.so.%{major_minor} +ln -sf libpsb_base.so.%{major_minor} ./libpsb_base.so.%{major_version} +ln -sf libpsb_base.so.%{major_minor} ./libpsb_base.so + +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.%{major_minor} -o libpsb_krylov.so.%{major_minor} +ln -sf libpsb_krylov.so.%{major_minor} ./libpsb_krylov.so.%{major_version} +ln -sf libpsb_krylov.so.%{major_minor} ./libpsb_krylov.so -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} +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.%{major_minor} -o libpsb_prec.so.%{major_minor} +ln -sf libpsb_prec.so.%{major_minor} ./libpsb_prec.so.%{major_version} +ln -sf libpsb_prec.so.%{major_minor} ./libpsb_prec.so -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} +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.%{major_minor} -o libpsb_util.so.%{major_minor} +ln -sf libpsb_util.so.%{major_minor} ./libpsb_util.so.%{major_version} +ln -sf libpsb_util.so.%{major_minor} ./libpsb_util.so -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} +gcc -shared %{__global_ldflags} -Wl,--whole-archive libpsb_cbind.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -lpsb_prec -lpsb_krylov -lpsb_util -L%{_libdir} -lmetis -lamd -lm -Wl,-soname,libpsb_cbind.so.%{major_minor} -o libpsb_cbind.so.%{major_minor} +ln -sf libpsb_cbind.so.%{major_minor} ./libpsb_cbind.so.%{major_version} +ln -sf libpsb_cbind.so.%{major_minor} ./libpsb_cbind.so popd cd ../ -#make -C test/util MODDIR=../../modules -j1 -## - %if 0%{?arch64} cd build64 @@ -259,22 +278,37 @@ cd build64 %{?dts:source /opt/rh/devtoolset-6/enable} %endif +FC_OPT_FLAGS=$(echo "%{?fc_optflags}" | %{__sed} -e 's/-Werror=format-security//') %configure \ - --enable-serial --enable-long-integers --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \ + --enable-serial --with-fcopt="$FC_OPT_FLAGS -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \ --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I%{_fmoddir}" \ - --with-metis=-lmetis64 --with-amd=-lamd64 --with-blas=-l%{blaslib}64 --with-lapack= \ - --with-amdincdir=%{_includedir}/suitesparse -%make_build + --with-metis=-lmetis64 --with-metisincfile=metis64.h --with-metisincdir=%{_includedir} --with-amd=-lamd64 --with-blas=-l%{blaslib}64 --with-lapack= \ + --with-amdincdir=%{_includedir}/suitesparse --with-lpk=8 --includedir=%{_includedir}/%{name}-serial64 + +# Reduce number of jobs for preventing failures +make %{?fedora: -O} %{?el8: -O} -j2 V=1 # Make shared libraries pushd lib -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} +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.%{major_minor} -o libpsb64_base.so.%{major_minor} +ln -sf libpsb64_base.so.%{major_minor} ./libpsb64_base.so.%{major_version} +ln -sf libpsb64_base.so.%{major_minor} ./libpsb64_base.so -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} +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.%{major_minor} -o libpsb64_krylov.so.%{major_minor} +ln -sf libpsb64_krylov.so.%{major_minor} ./libpsb64_krylov.so.%{major_version} +ln -sf libpsb64_krylov.so.%{major_minor} ./libpsb64_krylov.so -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} +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,libpsb64_prec.so.%{major_minor} -o libpsb64_prec.so.%{major_minor} +ln -sf libpsb64_prec.so.%{major_minor} ./libpsb64_prec.so.%{major_version} +ln -sf libpsb64_prec.so.%{major_minor} ./libpsb64_prec.so -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} +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.%{major_minor} -o libpsb64_util.so.%{major_minor} +ln -sf libpsb64_util.so.%{major_minor} ./libpsb64_util.so.%{major_version} +ln -sf libpsb64_util.so.%{major_minor} ./libpsb64_util.so + +gcc -shared %{__global_ldflags} -Wl,--whole-archive libpsb64_cbind.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb64_base -lpsb64_prec -lpsb64_krylov -lpsb64_util -L%{_libdir} -lmetis64 -lamd64 -lm -Wl,-soname,libpsb64_cbind.so.%{major_minor} -o libpsb64_cbind.so.%{major_minor} +ln -sf libpsb64_cbind.so.%{major_minor} ./libpsb64_cbind.so.%{major_version} +ln -sf libpsb64_cbind.so.%{major_minor} ./libpsb64_cbind.so popd cd ../ @@ -293,23 +327,38 @@ pushd openmpi-build %{_openmpi_load} export CC=mpicc +FC_OPT_FLAGS=$(echo "%{?fc_optflags}" | %{__sed} -e 's/-Werror=format-security//') %configure \ - --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \ + --with-fcopt="$FC_OPT_FLAGS -Wno-unused-variable -Wno-unused-dummy-argument -fPIC -I${MPI_FORTRAN_MOD_DIR}" \ --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I${MPI_FORTRAN_MOD_DIR}" \ MPIFC=mpifort MPICC=mpicc \ --with-metis=-lmetis --with-amd=-lamd --with-blas=-l%{blaslib} --with-lapack= \ - --with-amdincdir=%{_includedir}/suitesparse -%make_build + --with-amdincdir=%{_includedir}/suitesparse --with-lpk=4 --includedir=$MPI_INCLUDE/%{name} + +# Reduce number of jobs for preventing failures +make %{?fedora: -O} %{?el8: -O} -j2 V=1 # Make shared libraries cd lib -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} +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 -lmpi -L%{_libdir} -l%{blaslib} -lgfortran -lm -Wl,-soname,libpsb_base.so.%{major_minor} -o libpsb_base.so.%{major_minor} +ln -sf libpsb_base.so.%{major_minor} ./libpsb_base.so.%{major_version} +ln -sf libpsb_base.so.%{major_minor} ./libpsb_base.so + +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 -lmpi -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_krylov.so.%{major_minor} -o libpsb_krylov.so.%{major_minor} +ln -sf libpsb_krylov.so.%{major_minor} ./libpsb_krylov.so.%{major_version} +ln -sf libpsb_krylov.so.%{major_minor} ./libpsb_krylov.so -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} +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 -lmpi -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_prec.so.%{major_minor} -o libpsb_prec.so.%{major_minor} +ln -sf libpsb_prec.so.%{major_minor} ./libpsb_prec.so.%{major_version} +ln -sf libpsb_prec.so.%{major_minor} ./libpsb_prec.so -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} +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 -lmpi -L%{_libdir} -l%{blaslib} -lmetis -lamd -lgfortran -lm -lrt -Wl,-soname,libpsb_util.so.%{major_minor} -o libpsb_util.so.%{major_minor} +ln -sf libpsb_util.so.%{major_minor} ./libpsb_util.so.%{major_version} +ln -sf libpsb_util.so.%{major_minor} ./libpsb_util.so -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} +mpicc -shared %{__global_ldflags} -Wl,--whole-archive libpsb_cbind.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -lpsb_prec -lpsb_krylov -lpsb_util -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB -Wl,--enable-new-dtags -lmpi_mpifh -lmpi -L%{_libdir} -l%{blaslib} -lmetis -lamd -lm -lrt -Wl,-soname,libpsb_cbind.so.%{major_minor} -o libpsb_cbind.so.%{major_minor} +ln -sf libpsb_cbind.so.%{major_minor} ./libpsb_cbind.so.%{major_version} +ln -sf libpsb_cbind.so.%{major_minor} ./libpsb_cbind.so cd ../ %{_openmpi_unload} @@ -325,100 +374,135 @@ pushd mpich-build %{_mpich_load} export CC=mpicc +FC_OPT_FLAGS=$(echo "%{?fc_optflags}" | %{__sed} -e 's/-Werror=format-security//') %configure \ - --with-fcopt="%{?fc_optflags} -Wno-unused-variable -Wno-unused-dummy-argument -fPIC" \ + --with-fcopt="$FC_OPT_FLAGS -Wno-unused-variable -Wno-unused-dummy-argument -fPIC -I${MPI_FORTRAN_MOD_DIR}" \ --with-ccopt="%{build_cflags} -fPIC" --with-include-path="%{_includedir}/%{blaslib} -I${MPI_FORTRAN_MOD_DIR}" \ MPIFC=mpif90 MPICC=mpicc \ --with-metis=-lmetis --with-amd=-lamd --with-blas=-l%{blaslib} --with-lapack= \ - --with-amdincdir=%{_includedir}/suitesparse -%make_build + --with-amdincdir=%{_includedir}/suitesparse --with-lpk=4 --includedir=$MPI_INCLUDE/%{name} + +# Reduce number of jobs for preventing failures +make %{?fedora: -O} %{?el8: -O} -j2 V=1 # Make shared libraries cd lib %if 0%{?fedora} -export MPIFLIB=-lmpifort +export MPIFLIB=" -lmpifort -lmpi" %else -export MPIFLIB=-lmpich +export MPIFLIB=" -lmpich -lfmpich " %endif -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} +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.%{major_minor} -o libpsb_base.so.%{major_minor} +ln -sf libpsb_base.so.%{major_minor} ./libpsb_base.so.%{major_version} +ln -sf libpsb_base.so.%{major_minor} ./libpsb_base.so + +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.%{major_minor} -o libpsb_krylov.so.%{major_minor} +ln -sf libpsb_krylov.so.%{major_minor} ./libpsb_krylov.so.%{major_version} +ln -sf libpsb_krylov.so.%{major_minor} ./libpsb_krylov.so -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} +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.%{major_minor} -o libpsb_prec.so.%{major_minor} +ln -sf libpsb_prec.so.%{major_minor} ./libpsb_prec.so.%{major_version} +ln -sf libpsb_prec.so.%{major_minor} ./libpsb_prec.so -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} +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.%{major_minor} -o libpsb_util.so.%{major_minor} +ln -sf libpsb_util.so.%{major_minor} ./libpsb_util.so.%{major_version} +ln -sf libpsb_util.so.%{major_minor} ./libpsb_util.so -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} +mpicc -shared %{__global_ldflags} -Wl,--whole-archive libpsb_cbind.a -Wl,-no-whole-archive -Wl,-Bdynamic -L./ -lpsb_base -lpsb_prec -lpsb_krylov -lpsb_util -L$MPI_LIB -Wl,-rpath -Wl,$MPI_LIB $MPIFLIB -Wl,-z,noexecstack -L%{_libdir} -l%{blaslib} -lmetis -lamd -lm -lrt -Wl,-soname,libpsb_cbind.so.%{major_minor} -o libpsb_cbind.so.%{major_minor} +ln -sf libpsb_cbind.so.%{major_minor} ./libpsb_cbind.so.%{major_version} +ln -sf libpsb_cbind.so.%{major_minor} ./libpsb_cbind.so cd ../ %{_mpich_unload} popd %endif ####################################################### + +%if 0%{?with_check} +%check %if 0%{?with_serial} -%ldconfig_scriptlets serial +pushd psblas3-%{version}%{?postrelease_version}/test/serial +export LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir} +make + +#!/bin/sh +echo Testing... +./d_matgen < - 3.7.0.1-1 +- Release 3.7.0.1 + * Wed Jan 27 2021 Fedora Release Engineering - 3.6.1-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index 624e186..ea3623b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (psblas3-3.6.1-4.tar.gz) = 1de7a7a0378ea68a8a1e24b908f4a67804ce89f037d85effb15b08948f1a7c4d14850b0c6a174fc732f54d66f43db85711b8eea699336a0ebdb578eaf10fcaf1 +SHA512 (psblas3-3.7.0.1.tar.gz) = bb6127b328de08377218015dbbe83ca0ae7c7e2483166f4734b0b9a37569d89d1bcb2094c7894298002e8ed71051b8177515b908fc9f390f9af20dfc3a352350