import mvapich2-2.3-5.el8

This commit is contained in:
CentOS Sources 2019-05-07 05:17:26 -04:00 committed by Andrew Lukoshko
commit 09bbcfa71c
7 changed files with 513 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/mvapich2-2.3.tar.gz

1
.mvapich2.metadata Normal file
View File

@ -0,0 +1 @@
03a4703431dd354a31edef97d018e3bf137c41e9 SOURCES/mvapich2-2.3.tar.gz

View File

@ -0,0 +1,30 @@
From c152d5a633876ff01ae69bd69d25c9ec08d0bbcb Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Fri, 3 Nov 2017 11:49:50 +0100
Subject: [PATCH 1/2] mvapich23: unbundle contrib/hwloc
---
Makefile.in | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 0d9ec512f5..ff3af667a4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -3029,10 +3029,10 @@ bin_PROGRAMS = $(am__EXEEXT_1) src/env/mpichversion$(EXEEXT) \
@BUILD_F77_BINDING_TRUE@@BUILD_PROFILING_LIB_TRUE@am__append_173 = -DMPICH_MPI_FROM_PMPI -DUSE_ONLY_MPI_NAMES
@BUILD_F77_BINDING_TRUE@@BUILD_FC_BINDING_TRUE@am__append_174 = $(mpi_fc_sources)
@BUILD_CXX_BINDING_TRUE@am__append_175 = lib/lib@MPICXXLIBNAME@.la
-@BUILD_OSU_MVAPICH_TRUE@am__append_176 = contrib/hwloc
+@BUILD_OSU_MVAPICH_TRUE@am__append_176 =
@BUILD_OSU_MVAPICH_TRUE@am__append_177 = src/env/mpiname src/util/mv2_ckpt_rebuild osu_benchmarks
-@BUILD_OSU_MVAPICH_TRUE@am__append_178 = -Icontrib/hwloc/include/ -I$(top_srcdir)/contrib/hwloc/include
-@BUILD_OSU_MVAPICH_TRUE@am__append_179 = contrib/hwloc/src/libhwloc_embedded.la
+@BUILD_OSU_MVAPICH_TRUE@am__append_178 =
+@BUILD_OSU_MVAPICH_TRUE@am__append_179 = -lhwloc
@BUILD_COVERAGE_TRUE@am__append_180 = coverage-clean
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--
2.13.6

View File

@ -0,0 +1,25 @@
From 3aad06949ee9edbb6376092c6891efa9a37b8f51 Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Fri, 3 Nov 2017 11:51:33 +0100
Subject: [PATCH 2/2] mvapich23: unbundle osu_benchmarks
---
Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.in b/Makefile.in
index ff3af667a4..21e2754b56 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -3030,7 +3030,7 @@ bin_PROGRAMS = $(am__EXEEXT_1) src/env/mpichversion$(EXEEXT) \
@BUILD_F77_BINDING_TRUE@@BUILD_FC_BINDING_TRUE@am__append_174 = $(mpi_fc_sources)
@BUILD_CXX_BINDING_TRUE@am__append_175 = lib/lib@MPICXXLIBNAME@.la
@BUILD_OSU_MVAPICH_TRUE@am__append_176 =
-@BUILD_OSU_MVAPICH_TRUE@am__append_177 = src/env/mpiname src/util/mv2_ckpt_rebuild osu_benchmarks
+@BUILD_OSU_MVAPICH_TRUE@am__append_177 = src/env/mpiname src/util/mv2_ckpt_rebuild
@BUILD_OSU_MVAPICH_TRUE@am__append_178 =
@BUILD_OSU_MVAPICH_TRUE@am__append_179 = -lhwloc
@BUILD_COVERAGE_TRUE@am__append_180 = coverage-clean
--
2.13.6

View File

@ -0,0 +1,6 @@
%_@MACRONAME@_load \
. /etc/profile.d/modules.sh; \
module load mpi/@MODULENAME@;
%_@MACRONAME@_unload \
. /etc/profile.d/modules.sh; \
module unload mpi/@MODULENAME@;

View File

