[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: petscvariables: hardwired build dir instead of install dir




On Mar 24, 2008, at 10:57 AM, Lisandro Dalcin wrote:
Barry, things are still broken. I think that at some point we have to
review the 'install:' target  more carefully.

First, the 'sed' command i being called in a wrong way.

This is not true; the sed is being called correctly. The problem is that -i
is not a standard sed option and different systems gnu and freebsd treat
it differently. freebsd requires a space between the -i and the suffix;
gnu has no space; gnu also allows the use of -i to indicate no backup
while freebsd expects -i ""


  Your patch works on POS gnu systems, but is broken on far superior
Apple MacOS X systems! :-)

   Matt you need to add a config/configure.py test to detect the
type of sed -i it is.



Second, ALL files under $PETSC_ARCH/conf are being copied, I'm not
sure if all them are needed (logs, RDict.db, configure.py, etc) when
you 'install' PETSc in a central, system location.

I like copying everything because they tell exactly what build was done
with what options. But if it is being dumped into a generic conf directory
yes it will be confusing, but then the files rules, variables and base
are confusing because they are not marked as PETSc related


Finally, 'sed' trickery is done under all files under 'conf/' and that
can be dangerous.

Yes, if it is a generic conf directory it is kind of a problem.

   Barry





I attach a hg diff fixing some of that issues. But I still believe that this have to be more carefully reviewed. Unfortunately, I will not be able to do that myself for, let say, three month from now.

By using the patch in the attached file, I was able to install PETSc
and next build petsc4py. However, this does not necesarily means that
things are all OK. I already do some trickery in the build system of
petsc4py in order to 'fix' the problems with the stuff in PETSc
makefiles since version 2.3.2 until latest petsc-dev.


Regards,

On 3/22/08, Barry Smith <bsmith@xxxxxxxxxxx> wrote:
Lisandro

   The rule was a total mess; I think I have fixed it now, please try
again
and let me know how it goes.

  Thanks for reporting the problem,


Barry


On Mar 22, 2008, at 1:18 PM, Lisandro Dalcin wrote:
OK, it seems my stderr were being sent I do not know were... I get the
following (BTW, I was not aware of the 'sed' trick, but I was not
seeing the error)



[root@trantor petsc-dev]# make install
Installing PETSc at /usr/local/petsc/dev/linux-gnu
sed: can't read s?${PETSC_DIR}?TMP_INSTALL_DIR?g: No such file or
directory
sed: can't read s?TMP_INSTALL_DIR?/usr/local/petsc/dev/linux-gnu? g: No
such file or directory
sed: can't read s?/${PETSC_ARCH}??g: No such file or directory
making shared libraries in /usr/local/petsc/dev/linux-gnu//lib
building libpetsc.so
building libpetscvec.so
building libpetscmat.so
building libpetscdm.so
building libpetscksp.so
building libpetscsnes.so
building libpetscts.so
building libpetsccontrib.so
sh/bash: PETSC_DIR=/usr/local/petsc/dev/linux-gnu; export PETSC_DIR
sh/bash: unset PETSC_ARCH
csh/tcsh: setenv PETSC_DIR /usr/local/petsc/dev/linux-gnu
csh/tcsh: unsetenv PETSC_ARCH
Then do make test to verify correct install



And then the 'petscvariables' still have the build dir in many places.
So the 'sed' command is not working for me. I do not know way, I've
never had the time to learn regexps :-(.


BTW, I'm on a Fedora 6 box.


On 3/22/08, Barry Smith <bsmith@xxxxxxxxxxx> wrote:

Ok, I think I understand your concern,


On Mar 22, 2008, at 9:00 AM, Lisandro Dalcin wrote:

On 3/22/08, Barry Smith <bsmith@xxxxxxxxxxx> wrote:
Do you mean that it lists, for example,
SUPERLU_DIST_LIB = -Wl,-rpath,/Users/bsmith/Src/petsc-dev/arch- icc-
superlu_dist/lib -L/Users/bsmith/Src/petsc-dev/arch-icc-
superlu_dist/
lib -lsuperlu_dist_2.2
instead of
SUPERLU_DIST_LIB = -Wl,-rpath,$PETSC_DIR/arch-icc-superlu_dist/
lib -L
$PETSC_DIR/arch-icc-superlu_dist/lib -lsuperlu_dist_2.2



exactly that, as an example, I've just built petsc-dev, passing as
prefix the following '--prefix=/usr/local/petsc/2.3.3/linux-
gnu' (yes,
I still want to have multiconfig installations of petsc in a central
location, so I add the PETSC_ARCH to the prefix)


But the 'petscvariables' file stills says, for example

ML_INCLUDE = -I. -I/usr/local/mpich2/1.0.6/include
-I/usr/local/mpich2/1.0.6/include
-I/repos/hg/petsc/petsc-dev/linux-gnu/include


This is because the place we want ML to install itself has be
passed in as the true path, it cannot be sent as a symbolic PETSC_DIR
since configure of the subpackage doesn't know PETSC_DIR





The last include dir is the directory were I've built PETSc. I would
love to see that include as -I${PETSC_DIR}/${PETSC_ARCH}/include.
And
now, if external packages got installed in $PETSC_DIR/$PETSC_ARCH,
we
perhaps could just put nothing, as that location is always taken
into
accout for PETSc itself.


The real problem: if I remove the build dir, the 'petscvariables'
point to locations that no longer exists, This is dangerous. I
already
had trouble in the past with the old 'bmake' based system. Is
there a
chance to 'fix' this, or I'm missing something?


 make intall: see the rule in makefile is suppose to replace all
uses of the
petsc-dir directory with the final prefix installed location: the
lines

         sed -i "" 's?$${PETSC_DIR}?TMP_INSTALL_DIR?g' $
{INSTALL_DIR}/conf/* ;\
         sed -i "" s?TMP_INSTALL_DIR?${INSTALL_DIR}?g $
{INSTALL_DIR}/
conf/* ;\

would replace


/repos/hg/petsc/petsc-dev/linux-gnu/include

/usr/local/petsc/2.3.3/linux-gnu/include

Now it could be that the sed is not working when you run install? Can
you do a
config/configure.py with a --prefix then the make then the make
install and see what
goes wrong?



Barry


with







--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería
(CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química
(INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594






--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594






--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
<make_install.diff>