Package: libusb Version: 2:0.1.12-21 Severity: important Tags: patch Hello,
libusb-dev is a reverse-dependency of a lot of packages, so even if hurd-i386 does not have USB support, it will be easier to have a dummy libusb implementation that reports no device, than to have to disable the libusb-dev dependency in all packages, and then have to re-enable all of them when hurd-i386 gets USB support. The attached patchs do that: 09_dummy.diff adds a dumb backend, and 10_hurd.diff fixes an unfortunate use of PATH_MAX in the libusb API. Of course, re-autoreconf is needed (apparently, adding AC_PROG_CXX is needed along AC_PROG_CPLUSPLUS, otherwise aclocal chokes) Samuel -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.0.4 (SMP w/8 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash
Index: libusb-0.1.12/configure.in =================================================================== --- libusb-0.1.12.orig/configure.in 2009-05-22 17:47:19.000000000 +0000 +++ libusb-0.1.12/configure.in 2009-05-22 17:48:07.000000000 +0000 @@ -11,6 +11,7 @@ #undef LINUX_API #undef BSD_API #undef DARWIN_API +#undef DUMMY_API #undef HAVE_OLD_DEV_USB_USB_H @@ -89,6 +90,7 @@ LINUX_API=0 DARWIN_API=0 BSD_API=0 +DUMMY_API=0 AC_MSG_CHECKING(for what USB OS support) case $host in @@ -96,6 +98,7 @@ AC_DEFINE(LINUX_API, 1) AC_DEFINE(BSD_API, 0) AC_DEFINE(DARWIN_API, 0) + AC_DEFINE(DUMMY_API, 0) LINUX_API=1 os_support=linux AC_MSG_RESULT(Linux) @@ -105,6 +108,7 @@ AC_DEFINE(BSD_API, 1) AC_DEFINE(LINUX_API, 0) AC_DEFINE(DARWIN_API, 0) + AC_DEFINE(DUMMY_API, 0) BSD_API=1 os_support=bsd AC_MSG_RESULT(FreeBSD, OpenBSD and/or NetBSD) @@ -114,24 +118,33 @@ AC_DEFINE(DARWIN_API, 1) AC_DEFINE(LINUX_API, 0) AC_DEFINE(BSD_API, 0) + AC_DEFINE(DUMMY_API, 0) DARWIN_API=1 os_support=darwin AC_MSG_RESULT(Darwin and/or MacOS 10) OSLIBS="-Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation -Wl,-prebind" ;; *) - AC_MSG_RESULT(unknown operating system) - AC_MSG_ERROR(libusb does not support compiling for $host) + AC_DEFINE(DARWIN_API, 0) + AC_DEFINE(LINUX_API, 0) + AC_DEFINE(BSD_API, 0) + AC_DEFINE(DUMMY_API, 1) + DUMMY_API=1 + os_support=dummy + AC_MSG_RESULT(unknown operating system $host) + OSLIBS="" ;; esac AC_SUBST(DARWIN_API) AC_SUBST(LINUX_API) AC_SUBST(BSD_API) +AC_SUBST(DUMMY_API) AM_CONDITIONAL(LINUX_API, test "$os_support" = "linux") AM_CONDITIONAL(BSD_API, test "$os_support" = "bsd") AM_CONDITIONAL(DARWIN_API, test "$os_support" = "darwin") +AM_CONDITIONAL(DUMMY_API, test "$os_support" = "dummy") AC_SUBST(OSLIBS) Index: libusb-0.1.12/Makefile.am =================================================================== --- libusb-0.1.12.orig/Makefile.am 2009-05-22 17:47:19.000000000 +0000 +++ libusb-0.1.12/Makefile.am 2009-05-22 17:48:07.000000000 +0000 @@ -17,7 +17,7 @@ EXTRA_DIST = LICENSE libusb.spec.in libusb.spec libusb-config.in README.in README \ INSTALL.libusb.in INSTALL.libusb Doxyfile apidocs/header.html \ apidocs/footer.html apidocs/doxygen.css apidocs/doxygen.png libusb.pc.in -EXTRA_libusb_la_SOURCE = linux.c linux.h bsd.c darwin.c +EXTRA_libusb_la_SOURCE = linux.c linux.h bsd.c darwin.c dummy.c lib_LTLIBRARIES = libusb.la libusbpp.la @@ -36,7 +36,7 @@ PREBIND_FLAGS=-Wl,-seg1addr,0x01666000 PREBIND_FLAGSPP=-Wl,-seg1addr,0x01676000 else -OS_SUPPORT = +OS_SUPPORT = dummy.c endif endif endif Index: libusb-0.1.12/dummy.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ libusb-0.1.12/dummy.c 2009-05-22 17:47:34.000000000 +0000 @@ -0,0 +1,119 @@ +/* + * dummy USB support + * + * Derived from BSD version by Samuel Thibault + * + * This library is covered by the LGPL, read LICENSE for details. + */ + +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <stdio.h> +#include <fcntl.h> +#include <errno.h> +#include <assert.h> +#include <sys/time.h> +#include <sys/ioctl.h> + +#include "usbi.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +int usb_os_open(usb_dev_handle *dev) +{ + return 0; +} + +int usb_os_close(usb_dev_handle *dev) +{ + return 0; +} + +int usb_set_configuration(usb_dev_handle *dev, int configuration) +{ + return 0; +} + +int usb_claim_interface(usb_dev_handle *dev, int interface) +{ + return 0; +} + +int usb_release_interface(usb_dev_handle *dev, int interface) +{ + return 0; +} + +int usb_set_altinterface(usb_dev_handle *dev, int alternate) +{ + return 0; +} + +int usb_bulk_write(usb_dev_handle *dev, int ep, const char *bytes, int size, + int timeout) +{ + return -ENOSYS; +} + +int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, + int timeout) +{ + return -ENOSYS; +} + +int usb_interrupt_write(usb_dev_handle *dev, int ep, const char *bytes, int size, + int timeout) +{ + return -ENOSYS; +} + +int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, + int timeout) +{ + return -ENOSYS; +} + +int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, + int value, int index, char *bytes, int size, int timeout) +{ + return -ENOSYS; +} + +int usb_os_find_busses(struct usb_bus **busses) +{ + *busses = NULL; + return 0; +} + +int usb_os_find_devices(struct usb_bus *bus, struct usb_device **devices) +{ + *devices = NULL; + return 0; +} + +int usb_os_determine_children(struct usb_bus *bus) +{ + return -ENOSYS; +} + +void usb_os_init(void) +{ +} + +int usb_resetep(usb_dev_handle *dev, unsigned int ep) +{ + return -ENOSYS; +} + +int usb_clear_halt(usb_dev_handle *dev, unsigned int ep) +{ + return -ENOSYS; +} + +int usb_reset(usb_dev_handle *dev) +{ + return -ENOSYS; +} +
Index: libusb-0.1.12/usb.h.in =================================================================== --- libusb-0.1.12.orig/usb.h.in 2012-04-16 01:31:44.000000000 +0200 +++ libusb-0.1.12/usb.h.in 2012-04-16 01:35:04.000000000 +0200 @@ -240,10 +240,15 @@ * we must only add entries to the end of this structure. NEVER delete or * move members and only change types if you really know what you're doing. */ +#ifdef PATH_MAX +#define LIBUSB_PATH_MAX PATH_MAX +#else +#define LIBUSB_PATH_MAX 4096 +#endif struct usb_device { struct usb_device *next, *prev; - char filename[PATH_MAX + 1]; + char filename[LIBUSB_PATH_MAX + 1]; struct usb_bus *bus; @@ -261,7 +266,7 @@ struct usb_bus { struct usb_bus *next, *prev; - char dirname[PATH_MAX + 1]; + char dirname[LIBUSB_PATH_MAX + 1]; struct usb_device *devices; uint32_t location;