- Fix build on Tumbleweed (openmpi1 instead of openmpi) - Spec file cleanup TODO: convert to multibuild, add more mpi flavors OBS-URL: https://build.opensuse.org/request/show/1005177 OBS-URL: https://build.opensuse.org/package/show/science/pARMS?expand=0&rev=2
274 lines
8.4 KiB
RPMSpec
274 lines
8.4 KiB
RPMSpec
#
|
|
# spec file for package pARMS
|
|
#
|
|
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%if 0%{?sles_version}
|
|
%define _mvapich2 1
|
|
%endif
|
|
%if 0%{?suse_version}
|
|
%if 0%{?suse_version} >= 1550
|
|
%define _openmpi openmpi1
|
|
%else
|
|
%define _openmpi openmpi
|
|
%endif
|
|
%endif
|
|
|
|
%define _mpi %{?_openmpi} %{?_mvapich2:mvapich2}
|
|
|
|
%define major 3
|
|
%define libname libparms
|
|
|
|
Name: pARMS
|
|
Version: 3.2
|
|
Release: 0
|
|
Summary: The parallel Algebraic Recursive Multilevel Solvers
|
|
License: LGPL-2.1
|
|
Group: Development/Libraries/Parallel
|
|
Url: http://www-users.cs.umn.edu/~saad/software/pARMS/
|
|
Source0: %{name}_%{version}.tar.gz
|
|
# PATCH-FEATURE-OPENSUSE pARMS-3.2-make.patch : add compiler and build flags in makefile.inc
|
|
Patch0: pARMS-3.2-make.patch
|
|
BuildRequires: blas-devel
|
|
BuildRequires: fdupes
|
|
BuildRequires: gcc-fortran
|
|
BuildRequires: lapack-devel
|
|
%if 0%{?_openmpi:1}
|
|
BuildRequires: %{_openmpi}-devel
|
|
%endif
|
|
%if 0%{?_mvapich2}
|
|
BuildRequires: mvapich2-devel
|
|
%endif
|
|
|
|
%description
|
|
This is a new version of the parallel Algebraic Recursive Multilevel
|
|
Solvers which has been reimplemented completely. This version includes:
|
|
|
|
- The Restrictive Additive Schwarz (RAS) procedures
|
|
- Schur complement techniques (with RAS)
|
|
- ddPQ ordering for local matrices.. [However, the Schur
|
|
complement techniques do not yet support ddPQ orderings]
|
|
- (flexible) GMRES accelerator
|
|
|
|
|
|
%if 0%{?_openmpi:1}
|
|
%package -n %{libname}%{major}-%{_openmpi}
|
|
Summary: A general purpose library for the direct solution of linear equations
|
|
Group: System/Libraries
|
|
|
|
%description -n %{libname}%{major}-%{_openmpi}
|
|
This is a new version of the parallel Algebraic Recursive Multilevel
|
|
Solvers which has been reimplemented completely. This version includes:
|
|
|
|
- The Restrictive Additive Schwarz (RAS) procedures
|
|
- Schur complement techniques (with RAS)
|
|
- ddPQ ordering for local matrices.. [However, the Schur
|
|
complement techniques do not yet support ddPQ orderings]
|
|
- (flexible) GMRES accelerator
|
|
|
|
This package contains the parallel version of the library for openmpi.
|
|
|
|
%package %{_openmpi}-devel
|
|
Summary: Development and header files for %{name}
|
|
Group: Development/Libraries/Parallel
|
|
Requires: %{libname}%{major}-%{_openmpi} = %{version}
|
|
Requires: %{_openmpi}-devel
|
|
|
|
%description %{_openmpi}-devel
|
|
This package contains the development and header files for %{name}.
|
|
|
|
%package %{_openmpi}-devel-static
|
|
Summary: Static library for %{name}
|
|
Group: Development/Libraries/C and C++
|
|
Requires: %{name}-%{_openmpi}-devel = %{version}
|
|
|
|
%description %{_openmpi}-devel-static
|
|
This package contains the static library for %{name}.
|
|
|
|
%package example-%{_openmpi}
|
|
Summary: Example programs for %{name}
|
|
Group: Development/Libraries/Parallel
|
|
|
|
%description example-%{_openmpi}
|
|
This package contains several examples programs using %{name}.
|
|
|
|
The matrix data required by some of the programs can be found in the
|
|
documentation directory /usr/share/doc/packages/%{name}-example-%{_openmpi}/matrices.
|
|
%endif
|
|
|
|
%if 0%{?_mvapich2}
|
|
%package -n %{libname}%{major}-mvapich2
|
|
Summary: A general purpose library for the direct solution of linear equations
|
|
Group: System/Libraries
|
|
|
|
%description -n %{libname}%{major}-mvapich2
|
|
This is a new version of the parallel Algebraic Recursive Multilevel
|
|
Solvers which has been reimplemented completely. This version includes:
|
|
|
|
- The Restrictive Additive Schwarz (RAS) procedures
|
|
- Schur complement techniques (with RAS)
|
|
- ddPQ ordering for local matrices.. [However, the Schur
|
|
complement techniques do not yet support ddPQ orderings]
|
|
- (flexible) GMRES accelerator
|
|
|
|
This package contains the parallel version of the library for mvapich2.
|
|
|
|
%package mvapich2-devel
|
|
Summary: Development and header files for %{name}
|
|
Group: Development/Libraries/C and C++
|
|
Requires: %{libname}%{major}-mvapich2 = %{version}
|
|
Requires: mvapich2-devel
|
|
|
|
%description mvapich2-devel
|
|
This package contains the development and header files for %{name}.
|
|
|
|
%package mvapich2-devel-static
|
|
Summary: Static library for %{name}
|
|
Group: Development/Libraries/C and C++
|
|
Requires: %{libname}%{major}-mvapich2 = %{version}
|
|
Requires: %{name}-mvapich2-devel = %{version}
|
|
|
|
%description mvapich2-devel-static
|
|
This package contains the static library for %{name}.
|
|
|
|
%package example-mvapich2
|
|
Summary: Example programs for %{name}
|
|
Group: Development/Libraries/Parallel
|
|
|
|
%description example-mvapich2
|
|
This package contains several examples programs using %{name}.
|
|
|
|
The matrix data required by some of the programs can be found in the
|
|
documentation directory /usr/share/doc/packages/%{name}-example-mvapich2/matrices.
|
|
%endif
|
|
|
|
%package doc
|
|
Summary: Documentation files for %{name}
|
|
Group: Documentation/Other
|
|
|
|
%description doc
|
|
This package contains the html and pdf documentation files for %{name}.
|
|
|
|
%prep
|
|
%setup -q -n pARMS_%{version}
|
|
%patch0 -p1
|
|
|
|
set -- *
|
|
for mpi in %_mpi; do
|
|
mkdir $mpi
|
|
cp -ap "$@" $mpi
|
|
done
|
|
|
|
%build
|
|
for mpi in %_mpi; do
|
|
cd $mpi
|
|
make %{?_smp_mflags} \
|
|
CC=%{_libdir}/mpi/gcc/$mpi/bin/mpicc \
|
|
FC=%{_libdir}/mpi/gcc/$mpi/bin/mpif77 \
|
|
F90=%{_libdir}/mpi/gcc/$mpi/bin/mpif90 \
|
|
COPTFLAGS="%{optflags} -fPIC -ffat-lto-objects"
|
|
|
|
mkdir tmp
|
|
( cd tmp && ar -x ../lib/libparms.a )
|
|
%{_libdir}/mpi/gcc/$mpi/bin/mpif90 -shared -z muldefs -Wl,-soname=%{libname}.so.%{major} -o lib/%{libname}.so.%{version} tmp/*.o
|
|
pushd lib
|
|
ln -s %{libname}.so.%{major} %{libname}.so
|
|
popd
|
|
|
|
# build the tests
|
|
make %{?_smp_mflags} tests \
|
|
CC=%{_libdir}/mpi/gcc/$mpi/bin/mpicc \
|
|
FC=%{_libdir}/mpi/gcc/$mpi/bin/mpif77 \
|
|
F90=%{_libdir}/mpi/gcc/$mpi/bin/mpif90
|
|
cd ..
|
|
done
|
|
|
|
%install
|
|
for mpi in %_mpi; do
|
|
cd $mpi
|
|
|
|
mkdir -p %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
|
|
mkdir -p %{buildroot}%{_libdir}/mpi/gcc/$mpi/bin
|
|
mkdir -p %{buildroot}%{_libdir}/mpi/gcc/$mpi/include
|
|
|
|
install -m644 src/include/*.h %{buildroot}%{_libdir}/mpi/gcc/$mpi/include
|
|
install -m755 examples/grid/dd-grid.ex %{buildroot}%{_libdir}/mpi/gcc/$mpi/bin
|
|
install -m755 examples/general/dd-HB-dse.ex %{buildroot}%{_libdir}/mpi/gcc/$mpi/bin
|
|
|
|
install -m 755 lib/libparms.so.%{version} %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
|
|
install -m 644 lib/libparms.a %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
|
|
pushd %{buildroot}%{_libdir}/mpi/gcc/$mpi/%_lib
|
|
ln -s libparms.so.%{version} libparms.so.3
|
|
ln -s libparms.so.%{version} libparms.so
|
|
popd
|
|
|
|
cd ..
|
|
done
|
|
|
|
# for examples
|
|
mv examples/general/README examples/general/README.general
|
|
mv examples/grid/README examples/grid/README.grid
|
|
chmod 644 examples/matrices/*
|
|
|
|
%if 0%{?_openmpi:1}
|
|
%post -n %{libname}%{major}-%{_openmpi} -p /sbin/ldconfig
|
|
%postun -n %{libname}%{major}-%{_openmpi} -p /sbin/ldconfig
|
|
%endif
|
|
|
|
%if 0%{?_mvapich2}
|
|
%post -n %{libname}%{major}-mvapich2 -p /sbin/ldconfig
|
|
%postun -n %{libname}%{major}-mvapich2 -p /sbin/ldconfig
|
|
%endif
|
|
|
|
%if 0%{?_openmpi:1}
|
|
%files -n %{libname}%{major}-%{_openmpi}
|
|
%license COPYRIGHT LGPL
|
|
%{_libdir}/mpi/gcc/%{_openmpi}/%_lib/*.so.*
|
|
|
|
%files %{_openmpi}-devel
|
|
%{_libdir}/mpi/gcc/%{_openmpi}/%_lib/*.so
|
|
%{_libdir}/mpi/gcc/%{_openmpi}/include/*.h
|
|
|
|
%files %{_openmpi}-devel-static
|
|
%{_libdir}/mpi/gcc/%{_openmpi}/%_lib/*.a
|
|
|
|
%files example-%{_openmpi}
|
|
%doc examples/matrices examples/general/README.general examples/grid/README.grid
|
|
%{_libdir}/mpi/gcc/%{_openmpi}/bin/*
|
|
%endif
|
|
|
|
%if 0%{?_mvapich2}
|
|
%files -n %{libname}%{major}-mvapich2
|
|
%license COPYRIGHT LGPL
|
|
%{_libdir}/mpi/gcc/mvapich2/%_lib/*.so.*
|
|
|
|
%files mvapich2-devel
|
|
%{_libdir}/mpi/gcc/mvapich2/%_lib/*.so
|
|
%{_libdir}/mpi/gcc/mvapich2/include/*.h
|
|
|
|
%files mvapich2-devel-static
|
|
%{_libdir}/mpi/gcc/mvapich2/%_lib/*.a
|
|
|
|
%files example-mvapich2
|
|
%doc examples/matrices examples/general/README.general examples/grid/README.grid
|
|
%{_libdir}/mpi/gcc/mvapich2/bin/*
|
|
%endif
|
|
|
|
%files doc
|
|
%doc docs/refmanual.pdf docs/ug.pdf README
|
|
|
|
%changelog
|