rpms/orsa/devel ORSA_MPI,NONE,1.1 orsa.spec,1.9,1.10

Miloš Jakubíček mjakubicek at fedoraproject.org
Fri Jul 24 10:37:32 UTC 2009


Author: mjakubicek

Update of /cvs/pkgs/rpms/orsa/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv21786

Modified Files:
	orsa.spec 
Added Files:
	ORSA_MPI 
Log Message:
- Reenabled MPI support in a way described in BZ#511099, introduced
  separate subpackages with support for OpenMPI, MPICH2 and LAM MPI
  implementations.
- Written ORSA_MPI user documentation about MPI support




--- NEW FILE ORSA_MPI ---
# USING ORSA WITH MPI SUPPORT IN FEDORA
# Last change: Milos Jakubicek, July 24, 2009

There are 4 different builds of orsa with different MPI support:

orsa(-devel) -- No MPI support
orsa-openmpi(-devel) -- Built with OpenMPI support
orsa-mpich2(-devel) -- Built with MPICH2 MPI support
orsa-lam-(-devel) -- Built with LAM MPI support

Environment-modules are used to enable parallel installation and usage of all of the supported MPI implementations.
Before using orsa with MPI support, you have to load the particular module, which ensures setting proper PATH and LD_LIBRARY_PATH variables:

First you have to load the functions:

. /etc/profile.d/modules.sh

followed by:

module load openmpi-%{_arch} 
OR
module load %{_datadir}/mpich2/mpich2.module
OR
module load lam-%{_arch}

You can use 

rpm --eval "%{_arch} %{_datadir}" 

to find out proper values for your machine.

For unloading a module substitute "load" with "unload" in the above commands.


Index: orsa.spec
===================================================================
RCS file: /cvs/pkgs/rpms/orsa/devel/orsa.spec,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -p -r1.9 -r1.10
--- orsa.spec	13 Jul 2009 14:43:21 -0000	1.9
+++ orsa.spec	24 Jul 2009 10:37:31 -0000	1.10
@@ -1,12 +1,13 @@
 Name:			orsa
 Version:		0.7.0
-Release:		9%{?dist}
+Release:		10%{?dist}
 Summary:		Orbit Reconstruction, Simulation and Analysis
 
 Group:			Amusements/Graphics
 License:		GPLv2+ 
 URL:			http://orsa.sourceforge.net
 Source0:		http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
+Source1:		ORSA_MPI
 # Patch to build with GCC 4.3
 # Reported into upstream bugtracker as
 # http://sourceforge.net/tracker/index.php?func=detail&aid=2099077&group_id=44502&atid=439768
@@ -32,8 +33,6 @@ BuildRequires:	fftw2-devel
 BuildRequires:	gsl-devel
 BuildRequires:	cln-devel
 BuildRequires:	ginac-devel
-# Temporarily disabled as current openmpi builds do not ship -devel, nor its previous content in the main package
-# BuildRequires:	openmpi-devel
 
 %description
 ORSA is an interactive tool for scientific grade Celestial Mechanics
@@ -48,30 +47,166 @@ Requires:	fftw2-devel
 Requires:	gsl-devel
 Requires:	zlib-devel
 Requires:	%{name} = %{version}-%{release}
+Requires:	%{name}-headers = %{version}-%{release}
 
 %description devel
 This package contains development files for %{name}.
 
