%define name petsc %define version 2.3.3 %define patchlevel 2 %define release 1 Summary: Portable Extensible Toolkit for Scientific Computation Name: %{name} Version: %{version} Release: %{release} License: Distributable Group: Development/Libraries URL: http://www.mcs.anl.gov/petsc Packager: Lisandro Dalcin Vendor: The PETSc Team Source0: %{name}-%{version}-p%{patchlevel}.tar.gz Patch0: %{name}-%{version}-p%{patchlevel}.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root #Prefix: /usr BuildPrereq: python BuildPrereq: blas, blas-devel BuildPrereq: lapack, lapack-devel BuildPrereq: gcc-gfortran %description PETSc is a suite of data structures and routines that provide the building blocks for the implementation of large-scale application codes on parallel (and serial) computers. PETSc uses the MPI standard for all message-passing communication. %define debug_package %nil %changelog * Thu Jun 14 2007 Lisandro Dalcin - - Initial build. # -------------------------------------------------------------------- %define _Do_prep 0 %define _Do_build 0 %define _Do_inst 1 %define _Do_clean 0 ## ------------------------------------------------------------------- ## PREP ## ------------------------------------------------------------------- %prep %if %{_Do_prep} %setup -q -n %{name}-%{version}-p%{patchlevel} %patch -p1 %else %setup -q -T -D -n %{name}-%{version}-p%{patchlevel} %endif #_Do_prep %define PETSC_DIR %{_builddir}/%{name}-%{version}-p%{patchlevel} ## ------------------------------------------------------------------- ## BUILD ## ------------------------------------------------------------------- %build %if %{_Do_build} %define PETSC_ARCH default-seq export PETSC_DIR=%{PETSC_DIR} export PETSC_ARCH=%{PETSC_ARCH} %{__python} config/configure.py \ --with-shared=1 \ --with-mpi=0 make rm lib/%{PETSC_ARCH}/lib*.so %define PETSC_ARCH default-mpi export PETSC_DIR=%{PETSC_DIR} export PETSC_ARCH=%{PETSC_ARCH} %{__python} config/configure.py \ --with-shared=1 \ --with-mpi=1 make rm lib/%{PETSC_ARCH}/lib*.so %endif #_Do_build %define __incbasedir %{_includedir}/%{name}/%{version} %define __binbasedir %{_libdir}/%{name}/%{version} %define __libbasedir %{_libdir}/%{name}/%{version} %define __cfgbasedir %{_libdir}/%{name}/%{version} %define __includedir %{__incbasedir}/include %define __fincludedir %{__incbasedir}/finclude %define __bindir %{__binbasedir}/bin %define __libdir %{__libbasedir}/lib %define __configdir %{__cfgbasedir}/config %define destdir %{_tmppath}/%{name}-%{version}-%{release}-inst ## ------------------------------------------------------------------- ## INSTALL ## ------------------------------------------------------------------- %install %if %{_Do_inst} rm -rf %{buildroot} %{destdir} %define PETSC_ARCH docsonly export PETSC_DIR=%{PETSC_DIR} export PETSC_ARCH=%{PETSC_ARCH} make INSTALL_DIR=%{destdir} \ C_SH_LIB_PATH= \ F_SH_LIB_PATH= \ SL_LINKER_LIBS= \ install mkdir -p %{buildroot}%{__includedir} mkdir -p %{buildroot}%{__fincludedir} mkdir -p %{buildroot}%{__bindir} mkdir -p %{buildroot}%{__libdir} mkdir -p %{buildroot}%{__configdir} mkdir %{buildroot}%{__includedir}/adic mkdir %{buildroot}%{__includedir}/mpiuni mkdir %{buildroot}%{__includedir}/private ln -s ../finclude %{buildroot}%{__includedir} ln -s . %{buildroot}%{__bindir}/common ln -s . %{buildroot}%{__libdir}/common ln -s . %{buildroot}%{__configdir}/common ln -s config %{buildroot}%{__configdir}/../bmake cp %{destdir}/include/*.h %{buildroot}%{__includedir} cp %{destdir}/include/adic/*.h %{buildroot}%{__includedir}/adic cp %{destdir}/include/mpiuni/*.h %{buildroot}%{__includedir}/mpiuni cp %{destdir}/include/private/*.h %{buildroot}%{__includedir}/private cp %{destdir}/include/finclude/*.h %{buildroot}%{__fincludedir} cp %{destdir}/include/finclude/*.h90 %{buildroot}%{__fincludedir} cp %{destdir}/bin/mpiexec.uni %{buildroot}%{__bindir} cp %{destdir}/bin/petscmpiexec %{buildroot}%{__bindir} cp %{destdir}/bmake/adic*.init %{buildroot}%{__configdir} cp %{destdir}/bmake/common/* %{buildroot}%{__configdir} echo PETSC_INCLUDE_DIR_ROOT = %{__incbasedir} >> %{buildroot}%{__configdir}/siteconf echo PETSC_INCLUDE_DIR_CONFIG = %{__configdir} >> %{buildroot}%{__configdir}/siteconf echo PETSC_LIB_DIR_ROOT = %{__libbasedir} >> %{buildroot}%{__configdir}/siteconf echo PETSCCHKDIRNOWARN = 1 >> %{buildroot}%{__configdir}/siteconf %undefine PETSC_ARCH %define PETSC_ARCH default-seq %define archpth /%{PETSC_ARCH} export PETSC_DIR=%{PETSC_DIR} export PETSC_ARCH=%{PETSC_ARCH} make INSTALL_DIR=%{destdir} \ C_SH_LIB_PATH= \ F_SH_LIB_PATH= \ SL_LINKER_LIBS= \ install mkdir %{buildroot}%{__bindir}%{archpth} mkdir %{buildroot}%{__configdir}%{archpth} cp -rp %{destdir}/lib%{archpth} %{buildroot}%{__libdir} cp %{destdir}/bmake%{archpth}/*.h %{buildroot}%{__configdir}%{archpth} cp %{destdir}/bmake%{archpth}/petscconf %{buildroot}%{__configdir}%{archpth} cp %{destdir}/bmake%{archpth}/petscrules %{buildroot}%{__configdir}%{archpth} %undefine PETSC_ARCH %define PETSC_ARCH default-mpi %define archpth /%{PETSC_ARCH} export PETSC_DIR=%{PETSC_DIR} export PETSC_ARCH=%{PETSC_ARCH} make INSTALL_DIR=%{destdir} \ C_SH_LIB_PATH= \ F_SH_LIB_PATH= \ SL_LINKER_LIBS= \ install mkdir %{buildroot}%{__bindir}%{archpth} mkdir %{buildroot}%{__configdir}%{archpth} cp -rp %{destdir}/lib%{archpth} %{buildroot}%{__libdir} cp %{destdir}/bmake%{archpth}/*.h %{buildroot}%{__configdir}%{archpth} cp %{destdir}/bmake%{archpth}/petscconf %{buildroot}%{__configdir}%{archpth} cp %{destdir}/bmake%{archpth}/petscrules %{buildroot}%{__configdir}%{archpth} %endif #_Do_inst ## ------------------------------------------------------------------- ## CLEAN ## ------------------------------------------------------------------- %clean %if %{_Do_clean} rm -rf %{_buildroot} %{destdir} %endif #_Do_clean ## ------------------------------------------------------------------- ## POST(UN) ## ------------------------------------------------------------------- %post %undefine PETSC_ARCH %define PETSC_ARCH default-seq touch -c %{__libdir}/%{PETSC_ARCH}/lib*.so %undefine PETSC_ARCH %define PETSC_ARCH default-mpi touch -c %{__libdir}/%{PETSC_ARCH}/lib*.so %postun %nil %files %defattr(-,root,root,-) %dir %{__includedir} %dir %{__includedir}/adic %dir %{__includedir}/mpiuni %dir %{__includedir}/private %dir %{__fincludedir} %dir %{__includedir}/finclude %{__includedir}/*.h %{__includedir}/adic/*.h %{__includedir}/mpiuni/*.h %{__includedir}/private/*.h %{__fincludedir}/*.h %{__fincludedir}/*.h90 %dir %{__bindir} %dir %{__bindir}/common %{__bindir}/mpiexec.uni %{__bindir}/petscmpiexec %dir %{__libdir} %dir %{__libdir}/common %dir %{__configdir} %dir %{__configdir}/common %{__configdir}/adic*.init %{__configdir}/rules* %{__configdir}/variables %{__configdir}/base %{__configdir}/test %{__configdir}/siteconf %{__configdir}/../bmake %undefine PETSC_ARCH %define PETSC_ARCH default-seq %define archpth /%{PETSC_ARCH} %dir %{__bindir}%{archpth} %dir %{__libdir}%{archpth} %dir %{__configdir}%{archpth} %{__libdir}%{archpth}/lib*.a %{__libdir}%{archpth}/lib*.so %{__configdir}%{archpth}/*.h %{__configdir}%{archpth}/petscconf %{__configdir}%{archpth}/petscrules %undefine PETSC_ARCH %define PETSC_ARCH default-mpi %define archpth /%{PETSC_ARCH} %dir %{__bindir}%{archpth} %dir %{__libdir}%{archpth} %dir %{__configdir}%{archpth} %{__libdir}%{archpth}/lib*.a %{__libdir}%{archpth}/lib*.so %{__configdir}%{archpth}/*.h %{__configdir}%{archpth}/petscconf %{__configdir}%{archpth}/petscrules