Apply changes to build for both mpich and openmpi

This commit is contained in:
Deji Akingunola 2014-02-27 09:15:09 -05:00
parent 6d9e31bdab
commit cac1297a27
4 changed files with 295 additions and 81 deletions

View File

@ -1,20 +0,0 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = mpicc
CFLAGS = @RPMFLAGS@ -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_FILE_COMPRESS_BZ2 -DCOMMON_FILE_COMPRESS_LZMA -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -DSCOTCH_PTHREAD_NUMBER=2 -DSCOTCH_PTHREAD_AFFINITY_LINUX -Drestrict=__restrict
LDFLAGS = -lpthread -lz -lbz2 -llzmadec -lm -lrt
CP = cp -a
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir -p
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -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

View File

@ -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

View File

@ -1,17 +1,20 @@
Summary: Graph, mesh and hypergraph partitioning library Summary: Graph, mesh and hypergraph partitioning library
Name: scotch Name: scotch
Version: 6.0.0 Version: 6.0.0
Release: 4%{?dist} Release: 5%{?dist}
License: CeCILL-C License: CeCILL-C
Group: Development/Libraries Group: Development/Libraries
URL: http://www.labri.fr/perso/pelegrin/scotch/ URL: http://www.labri.fr/perso/pelegrin/scotch/
Source0: https://gforge.inria.fr/frs/download.php/31831/%{name}_%{version}.tar.gz Source0: https://gforge.inria.fr/frs/download.php/27583/%{name}_%{version}.tar.gz
Source1: scotch-Makefile.inc.in Source1: scotch-Makefile.static.inc.in
BuildRequires: flex bison mpich-devel zlib-devel bzip2-devel lzma-devel Source2: scotch-Makefile.shared.inc.in
BuildRequires: flex bison zlib-devel bzip2-devel lzma-devel
Requires: %{name}-doc = %{version}-%{release}
%description %description
Scotch is a software package for graph and mesh/hypergraph partitioning and 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 %package devel
Summary: Development libraries for scotch Summary: Development libraries for scotch
@ -21,68 +24,163 @@ Requires: %{name} = %{version}-%{release}
%description devel %description devel
This package contains development libraries for scotch. 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 %prep
%setup -q -n scotch_%{version} %setup -c -q -n scotch_%{version}
sed s/@RPMFLAGS@/'%{optflags} -fPIC'/ < %SOURCE1 > src/Makefile.inc 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 %build
cd src/ module purge
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 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}
%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 make %{?_smp_mflags} ptscotch
mpicc -shared -Wl,-soname=libptscotcherr.so.0 -o ../lib/libptscotcherr.so.0.0\
libscotch/library_error.o pushd scotch_%{version}/src/
mpicc -shared -Wl,-soname=libptscotcherrexit.so.0 -o \ %dosingle
../lib/libptscotcherrexit.so.0.0 libscotch/library_error_exit.o popd
rm -f libscotch/library_error*.o
mpicc -shared -Wl,-soname=libptscotch.so.0 -o ../lib/libptscotch.so.0.0 \ pushd scotch_%{version}_mpich/src/
libscotch/*.o ../lib/libptscotcherr.so.0.0 -lgfortran -lz -lbz2 -llzmadec %{_mpich_load}
mpicc -shared -Wl,-soname=libptscotchparmetis.so.0 -o \ %dobuild
../lib/libptscotchparmetis.so.0.0 libscotchmetis/*.o \
../lib/libptscotch.so.0.0 ../lib/libptscotcherr.so.0.0
%{_mpich_unload} %{_mpich_unload}
popd
module purge
pushd scotch_%{version}_openmpi/src/
%{_openmpi_load}
%dobuild
%{_openmpi_unload}
popd
%install %install
rm -rf %{buildroot} rm -rf %{buildroot}
pushd src/ module purge
make install prefix=%{buildroot}%{_prefix} libdir=%{buildroot}%{_libdir} \
includedir=%{buildroot}%{_includedir}/%{name}-%{_arch}/
%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 popd
cp -pr include/*metis.h %{buildroot}%{_includedir}/%{name}-%{_arch}/
pushd lib pushd scotch_%{version}/
for static_libs in lib*scotch*.a ; do export libdir=%{buildroot}%{_libdir}
libs=`basename $static_libs .a` %doinst prefix=%{buildroot}%{_prefix} libdir=%{buildroot}%{_libdir}
ln -s $libs.so.0.0 $libs.so.0
ln -s $libs.so.0.0 $libs.so pushd %{buildroot}%{_bindir}/
rm -f $static_libs for prog in *; do
done mv $prog scotch_$prog
cp -dp lib*scotch*.so* %{buildroot}%{_libdir}/ done
popd popd
rm -f %{buildroot}%{_libdir}/*.a pushd %{buildroot}%{_mandir}/man1/
rm -f d*
rm -f %{buildroot}%{_bindir}/* for prog in *; do
rm -f %{buildroot}%{_mandir}/man1/* mv $prog scotch_$prog
pushd man/man1 done
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
popd popd
pushd %{buildroot}%{_bindir} pushd %{buildroot}%{_bindir}
rm -f scotch_dgpart && ln -s ./scotch_dgmap scotch_dgpart
rm -f scotch_gpart && ln -s ./scotch_gmap scotch_gpart rm -f scotch_gpart && ln -s ./scotch_gmap scotch_gpart
popd 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 mv -f CeCILL-C_V1-fr.txt.conv CeCILL-C_V1-fr.txt
popd 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 %post -p /sbin/ldconfig
%postun -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 %files
%defattr(-,root,root,-)
%doc README.txt doc/*
%{_bindir}/* %{_bindir}/*
%{_libdir}/lib*scotch*.so.* %{_libdir}/libscotch*.so.*
%{_mandir}/man1/* %{_mandir}/man1/*
%files devel %files devel
%defattr(-,root,root,-) %{_libdir}/libscotch*.so
%{_libdir}/lib*scotch*.so %{_includedir}/*scotch*.h
%{_includedir}/%{name}-%{_arch}/*scotch*.h
%{_includedir}/%{name}-%{_arch}/*metis.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 %changelog
* Thu Feb 27 2014 Deji Akingunola <dakingun@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@gmail.com> - 6.0.0-4 * Mon Feb 24 2014 Deji Akingunola <dakingun@gmail.com> - 6.0.0-4
- Rebuild for mpich-3.1 - Rebuild for mpich-3.1
@ -132,6 +312,12 @@ popd
* Sat Nov 17 2012 Deji Akingunola <dakingun@gmail.com> - 5.1.12-1.b * Sat Nov 17 2012 Deji Akingunola <dakingun@gmail.com> - 5.1.12-1.b
- Update to 5.1.12b - Update to 5.1.12b
* Mon Oct 08 2012 Erik Zeek <eczeek@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@lists.fedoraproject.org> - 5.1.11-3 * Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.11-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
@ -172,8 +358,8 @@ popd
* Wed May 13 2009 Deji Akingunola <dakingun@gmail.com> - 5.1.6-1 * Wed May 13 2009 Deji Akingunola <dakingun@gmail.com> - 5.1.6-1
- Update to 5.1.6 - Update to 5.1.6
* Sat Nov 21 2008 Deji Akingunola <dakingun@gmail.com> - 5.1.2-1 * Fri Nov 21 2008 Deji Akingunola <dakingun@gmail.com> - 5.1.2-1
- Update to 5.1.2 - Update to 5.1.2
* Tue Sep 19 2008 Deji Akingunola <dakingun@gmail.com> - 5.1.1-1 * Fri Sep 19 2008 Deji Akingunola <dakingun@gmail.com> - 5.1.1-1
- initial package creation - initial package creation