+%package openmpi
+Summary:	A build of %{name} with support for OpenMPI
+Group:		Applications/Engineering
+
+BuildRequires: openmpi-devel
+
+%description openmpi
+This package contains a build of %{name} with support for OpenMPI.
+
+%package openmpi-devel
+Summary:	Development files for %{name} build with support for OpenMPI
+Group:		Development/Libraries
+
+Requires: %{name}-openmpi = %{version}-%{release}
+Requires: %{name}-headers = %{version}-%{release}
+
+%description openmpi-devel
+This package contains development files for a build of %{name}
+ with support for OpenMPI.
+
+%package mpich2
+Summary:	A build of %{name} with support for MPICH2 MPI
+Group:		Applications/Engineering
+
+BuildRequires: mpich2-devel
+
+%description mpich2
+This package contains a build of %{name} with support for MPICH2 MPI.
+
+%package mpich2-devel
+Summary:	Development files for %{name} build with support for MPICH2 MPI
+Group:		Development/Libraries
+
+Requires: %{name}-mpich2 = %{version}-%{release}
+Requires: %{name}-headers = %{version}-%{release}
+
+%description mpich2-devel
+This package contains development files for a build of %{name}
+with support for MPICH2 MPI.
+
+%package lam
+Summary:	A build of %{name} with support for LAM MPI
+Group:		Applications/Engineering
+
+BuildRequires: lam-devel
+
+%description lam
+This package contains a build of %{name} with support for LAM MPI.
+
+%package lam-devel
+Summary:	Development files for %{name} build with support for LAM MPI
+Group:		Development/Libraries
+
+Requires: %{name}-lam = %{version}-%{release}
+Requires: %{name}-headers = %{version}-%{release}
+
+%description lam-devel
+This package contains development files for a build of %{name}
+with support for LAM MPI.
+
+%package headers
+Summary:	Headers for development with %{name}
+Group:		Development/Libraries
+
+%description headers
+This package contains C++ header files for development with %{name}.
+
 %prep
 %setup -q
 %patch0 -p1
 %patch1 -p1
 %patch2
 
+# Install user hints for MPI support
+install -p -m644 %{SOURCE1} .
+
 %build
+# Have to build in the install step to do multiple builds
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
 # honor $RPM_OPT_FLAGS
 sed -i 's|-g -Wall -W -pipe -ftemplate-depth-64 -O3 -fno-exceptions -funroll-loops -fstrict-aliasing -fno-gcse|$CXXFLAGS|' configure
-%configure --disable-static --with-mpi "CLN_CONFIG=`which pkg-config` cln" "GINACLIB_CONFIG=`which pkg-config` ginac" CXXFLAGS="$CXXFLAGS -DHAVE_INLINE"
+
+# common configure options for MPI as well as non-MPI builds
+%global confflags --disable-dependency-tracking --disable-static "CLN_CONFIG=`which pkg-config` cln" "GINACLIB_CONFIG=`which pkg-config` ginac" CXXFLAGS="$CXXFLAGS -DHAVE_INLINE"
+
+# load the module function
+. /etc/profile.d/modules.sh
+%global OpenMPI_BIN %(. /etc/profile.d/modules.sh; module load openmpi-%{_arch}; echo $MPI_BIN)
+%global OpenMPI_LIB %(. /etc/profile.d/modules.sh; module load openmpi-%{_arch}; echo $MPI_LIB)
+%global LAM_BIN %(. /etc/profile.d/modules.sh; module load lam-%{_arch}; echo $MPI_BIN | sed 's|-L||')
+%global LAM_LIB %(. /etc/profile.d/modules.sh; module load lam-%{_arch}; echo $MPI_LIB | sed 's|-L||')
+%global MPICH_BIN %(. /etc/profile.d/modules.sh; module load %{_datadir}/mpich2/mpich2.module; echo $PATH | cut -f 1 -d :)
+
+################################
+echo -e "\n##############################\nNow making the non-MPI version\n##############################\n"
+################################
+
+%configure %{confflags}
 # remove rpaths
 sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
 sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
 make %{?_smp_mflags}
+make install DESTDIR=$RPM_BUILD_ROOT
+# we don't want to ship libtool archives:
+rm $RPM_BUILD_ROOT%{_libdir}/{liborsa.la,libxorsa.la}
+make clean
 
-%install
-rm -rf $RPM_BUILD_ROOT
+################################
+echo -e "\n##############################\nNow making the OpenMPI version\n##############################\n"
+################################
+module load openmpi-%{_arch}
+%configure --with-mpi --prefix=$MPI_HOME --bindir=$MPI_BIN --libdir=$MPI_LIB %{confflags}
+# remove rpaths
+sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+make CC=mpicc %{?_smp_mflags}
 make install DESTDIR=$RPM_BUILD_ROOT
 # we don't want to ship libtool archives:
