Name: openmpi Version: 1.0.1 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.0/downloads/%{name}-%{version}.tar.bz2 Source1: relpath.sh Source2: openmpi.pc.in Source3: mpi_alternatives.in Source4: openmpi.module.in BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gcc-gfortran Requires(post): /sbin/ldconfig %package devel Summary: Development files for openmpi Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description Open MPI provides a programming and runtime environment for parallel and/or distributed networked multi-computer systems . MPI stands for the Message Passing Interface. Written by the MPI Forum, MPI is a standardized API typically used for parallel and/or distributed computing - see http://www.mpi-forum.org/ . 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/ . %description devel Contains development headers and libraries for openmpi %prep %setup -q %build %ifarch x86_64 XCFLAGS="$RPM_OPT_FLAGS -fPIC" XCXXFLAGS="$RPM_OPT_FLAGS -fPIC" XFFLAGS="$RPM_OPT_FLAGS -fPIC" %endif %configure --includedir=%{_includedir}/%{name} --libdir=%{_libdir}/%{name} \ LDFLAGS='-Wl,-z,noexecstack' \ CFLAGS="$CFLAGS $XCFLAGS" \ CXXFLAGS="$CFLAGS $XCFLAGS" \ FFLAGS="$FFLAGS $XFLAGS"; make %{?_smp_mflags} %{?!OMbinpfx: %define OMbinpfx 'om-'} # prefix for OpenMPI binaries that clash with LAM %{?!LAMbinpfx: %define LAMbinpfx 'lam-'} # prefix for LAM binaries that clash with OpenMPI %install rm -rf ${RPM_BUILD_ROOT} make install DESTDIR=$RPM_BUILD_ROOT # # Make the help*.txt get picked up by %doc: mkdir -p doc mv -f ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/*.txt doc # # Resolve LAM clashes and create %{_datadir}/openmpi/{bin,lib,include} : . %SOURCE1 # ^- provides "relpath" function rpath=`relpath ${RPM_BUILD_ROOT}/%{_bindir} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin`; mkdir -p ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin; mkdir -p ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/man; ln -s `relpath ${RPM_BUILD_ROOT}/%{_libdir}/%{name} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}` ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/lib; ln -s `relpath ${RPM_BUILD_ROOT}/%{_includedir}/%{name} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}` ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/include; # Links: (mpiCC,mpicxx)->mpicc, (mpiexec,mpirun)->orterun # Clashes with LAM: mpic++ mpicc mpif77 mpif90 mpiexec mpirun rm -f ${RPM_BUILD_ROOT}/%{_bindir}/{mpiCC,mpicxx,mpiexec,mpirun} (cd ${RPM_BUILD_ROOT}/%{_bindir}; ls) | egrep -v '^(mpic\+\+|mpicc|mpif77|mpif90)$' | while read b; do ln -s ${rpath}/${b} ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin/${b}; done; for b in mpic++ mpicc mpif77 mpif90; do mv ${RPM_BUILD_ROOT}/%{_bindir}/$b ${RPM_BUILD_ROOT}/%{_bindir}/%{OMbinpfx}$b; ln -s ${rpath}/%{OMbinpfx}$b ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin/$b; done ln -s ${rpath}/%{OMbinpfx}mpic++ ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin/mpiCC ln -s ./%{OMbinpfx}mpic++ ${RPM_BUILD_ROOT}/%{_bindir}/%{OMbinpfx}mpiCC ln -s ${rpath}/%{OMbinpfx}mpic++ ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin/mpicxx ln -s ./%{OMbinpfx}mpic++ ${RPM_BUILD_ROOT}/%{_bindir}/%{OMbinpfx}mpicxx ln -s ${rpath}/orterun ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin/mpirun ln -s ./orterun ${RPM_BUILD_ROOT}/%{_bindir}/%{OMbinpfx}mpirun ln -s ${rpath}/orterun ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/bin/mpiexec ln -s ./orterun ${RPM_BUILD_ROOT}/%{_bindir}/%{OMbinpfx}mpiexec # Point the dynamic linker to the library dir mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/ld.so.conf.d echo %{_libdir}/%{name} > ${RPM_BUILD_ROOT}/%{_sysconfdir}/ld.so.conf.d/%{name}.conf # We don't like .la files find ${RPM_BUILD_ROOT}%{_libdir} -name \*.la | xargs rm # Make the pkgconfig files mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/pkgconfig; sed 's#@VERSION@#'%{version}'#;s#@LIBDIR@#'%{_libdir}/%{name}'#;s#@INCLUDEDIR@#'%{_includedir}/%{name}'#' < %SOURCE2 > ${RPM_BUILD_ROOT}/%{_libdir}/pkgconfig/%{name}.pc; # Make the alternatives utility script: mkdir -p ${RPM_BUILD_ROOT}/%{_sbindir} sed 's#@BINDIR@#'%{_bindir}'#;s#@OMBINPFX@#'%{OMbinpfx}'#;s#@LAMBINPFX@#'%{LAMbinpfx}'#' < %SOURCE3 > ${RPM_BUILD_ROOT}/%{_sbindir}/mpi_alternatives; chmod +x ${RPM_BUILD_ROOT}/%{_sbindir}/mpi_alternatives; sed 's#@DATADIR@#'%{_datadir}/%{name}'#;s#@NAME@#'%{name}'#' < %SOURCE4 > ${RPM_BUILD_ROOT}/%{_datadir}/%{name}/%{name}.module :; %clean rm -rf ${RPM_BUILD_ROOT} %post /sbin/ldconfig %preun %postun -p /sbin/ldconfig %post devel -p /sbin/ldconfig %preun devel %postun devel -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc LICENSE README doc/* %config %{_sysconfdir}/ld.so.conf.d/%{name}.conf %config %{_sysconfdir}/openmpi-* %{_bindir}/orte* %{_bindir}/*run %{_bindir}/*exec %{_bindir}/*info %{_sbindir}/mpi_alternatives %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/%{name} %{_libdir}/%{name}/*.so.* %{_libdir}/%{name}/%{name}/*.so %{_libdir}/%{name}/*.mod %{_datadir}/%{name}/bin %{_datadir}/%{name}/lib %{_datadir}/%{name}/man %{_datadir}/%{name}/%{name}.module %files devel %defattr(-,root,root,-) %{_bindir}/* %exclude %{_bindir}/orte* %exclude %{_bindir}/*run %exclude %{_bindir}/*exec %exclude %{_bindir}/*info %{_includedir}/* %dir %{_libdir}/%{name} %{_libdir}/%{name}/*.so %{_libdir}/%{name}/*.a %{_libdir}/pkgconfig/%{name}.pc %{_datadir}/%{name}/include %changelog * Wed Feb 15 2006 Jason Vas Dias - 1.0.1-1 - Import into Fedora Core - Resolve LAM clashes * Wed Jan 25 2006 Orion Poplawski - 1.0.1-2 - Use configure options to install includes and libraries - Add ld.so.conf.d file to find libraries - Add -fPIC for x86_64 * Tue Jan 24 2006 Orion Poplawski - 1.0.1-1 - 1.0.1 - Use alternatives * Sat Nov 19 2005 Ed Hill - 1.0-2 - fix lam conflicts * Fri Nov 18 2005 Ed Hill - 1.0-1 - initial specfile created