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