From 1ad09126871a55c3cf0ba6d3838e85ff841b4334 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Thu, 16 Oct 2025 00:59:14 -0700 Subject: [PATCH] gnu: Add python-capablerobot-usbhub. This was previously removed due to dropping python-pyyaml-5, though currently builds fine with the default python-pyyaml and python-click. See: https://codeberg.org/guix/guix/issues/1390 * gnu/packages/libusb.scm (python-capablerobot-usbhub): New variable. --- gnu/packages/libusb.scm | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index d8bb55dfc06d9814a127e02451ef87cb824dfe6e..c8753c3b17e3a15a4bcfc264969a0345b21dcfb0 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -374,6 +374,58 @@ wrapper for accessing libusb-1.0.") "PyUSB aims to be an easy to use Python module to access USB devices.") (license license:bsd-3))) +(define-public python-capablerobot-usbhub + (package + (name "python-capablerobot-usbhub") + (version "0.5.0") + (source + (origin + ;; PyPI tarball fails to build. + (method git-fetch) + (uri (git-reference + (url "https://github.com/CapableRobot/CapableRobot_USBHub_Driver") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nfd12612z9a9hby5dxg7lfqw5jcv3wcyqqagbg5izragni646mc")) + (modules '((guix build utils))) + (snippet + ;; Remove bundled libraries. + '(begin + (delete-file-recursively "capablerobot_usbhub/windows/"))))) + (build-system pyproject-build-system) + (arguments + (list + #:tests? #f ;No tests provided. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'use-poetry-core + (lambda _ + ;; Patch to use the core poetry API. + (substitute* "pyproject.toml" + (("poetry.masonry.api") + "poetry.core.masonry.api")))) + (add-after 'install 'install-udev-rules + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (udevdir "/lib/udev/rules.d/") + (udevrules "50-capablerobot-usbhub.rules")) + (mkdir-p (string-append out udevdir)) + (copy-file udevrules + (string-append out udevdir udevrules)))))))) + (native-inputs (list python-poetry-core)) + (propagated-inputs (list python-click python-construct python-pyusb + python-pyyaml)) + (home-page "https://github.com/CapableRobot/CapableRobot_USBHub_Driver") + (synopsis "Host side driver for the Capable Robot Programmable USB Hub") + (description + "This package provides access to the internal state of the Capable Robot +USB Hub, allowing you to monitor and control the Hub from an upstream +computer. It also creates a transparent CircuitPython Bridge, allowing +unmodified CircuitPython code to run on the host computer and interact with +I2C and SPI devices attached to the USB Hub.") + (license license:expat))) + (define-public ideviceinstaller (package (name "ideviceinstaller")