Date: Friday, February 11, 2022 @ 20:48:17 Author: dvzrv Revision: 1132230
Add python-pyocd as dependency for python-spsdk (new dependency for python-pynitrokey). Added: python-pyocd/ python-pyocd/repos/ python-pyocd/trunk/ python-pyocd/trunk/PKGBUILD python-pyocd/trunk/python-pyocd-0.33.1-optional_libusb_package.patch python-pyocd/trunk/python-pyocd-0.33.1-support_prettytable3.patch ---------------------------------------------------+ PKGBUILD | 81 +++++++++++ python-pyocd-0.33.1-optional_libusb_package.patch | 138 ++++++++++++++++++++ python-pyocd-0.33.1-support_prettytable3.patch | 12 + 3 files changed, 231 insertions(+) Added: python-pyocd/trunk/PKGBUILD =================================================================== --- python-pyocd/trunk/PKGBUILD (rev 0) +++ python-pyocd/trunk/PKGBUILD 2022-02-11 20:48:17 UTC (rev 1132230) @@ -0,0 +1,81 @@ +# Maintainer: David Runge <[email protected]> + +_name=pyocd +pkgname=python-pyocd +pkgver=0.33.1 +pkgrel=1 +pkgdesc="Programming and debugging Arm Cortex-M microcontrollers" +arch=(any) +url="https://github.com/pyocd/pyOCD" +license=(Apache) +depends=( + python-capstone + python-cmsis-pack-manager + python-colorama + python-intelhex + python-intervaltree + python-natsort + python-prettytable + python-pyelftools + python-pylink-square + python-pyusb + python-pyyaml + python-six + python-typing-extensions +) +makedepends=(python-setuptools python-setuptools-scm python-toml python-wheel) +checkdepends=(python-pytest python-typing-extensions) +provides=(pyocd) +conflicts=(pyocd) +replaces=(pyocd) +source=( + "https://files.pythonhosted.org/packages/source/${_name::1}/${_name}/${_name}-${pkgver}.tar.gz" + $pkgname-0.33.1-optional_libusb_package.patch + $pkgname-0.33.1-support_prettytable3.patch +) +sha512sums=('52acb68a5e938509df25d79b12af4374cbc98a4beb7771d039fa9de31ebb779bf098398c311ed96ddf7f38ee1b29e5eb1cdc950ad458a86187185cef1e7d12d5' + 'cbcf65ead4f72025c28e9d42e7947db9671c8de62a797dc27d1198dbdb164afe51b5cafb83224e5c0797b5ae6ea8a9f91080aae81f00934309645a47d0154eaf' + '196bd3ad3718baf881ab3ca30d7e135be180e1185ccbc0e8f854a5754d5bf53d048985f970cbe943fb02228e82c0d07e56d74ddb28b72b078bdb997464b3d35c') +b2sums=('2dfefd23fef60bc667de095781e071afcfd93299792473a19b9f508ee856ae1dfd0ff7be075ddcddae79717424134b4b30a0ec224a174397ba3303952cfa0cc0' + 'dfed46c4e852cf28029573acd49aef06e51a3280851111ebc40bd7110c1900f480e77ade970c9b4d5574e9966cab996014b503991fdb8879aa9113f9d8091edb' + '4447a64d11b4cb480762d323681c08b3f5e0d8e50f2b776faf6a53ed69eb3b492973146d837a310b272e7aac9578c7e54e641100229d8df783ee6179b30857ba') + +prepare() { + cd $_name-$pkgver + # support prettytable >= 3.0: https://github.com/pyocd/pyOCD/pull/1330 + patch -Np1 -i ../$pkgname-0.33.1-support_prettytable3.patch + + # python-pyocd-pemicro drags in obfuscated prebuilt shared objects via python-pypemicro: + # https://github.com/NXPmicro/pypemicro/issues/10 + # https://github.com/pyocd/pyOCD/issues/1319 + sed '/pyocd_pemicro/d' -i setup.cfg + + # we remove the dependency for libusb-package, because it would vendor libusb + # https://github.com/pyocd/pyOCD/issues/1331 + sed '/libusb-package/d' -i setup.cfg + patch -Np1 -i ../$pkgname-0.33.1-optional_libusb_package.patch + + # tag devices with uaccess to automatically make them available to active user sessions + sed -e 's|MODE:="666"|MODE:="0660", TAG+="uaccess"|g' -i udev/*{cmsis,pico}*.rules + sed -e 's|MODE:="0666"|MODE:="0660", TAG+="uaccess"|g' -i udev/*stlink*.rules +} + +build() { + cd $_name-$pkgver + python setup.py build +} + +check() { + cd $_name-$pkgver + export PYTHONPATH="build:$PYTHONPATH" + # do not run tests that would require packaging python-elapsedtimer + # https://github.com/pyocd/pyOCD/issues/1333 + pytest -v --ignore test/unit/test_semihosting.py +} + +package() { + cd $_name-$pkgver + python setup.py install --optimize=1 --root="$pkgdir" + install -vDm 644 README.md -t "$pkgdir/usr/share/doc/$pkgname" + install -vDm 644 udev/*.rules -t "$pkgdir/usr/lib/udev/rules.d/" +} Added: python-pyocd/trunk/python-pyocd-0.33.1-optional_libusb_package.patch =================================================================== --- python-pyocd/trunk/python-pyocd-0.33.1-optional_libusb_package.patch (rev 0) +++ python-pyocd/trunk/python-pyocd-0.33.1-optional_libusb_package.patch 2022-02-11 20:48:17 UTC (rev 1132230) @@ -0,0 +1,138 @@ +diff --git c/pyocd/probe/picoprobe.py w/pyocd/probe/picoprobe.py +index 481e984f..14d1214d 100644 +--- c/pyocd/probe/picoprobe.py ++++ w/pyocd/probe/picoprobe.py +@@ -18,8 +18,12 @@ + from array import array + + from time import sleep ++try: ++ from libusb_package import find as usb_find ++except ImportError: ++ from usb.core import find as usb_find ++ + from usb import core, util +-import libusb_package + + import platform + import errno +@@ -108,7 +112,7 @@ class PicoLink(object): + """@brief Find and return all Picoprobes """ + try: + # Use a custom matcher to make sure the probe is a Picoprobe and accessible. +- return [PicoLink(probe) for probe in libusb_package.find(find_all=True, custom_match=FindPicoprobe(uid))] ++ return [PicoLink(probe) for probe in usb_find(find_all=True, custom_match=FindPicoprobe(uid))] + except core.NoBackendError: + show_no_libusb_warning() + return [] +diff --git c/pyocd/probe/pydapaccess/interface/pyusb_backend.py w/pyocd/probe/pydapaccess/interface/pyusb_backend.py +index cf240043..229fc7c5 100644 +--- c/pyocd/probe/pydapaccess/interface/pyusb_backend.py ++++ w/pyocd/probe/pydapaccess/interface/pyusb_backend.py +@@ -37,7 +37,6 @@ TRACE = LOG.getChild("trace") + TRACE.setLevel(logging.CRITICAL) + + try: +- import libusb_package + import usb.core + import usb.util + except ImportError: +@@ -45,6 +44,12 @@ except ImportError: + else: + IS_AVAILABLE = True + ++try: ++ from libusb_package import find as usb_find ++except ImportError: ++ from usb.core import find as usb_find ++ ++ + class PyUSB(Interface): + """@brief CMSIS-DAP USB interface class using pyusb for the backend.""" + +@@ -70,7 +75,7 @@ class PyUSB(Interface): + assert self.closed is True + + # Get device handle +- dev = libusb_package.find(custom_match=FindDap(self.serial_number)) ++ dev = usb_find(custom_match=FindDap(self.serial_number)) + if dev is None: + raise DAPAccessIntf.DeviceError("Device %s not found" % self.serial_number) + +@@ -161,7 +166,7 @@ class PyUSB(Interface): + """ + # find all cmsis-dap devices + try: +- all_devices = libusb_package.find(find_all=True, custom_match=FindDap()) ++ all_devices = usb_find(find_all=True, custom_match=FindDap()) + except usb.core.NoBackendError: + if not PyUSB.did_show_no_libusb_warning: + LOG.warning("CMSIS-DAPv1 probes may not be detected because no libusb library was found.") +diff --git c/pyocd/probe/pydapaccess/interface/pyusb_v2_backend.py w/pyocd/probe/pydapaccess/interface/pyusb_v2_backend.py +index a9b0a1a0..e2007908 100644 +--- c/pyocd/probe/pydapaccess/interface/pyusb_v2_backend.py ++++ w/pyocd/probe/pydapaccess/interface/pyusb_v2_backend.py +@@ -38,7 +38,6 @@ TRACE = LOG.getChild("trace") + TRACE.setLevel(logging.CRITICAL) + + try: +- import libusb_package + import usb.core + import usb.util + except ImportError: +@@ -46,6 +45,12 @@ except ImportError: + else: + IS_AVAILABLE = True + ++try: ++ from libusb_package import find as usb_find ++except ImportError: ++ from usb.core import find as usb_find ++ ++ + class PyUSBv2(Interface): + """@brief CMSIS-DAPv2 interface using pyUSB.""" + +@@ -84,7 +89,7 @@ class PyUSBv2(Interface): + assert self.closed is True + + # Get device handle +- dev = libusb_package.find(custom_match=HasCmsisDapv2Interface(self.serial_number)) ++ dev = usb_find(custom_match=HasCmsisDapv2Interface(self.serial_number)) + if dev is None: + raise DAPAccessIntf.DeviceError("Device %s not found" % + self.serial_number) +@@ -187,7 +192,7 @@ class PyUSBv2(Interface): + """@brief Returns all the connected devices with a CMSIS-DAPv2 interface.""" + # find all cmsis-dap devices + try: +- all_devices = libusb_package.find(find_all=True, custom_match=HasCmsisDapv2Interface()) ++ all_devices = usb_find(find_all=True, custom_match=HasCmsisDapv2Interface()) + except usb.core.NoBackendError: + common.show_no_libusb_warning() + return [] +diff --git c/pyocd/probe/stlink/usb.py w/pyocd/probe/stlink/usb.py +index c9a400af..883c014c 100644 +--- c/pyocd/probe/stlink/usb.py ++++ w/pyocd/probe/stlink/usb.py +@@ -15,7 +15,10 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-import libusb_package ++try: ++ from libusb_package import find as usb_find ++except ImportError: ++ from usb.core import find as usb_find + import usb.core + import usb.util + import logging +@@ -101,7 +104,7 @@ class STLinkUSBInterface: + @classmethod + def get_all_connected_devices(cls): + try: +- devices = libusb_package.find(find_all=True, custom_match=cls._usb_match) ++ devices = usb_find(find_all=True, custom_match=cls._usb_match) + except usb.core.NoBackendError: + common.show_no_libusb_warning() + return [] Added: python-pyocd/trunk/python-pyocd-0.33.1-support_prettytable3.patch =================================================================== --- python-pyocd/trunk/python-pyocd-0.33.1-support_prettytable3.patch (rev 0) +++ python-pyocd/trunk/python-pyocd-0.33.1-support_prettytable3.patch 2022-02-11 20:48:17 UTC (rev 1132230) @@ -0,0 +1,12 @@ +diff -ruN a/setup.cfg b/setup.cfg +--- a/setup.cfg 2022-02-07 20:28:32.236504600 +0100 ++++ b/setup.cfg 2022-02-11 21:44:32.500456029 +0100 +@@ -55,7 +55,7 @@ + intervaltree>=3.0.2,<4.0 + libusb-package>=1.0,<2.0 + natsort>=8.0.0,<9.0 +- prettytable>=2.0,<3.0 ++ prettytable>=2.0,<4.0 + pyelftools<1.0 + pylink-square>=0.11.1,<1.0 + pyocd_pemicro>=1.0.6
