- fixed broken update

- Resolves: bz496909, bz496131, bz496911
This commit is contained in:
Doug Ledford 2009-04-22 15:04:12 +00:00
parent e500ef7605
commit fa6ba230eb
4 changed files with 72 additions and 279 deletions

View File

@ -1,11 +0,0 @@
--- openmpi-1.2.4/orte/runtime/orte_abort.c.open 2007-10-17 14:47:28.000000000 -0400
+++ openmpi-1.2.4/orte/runtime/orte_abort.c 2007-10-17 14:53:23.000000000 -0400
@@ -88,7 +88,7 @@ int orte_abort(int status, bool report)
ORTE_ERROR_LOG(ORTE_ERR_OUT_OF_RESOURCE);
goto CLEANUP;
}
- fd = open(abort_file, O_CREAT);
+ fd = open(abort_file, O_WRONLY, O_CREAT);
if (0 < fd) close(fd);
}

View File

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

View File

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

View File

@ -1,6 +1,24 @@
Name: 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_cflags
%define opt_cxx g++
#define opt_cxxflags
%define opt_f77 gfortran
#define opt_fflags
%define opt_fc gfortran
#define 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.
#define cc_name_suffix -gcc
Name: openmpi%{?cc_name_suffix}
Version: 1.3.1 Version: 1.3.1
Release: 1%{?dist} Release: 2%{?dist}
Summary: Open Message Passing Interface Summary: Open Message Passing Interface
Group: Development/Libraries Group: Development/Libraries
License: BSD License: BSD
@ -9,15 +27,14 @@ Source0: http://www.open-mpi.org/software/ompi/v1.3/downloads/%{name}-%{version
Source1: openmpi.pc.in Source1: openmpi.pc.in
Source2: openmpi.module.in Source2: openmpi.module.in
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gcc-gfortran, libtool, numactl-devel, libtorque-devel BuildRequires: gcc-gfortran, libtool, numactl-devel
#BuildRequires: libibverbs-devel, opensm-devel BuildRequires: libibverbs-devel, opensm-devel > 3.3.0
#%ifnarch ppc #%ifnarch ppc
#BuildRequires: dapl-devel #BuildRequires: compat-dapl-devel
#%endif #%endif
Requires(post): /sbin/ldconfig Provides: mpi
Requires(post): %{_sbindir}/update-alternatives Requires: environment-modules
Requires(preun): %{_sbindir}/update-alternatives Obsoletes: openmpi-libs, openmpi-devel
Requires: %{name}-libs = %{version}-%{release}
%description %description
Open MPI is an open source, freely available implementation of both the Open MPI is an open source, freely available implementation of both the
@ -28,49 +45,6 @@ compliant implementation, Open MPI offers advantages for system and
software vendors, application developers, and computer science software vendors, application developers, and computer science
researchers. For more information, see http://www.open-mpi.org/ . researchers. For more information, see http://www.open-mpi.org/ .
%package libs
Summary: Libraries used by openmpi programs
Group: Development/Libraries
Requires(post): %{_sbindir}/update-alternatives
Requires(preun): %{_sbindir}/update-alternatives
%description libs
Contains shared libraries used by openmpi applications.
%package devel
Summary: Development files for openmpi
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
Provides: mpi-devel = %{version}-%{release}
Requires(post): %{_sbindir}/update-alternatives
Requires(preun): %{_sbindir}/update-alternatives
%description devel
Contains development headers and libraries for openmpi.
%package vt
Summary: VampirTrace versions of openmpi programs
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
%description vt
VampirTrace consists of a tool set and a run-time library for instrumentation
and tracing of software applications. In particular, it is tailored towards
parallel and distributed High Performance Computing (HPC) applications.
The instrumentation part modifies a given application in order to inject
additional measurement calls during run-time. The tracing part provides the
actual measurement functionality used by the instrumentation calls. By this
means, a variety of detailed performance properties can be collected and
recorded during run-time. This package contains the openmpi programs
with VampirTrace enabled.
# 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 # 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 # 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, # openmpi libs/compilers and the native x86_64 libs/compilers. Obviously,
@ -93,249 +67,80 @@ with VampirTrace enabled.
%ifarch ia64 %ifarch ia64
%define mode 64 %define mode 64
%endif %endif
%ifarch s390
%define mode 31
%endif
%ifarch s390x
%define mode 64
%endif
%ifarch x86_64 ppc64 sparc64 %ifarch x86_64 ppc64 sparc64
%define mode 64 %define mode 64
%define modeflag -m64 %define modeflag -m64
%endif %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 sparc64
%define priority 10
%else
%define priority 11
%endif
# We set this to for convenience, since this is the unique dir we use for this # We set this to for convenience, since this is the unique dir we use for this
# particular package, version, compiler # particular package, version, compiler
%define mpidir %{name}/%{version}-%{opt_cc} %define mpidir %{name}/%{version}-%{opt_cc}
%prep %prep
%setup -q %setup -q
%ifarch x86_64 %ifarch x86_64
XFLAGS="-fPIC" XFLAGS="-fPIC"
%endif %endif
%configure \
--includedir=%{_includedir}/%{mpidir} \ ./configure --prefix=%{_libdir}/%{mpidir} --with-libnuma=/usr \
--libdir=%{_libdir}/%{mpidir} \ --with-openib=/usr --enable-mpirun-prefix-by-default \
--datadir=%{_datadir}/%{mpidir}/help%{mode} \ --mandir=%{_libdir}/%{mpidir}/man \
--mandir=%{_datadir}/%{mpidir}/man \ CC=%{opt_cc} CXX=%{opt_cxx} \
--with-threads=posix \
--with-tm \
CC=%{opt_cc} \
LDFLAGS='-Wl,-z,noexecstack' \ LDFLAGS='-Wl,-z,noexecstack' \
CFLAGS="%{?opt_cc_cflags} $RPM_OPT_FLAGS $XFLAGS" \ CFLAGS="%{?opt_cflags} $RPM_OPT_FLAGS $XFLAGS" \
CXXFLAGS="$RPM_OPT_FLAGS $XFLAGS" \ CXXFLAGS="%{?opt_cxxflags} $RPM_OPT_FLAGS $XFLAGS" \
FFLAGS="$RPM_OPT_FLAGS $XFLAGS"; FC=%{opt_fc} FCFLAGS="%{?opt_fcflags} $RPM_OPT_FLAGS $XFLAGS" \
# ${datadir}/openmpi will be used ONLY for the english help*.txt files F77=%{opt_f77} FFLAGS="%{?opt_fflags} $RPM_OPT_FLAGS $XFLAGS"
%build %build
make %{?_smp_mflags} make %{?_smp_mflags}
%install %install
rm -rf ${RPM_BUILD_ROOT} rm -rf %{buildroot}
make install DESTDIR=${RPM_BUILD_ROOT} make install DESTDIR=%{buildroot}
find %{buildroot}%{_libdir}/%{mpidir}/lib -name \*.la | xargs rm
find %{buildroot}%{_libdir}/%{mpidir}/man -type f | xargs gzip -9
ln -s mpicc.1.gz %{buildroot}%{_libdir}/%{mpidir}/man/man1/mpiCC.1.gz
rm -f %{buildroot}%{_libdir}/%{mpidir}/man/man1/mpiCC.1
# Because no package owns the base openmpi directories, the install sets # Make the pkgconfig file
# the mode wrong. This will cause problems when the first copy of openmpi mkdir -p %{buildroot}%{_libdir}/pkgconfig
# is installed on a system. Correct the directory permissions here. sed 's#@NAME@#'%{name}'#g;s#@VERSION@#'%{version}'#g;s#@LIBDIR@#'%{_libdir}'#g;s#@CC@#'%{opt_cc}'#g;s#@MPIDIR@#'%{mpidir}'#g;s#@MODEFLAG@#'%{?modeflag}'#g' < %SOURCE1 > %{buildroot}/%{_libdir}/pkgconfig/%{name}-%{version}-%{opt_cc}.pc
chmod 755 ${RPM_BUILD_ROOT}/%{_libdir}/openmpi # Make the environment-modules file
chmod 755 ${RPM_BUILD_ROOT}/%{_includedir}/openmpi mkdir -p %{buildroot}%{_datadir}/Modules/modulefiles
chmod 755 ${RPM_BUILD_ROOT}/%{_datadir}/openmpi sed 's#@LIBDIR@#'%{_libdir}'#g;s#@MPIDIR@#'%{mpidir}'#g;s#@MODEFLAG@#'%{?modeflag}'#g' < %SOURCE2 > %{buildroot}/%{_datadir}/Modules/modulefiles/%{name}-%{version}-%{opt_cc}-%{_arch}.module
# Remove the symlinks from common names to the unique name in /usr/bin too # we need to force the compile mode via the wrapper-data.txt files
rm ${RPM_BUILD_ROOT}%{_bindir}/mpi*
# Move the wrapper program to a name that denotes the mode it compiles
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}/%{mpidir}/bin%{mode}
for i in mpicc mpic++ mpicxx mpiCC mpif77 mpif90 ; do
ln -s %{_bindir}/opal_wrapper-%{version}-%{opt_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}/%{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}/%{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) # (except on ia64 where the -m64 flag is not allowed by gcc)
%ifnarch ia64 %ifnarch ia64
for i in ${RPM_BUILD_ROOT}%{_datadir}/%{mpidir}/help%{mode}/openmpi/*wrapper-data.txt; do for i in %{buildroot}%{_libdir}/%{mpidir}/share/openmpi/*wrapper-data.txt
do
sed -e 's#compiler_flags=#compiler_flags='%{?modeflag}' #' < $i > $i.out sed -e 's#compiler_flags=#compiler_flags='%{?modeflag}' #' < $i > $i.out
mv $i.out $i mv $i.out $i
done done
%endif %endif
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}'#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#@DATADIR@#'%{_datadir}'#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;
# Ghost files for alternatives
touch ${RPM_BUILD_ROOT}%{_bindir}/mpirun
touch ${RPM_BUILD_ROOT}%{_bindir}/mpiexec
mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1/
touch ${RPM_BUILD_ROOT}%{_mandir}/man1/mpirun.1.gz
touch ${RPM_BUILD_ROOT}%{_mandir}/man1/mpiexec.1.gz
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/ld.so.conf.d/
touch ${RPM_BUILD_ROOT}%{_sysconfdir}/ld.so.conf.d/mpi%{mode}.conf
touch ${RPM_BUILD_ROOT}%{_bindir}/mpicc
touch ${RPM_BUILD_ROOT}%{_bindir}/mpic++
touch ${RPM_BUILD_ROOT}%{_bindir}/mpiCC
touch ${RPM_BUILD_ROOT}%{_bindir}/mpicxx
touch ${RPM_BUILD_ROOT}%{_bindir}/mpif77
touch ${RPM_BUILD_ROOT}%{_bindir}/mpif90
# Clean up static libs
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/%{mpidir}/*.a
# This file is corrupt, don't try to package it.
rm -rf ${RPM_BUILD_ROOT}%{_datadir}/vampirtrace/doc/opari/lacsi01.ps.gz
# Clean up long names
pushd ${RPM_BUILD_ROOT}%{_bindir}
for i in otfaux otfcompress otfconfig otfdump otfmerge; do
ln -s %{_arch}-redhat-linux-gnu-$i $i;
done
popd
%clean %clean
[ ! -z "${RPM_BUILD_ROOT}" ] && rm -rf ${RPM_BUILD_ROOT} rm -rf %{buildroot}
%post
%{_sbindir}/update-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 \
%{_datadir}/%{mpidir}/man/man1/mpirun.1.gz \
--slave %{_mandir}/man1/mpiexec.1.gz mpi-exec-man \
%{_datadir}/%{mpidir}/man/man1/orterun.1.gz
%preun
if [ $1 -eq 0 ] ; then
%{_sbindir}/update-alternatives --remove mpi-run %{_bindir}/orterun
fi
%post libs
%{_sbindir}/update-alternatives --install %{_sysconfdir}/ld.so.conf.d/mpi%{mode}.conf \
mpilibs%{mode} %{_libdir}/%{mpidir}/%{name}.ld.conf %{priority}
/sbin/ldconfig
%preun libs
if [ $1 -eq 0 ] ; then
%{_sbindir}/update-alternatives --remove mpilibs%{mode} %{_libdir}/%{mpidir}/%{name}.ld.conf
fi
%postun libs -p /sbin/ldconfig
%post devel
%{_sbindir}/update-alternatives --install %{_bindir}/mpicc mpicc \
%{_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
if [ $1 -eq 0 ] ; then
%{_sbindir}/update-alternatives --remove mpicc %{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode}
fi
%postun devel -p /sbin/ldconfig
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc LICENSE README
%config(noreplace) %{_sysconfdir}/openmpi-*
%dir %{_datadir}/%{mpidir}
%{_bindir}/ompi-clean
%{_bindir}/ompi-ps
%{_bindir}/ompi-server
%{_bindir}/opari
%{_bindir}/orte-clean
%{_bindir}/orte-iof
%{_bindir}/orte-ps
%{_bindir}/orted
%{_bindir}/orterun
%{_bindir}/ompi_info
%{_bindir}/*otf*
%ghost %{_bindir}/mpirun
%ghost %{_bindir}/mpiexec
%ghost %{_mandir}/man1/mpirun.1.gz
%ghost %{_mandir}/man1/mpiexec.1.gz
%{_datadir}/%{mpidir}/*
%exclude %{_datadir}/%{mpidir}/bin%{mode}
%exclude %{_datadir}/%{mpidir}/help%{mode}/openmpi/*-wrapper-data.txt
%exclude %{_datadir}/%{mpidir}/man/man3
%files libs
%defattr(-,root,root,-)
%dir %{_libdir}/%{mpidir} %dir %{_libdir}/%{mpidir}
%dir %{_libdir}/%{mpidir}/%{name} %dir %{_libdir}/%{mpidir}/etc
%ghost %{_sysconfdir}/ld.so.conf.d/mpi%{mode}.conf %config(noreplace) %{_libdir}/%{mpidir}/etc/*
%{_libdir}/%{mpidir}/*.so.* %{_libdir}/%{mpidir}/bin
%{_libdir}/%{mpidir}/%{name}/*.so %{_libdir}/%{mpidir}/include
%{_libdir}/%{mpidir}/*.conf %{_libdir}/%{mpidir}/lib
%{_libdir}/%{mpidir}/man
%files devel %{_libdir}/%{mpidir}/share
%defattr(-,root,root,-) %{_libdir}/pkgconfig/%{name}-%{version}-%{opt_cc}.pc
%{_bindir}/opal_wrapper-%{version}-%{opt_cc}-%{mode} %{_datadir}/Modules/modulefiles/*
%ghost %{_bindir}/mpicc
%ghost %{_bindir}/mpic++
%ghost %{_bindir}/mpiCC
%ghost %{_bindir}/mpicxx
%ghost %{_bindir}/mpif77
%ghost %{_bindir}/mpif90
%{_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
%files vt
%defattr(-,root,root,-)
%{_bindir}/vtcc
%{_bindir}/vtcxx
%{_bindir}/vtf77
%{_bindir}/vtf90
%{_bindir}/vtfilter
%{_bindir}/vtunify
%{_datadir}/vampirtrace/
%changelog %changelog
* Wed Apr 22 2009 Doug Ledford <dledford@redhat.com> - 1.3.1-2
- fixed broken update
- Resolves: bz496909, bz496131, bz496911
* Tue Apr 14 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 1.3.1-1 * Tue Apr 14 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 1.3.1-1
- update to 1.3.1, cleanup alternatives, spec, make new vt subpackage - update to 1.3.1, cleanup alternatives, spec, make new vt subpackage