diff options
-rw-r--r-- | dev-libs/libusb/ChangeLog | 8 | ||||
-rw-r--r-- | dev-libs/libusb/files/libusb-0.1.12-no-infinite-bulk.patch | 24 | ||||
-rw-r--r-- | dev-libs/libusb/libusb-0.1.12-r4.ebuild | 69 |
3 files changed, 100 insertions, 1 deletions
diff --git a/dev-libs/libusb/ChangeLog b/dev-libs/libusb/ChangeLog index 02611dc151f4..9c615f94a58a 100644 --- a/dev-libs/libusb/ChangeLog +++ b/dev-libs/libusb/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for dev-libs/libusb # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/libusb/ChangeLog,v 1.80 2008/06/07 00:59:04 robbat2 Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/libusb/ChangeLog,v 1.81 2008/06/25 03:25:44 robbat2 Exp $ + +*libusb-0.1.12-r4 (25 Jun 2008) + + 25 Jun 2008; Robin H. Johnson <robbat2@gentoo.org> + +files/libusb-0.1.12-no-infinite-bulk.patch, +libusb-0.1.12-r4.ebuild: + Bug #225879, fix infinite looping during usb_bulk operations. *libusb-0.1.12-r3 (07 Jun 2008) diff --git a/dev-libs/libusb/files/libusb-0.1.12-no-infinite-bulk.patch b/dev-libs/libusb/files/libusb-0.1.12-no-infinite-bulk.patch new file mode 100644 index 000000000000..563397d2fea3 --- /dev/null +++ b/dev-libs/libusb/files/libusb-0.1.12-no-infinite-bulk.patch @@ -0,0 +1,24 @@ +Patch-from: http://bugs.gentoo.org/show_bug.cgi?id=225879 +Gentoo-Bug: 225879 +Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> + +Prevents an infinite loop if device is removed during usb_bulk_read or +usb_bulk_write. + +diff -Naur libusb-0.1.12/linux.c libusb-0.1.12-new/linux.c +--- libusb-0.1.12/linux.c 2006-03-04 04:52:46.000000000 +0200 ++++ libusb-0.1.12-new/linux.c 2008-06-11 14:22:20.000000000 +0300 +@@ -220,6 +220,13 @@ + waiting = 1; + context = NULL; + while (!urb.usercontext && ((ret = ioctl(dev->fd, IOCTL_USB_REAPURBNDELAY, &context)) == -1) && waiting) { ++ if (ret == -1) ++ { ++ if (errno == ENODEV) ++ { ++ return -ENODEV; ++ } ++ } + tv.tv_sec = 0; + tv.tv_usec = 1000; // 1 msec + select(dev->fd + 1, NULL, &writefds, NULL, &tv); //sub second wait diff --git a/dev-libs/libusb/libusb-0.1.12-r4.ebuild b/dev-libs/libusb/libusb-0.1.12-r4.ebuild new file mode 100644 index 000000000000..e48b88a2f102 --- /dev/null +++ b/dev-libs/libusb/libusb-0.1.12-r4.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/libusb/libusb-0.1.12-r4.ebuild,v 1.1 2008/06/25 03:25:44 robbat2 Exp $ + +WANT_AUTOMAKE="latest" +WANT_AUTOCONF="latest" +inherit eutils libtool autotools toolchain-funcs + +DESCRIPTION="Userspace access to USB devices" +HOMEPAGE="http://libusb.sourceforge.net/" +SRC_URI="mirror://sourceforge/libusb/${P}.tar.gz" + +LICENSE="LGPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="debug doc nocxx" +RESTRICT="test" + +RDEPEND="" +DEPEND="doc? ( app-text/openjade + app-text/docbook-dsssl-stylesheets + app-text/docbook-sgml-utils + ~app-text/docbook-sgml-dtd-4.2 )" + +src_unpack() { + unpack ${A} + cd "${S}" + sed -i -e 's:-Werror::' Makefile.am + sed -i 's:AC_LANG_CPLUSPLUS:AC_PROG_CXX:' configure.in #213800 + epatch "${FILESDIR}"/${PV}-fbsd.patch + use nocxx && epatch "${FILESDIR}"/${PN}-0.1.12-nocpp.patch + epatch "${FILESDIR}"/${PN}-0.1.12-no-infinite-bulk.patch + eautoreconf + elibtoolize + + # Ensure that the documentation actually finds the DTD it needs + docbookdtd="/usr/share/sgml/docbook/sgml-dtd-4.2/docbook.dtd" + sysid='"-//OASIS//DTD DocBook V4.2//EN"' + sed -r -i -e \ + "s,(${sysid}) \[\$,\1 \"${docbookdtd}\" \[,g" \ + "${S}"/doc/manual.sgml +} + +src_compile() { + econf \ + $(use_enable debug debug all) \ + $(use_enable doc build-docs) \ + --libdir /usr/$(get_libdir) \ + || die "econf failed" + emake || die "emake failed" +} + +src_install() { + emake -j1 DESTDIR="${D}" install || die "make install failed" + + dodir /$(get_libdir) + mv "${D}"/usr/$(get_libdir)/*.so* "${D}"/$(get_libdir) \ + || die "Failed to put dynamic libs in /$(get_libdir)" + + use nocxx && rm -f "${D}"/usr/include/usbpp.h + + gen_usr_ldscript libusb.so + use nocxx || gen_usr_ldscript libusbpp.so + + dodoc AUTHORS NEWS README || die "dodoc failed" + if use doc ; then + dohtml doc/html/*.html || die "dohtml failed" + fi +} |