%global prerel rc1 Summary: MPI implementation for InfiniBand, iWARP and RoCE Name: mvapich2 Version: 2.2 Release: 0.1.%{prerel}%{?dist} # 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}%{?prerel}.tar.gz Source1: mvapich2.module.in Source2: macros.mvapich2 Source3: mvapich2.pth.py2 Source4: mvapich2.pth.py3 # A similar patch was proposed to upstream # http://mailman.cse.ohio-state.edu/pipermail/mvapich-discuss/2015-December/005871.html Patch0: aarch64-add-get_cycles.patch # We delete bundled stuff in the prep step. The *-unbundle-* patches adjust # the configure scripts and Makefiles accordingly. Patch1: 0001-unbundle-contrib-hwloc.patch Patch2: 0002-unbundle-YAML-Tiny.patch Patch3: 0003-unbundle-OSU-benchmarks.patch Patch4: 0004-unbundle-hwloc-from-hydra.patch BuildRequires: gcc, gcc-c++, gcc-gfortran BuildRequires: libibumad-devel, libibverbs-devel, librdmacm-devel BuildRequires: hwloc-devel, libibmad-devel # TODO: add PSM, PSM2 and OFI builds (subpackages?) # BuildRequires: infinipath-psm-devel, libpsm2-devel, libfabric-devel BuildRequires: perl-Digest-MD5, perl-YAML-Tiny BuildRequires: python, python2-devel, python3-devel BuildRequires: rpm-mpi-hooks BuildRequires: valgrind-devel BuildRequires: bison, flex BuildRequires: autoconf, automake, libtool BuildRequires: environment(modules) Requires: environment(modules) Provides: mpi # Only archs with get_cycles() implemented in mv2_clock.h ExclusiveArch: %{ix86} x86_64 ppc %{power64} ia64 aarch64 %description MVAPICH2 is a Message Passing Interface (MPI 3.0) implementation based on MPICH and developed by Ohio State University. It supports InfiniBand, iWARP, RoCE. %package doc Summary: Documentation files for mvapich2 BuildArch: noarch %description doc Additional documentation for mvapich2. %package devel Summary: Development files for mvapich2 Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gcc-gfortran Requires: rpm-mpi-hooks Provides: mpi-devel %description devel Compiler wrappers, development headers and libraries for mvapich2. # We only compile with gcc, but other people may want other compilers. # Set the compiler here. %{!?opt_cc: %global opt_cc gcc} %{!?opt_cxx: %global opt_cxx g++} %{!?opt_fc: %global opt_fc gfortran} %{!?opt_f77: %global opt_f77 gfortran} # Optional CFLAGS to use with the specific compiler...gcc doesn't need any, # so uncomment and undefine to NOT use %{!?opt_cflags: %global opt_cflags %{optflags}} %{!?opt_cxxflags: %global opt_cxxflags %{optflags}} %{!?opt_fcflags: %global opt_fcflags %{optflags}} %{!?opt_fflags: %global opt_fflags %{optflags}} %global namearch %{name}-%{_arch} %prep %autosetup -p1 -n %{name}-%{version}%{?prerel} ## bundled hwloc, knem kernel module rm -r contrib/ ## limic kernel module rm -r limic2-0.5.6/ ## bundled YAML::Tiny rm -r maint/local_perl/ ## bundled OSU benchmarks rm -r osu_benchmarks/ ## another bundled hwloc rm -r src/pm/hydra/tools/topo/hwloc/hwloc/ %build ./autogen.sh # Remove rpath, part 1 find . -name configure -exec \ sed -i -r 's/(hardcode_into_libs)=.*$/\1=no/' '{}' ';' ./configure \ --prefix=%{_libdir}/%{name} \ --sbindir=%{_libdir}/%{name}/bin \ --mandir=%{_mandir}/%{namearch} \ --includedir=%{_includedir}/%{namearch} \ --sysconfdir=%{_sysconfdir}/%{namearch} \ --datarootdir=%{_datadir}/%{name} \ --docdir=%{_datadir}/doc/%{name} \ --enable-error-checking=runtime \ --enable-timing=none \ --enable-g=mem,dbg,meminit \ --enable-shared \ --enable-wrapper-rpath=no \ --enable-static=no \ --disable-silent-rules \ --with-hwloc-prefix=system \ CC=%{opt_cc} MPICHLIB_CFLAGS="%{?opt_cflags}" \ CXX=%{opt_cxx} MPICHLIB_CXXFLAGS="%{?opt_cxxflags}" \ FC=%{opt_fc} MPICHLIB_FCFLAGS="%{?opt_fcflags}" \ F77=%{opt_f77} MPICHLIB_FFLAGS="%{?opt_fflags}" # 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' '{}' ';' export AR=ar make %{?_smp_mflags} %install %make_install mkdir %{buildroot}%{_mandir}/%{namearch}/man{2,4,5,6,7,8,9,n} # Make the environment-modules file mkdir -p %{buildroot}%{_modulesdir}/mpi sed 's#@LIBDIR@#%{_libdir}/%{name}#g; s#@ETCDIR@#%{_sysconfdir}/%{namearch}#g; s#@FMODDIR@#%{_fmoddir}/%{name}#g; s#@INCDIR@#%{_includedir}/%{namearch}#g; s#@MANDIR@#%{_mandir}/%{namearch}#g; s#@PY2SITEARCH@#%{python2_sitearch}/%{name}#g; s#@PY3SITEARCH@#%{python3_sitearch}/%{name}#g; s#@COMPILER@#%{namearch}#g; s#@SUFFIX@#_%{name}#g' \ < %SOURCE1 \ > %{buildroot}%{_modulesdir}/mpi/%{namearch} # make the rpm config file mkdir -p %{buildroot}%{_prefix}/lib/rpm/macros.d cp %SOURCE2 %{buildroot}%{_prefix}/lib/rpm/macros.d/macros.%{namearch} mkdir -p %{buildroot}%{_fmoddir}/%{name} mkdir -p %{buildroot}%{_sysconfdir}/%{namearch} rm -f %{buildroot}%{_libdir}/%{name}*/lib/*.la rm -rf %{buildroot}%{_libdir}/%{name}*/lib/trace_rlog # install .pth files mkdir -p %{buildroot}/%{python2_sitearch}/%{name} install -pDm0644 %{SOURCE3} %{buildroot}/%{python2_sitearch}/%{name}.pth mkdir -p %{buildroot}/%{python3_sitearch}/%{name} install -pDm0644 %{SOURCE4} %{buildroot}/%{python3_sitearch}/%{name}.pth %files %license COPYRIGHT %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/bin %dir %{_libdir}/%{name}/lib %dir %{_mandir}/%{namearch} %dir %{_mandir}/%{namearch}/man* %dir %{_fmoddir}/%{name} %dir %{python2_sitearch}/%{name} %{python2_sitearch}/%{name}.pth %dir %{python3_sitearch}/%{name} %{python3_sitearch}/%{name}.pth %dir %{_sysconfdir}/%{namearch} %{_libdir}/%{name}/bin/hydra_nameserver %{_libdir}/%{name}/bin/hydra_persist %{_libdir}/%{name}/bin/hydra_pmi_proxy %{_libdir}/%{name}/bin/mpichversion %{_libdir}/%{name}/bin/mpiexec %{_libdir}/%{name}/bin/mpiexec.hydra %{_libdir}/%{name}/bin/mpiexec.mpirun_rsh %{_libdir}/%{name}/bin/mpiname %{_libdir}/%{name}/bin/mpirun %{_libdir}/%{name}/bin/mpirun_rsh %{_libdir}/%{name}/bin/mpispawn %{_libdir}/%{name}/bin/mpivars %{_libdir}/%{name}/bin/parkill %{_libdir}/%{name}/lib/*.so.* %{_mandir}/%{namearch}/man1/* %{_modulesdir}/mpi/%{namearch} %files devel %{_prefix}/lib/rpm/macros.d/macros.%{namearch} %{_includedir}/%{namearch} %{_mandir}/%{namearch}/man3/* %{_libdir}/%{name}/bin/mpic++ %{_libdir}/%{name}/bin/mpicc %{_libdir}/%{name}/bin/mpicxx %{_libdir}/%{name}/bin/mpif77 %{_libdir}/%{name}/bin/mpif90 %{_libdir}/%{name}/bin/mpifort %{_libdir}/%{name}/lib/pkgconfig %{_libdir}/%{name}/lib/*.so %files doc %license COPYRIGHT %{_datadir}/doc/%{name} %changelog * Fri May 20 2016 Michal Schmidt - 2.2-0.1.rc1 - Update to upstream release 2.2rc1. - Cleanup and simplification in preparation for Fedora package review. * Tue May 20 2014 Kyle McMartin - 2.0a-3 - aarch64: add get_cycles implementation since is not an exported header. - Resolves: #1100046 * Fri Dec 27 2013 Daniel Mach - 2.0a-2 - Mass rebuild 2013-12-27 * Mon Sep 16 2013 Jay Fenlason 2.0a-1 - Add Build Requires on autoconf, automake, libtool, perl-Digest-MD5, hwloc-devel, and libibmad-devel. - remove build requires on java - New upstream version, edited so it can pass a license audit. Resolves: rhbz1001718 * Mon Aug 19 2013 Jay Fenlason 1.8-3 - Move the module files to the (correct for RHEL-7) mpi/ directory. - Add MANPATH to the module files. * Wed May 30 2012 Jay Fenlason 1.8-2 - Add BuildRequires on flex and bison - Add "export AR=ar" to allow builds on RHEL-7 to work. Resolves: rhbz822527 * Tue Feb 14 2012 Jay Fenlason 1.8-1 - New upstream version, with man pages again. This fixes the following bugs: Related: rhbz739138 Resolves: rhbz613696 Resolves: rhbz625620 Resolves: rhbz735954 Resolves: rhbz782263 * Fri Aug 19 2011 Jay Fenlason 1.6-3.el6 - Change the requires on mvapich2-psm-devel to mvapich2-psm from mvapich2 so that mpitests will build - clean up the build to not use .{non-}psm directories. Related: rhbz725016 * Wed Aug 17 2011 Jay Fenlason 1.6-2.el6 - Fix the psm RPM macros so that we can build a -psm variant of mpitests - remove the osu-micro-benchmarks, which are being installed with a bogus rpath, and which are included in mpitests Related: rhbz725016 * Mon Aug 15 2011 Jay Fenlason 1.6-1.el6 - New upstream release, with different build process, and without man pages, because we don't have the sowing package, and its licensing status is unclear (no licence description of any kind in the tarball). Related: rhbz725016 * Mon Jun 7 2010 Jay Fenlason 1.4-5.el6 - Forgot the BuildRequires Related: rhbz570274 * Mon Jun 7 2010 Jay Fenlason - Add support for -psm subpackages on x86_64. Related: rhbz570274 * Tue Mar 2 2010 Jay Fenlason 1.4-4.el6 - Move -devel requires to the -devel subpackage. Resolves: bz568450 - Add defattr as required by packaging guidelines Related: bz555835 * Fri Jan 15 2010 Doug Ledford - 1.4-3.el6 - Fix an issue with usage of _cc_name_suffix that caused a broken define in our module file Related: bz543948 * Fri Jan 15 2010 Jay Fenlason 1.4-2.el6 - Add BuildRequires: python - Add BuildRequires: java - Remove the pkgconfig file entirely Related: bz543948 * Thu Jan 14 2010 Jay Fenlason - Add Group: to -devel - Split into subpackages as required by packaging guidelines - cleanup BuildRequires - attempt to build on ppc - cleanup spec file - cleanup mvapich2.pc, still not correct, but closer Related: bz543948 * Thu Jan 14 2010 Jay Fenlason - New EnvironmentModules version for RHEL-6 Related: bz543948 * Tue Dec 22 2009 Doug Ledford - 1.4-1.el5 - Update to latest upstream version - Related: bz518218 * Mon Jun 22 2009 Doug Ledford - 1.2-0.p1.3.el5 - Rebuild against libibverbs that isn't missing the proper ppc wmb() macro - Related: bz506258 * Sun Jun 21 2009 Doug Ledford - 1.2-0.p1.2.el5 - Compile against non-XRC libibverbs - Related: bz506258 * Wed Apr 22 2009 Doug Ledford - 1.2-0.p1.1 - Update to ofed 1.4.1-rc3 version - Related: bz459652 * Thu Oct 16 2008 Doug Ledford - 1.0.3-3 - Make sure MPD_BIN is set in the mpivars files - Related: bz466390 * Fri Oct 03 2008 Doug Ledford - 1.0.3-2 - Make scriptlets match mvapich - Include a Requires(post) and Requires(preun) so installs work properly - Resolves: bz465448 * Thu Sep 18 2008 Doug Ledford - 1.0.3-1 - Initial rhel5 package - Resolves: bz451477 * Sun May 04 2008 Jonathan Perkins - Created initial MVAPICH2 1.0.3 SRPM with IB and iWARP support.