[scotch] Apply changes to build for both mpich and openmpi

Deji Akingunola deji at fedoraproject.org
Thu Feb 27 14:14:13 UTC 2014


commit cac1297a276730a078e372d40224589020ba2c38
Author: Deji Akingunola <dakingun at gmail.com>
Date:   Thu Feb 27 09:15:09 2014 -0500

    Apply changes to build for both mpich and openmpi

 scotch-Makefile.inc.in        |   20 ---
 scotch-Makefile.shared.inc.in |   24 +++
 scotch-Makefile.static.inc.in |   24 +++
 scotch.spec                   |  308 +++++++++++++++++++++++++++++++++--------
 4 files changed, 295 insertions(+), 81 deletions(-)
---
diff --git a/scotch-Makefile.shared.inc.in b/scotch-Makefile.shared.inc.in
new file mode 100644
index 0000000..5bb5083
--- /dev/null
+++ b/scotch-Makefile.shared.inc.in
@@ -0,0 +1,24 @@
+EXE		=
+LIB		= .so
+OBJ		= .o
+
+MAKE		= make
+AR		= gcc
+ARFLAGS		= -shared -Wl,-soname=$@.0 -o
+CAT		= cat
+CCS		= gcc
+CCP     	= mpicc
+CCD		= mpicc
+CFLAGS		= @RPMFLAGS@ \
+		-DCOMMON_FILE_COMPRESS_GZ -DCOMMON_FILE_COMPRESS_BZ2 -DCOMMON_FILE_COMPRESS_LZMA \
+		-DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD \
+		-Drestrict=__restrict -DIDXSIZE64
+CLIBFLAGS	= -shared -fPIC
+LDFLAGS		= -lz -lbz2 -llzmadec -lm -lrt  -lpthread
+CP		= cp -av
+LEX		= flex
+LN		= ln
+MKDIR		= mkdir -p
+MV		= mv
+RANLIB		= echo
+YACC		= bison -y
diff --git a/scotch-Makefile.static.inc.in b/scotch-Makefile.static.inc.in
new file mode 100644
index 0000000..90ca17f
--- /dev/null
+++ b/scotch-Makefile.static.inc.in
@@ -0,0 +1,24 @@
+EXE		=
+LIB		= .a
+OBJ		= .o
+
+MAKE		= make
+AR		= ar
+ARFLAGS		= -ruv
+CAT		= cat
+CCS		= gcc
+CCP     	= mpicc
+CCD		= mpicc
+CFLAGS		= @RPMFLAGS@ \
+		-DCOMMON_FILE_COMPRESS_GZ -DCOMMON_FILE_COMPRESS_BZ2 -DCOMMON_FILE_COMPRESS_LZMA \
+		-DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD \
+		-Drestrict=__restrict -DIDXSIZE64
+CLIBFLAGS	=
+LDFLAGS		= -lz -lbz2 -llzmadec -lm -lrt  -lpthread
+CP		= cp -av
+LEX		= flex
+LN		= ln
+MKDIR		= mkdir -p
+MV		= mv
+RANLIB		= ranlib
+YACC		= bison -y
diff --git a/scotch.spec b/scotch.spec
index 683ec94..3113e53 100644
--- a/scotch.spec
+++ b/scotch.spec
@@ -1,17 +1,20 @@
 Summary:	Graph, mesh and hypergraph partitioning library
 Name:		scotch
 Version:	6.0.0
-Release:	4%{?dist}
+Release:	5%{?dist}
 License:	CeCILL-C
 Group:		Development/Libraries
 URL:		http://www.labri.fr/perso/pelegrin/scotch/
-Source0:	https://gforge.inria.fr/frs/download.php/31831/%{name}_%{version}.tar.gz
-Source1:	scotch-Makefile.inc.in
-BuildRequires:	flex bison mpich-devel zlib-devel bzip2-devel lzma-devel
+Source0:	https://gforge.inria.fr/frs/download.php/27583/%{name}_%{version}.tar.gz
+Source1:	scotch-Makefile.static.inc.in
+Source2:	scotch-Makefile.shared.inc.in
+BuildRequires:	flex bison zlib-devel bzip2-devel lzma-devel
+Requires:	%{name}-doc = %{version}-%{release}
 
 %description
 Scotch is a software package for graph and mesh/hypergraph partitioning and
-sparse matrix ordering. 
+sparse matrix ordering. The parallel scotch lbrariries are packaged in the
+ptscotch sub-packages.
 
 %package devel
 Summary:	Development libraries for scotch
@@ -21,68 +24,163 @@ Requires:	%{name} = %{version}-%{release}
 %description devel
 This package contains development libraries for scotch.
 
