# # Copyright (c) 2001-2006 The Trustees of Indiana University. # All rights reserved. # Copyright (c) 1998-2001 University of Notre Dame. # All rights reserved. # Copyright (c) 1994-1998 The Ohio State University. # All rights reserved. # # This file is part of the LAM/MPI software package. For license # information, see the LICENSE file in the top level directory of the # LAM/MPI source distribution. # ############################################################################# # # Helpful defines # ############################################################################# %define _sysconfdir /etc/lam %define _romiodocdir /usr/share/lam/doc # Other values may be passed in via: # # rpmbuild -define 'config_args ...' # # where "..." may be replaced with anything extra to pass to # configure. See conditionalbuilds(3) man page (note the # misspelling!) for more details. # # Values specified here are what are used if the user does not pass in # any defaults. %{!?config_options: %define config_options ""} %{!?rpi: %define rpi --with-rpi=usysv} %{!?subpackages: %define subpackages 1} ############################################################################# # # Preamble Section # ############################################################################# Summary: LAM/MPI (Local Area Multicomputer) programming environment Name: lam Version: 7.1.2 Release: 5.wai64 Vendor: LAM/MPI Team License: BSD Group: Development/Libraries Source: lam-%{version}.tar.bz2 URL: http://www.lam-mpi.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-root Provides: mpi Requires: %__rm %__make %__mv %__chmod BuildRequires: openssh intel-iforte91051 Conflicts: lam-runtime = %{version} %description LAM (Local Area Multicomputer) is an MPI programming environment and development system for heterogeneous computers on a network. With LAM/MPI, a dedicated cluster or an existing network computing infrastructure can act as a single parallel computer. LAM/MPI is considered to be "cluster friendly", in that it offers daemon-based process startup/control as well as fast client-to-client message passing protocols. LAM/MPI can use TCP/IP and/or shared memory for message passing (currently, different RPMs are supplied for this -- see the main LAM web site for details). LAM features a full implementation of MPI-1 (with the exception that LAM does not support cancelling of sends), and much of MPI-2. Compliant applications are source code portable between LAM/MPI and any other implementation of MPI. In addition to providing a high-quality implementation of the MPI standard, LAM/MPI offers extensive monitoring capabilities to support debugging. Monitoring happens on two levels. First, LAM/MPI has the hooks to allow a snapshot of process and message status to be taken at any time during an application run. This snapshot includes all aspects of synchronization plus datatype maps/signatures, communicator group membership, and message contents (see the XMPI application on the main LAM web site). On the second level, the MPI library is instrumented to produce a cummulative record of communication, which can be visualized either at runtime or post-mortem. LAM/MPI is a precursor of the Open MPI project. We encourage you to look into upgrading to Open MPI: http://www.open-mpi.org/. ############################################################################# # # Spilt packages when defined to do so # ############################################################################# %if %{subpackages} ############################################################################# # # Preamble Section # ############################################################################# %package runtime Group: Development/Libraries Summary: LAM/MPI (Local Area Multicomputer) programming runtime environment Provides: mpi Conflicts: lam = %{version} %description runtime LAM (Local Area Multicomputer) is an MPI programming environment and development system for heterogeneous computers on a network. With LAM/MPI, a dedicated cluster or an existing network computing infrastructure can act as a single parallel computer. LAM/MPI is considered to be "cluster friendly", in that it offers daemon-based process startup/control as well as fast client-to-client message passing protocols. LAM/MPI can use TCP/IP and/or shared memory for message passing (currently, different RPMs are supplied for this -- see the main LAM web site for details). LAM features a full implementation of MPI-1 (with the exception that LAM does not support cancelling of sends), and much of MPI-2. Compliant applications are source code portable between LAM/MPI and any other implementation of MPI. In addition to providing a high-quality implementation of the MPI standard, LAM/MPI offers extensive monitoring capabilities to support debugging. Monitoring happens on two levels. First, LAM/MPI has the hooks to allow a snapshot of process and message status to be taken at any time during an application run. This snapshot includes all aspects of synchronization plus datatype maps/signatures, communicator group membership, and message contents (see the XMPI application on the main LAM web site). On the second level, the MPI library is instrumented to produce a cummulative record of communication, which can be visualized either at runtime or post-mortem. LAM/MPI is a precursor of the Open MPI project. We encourage you to look into upgrading to Open MPI: http://www.open-mpi.org/. ############################################################################# # # Preamble Section (devel) # ############################################################################# %package devel Summary: LAM/MPI (Local Area Multicomputer) programming environment Group: Development/Libraries Requires: lam-runtime = %{version} Requires: gcc-c++ intel-iforte91051 %description devel This is the development RPM for the LAM implementation of MPI. See the description in the main (runtime) LAM/MPI RPM. ############################################################################# # # Preamble Section (extras) # ############################################################################# %package extras Summary: LAM/MPI (Local Area Multicomputer) programming environment Group: Development/Libraries Requires: lam-runtime = %{version} %description extras This is the extra (not necessary for runtime) component of the LAM programming enviornment. ############################################################################# # # Preamble Section (docs) # ############################################################################# %package docs Summary: LAM/MPI (Local Area Multicomputer) programming environment Group: Development/Libraries Requires: lam-runtime = %{version} %description docs This is the documentation RPM for the LAM implementation of MPI. See the description in the main (runtime) LAM/MPI RPM. ############################################################################# # # End subpackaging split # ############################################################################# %endif ############################################################################# # # Prep Section # ############################################################################# %prep %setup -q # Otherwise, this directory shows up on security reports. [sigh] %__chmod -R o-w $RPM_BUILD_DIR/lam-%{version} ############################################################################# # # Build Section # ############################################################################# %build FFLAGS="-fPIC" CFLAGS="-fPIC" CXXFLAGS="-fPIC" \ ./configure --prefix=/usr --sysconfdir=%{_sysconfdir} --libdir=%{_libdir} --with-fc=ifort --without-mpi2cpp --with-memory-manager=none --with-rsh='ssh -x' %{rpi} %{config_options} %__make all ############################################################################# # # Install Section # ############################################################################# %install %__rm -rf $RPM_BUILD_ROOT %makeinstall # Rename the ROMIO doc files so that we can install them in the same # doc root later, and not overwrite LAM's doc files. for file in README README_LAM COPYRIGHT; do %__mv $RPM_BUILD_DIR/lam-%{version}/romio/$file \ $RPM_BUILD_DIR/lam-%{version}/romio/romio-$file done %__mv $RPM_BUILD_DIR/lam-%{version}/romio/doc/users-guide.ps.gz \ $RPM_BUILD_DIR/lam-%{version}/romio/doc/romio-users-guide.ps.gz # 7.0 installs shell setup and module files. Kill these so that # recent versions of RPM don't complain that we have installed but not # packaged files. %__rm -f $RPM_BUILD_ROOT%{_datadir}/lam/lam-shell-setup.sh %__rm -f $RPM_BUILD_ROOT%{_datadir}/lam/lam-shell-setup.csh %__rm -f $RPM_BUILD_ROOT%{_datadir}/lam/lam_module.tcl # Many RPM installations automatically run "strip" (in one form or # another) on all executables in the %files tree. However, for proper # TotalView support, we need to have debugging symbols available in # both libmpi and mpirun. Normally, stripping is a good thing, and we # don't want to turn it off in all cases. So we somehow have to fool # it. :-( # Turn off the x bit on the totalview shared library so that rpm # doesn't strip it. #$%@#$%!!! Only do this on platforms where the # totalview library is built (currently: 32 bit platforms). if test -f $RPM_BUILD_ROOT%{_libdir}/lam/liblam_totalview*so; then %__chmod a-x $RPM_BUILD_ROOT%{_libdir}/lam/liblam_totalview*so 2> /dev/null || : fi ############################################################################# # # Clean Section # ############################################################################# %clean %__rm -rf $RPM_BUILD_ROOT ############################################################################# # # Spilt packages when defined to do so # ############################################################################# %if %{subpackages} ############################################################################# # # Files section (runtime sub-package) # ############################################################################# %files runtime %defattr(-,root,root) %doc LICENSE HISTORY INSTALL README %config %{_sysconfdir} %{_bindir}/hboot %{_bindir}/lamboot %{_bindir}/lamclean %{_bindir}/lamd %{_bindir}/lamhalt %{_bindir}/laminfo %{_bindir}/lamnodes %{_bindir}/lamwipe %{_bindir}/mpirun %{_bindir}/recon %{_bindir}/tkill %{_bindir}/tping %{_bindir}/wipe %{_libdir}/* ############################################################################# # # Files Section (docs sub-package) # ############################################################################# %files docs %defattr(-,root,root) %doc doc/*.pdf %doc examples # Need to fix ROMIO install script to install its docs in the Right place %doc %{_romiodocdir} %{_mandir}/man1/* %{_mandir}/man5/* %{_mandir}/man7/* %{_mandir}/mans/* ############################################################################# # # Files Section (extras sub-package) # ############################################################################# %files extras %defattr(-,root,root) %{_bindir}/lamgrow %{_bindir}/lamexec %{_bindir}/lamshrink %{_bindir}/lamtrace %{_bindir}/lamcheckpoint %{_bindir}/lamrestart %{_bindir}/mpiexec %{_bindir}/mpimsg %{_bindir}/mpitask ############################################################################# # # Files Section (devel sub-package) # ############################################################################# %files devel %defattr(-,root,root) %{_bindir}/hcc %{_bindir}/hcp %{_bindir}/hf77 %{_bindir}/mpiCC %{_bindir}/mpic++ %{_bindir}/mpicc %{_bindir}/mpif77 %{_includedir}/* %{_mandir}/man3/* %else ############################################################################# # # Files Section (all-in-one RPM -- no sub-packages) # ############################################################################# %files %defattr(-,root,root) %doc LICENSE HISTORY INSTALL README %doc examples %doc doc/*.pdf %config %{_sysconfdir} %{_bindir}/* %{_mandir}/*/* %{_includedir}/* %{_libdir}/* %{_datadir}/lam/* %endif ############################################################################# # # Changelog # ############################################################################# %changelog * Sat Mar 11 2005 Jeff Squyres - Added shameless plugs for Open MPI in the descriptions - Changed back to release 1 for 7.1.2. * Thu Mar 10 2005 Jeff Squyres - Only chmod the totalview library if it exists. * Thu Jan 20 2005 Jeff Squyres - Rebuild for 7.1.1 release 3 - Also send the error message from the totalview chmod to /dev/null * Tue Nov 16 2004 Jeff Squyres - Rebuild for 7.1.1 release 2 - Include ROMIO and all the other things accidentally removed from release 1 - Fix default attributes in sub-packages so that they are not owned by jsquyres - Fix dependencies of sub-packages so that they require lam-runtime, not lam. - Allow skipping build of the totalview library without erroring. * Tue Sep 14 2004 Greg Kurtzer - Built spec to allow for conditional subpackage building * Fri Sep 10 2004 Jeff Squyres - Merge changes from Greg into the main LAM CAOS specfile. * Thu Mar 25 2004 Greg Kurtzer - Created the -extras package (to remove some non-happy dep loops (ie. perl)) * Wed Mar 24 2004 Greg Kurtzer - Updated to lam-7.0.4 * Thu Jan 22 2004 Greg Kurtzer - me killed da EPOCH * Mon Oct 27 2003 Jeff Squyres - Removed outdated sym link for mpi2c++/mpi++.h. * Mon Oct 20 2003 Greg Kurtzer - Implemented LAM-7.0.2 source tree * Wed Sep 24 2003 Jeff Squyres - Added explicit requires for gcc, gcc-c++, and gcc-g77 for the devel RPM. * Wed Jul 30 2003 Jeff Squyres - Added spaces to all % foo descriptions in the % changelog so that rpm's silly parser won't interpret those as macros and try to expand them. - Re-add missing mans man page. - Manually remove the shell setup files and module file because newer versions of RPM complain about installed-but-not-packaged files. * Wed Jul 23 2003 Jeff Squyres - First cAos specfile. Split into lam, and lam-devel RPMs with assistance from Greg Kurtzer - Added command-line overrideable % defines * Sun Jul 20 2003 Jeff Squyres - Fix the default RPI to be usysv * Mon May 29 2003 Jeff Squyres - Updated for LAM/MPI 7.0; added doc/*.pdf; removed some other (outdated) % doc files - Ensure extracted LAM source directory is not world-writeable; otherwise it shows up in nightly security reports - Fixed references to get ROMIO docs * Mon Nov 26 2001 Brian William Barrett - Fixed typo - C++ header file symlink was mpi++ instead of mpi++.h * Wed Oct 31 2001 Jeff Squyres - Changed license to be BSD. * Thu Jul 05 2001 Jeff Squyres - Modified slightly to be similar to the OSCAR spec file. - Removed use of hard-coded dirs, and replaced them with variables instead. - Removed redundant "cp" statements in % install section; automake takes care of installing man pages, and there is no $prefix/doc anymore. - Fixed to get the copyright properly. - Changed "Copyright" to "License" to be a bit more accurate. - Use "makeinstall" macro in % install section instead of "make DESTDIR=... install" - Acknowledge that because we build the LAM RPMs on RH 6.2 machines, the man pages and doc files will be in the "wrong" place on RH 7.x machines. There is not much that we can do about this -- we build the RPMs on 6.2 machines so that the binaries work on both 6.2 and 7.x machines (someday we won't care about about 6.2 machines anymore, but for the moment, we still do). The default location for man pages and doc files changed in RH 7.x (6.x:/usr/doc/lam-version, 7.x:/usr/share/lam-version, and 6.x:/usr/man, 7.x:/usr/share/man). By not overriding _mandir and _docdir in this .spec file, we're allowing for the possibility of rebuilding the source RPM on a 7.x machine and getting the doc files/man pages in the right location. Even more compelling, however, is the fact that RH 7.x machines will still find the man pages, even if they are in the "wrong" (i.e., old) location -- the location that this 6.2-built RPM will place them in. * Mon Mar 17 2001 Brian William Barrett - Borrowed SPEC file from Trond at RedHat. Converted to be able to make RPMs for all RPIs