SHA256
1
0
forked from pool/mumps

4 Commits

3 changed files with 61 additions and 358 deletions

View File

@@ -1,11 +1,10 @@
<multibuild> <multibuild>
<package>serial</package> <package>serial</package>
<package>openmpi4</package> <package>openmpi4</package>
<package>openmpi5</package>
<package>mvapich2</package> <package>mvapich2</package>
<package>scotch-serial</package> <package>scotch-serial</package>
<package>scotch-openmpi4</package> <package>scotch-openmpi4</package>
<package>gnu-openmpi4-hpc</package> <package>scotch-openmpi5</package>
<package>gnu-mvapich2-hpc</package>
<package>gnu-mpich-hpc</package>
<!-- <package>scotch-mvapich2</package> --> <!-- <package>scotch-mvapich2</package> -->
</multibuild> </multibuild>

View File

@@ -1,3 +1,15 @@
-------------------------------------------------------------------
Mon Mar 24 13:13:54 UTC 2025 - Nicolas Morey <nicolas.morey@suse.com>
- Disable and remove support for gnu-hpc build flavours (bsc#1239982)
- Add openmpi5 build flavour
- openmpi5 is not available on 32b systems
-------------------------------------------------------------------
Mon Dec 30 22:47:14 UTC 2024 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- Fix hpc builds, add workaround for bsc#1234007.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Feb 22 12:29:34 UTC 2024 - pgajdos@suse.com Thu Feb 22 12:29:34 UTC 2024 - pgajdos@suse.com

View File

@@ -1,7 +1,7 @@
# #
# spec file for package mumps # spec file for package mumps
# #
# Copyright (c) 2024 SUSE LLC # Copyright (c) 2025 SUSE LLC
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@@ -19,9 +19,7 @@
%global flavor @BUILD_FLAVOR@%{nil} %global flavor @BUILD_FLAVOR@%{nil}
%define pname mumps %define pname mumps
%define ver 5.3.5
%define so_ver 5_3_5 %define so_ver 5_3_5
%define openblas_vers 0.3.6
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects %global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%define PNAME %(echo %{pname} | tr [a-z] [A-Z]) %define PNAME %(echo %{pname} | tr [a-z] [A-Z])
@@ -32,260 +30,57 @@
ExclusiveArch: do_not_build ExclusiveArch: do_not_build
%endif %endif
%if 0%{?sle_version} >= 150200
%define DisOMPI1 ExclusiveArch: do_not_build
%endif
%if !0%{?is_opensuse} && 0%{?sle_version:1} && 0%{?sle_version} < 150200
%define DisOMPI3 ExclusiveArch: do_not_build
%endif
%if 0%{?sle_version:1} && 0%{?sle_version} < 150300
%define DisOMPI4 ExclusiveArch: do_not_build
%endif
%if "%{flavor}" == "serial" %if "%{flavor}" == "serial"
# Stub MPI library # Stub MPI library
%define mumps_f77_mpilibs '-lmpiseq' %define mumps_f77_mpilibs '-lmpiseq'
%bcond_with hpc
%endif %endif
%if "%{flavor}" == "scotch-serial" %if "%{flavor}" == "scotch-serial"
# Stub MPI library # Stub MPI library
%define mumps_f77_mpilibs '-lmpiseq' %define mumps_f77_mpilibs '-lmpiseq'
%bcond_with hpc
%bcond_without scotch %bcond_without scotch
%endif %endif
%if "%{flavor}" == "openmpi4" %if "%{flavor}" == "openmpi4"
%{?DisOMPI4} %define mpi_flavor openmpi4
%define mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi %define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 4
%bcond_with hpc
%endif %endif
%if "%{flavor}" == "openmpi5" %if "%{flavor}" == "openmpi5"
%{?DisOMPI5} %define mpi_flavor openmpi5
%define mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi %define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 5 ExcludeArch: %{ix86} %{arm}
%bcond_with hpc
%endif %endif
%if "%{flavor}" == "mvapich2" %if "%{flavor}" == "mvapich2"
%define mpi_family mvapich2 %define mpi_flavor mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich %define mumps_f77_mpilibs -lfmpich -lmpich
%bcond_with hpc
%endif %endif
%if "%{flavor}" == "scotch-openmpi4" %if "%{flavor}" == "scotch-openmpi4"
%{?DisOMPI4} %define mpi_flavor openmpi4
%define mpi_family openmpi
%define mpi_ver 4
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi %define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%bcond_with hpc
%bcond_without scotch %bcond_without scotch
%endif %endif
%if "%{flavor}" == "scotch-openmpi5" %if "%{flavor}" == "scotch-openmpi5"
%{?DisOMPI5} %define mpi_flavor openmpi5
%define mpi_family openmpi
%define mpi_ver 5
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi %define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%bcond_with hpc
%bcond_without scotch %bcond_without scotch
ExcludeArch: %{ix86} %{arm}
%endif %endif
%if "%{flavor}" == "scotch-mvapich2" %if "%{flavor}" == "scotch-mvapich2"
%define mpi_family mvapich2 %define mpi_flavor mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich %define mumps_f77_mpilibs -lfmpich -lmpich
%bcond_with hpc
%bcond_without scotch %bcond_without scotch
%endif %endif
%if "%{flavor}" == "gnu-openmpi4-hpc"
%{?DisOMPI4}
%undefine c_f_ver
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 4
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu-openmpi5-hpc"
%{?DisOMPI5}
%undefine c_f_ver
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 5
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu-mvapich2-hpc"
%undefine c_f_ver
# macro mpi is used by macros for master package
%global mpi_family mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich
%undefine mpi_ver
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu-mpich-hpc"
%undefine c_f_ver
%global mpi_family mpich
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu7-openmpi4-hpc"
%{?DisOMPI4}
%define c_f_ver 7
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 4
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu7-openmpi5-hpc"
%{?DisOMPI5}
%define c_f_ver 7
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 5
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu7-mvapich2-hpc"
%define c_f_ver 7
# macro mpi is used by macros for master package
%global mpi_family mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich
%undefine mpi_ver
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu7-mpich-hpc"
%define c_f_ver 7
%global mpi_family mpich
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu8-openmpi4-hpc"
%{?DisOMPI4}
%define c_f_ver 8
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 4
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu8-openmpi5-hpc"
%{?DisOMPI5}
%define c_f_ver 8
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 5
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu8-mvapich2-hpc"
%define c_f_ver 8
# macro mpi is used by macros for master package
%global mpi_family mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich
%undefine mpi_ver
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu8-mpich-hpc"
%define c_f_ver 8
%global mpi_family mpich
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu9-openmpi4-hpc"
%{?DisOMPI4}
%define c_f_ver 9
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 4
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu9-openmpi5-hpc"
%{?DisOMPI5}
%define c_f_ver 9
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 5
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu9-mvapich2-hpc"
%define c_f_ver 9
# macro mpi is used by macros for master package
%global mpi_family mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich
%undefine mpi_ver
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu9-mpich-hpc"
%define c_f_ver 9
%global mpi_family mpich
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu10-openmpi4-hpc"
%{?DisOMPI4}
%define c_f_ver 10
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 4
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu10-openmpi5-hpc"
%{?DisOMPI5}
%define c_f_ver 10
# macro mpi is used by macros for master package
%global mpi_family openmpi
%define mumps_f77_mpilibs -lmpi_mpifh -lmpi
%define mpi_ver 5
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu10-mvapich2-hpc"
%define c_f_ver 10
# macro mpi is used by macros for master package
%global mpi_family mvapich2
%define mumps_f77_mpilibs -lfmpich -lmpich
%undefine mpi_ver
%bcond_without hpc
%endif
%if "%{flavor}" == "gnu10-mpich-hpc"
%define c_f_ver 10
%global mpi_family mpich
%bcond_without hpc
%endif
%ifarch i586 s390 ppc armv7l %ifarch i586 s390 ppc armv7l
ExclusiveArch: do_not_build ExclusiveArch: do_not_build
%endif %endif
%if !0%{?is_opensuse} && !0%{?with_hpc:1} %{?mpi_flavor:%{bcond_without mpi}}%{!?mpi_flavor:%{bcond_with mpi}}
ExclusiveArch: do_not_build
%endif
%{?mpi_family:%{bcond_without mpi}}%{!?mpi_family:%{bcond_with mpi}}
%if %{with scotch} %if %{with scotch}
%if %{with mpi} %if %{with mpi}
@@ -295,7 +90,6 @@ ExclusiveArch: do_not_build
%endif %endif
%endif %endif
%if %{without hpc}
%if %{without mpi} %if %{without mpi}
%define my_prefix %_prefix %define my_prefix %_prefix
%define my_bindir %_bindir %define my_bindir %_bindir
@@ -303,8 +97,8 @@ ExclusiveArch: do_not_build
%define my_incdir %_includedir %define my_incdir %_includedir
%define my_datadir %_datadir %define my_datadir %_datadir
%else %else
%define my_suffix -%{mpi_family}%{?mpi_ver} %define my_suffix -%{mpi_flavor}
%define my_prefix %{_libdir}/mpi/gcc/%{mpi_family}%{?mpi_ver} %define my_prefix %{_libdir}/mpi/gcc/%{mpi_flavor}
%define my_bindir %{my_prefix}/bin %define my_bindir %{my_prefix}/bin
%define my_libdir %{my_prefix}/%{_lib}/ %define my_libdir %{my_prefix}/%{_lib}/
%define my_incdir %{my_prefix}/include/ %define my_incdir %{my_prefix}/include/
@@ -312,48 +106,25 @@ ExclusiveArch: do_not_build
%endif %endif
%define package_name %{pname}%{?scotch:-%{scotch}}%{?my_suffix} %define package_name %{pname}%{?scotch:-%{scotch}}%{?my_suffix}
%define libname lib%{pname}%{?scotch:-%{scotch}}%{?so_ver}%{?my_suffix} %define libname lib%{pname}%{?scotch:-%{scotch}}%{?so_ver}%{?my_suffix}
%else
ExcludeArch: %ix86
%{!?compiler_family:%global compiler_family gnu}
%{?with_mpi:%{!?mpi_family:error "No MPI family specified!"}}
%{hpc_init -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} %{?with_mpi:-m {%mpi_family}} %{?mpi_ver:-V %{mpi_ver}} %{?scotch:-e %{scotch}}} Summary: A Multifrontal Massively Parallel Sparse direct Solver
%define my_prefix %{hpc_prefix}
%define my_bindir %{hpc_bindir}
%define my_libdir %{hpc_libdir}
%define my_incdir %{hpc_includedir}
%define my_datadir %{hpc_datadir}
%define package_name %{hpc_package_name %{?_ver}}
%define libname lib%{package_name}
%endif
Summary: A MUltifrontal Massively Parallel Sparse direct Solver
License: CECILL-C License: CECILL-C
Group: Productivity/Scientific/Math Group: Productivity/Scientific/Math
Name: %{package_name} Name: %{package_name}
Version: %{ver} Version: 5.3.5
Release: 0 Release: 0
URL: http://mumps.enseeiht.fr/ URL: http://mumps.enseeiht.fr/
Source0: http://mumps.enseeiht.fr/MUMPS_%{version}.tar.gz#/%{pname}-%{version}.tar.gz Source0: http://mumps.enseeiht.fr/MUMPS_%{version}.tar.gz#/%{pname}-%{version}.tar.gz
Source1: Makefile.inc Source1: Makefile.inc
%if %{without hpc}
BuildRequires: gcc-fortran BuildRequires: gcc-fortran
%{?with_scotch:BuildRequires: %{scotch}%{?with_mpi:-%{mpi_family}%{?mpi_ver}}-devel} %{?with_scotch:BuildRequires: %{scotch}%{?with_mpi:-%{mpi_flavor}}-devel}
%if %{with mpi} %if %{with mpi}
BuildRequires: %{mpi_family}%{?mpi_ver}-devel BuildRequires: %{mpi_flavor}-devel
BuildRequires: libblacs2-%{mpi_family}%{?mpi_ver}-devel BuildRequires: libblacs2-%{mpi_flavor}-devel
BuildRequires: scalapack-%{mpi_family}%{?mpi_ver}-devel BuildRequires: scalapack-%{mpi_flavor}-devel
%endif # mpi %endif # mpi
BuildRequires: blas-devel BuildRequires: blas-devel
BuildRequires: lapack-devel BuildRequires: lapack-devel
%else # hpc
BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel
BuildRequires: %{mpi_family}%{?mpi_ver}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel
BuildRequires: fdupes
BuildRequires: libopenblas-%{compiler_family}%{?c_f_ver}-hpc >= %{openblas_vers}
BuildRequires: libscalapack2-%{compiler_family}%{?c_f_ver}-%{mpi_family}%{?mpi_ver}-hpc-devel
BuildRequires: suse-hpc
%endif # hpc
%description %description
MUMPS implements a direct solver for large sparse linear systems, with a MUMPS implements a direct solver for large sparse linear systems, with a
@@ -364,19 +135,11 @@ C interfaces, and can interface with ordering tools such as Scotch.
%package -n %{libname} %package -n %{libname}
Summary: A MUltifrontal Massively Parallel Sparse direct Solver Summary: A MUltifrontal Massively Parallel Sparse direct Solver
Group: System/Libraries Group: System/Libraries
%if %{without hpc}
%{?with_mpi:Recommends: %{libname}-compat = %{version}} %{?with_mpi:Recommends: %{libname}-compat = %{version}}
# Explicitly include this library here: # Explicitly include this library here:
# the solver doesn't have enough information to pick the correct MPI flavor # the solver doesn't have enough information to pick the correct MPI flavor
%{?with_mpi:Requires: libblacs2-%{mpi_family}%{?mpi_ver}} %{?with_mpi:Requires: libblacs2-%{mpi_flavor}}
%else
%{requires_eq libscalapack2-%{compiler_family}-%{mpi_family}%{?mpi_ver}-hpc}
%hpc_requires
Requires: lua-lmod >= 7.6.1
%endif
%if %{without hpc}
Conflicts: lib%{pname}%{?scotch:-%{scotch}}5%{?my_suffix} >= 5.3.5 Conflicts: lib%{pname}%{?scotch:-%{scotch}}5%{?my_suffix} >= 5.3.5
%endif
%description -n %{libname} %description -n %{libname}
MUMPS implements a direct solver for large sparse linear systems, with a MUMPS implements a direct solver for large sparse linear systems, with a
@@ -387,14 +150,14 @@ C interfaces, and can interface with ordering tools such as Scotch.
%if %{!with mpi} %if %{!with mpi}
This package contains the sequential library%{?scotch: with Scotch support enabled}. This package contains the sequential library%{?scotch: with Scotch support enabled}.
%else %else
This package contains the parallel library with %{mpi_family}%{?mpi_ver} and %{?scotch: with Scotch support enabled}. This package contains the parallel library with %{mpi_flavor} and %{?scotch: with Scotch support enabled}.
%endif %endif
%package -n %{libname}-compat %package -n %{libname}-compat
Summary: A MUltifrontal Massively Parallel Sparse direct Solver Summary: A MUltifrontal Massively Parallel Sparse direct Solver
Group: System/Libraries Group: System/Libraries
Requires: lib%{pname}%{?scotch:-scotch}%{so_ver} = %{version} Requires: lib%{pname}%{?scotch:-scotch}%{so_ver} = %{version}
%if %{without hpc} && %{with mpi} %if %{with mpi}
# Install link targets for non-HPC MPI compat links from the MPI libdir - see below. # Install link targets for non-HPC MPI compat links from the MPI libdir - see below.
BuildRequires: %{pname}%{?scotch:-scotch}-devel-static = %version BuildRequires: %{pname}%{?scotch:-scotch}-devel-static = %version
BuildRequires: lib%{pname}%{?scotch:-scotch}%{so_ver} = %{version} BuildRequires: lib%{pname}%{?scotch:-scotch}%{so_ver} = %{version}
@@ -407,7 +170,7 @@ operate on distributed matrices e.g. over a cluster. It has Fortran and
C interfaces, and can interface with ordering tools such as Scotch. C interfaces, and can interface with ordering tools such as Scotch.
This package provides links to the serial libraries from the MPI library This package provides links to the serial libraries from the MPI library
directory MUMPS built for %{mpi_family}%{?mpi_ver}. directory MUMPS built for %{mpi_flavor}.
%package doc %package doc
Summary: A MUltifrontal Massively Parallel Sparse direct Solver Summary: A MUltifrontal Massively Parallel Sparse direct Solver
@@ -425,34 +188,29 @@ This package provides Documentation for %{package_name}.
%if %{!with mpi} %if %{!with mpi}
This package contains the sequential library%{?scotch: with Scotch support enabled}. This package contains the sequential library%{?scotch: with Scotch support enabled}.
%else %else
This package contains the parallel library with %{mpi_family}%{?mpi_ver} and %{?scotch: with Scotch support enabled}. This package contains the parallel library with %{mpi_flavor} and %{?scotch: with Scotch support enabled}.
%endif %endif
%package devel %package devel
Summary: Files needed for developing mumps based applications Summary: Files needed for developing mumps based applications
Group: Development/Libraries/Parallel Group: Development/Libraries/Parallel
Requires: %{libname} = %version Requires: %{libname} = %version
%if %{without hpc} %if %{with mpi} || %{with scotch}
%if %{with mpi} || %{with scotch}
Requires: mumps-devel = %{version} Requires: mumps-devel = %{version}
%endif %endif
%if %{with mpi} %if %{with mpi}
Requires: %{mpi_family}%{?mpi_ver}-devel Requires: %{mpi_flavor}-devel
Requires: scalapack-%{mpi_family}%{?mpi_ver}-devel Requires: scalapack-%{mpi_flavor}-devel
%if %{with scotch} %if %{with scotch}
Requires: mumps-scotch-devel = %{version} Requires: mumps-scotch-devel = %{version}
Requires: ptscotch-%{mpi_family}%{?mpi_ver}-devel Requires: ptscotch-%{mpi_flavor}-devel
%endif %endif
%else # mpi %else # mpi
Requires: blas-devel Requires: blas-devel
Requires: lapack-devel Requires: lapack-devel
%{?with_scotch:Requires: scotch-devel} %{?with_scotch:Requires: scotch-devel}
%endif # mpi %endif # mpi
Recommends: gcc-fortran Recommends: gcc-fortran
%else # hpc
%hpc_requires_devel
%{requires_eq libscalapack2-%{compiler_family}-%{mpi_family}%{?mpi_ver}-hpc-devel}
%endif
%description devel %description devel
MUMPS implements a direct solver for large sparse linear systems, with a MUMPS implements a direct solver for large sparse linear systems, with a
@@ -487,16 +245,14 @@ operate on distributed matrices e.g. over a cluster. It has Fortran and
C interfaces, and can interface with ordering tools such as Scotch. C interfaces, and can interface with ordering tools such as Scotch.
This package provides links to the static serial libraries from the MPI This package provides links to the static serial libraries from the MPI
library directory MUMPS built for %{mpi_family}%{?mpi_ver}. library directory MUMPS built for %{mpi_flavor}.
%package examples %package examples
Summary: Test programs and examples for mumps Summary: Test programs and examples for mumps
Group: Documentation/Other Group: Documentation/Other
Requires: %{libname} = %version Requires: %{libname} = %version
%if %{without hpc}
Provides: mumps(examples)(%{?mpi_family}) = %version Provides: mumps(examples)(%{?mpi_family}) = %version
Conflicts: otherproviders(mumps(examples)(%{?mpi_family})) Conflicts: otherproviders(mumps(examples)(%{?mpi_family}))
%endif
%description examples %description examples
MUMPS implements a direct solver for large sparse linear systems, with a MUMPS implements a direct solver for large sparse linear systems, with a
@@ -507,13 +263,6 @@ C interfaces, and can interface with ordering tools such as Scotch.
This packages contains some test and examples programs for mumps. In addition, This packages contains some test and examples programs for mumps. In addition,
matlab and scilab extensions are provided in /usr/share/doc/packages/mumps. matlab and scilab extensions are provided in /usr/share/doc/packages/mumps.
%if %{with hpc}
%{hpc_master_package -l -L}
%{hpc_master_package -L devel}
%{hpc_master_package -L examples}
%{hpc_master_package doc}
%endif
%prep %prep
%autosetup -n %{PNAME}_%{version} %autosetup -n %{PNAME}_%{version}
@@ -521,12 +270,7 @@ matlab and scilab extensions are provided in /usr/share/doc/packages/mumps.
export SUSE_ASNEEDED=0 export SUSE_ASNEEDED=0
%if %{with hpc}
%hpc_setup
module load openblas scalapack
%else
%{?with_mpi: source %{my_bindir}/mpivars.sh} %{?with_mpi: source %{my_bindir}/mpivars.sh}
%endif
%define PLAT %{?scotch:_%{scotch}}%{!?scotch:%{!?with_mpi:_seq}} %define PLAT %{?scotch:_%{scotch}}%{!?scotch:%{!?with_mpi:_seq}}
@@ -545,22 +289,17 @@ module load openblas scalapack
%endif %endif
%endif # scotch %endif # scotch
%if %{with hpc} %define LIBBLAS -lblas -llapack
%define LIBBLAS -lopenblas -lscalapack %define LAPACK -llapack
%define LAPAK -lscalapack
%else # hpc
%define LIBBLAS -lblas -llapack
%define LAPACK -llapack
%endif # hpc
%if %{with mpi} %if %{with mpi}
# Set LD_LIBRARY_PATH and PATH # Set LD_LIBRARY_PATH and PATH
%define C_C mpicc %define C_C mpicc
%define F_C mpif77 -std=legacy %define F_C mpif77 -std=legacy
%define F_L mpif77 %define F_L mpif77
%define SCALAP -lscalapack %{!?with_hpc:-lblacs} %define SCALAP -lscalapack -lblacs
%define MUMPS_LIBF77 %{!?with_hpc:-L%{my_libdir}} %{?mumps_f77_mpilibs} %define MUMPS_LIBF77 -L%{my_libdir} %{?mumps_f77_mpilibs}
%define INCPAR %{!?with_hpc:-I%{my_incdir}} %define INCPAR -I%{my_incdir}
%define LIBPAR %{SCALAP} %{MUMPS_LIBF77} %define LIBPAR %{SCALAP} %{MUMPS_LIBF77}
%define INCS \\\$(INCPAR) %define INCS \\\$(INCPAR)
%define LIBS \\\$(LIBPAR) %define LIBS \\\$(LIBPAR)
@@ -637,7 +376,7 @@ mkdir -p %{buildroot}%{my_libdir}
# install libs # install libs
cp -P lib/lib*.a %{buildroot}%{my_libdir} cp -P lib/lib*.a %{buildroot}%{my_libdir}
cp -P lib/lib*.so* %{buildroot}%{my_libdir} cp -P lib/lib*.so* %{buildroot}%{my_libdir}
%if %{with hpc} || %{without mpi} && %{without scotch} %if %{without mpi} && %{without scotch}
mkdir -p %{buildroot}%{my_incdir}/mumps mkdir -p %{buildroot}%{my_incdir}/mumps
mkdir -p %{buildroot}%{my_incdir}/pord mkdir -p %{buildroot}%{my_incdir}/pord
install -m 644 include/* %{buildroot}%{my_incdir}/mumps install -m 644 include/* %{buildroot}%{my_incdir}/mumps
@@ -649,7 +388,6 @@ install -m 755 examples/c_example %{buildroot}%{my_bindir}
install -m 755 examples/*_save_restore %{buildroot}%{my_bindir} install -m 755 examples/*_save_restore %{buildroot}%{my_bindir}
%if %{with mpi} %if %{with mpi}
%if %{without hpc}
# we make a symlink to the serial lib in the parallel lib prefix # we make a symlink to the serial lib in the parallel lib prefix
# because some scientific packages don't manage different directories # because some scientific packages don't manage different directories
# for the serial and parallel libs # for the serial and parallel libs
@@ -659,48 +397,8 @@ for lib in libcmumps libdmumps libsmumps libzmumps libmumps_common libmpiseq lib
ln -s %{_libdir}/$name %{buildroot}%{my_libdir}/$name ln -s %{_libdir}/$name %{buildroot}%{my_libdir}/$name
done done
done done
%endif # hpc
%endif # mpi %endif # mpi
%if %{with hpc}
%hpc_write_modules_files
#%%Module1.0#####################################################################
proc ModulesHelp { } {
puts stderr " "
puts stderr "This module loads the mumps library built with the %{compiler_family} compiler"
puts stderr "toolchain and the %{mpi_family}%{?mpi_ver} MPI stack."
puts stderr " "
puts stderr "\nVersion %{version}\n"
}
module-whatis "Name: %{pname} built with %{compiler_family} compiler%{?with_mpi: and %{mpi_family}%{?mpi_ver} MPI}"
module-whatis "Version: %{version}"
module-whatis "Category: runtime library"
module-whatis "%{url}"
set version %{version}
depends-on scalapack
prepend-path PATH %{hpc_bindir}
if {[file isdirectory %{hpc_includedir}]} {
prepend-path INCLUDE %{hpc_includedir}
}
prepend-path LD_LIBRARY_PATH %{hpc_libdir}
setenv %{PNAME}_DIR %{hpc_prefix}
setenv %{PNAME}_BIN %{hpc_bindir}
if {[file isdirectory %{hpc_includedir}]} {
setenv %{PNAME}_INC %{hpc_includedir}
}
setenv %{PNAME}_LIB %{hpc_libdir}
EOF
%endif
# Don't want binaries in docdir # Don't want binaries in docdir
rm -rf examples/*.o examples/*simpletest examples/*_save_restore examples/c_example examples/multiple_arithmetics_example rm -rf examples/*.o examples/*simpletest examples/*_save_restore examples/c_example examples/multiple_arithmetics_example
@@ -714,14 +412,9 @@ rm -rf examples/*.o examples/*simpletest examples/*_save_restore examples/c_exam
%postun -n %{libname} %postun -n %{libname}
/sbin/ldconfig -N %{my_libdir} /sbin/ldconfig -N %{my_libdir}
%{?with_hpc:%{hpc_module_delete_if_default}}
%endif %endif
%files -n %{libname} %files -n %{libname}
%if %{with hpc}
%{hpc_dirs}
%{hpc_modules_files}
%endif
%license LICENSE %license LICENSE
%doc ChangeLog README VERSION CREDITS %doc ChangeLog README VERSION CREDITS
%{my_libdir}/libcmumps%{?PLAT}.so.* %{my_libdir}/libcmumps%{?PLAT}.so.*
@@ -734,39 +427,38 @@ rm -rf examples/*.o examples/*simpletest examples/*_save_restore examples/c_exam
%{_libdir}/libmpiseq%{?PLAT}.so.* %{_libdir}/libmpiseq%{?PLAT}.so.*
%endif %endif
%if %{with mpi} && %{without hpc} %if %{with mpi}
%files -n %{libname}-compat %files -n %{libname}-compat
%if %{without scotch} %if %{without scotch}
%{my_libdir}/lib*_seq.so.* %{my_libdir}/lib*_seq.so.*
%else # scotch %else # scotch
%{my_libdir}/lib*_scotch.so.* %{my_libdir}/lib*_scotch.so.*
%endif # scotch %endif # scotch
%endif # mpi && !hpc %endif # mpi
%files devel %files devel
%if %{with hpc} || ( %{without scotch} && %{without mpi} ) %if %{without scotch} && %{without mpi}
%{?with_hpc:%dir %{my_incdir}}
%{my_incdir}/mumps %{my_incdir}/mumps
%{my_incdir}/pord %{my_incdir}/pord
%endif %endif
%{my_libdir}/*.so %{my_libdir}/*.so
%files devel-static %files devel-static
%{?with_mpi:%exclude %{my_libdir}/*%{!?scotch:_seq}%{?scotch:_scotch}.a} %{?with_mpi:%exclude %{my_libdir}/*%{!?scotch:_seq}%{?scotch:_scotch}.a}
%{my_libdir}/*.a %{my_libdir}/*.a
%if %{with mpi} && %{without hpc} %if %{with mpi}
%files devel-static-compat %files devel-static-compat
%{my_libdir}/*%{!?scotch:_seq}%{?scotch:_scotch}.a %{my_libdir}/*%{!?scotch:_seq}%{?scotch:_scotch}.a
%endif %endif
%if %{with hpc} || ( %{without mpi} && %{without scotch} ) %if %{without mpi} && %{without scotch}
%files doc %files doc
%doc doc SCILAB MATLAB %doc doc SCILAB MATLAB
%endif %endif
%files examples %files examples
%doc Makefile.inc examples %doc Makefile.inc examples
%{my_bindir}%{!?with_hpc:/*} %{my_bindir}/*
%changelog %changelog