commit:     485262e28f2aae4d6718cdbd8717841a1a0aa038
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Feb 17 06:04:18 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Feb 17 06:22:16 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=485262e2

dev-python/pyusb: enable py3.11, use pypi.eclass, fix w/ newer setuptools

Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../pyusb/files/pyusb-1.2.1-setuptools.patch       | 37 ++++++++++++++++++++++
 dev-python/pyusb/pyusb-1.2.1.ebuild                |  9 ++++--
 2 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/dev-python/pyusb/files/pyusb-1.2.1-setuptools.patch 
b/dev-python/pyusb/files/pyusb-1.2.1-setuptools.patch
new file mode 100644
index 000000000000..26b5e204d648
--- /dev/null
+++ b/dev-python/pyusb/files/pyusb-1.2.1-setuptools.patch
@@ -0,0 +1,37 @@
+https://github.com/pyusb/pyusb/commit/777dea9d718e70d7323c821d4497c706b35742da
+
+From 777dea9d718e70d7323c821d4497c706b35742da Mon Sep 17 00:00:00 2001
+From: Jonas Malaco <jo...@protocubo.io>
+Date: Tue, 12 Jul 2022 03:12:50 -0300
+Subject: [PATCH] version: handle when patch component is missing
+
+actions/checkout@v3 (by default) no longer fetches the tags while
+checking out the repository.  This, combined with our use of
+setuptools_scm post-release scheme, results in tox trying to run the
+tests with version strings that look something like
+
+    pyusb-0.0.post1+g3678fc1.zip
+
+and breaking _get_extended_version_info().
+
+Make _get_extended_version_info() robust against this case.  This is
+preferable to configuring actions/checkout@v3 to fetch the tags as,
+being related shallow clones, it might also happen in other contexts.
+
+Fixes: 678fc1867f4 ("github: update to actions/checkout@v3")
+--- a/usb/__init__.py
++++ b/usb/__init__.py
+@@ -55,9 +55,9 @@
+ 
+ def _get_extended_version_info(version):
+     import re
+-    m = re.match(r'(\d+)\.(\d+)\.(\d+)[.-]?(.*)', version)
+-    major, minor, patch, suffix = m.groups()
+-    return int(major), int(minor), int(patch), suffix
++    m = re.match(r'(\d+)\.(\d+)(\.(\d+))?[.-]?(.*)', version)
++    major, minor, _, patch, suffix = m.groups()
++    return int(major), int(minor), int(patch or "0"), suffix
+ 
+ extended_version_info = _get_extended_version_info(__version__)
+ version_info = extended_version_info[:3]
+

diff --git a/dev-python/pyusb/pyusb-1.2.1.ebuild 
b/dev-python/pyusb/pyusb-1.2.1.ebuild
index 900eb0c4252d..d7c303722986 100644
--- a/dev-python/pyusb/pyusb-1.2.1.ebuild
+++ b/dev-python/pyusb/pyusb-1.2.1.ebuild
@@ -3,12 +3,11 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_{9..10} )
-inherit distutils-r1
+PYTHON_COMPAT=( python3_{9..11} )
+inherit distutils-r1 pypi
 
 DESCRIPTION="USB support for Python"
 HOMEPAGE="https://pyusb.github.io/pyusb/ https://pypi.org/project/pyusb/";
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
 
 LICENSE="BSD"
 SLOT="0"
@@ -20,6 +19,10 @@ RDEPEND="${DEPEND}"
 
 DOCS=( README.rst docs/tutorial.rst )
 
+PATCHES=(
+       "${FILESDIR}"/${P}-setuptools.patch
+)
+
 python_test() {
        cd tests || die
        "${EPYTHON}" testall.py || die "Tests failed with ${EPYTHON}"

Reply via email to