summaryrefslogtreecommitdiff
path: root/gnu/packages/libusb.scm
diff options
context:
space:
mode:
authorLiliana Marie Prikler <[email protected]>2023-09-30 11:54:32 +0200
committerLiliana Marie Prikler <[email protected]>2023-09-30 11:54:32 +0200
commit7d134b57b79188f8c878625d4e09f9bd6181e8c0 (patch)
treefae437f88c666ccf877518b53ea3707f4bc04ec3 /gnu/packages/libusb.scm
parentb18b2d13488f2a92331ccad2dc8cbb54ee15582f (diff)
parentee5de9cdf2e9d914638fcac8b5f25bdddfb73dfc (diff)
Merge branch 'master' into gnome-team
Diffstat (limited to 'gnu/packages/libusb.scm')
-rw-r--r--gnu/packages/libusb.scm67
1 files changed, 47 insertions, 20 deletions
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index e615b81ea3..d15e561668 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -288,29 +288,56 @@ wrapper for accessing libusb-1.0.")
"1fg7knfzybzija2b01pzrzhzsj989scl12sb2ra4f503l8279k54"))))
(build-system python-build-system)
(arguments
- `(#:tests? #f ; no tests
- #:modules ((srfi srfi-1)
- (srfi srfi-26)
- (guix build utils)
- (guix build python-build-system))
- #:phases
- (modify-phases %standard-phases
- (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\\..*"))
- "\"")))
- #t)))))
-
+ (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)
+ (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