355 lines
11 KiB
RPMSpec
355 lines
11 KiB
RPMSpec
%global _hardened_build 1
|
|
# We only compile with gcc, but other people may want other compilers.
|
|
# Set the compiler here.
|
|
%global opt_cc gcc
|
|
# Optional CFLAGS to use with the specific compiler...gcc doesn't need any,
|
|
# so uncomment and define to use
|
|
#global opt_cflags
|
|
%global opt_cxx g++
|
|
#global opt_cxxflags
|
|
%global opt_f77 gfortran
|
|
#global opt_fflags
|
|
%global opt_fc gfortran
|
|
#global opt_fcflags
|
|
|
|
|
|
# Optional name suffix to use...we leave it off when compiling with gcc, but
|
|
# for other compiled versions to install side by side, it will need a
|
|
# suffix in order to keep the names from conflicting.
|
|
#global _cc_name_suffix -gcc
|
|
|
|
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
|
|
|
Name: openmpi%{?_cc_name_suffix}
|
|
Version: 4.0.1
|
|
Release: 1%{?dist}
|
|
Summary: Open Message Passing Interface
|
|
Group: Development/Libraries
|
|
License: BSD and MIT and Romio
|
|
URL: http://www.open-mpi.org/
|
|
|
|
# We can't use %%{name} here because of _cc_name_suffix
|
|
Source0: https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-%{version}.tar.bz2
|
|
Source1: openmpi.module.in
|
|
Source2: openmpi.pth.py3
|
|
Source3: macros.openmpi
|
|
|
|
BuildRequires: gcc-gfortran, gcc-c++
|
|
%ifnarch s390 s390x
|
|
BuildRequires: valgrind-devel
|
|
%endif
|
|
%ifnarch s390 s390x %{arm}
|
|
BuildRequires: libibverbs-devel >= 1.1.3, opensm-devel >= 3.3.21
|
|
BuildRequires: librdmacm-devel rdma-core-devel
|
|
%endif
|
|
# Doesn't compile:
|
|
# vt_dyn.cc:958:28: error: 'class BPatch_basicBlockLoop' has no member named 'getLoopHead'
|
|
# loop->getLoopHead()->getStartAddress(), loop_stmts );
|
|
#BuildRequires: dyninst-devel
|
|
BuildRequires: hwloc-devel
|
|
# So configure can find lstopo
|
|
BuildRequires: hwloc-gui
|
|
BuildRequires: java-devel
|
|
%ifnarch s390 s390x
|
|
BuildRequires: libfabric-devel
|
|
BuildRequires: papi-devel
|
|
%endif
|
|
BuildRequires: perl-generators
|
|
BuildRequires: perl(Getopt::Long)
|
|
BuildRequires: pmix-devel
|
|
%ifarch x86_64
|
|
BuildRequires: libpsm2-devel
|
|
%endif
|
|
BuildRequires: torque-devel
|
|
BuildRequires: zlib-devel
|
|
BuildRequires: rpm-mpi-hooks
|
|
BuildRequires: libevent-devel >= 2.0.22
|
|
|
|
Provides: mpi
|
|
Requires: environment(modules)
|
|
# openmpi currently requires ssh to run
|
|
# https://svn.open-mpi.org/trac/ompi/ticket/4228
|
|
Requires: openssh-clients
|
|
Requires: libevent >= 2.0.22
|
|
|
|
# Private openmpi libraries
|
|
%global __provides_exclude_from %{_libdir}/openmpi/lib/(lib(mca|ompi|open-(pal|rte|trace))|openmpi/).*.so
|
|
%global __requires_exclude lib(mca|ompi|open-(pal|rte|trace)|vt).*
|
|
|
|
%description
|
|
Open MPI is an open source, freely available implementation of both the
|
|
MPI-1 and MPI-2 standards, combining technologies and resources from
|
|
several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in
|
|
order to build the best MPI library available. A completely new MPI-2
|
|
compliant implementation, Open MPI offers advantages for system and
|
|
software vendors, application developers, and computer science
|
|
researchers. For more information, see http://www.open-mpi.org/ .
|
|
|
|
%package devel
|
|
Summary: Development files for openmpi
|
|
Group: Development/Libraries
|
|
Requires: %{name} = %{version}-%{release}, gcc-gfortran
|
|
Provides: mpi-devel
|
|
Requires: rpm-mpi-hooks
|
|
|
|
%description devel
|
|
Contains development headers and libraries for openmpi.
|
|
|
|
%package java
|
|
Summary: Java library
|
|
Group: Development/Libraries
|
|
Requires: %{name} = %{version}-%{release}
|
|
Requires: java-headless
|
|
|
|
%description java
|
|
OpenMPI Java library.
|
|
|
|
%package java-devel
|
|
Summary: Java development files for openmpi
|
|
Group: Development/Libraries
|
|
Requires: %{name}-java = %{version}-%{release}
|
|
Requires: java-devel
|
|
|
|
%description java-devel
|
|
Contains development wrapper for compiling Java with openmpi.
|
|
|
|
# We set this to for convenience, since this is the unique dir we use for this
|
|
# particular package, version, compiler
|
|
%global namearch openmpi-%{_arch}%{?_cc_name_suffix}
|
|
|
|
%package -n python3-openmpi
|
|
Summary: OpenMPI support for Python 3
|
|
Group: Development/Libraries
|
|
BuildRequires: python3-devel
|
|
Requires: %{name} = %{version}-%{release}
|
|
Provides: python-openmpi
|
|
|
|
%description -n python3-openmpi
|
|
OpenMPI support for Python 3.
|
|
|
|
|
|
%prep
|
|
%setup -q -n openmpi-%{version}
|
|
|
|
%build
|
|
%set_build_flags
|
|
./configure --prefix=%{_libdir}/%{name} \
|
|
--mandir=%{_mandir}/%{namearch} \
|
|
--includedir=%{_includedir}/%{namearch} \
|
|
--sysconfdir=%{_sysconfdir}/%{namearch} \
|
|
--disable-silent-rules \
|
|
--enable-builtin-atomics \
|
|
--enable-mpi-thread-multiple \
|
|
%ifnarch %{power64}
|
|
--enable-mpi-cxx \
|
|
%endif
|
|
--enable-mpi-java \
|
|
--enable-mpi-fortran=all \
|
|
--enable-cxx-exceptions \
|
|
--with-sge \
|
|
%ifnarch s390 s390x
|
|
--with-valgrind \
|
|
--enable-memchecker \
|
|
%endif
|
|
--with-hwloc=external \
|
|
--with-pmix=external \
|
|
--with-libevent=external \
|
|
CC=%{opt_cc} CXX=%{opt_cxx} FC=%{opt_fc} \
|
|
LDFLAGS="%{build_ldflags}" \
|
|
CFLAGS="%{?opt_cflags}%{!?opt_cflags:$RPM_OPT_FLAGS}" \
|
|
CXXFLAGS="%{?opt_cxxflags}%{!?opt_cxxflags:$RPM_OPT_FLAGS}" \
|
|
FCFLAGS="%{?opt_fcflags}%{!?opt_fcflags:$RPM_OPT_FLAGS}" \
|
|
--with-contrib-vt-flags='CXXFLAGS="-I%{_includedir}/dyninst -L%{_libdir}/dyninst"'
|
|
|
|
make %{?_smp_mflags} V=1
|
|
|
|
%install
|
|
make install DESTDIR=%{buildroot}
|
|
find %{buildroot}%{_libdir}/%{name}/lib -name \*.la | xargs rm
|
|
find %{buildroot}%{_mandir}/%{namearch} -type f | xargs gzip -9
|
|
ln -s mpicc.1.gz %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1.gz
|
|
# Remove dangling symlink
|
|
rm %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1
|
|
mkdir %{buildroot}%{_mandir}/%{namearch}/man{2,4,5,6,8,9,n}
|
|
|
|
# Make the environment-modules file
|
|
mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi
|
|
# Since we're doing our own substitution here, use our own definitions.
|
|
sed 's#@LIBDIR@#%{_libdir}/%{name}#;
|
|
s#@ETCDIR@#%{_sysconfdir}/%{namearch}#;
|
|
s#@FMODDIR@#%{_fmoddir}/%{name}#;
|
|
s#@INCDIR@#%{_includedir}/%{namearch}#;
|
|
s#@MANDIR@#%{_mandir}/%{namearch}#;
|
|
s#@PYSITEARCH@#%{python3_sitearch}/%{name}#;
|
|
s#@COMPILER@#openmpi-%{_arch}%{?_cc_name_suffix}#;
|
|
s#@SUFFIX@#%{?_cc_name_suffix}_openmpi#' \
|
|
<%{SOURCE1} \
|
|
>%{buildroot}%{_sysconfdir}/modulefiles/mpi/%{namearch}
|
|
|
|
# make the rpm config file
|
|
install -Dpm 644 %{SOURCE3} %{buildroot}/%{macrosdir}/macros.%{namearch}
|
|
|
|
# Link the fortran module to proper location
|
|
mkdir -p %{buildroot}%{_fmoddir}/%{name}
|
|
for mod in %{buildroot}%{_libdir}/%{name}/lib/*.mod
|
|
do
|
|
modname=$(basename $mod)
|
|
ln -s ../../../%{name}/lib/${modname} %{buildroot}/%{_fmoddir}/%{name}/
|
|
done
|
|
|
|
# Link the pkgconfig files into the main namespace as well
|
|
mkdir -p %{buildroot}%{_libdir}/pkgconfig
|
|
cd %{buildroot}%{_libdir}/pkgconfig
|
|
ln -s ../%{name}/lib/pkgconfig/*.pc .
|
|
cd -
|
|
|
|
# Remove extraneous wrapper link libraries (bug 814798)
|
|
sed -i -e s/-ldl// -e s/-lhwloc// \
|
|
%{buildroot}%{_libdir}/%{name}/share/openmpi/*-wrapper-data.txt
|
|
|
|
# install .pth files
|
|
mkdir -p %{buildroot}/%{python3_sitearch}/%{name}
|
|
install -pDm0644 %{SOURCE2} %{buildroot}/%{python3_sitearch}/openmpi.pth
|
|
|
|
%check
|
|
make check
|
|
|
|
%files
|
|
%license LICENSE
|
|
%dir %{_libdir}/%{name}
|
|
%dir %{_sysconfdir}/%{namearch}
|
|
%dir %{_libdir}/%{name}/bin
|
|
%dir %{_libdir}/%{name}/lib
|
|
%dir %{_libdir}/%{name}/lib/openmpi
|
|
%dir %{_mandir}/%{namearch}
|
|
%dir %{_mandir}/%{namearch}/man*
|
|
%config(noreplace) %{_sysconfdir}/%{namearch}/*
|
|
%{_libdir}/%{name}/bin/*.pl
|
|
%{_libdir}/%{name}/bin/mpi[er]*
|
|
%{_libdir}/%{name}/bin/ompi*
|
|
%{_libdir}/%{name}/bin/orte[-dr_]*
|
|
%{_libdir}/%{name}/lib/*.so.*
|
|
%{_mandir}/%{namearch}/man1/*
|
|
%{_mandir}/%{namearch}/man7/*
|
|
%{_libdir}/%{name}/lib/openmpi/*
|
|
%{_sysconfdir}/modulefiles/mpi/
|
|
%dir %{_libdir}/%{name}/share
|
|
%dir %{_libdir}/%{name}/share/openmpi
|
|
%{_libdir}/%{name}/share/openmpi/amca-param-sets
|
|
%{_libdir}/%{name}/share/openmpi/help*.txt
|
|
%ifnarch s390 %{arm}
|
|
%{_libdir}/%{name}/share/openmpi/mca-btl-openib-device-params.ini
|
|
%endif
|
|
|
|
|
|
%files devel
|
|
%dir %{_includedir}/%{namearch}
|
|
%{_libdir}/%{name}/bin/mpi[cCf]*
|
|
%{_libdir}/%{name}/bin/opal_*
|
|
%{_libdir}/%{name}/bin/orte[cCf]*
|
|
%{_includedir}/%{namearch}/*
|
|
%{_fmoddir}/%{name}/
|
|
%{_libdir}/%{name}/lib/*.so
|
|
%{_libdir}/%{name}/lib/*.mod
|
|
%{_libdir}/%{name}/lib/pkgconfig/
|
|
%{_libdir}/pkgconfig/*.pc
|
|
%{_mandir}/%{namearch}/man1/mpi[cCf]*
|
|
%{_mandir}/%{namearch}/man1/opal_*
|
|
%{_mandir}/%{namearch}/man3/*
|
|
%{_libdir}/%{name}/share/openmpi/openmpi-valgrind.supp
|
|
%{_libdir}/%{name}/share/openmpi/*-wrapper-data.txt
|
|
%{macrosdir}/macros.%{namearch}
|
|
|
|
%files java
|
|
%{_libdir}/%{name}/lib/mpi.jar
|
|
|
|
%files java-devel
|
|
%{_libdir}/%{name}/bin/mpijavac
|
|
%{_libdir}/%{name}/bin/mpijavac.pl
|
|
# Currently this only contaings openmpi/javadoc
|
|
%{_libdir}/%{name}/share/doc/
|
|
%{_mandir}/%{namearch}/man1/mpijavac.1.gz
|
|
|
|
%files -n python3-openmpi
|
|
%dir %{python3_sitearch}/%{name}
|
|
%{python3_sitearch}/openmpi.pth
|
|
|
|
|
|
%changelog
|
|
* Mon Apr 29 2019 Jarod Wilson <jarod@redhat.com> - 4.0.1-1
|
|
- Update to upstream v4.0.1 release
|
|
- Resolves: rhbz#1660623
|
|
|
|
* Tue Sep 25 2018 Jarod Wilson <jarod@redhat.com> - 3.1.2-5
|
|
- Update BR: opensm-devel min version and rebuild against opensm 3.3.21
|
|
- Resolves: rhbz#1630653
|
|
|
|
* Mon Sep 24 2018 Jarod Wilson <jarod@redhat.com> - 3.1.2-4
|
|
- Further tweaks to compile/linker flag usage
|
|
- Related: rhbz#1624157
|
|
- Move modulefiles under /etc like our other suppored mpi providers
|
|
- Resolves: rhbz#1632399
|
|
|
|
* Tue Sep 18 2018 Jarod Wilson <jarod@redhat.com> - 3.1.2-3
|
|
- Undo stripping/ignoring of distro-provided optimization flags
|
|
- Related: rhbz#1624157
|
|
|
|
* Wed Sep 12 2018 Jarod Wilson <jarod@redhat.com> - 3.1.2-2
|
|
- Additional tweaks to module paths, fix openmpi-devel R
|
|
- Related: rhbz#1623441
|
|
|
|
* Wed Sep 12 2018 Jarod Wilson <jarod@redhat.com> - 3.1.2-1
|
|
- Update to upstream 3.1.2 bug fix release
|
|
- Fix some paths in module file, strip out python2 bits
|
|
- Related: rhbz#1623441
|
|
|
|
* Thu Aug 30 2018 Jarod Wilson <jarod@redhat.com> - 3.1.1-2
|
|
- Bump and rebuild for autogen rpmbuild library dependency fixes
|
|
- Related: rhbz#1623441
|
|
|
|
* Mon Jul 02 2018 Jarod Wilson <jarod@redhat.com> - 3.1.1-1
|
|
- Update to upstream 3.1.1 bug fix release
|
|
- Drop BR: on deprecated infinipath-psm
|
|
|
|
* Thu May 31 2018 Jarod Wilson <jarod@redhat.com> - 3.1.0-1
|
|
- Update to upstream 3.1.0 release
|
|
- Use external pmix and libevent
|
|
|
|
* Thu May 17 2018 Charalampos Stratakis <cstratak@redhat.com> - 2.1.1-11
|
|
- Do not build the python2 subpackage on EL > 7
|
|
|
|
* Wed May 09 2018 Troy Dawson <tdawson@redhat.com> - 2.1.1-10
|
|
- Build with rdma-core-devel instead of libibcm-devel
|
|
|
|
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.1.1-9
|
|
- Escape macros in %%changelog
|
|
|
|
* Mon Feb 05 2018 Orion Poplawski <orion@cora.nwra.com> - 2.1.1-8
|
|
- Rebuild for rdma-core 16.2
|
|
|
|
* Wed Jan 31 2018 Christoph Junghans <junghans@votca.org> - 2.1.1-7
|
|
- Rebuild for gfortran-8
|
|
|
|
* Fri Jan 12 2018 Iryna Shcherbina <ishcherb@redhat.com> - 2.1.1-6
|
|
- Update Python 2 dependency declarations to new packaging standards
|
|
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
|
|
|
|
* Wed Aug 23 2017 Adam Williamson <awilliam@redhat.com> - 2.1.1-5
|
|
- Disable RDMA support on 32-bit ARM (#1484155)
|
|
- Disable hanging opal_fifo test on ppc64le (gh #2526 / #2966)
|
|
|
|
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-4
|
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
|
|
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-3
|
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
|
|
|
* Wed Jul 19 2017 Orion Poplawski <orion@cora.nwra.com> - 2.1.1-2
|
|
- Provide pkgconfig files in the main namespace as well (1471512)
|
|
|
|
* Fri May 12 2017 Orion Poplawski <orion@cora.nwra.com> - 2.1.1-1
|
|
- Update to 2.1.1
|
|
|
|
* Thu May 4 2017 Orion Poplawski <orion@cora.nwra.com> - 2.1.0-1
|
|
- Update to 2.1.0
|