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