Bug#782029: dolfin-bin: FEniCS/DOLFIN fails to compile Python dolfin.Expression()

Drew Parsons dparsons at debian.org
Mon Apr 18 03:46:18 UTC 2016


reassign 782029 libsuitesparse-metis-dev
retitle 782029 build multiarch installation of suitesparse-metis 
severity 782029 serious
thanks

On Mon, 06 Apr 2015 10:57:40 -0700 Jan Medlock <medlock-debian at turbosho
wer.net> wrote:
> 
> Removing '/x86_64-linux-gnu' from the paths to the libsuitesparse
> libraries in /usr/lib/dolfin/cmake/DOLFINTargets-relwithdebinfo.cmake
> makes the Expression compile.
> 

Thanks for the bug report, Jan.  I'm trying to keep petsc and dolfin
up-to-date.

Reading through your bug report, it looks like the bug you're
experiencing here needs to be resolved in libsuitesparse-metis-dev

The background is that Debian now provides multiarch support.  That
means library binaries for multiple cpu architectures can be hosted on
the one system.  It makes cross-architecture compilation simpler, as
well as running 32bit programs on 64bit systems.

Under the old layout, library files would be placed in /usr/lib,
e.g. /usr/lib/libumfpack.so.  In the new multiarch layout, they should
be placed in /usr/lib/<arch>/usr/lib/<arch>, 
e.g. /usr/lib/x86_64-linux-gnu/libumfpack.so.5.6.2

What's happened here is that libsuitesparse-dev has been updated to the
new multiarch layout, and petsc is build against that multiarch
installation of suitesparse.

libsuitesparse-metis-dev has not been updated for a long time, so it
still places files in the old /usr/lib directory. It needs to be
updated for multiarch, to place the files in /usr/lib/<arch>.  It's not
hard to do, but because parmetis is not DFSG-free (it's in the non-free 
section), libraries using it (in the contrib section) don't get as much
attention.

You've found one workaround, hacking the dolfin library list
in /usr/share/dolfin/cmake/DOLFINTargets-relwithdebinfo.cmake

Another clumsy temporary workaround is to create links in the multiarch
directory with something like
   for l in `dpkg -L libsuitesparse-metis-dev | grep -E "/usr/lib/lib.*.so|/usr/lib/lib.*.a"`; 
      do echo ln -s $l /usr/lib/`dpkg-architecture -qDEB_TARGET_MULTIARCH`/`basename $l`; 
   done
(with libsuitesparse-dev uninstalled)

Drew



More information about the debian-science-maintainers mailing list