gnu: libusb: Update to 1.0.23.
[jackhill/guix/guix.git] / gnu / packages / libusb.scm
index e5a6380..ba90d51 100644 (file)
@@ -2,11 +2,12 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,7 +26,7 @@
 
 (define-module (gnu packages libusb)
   #:use-module (gnu packages)
 
 (define-module (gnu packages libusb)
   #:use-module (gnu packages)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages xiph))
 
 (define-public libusb
   (package
     (name "libusb")
   #:use-module (gnu packages xiph))
 
 (define-public libusb
   (package
     (name "libusb")
-    (version "1.0.21")
+    (version "1.0.23")
     (source
      (origin
       (method url-fetch)
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/libusb/libusb-1.0/"
-                          "libusb-" version "/libusb-" version ".tar.bz2"))
+      (uri (string-append "https://github.com/libusb/libusb/"
+                          "releases/download/v" version
+                          "/libusb-" version ".tar.bz2"))
       (sha256
       (sha256
-       (base32
-        "0jw2n5kdnrqvp7zh792fd6mypzzfap6jp4gfcmq4n6c1kb79rkkx"))))
+       (base32 "13dd2a9x290d1q8nb1lqiaf36grcvns5ripk5k2xm0lajmpc04fv"))))
     (build-system gnu-build-system)
 
     ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on
     (build-system gnu-build-system)
 
     ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on
     (arguments `(#:configure-flags '("--disable-udev")))
     ;; (inputs `(("eudev" ,eudev)))
 
     (arguments `(#:configure-flags '("--disable-udev")))
     ;; (inputs `(("eudev" ,eudev)))
 
-    (home-page "http://libusb.info")
+    (home-page "https://libusb.info")
     (synopsis "User-space USB library")
     (description
      "Libusb is a library that gives applications easy access to USB
 devices on various operating systems.")
     (synopsis "User-space USB library")
     (description
      "Libusb is a library that gives applications easy access to USB
 devices on various operating systems.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libusb-compat
   (package
 
 (define-public libusb-compat
   (package
@@ -90,12 +93,12 @@ devices on various operating systems.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libusb" ,libusb)))
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libusb" ,libusb)))
-    (home-page "http://libusb.info")
+    (home-page "https://libusb.info")
     (synopsis "Compatibility shim for libusb")
     (description
      "Libusb-compat provides a shim allowing applications based on older
 version of libusb to run with newer libusb.")
     (synopsis "Compatibility shim for libusb")
     (description
      "Libusb-compat provides a shim allowing applications based on older
 version of libusb to run with newer libusb.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 ;; required by 0xffff, which compiles with libusb-compat, but executes only
 ;; with libusb-0.1
 
 ;; required by 0xffff, which compiles with libusb-compat, but executes only
 ;; with libusb-0.1
@@ -133,6 +136,13 @@ version of libusb to run with newer libusb.")
        `(#:tests? #f                    ; there are no tests
          #:phases
          (modify-phases %standard-phases
        `(#:tests? #f                    ; there are no tests
          #:phases
          (modify-phases %standard-phases
+           ;; FIXME: libusb 1.0.22 deprecated libusb_set_debug, so the build
+           ;; fails because libusb4java uses a deprecated procedure.
+           (add-after 'unpack 'disable-Werror
+             (lambda _
+               (substitute* "CMakeLists.txt"
+                 (("-Werror") ""))
+               #t))
            (add-before 'configure 'set-JAVA_HOME
              (lambda* (#:key inputs #:allow-other-keys)
                (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
            (add-before 'configure 'set-JAVA_HOME
              (lambda* (#:key inputs #:allow-other-keys)
                (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
@@ -146,7 +156,7 @@ version of libusb to run with newer libusb.")
       (description
        "This package provides Java JNI bindings to the libusb library for use
 with usb4java.")
       (description
        "This package provides Java JNI bindings to the libusb library for use
 with usb4java.")
-      (license expat))))
+      (license license:expat))))
 
 (define-public java-usb4java
   (package
 
 (define-public java-usb4java
   (package
@@ -205,22 +215,65 @@ with usb4java.")
     (description
      "This package provides a USB library for Java based on libusb and
 implementing @code{javax.usb} (JSR-80).")
     (description
      "This package provides a USB library for Java based on libusb and
 implementing @code{javax.usb} (JSR-80).")
-    (license expat)))
+    (license license:expat)))
+
+(define-public python-libusb1
+  (package
+    (name "python-libusb1")
+    (version "1.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "libusb1" version))
+       (sha256
+        (base32
+         "03b7xrz8vqg8w0za5r503jhcmbd1ls5610jcja1rqz833nf0v4wc"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:modules ((srfi srfi-1)
+                  (guix build utils)
+                  (guix build python-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install-license-files 'remove-incorrect-license
+           (lambda* (#:key out #:allow-other-keys)
+             ;; Was relicensed to LGPL 2.1+, but old COPYING file still left
+             ;; in source. Remove it so it does not get installed.
+             (delete-file "COPYING")
+             #t))
+         (add-after 'unpack 'fix-libusb-reference
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "usb1/libusb1.py"
+               (("libusb_path = ctypes.util.find_library\\(base_name\\)")
+                (string-append
+                 "libusb_path = \""
+                 (find (negate symbolic-link?)
+                       (find-files (assoc-ref inputs "libusb")
+                                   "^libusb.*\\.so\\..*"))
+                 "\"")))
+             #t)))))
+    (inputs `(("libusb" ,libusb)))
+    (home-page "https://github.com/vpelletier/python-libusb1")
+    (synopsis "Pure-python wrapper for libusb-1.0")
+    (description "Libusb is a library that gives applications easy access to
+USB devices on various operating systems.  This package provides a Python
+wrapper for accessing libusb-1.0.")
+    (license license:lgpl2.1+)))
 
 (define-public python-pyusb
   (package
     (name "python-pyusb")
 
 (define-public python-pyusb
   (package
     (name "python-pyusb")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "PyUSB" version))
+       (uri (pypi-uri "pyusb" version))
        (sha256
         (base32
        (sha256
         (base32
-         "0s2k4z06fapd5vp1gnrlf8a9sjpc03p9974lzw5k6ky39akzyd2v"))))
+         "0qkk2jn270jwwl1x26hmdhb14m9kkbrzzwzizdjcl1a29b6756sf"))))
     (build-system python-build-system)
     (arguments
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f  ;no tests
+     `(#:tests? #f                      ; no tests
        #:modules ((srfi srfi-1)
                   (srfi srfi-26)
                   (guix build utils)
        #:modules ((srfi srfi-1)
                   (srfi srfi-26)
                   (guix build utils)
@@ -240,26 +293,164 @@ implementing @code{javax.usb} (JSR-80).")
              #t)))))
     (inputs
      `(("libusb" ,libusb)))
              #t)))))
     (inputs
      `(("libusb" ,libusb)))
-    (home-page "http://walac.github.io/pyusb/")
+    (home-page "https://pyusb.github.io/pyusb/")
     (synopsis "Python bindings to the libusb library")
     (description
      "PyUSB aims to be an easy to use Python module to access USB devices.")
     (synopsis "Python bindings to the libusb library")
     (description
      "PyUSB aims to be an easy to use Python module to access USB devices.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public python2-pyusb
   (package-with-python2 python-pyusb))
 
 
 (define-public python2-pyusb
   (package-with-python2 python-pyusb))
 
+(define-public libplist
+  (package
+    (name "libplist")
+    (version "2.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
+                                  "libplist-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "00pnh9zf3iwdji2faccns7vagbmbrwbj9a8zp9s53a6rqaa9czis"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; Tests fail randomly when run in parallel because several of them write
+     ;; and read to/from the same file--e.g., "4.plist" is accessed by
+     ;; 'large.test' and 'largecmp.test'.
+     '(#:parallel-tests? #f))
+    (inputs
+     `(("python" ,python)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-cython" ,python-cython)))
+    (home-page "https://www.libimobiledevice.org/")
+    (synopsis "C library to handle Apple Property List files")
+    (description "This package provides a small portable C library to handle
+Apple Property List files in binary or XML.")
+    (license license:lgpl2.1+)))
+
+(define-public libusbmuxd
+  (package
+    (name "libusbmuxd")
+    (version "1.0.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
+                                  "libusbmuxd-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1wn9zq2224786mdr12c5hxad643d29wg4z6b7jn888jx4s8i78hs"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("libplist" ,libplist)))
+    (home-page "https://www.libimobiledevice.org/")
+    (synopsis "Library to multiplex connections from and to iOS devices")
+    (description "This package provides a client library to multiplex
+connections from and to iOS devices by connecting to a socket provided by a
+@code{usbmuxd} daemon.")
+    (license license:lgpl2.1+)))
+
+(define-public libimobiledevice
+  (package
+    (name "libimobiledevice")
+    (version "1.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
+                                  "libimobiledevice-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0dqhy4qwj30mw8pwckvjmgnj1qqrh6p8c6jknmhvylshhzh0ssvq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "PYTHON_LDFLAGS=-L"
+                            (assoc-ref %build-inputs "python")
+                            "/lib -lpython"
+                            ,(version-major+minor (package-version python))
+                            "m"))))
+    (propagated-inputs
+     `(("openssl" ,openssl)
+       ("libplist" ,libplist)
+       ("libusbmuxd" ,libusbmuxd)))
+    (inputs
+     `(("python" ,python)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-cython" ,python-cython)
+       ("libtool" ,libtool)))
+    (home-page "https://www.libimobiledevice.org/")
+    (synopsis "Protocol library and tools to communicate with Apple devices")
+    (description "libimobiledevice is a software library that talks the
+protocols to support Apple devices.  It allows other software to easily access
+the device's file system, retrieve information about the device and its
+internals, backup/restore the device, manage installed applications, retrieve
+address books, calendars, notes, and bookmarks, and (using libgpod) synchronize
+music and video to the device.")
+    (license license:lgpl2.1+)))
+
+(define-public ifuse
+  (package
+    (name "ifuse")
+    (version "1.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
+                                  "ifuse-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1p9a4n36jb194cnp6v57cz2bggwbywaz8pbpb95ch83pzdkdx257"))))
+    (inputs
+     `(("fuse" ,fuse)
+       ("libimobiledevice" ,libimobiledevice)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (build-system gnu-build-system)
+    (home-page "https://www.libimobiledevice.org/")
+    (synopsis "Mount iOS devices")
+    (description "This package provides @command{ifuse}, a command to mount
+iOS devices and access their contents.")
+    (license license:lgpl2.1+)))
+
+(define-public usbmuxd
+  (package
+    (name "usbmuxd")
+    (version "1.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
+                                  "usbmuxd-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0bdlc7a8plvglqqx39qqampqm6y0hcdws76l9dffwl22zss4i29y"))))
+    (inputs
+     `(("libplist" ,libplist)
+       ("libusb" ,libusb)
+       ("libimobiledevice" ,libimobiledevice)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (build-system gnu-build-system)
+    (home-page "https://www.libimobiledevice.org/")
+    (synopsis "Multiplex connections over USB to an iOS device")
+    (description "This package provides the @code{usbmuxd} daemon
+which multiplexes connections over USB to an iOS device.  To
+users, it means you can sync your music, contacts, photos, etc.
+over USB.")
+    (license license:gpl2+)))
+
 (define-public libmtp
   (package
     (name "libmtp")
 (define-public libmtp
   (package
     (name "libmtp")
-    (version "1.1.14")
+    (version "1.1.16")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/libmtp/libmtp/" version
                                  "/libmtp-" version ".tar.gz"))
              (sha256
               (base32
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/libmtp/libmtp/" version
                                  "/libmtp-" version ".tar.gz"))
              (sha256
               (base32
-               "1s0jyhypxmj0j8s003ba1n74x63h1rw8am9q4z2ip3xyjvid65rq"))))
+               "185vh9bds6dcy00ycggg69g4v7m3api40zv8vrcfb3fk3vfzjs2v"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -283,7 +474,7 @@ proposed for standardization.")
     ;; "GNU Lesser General Public License as published by the Free Software
     ;; Foundation; either version 2 of the License, or (at your option) any
     ;; later version."
     ;; "GNU Lesser General Public License as published by the Free Software
     ;; Foundation; either version 2 of the License, or (at your option) any
     ;; later version."
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public gmtp
   (package
 
 (define-public gmtp
   (package
@@ -317,7 +508,7 @@ proposed for standardization.")
     (description "gMTP is a simple graphical client for the Media Transfer Protocol
   (MTP), which allows media files to be transferred to and from many portable
 devices.")
     (description "gMTP is a simple graphical client for the Media Transfer Protocol
   (MTP), which allows media files to be transferred to and from many portable
 devices.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public hidapi
   (package
 
 (define-public hidapi
   (package
@@ -331,12 +522,6 @@ devices.")
                (base32
                 "0qdgyj9rgb7n0nk3ghfswrhzzknxqn4ibn3wj8g4r828pw07451w"))))
     (build-system gnu-build-system)
                (base32
                 "0qdgyj9rgb7n0nk3ghfswrhzzknxqn4ibn3wj8g4r828pw07451w"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi")))))))
     (inputs
      `(("libusb" ,libusb)
        ("udev" ,eudev)))
     (inputs
      `(("libusb" ,libusb)
        ("udev" ,eudev)))
@@ -351,9 +536,9 @@ devices.")
      "HIDAPI is a library which allows an application to interface with USB and Bluetooth
 HID-Class devices.")
     ;; HIDAPI can be used under one of three licenses.
      "HIDAPI is a library which allows an application to interface with USB and Bluetooth
 HID-Class devices.")
     ;; HIDAPI can be used under one of three licenses.
-    (license (list gpl3
-                   bsd-3
-                   (non-copyleft "file://LICENSE-orig.txt")))))
+    (license (list license:gpl3
+                   license:bsd-3
+                   (license:non-copyleft "file://LICENSE-orig.txt")))))
 
 (define-public python-hidapi
   (package
 
 (define-public python-hidapi
   (package
@@ -408,8 +593,9 @@ HID-Class devices.")
     (synopsis "Cython interface to hidapi")
     (description "This package provides a Cython interface to @code{hidapi}.")
     ;; The library can be used under either of these licenses.
     (synopsis "Cython interface to hidapi")
     (description "This package provides a Cython interface to @code{hidapi}.")
     ;; The library can be used under either of these licenses.
-    (license (list gpl3 bsd-3
-                   (non-copyleft
+    (license (list license:gpl3
+                   license:bsd-3
+                   (license:non-copyleft
                     "https://github.com/trezor/cython-hidapi/blob/master/LICENSE-orig.txt"
                     "You are free to use cython-hidapi code for any purpose.")))))
 
                     "https://github.com/trezor/cython-hidapi/blob/master/LICENSE-orig.txt"
                     "You are free to use cython-hidapi code for any purpose.")))))