Bug#725673: libopenblas-base: No direct linking of openblas possible, always redirects to libblas.so.3.
Sébastien Villemot
sebastien at debian.org
Mon Oct 7 09:36:14 UTC 2013
Control: severity -1 wishlist
Control: tags -1 - upstream
Le lundi 07 octobre 2013 à 11:06 +0200, Martin Koehler a écrit :
> Package: libopenblas-base
> Version: 0.2.8-2
> Severity: important
> Tags: upstream
>
> Dear Maintainer,
>
> I am using openblas on debian wheezy and linked my programs explicitly (for
> benchmarking purpose and not to run update-alternatives as root everytime)
> using
> $ export LD_LIBRARY_PATH=/usr/lib/openblas-base/
> $ gcc -o test.openblas -L/usr/lib/openblas-base test.c -lopenblas
> and got an binary which depends on libopenblas.so.
>
> Now we update to Debian Testing/Jessie and the following happened:
> $ export LD_LIBRARY_PATH=/usr/lib/openblas-base/
> $ gcc -o test.openblas -L/usr/lib/openblas-base test.c -lopenblas
> $ ldd test.openblas
> linux-gate.so.1 (0xb76e5000)
> libblas.so.3 => /usr/lib/libblas.so.3 (0xb65d5000)
> libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb6426000)
> libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb63e2000)
> libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
> (0xb63c7000)
> /lib/ld-linux.so.2 (0xb76e6000)
>
> which does not any longer include Openblas directly and forces to use the
> update-alternative system. I figured out that this behavior was introduced to
> solve bug #687349 ( see the libblas3-soname.patch). I think this behavior is
> not helpful for every day live. In contrast if a want to do the same using
> ATLAS I can link againf libf77blas and libatlas and it works without this
> issue.
>
> I think there must be another solution to solve bug #687349 without this "bad"
> soname trick. In case of ATLAS there is a separate library which contains all
> dependencies to ATLAS but it still allows to use ATLAS explicitly overriding
> the update-alternatives system.
First, I am convinced that the old behaviour (in wheezy) was buggy and
that the new behaviour (in jessie/sid) is right. The fact that the
soname was libopenblas.so.0 meant that programs linked with -lblas were
*not* respecting the alternatives system. This is actually a wider
problem than #687349. The fix was indeed to set the soname of the
library to libblas.so.3. I don't intend to revert that change.
Now, your problem is a bit different. You are manipulating the dynamic
linker (with the -L flag and also by modifying the LD_LIBRARY_PATH
variable) to directly link to openblas, bypassing the alternatives
system. This was working in wheezy, but more by chance rather than
because of a conscious choice by the maintainers.
However, I understand your need for the possibility to bypass the
alternatives system. The only solution that I see is to have a second
binary of the library, identical to the other one, except that it would
have the soname equal to libopenblas.so.0. Also, that binary would have
to go to /usr/lib/<multiarch>/ (without the trailing "openblas"
subdirectory), so that manipulating the linker with -L and
LD_LIBRARY_PATH would not be needed.
I am open to implement the above solution, even though I don't like too
much the duplication of binary code that it entails.
Sylvestre: do you have any better idea?
--
.''`. Sébastien Villemot
: :' : Debian Developer
`. `' http://www.dynare.org/sebastien
`- GPG Key: 4096R/381A7594
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.alioth.debian.org/pipermail/debian-science-maintainers/attachments/20131007/2aaf7e1e/attachment-0001.sig>
More information about the debian-science-maintainers
mailing list