From 3e8f86fe9c362d54e7c97184fe40dab01f22d8a1 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 04 2021 00:36:47 +0000 Subject: import libusbx-1.0.24-4.el9 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..810d34b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libusb-1.0.24.tar.bz2 diff --git a/.libusbx.metadata b/.libusbx.metadata new file mode 100644 index 0000000..4d9b532 --- /dev/null +++ b/.libusbx.metadata @@ -0,0 +1 @@ +d8d614b538f7c953b6e3b73f1eea5dc70820a7e2 SOURCES/libusb-1.0.24.tar.bz2 diff --git a/SOURCES/0001-linux_usbfs-Accept-sysfs-attributes-not-terminated-w.patch b/SOURCES/0001-linux_usbfs-Accept-sysfs-attributes-not-terminated-w.patch new file mode 100644 index 0000000..822fbe0 --- /dev/null +++ b/SOURCES/0001-linux_usbfs-Accept-sysfs-attributes-not-terminated-w.patch @@ -0,0 +1,60 @@ +From c486d01297a366aae8dcd3f715d0bfd8b995949b Mon Sep 17 00:00:00 2001 +From: Chris Dickens +Date: Mon, 8 Feb 2021 09:27:20 -0800 +Subject: [PATCH 1/2] linux_usbfs: Accept sysfs attributes not terminated with + newline + +Benjamin Berg reports that some CI systems that simulate sysfs devices +are causing libusb to report errors because such systems are not +conforming to the sysfs pattern of terminating attribute values with a +newline character. Reduce the severity of encountering such +non-conforming attibute values from an error that prevents enumeration +to a warning message. + +Closes #857 + +Signed-off-by: Chris Dickens +--- + libusb/os/linux_usbfs.c | 12 +++++++----- + libusb/version_nano.h | 2 +- + 2 files changed, 8 insertions(+), 6 deletions(-) + +diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c +index 4882c0f..ebf8cfe 100644 +--- a/libusb/os/linux_usbfs.c ++++ b/libusb/os/linux_usbfs.c +@@ -505,7 +505,7 @@ static int read_sysfs_attr(struct libusb_context *ctx, + if (fd < 0) + return fd; + +- r = read(fd, buf, sizeof(buf)); ++ r = read(fd, buf, sizeof(buf) - 1); + if (r < 0) { + r = errno; + close(fd); +@@ -523,16 +523,18 @@ static int read_sysfs_attr(struct libusb_context *ctx, + return 0; + } + +- /* The kernel does *not* NULL-terminate the string, but every attribute ++ /* The kernel does *not* NUL-terminate the string, but every attribute + * should be terminated with a newline character. */ + if (!isdigit(buf[0])) { + usbi_err(ctx, "attribute %s doesn't have numeric value?", attr); + return LIBUSB_ERROR_IO; + } else if (buf[r - 1] != '\n') { +- usbi_err(ctx, "attribute %s doesn't end with newline?", attr); +- return LIBUSB_ERROR_IO; ++ usbi_warn(ctx, "attribute %s doesn't end with newline?", attr); ++ } else { ++ /* Remove the terminating newline character */ ++ r--; + } +- buf[r - 1] = '\0'; ++ buf[r] = '\0'; + + errno = 0; + value = strtol(buf, &endptr, 10); +-- +2.29.2 + diff --git a/SOURCES/0001-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch b/SOURCES/0001-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch new file mode 100644 index 0000000..1908bf4 --- /dev/null +++ b/SOURCES/0001-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch @@ -0,0 +1,61 @@ +From f6d2cb561402c3b6d3627c0eb89e009b503d9067 Mon Sep 17 00:00:00 2001 +From: Chris Dickens +Date: Sun, 13 Dec 2020 15:49:19 -0800 +Subject: [PATCH] linux_usbfs: Fix parsing of descriptors for + multi-configuration devices + +Commit e2be556bd2 ("linux_usbfs: Parse config descriptors during device +initialization") introduced a regression for devices with multiple +configurations. The logic that verifies the reported length of the +configuration descriptors failed to count the length of the +configuration descriptor itself and would truncate the actual length by +9 bytes, leading to a parsing error for subsequent descriptors. + +Closes #825 + +Signed-off-by: Chris Dickens +--- + libusb/os/linux_usbfs.c | 12 ++++++++---- + libusb/version_nano.h | 2 +- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c +index fb2ed53..4d2dc8d 100644 +--- a/libusb/os/linux_usbfs.c ++++ b/libusb/os/linux_usbfs.c +@@ -641,7 +641,12 @@ static int seek_to_next_config(struct libusb_context *ctx, + uint8_t *buffer, size_t len) + { + struct usbi_descriptor_header *header; +- int offset = 0; ++ int offset; ++ ++ /* Start seeking past the config descriptor */ ++ offset = LIBUSB_DT_CONFIG_SIZE; ++ buffer += LIBUSB_DT_CONFIG_SIZE; ++ len -= LIBUSB_DT_CONFIG_SIZE; + + while (len > 0) { + if (len < 2) { +@@ -718,7 +723,7 @@ static int parse_config_descriptors(struct libusb_device *dev) + } + + if (priv->sysfs_dir) { +- /* ++ /* + * In sysfs wTotalLength is ignored, instead the kernel returns a + * config descriptor with verified bLength fields, with descriptors + * with an invalid bLength removed. +@@ -727,8 +732,7 @@ static int parse_config_descriptors(struct libusb_device *dev) + int offset; + + if (num_configs > 1 && idx < num_configs - 1) { +- offset = seek_to_next_config(ctx, buffer + LIBUSB_DT_CONFIG_SIZE, +- remaining - LIBUSB_DT_CONFIG_SIZE); ++ offset = seek_to_next_config(ctx, buffer, remaining); + if (offset < 0) + return offset; + sysfs_config_len = (uint16_t)offset; +-- +2.29.2 + diff --git a/SOURCES/0002-linux_usbfs-Gracefully-handle-buggy-devices-with-a-c.patch b/SOURCES/0002-linux_usbfs-Gracefully-handle-buggy-devices-with-a-c.patch new file mode 100644 index 0000000..b95a501 --- /dev/null +++ b/SOURCES/0002-linux_usbfs-Gracefully-handle-buggy-devices-with-a-c.patch @@ -0,0 +1,220 @@ +From f38f09da98acc63966b65b72029b1f7f81166bef Mon Sep 17 00:00:00 2001 +From: Chris Dickens +Date: Mon, 8 Feb 2021 11:56:13 -0800 +Subject: [PATCH 2/2] linux_usbfs: Gracefully handle buggy devices with a + configuration 0 + +The USB spec states that a configuration value of 0 is reserved and is +used to indicate the device in not configured (e.g. is in the address +state). Unfortunately some devices do exist that violate this and use 0 +as the bConfigurationValue of the configuration descriptor. + +Improve how the Linux backend handles such non-conformant devices by +adding special handling around the configuration value 0. Most devices +will not require this special handling, but for those that do there is +no way to distinguish between the device being unconfigured and using +configuration 0. + +Closes #850 + +Signed-off-by: Chris Dickens +--- + libusb/os/linux_usbfs.c | 94 ++++++++++++++++++++++++++--------------- + libusb/version_nano.h | 2 +- + 2 files changed, 60 insertions(+), 36 deletions(-) + +diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c +index ebf8cfe..3a1894c 100644 +--- a/libusb/os/linux_usbfs.c ++++ b/libusb/os/linux_usbfs.c +@@ -128,7 +128,7 @@ struct linux_device_priv { + void *descriptors; + size_t descriptors_len; + struct config_descriptor *config_descriptors; +- uint8_t active_config; /* cache val for !sysfs_available */ ++ int active_config; /* cache val for !sysfs_available */ + }; + + struct linux_device_handle_priv { +@@ -169,6 +169,21 @@ struct linux_transfer_priv { + int iso_packet_offset; + }; + ++static int dev_has_config0(struct libusb_device *dev) ++{ ++ struct linux_device_priv *priv = usbi_get_device_priv(dev); ++ struct config_descriptor *config; ++ uint8_t idx; ++ ++ for (idx = 0; idx < dev->device_descriptor.bNumConfigurations; idx++) { ++ config = &priv->config_descriptors[idx]; ++ if (config->desc->bConfigurationValue == 0) ++ return 1; ++ } ++ ++ return 0; ++} ++ + static int get_usbfs_fd(struct libusb_device *dev, mode_t mode, int silent) + { + struct libusb_context *ctx = DEVICE_CTX(dev); +@@ -574,22 +589,12 @@ static int sysfs_scan_device(struct libusb_context *ctx, const char *devname) + } + + /* read the bConfigurationValue for a device */ +-static int sysfs_get_active_config(struct libusb_device *dev, uint8_t *config) ++static int sysfs_get_active_config(struct libusb_device *dev, int *config) + { + struct linux_device_priv *priv = usbi_get_device_priv(dev); +- int ret, tmp; +- +- ret = read_sysfs_attr(DEVICE_CTX(dev), priv->sysfs_dir, "bConfigurationValue", +- UINT8_MAX, &tmp); +- if (ret < 0) +- return ret; + +- if (tmp == -1) +- tmp = 0; /* unconfigured */ +- +- *config = (uint8_t)tmp; +- +- return 0; ++ return read_sysfs_attr(DEVICE_CTX(dev), priv->sysfs_dir, "bConfigurationValue", ++ UINT8_MAX, config); + } + + int linux_get_device_address(struct libusb_context *ctx, int detached, +@@ -765,6 +770,9 @@ static int parse_config_descriptors(struct libusb_device *dev) + } + } + ++ if (config_desc->bConfigurationValue == 0) ++ usbi_warn(ctx, "device has configuration 0"); ++ + priv->config_descriptors[idx].desc = config_desc; + priv->config_descriptors[idx].actual_len = config_len; + +@@ -798,7 +806,7 @@ static int op_get_active_config_descriptor(struct libusb_device *dev, + { + struct linux_device_priv *priv = usbi_get_device_priv(dev); + void *config_desc; +- uint8_t active_config; ++ int active_config; + int r; + + if (priv->sysfs_dir) { +@@ -810,12 +818,12 @@ static int op_get_active_config_descriptor(struct libusb_device *dev, + active_config = priv->active_config; + } + +- if (active_config == 0) { ++ if (active_config == -1) { + usbi_err(DEVICE_CTX(dev), "device unconfigured"); + return LIBUSB_ERROR_NOT_FOUND; + } + +- r = op_get_config_descriptor_by_value(dev, active_config, &config_desc); ++ r = op_get_config_descriptor_by_value(dev, (uint8_t)active_config, &config_desc); + if (r < 0) + return r; + +@@ -863,17 +871,26 @@ static int usbfs_get_active_config(struct libusb_device *dev, int fd) + + /* we hit this error path frequently with buggy devices :( */ + usbi_warn(DEVICE_CTX(dev), "get configuration failed, errno=%d", errno); ++ ++ /* assume the current configuration is the first one if we have ++ * the configuration descriptors, otherwise treat the device ++ * as unconfigured. */ ++ if (priv->config_descriptors) ++ priv->active_config = (int)priv->config_descriptors[0].desc->bConfigurationValue; ++ else ++ priv->active_config = -1; + } else if (active_config == 0) { +- /* some buggy devices have a configuration 0, but we're +- * reaching into the corner of a corner case here, so let's +- * not support buggy devices in these circumstances. +- * stick to the specs: a configuration value of 0 means +- * unconfigured. */ +- usbi_warn(DEVICE_CTX(dev), "active cfg 0? assuming unconfigured device"); ++ if (dev_has_config0(dev)) { ++ /* some buggy devices have a configuration 0, but we're ++ * reaching into the corner of a corner case here. */ ++ priv->active_config = 0; ++ } else { ++ priv->active_config = -1; ++ } ++ } else { ++ priv->active_config = (int)active_config; + } + +- priv->active_config = active_config; +- + return LIBUSB_SUCCESS; + } + +@@ -1004,9 +1021,9 @@ static int initialize_device(struct libusb_device *dev, uint8_t busnum, + usbi_warn(ctx, "Missing rw usbfs access; cannot determine " + "active configuration descriptor"); + if (priv->config_descriptors) +- priv->active_config = priv->config_descriptors[0].desc->bConfigurationValue; ++ priv->active_config = (int)priv->config_descriptors[0].desc->bConfigurationValue; + else +- priv->active_config = 0; /* No config dt */ ++ priv->active_config = -1; /* No config dt */ + + return LIBUSB_SUCCESS; + } +@@ -1428,22 +1445,27 @@ static int op_get_configuration(struct libusb_device_handle *handle, + uint8_t *config) + { + struct linux_device_priv *priv = usbi_get_device_priv(handle->dev); ++ int active_config; + int r; + + if (priv->sysfs_dir) { +- r = sysfs_get_active_config(handle->dev, config); ++ r = sysfs_get_active_config(handle->dev, &active_config); + } else { + struct linux_device_handle_priv *hpriv = usbi_get_device_handle_priv(handle); + + r = usbfs_get_active_config(handle->dev, hpriv->fd); + if (r == LIBUSB_SUCCESS) +- *config = priv->active_config; ++ active_config = priv->active_config; + } + if (r < 0) + return r; + +- if (*config == 0) +- usbi_err(HANDLE_CTX(handle), "device unconfigured"); ++ if (active_config == -1) { ++ usbi_warn(HANDLE_CTX(handle), "device unconfigured"); ++ active_config = 0; ++ } ++ ++ *config = (uint8_t)active_config; + + return 0; + } +@@ -1467,11 +1489,13 @@ static int op_set_configuration(struct libusb_device_handle *handle, int config) + return LIBUSB_ERROR_OTHER; + } + +- if (config == -1) +- config = 0; ++ /* if necessary, update our cached active config descriptor */ ++ if (!priv->sysfs_dir) { ++ if (config == 0 && !dev_has_config0(handle->dev)) ++ config = -1; + +- /* update our cached active config descriptor */ +- priv->active_config = (uint8_t)config; ++ priv->active_config = config; ++ } + + return LIBUSB_SUCCESS; + } +-- +2.29.2 + diff --git a/SPECS/libusbx.spec b/SPECS/libusbx.spec new file mode 100644 index 0000000..83e7679 --- /dev/null +++ b/SPECS/libusbx.spec @@ -0,0 +1,274 @@ +Summary: Library for accessing USB devices +Name: libusbx +Version: 1.0.24 +Release: 4%{?dist} +# upstream libusbx has merged back with libusb and is now called libusb again +# but we already have a libusb package for the old libusb-compat-0.1, renaming +# that to libusb-compat while at the same time giving this its name is a bit +# tricky, lets stick with the libusbx name for now +Source0: https://github.com/libusb/libusb/releases/download/v%{version}/libusb-%{version}.tar.bz2 +License: LGPLv2+ +URL: http://libusb.info +BuildRequires: systemd-devel doxygen libtool +BuildRequires: make +Provides: libusb1 = %{version}-%{release} +Obsoletes: libusb1 <= 1.0.9 + +Patch001: 0001-linux_usbfs-Accept-sysfs-attributes-not-terminated-w.patch +Patch002: 0001-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch +Patch003: 0002-linux_usbfs-Gracefully-handle-buggy-devices-with-a-c.patch + +%description +This package provides a way for applications to access USB devices. + +Libusbx is a fork of the original libusb, which is a fully API and ABI +compatible drop in for the libusb-1.0.9 release. The libusbx fork was +started by most of the libusb-1.0 developers, after the original libusb +project did not produce a new release for over 18 months. + +Note that this library is not compatible with the original libusb-0.1 series, +if you need libusb-0.1 compatibility install the libusb package. + + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: libusb1-devel = %{version}-%{release} +Obsoletes: libusb1-devel <= 1.0.9 + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%package devel-doc +Summary: Development files for %{name} +Provides: libusb1-devel-doc = %{version}-%{release} +Obsoletes: libusb1-devel-doc <= 1.0.9 +BuildArch: noarch + +%description devel-doc +This package contains API documentation for %{name}. + + +%package tests-examples +Summary: Tests and examples for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description tests-examples +This package contains tests and examples for %{name}. + + +%prep +%autosetup -p1 -n libusb-%{version} +chmod -x examples/*.c +mkdir -p m4 + + +%build +%configure --disable-static --enable-examples-build +%{make_build} +pushd doc +make docs +popd +pushd tests +make +popd + + +%install +%{make_install} +mkdir -p $RPM_BUILD_ROOT%{_bindir} +install -m 755 tests/.libs/stress $RPM_BUILD_ROOT%{_bindir}/libusb-test-stress +install -m 755 examples/.libs/testlibusb \ + $RPM_BUILD_ROOT%{_bindir}/libusb-test-libusb +# Some examples are very device-specific / require specific hw and miss --help +# So we only install a subset of more generic / useful examples +for i in fxload listdevs xusb; do + install -m 755 examples/.libs/$i \ + $RPM_BUILD_ROOT%{_bindir}/libusb-example-$i +done +rm $RPM_BUILD_ROOT%{_libdir}/*.la + + +%check +LD_LIBRARY_PATH=libusb/.libs ldd $RPM_BUILD_ROOT%{_bindir}/libusb-test-stress +LD_LIBRARY_PATH=libusb/.libs $RPM_BUILD_ROOT%{_bindir}/libusb-test-stress +LD_LIBRARY_PATH=libusb/.libs $RPM_BUILD_ROOT%{_bindir}/libusb-test-libusb +LD_LIBRARY_PATH=libusb/.libs $RPM_BUILD_ROOT%{_bindir}/libusb-example-listdevs + + +%ldconfig_scriptlets + + +%files +%license COPYING +%doc AUTHORS README ChangeLog +%{_libdir}/*.so.* + +%files devel +%{_includedir}/libusb-1.0 +%{_libdir}/*.so +%{_libdir}/pkgconfig/libusb-1.0.pc + +%files devel-doc +%doc doc/api-1.0 examples/*.c + +%files tests-examples +%{_bindir}/libusb-example-fxload +%{_bindir}/libusb-example-listdevs +%{_bindir}/libusb-example-xusb +%{_bindir}/libusb-test-stress +%{_bindir}/libusb-test-libusb + + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 1.0.24-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Fri Apr 16 2021 Mohan Boddu - 1.0.24-3 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Feb 16 2021 Benjamin Berg - 1.0.24-2 +- Pull in upstream bugfixes + Resolves: #1929148 + +* Thu Feb 11 2021 Victor Toso - 1.0.24-1 +- Update to 1.0.24 + +* Tue Jan 26 2021 Fedora Release Engineering - 1.0.23-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 1.0.23-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Mar 26 2020 Peter Robinson - 1.0.23-1 +- Update to 1.0.23 + +* Wed Jan 29 2020 Fedora Release Engineering - 1.0.22-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 1.0.22-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Mar 13 2019 Hans de Goede - 1.0.22-3 +- Add tests and examples to a new tests-examples subpackage, so that these + can be used for the upcoming gating stuff +- Add %%check using some of the tests/examples + +* Fri Feb 01 2019 Fedora Release Engineering - 1.0.22-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Aug 07 2018 Victor Toso - 1.0.22-1 +- Update to 1.0.22 + +* Fri Jul 13 2018 Fedora Release Engineering - 1.0.21-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 1.0.21-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 1.0.21-5 +- Switch to %%ldconfig_scriptlets + +* Thu Aug 03 2017 Fedora Release Engineering - 1.0.21-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.0.21-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.0.21-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Oct 26 2016 Hans de Goede - 1.0.21-1 +- Update to the final 1.0.21 upstream release + +* Wed Aug 10 2016 Hans de Goede - 1.0.21-0.2.rc2 +- Update to 1.0.21-rc2 upstream release +- Add a bunch of locking fixes which are pending upstream + +* Tue Feb 23 2016 Hans de Goede - 1.0.21-0.1.git448584a +- Update to a pre 1.0.21 git snapshot to bring in libusb_interrupt_event_handler + which chromium needs (rhbz#1270324) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.0.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Sep 24 2015 Hans de Goede - 1.0.20-1 +- Update to 1.0.20 (rhbz#1262817) + +* Tue Jun 16 2015 Peter Robinson 1.0.19-3 +- Use %%license + +* Sun Aug 17 2014 Fedora Release Engineering - 1.0.19-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 13 2014 Hans de Goede - 1.0.19-1 +- Update to 1.0.19 final + +* Sat Jun 07 2014 Fedora Release Engineering - 1.0.19-0.3.rc2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 30 2014 Hans de Goede - 1.0.19-0.2.rc2 +- Update to 1.0.19-rc2 + +* Mon May 19 2014 Hans de Goede - 1.0.19-0.1.rc1 +- Update to 1.0.19-rc1 + +* Sat Mar 8 2014 Hans de Goede - 1.0.18-1 +- Update to 1.0.18 release (rhbz#1058000) + +* Fri Sep 6 2013 Hans de Goede - 1.0.17-1 +- Update to 1.0.17 final release + +* Wed Aug 28 2013 Hans de Goede - 1.0.17-0.1.rc1 +- New upstream 1.0.17-rc1 release + +* Tue Jul 30 2013 Hans de Goede - 1.0.16-3 +- Fix another libusb_exit deadlock (rhbz#985484) + +* Fri Jul 19 2013 Hans de Goede - 1.0.16-2 +- Fix libusb_exit sometimes (race) deadlocking on exit (rhbz#985484) + +* Thu Jul 11 2013 Hans de Goede - 1.0.16-1 +- New upstream 1.0.16 final release + +* Sat Jul 6 2013 Hans de Goede - 1.0.16-0.2.rc3 +- New upstream 1.0.16-rc3 release + +* Mon Jul 1 2013 Hans de Goede - 1.0.16-0.1.rc2 +- New upstream 1.0.16-rc2 release + +* Fri Apr 19 2013 Hans de Goede - 1.0.15-2 +- Replace tarbal with upstream re-spun tarbal which fixes line-ending and + permission issues + +* Wed Apr 17 2013 Hans de Goede - 1.0.15-1 +- Upgrade to 1.0.15 (rhbz#952575) + +* Tue Apr 2 2013 Hans de Goede - 1.0.14-3 +- Drop devel-doc Requires from the devel package (rhbz#947297) + +* Thu Feb 14 2013 Fedora Release Engineering - 1.0.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Sep 26 2012 Hans de Goede - 1.0.14-1 +- Upgrade to 1.0.14 + +* Mon Sep 24 2012 Hans de Goede - 1.0.13-1 +- Upgrade to 1.0.13 + +* Thu Jul 19 2012 Fedora Release Engineering - 1.0.11-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 23 2012 Hans de Goede - 1.0.11-2 +- Fix URL to actually point to libusbx +- Improve description to explain the relation between libusbx and libusb +- Build the examples (to test linking, they are not packaged) + +* Tue May 22 2012 Hans de Goede - 1.0.11-1 +- New libusbx package, replacing libusb1 +- Switching to libusbx upstream as that actually does releases (hurray) +- Drop all patches (all upstream) +- Drop -static subpackage (there are no packages using it)