Bug 33937 - avrdude was compiled without usb support
Summary: avrdude was compiled without usb support
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: avrdude (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P3 normal
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-09-28 18:54 MSK by Alexandr
Modified: 2018-08-23 01:17 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexandr 2017-09-28 18:54:59 MSK
avrdude скомпилирована без поддержки юсб. Исправьте пожалуйста или подскажите как исправить
Comment 1 Andrey Cherepanov 2017-09-28 19:14:23 MSK
На Sisyphus.
Comment 2 Alexandr 2017-09-28 19:27:47 MSK
Что значит "На Sisyphus"?
Comment 3 Aleksey Borisenkov 2017-09-29 01:59:03 MSK
А почему вы считаете, что нет поддержки USB? Как это посмотреть?
Например с USBASP у меня avrdude работает нормально.
Comment 4 Aleksey Borisenkov 2017-09-29 02:03:49 MSK
И, к тому же:
$ ldd /usr/bin/avrdude | grep usb
	libusb-1.0.so.0 => /lib/libusb-1.0.so.0 (0xb773c000)
Comment 5 Alexandr 2017-09-29 12:22:47 MSK
У меня выдает сообщение, что avrdude скомпилирована без поддержки usb
Comment 6 Aleksey Borisenkov 2017-09-29 16:02:10 MSK
А команду, которая это сообщение выдаёт, можно увидеть? И версию пакета.
Comment 7 Alexandr 2017-09-29 19:39:54 MSK
avrdude 6.3 устанавливал через Synaptic
avrdude -p t13 -c stk500v2 -P avrdoper
Comment 8 Alexandr 2017-09-29 19:42:02 MSK
(In reply to comment #7)
> avrdude 6.3 устанавливал через Synaptic
> avrdude -p t13 -c stk500v2 -P avrdoper
avrdude: Version 6.3, compiled on Aug  9 2017 at 16:49:59
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is "/home/alex/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : avrdoper
         Using Programmer              : stk500v2
avrdude was compiled without usb support.

avrdude done.  Thank you.
Comment 9 Aleksey Borisenkov 2017-09-29 21:49:45 MSK
Ага, понятно. Разные части avrdude написаны с использованием разных библиотек.
SUBasp использует libusb-1.0, а stk500v2 требует старой libusb.

Нужно добавить в сборочные зависимости libusb-compat-devel и пересобрать пакет.
Comment 10 Alexandr 2017-09-30 00:31:40 MSK
А как это сделать?
Comment 11 Evgeny Sinelnikov 2017-09-30 01:20:34 MSK
(В ответ на комментарий №9)
> Ага, понятно. Разные части avrdude написаны с использованием разных библиотек.
> SUBasp использует libusb-1.0, а stk500v2 требует старой libusb.

В мне это непонятно. Из чего следует, что "Разные части avrdude написаны с использованием разных библиотек"?

> Нужно добавить в сборочные зависимости libusb-compat-devel и пересобрать пакет.

[sin@centrit006 ~]$ rsync rsync://rsync.altlinux.org/ALTLinux/Sisyphus/files/x86_64/RPMS/avrdude-6.3*
Welcome to ALT Linux Team public rsync archive!

-rw-r--r--        281,035 2017/07/27 12:06:02 avrdude-6.3-alt1.S1.x86_64.rpm
[sin@centrit006 ~]$ rsync rsync://rsync.altlinux.org/ALTLinux/Sisyphus/files/x86_64/RPMS/avrdude-6.3* .
Welcome to ALT Linux Team public rsync archive!

[sin@centrit006 ~]$ rpm -qpR avrdude-6.3-alt1.S1.x86_64.rpm 
/bin/sh  
/bin/sh  
/lib64/ld-linux-x86-64.so.2  
libc.so.6(GLIBC_2.14)(64bit)  
libc.so.6(GLIBC_2.15)(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libc.so.6(GLIBC_2.7)(64bit)  
libelf.so.1()(64bit) >= set:kg3IPkqeRua1X8UFX5Tf8qLKEZBe1i3IDysd1
rpmlib(SetVersions)  
libelf.so.1(ELFUTILS_1.0)(64bit)  
libelf.so.1(ELFUTILS_1.5)(64bit)  
libftdi1.so.2()(64bit) >= set:kg1x6Lx22DeyL1S4EtsPUhUmvso5vOKeW6p11
libm.so.6(GLIBC_2.2.5)(64bit)  
libpthread.so.0(GLIBC_2.2.5)(64bit)  
libreadline.so.6()(64bit) >= set:nlIfCiwp4
libusb-1.0.so.0()(64bit) >= set:kgIXMHqbFAsqD2uB7H4xwDp9f
rtld(GNU_HASH)  
rpmlib(PayloadIsLzma)

[sin@centrit006 ~]$ rpm -q --whatprovides "libusb-1.0.so.0()(64bit)"
libusb-1.0.21-alt0.M80P.1

Так, что надо разобраться, почему так получилось, что вот этот код, срабатывает после сборки:
stk500v2.c-#if defined(HAVE_LIBUSB)
stk500v2.c-    serdev = &usb_serdev;
stk500v2.c-    pinfo.usbinfo.vid = USB_VENDOR_ATMEL;
stk500v2.c-    pinfo.usbinfo.flags = 0;
stk500v2.c-    pinfo.usbinfo.pid = USB_DEVICE_AVRDRAGON;
stk500v2.c-    pgm->fd.usb.max_xfer = USBDEV_MAX_XFER_MKII;
stk500v2.c-    pgm->fd.usb.rep = USBDEV_BULK_EP_READ_MKII;
stk500v2.c-    pgm->fd.usb.wep = USBDEV_BULK_EP_WRITE_MKII;
stk500v2.c-    pgm->fd.usb.eep = 0;           /* no seperate EP for events */
stk500v2.c-#else
stk500v2.c:    avrdude_message(MSG_INFO, "avrdude was compiled without usb support.\n");
stk500v2.c-    return -1;
stk500v2.c-#endif
Comment 12 Aleksey Borisenkov 2017-09-30 01:50:30 MSK
(В ответ на комментарий №11)
> (В ответ на комментарий №9)
> > Ага, понятно. Разные части avrdude написаны с использованием разных библиотек.
> > USBasp использует libusb-1.0, а stk500v2 требует старой libusb.
> 
> А мне это непонятно. Из чего следует, что "Разные части avrdude написаны с
> использованием разных библиотек"?

Ну я код смотрел, оттуда предположение.
В usbasp.c используется макрос HAVE_LIBUSB_1_0 и подключается libusb-1.0/libusb.h из libusb-devel
В stk500v2.c ориентируются на макрос HAVE_LIBUSB.
В configure HAVE_LIBUSB выставляется если удалось использовать -lusb из libusb-compat-devel, а HAVE_LIBUSB_1_0 если удалось использовать -lusb-1.0 из libusb-devel.
Почему используются две разные версии библиотеки я не знаю, можно ли избавиться от libusb-compat-devel тоже. Но вроде в одной программе они уживаются, я попробовал собрать с обеими, работа USBasp не сломалась, а stk500v2 больше не ругается на отсутствие поддержки USB (этого программатора у меня здесь нет).

Ну и насколько я понял по коду, если оставить только libusb-compat-devel, а libusb-devel убрать, то USBasp будет использовать compat-библиотеку. Остальные места не смотрел, возможно есть кто-то, кому нужна именно libusb-1.0.
Comment 13 Aleksey Borisenkov 2017-09-30 01:58:20 MSK
В ft245r.c, похоже, подходит только libusb-1.0.
Так что, вроде, получается, что для полной поддержки USB нужны обе версии библиотеки. Либо патчить код.
Comment 14 Evgeny Sinelnikov 2017-10-01 01:18:24 MSK
Да, всё верно... обе либы нужно добавить, вот так:
http://git.altlinux.org/people/sin/packages/avrdude.git?p=avrdude.git;a=commitdiff;h=34c83dd749b0c08032c953d1b872dbb69015e5e1;hp=8c792bf19a7aa5e1ddb3bd39d292b4a5249a9a80

Отправил на сборку в сизиф:
#189872 BUILDING #1 [locked] sisyphus avrdude.git=6.3-alt2%ubt
Comment 15 Repository Robot 2017-10-01 01:25:50 MSK
avrdude-6.3-alt2.S1 -> sisyphus:

Sun Oct 01 2017 Evgeny Sinelnikov <sin@altlinux.ru> 6.3-alt2.S1
- Rebuild with libusb-compat-devel due needs for stk500v2 (ALT #33937)
Comment 16 Alexandr 2017-10-01 22:43:03 MSK
Как его теперь установить, чтоб проверить?
Comment 17 Alexandr 2017-10-01 23:02:26 MSK
(В ответ на комментарий №16)
> Как его теперь установить, чтоб проверить?
Спасибо! Всё работает отлично.