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 <christopher.a.dickens@gmail.com>
+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 <christopher.a.dickens@gmail.com>
+---
+ 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 <christopher.a.dickens@gmail.com>
+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 <christopher.a.dickens@gmail.com>
+---
+ 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 <christopher.a.dickens@gmail.com>
+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 <christopher.a.dickens@gmail.com>
+---
+ 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 <mboddu@redhat.com> - 1.0.24-4
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.0.24-3
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Feb 16 2021 Benjamin Berg <bberg@redhat.com> - 1.0.24-2
+- Pull in upstream bugfixes
+  Resolves: #1929148
+
+* Thu Feb 11 2021 Victor Toso <victortoso@redhat.com> - 1.0.24-1
+- Update to 1.0.24
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.23-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.23-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Thu Mar 26 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 1.0.23-1
+- Update to 1.0.23
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.22-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.22-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Mar 13 2019 Hans de Goede <hdegoede@redhat.com> - 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 <releng@fedoraproject.org> - 1.0.22-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Tue Aug 07 2018 Victor Toso <victortoso@redhat.com> - 1.0.22-1
+- Update to 1.0.22
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.21-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.21-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.0.21-5
+- Switch to %%ldconfig_scriptlets
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.21-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.21-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.21-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Wed Oct 26 2016 Hans de Goede <hdegoede@redhat.com> - 1.0.21-1
+- Update to the final 1.0.21 upstream release
+
+* Wed Aug 10 2016 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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 <releng@fedoraproject.org> - 1.0.20-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Thu Sep 24 2015 Hans de Goede <hdegoede@redhat.com> - 1.0.20-1
+- Update to 1.0.20 (rhbz#1262817)
+
+* Tue Jun 16 2015 Peter Robinson <pbrobinson@fedoraproject.org> 1.0.19-3
+- Use %%license
+
+* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.19-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Fri Jun 13 2014 Hans de Goede <hdegoede@redhat.com> - 1.0.19-1
+- Update to 1.0.19 final
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.19-0.3.rc2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Fri May 30 2014 Hans de Goede <hdegoede@redhat.com> - 1.0.19-0.2.rc2
+- Update to 1.0.19-rc2
+
+* Mon May 19 2014 Hans de Goede <hdegoede@redhat.com> - 1.0.19-0.1.rc1
+- Update to 1.0.19-rc1
+
+* Sat Mar  8 2014 Hans de Goede <hdegoede@redhat.com> - 1.0.18-1
+- Update to 1.0.18 release (rhbz#1058000)
+
+* Fri Sep  6 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.17-1
+- Update to 1.0.17 final release
+
+* Wed Aug 28 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.17-0.1.rc1
+- New upstream 1.0.17-rc1 release
+
+* Tue Jul 30 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.16-3
+- Fix another libusb_exit deadlock (rhbz#985484)
+
+* Fri Jul 19 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.16-2
+- Fix libusb_exit sometimes (race) deadlocking on exit (rhbz#985484)
+
+* Thu Jul 11 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.16-1
+- New upstream 1.0.16 final release
+
+* Sat Jul  6 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.16-0.2.rc3
+- New upstream 1.0.16-rc3 release
+
+* Mon Jul  1 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.16-0.1.rc2
+- New upstream 1.0.16-rc2 release
+
+* Fri Apr 19 2013 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 1.0.15-1
+- Upgrade to 1.0.15 (rhbz#952575)
+
+* Tue Apr  2 2013 Hans de Goede <hdegoede@redhat.com> - 1.0.14-3
+- Drop devel-doc Requires from the devel package (rhbz#947297)
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.14-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Wed Sep 26 2012 Hans de Goede <hdegoede@redhat.com> - 1.0.14-1
+- Upgrade to 1.0.14
+
+* Mon Sep 24 2012 Hans de Goede <hdegoede@redhat.com> - 1.0.13-1
+- Upgrade to 1.0.13
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.11-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Wed May 23 2012 Hans de Goede <hdegoede@redhat.com> - 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 <hdegoede@redhat.com> - 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)