Your message dated Tue, 25 Dec 2007 09:57:03 -0600
with message-id <[EMAIL PROTECTED]>
and subject line GSL linking issue with new '--as-needed' option to GNU ld 
[Was: Bug#456898: libgsl0ldbl: Uses symbols from libcblas.so, but not  linked 
with it]
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: libgsl0ldbl
Version: 1.10-2
Severity: serious

libgsl is using symbols from libcblas.so, but is not linked with it. That
breaks at link time when -Wl,--as-needed is used, which is now the
default for programs using qmake.

ldd -r /usr/lib/libgsl.so
        libm.so.6 => /lib/libm.so.6 (0x00002b23fc6c6000)
        libc.so.6 => /lib/libc.so.6 (0x00002b23fc947000)
        /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
undefined symbol: cblas_ctrmv   (/usr/lib/libgsl.so)
undefined symbol: cblas_zswap   (/usr/lib/libgsl.so)
undefined symbol: cblas_zsymm   (/usr/lib/libgsl.so)
undefined symbol: cblas_cgeru   (/usr/lib/libgsl.so)
undefined symbol: cblas_sgemm   (/usr/lib/libgsl.so)
undefined symbol: cblas_ctrsv   (/usr/lib/libgsl.so)
undefined symbol: cblas_sgemv   (/usr/lib/libgsl.so)
undefined symbol: cblas_srotg   (/usr/lib/libgsl.so)
undefined symbol: cblas_zgemm   (/usr/lib/libgsl.so)
undefined symbol: cblas_cdotu_sub       (/usr/lib/libgsl.so)
undefined symbol: cblas_dznrm2  (/usr/lib/libgsl.so)
undefined symbol: cblas_ddot    (/usr/lib/libgsl.so)
undefined symbol: cblas_csymm   (/usr/lib/libgsl.so)
undefined symbol: cblas_cher2k  (/usr/lib/libgsl.so)
undefined symbol: cblas_zdotu_sub       (/usr/lib/libgsl.so)
undefined symbol: cblas_sdot    (/usr/lib/libgsl.so)
undefined symbol: cblas_sdsdot  (/usr/lib/libgsl.so)
undefined symbol: cblas_cgerc   (/usr/lib/libgsl.so)
undefined symbol: cblas_scnrm2  (/usr/lib/libgsl.so)
undefined symbol: cblas_ctrmm   (/usr/lib/libgsl.so)
undefined symbol: cblas_sscal   (/usr/lib/libgsl.so)
undefined symbol: cblas_strmm   (/usr/lib/libgsl.so)
undefined symbol: cblas_zcopy   (/usr/lib/libgsl.so)
undefined symbol: cblas_dsyrk   (/usr/lib/libgsl.so)
undefined symbol: cblas_cherk   (/usr/lib/libgsl.so)
undefined symbol: cblas_zherk   (/usr/lib/libgsl.so)
undefined symbol: cblas_zher    (/usr/lib/libgsl.so)
undefined symbol: cblas_ztrmv   (/usr/lib/libgsl.so)
undefined symbol: cblas_drotmg  (/usr/lib/libgsl.so)
undefined symbol: cblas_dswap   (/usr/lib/libgsl.so)
undefined symbol: cblas_scopy   (/usr/lib/libgsl.so)
undefined symbol: cblas_scasum  (/usr/lib/libgsl.so)
undefined symbol: cblas_zscal   (/usr/lib/libgsl.so)
undefined symbol: cblas_drotg   (/usr/lib/libgsl.so)
undefined symbol: cblas_zdotc_sub       (/usr/lib/libgsl.so)
undefined symbol: cblas_cscal   (/usr/lib/libgsl.so)
undefined symbol: cblas_caxpy   (/usr/lib/libgsl.so)
undefined symbol: cblas_zsyr2k  (/usr/lib/libgsl.so)
undefined symbol: cblas_ssyr2k  (/usr/lib/libgsl.so)
undefined symbol: cblas_csyr2k  (/usr/lib/libgsl.so)
undefined symbol: cblas_ztrsm   (/usr/lib/libgsl.so)
undefined symbol: cblas_ctrsm   (/usr/lib/libgsl.so)
undefined symbol: cblas_ssymm   (/usr/lib/libgsl.so)
undefined symbol: cblas_cdotc_sub       (/usr/lib/libgsl.so)
undefined symbol: cblas_zher2k  (/usr/lib/libgsl.so)
undefined symbol: cblas_saxpy   (/usr/lib/libgsl.so)
undefined symbol: cblas_idamax  (/usr/lib/libgsl.so)
undefined symbol: cblas_snrm2   (/usr/lib/libgsl.so)
undefined symbol: cblas_dsdot   (/usr/lib/libgsl.so)
undefined symbol: cblas_cher    (/usr/lib/libgsl.so)
undefined symbol: cblas_dger    (/usr/lib/libgsl.so)
undefined symbol: cblas_cher2   (/usr/lib/libgsl.so)
undefined symbol: cblas_dzasum  (/usr/lib/libgsl.so)
undefined symbol: cblas_dsyr2   (/usr/lib/libgsl.so)
undefined symbol: cblas_ssyrk   (/usr/lib/libgsl.so)
undefined symbol: cblas_strmv   (/usr/lib/libgsl.so)
undefined symbol: cblas_dgemv   (/usr/lib/libgsl.so)
undefined symbol: cblas_cgemm   (/usr/lib/libgsl.so)
undefined symbol: cblas_dasum   (/usr/lib/libgsl.so)
undefined symbol: cblas_dsymv   (/usr/lib/libgsl.so)
undefined symbol: cblas_srotm   (/usr/lib/libgsl.so)
undefined symbol: cblas_sswap   (/usr/lib/libgsl.so)
undefined symbol: cblas_dtrmv   (/usr/lib/libgsl.so)
undefined symbol: cblas_isamax  (/usr/lib/libgsl.so)
undefined symbol: cblas_zhemv   (/usr/lib/libgsl.so)
undefined symbol: cblas_zaxpy   (/usr/lib/libgsl.so)
undefined symbol: cblas_dcopy   (/usr/lib/libgsl.so)
undefined symbol: cblas_sasum   (/usr/lib/libgsl.so)
undefined symbol: cblas_dsyr    (/usr/lib/libgsl.so)
undefined symbol: cblas_strsm   (/usr/lib/libgsl.so)
undefined symbol: cblas_drot    (/usr/lib/libgsl.so)
undefined symbol: cblas_ztrsv   (/usr/lib/libgsl.so)
undefined symbol: cblas_izamax  (/usr/lib/libgsl.so)
undefined symbol: cblas_ssymv   (/usr/lib/libgsl.so)
undefined symbol: cblas_chemm   (/usr/lib/libgsl.so)
undefined symbol: cblas_zgeru   (/usr/lib/libgsl.so)
undefined symbol: cblas_dtrsv   (/usr/lib/libgsl.so)
undefined symbol: cblas_sger    (/usr/lib/libgsl.so)
undefined symbol: cblas_srot    (/usr/lib/libgsl.so)
undefined symbol: cblas_dsymm   (/usr/lib/libgsl.so)
undefined symbol: cblas_ztrmm   (/usr/lib/libgsl.so)
undefined symbol: cblas_zdscal  (/usr/lib/libgsl.so)
undefined symbol: cblas_zher2   (/usr/lib/libgsl.so)
undefined symbol: cblas_ssyr    (/usr/lib/libgsl.so)
undefined symbol: cblas_dtrmm   (/usr/lib/libgsl.so)
undefined symbol: cblas_zgerc   (/usr/lib/libgsl.so)
undefined symbol: cblas_csscal  (/usr/lib/libgsl.so)
undefined symbol: cblas_dsyr2k  (/usr/lib/libgsl.so)
undefined symbol: cblas_chemv   (/usr/lib/libgsl.so)
undefined symbol: cblas_dnrm2   (/usr/lib/libgsl.so)
undefined symbol: cblas_drotm   (/usr/lib/libgsl.so)
undefined symbol: cblas_icamax  (/usr/lib/libgsl.so)
undefined symbol: cblas_zgemv   (/usr/lib/libgsl.so)
undefined symbol: cblas_zhemm   (/usr/lib/libgsl.so)
undefined symbol: cblas_cgemv   (/usr/lib/libgsl.so)
undefined symbol: cblas_ssyr2   (/usr/lib/libgsl.so)
undefined symbol: cblas_strsv   (/usr/lib/libgsl.so)
undefined symbol: cblas_dscal   (/usr/lib/libgsl.so)
undefined symbol: cblas_dgemm   (/usr/lib/libgsl.so)
undefined symbol: cblas_srotmg  (/usr/lib/libgsl.so)
undefined symbol: cblas_dtrsm   (/usr/lib/libgsl.so)
undefined symbol: cblas_ccopy   (/usr/lib/libgsl.so)
undefined symbol: cblas_zsyrk   (/usr/lib/libgsl.so)
undefined symbol: cblas_cswap   (/usr/lib/libgsl.so)
undefined symbol: cblas_daxpy   (/usr/lib/libgsl.so)
undefined symbol: cblas_csyrk   (/usr/lib/libgsl.so)


