File openmpi.spec of Package openmpi
#
# spec file for package openmpi
#
# Copyright (c) 2016 SUSE LINUX 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/
#
##########################################################################
# NOTE: If you modified openmpi.spec and/or openmpi.changes please run #
# pre_checkin.sh in this directory before submitting the package. #
# This will create the -testsuite spec and changes. #
##########################################################################
%if 0%{suse_version} > 1310
%define with_openib 1
%else
%define with_openib 0
%endif
Name: openmpi
Version: 1.10.3
Release: 0
Summary: A powerful implementaion of MPI
License: BSD-3-Clause
Group: Development/Libraries/Parallel
Url: http://www.open-mpi.org/
Source0: http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-%{version}.tar.gz
Source1: mpivars.sh
Source2: mpivars.csh
Source3: baselibs.conf
Source4: openmpi-rpmlintrc
Patch1: openmpi-no_date_and_time.patch
Patch2: openmpi-no_network_in_build.patch
Patch3: openmpi-1.8.3-fix-bashisms.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: Mesa-devel
BuildRequires: Modules
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: gcc-fortran
BuildRequires: libX11-devel
BuildRequires: libtool
BuildRequires: mpi-selector
BuildRequires: pkg-config
BuildRequires: xorg-x11-devel
%if %{with_openib}
BuildRequires: libibumad-devel
BuildRequires: libibverbs-devel
%endif
%ifarch x86_64
BuildRequires: numactl
%endif
%ifarch %{ix86} x86_64
%if %{with_openib}
BuildRequires: infinipath-psm-devel
%ifarch x86_64
BuildRequires: libfabric-devel
BuildRequires: libpsm2-devel
%endif
%endif
%endif
%if "%{name}" == "openmpi-testsuite"
BuildRequires: openmpi = %{version}
%endif
Requires: mpi-selector
Requires(preun): mpi-selector
%define mpi_prefix %{_libdir}/mpi/gcc/openmpi
%define mpi_bindir %{mpi_prefix}/bin
%define mpi_libdir %{mpi_prefix}/%{_lib}
%define mpi_datadir %{mpi_prefix}/share
%define mpi_helpdir %{mpi_datadir}/openmpi
%define mpi_includedir %{mpi_prefix}/include
%define mpi_mandir %{mpi_prefix}/share/man
%description
%if "%{name}" == "openmpi-testsuite"
This package contains the test log in the documentation directory
%else
Open MPI is a project 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.
This RPM contains all the tools necessary to compile, link, and run
Open MPI jobs.
%package libs
Summary: OpenMPI runtime libraries
Group: System/Libraries
%description libs
Open MPI is a project 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.
This subpackage contains the OpenMPI shared libraries.
%package devel
Summary: SDK for openMPI
Group: Development/Libraries/Parallel
Requires: libstdc++-devel
Requires: openmpi = %{version}
%if %{with_openib}
Requires: libibumad-devel
Requires: libibverbs-devel
%endif
%description devel
Open MPI is a project 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.
This RPM contains all the wrappers necessary to compile, link, and run
Open MPI jobs.
%package devel-static
Summary: Static openMPI libraries
Group: Development/Libraries/Parallel
Requires: %{name}-devel = %{version}
%description devel-static
This RPM contains the static library files, which are packaged separately from
the dynamic library and headers.
%endif # !openmpi-testsuite
%prep
%setup -q -n openmpi-%{version}
%patch1
%patch2
%patch3 -p1
%build
./autogen.sh
%configure --prefix="%{mpi_prefix}" \
--exec-prefix="%{mpi_prefix}" \
--bindir="%{mpi_bindir}" \
--datadir="%{mpi_datadir}" \
--includedir="%{mpi_includedir}" \
--libdir="%{mpi_libdir}" \
--mandir="%{mpi_mandir}" \
--disable-static \
--enable-builtin-atomics \
%if %{with_openib}
--with-verbs \
%endif
%ifarch %{ix86} x86_64
--with-psm \
%ifarch x86_64
--with-psm2 \
%endif
%endif
--with-package-string="Open MPI Distribution for SUSE" \
--enable-mpi-fortran=usempi \
--disable-silent-rules \
--enable-builtin-atomics
make %{?_smp_mflags} V=1
%if "%{name}" == "openmpi-testsuite"
%check
make check
%install
%else
%install
make install DESTDIR="%buildroot"
# make and install mpivars files
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE1} \
> %{buildroot}%{mpi_bindir}/mpivars.sh
sed -e 's,prefix,%{mpi_prefix},g' -e 's,libdir,%{mpi_libdir},g' %{SOURCE2} \
> %{buildroot}%{mpi_bindir}/mpivars.csh
for input in `find %{buildroot}/%{mpi_mandir} -type f` ; do
if test -f "$input.gz"; then
#echo "Remove old file $input.gz"
rm -f "$input.gz"
fi
if test -L "$input"; then
link=`perl -e 'print readlink($ARGV[0]);' -- "$input"`
test -d "$link" && continue
test -d "%{buildroot}/$link" && continue
rm -f "$input"
ln -sf "$link.gz" "$input.gz"
else
gzip -nf9 "$input"
fi
ls -l "$input.gz"
done
pushd %{buildroot}%{mpi_libdir}
rm libopen-trace-format.la
rm libotfaux.la
for f in libvt\*.la; do
sed -i 's%%-L.*.libs %%%%g' $f
done
popd
# GCC 5 builds the ignore-tkr extension and there is no way to
# turn that off
rm -f %{buildroot}%{mpi_libdir}/mpi_ext.mod
mkdir -p %{buildroot}%{_datadir}/modules/gnu-openmpi
%fdupes %{buildroot}%{mpi_mandir} %{buildroot}%{mpi_datadir}
cat << EOF > %{buildroot}%{_datadir}/modules/gnu-openmpi/%{version}
#%%Module
[5~proc ModulesHelp { } {
global dotversion
puts stderr "\tLoads the gnu - openmpi %{version} Environment"
}
module-whatis "Loads the gnu openmpi %{version} Environment."
conflict gnu-openmpi
prepend-path PATH %{mpi_bindir}
prepend-path INCLUDE %{mpi_includedir}
prepend-path INCLUDE %{mpi_libdir}/lib64
prepend-path MANPATH %{mpi_mandir}
prepend-path LD_LIBRARY_PATH %{mpi_libdir}
EOF
cat << EOF > %{buildroot}%{_datadir}/modules/gnu-openmpi/.version
#%%Module1.0
set ModulesVersion "%{version}"
EOF
#! openmpi-testsuite
%endif
%if "%{name}" == "openmpi"
%post
/usr/bin/mpi-selector \
--register %{name}-%{version} \
--source-dir %{mpi_bindir} \
--yes
/usr/bin/mpi-selector \
--system \
--set %{name}-%{version} \
--yes
%preun
/usr/bin/mpi-selector --unregister %{name}-%{version} --yes
/usr/bin/mpi-selector --system --query
if [ ! -z "`/usr/bin/mpi-selector --system --query`" ]; then
/usr/bin/mpi-selector --system --unset --yes %{name}-%{version}
fi
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files
%defattr(-, root, root)
%doc NEWS README AUTHORS LICENSE
%dir %{_libdir}/mpi
%dir %{_libdir}/mpi/gcc
%dir %{mpi_prefix}
%dir %{mpi_bindir}
%dir %{mpi_libdir}
%dir %{mpi_datadir}
%dir %{mpi_mandir}
#
%config %{_sysconfdir}/openmpi-default-hostfile
%config %{_sysconfdir}/openmpi-mca-params.conf
#
%dir /usr/share/modules/gnu-openmpi
/usr/share/modules/gnu-openmpi/.version
/usr/share/modules/gnu-openmpi/%{version}
#
%dir %{mpi_datadir}/openmpi/amca-param-sets
%dir %{mpi_datadir}/openmpi/doc
%{mpi_datadir}/openmpi/amca-param-sets/btl-openib-benchmark
%{mpi_datadir}/openmpi/amca-param-sets/example.conf
%{mpi_datadir}/openmpi/doc/COPYRIGHT-ptmalloc2.txt
#
%{mpi_bindir}/mpirun
%{mpi_bindir}/mpivars.csh
%{mpi_bindir}/mpivars.sh
%{mpi_bindir}/ompi-clean
%{mpi_bindir}/ompi-ps
%{mpi_bindir}/ompi-server
%{mpi_bindir}/ompi-top
%{mpi_bindir}/ompi_info
%{mpi_bindir}/orte-clean
%{mpi_bindir}/orte-info
%{mpi_bindir}/orte-ps
%{mpi_bindir}/orte-server
%{mpi_bindir}/orte-dvm
%{mpi_bindir}/orte-submit
%{mpi_bindir}/orte-top
%{mpi_bindir}/orted
%{mpi_bindir}/orterun
%{mpi_bindir}/oshmem_info
%{mpi_bindir}/oshrun
%{mpi_bindir}/shmemrun
#
%dir %{mpi_mandir}/man1
%{mpi_mandir}/man1/oshmem_info.1.gz
%{mpi_mandir}/man1/orte-clean.1.gz
%{mpi_mandir}/man1/orte-info.1.gz
%{mpi_mandir}/man1/orte-ps.1.gz
%{mpi_mandir}/man1/orte-server.1.gz
%{mpi_mandir}/man1/orte-top.1.gz
%{mpi_mandir}/man1/orted.1.gz
%{mpi_mandir}/man1/orte-dvm.1.gz
%{mpi_mandir}/man1/orte-submit.1.gz
%{mpi_mandir}/man1/orterun.1.gz
%{mpi_mandir}/man1/mpirun.1.gz
%{mpi_mandir}/man1/ompi-clean.1.gz
%{mpi_mandir}/man1/ompi-ps.1.gz
%{mpi_mandir}/man1/ompi-server.1.gz
%{mpi_mandir}/man1/ompi-top.1.gz
%{mpi_mandir}/man1/ompi_info.1.gz
%{mpi_mandir}/man1/shmemrun.1.gz
%{mpi_mandir}/man7
#
%dir %{mpi_helpdir}
%{mpi_helpdir}/help-dash-host.txt
%{mpi_helpdir}/help-db-base.txt
%{mpi_helpdir}/help-errmgr-base.txt
%{mpi_helpdir}/help-ess-base.txt
%{mpi_helpdir}/help-hostfile.txt
%{mpi_helpdir}/help-mca-base.txt
%{mpi_helpdir}/help-mca-bml-r2.txt
%{mpi_helpdir}/help-mca-coll-base.txt
%{mpi_helpdir}/help-mca-op-base.txt
%{mpi_helpdir}/help-mca-var.txt
%{mpi_helpdir}/help-mpi-api.txt
%{mpi_helpdir}/help-mpi-btl-base.txt
%{mpi_helpdir}/help-mpi-btl-openib-cpc-base.txt
%{mpi_helpdir}/help-mpi-btl-openib.txt
%{mpi_helpdir}/help-mpi-btl-sm.txt
%{mpi_helpdir}/help-mpi-btl-tcp.txt
%{mpi_helpdir}/help-mpi-coll-sm.txt
%{mpi_helpdir}/help-mpi-common-sm.txt
%{mpi_helpdir}/help-mpi-errors.txt
%{mpi_helpdir}/help-mpi-pml-bfo.txt
%{mpi_helpdir}/help-mpi-pml-ob1.txt
%{mpi_helpdir}/help-mpi-runtime.txt
%{mpi_helpdir}/help-mpool-base.txt
%{mpi_helpdir}/help-btl-vader.txt
%{mpi_helpdir}/help-mpi-coll-ml.txt
%{mpi_helpdir}/help-oshmem-info.txt
%{mpi_helpdir}/help-oshmem-memheap.txt
%{mpi_helpdir}/help-oshmem-spml-yoda.txt
%{mpi_helpdir}/help-oshmem-sshmem.txt
%ifarch %ix86 x86_64
%{mpi_helpdir}/help-mtl-psm.txt
%endif
%ifarch x86_64
%{mpi_helpdir}/help-mtl-psm2.txt
%{mpi_helpdir}/help-mpi-btl-usnic.txt
%{mpi_helpdir}/help-mtl-ofi.txt
%endif
%{mpi_helpdir}/help-ompi-common-verbs.txt
%{mpi_helpdir}/help-ompi-crcp-base.txt
%{mpi_helpdir}/help-ompi-dpm-base.txt
%{mpi_helpdir}/help-ompi-dpm-orte.txt
%{mpi_helpdir}/help-ompi-pubsub-orte.txt
%{mpi_helpdir}/help-oob-base.txt
%{mpi_helpdir}/help-oob-tcp.txt
%{mpi_helpdir}/help-opal-compress-base.txt
%{mpi_helpdir}/help-opal-compress-bzip.txt
%{mpi_helpdir}/help-opal-compress-gzip.txt
%{mpi_helpdir}/help-opal-crs-base.txt
%{mpi_helpdir}/help-opal-crs-none.txt
%{mpi_helpdir}/help-opal-hwloc-base.txt
%{mpi_helpdir}/help-opal-memory-linux.txt
%{mpi_helpdir}/help-opal-runtime.txt
%{mpi_helpdir}/help-opal-shmem-mmap.txt
%{mpi_helpdir}/help-opal-shmem-posix.txt
%{mpi_helpdir}/help-opal-shmem-sysv.txt
%{mpi_helpdir}/help-opal-util.txt
%{mpi_helpdir}/help-opal-wrapper.txt
%{mpi_helpdir}/help-opal_info.txt
%{mpi_helpdir}/help-orte-clean.txt
%{mpi_helpdir}/help-orte-filem-base.txt
%{mpi_helpdir}/help-orte-filem-raw.txt
%{mpi_helpdir}/help-orte-info.txt
%{mpi_helpdir}/help-orte-odls-base.txt
%{mpi_helpdir}/help-orte-odls-default.txt
%{mpi_helpdir}/help-orte-ps.txt
%{mpi_helpdir}/help-orte-rmaps-base.txt
%{mpi_helpdir}/help-orte-rmaps-md.txt
%{mpi_helpdir}/help-orte-rmaps-ppr.txt
%{mpi_helpdir}/help-orte-rmaps-resilient.txt
%{mpi_helpdir}/help-orte-rmaps-rr.txt
%{mpi_helpdir}/help-orte-rmaps-seq.txt
%{mpi_helpdir}/help-orte-runtime.txt
%{mpi_helpdir}/help-orte-server.txt
%{mpi_helpdir}/help-orte-snapc-base.txt
%{mpi_helpdir}/help-orte-sstore-base.txt
%{mpi_helpdir}/help-orte-top.txt
%{mpi_helpdir}/help-orted.txt
%{mpi_helpdir}/help-orterun.txt
%{mpi_helpdir}/help-oshmem-sshmem-mmap.txt
%{mpi_helpdir}/help-oshmem-sshmem-sysv.txt
%{mpi_helpdir}/help-plm-base.txt
%{mpi_helpdir}/help-plm-rsh.txt
%{mpi_helpdir}/help-plm-slurm.txt
%{mpi_helpdir}/help-ras-base.txt
%{mpi_helpdir}/help-ras-simulator.txt
%{mpi_helpdir}/help-ras-slurm.txt
%{mpi_helpdir}/help-regex.txt
%{mpi_helpdir}/help-rmaps_rank_file.txt
%{mpi_helpdir}/help-sec-base.txt
%{mpi_helpdir}/help-shmem-api.txt
%{mpi_helpdir}/help-shmem-runtime.txt
%ifarch %ix86 x86_64
%{mpi_helpdir}/help-opal-timer-linux.txt
%endif
%{mpi_helpdir}/help-state-staged-hnp.txt
%{mpi_helpdir}/mca-btl-openib-device-params.ini
%{mpi_helpdir}/mca-coll-ml.config
%files libs
%defattr(-,root,root)
%dir %mpi_prefix/
%dir %mpi_libdir/
%mpi_libdir/*.so.*
%{mpi_libdir}/openmpi/*.so
%files devel
%defattr(-,root,root)
%doc %{mpi_datadir}/vampirtrace
%{_sysconfdir}/openmpi-totalview.tcl
#
%dir %{mpi_libdir}/pkgconfig
%dir %{mpi_libdir}/openmpi
#
%{mpi_bindir}/mpiCC
%{mpi_bindir}/mpiCC-vt
%{mpi_bindir}/mpic++
%{mpi_bindir}/mpic++-vt
%{mpi_bindir}/mpicc
%{mpi_bindir}/mpicc-vt
%{mpi_bindir}/mpicxx
%{mpi_bindir}/mpicxx-vt
%{mpi_bindir}/mpiexec
%{mpi_bindir}/mpif77
%{mpi_bindir}/mpif77-vt
%{mpi_bindir}/mpif90
%{mpi_bindir}/mpif90-vt
%{mpi_bindir}/mpifort
%{mpi_bindir}/mpifort-vt
%{mpi_bindir}/opal_wrapper
%{mpi_bindir}/opari
%{mpi_bindir}/ortecc
%{mpi_bindir}/oshcc
%{mpi_bindir}/oshfort
%{mpi_bindir}/otfaux
%{mpi_bindir}/otfconfig
%{mpi_bindir}/otfinfo
%{mpi_bindir}/otfmerge
%{mpi_bindir}/otfmerge-mpi
%{mpi_bindir}/otfprint
%{mpi_bindir}/otfprofile
%{mpi_bindir}/otfprofile-mpi
%{mpi_bindir}/otfshrink
%{mpi_bindir}/otfcompress
%{mpi_bindir}/otfdecompress
%{mpi_bindir}/shmemcc
%{mpi_bindir}/shmemfort
%{mpi_bindir}/vtCC
%{mpi_bindir}/vtc++
%{mpi_bindir}/vtcc
%{mpi_bindir}/vtcxx
%{mpi_bindir}/vtf77
%{mpi_bindir}/vtf90
%{mpi_bindir}/vtfilter
%{mpi_bindir}/vtfilter-mpi
%{mpi_bindir}/vtfiltergen
%{mpi_bindir}/vtfiltergen-mpi
%{mpi_bindir}/vtfort
%{mpi_bindir}/vtrun
%{mpi_bindir}/vtunify
%{mpi_bindir}/vtunify-mpi
%{mpi_bindir}/vtwrapper
%{mpi_libdir}/mpi.mod
#
%{mpi_mandir}/man1/mpiCC.1
%{mpi_mandir}/man1/mpic++.1.gz
%{mpi_mandir}/man1/mpicc.1.gz
%{mpi_mandir}/man1/mpicxx.1.gz
%{mpi_mandir}/man1/mpiexec.1.gz
%{mpi_mandir}/man1/mpif77.1.gz
%{mpi_mandir}/man1/mpif90.1.gz
%{mpi_mandir}/man1/mpifort.1.gz
%{mpi_mandir}/man1/opal_wrapper.1.gz
%{mpi_mandir}/man1/oshcc.1.gz
%{mpi_mandir}/man1/oshfort.1.gz
%{mpi_mandir}/man1/oshrun.1.gz
%{mpi_mandir}/man1/shmemcc.1.gz
%{mpi_mandir}/man1/shmemfort.1.gz
%{mpi_mandir}/man3
#
%{mpi_helpdir}/mpiCC-vt-wrapper-data.txt
%{mpi_helpdir}/mpiCC-wrapper-data.txt
%{mpi_helpdir}/mpic++-vt-wrapper-data.txt
%{mpi_helpdir}/mpic++-wrapper-data.txt
%{mpi_helpdir}/mpicc-vt-wrapper-data.txt
%{mpi_helpdir}/mpicc-wrapper-data.txt
%{mpi_helpdir}/mpicxx-vt-wrapper-data.txt
%{mpi_helpdir}/mpicxx-wrapper-data.txt
%{mpi_helpdir}/mpif77-vt-wrapper-data.txt
%{mpi_helpdir}/mpif77-wrapper-data.txt
%{mpi_helpdir}/mpif90-vt-wrapper-data.txt
%{mpi_helpdir}/mpif90-wrapper-data.txt
%{mpi_helpdir}/mpifort-vt-wrapper-data.txt
%{mpi_helpdir}/mpifort-wrapper-data.txt
%{mpi_helpdir}/openmpi-valgrind.supp
%{mpi_helpdir}/ortecc-wrapper-data.txt
%{mpi_helpdir}/oshcc-wrapper-data.txt
%{mpi_helpdir}/oshfort-wrapper-data.txt
%{mpi_helpdir}/shmemcc-wrapper-data.txt
%{mpi_helpdir}/shmemfort-wrapper-data.txt
#
%{mpi_includedir}
%{mpi_libdir}/*.so
%{mpi_libdir}/pkgconfig/*.pc
%files devel-static
%defattr(-, root, root)
%{mpi_libdir}/*.la
%{mpi_libdir}/openmpi/*.la
%{mpi_libdir}/*.a
%else
%files
%defattr(-, root, root)
%doc test/util/test-suite.log
%endif
%changelog