@ -0,0 +1,22 @@
#%Module 1.0
#
# OpenMPI module for use with 'environment-modules' package:
#
conflict mpi
prepend-path PATH @LIBDIR@/bin
prepend-path LD_LIBRARY_PATH @LIBDIR@/lib
prepend-path PKG_CONFIG_PATH @LIBDIR@/lib/pkgconfig
prepend-path PYTHONPATH @PYSITEARCH@
prepend-path MANPATH @MANDIR@
setenv MPI_BIN @LIBDIR@/bin
setenv MPI_SYSCONFIG @ETCDIR@
setenv MPI_FORTRAN_MOD_DIR @FMODDIR@
setenv MPI_INCLUDE @INCDIR@
setenv MPI_LIB @LIBDIR@/lib
setenv MPI_MAN @MANDIR@
setenv MPI_PYTHON_SITEARCH @PYSITEARCH@
setenv MPI_PYTHON2_SITEARCH @PYSITEARCH@
setenv MPI_PYTHON3_SITEARCH @PYSITEARCH@
setenv MPI_COMPILER @COMPILER@
setenv MPI_SUFFIX @SUFFIX@
setenv MPI_HOME @LIBDIR@

428
SPECS/mvapich2.spec Normal file
View File

@ -0,0 +1,428 @@
# We only compile with gcc, but other people may want other compilers.
# Set the compiler here.
%define opt_cc gcc
# Optional CFLAGS to use with the specific compiler...gcc doesn't need any,
# so uncomment and define to use
#define opt_cflags
%define opt_cxx g++
#define opt_cxxflags
%define opt_f77 gfortran
#define opt_fflags
%define opt_fc gfortran
#define opt_fcflags
%{!?python3_sitearch: %global python3_sitearch %(%{__python3} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%define opt_cflags -O3 -fno-strict-aliasing
%define opt_cxxflags -O3
%ifarch i386
%define opt_cflags -m32 -O3 -fno-strict-aliasing
%define opt_cxxflags -m32 -O3
%define opt_fflags -m32
%define opt_fcflags -m32
%endif
%ifarch x86_64
%define opt_cflags -m64 -O3 -fno-strict-aliasing
%define opt_cxxflags -m64 -O3
%define opt_fflags -m64
%define opt_fcflags -m64
%endif
Name: mvapich2
Version: 2.3
Release: 5%{?dist}
Summary: OSU MVAPICH2 MPI package
Group: Development/Libraries
# Richard Fontana wrote in https://bugzilla.redhat.com/show_bug.cgi?id=1333114:
## The mvapich2 source code is predominantly 3-clause BSD with a smattering of
## 2-clause BSD, MIT and proto-MIT licensed source code. Under the license
## abbreviation system inherited from Fedora that set of licenses is adequately
## described as 'BSD and MIT'.
## There are a couple of source files that indicate they are taken from glibc
## with LGPL license notices, but context strongly suggests that the author of
## that particular code placed it under the MIT license (which is consistent
## with the approach to copyright assignment in glibc in which the author
## receives a broad grant-back license permitting sublicensing under terms
## other than LGPL).
License: BSD and MIT
URL: http://mvapich.cse.ohio-state.edu
Source: http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/%{name}-%{version}.tar.gz
Source1: mvapich2.module.in
Source2: mvapich2.macros.in
# We delete bundled stuff in the prep step. The *-unbundle-* patches adjust
# the configure scripts and Makefiles accordingly.
Patch1: 0001-mvapich23-unbundle-contrib-hwloc.patch
Patch2: 0002-mvapich23-unbundle-osu_benchmarks.patch
BuildRequires: gcc-gfortran
BuildRequires: libibumad-devel, libibverbs-devel >= 1.1.3, librdmacm-devel
BuildRequires: python3-devel, perl-Digest-MD5, hwloc-devel, libibmad-devel
BuildRequires: bison, flex
BuildRequires: autoconf, automake, libtool
BuildRequires: rpm-mpi-hooks
%ifarch x86_64
BuildRequires: libpsm2-devel >= 10.3.58
%endif
ExcludeArch: s390 s390x
Provides: mpi
Requires: environment-modules
%global common_desc MVAPICH2 is a Message Passing Interface (MPI 3.0) implementation based on MPICH\
and developed by Ohio State University.
%description
%{common_desc}
%package devel
Summary: Development files for %{name}
Group: Development/Libraries
Provides: mpi-devel
Requires: librdmacm-devel, libibverbs-devel, libibumad-devel
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran
%description devel
Contains development headers and libraries for %{name}.
%package doc
Summary: Documentation files for mvapich2
Group: Documentation
BuildArch: noarch
%description doc
Additional documentation for mvapich2.
%ifarch x86_64
%package psm2
Summary: OSU MVAPICH2 MPI package 2.3 for Omni-Path adapters
Group: Development/Libraries
Provides: mpi
Requires: environment-modules
%description psm2
%{common_desc}
This is a version of mvapich2 2.3 that uses the PSM2 transport for Omni-Path
adapters.
%package psm2-devel
Summary: Development files for %{name}-psm2
Group: Development/Libraries
Provides: mpi-devel
Requires: librdmacm-devel, libibverbs-devel, libibumad-devel
Requires: %{name}-psm2%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran
%description psm2-devel
Contains development headers and libraries for %{name}-psm2.
%endif
%prep
%setup -q
%patch1 -p1
%patch2 -p1
# bundled hwloc, knem kernel module
rm -r contrib/
# limic kernel module
rm -r limic2-0.5.6/
# bundled OSU benchmarks
rm -r osu_benchmarks/
# Remove rpath, part 1
find . -name configure -exec \
sed -i -r 's/(hardcode_into_libs)=.*$/\1=no/' '{}' ';'
mkdir .default
mv * .default
mv .default default
%ifarch x86_64
cp -pr default psm2
%endif
%build
%set_build_flags
export AR=ar
%ifarch x86_64
%global variant %{name}-psm2
%global libname %{variant}
%global namearch %{variant}-%{_arch}
cd psm2
./configure \
--prefix=%{_libdir}/%{libname} \
--exec-prefix=%{_libdir}/%{libname} \
--bindir=%{_libdir}/%{libname}/bin \
--sbindir=%{_libdir}/%{libname}/bin \
--libdir=%{_libdir}/%{libname}/lib \
--mandir=%{_mandir}/%{namearch} \
--includedir=%{_includedir}/%{namearch} \
--sysconfdir=%{_sysconfdir}/%{namearch} \
--datarootdir=%{_datadir}/%{libname} \
--docdir=%{_docdir}/%{name} \
--enable-error-checking=runtime \
--enable-timing=none \
--enable-g=mem,dbg,meminit \
--enable-fast=all \
--enable-shared \
--enable-static \
--enable-fortran=all \
--enable-cxx \
--disable-silent-rules \
--disable-wrapper-rpath \
--with-hwloc-prefix=system \
--with-device=ch3:psm \
--with-ftb=no \
--with-blcr=no \
--with-fuse=no \
CC=%{opt_cc} CFLAGS="%{?opt_cflags} %{build_cflags} $XFLAGS" \
CXX=%{opt_cxx} CXXFLAGS="%{?opt_cxxflags} %{build_cflags} $XFLAGS" \
FC=%{opt_fc} FCFLAGS="%{?opt_fcflags} %{build_cflags} $XFLAGS" \
F77=%{opt_f77} FFLAGS="%{?opt_fflags} %{build_cflags} $XFLAGS" \
LDFLAGS="%{build_ldflags}"
# Remove rpath, part 2
find . -name libtool -exec \
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g;
s|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' '{}' ';'
make %{?_smp_mflags}
cd ..
%endif
%global variant %{name}
%global libname %{variant}
%global namearch %{variant}-%{_arch}
cd default
./configure \
--prefix=%{_libdir}/%{libname} \
--exec-prefix=%{_libdir}/%{libname} \
--bindir=%{_libdir}/%{libname}/bin \
--sbindir=%{_libdir}/%{libname}/bin \
--libdir=%{_libdir}/%{libname}/lib \
--mandir=%{_mandir}/%{namearch} \
--includedir=%{_includedir}/%{namearch} \
--sysconfdir=%{_sysconfdir}/%{namearch} \
--datarootdir=%{_datadir}/%{libname} \
--docdir=%{_docdir}/%{name} \
--enable-error-checking=runtime \
--enable-timing=none \
--enable-g=mem,dbg,meminit \
--enable-fast=all \
--enable-shared \
--enable-static \
--enable-fortran=all \
--enable-cxx \
--disable-silent-rules \
--disable-wrapper-rpath \
--with-hwloc-prefix=system \
--with-ftb=no \
--with-blcr=no \
--with-fuse=no \
CC=%{opt_cc} CFLAGS="%{?opt_cflags} %{build_cflags} $XFLAGS" \
CXX=%{opt_cxx} CXXFLAGS="%{?opt_cxxflags} %{build_cflags} $XFLAGS" \
FC=%{opt_fc} FCFLAGS="%{?opt_fcflags} %{build_cflags} $XFLAGS" \
F77=%{opt_f77} FFLAGS="%{?opt_fflags} %{build_cflags} $XFLAGS" \
LDFLAGS="%{build_ldflags}"
# Remove rpath, part 2
find . -name libtool -exec \
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g;
s|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' '{}' ';'
make %{?_smp_mflags}
cd ..
%install
finish_install() {
local VARIANT="$1"
local LIBNAME="$VARIANT"
local NAMEARCH="$VARIANT-%{_arch}"
local MODULE_TEMPLATE="$2"
local MACROS_TEMPLATE="$3"
local FORTRAN_SUBDIR_SUFFIX="$4"
find %{buildroot}%{_libdir}/$LIBNAME/lib -name \*.la -delete
mkdir -p %{buildroot}%{_mandir}/$NAMEARCH/man{2,4,5,6,7,8,9,n}
mkdir -p %{buildroot}/%{_fmoddir}/$LIBNAME$FORTRAN_SUBDIR_SUFFIX
mkdir -p %{buildroot}/%{python3_sitearch}/$LIBNAME
# Make the environment-modules file
mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi
sed "s#@LIBDIR@#%{_libdir}/$LIBNAME#g;
s#@ETCDIR@#%{_sysconfdir}/$NAMEARCH#g;
s#@FMODDIR@#%{_fmoddir}/$LIBNAME$FORTRAN_SUBDIR_SUFFIX#g;
s#@INCDIR@#%{_includedir}/$NAMEARCH#g;
s#@MANDIR@#%{_mandir}/$NAMEARCH#g;
s#@PYSITEARCH@#%{python3_sitearch}/$LIBNAME#g;
s#@COMPILER@#$NAMEARCH#g;
s#@SUFFIX@#_$VARIANT#g" \
< $MODULE_TEMPLATE \
> %{buildroot}%{_sysconfdir}/modulefiles/mpi/$NAMEARCH
# make the rpm config file
mkdir -p %{buildroot}%{_sysconfdir}/rpm
# do not expand _arch
sed "s#@MACRONAME@#${LIBNAME//[-.]/_}#g;
s#@MODULENAME@#$NAMEARCH#" \
< $MACROS_TEMPLATE \
> %{buildroot}/%{_sysconfdir}/rpm/macros.$NAMEARCH
}
# 'make install' fails to mkdir docdir by itself before installing index.html
mkdir -p %{buildroot}%{_docdir}/%{name}
%ifarch x86_64
cd psm2
%make_install
finish_install %{name}-psm2 %SOURCE1 %SOURCE2 ""
cd ..
%endif
cd default
%make_install
finish_install %{name} %SOURCE1 %SOURCE2 ""
cd ..
%global variant %{name}
%global libname %{variant}
%global namearch %{variant}-%{_arch}
%files
%dir %{_libdir}/%{libname}
%dir %{_libdir}/%{libname}/bin
%dir %{_libdir}/%{libname}/lib
%dir %{_mandir}/%{namearch}
%dir %{_mandir}/%{namearch}/man*
%dir %{_fmoddir}/%{libname}
%dir %{python3_sitearch}/%{libname}
%{_libdir}/%{libname}/bin/hydra_nameserver
%{_libdir}/%{libname}/bin/hydra_persist
%{_libdir}/%{libname}/bin/hydra_pmi_proxy
%{_libdir}/%{libname}/bin/mpichversion
%{_libdir}/%{libname}/bin/mpiexec
%{_libdir}/%{libname}/bin/mpiexec.hydra
%{_libdir}/%{libname}/bin/mpiexec.mpirun_rsh
%{_libdir}/%{libname}/bin/mpiname
%{_libdir}/%{libname}/bin/mpirun
%{_libdir}/%{libname}/bin/mpirun_rsh
%{_libdir}/%{libname}/bin/mpispawn
%{_libdir}/%{libname}/bin/mpivars
%{_libdir}/%{libname}/bin/parkill
%{_libdir}/%{libname}/lib/*.so.*
%{_mandir}/%{namearch}/man1/hydra_*
%{_mandir}/%{namearch}/man1/mpiexec.*
%{_sysconfdir}/modulefiles/mpi/%{namearch}
%files devel
%dir %{_includedir}/%{namearch}
%{_sysconfdir}/rpm/macros.%{namearch}
%{_includedir}/%{namearch}/*
%{_libdir}/%{libname}/bin/mpic++
%{_libdir}/%{libname}/bin/mpicc
%{_libdir}/%{libname}/bin/mpicxx
%{_libdir}/%{libname}/bin/mpif77
%{_libdir}/%{libname}/bin/mpif90
%{_libdir}/%{libname}/bin/mpifort
%{_libdir}/%{libname}/lib/pkgconfig
%{_libdir}/%{libname}/lib/*.a
%{_libdir}/%{libname}/lib/*.so
%{_mandir}/%{namearch}/man1/mpi[cf]*
%{_mandir}/%{namearch}/man3/*
%files doc
%{_docdir}/%{name}
%ifarch x86_64
%global variant %{name}-psm2
%global libname %{variant}
%global namearch %{variant}-%{_arch}
%files psm2
%dir %{_libdir}/%{libname}
%dir %{_libdir}/%{libname}/bin
%dir %{_libdir}/%{libname}/lib
%dir %{_mandir}/%{namearch}
%dir %{_mandir}/%{namearch}/man*
%dir %{_fmoddir}/%{libname}
%dir %{python3_sitearch}/%{libname}
%{_libdir}/%{libname}/bin/hydra_nameserver
%{_libdir}/%{libname}/bin/hydra_persist
%{_libdir}/%{libname}/bin/hydra_pmi_proxy
%{_libdir}/%{libname}/bin/mpichversion
%{_libdir}/%{libname}/bin/mpiexec
%{_libdir}/%{libname}/bin/mpiexec.hydra
%{_libdir}/%{libname}/bin/mpiexec.mpirun_rsh
%{_libdir}/%{libname}/bin/mpiname
%{_libdir}/%{libname}/bin/mpirun
%{_libdir}/%{libname}/bin/mpirun_rsh
%{_libdir}/%{libname}/bin/mpispawn
%{_libdir}/%{libname}/bin/mpivars
%{_libdir}/%{libname}/bin/parkill
%{_libdir}/%{libname}/lib/*.so.*
%{_mandir}/%{namearch}/man1/hydra_*
%{_mandir}/%{namearch}/man1/mpiexec.*
%{_sysconfdir}/modulefiles/mpi/%{namearch}
%files psm2-devel
%dir %{_includedir}/%{namearch}
%{_sysconfdir}/rpm/macros.%{namearch}
%{_includedir}/%{namearch}/*
%{_libdir}/%{libname}/bin/mpic++
%{_libdir}/%{libname}/bin/mpicc
%{_libdir}/%{libname}/bin/mpicxx
%{_libdir}/%{libname}/bin/mpif77
%{_libdir}/%{libname}/bin/mpif90
%{_libdir}/%{libname}/bin/mpifort
%{_libdir}/%{libname}/lib/pkgconfig
%{_libdir}/%{libname}/lib/*.a
%{_libdir}/%{libname}/lib/*.so
%{_mandir}/%{namearch}/man1/mpi[cf]*
%{_mandir}/%{namearch}/man3/*
%endif
%changelog
* Thu Nov 08 2018 Jarod Wilson <jarod@redhat.com> 2.3-5
- Add missing Provides: mpi and Requires: environment-modules to base mvapich2 package
- Resolves: rhbz#1647177
* Tue Sep 25 2018 Jarod Wilson <jarod@redhat.com> 2.3-4
- Clean up build/linker commands to better propagate distro-wide flags
- Explicitly disable ftb, blcr and fuse to prevent rpath flag creep
- Related: rhbz#1624147
* Fri Sep 14 2018 Jarod Wilson <jarod@redhat.com> 2.3-3
- Add missing BR on rpm-mpi-hooks
- Related: rhbz#1628630
* Thu Sep 13 2018 Jarod Wilson <jarod@redhat.com> 2.3-2
- Actually set MPI_PYTHON3_SITEARCH in modules file to fix deps
- Resolves: rhbz#1628630
* Mon Aug 13 2018 Jarod Wilson <jarod@redhat.com> 2.3-1
- Update to upstream v2.3 release
- Initial build for RHEL-8, featuring v2.3 only
- Resolves: #1483744
* Wed Jun 13 2018 Jarod Wilson <jarod@redhat.com> - 2.2-1.4
- Update mvapich23 (TrueScale) bits to 2.3rc2
* Thu Jan 18 2018 Michal Schmidt <mschmidt@redhat.com> - 2.2-1.3
- Rebuild in buildroot with updated RDMA stack.
* Wed Jan 17 2018 Michal Schmidt <mschmidt@redhat.com> - 2.2-1.2
- Add a 2.3b build variant for TrueScale: mvapich23-psm.
* Fri Nov 3 2017 Michal Schmidt <mschmidt@redhat.com> - 2.2-1.1
- Add mvapich2 2.3b as mvapich23 and mvapich23-psm2.
* Mon Mar 27 2017 Michal Schmidt <mschmidt@redhat.com> - 2.2-1
- Update to 2.2 GA.