- Update to latest upstream version

- Fix file ownership on -libs package
- Take a swing at solving the multi-install compatibility issues
This commit is contained in:
Doug Ledford 2007-06-28 22:06:10 +00:00
parent f9acfe6c4f
commit 4739e23be4
5 changed files with 166 additions and 108 deletions

View File

@ -1,3 +1,4 @@
openmpi-1.0.1.tar.bz2
openmpi-1.0.2.tar.bz2
openmpi-1.1.tar.bz2
openmpi-1.2.3.tar.bz2

View File

@ -2,7 +2,8 @@
#
# OpenMPI module for use with 'environment-modules' package:
#
prepend-path PATH @DATADIR@/@NAME@/bin
prepend-path LD_LIBRARY_PATH @LIBDIR@/@NAME@
setenv CFLAGS -I@INCLUDEDIR@/@NAME@ -I@INCLUDEDIR@/@NAME@/@MODE@
setenv LDFLAGS -L@LIBDIR@/@NAME@
prepend-path MANPATH @DATADIR@/@MPIDIR@/man
prepend-path PATH @DATADIR@/@MPIDIR@/bin@MODE@
prepend-path LD_LIBRARY_PATH @LIBDIR@/@MPIDIR@
setenv CFLAGS -I@INCLUDEDIR@/@MPIDIR@ -I@INCLUDEDIR@/@MPIDIR@/@NAME@ -I@INCLUDEDIR@/@MPIDIR@/@MODE@ @MODEFLAG@
setenv LDFLAGS -L@LIBDIR@/@MPIDIR@ -lmpi

View File

@ -2,6 +2,6 @@
Name: @NAME@
Description: Open Message Passing Interface headers and libraries
URL: http://www.open-mpi.org/
Version: @VERSION@
Libs: -L@LIBDIR@/@NAME@ -lmpi
Cflags: -I@INCLUDEDIR@/@NAME@ -I@INCLUDEDIR@/@NAME@/@MODE@
Version: @VERSION@-@CC@-@MODE@
Libs: -L@LIBDIR@/@MPIDIR@ -lmpi
Cflags: -I@INCLUDEDIR@/@MPIDIR@ -I@INCLUDEDIR@/@MPIDIR@/@NAME@ -I@INCLUDEDIR@/@MPIDIR@/@MODE@ @MODEFLAG@

View File

