avrdude-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avrdude-dev] [bug #36713] config assumes obsolete libusb API


From: anonymous
Subject: [avrdude-dev] [bug #36713] config assumes obsolete libusb API
Date: Sat, 23 Jun 2012 22:02:56 +0000
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2

URL:
  <http://savannah.nongnu.org/bugs/?36713>

                 Summary: config assumes obsolete libusb API
                 Project: AVR Downloader/UploaDEr
            Submitted by: None
            Submitted on: Sat 23 Jun 2012 10:02:55 PM UTC
                Category: None
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: Jeff Inman
        Originator Email: address@hidden
             Open/Closed: Open
         Discussion Lock: Any

    _______________________________________________________

Details:

If you build libusb 1.0.9, and then using that to build avrdude, you might
have a config something like this (with tcsh):

    (setenv CPPFLAGS -I.../libusb-1.0.9/installed/include/libusb-1.0; setenv
LDFLAGS  -L.../libusb-1.0.9/installed/lib; setenv LIBS -lusb-1.0; ./configure
--prefix=`pwd`/installed )


The last line in the build process would look something like this:

    gcc -Wall -Wno-pointer-sign -g -O2  -L.../libusb-1.0.9/installed/lib -o
avrdude avrdude-main.o avrdude-term.o ./libavrdude.a  -lusb-1.0   -lm
-lreadline -lncurses -ltermcap -lusb-1.0


clearly, we're linking with libusb, but running avrdude with a usb programmer
then spits out this message:

    avrdude: error: no usb support. Please compile again with libusb
installed.
    avrdude: programmer operation not supported

    avrdude done.  Thank you.


Turns out the problem is this part of the configure file [line 4499]:

LIBS="-lusb  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
#ifdef __cplusplus
extern "C"
#endif
char usb_get_string_simple ();
int
main ()
{
return usb_get_string_simple ();
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_usb_usb_get_string_simple=yes
else
  ac_cv_lib_usb_usb_get_string_simple=no
fi


The problem is that get_string_simple() is obsolete
libusb-1.0.(http://libusb.org/wiki/APIs says the 0.1 API is "deprecated and
unmaintained since many years")  There is apparently a libusb-compat-0.1
version that provides 0.1 API via the 1.0 substrate.

You probably have lots of other things to worry about, before updating your
USB interaction.  But I find lots of evidence on the web of folks running into
this and being frustrated.  I suppose a temporary improvement would be to
produce a better warning, maybe something like this:

    avrdude: error: no usb support via libusb-0.1. Please compile again with
libusb-0.1 installed.
    avrdude: programmer operation not supported

    avrdude done.  Thank you.




Thanks for the tool, though.

Jeff











    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?36713>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]