+%package static
+Summary:	Development libraries for scotch
+Group:		Development/Libraries
+Requires:	%{name}-devel = %{version}-%{release}
+
+%description static
+This package contains libscotch static libraries.
+
+%package doc
+Summary:	Documentations and example for scotch and ptscotch
+Group:		Documentation
+BuildArch:	noarch
+
+%description doc
+Contains documentations and example for scotch and ptscotch
+
+%package -n ptscotch-mpich
+Summary:	PT-Scotch libraries compiled against mpich
+Group:		Development/Libraries
+BuildRequires:	mpich-devel
+Requires:	environment-modules mpich
+Requires:	%{name}-doc = %{version}-%{release}
+
+%description -n ptscotch-mpich
+Scotch is a software package for graph and mesh/hypergraph partitioning and
+sparse matrix ordering. This sub-package provides parallelized scotch libraries
+compiled with mpich
+
+%package -n ptscotch-mpich-devel
+Summary: 	Development libraries for PT-Scotch (mpich)
+Group:		Development/Libraries
+Requires:	pt%{name}-mpich = %{version}-%{release}
+
+%description -n ptscotch-mpich-devel
+This package contains development libraries for PT-Scotch, compiled against
+mpich.
+
+%package -n ptscotch-mpich-static
+Summary:	Static PT-Scotch libraries compiled against mpich
+Group:		Development/Libraries
+Requires:	pt%{name}-mpich-devel = %{version}-%{release}
+
+%description -n ptscotch-mpich-static
+This package contains static libraries for Scotch, compiled against mpich.
+
+%package -n ptscotch-openmpi
+Summary:	PT-Scotch libraries compiled against openmpi
+Group:		Development/Libraries
+BuildRequires:	openmpi-devel
+Requires:	environment-modules openmpi
+Requires:	%{name}-doc = %{version}-%{release}
+
+%description -n ptscotch-openmpi
+Scotch is a software package for graph and mesh/hypergraph partitioning and
+sparse matrix ordering. This sub-package provides parallelized scotch libraries
+compiled with openmpi
+
+%package -n ptscotch-openmpi-devel
+Summary:	Development libraries for PT-Scotch (openmpi)
+Group:		Development/Libraries
+Requires:	pt%{name}-openmpi = %{version}-%{release}
+
+%description -n ptscotch-openmpi-devel
+This package contains development libraries for PT-Scotch, compiled against openmpi.
+
+%package -n ptscotch-openmpi-static
+Summary:	Static PT-Scotch libraries compiled against openmpi
+Group:		Development/Libraries
+Requires:	pt%{name}-openmpi-devel = %{version}-%{release}
+
+%description -n ptscotch-openmpi-static
+This package contains static libraries for Scotch, compiled against openmpi.
+
 %prep
-%setup -q -n scotch_%{version}
-sed s/@RPMFLAGS@/'%{optflags} -fPIC'/ < %SOURCE1 > src/Makefile.inc
+%setup -c -q -n scotch_%{version}
+pushd scotch_%{version}
+sed s/@RPMFLAGS@/'%{optflags} -fPIC'/ < %SOURCE1 > src/Makefile.static.inc
+sed s/@RPMFLAGS@/'%{optflags} -fPIC'/ < %SOURCE2 > src/Makefile.shared.inc
+popd
+
+cp -ap scotch_%{version} scotch_%{version}_mpich
+cp -ap scotch_%{version} scotch_%{version}_openmpi
 
 %build
-cd src/
+module purge
+
+%define dosingle() \
+rm -f Makefile.inc; \
+ln -s Makefile.static.inc Makefile.inc; \
+make %{?_smp_mflags}; \
+rm -f Makefile.inc; \
+ln -s Makefile.shared.inc Makefile.inc; \
 make %{?_smp_mflags}
