Package: avarice
Version: 2.4-2
Severity: grave
Tags: patch
Justification: renders package unusable

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

avarice is linked with the shared version of libbfd, but the
binutils-dev says :
"Note that building Debian packages which depend on the shared libbfd is
Not Allowed."
This results in a broken package in current debian unstable :

$ avarice
avarice: error while loading shared libraries: libbfd-2.16.91.so: cannot
open shared object file: No such file or directory

A fix for the problem is attached. The check for libbfd is from the Lush
project
(http://lush.cvs.sourceforge.net/*checkout*/lush/lush/configure.ac)

Remember to run autoreconf.

I've not reported this bug to upstream.


- -- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (990, 'unstable'), (550, 'testing'), (25, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17.7
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)  (ignored: 
LC_ALL set to fr_FR.UTF-8)

Versions of packages avarice depends on:
ii  binutils                2.17-2           The GNU assembler, linker and bina
ii  libc6                   2.3.6-18         GNU C Library: Shared libraries
ii  libgcc1                 1:4.1.1-10       GCC support library
ii  libstdc++6              4.1.1-10         The GNU Standard C++ Library v3
ii  libusb-0.1-4            2:0.1.12-2       userspace USB programming library

Versions of packages avarice recommends:
ii  gdb-avr                       6.4-1      The GNU Debugger for avr

- -- no debconf information


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFE08OKZmUHKLzaTmIRAiz6AJ9YQtvo93TeXnLkBY8zDwJjobirvgCfdqF/
m6iSgK5Qfks9FT8U5bjr9jU=
=qEUx
-----END PGP SIGNATURE-----
--- avarice-2.4.orig/configure.ac       2006-01-11 19:16:03.000000000 +0100
+++ avarice-2.4/configure.ac    2006-08-04 22:11:54.000000000 +0200
@@ -64,13 +64,82 @@
 fi
 AC_CHECK_LIB([intl], [dcgettext])
 AC_CHECK_LIB([iberty], [xmalloc])
-AC_CHECK_LIB([bfd], [bfd_init], , [ac_found_bfd=no])
-AC_CHECK_LIB([usb], [usb_get_string_simple])
+# bfd
+
+BFD_YES=''
+has_bfd=yes
+AC_CHECK_LIB(iberty, xmalloc)
+if test $ac_cv_lib_iberty_xmalloc = no; then
+  AC_CHECK_LIB(mmalloc, mmalloc)
+  AC_CHECK_LIB(iberty, xcalloc)
+fi
+AC_CHECK_HEADER(bfd.h,,has_bfd=no)
+AC_CHECK_LIB(bfd, bfd_init,,[has_bfd=no])
+AC_SUBST(BFD_YES)
+
+# Check if it compiles
+if test x$has_bfd = xyes ; then
+    n_LIBS=$LIBS
+    has_intl=
+    AC_CHECK_LIB(intl, dcgettext, [has_intl=yes],[has_intl=no])
+    i_LIBS=`echo $n_LIBS | sed -e 's/-liberty/& -lintl/'`
+    sn_LIBS=`echo $n_LIBS | sed -e 's/-lbfd\( -liberty\)*/-Wl,-Bstatic & 
-Wl,-Bdynamic/'`
+    si_LIBS=`echo $i_LIBS | sed -e 's/-lbfd\( -liberty\)*/-Wl,-Bstatic & 
-Wl,-Bdynamic/'`
+    LIBS=$sn_LIBS
+    AC_MSG_CHECKING([whether bfd works with -Bstatic])
+    AC_TRY_LINK([#include "bfd.h"],
+                [bfd_openr("junk1","default"); ],
+               [okay_bfd=yes],[okay_bfd=no]);
+    AC_MSG_RESULT($okay_bfd)
+    if test x$okay_bfd = xno ; then
+       if test x$has_intl = xyes ; then
+           LIBS=$si_LIBS
+           AC_MSG_CHECKING([whether bfd works with -Bstatic and -lintl])
+           AC_TRY_LINK([#include "bfd.h"],
+                   [bfd_openr("junk1","default"); ],
+                   [okay_bfd=yes],[okay_bfd=no]);
+           AC_MSG_RESULT($okay_bfd)
+       fi
+       if test x$okay_bfd = xno ; then
+           LIBS=$n_LIBS
+           AC_MSG_CHECKING([whether bfd works alone])
+           AC_TRY_LINK([#include "bfd.h"],
+                   [bfd_openr("junk1","default"); ],
+                   [okay_bfd=yes],[okay_bfd=no]);
+           AC_MSG_RESULT($okay_bfd)
+           if test x$okay_bfd = xno ; then
+               if test x$has_intl = xyes ; then
+                   LIBS=$i_LIBS
+                   AC_MSG_CHECKING([whether bfd works with -lintl])
+                   AC_TRY_LINK([#include "bfd.h"],
+                           [bfd_openr("junk1","default"); ],
+                           [okay_bfd=yes],
+                           [okay_bfd=no]);
+                   AC_MSG_RESULT($okay_bfd)
+               fi
+               if test x$okay_bfd = xno ; then
+                   LIBS=$n_LIBS
+               fi
+           fi
+       fi
+    fi
+    if test x$okay_bfd = xno ; then
+       has_bfd=no
+    fi
+fi
 
-if test "x$ac_found_bfd" = "xno"; then
-  AC_MSG_ERROR([You need to install libbfd.a from binutils.])
+if test x$has_bfd = xno ; then
+    AC_MSG_ERROR([Unable to locate BFD development files.
+-------------------------------------------------------------
+We were unable to locate required GNU binutils files.
+- Some Linux distributions do not install these by default.
+  You need to install the 'libbinutils-devel' package.
+- On other platforms, get GNU binutils on www.fsf.org.
+-----------------------------------------------------------------])
 fi
 
+AC_CHECK_LIB([usb], [usb_get_string_simple])
+
 # Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h 
sys/socket.h sys/time.h termios.h unistd.h bfd.h])

Reply via email to