-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.23-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libgsl0ldbl depends on:
ii  libc6                         2.7-4      GNU C Library: Shared libraries

libgsl0ldbl recommends no packages.

-- no debconf information



--- End Message ---
--- Begin Message ---
Sorry for the delayed response. Comcast decided to no longer server my
(old-ish) cable modem.  Back now...

On 21 December 2007 at 17:20, Aurelien Jarno wrote:
| Dirk Eddelbuettel a écrit :
| > severity 456898 wishlist
| > tags 456898 + upstream
| > tags 456898 + wontfix
| > thanks
| > 
| > On 19 December 2007 at 11:53, Brian Gough wrote:
| > | At Tue, 18 Dec 2007 09:23:30 -0600,
| > | Dirk Eddelbuettel wrote:
| > | >    > /usr/lib/libgsl.so: undefined reference to `cblas_zher2k'
| > | >    > /usr/lib/libgsl.so: undefined reference to `cblas_strsv'
| > | >    > /usr/lib/libgsl.so: undefined reference to `cblas_zdotc_sub'
| > | >    [ many more of these ]
| > | > 
| > | > Can you see a way forward on this?  Is is maybe a question of link 
order, ie
| > | > could -lgslcblas -lgsl be an answer?
| > | 
| > | The option -Wl,--as-needed needs to be disabled in some way, if it's
| > | applied globally it's certainly not compatible with libraries that
| > | depend on other libraries (surely a fairly common occurrence?).  The
| > | link order is not a factor.
| > | 
| > | Maybe there is some official way to turn off that feature in qmake, or
| > | to make it behave more intelligently with regard to external libraries
| > | vs Qt libraries.  Otherwise one could put the gsl library at the end
| > | of the libraries list with -Wl,--no-as-needed:
| > | 
| > |     ....   -Wl,--no-as-needed -lgsl -lgslcblas -lm
| > 
| > As maintainer, I think I concur. GSL made an upstream decision to keep 
libgsl
| > and libgslcblas in two libraries --- IIRC this allows to eg substitute
| > optimised Blas like Atlas or Goto.
| > 
| > I don't see how qmake can impose an upstream redesign on other libraries, 
and
| 
| qmake doesn't impose anything new. This is already imposed by the Debian
| Policy for a long time (section 10.2):
| 
| | Although not enforced by the build tools, shared libraries must be
| | linked against all libraries that they use symbols from in the same
| | way that binaries are.

I see neither the relevance of this quote (as GSL correctly links against
everything it uses itself) not the connection to the issue under discussion
(the as-needed flag).

Also, I have now had a chance to glance at the longish thread on the
debian-devel list, showing that it is far from clear that this is in fact
established Debian Policy.  Enough sensible folks raised sensible concerns.

Because of this, and of course because upstream designed it to be used the
way it is, and works, I do not consider this to be a bug in Debian's GSL
package.  If there are build failures in 'clients' of GSL, they will have to
adjust their build process.

I am closing the Debian bug report.

Best wishes, and season's greetings.

Dirk

| | This ensures the correct functioning of the
| | shlibs system and guarantees that all libraries can be safely opened
| | with dlopen(). Packagers may wish to use the gcc option -Wl,-z,defs
| | when building a shared library. Since this option enforces symbol
| | resolution at build time, a missing library reference will be caught
| | early as a fatal build error.
| 
| > I do not plan on implmenting one either as I value consistency with upstream
| > much higher (and would have no time anyway...)  As Brian suggests, there 
also
| > seems to be a workaround. 
| > 
| > I reset bug levels and tags accordingly. 
| > 
| > Thanks, Dirk
| > 
| > | 
| > | -- 
| > | Brian Gough
| > | 
| > 
| 
| 
| -- 
|   .''`.  Aurelien Jarno                   | GPG: 1024D/F1BCDB73
|  : :' :  Debian developer           | Electrical Engineer
|  `. `'   [EMAIL PROTECTED]         | [EMAIL PROTECTED]
|    `-    people.debian.org/~aurel32 | www.aurel32.net

-- 
Three out of two people have difficulties with fractions.


--- End Message ---

Reply via email to