-gcc -shared -Wl,-soname=libscotcherr.so.0 -o ../lib/libscotcherr.so.0.0	\
-	libscotch/library_error.o
-gcc -shared -Wl,-soname=libscotcherrexit.so.0 -o	\
-	../lib/libscotcherrexit.so.0.0	libscotch/library_error_exit.o
-rm -f libscotch/library_error*.o
-gcc -shared -Wl,-soname=libscotch.so.0 -o ../lib/libscotch.so.0.0	\
-	libscotch/*.o ../lib/libscotcherr.so.0.0 -lpthread -lgfortran -lz -lbz2 -llzmadec -lrt
-gcc -shared -Wl,-soname=libscotchmetis.so.0 -o ../lib/libscotchmetis.so.0.0\
-	libscotchmetis/*.o ../lib/libscotch.so.0.0 ../lib/libscotcherr.so.0.0
 
-%{_mpich_load}
+%define dobuild() \
+rm -f Makefile.inc; \
+ln -s Makefile.static.inc Makefile.inc; \
+make %{?_smp_mflags} ptscotch; \
+rm Makefile.inc; \
+ln -s Makefile.shared.inc Makefile.inc; \
 make %{?_smp_mflags} ptscotch
-mpicc -shared -Wl,-soname=libptscotcherr.so.0 -o ../lib/libptscotcherr.so.0.0\
-	libscotch/library_error.o
-mpicc -shared -Wl,-soname=libptscotcherrexit.so.0 -o	\
-	../lib/libptscotcherrexit.so.0.0  libscotch/library_error_exit.o
-rm -f libscotch/library_error*.o
-mpicc -shared -Wl,-soname=libptscotch.so.0 -o ../lib/libptscotch.so.0.0	\
-	libscotch/*.o ../lib/libptscotcherr.so.0.0 -lgfortran -lz -lbz2 -llzmadec
-mpicc -shared -Wl,-soname=libptscotchparmetis.so.0 -o	\
-	../lib/libptscotchparmetis.so.0.0 libscotchmetis/*.o	\
-	../lib/libptscotch.so.0.0 ../lib/libptscotcherr.so.0.0
+
+pushd scotch_%{version}/src/
+%dosingle
+popd
+
+pushd scotch_%{version}_mpich/src/
+%{_mpich_load}
+%dobuild
 %{_mpich_unload}
+popd
 
-%install
-rm -rf %{buildroot}
-pushd src/
-make install prefix=%{buildroot}%{_prefix} libdir=%{buildroot}%{_libdir} \
-             includedir=%{buildroot}%{_includedir}/%{name}-%{_arch}/
+module purge
 
+pushd scotch_%{version}_openmpi/src/
+%{_openmpi_load}
+%dobuild
+%{_openmpi_unload}
 popd
-cp -pr include/*metis.h %{buildroot}%{_includedir}/%{name}-%{_arch}/
 
-pushd lib
-	for static_libs in lib*scotch*.a ; do
-		libs=`basename $static_libs .a`
-		ln -s $libs.so.0.0 $libs.so.0
-		ln -s $libs.so.0.0 $libs.so
-                rm -f $static_libs
-	done
-	cp -dp lib*scotch*.so* %{buildroot}%{_libdir}/
+%install
+rm -rf %{buildroot}
+module purge
+
+%define doinst() \
+pushd src/; \
+rm -f Makefile.inc; \
+ln -s Makefile.static.inc Makefile.inc; \
+make %{?_smp_mflags} install %*; \
+rm -f Makefile.inc; \
+ln -s Makefile.shared.inc Makefile.inc; \
+make %{?_smp_mflags} install %*; \
+popd \
+pushd $libdir; \
+for lib in *.so; do \
+	mv $lib $lib.0.0; \
+	ln -s $lib.0.0 $lib; \
+	ln -s $lib.0.0 $lib.0; \
+done; \
 popd
-rm -f %{buildroot}%{_libdir}/*.a
 
-rm -f %{buildroot}%{_bindir}/*
-rm -f %{buildroot}%{_mandir}/man1/*
-pushd man/man1
-	for progs in *.1 ; do
-		prog=`basename $progs .1`
-		cp -dp ../../bin/$prog %{buildroot}%{_bindir}/scotch_$prog
-		cp -dp $progs %{buildroot}%{_mandir}/man1/scotch_$progs
-	done
+pushd scotch_%{version}/
+export libdir=%{buildroot}%{_libdir}
+%doinst prefix=%{buildroot}%{_prefix} libdir=%{buildroot}%{_libdir}
+
+pushd %{buildroot}%{_bindir}/
+for prog in *; do
+	mv $prog scotch_$prog
+done
+popd
+pushd %{buildroot}%{_mandir}/man1/
+rm -f d*
+for prog in *; do
+	mv $prog scotch_$prog
+done
 popd
 pushd %{buildroot}%{_bindir}
-	rm -f scotch_dgpart && ln -s ./scotch_dgmap scotch_dgpart
 	rm -f scotch_gpart && ln -s ./scotch_gmap scotch_gpart
 popd
 
@@ -94,24 +192,106 @@ mv -f CeCILL-C_V1-en.txt.conv CeCILL-C_V1-en.txt
 mv -f CeCILL-C_V1-fr.txt.conv CeCILL-C_V1-fr.txt
 popd
 
+popd
+
+pushd scotch_%{version}_mpich
+%{_mpich_load}
+export libdir=%{buildroot}/${MPI_LIB}
+%doinst prefix=%{buildroot}/${MPI_HOME} libdir=%{buildroot}/${MPI_LIB} includedir=%{buildroot}/${MPI_INCLUDE} mandir=%{buildroot}/${MPI_MAN} bindir=%{buildroot}/${MPI_BIN}
+
+pushd bin
+for prog in *; do
+	mv $prog %{buildroot}/${MPI_BIN}/scotch_${prog}
+done
+popd
+
+pushd %{buildroot}/${MPI_MAN}/man1/
+rm -f {a,g,m}*
+for man in *; do
+	mv ${man} scotch_${man}
+done
+popd
+%{_mpich_unload}
+popd
+
+module purge
+
+pushd scotch_%{version}_openmpi
+%{_openmpi_load}
+export libdir=%{buildroot}/${MPI_LIB}
+%doinst prefix=%{buildroot}/${MPI_HOME} libdir=%{buildroot}/${MPI_LIB} includedir=%{buildroot}/${MPI_INCLUDE} mandir=%{buildroot}/${MPI_MAN} bindir=%{buildroot}/${MPI_BIN}
+
+pushd bin
+for prog in *; do
+	mv $prog %{buildroot}/${MPI_BIN}/scotch_${prog}
+done
+popd
+
+pushd %{buildroot}/${MPI_MAN}/man1/
+rm -f {a,g,m}*
+for man in *; do
+	mv ${man} scotch_${man}
+done
+popd
+%{_openmpi_unload}
+popd
+
 %post -p /sbin/ldconfig
 
 %postun -p /sbin/ldconfig
 
+%post -n ptscotch-mpich -p /sbin/ldconfig
+
+%postun -n ptscotch-mpich -p /sbin/ldconfig
+
+%post -n ptscotch-openmpi -p /sbin/ldconfig
+
+%postun -n ptscotch-openmpi -p /sbin/ldconfig
+
 %files
-%defattr(-,root,root,-)
-%doc README.txt doc/*
 %{_bindir}/*
-%{_libdir}/lib*scotch*.so.*
+%{_libdir}/libscotch*.so.*
 %{_mandir}/man1/*
 
 %files devel
-%defattr(-,root,root,-)
-%{_libdir}/lib*scotch*.so
-%{_includedir}/%{name}-%{_arch}/*scotch*.h
-%{_includedir}/%{name}-%{_arch}/*metis.h
+%{_libdir}/libscotch*.so
+%{_includedir}/*scotch*.h
+
+%files static
+%{_libdir}/libscotch*.a
+
+%files -n ptscotch-mpich
+%{_libdir}/mpich/lib/lib*.so.*
+%{_libdir}/mpich/bin/*
+%{_mandir}/mpich/*
+
+%files -n ptscotch-openmpi
+%{_libdir}/openmpi/lib/lib*.so.*
+%{_libdir}/openmpi/bin/*
+%{_mandir}/openmpi*/*
+
+%files -n ptscotch-mpich-devel
+%{_includedir}/mpich*/*scotch*.h
+%{_libdir}/mpich/lib/lib*.so
+
+%files -n ptscotch-openmpi-devel
+%{_includedir}/openmpi*/*scotch*.h
+%{_libdir}/openmpi/lib/lib*.so
+
+%files -n ptscotch-mpich-static
+%{_libdir}/mpich/lib/lib*.a
+
+%files -n ptscotch-openmpi-static
+%{_libdir}/openmpi/lib/lib*.a
+
+%files doc
+%doc scotch_%{version}/README.txt scotch_%{version}/doc/*
 
 %changelog
+* Thu Feb 27 2014 Deji Akingunola <dakingun at gmail.com> - 6.0.0-5
+- Slightly modified Erik Zeek spec re-write (See 2012-10-08 below)
+- Rename mpich and openmpi subpackages as ptscotch-(mpich/openmpi) (Laurence Mcglashan)
+
 * Mon Feb 24 2014 Deji Akingunola <dakingun at gmail.com> - 6.0.0-4
 - Rebuild for mpich-3.1
 
@@ -132,6 +312,12 @@ popd
 * Sat Nov 17 2012 Deji Akingunola <dakingun at gmail.com> - 5.1.12-1.b
 - Update to 5.1.12b
 
+* Mon Oct 08 2012 Erik Zeek <eczeek at sandia.gov> - 5.1.11-4
+- Use internal build machinery to build shared libraries.
+- A bunch of MPI love.
+-   Install Mpich2 libraries in the proper path.
+-   Provide Mpich2 and OpenMPI libraries.
+
 * Sat Jul 21 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 5.1.11-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 
@@ -172,8 +358,8 @@ popd
 * Wed May 13 2009 Deji Akingunola <dakingun at gmail.com> - 5.1.6-1
 - Update to 5.1.6
 
-* Sat Nov 21 2008 Deji Akingunola <dakingun at gmail.com> - 5.1.2-1
+* Fri Nov 21 2008 Deji Akingunola <dakingun at gmail.com> - 5.1.2-1
 - Update to 5.1.2
 
-* Tue Sep 19 2008 Deji Akingunola <dakingun at gmail.com> - 5.1.1-1
+* Fri Sep 19 2008 Deji Akingunola <dakingun at gmail.com> - 5.1.1-1
 - initial package creation


More information about the scm-commits mailing list