building RPM's for petsc-2.3.3
Barry Smith
bsmith at mcs.anl.gov
Wed Jun 20 16:43:11 CDT 2007
Lisandro,
This looks like a fine start to me.
Barry
On Wed, 20 Jun 2007, Lisandro Dalcin wrote:
> I've been working in building RPM's for petsc-2.3.3, using the now old
> bmake system. You have attached a petsc.spec file and a small patch.
> Please note the petsc.spec file is written in a naive way, I should
> have to use rpm macros to eliminate code duplication in many places.
>
> I want to report you my first experiences, mainly because I tried to
> support a multi-version, multi-arch installation, and I still think
> the new build system should also support this approach. It should be
> up to packagers if the what to simplify things.
>
> In previous mails, Barry was worried about how users are going to
> write your own makefiles, being able to use them to build your own
> software against the petsc 'source' directory or a 'installed' petsc.
> The approach described below solves this (at least in my linux FC6 box
> with GNU make).
>
> All what was really needed was to generate a really small patch for
> files in bmake/common. This patch mainly modifies 'variables'
> (splitting the definition of PETSC_LIB_DIR and PETSC_INCLUDE in a
> completelly backward-fashion) and add a 'siteconf' file, by default
> empty, with is included by 'base' at the end (so I believe this is
> also backward).
>
> In the spec file for generating the RPM, the tarball is unpacked and
> patched (%prep step), next I configure and build petsc (%build step)
> for two variants, PETSC_ARCH=default-seq (no mpi) and
> PETSC_ARCH=default-mpi (with my mpich2 install, wich is not rpm based,
> so I have to 'force' rpm to install it because of dependencies, but
> anyway it works at the end). Finally, I install petsc and monkey copy
> needed files to my buildroot (%install step). Additionally (this is
> the tricky part) I put things in 'siteconf' file in order to override
> the paths for includes and libraries.
>
> The final layout of my build root (this really arbitrary, I did this
> just to show a rather deep structure, and some symlinks are not really
> needed) is the following (just mentally replace 'petsc-2.3.3-1-root'
> by '/' and your have the same layout after installing the RPM)
>
> $ tree -d petsc-2.3.3-1-root
> petsc-2.3.3-1-root
> `-- usr
> |-- include
> | `-- petsc
> | `-- 2.3.3
> | |-- finclude
> | `-- include
> | |-- adic
> | |-- finclude -> ../finclude
> | |-- mpiuni
> | `-- private
> `-- lib
> `-- petsc
> `-- 2.3.3
> |-- bin
> | |-- common -> .
> | |-- default-mpi
> | `-- default-seq
> |-- bmake -> config
> |-- config
> | |-- common -> .
> | |-- default-mpi
> | `-- default-seq
> `-- lib
> |-- common -> .
> |-- default-mpi
> `-- default-seq
>
>
> Now the question is ... Do all this work? Is it backward and
> trasparent for third party code? How to use this PETSc installation?
> Let's see...
>
> After installing the rpm ...
>
> $ sudo rpm -ivh --nodeps RPMS/i386/petsc-2.3.3-1.i386.rpm
>
> I go to /tmp and unpack and patch the original PETSc sources.
>
> $ tar -zxf $HOME/rpm/SOURCES/petsc-2.3.3-p2.tar.gz
> $ cd petsc-2.3.3-p2
> $ patch -p1 < $HOME/rpm/SOURCES/petsc-2.3.3-p2.patch
>
> Next I define PETSC_DIR and PETSC_ARCH as following
>
> $ export PETSC_DIR=/usr/lib/petsc/2.3.3
> $ export PETSC_ARCH=default-mpi
>
> and finally do
>
> $ make test
> $ make testexamples
> $ make testfortran
>
> and all work as expected.
>
>
>
>
>
>
More information about the petsc-dev
mailing list