@ -1,35 +1,32 @@
Name: openmpi
Version: 1.1
Release: 8%{?dist}
Version: 1.2.3
Release: 1%{?dist}
Summary: Open Message Passing Interface
Group: Development/Libraries
License: BSD
URL: http://www.open-mpi.org/
Source0: http://www.open-mpi.org/software/ompi/v1.1/downloads/%{name}-%{version}.tar.bz2
Source0: http://www.open-mpi.org/software/ompi/v1.2/downloads/%{name}-%{version}.tar.bz2
Source1: openmpi.pc.in
Source2: openmpi.module.in
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gcc-gfortran, autoconf, automake, libtool
#BuildRequires: libibverbs-devel, opensm-devel, libsysfs-devel
BuildRequires: gcc-gfortran, libtool, numactl-devel, libsysfs-devel
#BuildRequires: libibverbs-devel, opensm-devel
#%ifnarch ppc
#BuildRequires: dapl-devel
#%endif
Requires(post): /sbin/ldconfig, /usr/sbin/alternatives
Requires(preun): /usr/sbin/alternatives
Requires(postun): /sbin/ldconfig
Requires: %{name}-libs = %{version}-%{release}
ExclusiveArch: i386 x86_64 ia64 ppc ppc64
%package libs
Summary: Libraries used by openmpi programs
Group: Development/Libraries
Requires(post): /usr/sbin/alternatives
Requires(preun): /usr/sbin/alternatives
%package devel
Summary: Development files for openmpi
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires(post): /usr/sbin/alternatives
Requires(preun): /usr/sbin/alternatives
Provides: mpi-devel
%description
Open MPI is an open source, freely available implementation of both the
@ -46,48 +43,80 @@ Contains shared libraries used by openmpi applications
%description devel
Contains development headers and libraries for openmpi
# 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_cc_cflags
# When dealing with multilib installations, aka the ability to run either
# i386 or x86_64 binaries on x86_64 machines, we install the native i386
# openmpi libs/compilers and the native x86_64 libs/compilers. Obviously,
# on i386 you can only run i386, so you don't really need the -m32 flag
# to gcc in order to force 32 bit mode. However, since we use the native
# i386 package to support i386 operation on x86_64, and since on x86_64
# the default is x86_64, the i386 package needs to force i386 mode. This
# is true of all the multilib arches, hence the non-default arch (aka i386
# on x86_64) must force the non-default mode (aka 32 bit compile) in it's
# native-arch package (aka, when built on i386) so that it will work
# properly on the non-native arch as a multilib package (aka i386 installed
# on x86_64). Just to be safe, we also force the default mode (aka 64 bit)
# in default arch packages (aka, the x86_64 package). There are, however,
# some arches that don't support forcing *any* mode, those we just leave
# undefined.
%ifarch i386 ppc
%define mode 32
%else
%ifarch s390
%define mode 31
%else
%define mode 64
%endif
%define modeflag -m32
%endif
%ifarch ia64
%define mode 64
%endif
%ifarch s390
%define mode 31
%endif
%ifarch s390x
%define mode 64
%endif
%ifarch x86_64 ppc64
%define mode 64
%define modeflag -m64
%endif
# That alternatives system selects the highest priority item as the default.
# Usually, that means 64bit preferred over 32bit on multilib, but ppc is an
# exception in that 32bit is preferred over 64bit. So, the priority values
# selected here make that happen.
%ifarch i386 ppc64 s390
%define priority 10
%else
%define priority 11
%endif
# We set this to for convenience, since this is the unique dir we use for this
# particular package, version, compiler
%define mpidir %{name}/%{version}-%{opt_cc}
%prep
%setup -q
# Kill the stack protection and fortify source stuff...it slows things down
# and openmpi hasn't been audited for it yet
#RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//' | sed -e 's/-fstack-protector//'`
%ifarch x86_64
XCFLAGS="$RPM_OPT_FLAGS -fPIC"
XCXXFLAGS="$RPM_OPT_FLAGS -fPIC"
XFFLAGS="$RPM_OPT_FLAGS -fPIC"
XFLAGS="-fPIC"
%endif
#%ifarch i386 x86_64 ia64 ppc ppc64 # arches with openib support
#%configure \
# --includedir=%{_includedir}/%{name} \
# --libdir=%{_libdir}/%{name} \
# --datadir=%{_datadir}/%{name}/help%{mode} \
# --with-openib=/usr \
# LDFLAGS='-Wl,-z,noexecstack' \
# CFLAGS="$CFLAGS $XCFLAGS" \
# CXXFLAGS="$CFLAGS $XCFLAGS" \
# FFLAGS="$FFLAGS $XFLAGS";
#%else # no openib support, but plain tcp/ip still works and is usefull
%configure \
--includedir=%{_includedir}/%{name} \
--libdir=%{_libdir}/%{name} \
--datadir=%{_datadir}/%{name}/help%{mode} \
--includedir=%{_includedir}/%{mpidir} \
--libdir=%{_libdir}/%{mpidir} \
--datadir=%{_datadir}/%{mpidir}/help%{mode} \
--mandir=%{_datadir}/%{mpidir}/man \
--with-libnuma=%{_libdir} \
CC=%{opt_cc} \
LDFLAGS='-Wl,-z,noexecstack' \
CFLAGS="$CFLAGS $XCFLAGS" \
CXXFLAGS="$CFLAGS $XCFLAGS" \
FFLAGS="$FFLAGS $XFLAGS";
#%endif
CFLAGS="%{?opt_cc_cflags} $RPM_OPT_FLAGS $XFLAGS" \
CXXFLAGS="$RPM_OPT_FLAGS $XFLAGS" \
FFLAGS="$RPM_OPT_FLAGS $XFLAGS";
# ${datadir}/openmpi will be used ONLY for the english help*.txt files
%build
@ -97,52 +126,43 @@ make %{?_smp_mflags}
rm -rf ${RPM_BUILD_ROOT}
make install DESTDIR=${RPM_BUILD_ROOT}
# The three installed man pages are all identical and could be hard links.
# Doesn't really matter though, since we are using alternatives to do
# master and slave linking, remove the man page that goes with the common
# name and link to the uncommon man page via alternatives.
rm ${RPM_BUILD_ROOT}%{_mandir}/man1/mpiexec.1
rm ${RPM_BUILD_ROOT}%{_mandir}/man1/mpirun.1
# Remove the symlinks from common names to the unique name in /usr/bin too
rm ${RPM_BUILD_ROOT}%{_bindir}/mpi*
# Remove the unnecessary compiler common names
rm ${RPM_BUILD_ROOT}%{_bindir}/*{cc,c++,CC}
# Move the wrapper program to a name that denotes the mode it compiles
mv ${RPM_BUILD_ROOT}%{_bindir}/opal_wrapper{,-%{mode}}
mv ${RPM_BUILD_ROOT}%{_bindir}/opal_wrapper{,-%{version}-%{opt_cc}-%{mode}}
# But, opal_wrapper needs to be called by a name that denotes the compiler
# type in order to work, so in order to leave it functional even when it isn't
# the currently selected system wide default via the alternatives program,
# make the proper symlinks from %{_datadir}/%{name}/bin to the wrapper
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}/bin%{mode}
for i in mpicc mpic++ mpicxx mpiCC mpif77 mpif90 opalcc opalc++ opalCC ortecc ortec++ orteCC; do
ln -s %{_bindir}/opal_wrapper-%{mode} \
${RPM_BUILD_ROOT}%{_datadir}/%{name}/bin%{mode}/$i
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{mpidir}/bin%{mode}
for i in mpicc mpic++ mpicxx mpiCC mpif77 mpif90 ; do
ln -s %{_bindir}/opal_wrapper-%{version}-%{cc}-%{mode} \
${RPM_BUILD_ROOT}%{_datadir}/%{mpidir}/bin%{mode}/$i
done
# The fortran include file differs between 32/64bit environments, so make
# two copies
mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/%{name}/%{mode}
mv ${RPM_BUILD_ROOT}%{_includedir}/%{name}/{mpif-config.h,%{mode}}
mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/%{mpidir}/%{mode}
mv ${RPM_BUILD_ROOT}%{_includedir}/%{mpidir}/{mpif-config.h,%{mode}}
# and have the wrapper include the right one by using the wrapper-data.txt
# files for the fortran modes to signal the extra include dir
for i in ${RPM_BUILD_ROOT}%{_datadir}/%{name}/help%{mode}/openmpi/mpif{77,90}-wrapper-data.txt; do
for i in ${RPM_BUILD_ROOT}%{_datadir}/%{mpidir}/help%{mode}/openmpi/mpif{77,90}-wrapper-data.txt; do
sed -e 's#extra_includes=#extra_includes='%{mode}' #' < $i > $i.out
mv $i.out $i
done
# and we also need to force the compile mode via the wrapper-data.txt files
# (except on ia64 where the -m64 flag is not allowed by gcc)
%ifnarch ia64
for i in ${RPM_BUILD_ROOT}%{_datadir}/%{name}/help%{mode}/openmpi/*wrapper-data.txt; do
sed -e 's#compiler_flags=#compiler_flags=-m'%{mode}' #' < $i > $i.out
for i in ${RPM_BUILD_ROOT}%{_datadir}/%{mpidir}/help%{mode}/openmpi/*wrapper-data.txt; do
sed -e 's#compiler_flags=#compiler_flags='%{?modeflag}' #' < $i > $i.out
mv $i.out $i
done
%endif
echo %{_libdir}/%{name} > ${RPM_BUILD_ROOT}%{_libdir}/%{name}/%{name}.ld.conf
echo %{_libdir}/%{mpidir} > ${RPM_BUILD_ROOT}%{_libdir}/%{mpidir}/%{name}.ld.conf
# Make the pkgconfig files
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig;
sed 's#@NAME@#'%{name}'#;s#@VERSION@#'%{version}'#;s#@LIBDIR@#'%{_libdir}'#;s#@INCLUDEDIR@#'%{_includedir}'#;s#@MODE@#'%{mode}'#' < %SOURCE1 > ${RPM_BUILD_ROOT}/%{_libdir}/pkgconfig/%{name}.pc;
sed 's#@DATADIR@#'%{_datadir}'#;s#@NAME@#'%{name}'#;s#@LIBDIR@#'%{_libdir}'#;s#@INCLUDEDIR@#'%{_includedir}'#;s#@MODE@#'%{mode}'#' < %SOURCE2 > ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/%{name}.module
sed 's#@NAME@#'%{name}'#g;s#@VERSION@#'%{version}'#g;s#@LIBDIR@#'%{_libdir}'#g;s#@INCLUDEDIR@#'%{_includedir}'#g;s#@MODE@#'%{mode}'#g;s#@CC@#'%{opt_cc}'#g;s#@MPIDIR@#'%{mpidir}'#g;s#@MODEFLAG@#'%{?modeflag}'#g' < %SOURCE1 > ${RPM_BUILD_ROOT}/%{_libdir}/pkgconfig/%{name}-%{version}-%{opt_cc}-%{mode}.pc;
sed 's#@NAME@#'%{name}'#g;s#@VERSION@#'%{version}'#g;s#@LIBDIR@#'%{_libdir}'#g;s#@INCLUDEDIR@#'%{_includedir}'#g;s#@MODE@#'%{mode}'#g;s#@CC@#'%{opt_cc}'#g;s#@MPIDIR@#'%{mpidir}'#g;s#@MODEFLAG@#'%{?modeflag}'#g' < %SOURCE2 > ${RPM_BUILD_ROOT}/%{_libdir}/%{mpidir}/%{name}.module;
%clean
@ -153,36 +173,41 @@ alternatives --install %{_bindir}/mpirun mpi-run %{_bindir}/orterun \
%{priority} \
--slave %{_bindir}/mpiexec mpi-exec %{_bindir}/orterun \
--slave %{_mandir}/man1/mpirun.1.gz mpi-run-man \
%{_mandir}/man1/orterun.1.gz \
%{_datadir}/%{mpidir}/man/man1/mpirun.1.gz \
--slave %{_mandir}/man1/mpiexec.1.gz mpi-exec-man \
%{_mandir}/man1/orterun.1.gz
%{_datadir}/%{mpidir}/man/man1/orterun.1.gz
%preun
if [ "$1" -eq 0 ]; then
alternatives --remove mpi-run %{_bindir}/orterun
fi
alternatives --remove mpi-run %{_bindir}/orterun
%post libs
alternatives --install %{_sysconfdir}/ld.so.conf.d/mpi%{mode}.conf \
mpilibs%{mode} %{_libdir}/openmpi/openmpi.ld.conf %{priority}
mpilibs%{mode} %{_libdir}/%{mpidir}/%{name}.ld.conf %{priority}
/sbin/ldconfig
%preun libs
alternatives --remove mpilibs%{mode} %{_libdir}/openmpi/openmpi.ld.conf
alternatives --remove mpilibs%{mode} %{_libdir}/%{mpidir}/%{name}.ld.conf
%postun libs -p /sbin/ldconfig
%post devel
alternatives --install %{_bindir}/mpicc mpicc \
%{_bindir}/opal_wrapper-%{mode} %{priority} \
--slave %{_bindir}/mpic++ mpic++ %{_bindir}/opal_wrapper-%{mode} \
--slave %{_bindir}/mpiCC mpiCC %{_bindir}/opal_wrapper-%{mode} \
--slave %{_bindir}/mpicxx mpicxx %{_bindir}/opal_wrapper-%{mode} \
--slave %{_bindir}/mpif77 mpif77 %{_bindir}/opal_wrapper-%{mode} \
--slave %{_bindir}/mpif90 mpif90 %{_bindir}/opal_wrapper-%{mode}
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode} \
%{priority} \
--slave %{_bindir}/mpic++ mpic++ \
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode} \
--slave %{_bindir}/mpiCC mpiCC \
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode} \
--slave %{_bindir}/mpicxx mpicxx \
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode} \
--slave %{_bindir}/mpif77 mpif77 \
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode} \
--slave %{_bindir}/mpif90 mpif90 \
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode}
%preun devel
alternatives --remove mpicc %{_bindir}/opal_wrapper-%{mode}
alternatives --remove mpicc %{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode}
%postun devel -p /sbin/ldconfig
@ -190,42 +215,73 @@ alternatives --remove mpicc %{_bindir}/opal_wrapper-%{mode}
%defattr(-,root,root,-)
%doc LICENSE README
%config(noreplace) %{_sysconfdir}/openmpi-*
%{_bindir}/orteconsole
%dir %{_datadir}/%{mpidir}
%{_bindir}/orted
%{_bindir}/orteprobe
%{_bindir}/orterun
%{_bindir}/ompi_info
%{_bindir}/openmpi
%{_mandir}
%{_datadir}/%{name}
%exclude %{_datadir}/%{name}/bin%{mode}
%exclude %{_datadir}/%{name}/help%{mode}/openmpi/*-wrapper-data.txt
%{_datadir}/%{mpidir}/*
%exclude %{_datadir}/%{mpidir}/bin%{mode}
%exclude %{_datadir}/%{mpidir}/help%{mode}/openmpi/*-wrapper-data.txt
%exclude %{_datadir}/%{mpidir}/man/man3
%files libs
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/%{name}
%{_libdir}/%{name}/*.so.*
%{_libdir}/%{name}/%{name}/*.so
%{_libdir}/%{name}/*.conf
%defattr(-,root,root,-)
%dir %{_libdir}/%{mpidir}
%dir %{_libdir}/%{mpidir}/%{name}
%{_libdir}/%{mpidir}/*.so.*
%{_libdir}/%{mpidir}/%{name}/*.so
%{_libdir}/%{mpidir}/*.conf
%files devel
%defattr(-,root,root,-)
%{_bindir}/opal_wrapper-%{mode}
%dir %{_includedir}/%{name}
%{_datadir}/%{name}/bin%{mode}
%{_datadir}/%{name}/help%{mode}/openmpi/*-wrapper-data.txt
%{_includedir}/%{name}/*
%{_libdir}/%{name}/*.so
%{_libdir}/%{name}/*.a
%{_libdir}/%{name}/*.la
%{_libdir}/%{name}/%{name}/*.la
%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/%{name}/*.mod
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode}
%dir %{_includedir}/%{mpidir}
%dir %{_datadir}/%{mpidir}/bin%{mode}
%dir %{_datadir}/%{mpidir}/man/man3
%{_datadir}/%{mpidir}/bin%{mode}
%{_datadir}/%{mpidir}/help%{mode}/openmpi/*-wrapper-data.txt
%{_includedir}/%{mpidir}/*
%{_datadir}/%{mpidir}/man/man3/*
%{_libdir}/%{mpidir}/*.so
%{_libdir}/%{mpidir}/*.la
%{_libdir}/%{mpidir}/%{name}/*.la
%{_libdir}/pkgconfig/%{name}-%{version}-%{opt_cc}-%{mode}.pc
%{_libdir}/%{mpidir}/*.mod
%{_libdir}/%{mpidir}/*.module
%changelog
* Tue Feb 06 2007 Florian La Roche <laroche@redhat.com> - 1.1-8
- also add requires for sub-packages for "alternatives"
* Wed Jun 27 2007 Doug Ledford <dledford@redhat.com> - 1.2.3-1
- Update to latest upstream version
- Fix file ownership on -libs package
- Take a swing at solving the multi-install compatibility issues
* Mon Feb 19 2007 Doug Ledford <dledford@redhat.com> - 1.1.1-7
- Bump version to be at least as high as the RHEL4U5 openmpi
- Integrate fixes made in RHEL4 openmpi into RHEL5 (fix a multilib conflict
for the openmpi.module file by moving from _datadir to _libdir, make sure
all sed replacements have the g flag so they replace all instances of
the marker per line, not just the first, and add a %defattr tag to the
files section of the -libs package to avoid install errors about
brewbuilder not being a user or group)
- Resolves: bz229298
* Wed Jan 17 2007 Doug Ledford <dledford@redhat.com> - 1.1.1-5
- Remove the FORTIFY_SOURCE and stack protect options
- Related: bz213075
* Fri Oct 20 2006 Doug Ledford <dledford@redhat.com> - 1.1.1-4
- Bump and build against the final openib-1.1 package
* Wed Oct 18 2006 Doug Ledford <dledford@redhat.com> - 1.1.1-3
- Fix an snprintf length bug in opal/util/cmd_line.c
- RESOLVES: rhbz#210714
* Wed Oct 18 2006 Doug Ledford <dledford@redhat.com> - 1.1.1-2
- Bump and build against openib-1.1-0.pre1.1 instead of 1.0
* Tue Oct 17 2006 Doug Ledford <dledford@redhat.com> - 1.1.1-1
- Update to upstream 1.1.1 version
* Fri Oct 13 2006 Doug Ledford <dledford@redhat.com> - 1.1-7
- ia64 can't take -m64 on the gcc command line, so don't set it there

View File

@ -1 +1 @@
821af8bbb7a8e85ec707cb4c3b6bcbf6 openmpi-1.1.tar.bz2
ae980bb00f9686934a1143701cc041e4 openmpi-1.2.3.tar.bz2