BuildSystem question

S V N Vishwanathan vishy at
Sun Sep 25 06:12:36 CDT 2005


I am tying myself up in knots in trying to figure out your BuildSystem
and how to adapt it to LINEAL. PETSc is one primary component of LINEAL
but going forward there will be others (viz. TAO, OOQP). 

I want that my users should be exposed to one and only one config + make
step if possible. A typical user interaction should be as follows:

1) If PETSc exists under $LINEAL_DIR/externalpackages and is configured
   and built with the right switches then we just build LINEAL.

2) If the user wishes to use their own custom PETSc then they just
   specify --with-petsc-dir= and I should be able to pick it up from

3) If neither 1 nor 2 is true then I should offer to download, configure
   and build PETSc (much akin to what the current PETSc build scripts
   currently do). 

I am unclear about where external packages required by PETSc should
go. Many packages (like PETSc, TAO, OOQP) might want to use some common
external package (like MPICH). But it seems like a wasted effort if we
replicate the PETSc build scripts which already install these packages
into $PETSC_DIR/externalpackages.

When I try to grab the framework object from RDict.db and use a require
method on it, it seems to bomb because many of the scripts in
$PETSC_DIR/python/PETSc seem to make an implicit assumption that the
configure scripts are run from $PETSC_DIR (a bad assumption I think, esp
given that you have the PETSC_DIR variable available to you).

The lack of documentation adds to my woes. I don't want to be a cry
baby, but I did spend considerable time and effort trying to figure
things out and still don't have a good feel for how different scripts

So my question is simple, if you were in my position i.e. designing the
build scripts for LINEAL, how would approach the problem?

Where you stand depends on where you sit.
		-- Rufus Miles, HEW

More information about the petsc-dev mailing list