From: Jean-Pierre De Jesus DIAZ via Guix-patches via <guix-patches@gnu.org>
To: 65911@debbugs.gnu.org
Cc: Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com>
Subject: [bug#65911] [PATCH 3/4] gnu: python-pyusb: Add libusb-compat backend.
Date: Wed, 13 Sep 2023 11:55:58 +0200 [thread overview]
Message-ID: <20230913095559.12676-3-jean@foundationdevices.com> (raw)
In-Reply-To: <20230913095559.12676-1-jean@foundationdevices.com>
* gnu/packages/libusb.scm (python-pyusb) <arguments>: Do not hard-code
libusb1 library for all back-ends, and allow to use libusb0 as a
back-end. Also enabled tests as the package does have a test suite.
* gnu/packages/libusb.scm (python-pyusb) <inputs>: Add libusb-compat.
Signed-off-by: Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com>
---
gnu/packages/libusb.scm | 52 +++++++++++++++++++++++++++++++----------
1 file changed, 40 insertions(+), 12 deletions(-)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 469882e871..d15e561668 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -288,28 +288,56 @@ (define-public python-pyusb
"1fg7knfzybzija2b01pzrzhzsj989scl12sb2ra4f503l8279k54"))))
(build-system python-build-system)
(arguments
- (list #:tests? #f ; no tests
- #:modules '((srfi srfi-1)
+ (list #:modules '((srfi srfi-1)
(srfi srfi-26)
(guix build utils)
(guix build python-build-system))
#:phases
#~(modify-phases %standard-phases
+ ;; Repurpose the candidates parameter to be the path to the
+ ;; library, then on each backend we substitute the candidates
+ ;; with the full path to the .so library or with None if not
+ ;; supported.
+ ;;
+ ;; While most applications could use a single back-end this
+ ;; library allows to manually select the back-end so it is
+ ;; appropriate to provide as much back-ends as possible.
(add-after 'unpack 'fix-libusb-reference
(lambda* (#:key inputs #:allow-other-keys)
- (substitute* "usb/libloader.py"
- (("lib = locate_library\\(candidates, find_library\\)")
- (string-append
- "lib = \""
- (find (negate symbolic-link?)
- (find-files (assoc-ref inputs "libusb")
- "^libusb-.*\\.so\\..*"))
- "\""))))))))
-
+ (let ((libusb0 (find
+ (negate symbolic-link?)
+ (find-files (assoc-ref inputs "libusb-compat")
+ "^libusb-.*\\.so\\..*")))
+ (libusb1 (find
+ (negate symbolic-link?)
+ (find-files (assoc-ref inputs "libusb")
+ "^libusb-.*\\.so\\..*"))))
+ (substitute* "usb/libloader.py"
+ (("lib = locate_library\\(candidates, find_library\\)")
+ "lib = candidates"))
+ (substitute* "usb/backend/libusb0.py"
+ (("\\('usb-0\\.1', 'usb', 'libusb0'\\)")
+ (format #f "~s" libusb0)))
+ (substitute* "usb/backend/libusb1.py"
+ (("\\('usb-1\\.0', 'libusb-1\\.0', 'usb'\\)")
+ (format #f "~s" libusb1)))
+ ;; FIXME: OpenUSB is not packaged for GNU Guix.
+ (substitute* "usb/backend/openusb.py"
+ (("\\('openusb',\\)") "None")))))
+ ;; Note: tests seems to succeed with libusb-compat as libusb
+ ;; fails because it doesn't have a usbfs present in the build
+ ;; environment.
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "tests"
+ (setenv "PYUSB_DEBUG" "debug")
+ (setenv "LIBUSB_DEBUG" "4")
+ (invoke "python" "testall.py"))))))))
(native-inputs
(list python-setuptools-scm))
(inputs
- (list libusb))
+ (list libusb libusb-compat))
(home-page "https://pyusb.github.io/pyusb/")
(synopsis "Python bindings to the libusb library")
(description
--
2.34.1
next prev parent reply other threads:[~2023-09-13 9:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-13 9:53 [bug#65911] [PATCH 0/4] gnu: Add liquidctl Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-13 9:55 ` [bug#65911] [PATCH 1/4] gnu: Add python-smbus Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-13 9:55 ` [bug#65911] [PATCH 2/4] gnu: python-pyusb: Use G-Expressions Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-13 9:55 ` Jean-Pierre De Jesus DIAZ via Guix-patches via [this message]
2023-09-13 9:55 ` [bug#65911] [PATCH 4/4] gnu: Add liquidctl Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-13 11:01 ` [bug#65911] [PATCH 1/4] gnu: Add python-smbus Bruno Victal
2023-09-20 10:07 ` Jean-Pierre De Jesus Diaz via Guix-patches via
2023-09-20 10:05 ` [bug#65911] [PATCH v1 " Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-20 10:05 ` [bug#65911] [PATCH v1 2/4] gnu: python-pyusb: Use G-Expressions Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-20 10:05 ` [bug#65911] [PATCH v1 3/4] gnu: python-pyusb: Add libusb-compat backend Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-20 10:05 ` [bug#65911] [PATCH v1 4/4] gnu: Add liquidctl Jean-Pierre De Jesus DIAZ via Guix-patches via
2023-09-27 22:08 ` bug#65911: [PATCH 0/4] " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230913095559.12676-3-jean@foundationdevices.com \
--to=guix-patches@gnu.org \
--cc=65911@debbugs.gnu.org \
--cc=jean@foundationdevices.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.