-rm $RPM_BUILD_ROOT%{_libdir}/liborsa.la $RPM_BUILD_ROOT%{_libdir}/libxorsa.la
+rm $RPM_BUILD_ROOT/$MPI_LIB/{liborsa.la,libxorsa.la}
+make clean
+module unload openmpi-%{_arch}
+
+################################
+echo -e "\n##############################\nNow making the MPICH2 version\n##############################\n"
+################################
+module load %{_datadir}/mpich2/mpich2.module
+%configure --with-mpi --bindir=%{MPICH_BIN} --libdir=%{_libdir}/mpich2/ %{confflags} MPICXX=mpicxx
+# remove rpaths
+sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+make CC=mpicxx %{?_smp_mflags}
+make install DESTDIR=%{buildroot} 
+# we don't want to ship libtool archives:
+rm $RPM_BUILD_ROOT%{_libdir}/mpich2/{liborsa.la,libxorsa.la}
+make clean
+module unload %{_datadir}/mpich2/mpich2.module
+
+################################
+echo -e "\n##############################\nNow making the LAM version\n##############################\n"
+################################
+module load lam-%{_arch}
+export MPI_HOME=`echo $MPI_HOME | sed 's|-L||'`
+export MPI_BIN=`echo $MPI_BIN | sed 's|-L||'`
+export MPI_LIB=`echo $MPI_LIB | sed 's|-L||'`
+%configure --with-mpi --prefix=$MPI_HOME --bindir=$MPI_BIN --libdir=$MPI_LIB %{confflags} MPICXX=mpic++
+# remove rpaths
+sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+make CC=mpic++ %{?_smp_mflags}
+make install DESTDIR=%{buildroot} 
+# we don't want to ship libtool archives:
+rm $RPM_BUILD_ROOT/$MPI_LIB/{liborsa.la,libxorsa.la}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -82,18 +217,59 @@ rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(-,root,root,-)
-%doc COPYING DEVELOPERS
+%doc COPYING DEVELOPERS ORSA_MPI
 %{_bindir}/xorsa
 %{_libdir}/liborsa.so.*
 %{_libdir}/libxorsa.so.*
 
 %files devel
 %defattr(-,root,root,-)
+%{_libdir}/*.so
+
+%files headers
+%defattr(-,root,root,-)
 %{_includedir}/*
-%{_libdir}/liborsa.so
-%{_libdir}/libxorsa.so
+
+%files openmpi
+%defattr(-,root,root,-)
+%doc COPYING DEVELOPERS ORSA_MPI
+%{OpenMPI_LIB}/liborsa.so.*
+%{OpenMPI_LIB}/libxorsa.so.*
+%{OpenMPI_BIN}/*
+
+%files openmpi-devel
+%defattr(-,root,root,-)
+%{OpenMPI_LIB}/*.so
+
+%files mpich2
+%defattr(-,root,root,-)
+%doc COPYING DEVELOPERS ORSA_MPI
+%{MPICH_BIN}/*
+%{_libdir}/mpich2/liborsa.so.*
+%{_libdir}/mpich2/libxorsa.so.*
+
+%files mpich2-devel
+%defattr(-,root,root,-)
+%{_libdir}/mpich2/*.so
+
+%files lam
+%defattr(-,root,root,-)
+%doc COPYING DEVELOPERS ORSA_MPI
+%{LAM_LIB}/liborsa.so.*
+%{LAM_LIB}/libxorsa.so.*
+%{LAM_BIN}/*
+
+%files lam-devel
+%defattr(-,root,root,-)
+%{LAM_LIB}/*.so
 
 %changelog
+* Fri Jul 24 2009 Milos Jakubicek <xjakub at fi.muni.cz> - 0.7.0-10
+- Reenabled MPI support in a way described in BZ#511099, introduced
+  separate subpackages with support for OpenMPI, MPICH2 and LAM MPI
+  implementations.
+- Written ORSA_MPI user documentation about MPI support
+
 * Mon Jul 13 2009 Milos Jakubicek <xjakub at fi.muni.cz> - 0.7.0-9
 - Rebuilt against new cln 1.3.0
 - Temporarily disabled MPI support as current openmpi builds do not ship -devel,




More information about the fedora-extras-commits mailing list