← Back to team overview

dolfin team mailing list archive

Re: Several fixes for gcc-4.3.0

 

On Sun, Apr 13, 2008 at 2:28 PM, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
> Matthew Knepley wrote:
>
> > I have said this more than 13 times.
> >
>
>  Nice that you're counting ;).
>
>
>  That link procedure is Wrong Wrong Wrong.
>
> > I have also given the right ways to do it:
> >
> >  1) 'make getlinklibs' prints the correct link line
> >
> >  2) 'include ${PETSC_DIR}/conf/variables' in the makefile and use
> > ${PETSC_TS_LIB}
> >
> >  3) Load the pickled configure information and read it into Python.
> > There is an example
> >      in $PETSC_DIR/bin/configVars.py
> >
> > Why in the hell is this still screwed up? Of course you need to link
> > all the 3rd party
> > libraries.
> >
> >
>
>  There is a reason why we don't want to link to third-party libraries
>  which PETSc depends on. The reason has been discussed at length on this
>  list; we don't want to be tied into the libraries (and versions of
>  libraries) which PETSc downloads and uses, and possibly modifies. Any
> suggestions on how deal nicely with this issue are welcome.

The right way to deal with this is to consider each package as an atom. That
is how we do it in PETSc. If you want to use something like UMFPACK in another
library, then configure PETSc with that one. Likewise, Dolfin should be
configured with any libraries downloaded with PETSc. There is no reason that
this will not work. I do it every day with PyLith and it works fine.

  Matt

>  Garth
>
>
>
>
> >   Matt
> >
> > On Sun, Apr 13, 2008 at 12:35 PM, Jed Brown <jed@xxxxxxxx> wrote:
> >
> > > On Sun 2008-04-13 18:21, Garth N. Wells wrote:
> > >  >
> > >  >
> > >  > Jed Brown wrote:
> > >  > > I had to make a number of minor changes in order to build with gcc
> 4.3.0 which
> > >  > > is much stricter.  Also, the swig wrapper will not build with
> -Werror.
> > >  > >
> > >  > > It seems like the current build system is rather broken with
> respect to PETSc
> > >  > > since I cannot build with extra preconditioning libraries.  A huge
> advantage of
> > >  > > PETSc is that I can try out a bunch of preconditioners easily.  As
> far as I can
> > >  > > tell, the current build just adds linker options
> $PETSC_DIR/lib/$PETSC_ARCH and
> > >  > > -lpetscxxx which is not sufficient if I built with Hypre, ML, etc.
> While it's
> > >  > > not painful to keep a special PETSC_ARCH with a minimal build just
> for dolfin,
> > >  > > it would be nice to use a more full-featured PETSc.
> > >  >
> > >  > It should be possible to use all the features of PETSc, and
> -lpetscksp
> > >  > should provide access to all the preconditioners. If you provide more
> > >  > details of the problem that you're facing we can look at it.
> > >  >
> > >  > What we don't want is to link directly to packages which PETSc
> depends
> > >  > on. PETSc takes care of this.
> > >
> > >  My build fails if I use a slightly more featured PETSc configuration.
> This PETSc was configured with
> > >
> > >  --with-mpi-dir=/usr --with-blas-lapack-dir=/usr
> --download-umfpack=ifneeded --download-hypre=ifneeded
> > >
> > >  so I need some linker flags that are not present below.
> > >
> > >  Jed
> > >
> > >
> > >  mpic++ -o demo/function/cpp/demo
> -Wl,-rpath,/home/jed/usr/petsc-2.3.3-p12/lib/ompi demo/function/cpp/main.o
> -Ldolfin -L/home/jed/usr/petsc-2.3.3-p12/lib/ompi -ldolfin -lxml2 -lpetscts
> -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc
> > >  dolfin/libdolfin.so: undefined reference to `HYPRE_IJVectorGetObject'
> > >  dolfin/libdolfin.so: undefined reference to
> `HYPRE_BoomerAMGSetCycleType'
> > >  dolfin/libdolfin.so: undefined reference to `dpttrf_'
> > >  dolfin/libdolfin.so: undefined reference to `umfpack_di_report_numeric'
> > >  dolfin/libdolfin.so: undefined reference to `dswap_'
> > >  dolfin/libdolfin.so: undefined reference to `XCreatePixmap'
> > >  dolfin/libdolfin.so: undefined reference to `dpotrf_'
> > >  dolfin/libdolfin.so: undefined reference to `dgemm_'
> > >  dolfin/libdolfin.so: undefined reference to
> `HYPRE_BoomerAMGSetRelaxType'
> > >  dolfin/libdolfin.so: undefined reference to
> `HYPRE_BoomerAMGSetSmoothNumLevels'
> > >  dolfin/libdolfin.so: undefined reference to `HYPRE_IJMatrixCreate'
> > >  dolfin/libdolfin.so: undefined reference to `XSetForeground'
> > >  dolfin/libdolfin.so: undefined reference to `XUndefineCursor'
> > >  dolfin/libdolfin.so: undefined reference to `HYPRE_IJVectorInitialize'
> > >  dolfin/libdolfin.so: undefined reference to `HYPRE_ParaSailsSetParams'
> > >  dolfin/libdolfin.so: undefined reference to `HYPRE_IJMatrixSetRowSizes'
> > >  dolfin/libdolfin.so: undefined reference to `dnrm2_'
> > >  dolfin/libdolfin.so: undefined reference to `dscal_'
> > >  dolfin/libdolfin.so: undefined reference to
> `HYPRE_BoomerAMGSetCoarsenType'
> > >
> > >  ...
> > >
> > >
> > > _______________________________________________
> > >  DOLFIN-dev mailing list
> > >  DOLFIN-dev@xxxxxxxxxx
> > >  http://www.fenics.org/mailman/listinfo/dolfin-dev
> > >
> > >
> >
> >
> >
> >
>
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which
their experiments lead.
-- Norbert Wiener


Follow ups

References