diff --git a/.cvsignore b/.cvsignore index 2fd7194..edcaf49 100644 --- a/.cvsignore +++ b/.cvsignore @@ -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 diff --git a/openmpi.module.in b/openmpi.module.in index c846f3c..67acd5c 100644 --- a/openmpi.module.in +++ b/openmpi.module.in @@ -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 diff --git a/openmpi.pc.in b/openmpi.pc.in index 59cad3f..384f528 100644 --- a/openmpi.pc.in +++ b/openmpi.pc.in @@ -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@ diff --git a/openmpi.spec b/openmpi.spec index fd1ef55..8a2810f 100644 --- a/openmpi.spec +++ b/openmpi.spec @@ -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 - 1.1-8 -- also add requires for sub-packages for "alternatives" +* Wed Jun 27 2007 Doug Ledford - 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 - 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 - 1.1.1-5 +- Remove the FORTIFY_SOURCE and stack protect options +- Related: bz213075 + +* Fri Oct 20 2006 Doug Ledford - 1.1.1-4 +- Bump and build against the final openib-1.1 package + +* Wed Oct 18 2006 Doug Ledford - 1.1.1-3 +- Fix an snprintf length bug in opal/util/cmd_line.c +- RESOLVES: rhbz#210714 + +* Wed Oct 18 2006 Doug Ledford - 1.1.1-2 +- Bump and build against openib-1.1-0.pre1.1 instead of 1.0 + +* Tue Oct 17 2006 Doug Ledford - 1.1.1-1 +- Update to upstream 1.1.1 version * Fri Oct 13 2006 Doug Ledford - 1.1-7 - ia64 can't take -m64 on the gcc command line, so don't set it there diff --git a/sources b/sources index 6425145..4b2787d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -821af8bbb7a8e85ec707cb4c3b6bcbf6 openmpi-1.1.tar.bz2 +ae980bb00f9686934a1143701cc041e4 openmpi-1.2.3.tar.bz2