~ruther/guix-local

a485a98ca8296d760251e9d870583117ac50979e — Marius Bakke 5 years ago 84d1b50 + 1ca0c34
Merge branch 'master' into staging
106 files changed, 3335 insertions(+), 1020 deletions(-)

M doc/guix.texi
M gnu/build/linux-initrd.scm
M gnu/ci.scm
M gnu/local.mk
M gnu/packages/admin.scm
M gnu/packages/aidc.scm
M gnu/packages/algebra.scm
M gnu/packages/assembly.scm
M gnu/packages/audio.scm
M gnu/packages/browser-extensions.scm
M gnu/packages/check.scm
M gnu/packages/clojure.scm
M gnu/packages/compression.scm
M gnu/packages/coq.scm
M gnu/packages/crates-graphics.scm
M gnu/packages/crates-io.scm
M gnu/packages/cups.scm
M gnu/packages/dictionaries.scm
M gnu/packages/disk.scm
M gnu/packages/django.scm
M gnu/packages/djvu.scm
M gnu/packages/docker.scm
M gnu/packages/documentation.scm
M gnu/packages/emacs-xyz.scm
M gnu/packages/embedded.scm
M gnu/packages/enchant.scm
M gnu/packages/file-systems.scm
M gnu/packages/fontutils.scm
M gnu/packages/game-development.scm
M gnu/packages/games.scm
M gnu/packages/geo.scm
M gnu/packages/gimp.scm
M gnu/packages/gnome-xyz.scm
M gnu/packages/gnome.scm
M gnu/packages/gnuzilla.scm
M gnu/packages/golang.scm
M gnu/packages/graphics.scm
M gnu/packages/gstreamer.scm
M gnu/packages/guile-xyz.scm
M gnu/packages/haskell-web.scm
M gnu/packages/heads.scm
M gnu/packages/image.scm
M gnu/packages/irc.scm
M gnu/packages/java.scm
M gnu/packages/language.scm
M gnu/packages/lego.scm
M gnu/packages/libusb.scm
M gnu/packages/linux.scm
M gnu/packages/lisp-xyz.scm
M gnu/packages/lisp.scm
M gnu/packages/lxqt.scm
M gnu/packages/mail.scm
M gnu/packages/man.scm
M gnu/packages/messaging.scm
M gnu/packages/music.scm
M gnu/packages/networking.scm
M gnu/packages/ocaml.scm
M gnu/packages/openstack.scm
M gnu/packages/package-management.scm
M gnu/packages/parallel.scm
A gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch
D gnu/packages/patches/xpra-4.0.4-norequests.patch
M gnu/packages/python-check.scm
M gnu/packages/python-crypto.scm
M gnu/packages/python-web.scm
M gnu/packages/python-xyz.scm
M gnu/packages/qt.scm
M gnu/packages/raspberry-pi.scm
M gnu/packages/rdesktop.scm
M gnu/packages/ruby.scm
M gnu/packages/rust-apps.scm
M gnu/packages/scheme.scm
M gnu/packages/shellutils.scm
M gnu/packages/simulation.scm
M gnu/packages/storage.scm
M gnu/packages/syncthing.scm
M gnu/packages/tls.scm
M gnu/packages/video.scm
M gnu/packages/vim.scm
M gnu/packages/web.scm
M gnu/packages/xfce.scm
M gnu/packages/xml.scm
M gnu/packages/xorg.scm
M gnu/services/base.scm
M gnu/services/cups.scm
M gnu/services/sddm.scm
A gnu/system/images/pinebook-pro.scm
M guix/build/cargo-build-system.scm
M guix/cpio.scm
M guix/import/hackage.scm
M guix/import/stackage.scm
M guix/lint.scm
M guix/scripts/build.scm
M guix/scripts/environment.scm
M guix/scripts/graph.scm
M guix/scripts/install.scm
M guix/scripts/lint.scm
M guix/scripts/pack.scm
M guix/scripts/package.scm
M guix/scripts/publish.scm
M guix/scripts/upgrade.scm
M guix/store.scm
M guix/transformations.scm
M po/doc/guix-manual.fr.po
M tests/lint.scm
M tests/store-database.scm
M doc/guix.texi => doc/guix.texi +6 -5
@@ 17500,16 17500,17 @@ CUPS service will generate a self-signed certificate if needed, for
secure connections to the print server.

Suppose you want to enable the Web interface of CUPS and also add
support for Epson printers @i{via} the @code{escpr} package and for HP
printers @i{via} the @code{hplip-minimal} package.  You can do that directly,
like this (you need to use the @code{(gnu packages cups)} module):
support for Epson printers @i{via} the @code{epson-inkjet-printer-escpr}
package and for HP printers @i{via} the @code{hplip-minimal} package.
You can do that directly, like this (you need to use the
@code{(gnu packages cups)} module):

@lisp
(service cups-service-type
         (cups-configuration
           (web-interface? #t)
           (extensions
             (list cups-filters escpr hplip-minimal))))
             (list cups-filters epson-inkjet-printer-escpr hplip-minimal))))
@end lisp

Note: If you wish to use the Qt5 based GUI which comes with the hplip


@@ 17538,7 17539,7 @@ Available @code{cups-configuration} fields are:
The CUPS package.
@end deftypevr

@deftypevr {@code{cups-configuration} parameter} package-list extensions (default: @code{(list escpr hplip-minimal foomatic-filters)})
@deftypevr {@code{cups-configuration} parameter} package-list extensions (default: @code{(list epson-inkjet-printer-escpr hplip-minimal foomatic-filters splix)})
Drivers and other extensions to the CUPS package.
@end deftypevr


M gnu/build/linux-initrd.scm => gnu/build/linux-initrd.scm +4 -9
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 39,8 39,9 @@
                             #:key
                             (compress? #t)
                             (gzip "gzip"))
  "Write a cpio archive containing DIRECTORY to file OUTPUT.  When
COMPRESS? is true, compress it using GZIP.  On success, return OUTPUT."
  "Write a cpio archive containing DIRECTORY to file OUTPUT, with reset
timestamps in the archive.  When COMPRESS? is true, compress it using GZIP.
On success, return OUTPUT."

  ;; Note: as per `ramfs-rootfs-initramfs.txt', always add directory entries
  ;; before the files that are inside of it: "The Linux kernel cpio


@@ 141,12 142,6 @@ REFERENCES-GRAPHS."
    (symlink (string-append guile "/bin/guile") "proc/self/exe")
    (readlink "proc/self/exe")

    ;; Reset the timestamps of all the files that will make it in the initrd.
    (for-each (lambda (file)
                (unless (eq? 'symlink (stat:type (lstat file)))
                  (utime file 0 0 0 0)))
              (find-files "." ".*"))

    (write-cpio-archive output "." #:gzip gzip))

  ;; Make sure directories are writable so we can delete files.

M gnu/ci.scm => gnu/ci.scm +3 -1
@@ 57,6 57,7 @@
  #:use-module (gnu system install)
  #:use-module (gnu system images hurd)
  #:use-module (gnu system images pine64)
  #:use-module (gnu system images pinebook-pro)
  #:use-module (gnu tests)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)


@@ 205,7 206,8 @@ SYSTEM."

(define %guix-system-images
  (list hurd-barebones-qcow2-image
        pine64-barebones-raw-image))
        pine64-barebones-raw-image
        pinebook-pro-barebones-raw-image))

(define (image-jobs store system)
  "Return a list of jobs that build images for SYSTEM."

M gnu/local.mk => gnu/local.mk +2 -1
@@ 652,6 652,7 @@ GNU_SYSTEM_MODULES =				\
						\
  %D%/system/images/hurd.scm			\
  %D%/system/images/pine64.scm			\
  %D%/system/images/pinebook-pro.scm		\
						\
  %D%/machine.scm				\
						\


@@ 989,6 990,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/freedink-engine-fix-sdl-hints.patch	\
  %D%/packages/patches/freeimage-unbundle.patch		\
  %D%/packages/patches/fuse-overlapping-headers.patch				\
  %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch	\
  %D%/packages/patches/ganeti-deterministic-manual.patch	\
  %D%/packages/patches/ganeti-disable-version-symlinks.patch	\
  %D%/packages/patches/ganeti-drbd-compat.patch			\


@@ 1717,7 1719,6 @@ dist_patch_DATA =						\
  %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
  %D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch	\
  %D%/packages/patches/xpra-4.0.1-systemd-run.patch	\
  %D%/packages/patches/xpra-4.0.4-norequests.patch	\
  %D%/packages/patches/xsane-fix-memory-leak.patch		\
  %D%/packages/patches/xsane-fix-pdf-floats.patch		\
  %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch	\

M gnu/packages/admin.scm => gnu/packages/admin.scm +1 -1
@@ 4131,7 4131,7 @@ entries, providing commands to add, remove, comment, and search.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/jclehner/nmrpflash.git")
         (url "https://github.com/jclehner/nmrpflash")
         (commit (string-append "v" version))))
       (sha256
        (base32 "1fdjrxhjs96rdclbkld57xarf592slhkp79h46z833npxpn12ck1"))

M gnu/packages/aidc.scm => gnu/packages/aidc.scm +1 -1
@@ 50,7 50,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/nu-book/zxing-cpp.git")
         (url "https://github.com/nu-book/zxing-cpp")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/algebra.scm => gnu/packages/algebra.scm +2 -2
@@ 1005,7 1005,7 @@ Optional thin wrappers allow usage of the library from other languages.")
(define-public eigen
  (package
    (name "eigen")
    (version "3.3.7")
    (version "3.3.8")
    (source (origin
              (method url-fetch)
              (uri (list


@@ 1015,7 1015,7 @@ Optional thin wrappers allow usage of the library from other languages.")
                                    version ".orig.tar.bz2")))
              (sha256
               (base32
                "1km3fyfzyqfdvmnl79drps3fjwnz3zbh0c7l34mfbqyvvs8cy4wz"))
                "1vxrsncfnkyq6gwxpsannpryp12mk7lc8f42ybvz3saf7icwc582"))
              (file-name (string-append name "-" version ".tar.bz2"))
              (patches (search-patches "eigen-stabilise-sparseqr-test.patch"))
              (modules '((guix build utils)))

M gnu/packages/assembly.scm => gnu/packages/assembly.scm +1 -1
@@ 444,7 444,7 @@ sets, both THUMB and ARM mode.")
           (origin
             (method git-fetch)
             (uri (git-reference
                   (url "https://github.com/intelxed/mbuild.git")
                   (url "https://github.com/intelxed/mbuild")
                   (commit "5304b94361fccd830c0e2417535a866b79c1c297")))
             (sha256
              (base32

M gnu/packages/audio.scm => gnu/packages/audio.scm +3 -3
@@ 140,7 140,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/KhronosGroup/OpenSL-ES-Registry.git")
         (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
         (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
       (file-name (git-file-name name version))
       (sha256


@@ 202,7 202,7 @@ promoting the market for advanced audio.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/Mindwerks/wildmidi.git")
         (url "https://github.com/Mindwerks/wildmidi")
         (commit (string-append name "-" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 277,7 277,7 @@ Coding (AAC) encoder.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/tinyalsa/tinyalsa.git")
         (url "https://github.com/tinyalsa/tinyalsa")
         (commit version)))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/browser-extensions.scm => gnu/packages/browser-extensions.scm +3 -3
@@ 53,7 53,7 @@ supported content to the Kodi media center.")
    (origin
      (method git-fetch)
      (uri (git-reference
            (url "https://github.com/uBlockOrigin/uAssets.git")
            (url "https://github.com/uBlockOrigin/uAssets")
            (commit commit)))
      (file-name (git-file-name "uAssets" (string-take commit 9)))
      (sha256


@@ 63,7 63,7 @@ supported content to the Kodi media center.")
(define ublock-origin
  (package
    (name "ublock-origin")
    (version "1.30.6")
    (version "1.31.0")
    (home-page "https://github.com/gorhill/uBlock")
    (source (origin
              (method git-fetch)


@@ 71,7 71,7 @@ supported content to the Kodi media center.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "10arx4r4s8125g9zlh3bcjpcb4qh2wzfmvqc2x8nly5fbxvxvns3"))))
                "1wfg1g061l83fqwllp8q1jr1kvwxy2kbbzfk6ynlf18kjng9v3h5"))))
    (build-system gnu-build-system)
    (outputs '("xpi" "firefox" "chromium"))
    (arguments

M gnu/packages/check.scm => gnu/packages/check.scm +3 -3
@@ 119,7 119,7 @@ modify some aspects of this style through the use of regular expressions.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/ebassi/mutest.git")
         (url "https://github.com/ebassi/mutest")
         (commit "e6246c9")))
       (file-name (git-file-name name version))
       (sha256


@@ 1427,14 1427,14 @@ use of resources by test cases.")))
(define-public python-subunit-bootstrap
  (package
    (name "python-subunit-bootstrap")
    (version "1.3.0")
    (version "1.4.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "python-subunit" version))
       (sha256
        (base32
         "1fsw8rsn1s3nklx06mayrg5rn2zbky6wwjc5z07s7rf1wjzfs1wn"))))
         "0j0ymmnc5nfxi1qzvy59j27viqca7l7xd0y9x29g7yr0h693j804"))))
    (build-system python-build-system)
    (propagated-inputs
     `(("python-extras" ,python-extras)

M gnu/packages/clojure.scm => gnu/packages/clojure.scm +21 -1
@@ 2,6 2,7 @@
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.


@@ 21,6 22,7 @@

(define-module (gnu packages clojure)
  #:use-module (gnu packages)
  #:use-module (gnu packages java)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)


@@ 78,6 80,8 @@
                  (sha256
                   (base32 "1kcyv2836acs27vi75hvf3r773ahv2nlh9b3j9xa9m9sdanz1h83")))))
      (build-system ant-build-system)
      (inputs
       `(("jre" ,icedtea)))
      (arguments
       `(#:imported-modules ((guix build clojure-utils)
                             (guix build guile-build-system)


@@ 114,7 118,23 @@
           (add-after 'install-license-files 'install-doc
             (cut install-doc #:doc-dirs '("doc/clojure/") <...>))
           (add-after 'install-doc 'install-javadoc
             (install-javadoc "target/javadoc/")))))
             (install-javadoc "target/javadoc/"))
           (add-after 'install 'make-wrapper
             (lambda* (#:key inputs outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
                      (wrapper (string-append out "/bin/clojure")))
                 (mkdir-p (string-append out "/bin"))
                 (with-output-to-file wrapper
                   (lambda _
                     (display
                      (string-append
                       "#!"
                       (which "sh")
                       "\n\n"
                       (assoc-ref inputs "jre") "/bin/java -jar "
                       out "/share/java/clojure.jar \"$@\"\n"))))
                 (chmod wrapper #o555))
               #t)))))
      (native-inputs libraries)
      (home-page "https://clojure.org/")
      (synopsis "Lisp dialect running on the JVM")

M gnu/packages/compression.scm => gnu/packages/compression.scm +1 -1
@@ 1302,7 1302,7 @@ or junctions, and always follows hard links.")
    (source
     (origin (method git-fetch)
             (uri (git-reference
                    (url "http://github.com/twogood/unshield.git")
                    (url "http://github.com/twogood/unshield")
                    (commit version)))
             (file-name (git-file-name name version))
             (sha256

M gnu/packages/coq.scm => gnu/packages/coq.scm +1 -1
@@ 522,7 522,7 @@ Coq proof assistant.")
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "git://github.com/uds-psl/autosubst.git")
                      (url "git://github.com/uds-psl/autosubst")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256

M gnu/packages/crates-graphics.scm => gnu/packages/crates-graphics.scm +6 -21
@@ 183,20 183,12 @@ text or blue underlined text, on ANSI terminals.")
    (arguments
     `(#:cargo-inputs
       (("rust-bindgen" ,rust-bindgen-0.53)
        ("rust-metadeps" ,rust-metadeps-1.1))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))
        ("rust-metadeps" ,rust-metadeps-1.1))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libaom" ,libaom)
       ("libclang" ,clang)
       ("clang" ,clang)
       ("llvm" ,llvm)))
    (home-page "https://github.com/rust-av/aom-rs")
    (synopsis "FFI bindings to aom")


@@ 402,19 394,12 @@ for computer graphics.")
    (arguments
     `(#:cargo-inputs
       (("rust-bindgen" ,rust-bindgen-0.54)
        ("rust-metadeps" ,rust-metadeps-1.1))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))
        ("rust-metadeps" ,rust-metadeps-1.1))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("dav1d" ,dav1d)
       ("pkg-config" ,pkg-config)
       ("libclang" ,clang)
       ("clang" ,clang)
       ("llvm" ,llvm)))
    (home-page "https://github.com/rust-av/dav1d-rs")
    (synopsis "FFI bindings to dav1d")

M gnu/packages/crates-io.scm => gnu/packages/crates-io.scm +1174 -245
@@ 39,6 39,7 @@
  #:use-module (gnu packages compression)
  #:use-module (gnu packages crates-graphics)
  #:use-module (gnu packages crates-gtk)
  #:use-module (gnu packages crypto)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages fontutils)


@@ 1470,6 1471,28 @@ trace (backtrace) at runtime in a Rust program.")
    (license (list license:asl2.0
                   license:expat))))

(define-public rust-base58-0.1
  (package
    (name "rust-base58")
    (version "0.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "base58" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "10xfw6v7jzn9i682mkw9nqybzafrvl3i2wawwgp5a8gh2n0fw92h"))))
    (build-system cargo-build-system)
    (home-page "https://github.com/debris/base58")
    (synopsis "Tiny and fast base58 encoding")
    (description
     "Encode to base58 using only Rust.  This package is based on
@url{https://github.com/trezor/trezor-crypto/blob/master/base58.c} at commit
c6e7d37.  However, this package works only up to 128 bytes.")
    (license license:expat)))

(define-public rust-base64-0.12
  (package
    (name "rust-base64")


@@ 1726,11 1749,6 @@ that uses Serde for transforming structs into bytes and vice versa!")
         (add-after 'unpack 'enable-unstable-features
           (lambda _
             (setenv "RUSTC_BOOTSTRAP" "1")
             #t))
         (add-before 'configure 'configure-clang
           (lambda* (#:key inputs #:allow-other-keys)
             (setenv "LIBCLANG_PATH" (string-append (assoc-ref inputs "clang")
                                                    "/lib"))
             #t)))))
    (home-page "https://rust-lang.github.io/rust-bindgen/")
    (synopsis "Generate Rust FFI bindings to C and C++ libraries.")


@@ 1775,17 1793,9 @@ bindings to C and C++ libraries.")
       #:cargo-development-inputs
       (("rust-clap" ,rust-clap-2)
        ("rust-diff" ,rust-diff-0.1)
        ("rust-shlex" ,rust-shlex-0.1))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))
        ("rust-shlex" ,rust-shlex-0.1))))
    (inputs
     `(("libclang" ,clang)))))
     `(("clang" ,clang)))))

(define-public rust-bindgen-0.53
  (package


@@ 1822,15 1832,7 @@ bindings to C and C++ libraries.")
       #:cargo-development-inputs
       (("rust-clap" ,rust-clap-2)
        ("rust-diff" ,rust-diff-0.1)
        ("rust-shlex" ,rust-shlex-0.1))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
        ("rust-shlex" ,rust-shlex-0.1))))))

(define-public rust-bindgen-0.52
  (package


@@ 1868,15 1870,7 @@ bindings to C and C++ libraries.")
       #:cargo-development-inputs
       (("rust-clap" ,rust-clap-2)
        ("rust-diff" ,rust-diff-0.1)
        ("rust-shlex" ,rust-shlex-0.1))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
        ("rust-shlex" ,rust-shlex-0.1))))))

(define-public rust-bindgen-0.51
  (package


@@ 2647,6 2641,37 @@ dependency on the rust stdlib.  This makes it suitable for embedded devices
and kernels.")
    (license (list license:bsd-3 license:expat))))

(define-public rust-bs58-0.2
  (package
    (name "rust-bs58")
    (version "0.2.5")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "bs58" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "125i962x0m0ggdif6ds51wfif2lypiicy469dj5j2l6rm6xycpn9"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-sha2" ,rust-sha2-0.8))
       #:cargo-development-inputs
       (("rust-assert-matches" ,rust-assert-matches-1.3)
        ("rust-base58" ,rust-base58-0.1)
        ("rust-rust-base58" ,rust-rust-base58-0.0))))
    (home-page "https://github.com/mycorrhiza/bs58-rs")
    (synopsis "Another Base58 codec implementation")
    (description
     "Another Base58 codec implementation.  Compared to the base58 crate this
is significantly faster at decoding (about 2.4x as fast when decoding 32
bytes), almost the same speed for encoding (about 3% slower when encoding 32
bytes), doesn't have the 128 byte limitation and supports a configurable
alphabet.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-bstr-0.2
  (package
    (name "rust-bstr")


@@ 2695,6 2720,35 @@ UTF-8.")
        (base32
         "0nzi9vqhl56ws8gq39f3aj4qjrr4l3g5lbkkcj8xq1x4cb74wq2r"))))))

(define-public rust-buffered-reader-0.9
  (package
    (name "rust-buffered-reader")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "buffered-reader" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "05rklfiia1k4c4ifpim08l22i0q0l3j9xdg2yh3njrp6w58z6z13"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-bzip2" ,rust-bzip2-0.3)
        ("rust-flate2" ,rust-flate2-1)
        ("rust-libc" ,rust-libc-0.2))))
    (home-page "https://sequoia-pgp.org/")
    (synopsis "Super-powered Reader")
    (description
     "Like the @code{BufRead} trait, the @code{BufferedReader} trait has an
internal buffer that is directly exposed to the user.  This design enables two
performance optimizations.  First, the use of an internal buffer amortizes
system calls.  Second, exposing the internal buffer allows the user to work
with data in place, which avoids another copy.")
    (license license:gpl3)))

(define-public rust-build-const-0.2
  (package
    (name "rust-build-const")


@@ 3447,17 3501,9 @@ archive to be linked into Rustcode.")
     `(#:cargo-inputs
       (("rust-nom" ,rust-nom-5))
       #:cargo-development-inputs
       (("rust-clang-sys" ,rust-clang-sys-0.28))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))
       (("rust-clang-sys" ,rust-clang-sys-0.28))))
    (inputs
     `(("libclang" ,clang)))
     `(("clang" ,clang)))
    (home-page "https://github.com/jethrogb/rust-cexpr")
    (synopsis "C expression parser and evaluator")
    (description


@@ 3482,15 3528,7 @@ archive to be linked into Rustcode.")
     `(#:cargo-inputs
       (("rust-nom" ,rust-nom-4.2))
       #:cargo-development-inputs
       (("rust-clang-sys" ,rust-clang-sys-0.28))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
       (("rust-clang-sys" ,rust-clang-sys-0.28))))))

(define-public rust-cexpr-0.2
  (package


@@ 3511,15 3549,7 @@ archive to be linked into Rustcode.")
     `(#:cargo-inputs
       (("rust-nom" ,rust-nom-3))
       #:cargo-development-inputs
       (("rust-clang-sys" ,rust-clang-sys-0.11))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
       (("rust-clang-sys" ,rust-clang-sys-0.11))))))

(define-public rust-cfg-if-0.1
  (package


@@ 3622,20 3652,12 @@ depending on a large number of #[cfg] parameters.  Structured like an
         "0695kfrqx7n091fzm6msbqg2q2kyhka64q08lm63f3l9d964i8cx"))))
    (build-system cargo-build-system)
    (inputs
     `(("libclang" ,clang)))
     `(("clang" ,clang)))
    (arguments
     `(#:cargo-inputs
       (("rust-glob" ,rust-glob-0.3)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-libloading" ,rust-libloading-0.6))
       #:phases
       (modify-phases %standard-phases
         (add-before 'configure 'configure-clang
           (lambda* (#:key inputs #:allow-other-keys)
             (setenv "LIBCLANG_PATH"
                     (string-append (assoc-ref inputs "libclang")
                                    "/lib"))
             #t)))))
        ("rust-libloading" ,rust-libloading-0.6))))
    (home-page "https://github.com/KyleMayes/clang-sys")
    (synopsis "Rust bindings for libclang")
    (description "This package provides Rust bindings for libclang.")


@@ 3659,15 3681,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
     `(#:cargo-inputs
       (("rust-glob" ,rust-glob-0.3)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-libloading" ,rust-libloading-0.5))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
        ("rust-libloading" ,rust-libloading-0.5))))))

(define-public rust-clang-sys-0.28
  (package


@@ 3700,15 3714,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
     `(#:cargo-inputs
       (("rust-glob" ,rust-glob-0.2)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-libloading" ,rust-libloading-0.5))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
        ("rust-libloading" ,rust-libloading-0.5))))))

(define-public rust-clang-sys-0.23
  (package


@@ 3745,15 3751,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
       (("rust-clippy" ,rust-clippy-0.0)
        ("rust-glob" ,rust-glob-0.2)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-libloading" ,rust-libloading-0.5))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
        ("rust-libloading" ,rust-libloading-0.5))))))

(define-public rust-clang-sys-0.11
  (package


@@ 3777,15 3775,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
        ("rust-glob" ,rust-glob-0.2)
        ("rust-lazy-static" ,rust-lazy-static-0.2)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-libloading" ,rust-libloading-0.3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-environmental-variable
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((clang (assoc-ref inputs "libclang")))
               (setenv "LIBCLANG_PATH"
                       (string-append clang "/lib")))
             #t)))))))
        ("rust-libloading" ,rust-libloading-0.3))))))

(define-public rust-clap-2
  (package


@@ 4470,6 4460,71 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
semantics than those provided by @code{as} or @code{From}/@code{Into}.")
    (license license:expat)))

(define-public rust-cookie-0.12
  (package
    (name "rust-cookie")
    (version "0.12.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "cookie" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1mdvqixahcywvqp0y8k2skkgbpfhsp0w73l9mz93dcrx1gq091l8"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-base64" ,rust-base64-0.10)
        ("rust-ring" ,rust-ring-0.14)
        ("rust-time" ,rust-time-0.1)
        ("rust-url" ,rust-url-1))))
    (home-page "https://github.com/SergioBenitez/cookie-rs")
    (synopsis
     "Crate for parsing HTTP cookie headers and managing a cookie jar")
    (description
     "Parse HTTP cookie headers and manage a cookie jar with this crate.
It supports signed and private (encrypted + signed) jars.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-cookie-store-0.7
  (package
    (name "rust-cookie-store")
    (version "0.7.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "cookie-store" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "174i9k9g62pfx7y1nqynywdpjplkl3j4hi3ck6bz2r996qzhnxa6"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-cookie" ,rust-cookie-0.12)
        ("rust-idna" ,rust-idna-0.1)
        ("rust-log" ,rust-log-0.4)
        ("rust-publicsuffix" ,rust-publicsuffix-1)
        ("rust-serde" ,rust-serde-1)
        ("rust-serde-json" ,rust-serde-json-1)
        ("rust-time" ,rust-time-0.1)
        ("rust-try-from" ,rust-try-from-0.3)
        ("rust-url" ,rust-url-1))
       #:cargo-development-inputs
       (("rust-env-logger" ,rust-env-logger-0.6)
        ("rust-pretty-assertions" ,rust-pretty-assertions-0.6))))
    (home-page "https://github.com/pfernie/cookie_store")
    (synopsis "Implementation of Cookie storage and retrieval per RFC6265")
    (description
     "This crate provides an implementation for storing and retrieving Cookies per
the path and domain matching rules specified in RFC6265.

Split from the user_agent crate.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-cordic-0.1
  (package
    (name "rust-cordic")


@@ 5410,6 5465,34 @@ Code (MAC) algorithms.")
algorithms.")
    (license (list license:expat license:asl2.0))))

(define-public rust-cryptovec-0.4
  (package
    (name "rust-cryptovec")
    (version "0.4.6")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "cryptovec" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1n88dmhfb2dxs48zllq1g1dya76zx4fajw482qy8jj4hgg1da4p4"))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f  ; CryptoVec::from_slice failed
       #:cargo-inputs
       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-winapi" ,rust-winapi-0.2))))
    (home-page "https://crates.io/crates/cryptovec")
    (synopsis
     "Vector which zeroes its memory on clears and reallocations")
    (description
     "This package provides a vector which zeroes its memory on clears and
reallocations.")
    (license license:asl2.0)))

(define-public rust-cssparser-0.27
  (package
    (name "rust-cssparser")


@@ 5738,14 5821,7 @@ use with bindgen.")
        ("rust-winapi" ,rust-winapi-0.3)
        ("rust-cc" ,rust-cc-1)
        ("rust-pkg-config" ,rust-pkg-config-0.3)
        ("rust-vcpkg" ,rust-vcpkg-0.2))
       #:phases
       (modify-phases %standard-phases
        (add-after 'unpack 'find-openssl
          (lambda* (#:key inputs #:allow-other-keys)
            (let ((openssl (assoc-ref inputs "openssl")))
              (setenv "OPENSSL_DIR" openssl))
            #t)))))
        ("rust-vcpkg" ,rust-vcpkg-0.2))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs


@@ 6555,6 6631,28 @@ Diesel.")
       #:cargo-development-inputs
       (("rust-term" ,rust-term-0.2))))))

(define-public rust-diffs-0.3
  (package
    (name "rust-diffs")
    (version "0.3.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "diffs" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "036sqycmir4bbl4016jprsyjq4hicc31r68dyqadmc8ac9pk55d1"))))
    (build-system cargo-build-system)
    (home-page "https://nest.pijul.com/pijul_org/pijul")
    (synopsis "Diff algorithms, also called longest common subsequence")
    (description
     "This package provides a number of diff algorithms, also called longest
common subsequence.  The diff algorithms include Myer's diff and Patience
diff.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-digest-0.9
  (package
    (name "rust-digest")


@@ 7578,6 7676,26 @@ Standard.")
accessor functions on enums.")
    (license (list license:expat license:asl2.0))))

(define-public rust-enum-as-inner-0.2
  (package
    (inherit rust-enum-as-inner-0.3)
    (name "rust-enum-as-inner")
    (version "0.2.1")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "enum-as-inner" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "0zg3h7k3g1z7a9ayqy63sk302d4dg5g2h274ddv80mj4jxn2cn1x"))))
    (arguments
     `(#:cargo-inputs
       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
        ("rust-quote" ,rust-quote-0.6)
        ("rust-syn" ,rust-syn-0.15))))))

(define-public rust-env-logger-0.7
  (package
    (name "rust-env-logger")


@@ 9812,6 9930,31 @@ API library @code{gdi32}.")
     "This package provides a package for generating 3D meshes/")
    (license license:asl2.0)))

(define-public rust-getch-0.2
  (package
    (name "rust-getch")
    (version "0.2.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "getch" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "00in8q95qi8a5q3zn2zcaqp5avj79f5myd2a4zfdy2m24ycvbc5v"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-libc" ,rust-libc-0.2)
        ("rust-termios" ,rust-termios-0.2))))
    (home-page "https://nest.pijul.com/pijul_org/getch")
    (synopsis "Portable implementation of getch")
    (description
     "This package provides a portable implementation of getch, using
@code{_getch} on Windows, and @code{termios} on Unix.")
    (license license:asl2.0)))

(define-public rust-getopts-0.2
  (package
    (name "rust-getopts")


@@ 9887,14 10030,7 @@ retrieving random data from system source.")
    (arguments
     `(#:cargo-inputs
       (("rust-gettext-sys" ,rust-gettext-sys-0.19)
        ("rust-locale-config" ,rust-locale-config-0.3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'use-system-gettext
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((gettext (assoc-ref inputs "gettext")))
               (setenv "GETTEXT_SYSTEM" gettext)
               #t))))))
        ("rust-locale-config" ,rust-locale-config-0.3))))
    (inputs
     `(("gettext" ,gettext-minimal)))
    (home-page "https://github.com/Koka/gettext-rs")


@@ 9919,14 10055,7 @@ retrieving random data from system source.")
    (arguments
     `(#:cargo-inputs
       (("rust-gettext-sys" ,rust-gettext-sys-0.19)
        ("rust-locale-config" ,rust-locale-config-0.2))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'use-system-gettext
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((gettext (assoc-ref inputs "gettext")))
               (setenv "GETTEXT_SYSTEM" gettext)
               #t))))))))
        ("rust-locale-config" ,rust-locale-config-0.2))))))

(define-public rust-gettext-sys-0.19
  (package


@@ 9947,14 10076,7 @@ retrieving random data from system source.")
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-cc" ,rust-cc-1))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'use-system-gettext
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((gettext (assoc-ref inputs "gettext")))
               (setenv "GETTEXT_SYSTEM" gettext)
               #t))))))
       (("rust-cc" ,rust-cc-1))))
    (inputs
     `(("gettext" ,gettext-minimal)))
    (home-page "https://github.com/Koka/gettext-rs")


@@ 10119,10 10241,11 @@ DWARF debugging format.")
        ("rust-thread-id" ,rust-thread-id-3)
        ("rust-time" ,rust-time-0.1))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libgit2" ,libgit2)
       ("libssh2" ,libssh2)
       ("openssl" ,openssl)
       ("pkg-config" ,pkg-config)
       ("zlib" ,zlib)))
    (home-page "https://github.com/rust-lang/git2-rs")
    (synopsis "Rust bindings to libgit2")


@@ 11684,6 11807,40 @@ SystemTime}}.")
        ("rust-tokio-mockstream" ,rust-tokio-mockstream-1)
        ("rust-url" ,rust-url-1))))))

(define-public rust-hyper-old-types-0.11
  (package
    (name "rust-hyper-old-types")
    (version "0.11.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "hyper-old-types" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1i69sks0bwamzqdbx8ffgkssxffv6crdmwjgl47nr5pkxi8vx5k8"))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f ; Tests do not compile
       #:cargo-inputs
       (("rust-base64" ,rust-base64-0.9)
        ("rust-bytes" ,rust-bytes-0.4)
        ("rust-http" ,rust-http-0.1)
        ("rust-httparse" ,rust-httparse-1)
        ("rust-language-tags" ,rust-language-tags-0.2)
        ("rust-log" ,rust-log-0.4)
        ("rust-mime" ,rust-mime-0.3)
        ("rust-percent-encoding" ,rust-percent-encoding-1.0)
        ("rust-time" ,rust-time-0.1)
        ("rust-unicase" ,rust-unicase-2))))
    (home-page "https://hyper.rs")
    (synopsis "HTTP types from hyper 0.11.x")
    (description
     "This package contains HTTP types from the newer hyper crate in versions
0.11.x.")
    (license license:expat)))

(define-public rust-hyper-rustls-0.21
  (package
    (name "rust-hyper-rustls")


@@ 13325,18 13482,12 @@ algorithm and related formats (ZLIB, GZIP).")
        ("rust-openssl-sys" ,rust-openssl-sys-0.9)
        ;; Build dependencies:
        ("rust-cc" ,rust-cc-1)
        ("rust-pkg-config" ,rust-pkg-config-0.3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'dont-vendor-sources
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t)))))
        ("rust-pkg-config" ,rust-pkg-config-0.3))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libgit2" ,libgit2)
       ("openssl" ,openssl)
       ("pkg-config" ,pkg-config)
       ("zlib" ,zlib)))
    (home-page "https://github.com/rust-lang/git2-rs")
    (synopsis "Native bindings to the libgit2 library")


@@ 13577,6 13728,69 @@ allocator.")
    (license (list license:asl2.0
                   license:expat))))

(define-public rust-libpijul-0.12
  (package
    (name "rust-libpijul")
    (version "0.12.2")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "libpijul" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "18d9n8xaq5ncq3375f0xrr96l8si1frczgzdlrz3fl1jby8vbl6f"))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f  ; backend::file_header::test_fileheader_alignment fails
       #:cargo-inputs
       (("rust-base64" ,rust-base64-0.10)
        ("rust-bincode" ,rust-bincode-1)
        ("rust-bitflags" ,rust-bitflags-1)
        ("rust-bs58" ,rust-bs58-0.2)
        ("rust-byteorder" ,rust-byteorder-1)
        ("rust-chrono" ,rust-chrono-0.4)
        ("rust-diffs" ,rust-diffs-0.3)
        ("rust-failure" ,rust-failure-0.1)
        ("rust-flate2" ,rust-flate2-1)
        ("rust-hex" ,rust-hex-0.3)
        ("rust-ignore" ,rust-ignore-0.4)
        ("rust-log" ,rust-log-0.4)
        ("rust-openssl" ,rust-openssl-0.10)
        ("rust-rand" ,rust-rand-0.6)
        ("rust-sanakirja" ,rust-sanakirja-0.10)
        ("rust-sequoia-openpgp" ,rust-sequoia-openpgp-0.9)
        ("rust-serde" ,rust-serde-1)
        ("rust-serde-derive" ,rust-serde-derive-1)
        ("rust-serde-json" ,rust-serde-json-1)
        ("rust-tempdir" ,rust-tempdir-0.3)
        ("rust-toml" ,rust-toml-0.4))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("clang" ,clang)
       ("nettle" ,nettle)
       ("openssl" ,openssl)))
    (home-page "https://pijul.org/")
    (synopsis "Library component of the pijul version control system")
    (description
     "This crate contains the core API to access Pijul repositories.

The key object is a @code{Repository}, on which @code{Txn} (immutable
transactions) and @code{MutTxn} (mutable transactions) can be started, to
perform a variety of operations.

Another important object is a @code{Patch}, which encodes two different pieces
of information:

@itemize
@item Information about deleted and inserted lines between two versions of a
file.
@item Information about file moves, additions and deletions.
@end itemize")
    (license license:gpl2+)))

(define-public rust-libsqlite3-sys-0.15
  (package
    (name "rust-libsqlite3-sys")


@@ 13640,6 13854,38 @@ known as zlib).")
    (license (list license:asl2.0
                   license:expat))))

(define-public rust-line-0.1
  (package
    (name "rust-line")
    (version "0.1.15")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "line" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0pissvrl5398701zlfd22w51ca32vhw83vbsl58a330hr4w5ra04"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-libc" ,rust-libc-0.2)
        ("rust-utf8parse" ,rust-utf8parse-0.1))))
    (home-page "https://crates.io/crates/line")
    (synopsis "Rust implementation of line editing in a terminal")
    (description
     "The main goals of this library are:

@itemize
@item Portability: should work on any system (Unix or Windows).
@item Support: was written for a real-world project (Pijul), so support is
unlikely to stop soon.
@item Output quality: avoid usual blinking terminal lines that older C
libraries have.
@end itemize")
    (license (list license:asl2.0 license:expat))))

(define-public rust-line-wrap-0.1
  (package
    (name "rust-line-wrap")


@@ 13759,18 14005,12 @@ pairs in insertion order.")
        ;; Build dependencies:
        ("rust-cc" ,rust-cc-1)
        ("rust-pkg-config" ,rust-pkg-config-0.3)
        ("rust-vcpkg" ,rust-vcpkg-0.2))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'dont-vendor-sources
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t)))))
        ("rust-vcpkg" ,rust-vcpkg-0.2))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libssh2" ,libssh2)
       ("openssl" ,openssl)
       ("pkg-config" ,pkg-config)
       ("zlib" ,zlib)))
    (home-page "https://github.com/alexcrichton/ssh2-rs")
    (synopsis "Native bindings to the libssh2 library")


@@ 14402,6 14642,31 @@ statement, the first matching branch is the item that gets emitted.")
whether an expression matches a pattern.")
    (license license:expat)))

(define-public rust-matchers-0.0
  (package
    (name "rust-matchers")
    (version "0.0.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "matchers" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1q8ckqmkjqkznvdi9x0z769yz2bmvlqcwx51ad2lpk4mfmgpi6gh"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-regex-automata" ,rust-regex-automata-0.1))))
    (home-page "https://github.com/hawkw/matchers")
    (synopsis "Regex matching on character and byte streams")
    (description
     "Use this crate to match on character and byte streams using regular
grammars.  It provides the subset of the regex crate that only deals with
matching, not parsing substrings.")
    (license license:expat)))

(define-public rust-matrixmultiply-0.2
  (package
    (name "rust-matrixmultiply")


@@ 15635,17 15900,11 @@ IO of Windows's named pipes.")
        ("rust-security-framework-sys" ,rust-security-framework-sys-0.3)
        ("rust-tempfile" ,rust-tempfile-3))
       #:cargo-development-inputs
       (("rust-hex" ,rust-hex-0.3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'find-openssl
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t)))))
       (("rust-hex" ,rust-hex-0.3))))
    (native-inputs
     `(("openssl" ,openssl)
       ("pkg-config" ,pkg-config)))
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("openssl" ,openssl)))
    (home-page "https://github.com/sfackler/rust-native-tls")
    (synopsis
     "Wrapper over a platform's native TLS implementation")


@@ 15728,21 15987,27 @@ types as proposed in RFC 1158.")
        ("rust-thiserror" ,rust-thiserror-1))
       #:cargo-development-inputs
       (("rust-bindgen" ,rust-bindgen-0.51)
        ("rust-pkg-config" ,rust-pkg-config-0.3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-missing-env-vars
           (lambda* (#:key inputs #:allow-other-keys)
             ;; FIXME: why do we need to set this?
             (setenv "LIBCLANG_PATH"
                     (string-append (assoc-ref inputs "clang") "/lib"))
             #t)))))
        ("rust-pkg-config" ,rust-pkg-config-0.3))))
    (home-page "https://gitlab.com/sequoia-pgp/nettle-rs")
  (synopsis "Rust bindings for the Nettle cryptographic library")
  (description "This package provides Rust bindings for the Nettle
cryptographic library.")
  (license (list license:lgpl3 license:gpl2 license:gpl3))))

(define-public rust-nettle-5
  (package
    (inherit rust-nettle-7)
    (version "5.0.3")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "nettle" version))
       (file-name
        (string-append (package-name rust-nettle-7) "-" version ".tar.gz"))
       (sha256
        (base32 "0zfplqdf3mag8r7lc124hl24vri8yg711jmm8gl1mpwnlhass2n4"))
       (patches (search-patches "rust-nettle-disable-vendor.patch"))))))

(define-public rust-nettle-sys-2
  (package
    (name "rust-nettle-sys")


@@ 15762,8 16027,7 @@ cryptographic library.")
    (inputs
     `(("nettle", nettle)))
    (arguments
     `(#:skip-build? #t
       #:cargo-development-inputs
     `(#:cargo-inputs
       (("rust-bindgen" ,rust-bindgen-0.51)
        ("rust-pkg-config" ,rust-pkg-config-0.3))))
    (home-page "https://gitlab.com/sequoia-pgp/nettle-sys")


@@ 17207,7 17471,7 @@ You probably don't want to link to this crate directly; instead check out the
             (substitute* "Cargo.toml"
               ((", path =.*}") "}"))
             #t)))))
    (native-inputs
    (inputs
     `(("openssl" ,openssl-1.0))))) ; for openssl-sys-extras

(define-public rust-openssl-probe-0.1


@@ 17251,17 17515,11 @@ system for OpenSSL.")
        ("rust-autocfg" ,rust-autocfg-1.0)
        ("rust-cc" ,rust-cc-1)
        ("rust-pkg-config" ,rust-pkg-config-0.3)
        ("rust-vcpkg" ,rust-vcpkg-0.2))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'find-openssl
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t)))))
        ("rust-vcpkg" ,rust-vcpkg-0.2))))
    (native-inputs
     `(("openssl" ,openssl)
       ("pkg-config" ,pkg-config)))
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("openssl" ,openssl)))
    (home-page "https://github.com/sfackler/rust-openssl")
    (synopsis "FFI bindings to OpenSSL")
    (description


@@ 17295,14 17553,7 @@ system for OpenSSL.")
       (("rust-gdi32-sys" ,rust-gdi32-sys-0.2)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-user32-sys" ,rust-user32-sys-0.2)
        ("rust-pkg-config" ,rust-pkg-config-0.3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'find-openssl
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t)))))))
        ("rust-pkg-config" ,rust-pkg-config-0.3))))))

(define-public rust-openssl-sys-extras-0.7
  (package


@@ 17330,7 17581,7 @@ system for OpenSSL.")
             (substitute* "Cargo.toml"
               ((", path =.*}") "}"))
             #t)))))
    (native-inputs
    (inputs
     `(("openssl" ,openssl-1.0)))   ; openssl-1.0 specifically
    (home-page "https://github.com/sfackler/rust-openssl")
    (synopsis


@@ 18075,6 18326,27 @@ and would-block I/O operations.")
path.Clean.")
    (license (list license:expat license:asl2.0))))

(define-public rust-pathdiff-0.1
  (package
    (name "rust-pathdiff")
    (version "0.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "pathdiff" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0cfg3isnx6mf3wbi7rsg4nmvywby40sbcs589n20fgi09l4p1gx3"))))
    (build-system cargo-build-system)
    (home-page "https://github.com/Manishearth/pathdiff")
    (synopsis "Library for diffing paths to obtain relative paths")
    (description
     "Use diff_paths to construct a relative path from a provided base
directory path to the provided path.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-pbkdf2-0.4
  (package
    (name "rust-pbkdf2")


@@ 19706,6 19978,38 @@ macro use case.")
@code{proc_macro_derive} pretend to be @code{proc_macro}.")
    (license (list license:expat license:asl2.0))))

(define-public rust-progrs-0.1
  (package
    (name "rust-progrs")
    (version "0.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "progrs" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "108jx8jrv2r1brhvbqfw6fwx298k5fnw3m46kn7lv0jx2wmf0ifz"))))
    (build-system cargo-build-system)
    (arguments '(#:tests? #f))
    (home-page "https://nest.pijul.com/laumann/progrs")
    (synopsis "Small library for displaying compact progress bars")
    (description
     "There are a number of libraries out there that can be used for progress
display, but in the author's opinion these libraries do it almost right -
either they eat up too much screen real estate (by not sticking to one line
per thing that should use progress) or they try to align stuff left and right.

In the author's humble opinion, the best example of just the right amount of
information vs screen real-estate is in the Git progress output (when cloning,
pulling, etc).  It uses one line per thing, and may display both percentage
complete (in cases where it's known) and even throughput (for network
transfer).

This library mimics the Git way of showing progress.")
    (license license:gpl2+)))

(define-public rust-proptest-0.9
  (package
    (name "rust-proptest")


@@ 21948,6 22252,29 @@ functionality as retain but gives mutable borrow to the predicate.")
    (description "This package provided safe, fast, small crypto using Rust.")
    (license (list license:isc license:openssl))))

(define-public rust-ring-0.14
  (package
    (inherit rust-ring-0.16)
    (name "rust-ring")
    (version "0.14.6")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "ring" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "0g091akf4dpg9qj05z3gc4nlrs57mjj2bqab98gaqp79wf3c2ss2"))))
    (arguments
     `(#:cargo-inputs
       (("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-spin" ,rust-spin-0.5)
        ("rust-untrusted" ,rust-untrusted-0.6)
        ("rust-winapi" ,rust-winapi-0.3)
        ("rust-cc" ,rust-cc-1))))))

(define-public rust-ring-0.13
  (package/inherit rust-ring-0.16
    (name "rust-ring")


@@ 22118,6 22445,41 @@ rust.")
console applications.")
  (license license:asl2.0)))

(define-public rust-rpassword-3
  (package
    (inherit rust-rpassword-4)
    (name "rust-rpassword")
    (version "3.0.2")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "rpassword" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "0vkifbbs160d7i7wy3kb0vw9mbf3pf470hg8f623rjkzmsyafky3"))))
    (arguments
     `(#:cargo-inputs
       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-winapi" ,rust-winapi-0.2))))))

(define-public rust-rpassword-2
  (package
    (inherit rust-rpassword-3)
    (name "rust-rpassword")
    (version "2.1.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "rpassword" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1v255xqkig5lwnczvm3achydhxx6kf9jcdxdlgzndgpd18bp6x6k"))))))

(define-public rust-rusqlite-0.19
  (package
    (name "rust-rusqlite")


@@ 22217,6 22579,41 @@ hashing function.")
password hashing function.")
    (license (list license:expat license:asl2.0))))

(define-public rust-rust-base58-0.0
  (package
    (name "rust-rust-base58")
    (version "0.0.4")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "rust-base58" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0fa4y2jjjmg1a0cr3gz4z8rkic0hx2vx5nm23za9lwf6rlgvj4xk"))
       (modules '((guix build utils)))
       (snippet
        '(begin
           ;; Otherwise we get an error: no method named `gen_iter` found
           ;; for type `rand::prelude::ThreadRng`
           (substitute* "Cargo.toml"
             (("rand.*") "rand = \"<0.6\"\n"))
           #t))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-num" ,rust-num-0.1))
       #:cargo-development-inputs
       (("rust-rand" ,rust-rand-0.4))))
    (home-page "https://github.com/nham/rust-base58")
    (synopsis
     "Simple library for converting to and from base-58 strings")
    (description
     "Convert to and from base-58 strings with a simple Rust api.
 Currently the conversion uses the Bitcoin base58 alphabet.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-rust-hawktracer-0.7
  (package
    (name "rust-rust-hawktracer")


@@ 23085,6 23482,35 @@ Rust.")
        ("rust-tempfile" ,rust-tempfile-3)
        ("rust-webpki-roots" ,rust-webpki-roots-0.17))))))

(define-public rust-rustls-0.15
  (package
    (inherit rust-rustls-0.16)
    (name "rust-rustls")
    (version "0.15.2")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "rustls" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "0vh93fhqfbn4ysw4xzkpkpqdz36xixz4mhs1qllgldfq5iay6wgj"))))
    (arguments
     `(#:tests? #f ;; 1/111 tests fail (test file not found)
       #:cargo-inputs
       (("rust-base64" ,rust-base64-0.10)
        ("rust-log" ,rust-log-0.4)
        ("rust-ring" ,rust-ring-0.14)
        ("rust-sct" ,rust-sct-0.5)
        ("rust-untrusted" ,rust-untrusted-0.6)
        ("rust-webpki" ,rust-webpki-0.19))
       #:cargo-development-inputs
       (("rust-env-logger" ,rust-env-logger-0.6)
        ("rust-log" ,rust-log-0.4)
        ("rust-tempfile" ,rust-tempfile-3)
        ("rust-webpki-roots" ,rust-webpki-roots-0.16))))))

(define-public rust-rustls-0.12
  (package/inherit rust-rustls-0.16
    (name "rust-rustls")


@@ 23386,21 23812,61 @@ paths point to the same file.")
       #:cargo-development-inputs
       (("rust-rand" ,rust-rand-0.3))))))

(define-public rust-scan-fmt-0.2
(define-public rust-sanakirja-0.10
  (package
    (name "rust-scan-fmt")
    (version "0.2.5")
    (name "rust-sanakirja")
    (version "0.10.3")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "scan_fmt" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "1gmaa07z8bkkdv5xhq2lrgml6ri7fqyyrjpiks3phmpmq3p8d0i4"))))
    (build-system cargo-build-system)
    (arguments
     (origin
       (method url-fetch)
       (uri (crate-uri "sanakirja" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1fhn5lb6jn0pimnk0nbf5h4xvp28xdkdh33d57gq1ixy8b2y091y"))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f  ; tests::test_del_medium_fork fails
       #:cargo-inputs
       (("rust-fs2" ,rust-fs2-0.4)
        ("rust-log" ,rust-log-0.4)
        ("rust-memmap" ,rust-memmap-0.7)
        ("rust-rand" ,rust-rand-0.6)
        ("rust-uuid" ,rust-uuid-0.7))
       #:cargo-development-inputs
       (("rust-env-logger" ,rust-env-logger-0.6)
        ("rust-hex" ,rust-hex-0.3)
        ("rust-tempdir" ,rust-tempdir-0.3))))
    (home-page "https://nest.pijul.com/pijul_org/sanakirja")
    (synopsis "Key-value dictionary, using copy-on-write and B-trees")
    (description
     "This package provides a key-value dictionary, using copy-on-write and B
trees.  It features:
@itemize
@item ACID semantics.
@item B trees with copy-on-write.
@item Support for referential transparency: databases can be cloned in time
O(log n) (where n is the size of the database).  This was the original
motivation for writing this library.
@end itemize")
    (license (list license:asl2.0 license:expat))))

(define-public rust-scan-fmt-0.2
  (package
    (name "rust-scan-fmt")
    (version "0.2.5")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "scan_fmt" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "1gmaa07z8bkkdv5xhq2lrgml6ri7fqyyrjpiks3phmpmq3p8d0i4"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs
       (("rust-regex" ,rust-regex-1))))


@@ 23760,6 24226,25 @@ Pwrite traits from the scroll crate.")
    (description "Certificate transparency SCT verification library")
    (license (list license:asl2.0 license:isc license:expat))))

(define-public rust-sct-0.5
  (package
    (inherit rust-sct-0.6)
    (name "rust-sct")
    (version "0.5.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "sct" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "1fb9ym5bwswx01yyggn7v2vfryih4vnqpp4r4ssv3qaqpn7xynig"))))
    (arguments
     `(#:cargo-inputs
       (("rust-ring" ,rust-ring-0.14)
        ("rust-untrusted" ,rust-untrusted-0.6))))))

(define-public rust-sct-0.3
  (package/inherit rust-sct-0.6
    (name "rust-sct")


@@ 24120,6 24605,97 @@ comparison.")
         (base32
          "18vhypw6zgccnrlm5ps1pwa0khz7ry927iznpr88b87cagr1v2iq"))))))

(define-public rust-sequoia-openpgp-0.9
  (package
    (name "rust-sequoia-openpgp")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "sequoia-openpgp" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "007h2pi7lcph5jf5bxjydm7hjwjai33yk6dic3cxknki22lxlkfw"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-base64" ,rust-base64-0.9)
        ("rust-buffered-reader" ,rust-buffered-reader-0.9)
        ("rust-bzip2" ,rust-bzip2-0.3)
        ("rust-failure" ,rust-failure-0.1)
        ("rust-flate2" ,rust-flate2-1)
        ("rust-idna" ,rust-idna-0.1)
        ("rust-lalrpop" ,rust-lalrpop-0.17)
        ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-memsec" ,rust-memsec-0.5)
        ("rust-nettle" ,rust-nettle-5)
        ("rust-quickcheck" ,rust-quickcheck-0.8)
        ("rust-rand" ,rust-rand-0.6)
        ("rust-sequoia-rfc2822" ,rust-sequoia-rfc2822-0.9)
        ("rust-time" ,rust-time-0.1))
       #:cargo-development-inputs
       (("rust-rpassword" ,rust-rpassword-3))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("clang" ,clang)
       ("nettle" ,nettle)))
    (home-page "https://sequoia-pgp.org/")
    (synopsis "OpenPGP data types and associated machinery")
    (description
     "This crate aims to provide a complete implementation of OpenPGP as
defined by RFC 4880 as well as some extensions (e.g., RFC 6637, which
describes ECC cryptography) for OpenPGP.  This includes support for unbuffered
message processing.

A few features that the OpenPGP community considers to be deprecated (e.g.,
version 3 compatibility) have been left out.  We have also updated some
OpenPGP defaults to avoid foot guns (e.g., we selected modern algorithm
defaults).  If some functionality is missing, please file a bug report.")
    (license license:gpl3)))

(define-public rust-sequoia-rfc2822-0.9
  (package
    (name "rust-sequoia-rfc2822")
    (version "0.9.0")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "sequoia-rfc2822" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1aj34i6862718m162rqfv69fkmvdw063s6ws7hbp42n73gb08p5c"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-failure" ,rust-failure-0.1)
        ("rust-lalrpop" ,rust-lalrpop-0.17)
        ("rust-lalrpop-util" ,rust-lalrpop-util-0.17))
       #:cargo-development-inputs
       (("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-quickcheck" ,rust-quickcheck-0.8)
        ("rust-rand" ,rust-rand-0.6))))
    (home-page "https://sequoia-pgp.org/")
    (synopsis "RFC 2822 name-addr parser")
    (description
     "Currently, this crate only recognizes the RFC 2822 name-addr and
addr-spec productions, i.e., things of the form:

Name (Comment) <email@@example.org>

and

email@@example.org

Although the above appear simple to parse, RFC 2822's whitespace and comment
rules are rather complex.  This crate implements the whole grammar." )
    (license license:gpl3)))

(define-public rust-serde-1
  (package
    (name "rust-serde")


@@ 24994,7 25570,7 @@ functionality and without weak references.")
             (substitute* "Cargo.toml"
               ((", path =.*}") "}"))
             #t)))))
    (native-inputs
    (inputs
     `(("openssl" ,openssl-1.0))))) ; for openssl-sys-extras

(define-public rust-sha1-asm-0.4


@@ 25173,6 25749,27 @@ picking compatible shaders.")
     "This package allows easy binding to, and loading of, shared libraries.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-shell-escape-0.1
  (package
    (name "rust-shell-escape")
    (version "0.1.4")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "shell-escape" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1fgs1iyx3b124b7njjmhfn9q5ipmhxrafavh8mxbfl9a9zk162hp"))))
    (build-system cargo-build-system)
    (home-page "https://github.com/sfackler/shell-escape")
    (synopsis
     "Escape characters that may have a special meaning in a shell")
    (description
     "Escape characters that may have a special meaning in a shell.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-shell-words-0.1
  (package
    (name "rust-shell-words")


@@ 25524,7 26121,7 @@ data type.")
     "Rust FFI bindings to the SLEEF Vectorized Math Library.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-slog-2.5
(define-public rust-slog-2
  (package
    (name "rust-slog")
    (version "2.5.2")


@@ 25551,32 26148,6 @@ data type.")
            license:expat
            license:asl2.0))))

(define-public rust-slog-2.4
  (package
    (name "rust-slog")
    (version "2.4.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "slog" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "13jh74jlckzh5cygkhs0k4r82wnmw8ha2km829xwslhr83n2w6hy"))))
    (build-system cargo-build-system)
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs
       (("rust-erased-serde" ,rust-erased-serde-0.3))))
    (home-page "https://github.com/slog-rs/slog")
    (synopsis "Structured, extensible, composable logging for Rust")
    (description
     "Structured, extensible, composable logging for Rust.")
    (license (list license:mpl2.0
                   license:expat
                   license:asl2.0))))

(define-public rust-smallvec-1
  (package
    (name "rust-smallvec")


@@ 25654,6 26225,33 @@ maximal amount of configuration possible intended.")
    (license (list license:asl2.0
                   license:expat))))

(define-public rust-socks-0.3
  (package
    (name "rust-socks")
    (version "0.3.2")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "socks" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1hnbw4c4j7dn9n3bd1v7ddkdzlxlzkfw3z29da1nxlj6jgx4r9p6"))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f  ; Tests require network connection.
       #:cargo-inputs
       (("rust-byteorder" ,rust-byteorder-1)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-winapi" ,rust-winapi-0.2)
        ("rust-ws2-32-sys" ,rust-ws2-32-sys-0.2))))
    (home-page "https://github.com/sfackler/rust-socks")
    (synopsis "Rust SOCKS proxy clients")
    (description
     "You can write SOCKS proxy clients with this crate.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-sourcefile-0.1
  (package
    (name "rust-sourcefile")


@@ 28136,6 28734,34 @@ fixed set of worker threads.")
    (license (list license:asl2.0
                   license:expat))))

(define-public rust-thrussh-libsodium-0.1
  (package
    (name "rust-thrussh-libsodium")
    (version "0.1.4")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "thrussh-libsodium" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0fjssjiwnmbxjvajk37l7k0fcw1ys97j7n8bpn3q3bbnz2qfrphv"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-libc" ,rust-libc-0.2)
        ("rust-pkg-config" ,rust-pkg-config-0.3))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libsodium" ,libsodium)))
    (home-page "https://nest.pijul.com/pijul_org/thrussh")
    (synopsis "Straightforward bindings to libsodium")
    (description
     "You can bind to libsodium from Rust with this crate.")
    (license (list license:asl2.0 license:expat))))

(define-public rust-time-0.2
  (package
    (name "rust-time")


@@ 28789,6 29415,50 @@ applications backed by buffers.")
Tokio.")
    (license (list license:expat license:asl2.0))))

(define-public rust-tokio-net-0.2
  (package
    (name "rust-tokio-net")
    (version "0.2.0-alpha.4")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "tokio-net" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "15vm0bndn6zcpkp1yb6v736rbhqgim5skc76rz299xd3y0pr249a"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-bytes" ,rust-bytes-0.4)
        ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
        ("rust-futures-core-preview" ,rust-futures-core-preview-0.3)
        ("rust-futures-sink-preview" ,rust-futures-sink-preview-0.3)
        ("rust-futures-util-preview" ,rust-futures-util-preview-0.3)
        ("rust-iovec" ,rust-iovec-0.1)
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-libc" ,rust-libc-0.2)
        ("rust-mio" ,rust-mio-0.6)
        ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1)
        ("rust-mio-uds" ,rust-mio-uds-0.6)
        ("rust-num-cpus" ,rust-num-cpus-1)
        ("rust-parking-lot" ,rust-parking-lot-0.8)
        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1)
        ("rust-slab" ,rust-slab-0.4)
        ("rust-tokio-codec" ,rust-tokio-codec-0.1)
        ("rust-tokio-executor" ,rust-tokio-executor-0.1)
        ("rust-tokio-io" ,rust-tokio-io-0.1)
        ("rust-tokio-sync" ,rust-tokio-sync-0.1)
        ("rust-tracing" ,rust-tracing-0.1)
        ("rust-winapi" ,rust-winapi-0.3))))
    (home-page "https://tokio.rs")
    (synopsis "Event loop that drives Tokio I/O resources")
    (description
     "This package provides the event loop that drives Tokio I/O resources.")
    (license license:expat)))

(define-public rust-tokio-openssl-0.4
  (package
    (name "rust-tokio-openssl")


@@ 28983,6 29653,33 @@ using Rustls.")
        ("rust-webpki-roots" ,rust-webpki-roots-0.18))))
    (license (list license:expat license:asl2.0))))

(define-public rust-tokio-rustls-0.9
  (package
    (inherit rust-tokio-rustls-0.12)
    (name "rust-tokio-rustls")
    (version "0.9.4")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "tokio-rustls" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "1jd63sl177sxacnksaxhazzmamwds98xk3niprh2qib75a1rk8cm"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-bytes" ,rust-bytes-0.4)
        ("rust-futures" ,rust-futures-0.1)
        ("rust-iovec" ,rust-iovec-0.1)
        ("rust-rustls" ,rust-rustls-0.15)
        ("rust-tokio-io" ,rust-tokio-io-0.1)
        ("rust-webpki" ,rust-webpki-0.19))
       #:cargo-development-inputs
       (("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-tokio" ,rust-tokio-0.1))))))

(define-public rust-tokio-signal-0.2
  (package
    (name "rust-tokio-signal")


@@ 29672,6 30369,123 @@ automatically instrumenting functions.")
@code{futures} with @code{tracing}.")
    (license license:expat)))

(define-public rust-tracing-fmt-0.1
  (package
    (name "rust-tracing-fmt")
    (version "0.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "tracing-fmt" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0wagcrd6w8d3k7zdvg6sy2bwfh8w87i6ndia69p54fc7p3z4f1c8"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-tracing-subscriber" ,rust-tracing-subscriber-0.1))
       #:cargo-development-inputs
       (("rust-tracing" ,rust-tracing-0.1))))
    (home-page "https://tokio.rs")
    (synopsis "Tracing subscriber that formats and logs trace data")
    (description
     "This package provides a tracing subscriber that formats and logs trace
data.  Moved to the tracing-subscriber crate.")
    (license license:expat)))

(define-public rust-tracing-log-0.1
  (package
    (name "rust-tracing-log")
    (version "0.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "tracing-log" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "1fdr0az98q9m5kiybvdvsb2m9mg86fdidgb5czzq2d71g1qqq3sy"))))
    (build-system cargo-build-system)
    (arguments
     `(#:cargo-inputs
       (("rust-env-logger" ,rust-env-logger-0.6)
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-log" ,rust-log-0.4)
        ("rust-tracing-core" ,rust-tracing-core-0.1))
       #:cargo-development-inputs
       (("rust-tracing" ,rust-tracing-0.1))))
    (home-page "https://tokio.rs")
    (synopsis
     "Provides compatibility between tracing the log crates")
    (description
     "Tracing is a framework for instrumenting Rust programs with
context-aware, structured, event-based diagnostic information.  This crate
provides compatibility layers for using tracing alongside the logging facade
provided by the log crate.

This crate provides:

@itemize
@item @code{AsTrace} and @code{AsLog} traits for converting between tracing
and log types.
@item @code{LogTracer}, a @code{log::Log} implementation that consumes
@code{log::Records} and outputs them as @code{tracing::Events}.
@item An @code{env_logger} module, with helpers for using the env_logger crate
with tracing (optional, enabled by the env-logger feature).
@end itemize")
    (license license:expat)))

(define-public rust-tracing-subscriber-0.1
  (package
    (name "rust-tracing-subscriber")
    (version "0.1.6")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "tracing-subscriber" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0i9fhlyz8mn2znpgmi5bv9y24pwpkkgfxs0rwcf6dl6djmjs2b0r"))))
    (build-system cargo-build-system)
    (arguments
     `(#:tests? #f      ; Some test files missing.
       #:cargo-inputs
       (("rust-ansi-term" ,rust-ansi-term-0.11)
        ("rust-chrono" ,rust-chrono-0.4)
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-matchers" ,rust-matchers-0.0)
        ("rust-owning-ref" ,rust-owning-ref-0.4)
        ("rust-parking-lot" ,rust-parking-lot-0.9)
        ("rust-regex" ,rust-regex-1)
        ("rust-smallvec" ,rust-smallvec-0.6)
        ("rust-tracing-core" ,rust-tracing-core-0.1)
        ("rust-tracing-log" ,rust-tracing-log-0.1))
       #:cargo-development-inputs
       (("rust-criterion" ,rust-criterion-0.3)
        ("rust-log" ,rust-log-0.4)
        ("rust-tracing" ,rust-tracing-0.1)
        ("rust-tracing-log" ,rust-tracing-log-0.1))))
    (home-page "https://tokio.rs")
    (synopsis "Implement and compose tracing subscribers")
    (description
     "Utilities for implementing and composing tracing subscribers.

Tracing is a framework for instrumenting Rust programs to collect
scoped, structured, and async-aware diagnostics.  The Subscriber trait
represents the functionality necessary to collect this trace
data.  This crate contains tools for composing subscribers out of
smaller units of behaviour, and batteries-included implementations of
common subscriber functionality.

Tracing-subscriber is intended for use by both Subscriber authors and
application authors using tracing to instrument their applications.")
    (license license:expat)))

(define-public rust-traitobject-0.1
  (package
    (name "rust-traitobject")


@@ 29850,6 30664,48 @@ extension for the Trust-DNS client to use tokio-openssl for TLS.")
foundational DNS protocol library for all Trust-DNS projects.")
    (license (list license:expat license:asl2.0))))

(define-public rust-trust-dns-proto-0.7
  (package
    (inherit rust-trust-dns-proto-0.19)
    (name "rust-trust-dns-proto")
    (version "0.7.4")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "trust-dns-proto" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "0099dm57nnizx4apik9sh3mnvr7rp9mivc903v8xss13dkgynnam"))))
    (arguments
     `(#:cargo-inputs
       (("rust-byteorder" ,rust-byteorder-1)
        ("rust-data-encoding" ,rust-data-encoding-2)
        ("rust-enum-as-inner" ,rust-enum-as-inner-0.2)
        ("rust-failure" ,rust-failure-0.1)
        ("rust-futures" ,rust-futures-0.1)
        ("rust-idna" ,rust-idna-0.1)
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-log" ,rust-log-0.4)
        ("rust-openssl" ,rust-openssl-0.10)
        ("rust-rand" ,rust-rand-0.6)
        ("rust-ring" ,rust-ring-0.14)
        ("rust-serde" ,rust-serde-1)
        ("rust-smallvec" ,rust-smallvec-0.6)
        ("rust-socket2" ,rust-socket2-0.3)
        ("rust-tokio-executor" ,rust-tokio-executor-0.1)
        ("rust-tokio-io" ,rust-tokio-io-0.1)
        ("rust-tokio-reactor" ,rust-tokio-reactor-0.1)
        ("rust-tokio-tcp" ,rust-tokio-tcp-0.1)
        ("rust-tokio-timer" ,rust-tokio-timer-0.2)
        ("rust-tokio-udp" ,rust-tokio-udp-0.1)
        ("rust-untrusted" ,rust-untrusted-0.6)
        ("rust-url" ,rust-url-1))
       #:cargo-development-inputs
       (("rust-env-logger" ,rust-env-logger-0.6)
        ("rust-tokio" ,rust-tokio-0.1))))))

(define-public rust-trust-dns-resolver-0.19
  (package
    (name "rust-trust-dns-resolver")


@@ 29929,6 30785,39 @@ other queries.")
extension for the Trust-DNS client to use rustls for TLS.")
    (license (list license:expat license:asl2.0))))

(define-public rust-trust-dns-rustls-0.6
  (package
    (inherit rust-trust-dns-rustls-0.19)
    (name "rust-trust-dns-rustls")
    (version "0.6.4")
    (source
     (origin
       (method url-fetch)
       (uri (crate-uri "trust-dns-rustls" version))
       (file-name
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
         "0vbh2y7w2s5gcw33fn4hb5f927kgjm6603vw63slg9riikmsiq43"))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("openssl" ,openssl)))
    (arguments
     `(#:cargo-test-flags
       '("--release" "--" "--skip=tests::test_tls_client_stream_ipv4")
       #:cargo-inputs
       (("rust-futures" ,rust-futures-0.1)
        ("rust-log" ,rust-log-0.4)
        ("rust-rustls" ,rust-rustls-0.15)
        ("rust-tokio-rustls" ,rust-tokio-rustls-0.9)
        ("rust-tokio-tcp" ,rust-tokio-tcp-0.1)
        ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.7)
        ("rust-webpki" ,rust-webpki-0.19))
       #:cargo-development-inputs
       (("rust-openssl" ,rust-openssl-0.10)
        ("rust-tokio" ,rust-tokio-0.1))))))

(define-public rust-try-from-0.3
  (package
    (name "rust-try-from")


@@ 30880,7 31769,7 @@ Unix users and groups.")
        ("rust-md5" ,rust-md5-0.6)
        ("rust-rand" ,rust-rand-0.7)
        ("rust-serde" ,rust-serde-1)
        ("rust-slog" ,rust-slog-2.5))))
        ("rust-slog" ,rust-slog-2))))
    (home-page "https://github.com/uuid-rs/uuid")
    (synopsis "Library to generate and parse UUIDs")
    (description


@@ 30909,7 31798,7 @@ Unix users and groups.")
        ("rust-rand" ,rust-rand-0.6)
        ("rust-serde" ,rust-serde-1)
        ("rust-sha1" ,rust-sha1-0.6)
        ("rust-slog" ,rust-slog-2.4)
        ("rust-slog" ,rust-slog-2)
        ("rust-winapi" ,rust-winapi-0.3))
       #:cargo-development-inputs
       (("rust-bincode" ,rust-bincode-1)


@@ 31879,6 32768,28 @@ attribute that is not in the shared backend crate.")
Verification.")
    (license license:isc)))

(define-public rust-webpki-0.19
  (package
    (inherit rust-webpki-0.21)
    (name "rust-webpki")
    (version "0.19.1")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "webpki" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "10nhyxlqsa4caxlxrijm5h79rdg6ld8hqy78ldjnnfhaj3biqzjg"))))
    (arguments
     `(#:tests? #f  ; tests fail to build "missing file tests/ed25519/ee.der"
       #:cargo-inputs
       (("rust-ring" ,rust-ring-0.14)
        ("rust-untrusted" ,rust-untrusted-0.6))
       #:cargo-development-inputs
       (("rust-base64" ,rust-base64-0.9))))))

(define-public rust-webpki-0.18
  (package/inherit rust-webpki-0.21
    (name "rust-webpki")


@@ 31960,6 32871,25 @@ with webpki.")
      (sha256
       (base32 "12vi8dh0yik0h4f0b9dnlw5i3gxyky7iblbksh6zcq4xvlvswqm2"))))))

(define-public rust-webpki-roots-0.16
  (package
    (inherit rust-webpki-roots-0.17)
    (name "rust-webpki-roots")
    (version "0.16.0")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "webpki-roots" version))
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
          "03ny02mwqdgd2ff23k03kbwr2rrcaymxhp7jcjjikfh340hs83y1"))))
    (arguments
     `(#:cargo-inputs
       (("rust-untrusted" ,rust-untrusted-0.6)
        ("rust-webpki" ,rust-webpki-0.19))))))

(define-public rust-webpki-roots-0.14
  (package/inherit rust-webpki-roots-0.18
    (name "rust-webpki-roots")


@@ 32391,9 33321,8 @@ API.")
    (arguments
     `(#:skip-build? #t
       #:cargo-inputs
       (("rust-winapi" ,rust-winapi-0.2))
       #:cargo-development-inputs
       (("rust-winapi-build" ,rust-winapi-build-0.1))))
       (("rust-winapi" ,rust-winapi-0.2)
        ("rust-winapi-build" ,rust-winapi-build-0.1))))
    (home-page "https://github.com/retep998/winapi-rs")
    (synopsis "Function definitions for the Windows API library ws2_32")
    (description

M gnu/packages/cups.scm => gnu/packages/cups.scm +24 -11
@@ 744,10 744,10 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
    (license (list license:expat        ; icc2ps/*.[ch]
                   license:gpl2+))))    ; everything else

(define-public escpr
(define-public epson-inkjet-printer-escpr
  (package
    (name "escpr")
    (version "1.7.7")
    (name "epson-inkjet-printer-escpr")
    (version "1.7.8")
    ;; XXX: This currently works.  But it will break as soon as a newer
    ;; version is available since the URLs for older versions are not
    ;; preserved.  An alternative source will be added as soon as


@@ 755,15 755,19 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/10/49/18/"
                           "f3016be6120a7271a6d9cb64872f817bce1920b8/"
                           "epson-inkjet-printer-escpr-1.7.7-1lsb3.2.tar.gz"))
       (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/12/04/32/"
                           "1a455ef8618def65700ca4e446311c2fb43cd839/"
                           "epson-inkjet-printer-escpr-1.7.8-1lsb3.2.tar.gz"))
       (sha256
        (base32 "0khdf2a9iwh9aplj2gzyzl53yyfnfv0kszk3p018jnirl5l475ld"))))
        (base32 "1pygg2bd2gh27dc65h3dzwrpvi6bq5c87wl0ldchqlc2b3blsx6p"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       `(,(string-append "--prefix="
     `(#:modules
       ((srfi srfi-26)
        ,@%gnu-build-system-modules)
       #:configure-flags
       `("--disable-static"
         ,(string-append "--prefix="
                         (assoc-ref %outputs "out"))
         ,(string-append "--with-cupsfilterdir="
                         (assoc-ref %outputs "out") "/lib/cups/filter")


@@ 781,7 785,13 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
                (string-append match "aclocal"))
               (("^(AUTOMAKE=).*" _ match)
                (string-append match "automake")))
             #t)))))
             #t))
         (add-after 'install 'compress-PPDs
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out")))
               (with-directory-excursion out
                 (for-each (cut invoke "gzip" "-9" <>)
                           (find-files "share/cups" "\\.ppd$")))))))))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)))


@@ 793,9 803,12 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
System} that offers high-quality printing with Seiko@tie{}Epson color ink jet
printers.  It can be used only with printers that support the Epson@tie{}ESC/P-R
language.")
    (home-page "http://download.ebz.epson.net/dsc/search/01/search")
    (home-page "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX")
    (license license:gpl2+)))

(define-public escpr
  (deprecated-package "escpr" epson-inkjet-printer-escpr))

(define-public splix
  ;; Last released in 2009 <https://sourceforge.net/projects/splix/files/>.
  ;; Last SVN commit was 2013 <https://svn.code.sf.net/p/splix/code/splix/>.

M gnu/packages/dictionaries.scm => gnu/packages/dictionaries.scm +1 -1
@@ 242,7 242,7 @@ and a Python library.")
      (origin
        (method git-fetch)
        (uri (git-reference
               (url"https://github.com/soimort/translate-shell.git")
               (url"https://github.com/soimort/translate-shell")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256

M gnu/packages/disk.scm => gnu/packages/disk.scm +1 -1
@@ 1052,7 1052,7 @@ that support this feature).")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/memkind/memkind.git")
                    (url "https://github.com/memkind/memkind")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256

M gnu/packages/django.scm => gnu/packages/django.scm +2 -3
@@ 862,14 862,13 @@ settings.py and easily use them in your project.")
(define-public python-django-q
  (package
    (name "python-django-q")
    (version "1.3.3")
    (version "1.3.4")
    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "django-q" version))
        (sha256
         (base32
          "1fs29767940akbsn3vdzw2rqnn9v77b0b55bi7fvydny1rk7fw6y"))))
         (base32 "03z1pf6wlf47i7afr79a8fiiidfk1vq19yaqnv0m4qdny7f58gaj"))))
    (build-system python-build-system)
    ;; FIXME: Tests require disque, Redis, MongoDB, Docker.
    (arguments '(#:tests? #f))

M gnu/packages/djvu.scm => gnu/packages/djvu.scm +112 -0
@@ 27,12 27,17 @@
  #:use-module (guix git-download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)
  #:use-module (gnu packages check)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages gawk)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages ghostscript)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages image)
  #:use-module (gnu packages imagemagick)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages pdf)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)


@@ 51,6 56,9 @@
               (base32
                "0psh3zl9dj4n4r3lx25390nx34xz0bg0ql48zdskhq354ljni5p6"))))
    (build-system gnu-build-system)
    (inputs
     `(("libjpeg-turbo" ,libjpeg-turbo)
       ("libtiff" ,libtiff)))
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (add-after 'unpack 'reproducible


@@ 160,3 168,107 @@ It is able to extract:
@end itemize\n")
    (home-page "https://jwilk.net/software/pdf2djvu")
    (license license:gpl2)))

(define-public djvu2pdf
  (package
    (name "djvu2pdf")
    (version "0.9.2")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://0x2a.at/site/projects/djvu2pdf/djvu2pdf-"
                           version ".tar.gz"))
       (sha256
        (base32 "0v2ax30m7j1yi4m02nzn9rc4sn4vzqh5vywdh96r64j4pwvn5s5g"))))
    (build-system gnu-build-system)
    (inputs
     `(("djvulibre" ,djvulibre)
       ("gawk" ,gawk)
       ("ghostscript" ,ghostscript)
       ("grep" ,grep)
       ("ncurses" ,ncurses)
       ("which" ,which)))
    (arguments
     `(#:tests? #f ; No test suite
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-paths
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((djvulibre (assoc-ref inputs "djvulibre"))
                   (gawk (assoc-ref inputs "gawk"))
                   (ghostscript (assoc-ref inputs "ghostscript"))
                   (grep (assoc-ref inputs "grep"))
                   (ncurses (assoc-ref inputs "ncurses"))
                   (which (assoc-ref inputs "which")))
               (substitute* "djvu2pdf"
                 (("awk")
                  (string-append gawk "/bin/awk"))
                 (("ddjvu")
                  (string-append djvulibre "/bin/ddjvu"))
                 (("djvudump")
                  (string-append djvulibre "/bin/djvudump"))
                 (("grep")
                  (string-append grep "/bin/grep"))
                 (("gs")
                  (string-append ghostscript "/bin/gs"))
                 (("tput ")
                  (string-append ncurses "/bin/tput "))
                 (("which")
                  (string-append which "/bin/which"))))
             #t))
         (delete 'configure)
         (delete 'build)
         (replace 'install
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref %outputs "out")))
               (install-file "djvu2pdf"
                             (string-append out "/bin"))
               (install-file "djvu2pdf.1.gz"
                             (string-append out "/share/man/man1"))
               #t))))))
    (synopsis "DjVu to PDF converter")
    (description "This is a small tool to convert DjVu files to PDF files.")
    (home-page "https://0x2a.at/site/projects/djvu2pdf/")
    (license license:gpl2+)))

(define-public minidjvu
  (package
    (name "minidjvu")
    (version "0.8")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/minidjvu/minidjvu/"
                           version "/minidjvu-" version ".tar.gz"))
       (sha256
        (base32 "0jmpvy4g68k6xgplj9zsl6brg6vi81mx3nx2x9hfbr1f4zh95j79"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("gettext" ,gettext-minimal)))
    (inputs
     `(("libjpeg-turbo" ,libjpeg-turbo)
       ("libtiff" ,libtiff)
       ("zlib" ,zlib)))
    (arguments
     '(#:configure-flags '("--disable-static")
       #:parallel-build? #f
       #:tests? #f ; No test suite
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-paths
           (lambda _
             (substitute* "Makefile.in"
               (("/usr/bin/gzip")
                "gzip"))
             #t))
         (add-before 'install 'make-lib-directory
           (lambda* (#:key outputs #:allow-other-keys)
             (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
             #t)))))
    (synopsis "Black and white DjVu encoder")
    (description
     "@code{minidjvu} is a multipage DjVu encoder and single page
encoder/decoder.  It doesn't support colors or grayscales, just black
and white.")
    (home-page "https://sourceforge.net/projects/minidjvu/")
    (license license:gpl2)))

M gnu/packages/docker.scm => gnu/packages/docker.scm +3 -3
@@ 70,11 70,11 @@
    (inputs
     `(("python-requests" ,python-requests-2.20)
       ("python-six" ,python-six)
       ("python-urllib3" ,python-urllib3-1.24)
       ("python-websocket-client" ,python-websocket-client)))
       ("python-urllib3" ,python-urllib3-1.24)))
    (propagated-inputs
     `(("python-docker-pycreds" ,python-docker-pycreds)
       ("python-paramiko" ,python-paramiko))) ; adds SSH support
       ("python-paramiko" ,python-paramiko)    ;adds SSH support
       ("python-websocket-client" ,python-websocket-client)))
    (home-page "https://github.com/docker/docker-py/")
    (synopsis "Python client for Docker")
    (description "Docker-Py is a Python client for the Docker container

M gnu/packages/documentation.scm => gnu/packages/documentation.scm +1 -1
@@ 63,7 63,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/latex2html/latex2html.git")
         (url "https://github.com/latex2html/latex2html")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/emacs-xyz.scm => gnu/packages/emacs-xyz.scm +236 -118
@@ 2238,7 2238,7 @@ Lock key.")
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/contrapunctus-1/chronometrist.git")
             (url "https://github.com/contrapunctus-1/chronometrist")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 3048,6 3048,32 @@ graphical tree presentation of all previous states of buffer that
allows easily move between them.")
    (license license:gpl3+)))

(define-public emacs-undo-fu
  ;; There are no tagged releases upstream on gitlab, instead we are using
  ;; the most recent commit.
  (let ((commit "c0806c1903c5a0e4c69b6615cdc3366470a9b8ca")
        (revision "0"))
    (package
      (name "emacs-undo-fu")
      (version (git-version "0.4" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://gitlab.com/ideasman42/emacs-undo-fu")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "1n594aakmcgyl7qbda86v4wsx8clm62ypiv3h559xz3x72h7mr3j"))))
      (build-system emacs-build-system)
      (home-page "https://gitlab.com/ideasman42/emacs-undo-fu")
      (synopsis "Simple, stable linear undo with redo for Emacs")
      (description
       "This is a light weight wrapper for Emacs built-in undo system,
adding convenient undo/redo without losing access to the full undo history,
allowing you to visit all previous states of the document if you need.")
      (license license:gpl3+))))

(define-public emacs-s
  (package
    (name "emacs-s")


@@ 3920,8 3946,8 @@ in Lisp modes.")
      (license license:gpl3+))))

(define-public emacs-literate-calc-mode
  (let ((commit "e855bd718fa7d0d70b8f43264e10664369dd3a37")
        (revision "0"))
  (let ((commit "a50e897a816cb5580ad6ec867eeaae212e0e4798")
        (revision "1"))
    (package
      (name "emacs-literate-calc-mode")
      (version (git-version "0.1" revision commit))


@@ 3933,7 3959,7 @@ in Lisp modes.")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0mk4cig8g8ibz97mvyan79fkypyanh7r0h7h20ibafq09nb0mw01"))))
          (base32 "0z6y5f1rj28lbr30m6g4a9l6ahs66whi8861g4cx9xzhs84nwv5g"))))
      (build-system emacs-build-system)
      (propagated-inputs
       `(("emacs-s" ,emacs-s)))


@@ 4564,7 4590,7 @@ compile}.")
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/purcell/flycheck-ledger.git")
             (url "https://github.com/purcell/flycheck-ledger")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256


@@ 7044,29 7070,33 @@ parallel.")
    (license license:gpl3+)))

(define-public emacs-request
  (package
    (name "emacs-request")
    (version "0.3.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/tkf/emacs-request")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl"))))
    (build-system emacs-build-system)
    (arguments
     `(#:tests? #f)) ; requires network access.
    (propagated-inputs
     `(("emacs-deferred" ,emacs-deferred)))
    (home-page "https://github.com/tkf/emacs-request")
    (synopsis "Package for speaking HTTP in Emacs Lisp")
    (description "This package provides a HTTP request library with multiple
  ;; We prefer a more recent commit that has support for auth-source,
  ;; which makes authentication more convenient for users and maintainers.
  (let ((commit "d02d1347ffdf138cffd380cbeac62ac8732036ef")
        (revision "0"))
    (package
      (name "emacs-request")
      (version (git-version "0.3.2" revision commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/tkf/emacs-request")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "1rkpakzish2d470ca15yq3k0m1j7a2lrkvvddcyvc2rx0sncsdjs"))))
      (build-system emacs-build-system)
      (arguments
       `(#:tests? #f))                  ; requires network access.
      (propagated-inputs
       `(("emacs-deferred" ,emacs-deferred)))
      (home-page "https://github.com/tkf/emacs-request")
      (synopsis "Package for speaking HTTP in Emacs Lisp")
      (description "This package provides a HTTP request library with multiple
backends.  It supports url.el which is shipped with Emacs and the curl command
line program.")
    (license license:gpl3+)))
      (license license:gpl3+))))

(define-public emacs-rudel
  (package


@@ 7122,6 7152,35 @@ the Hydra very seamless; it's like a minor mode that disables itself
automatically.")
    (license license:gpl3+)))

(define-public emacs-pretty-hydra
  (package
    (name "emacs-pretty-hydra")
    (version "0.2.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/jerrypnz/major-mode-hydra.el")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "08a15knkdq35pzjq82imff016fbfdib5q4glg2xmdy2b5fnk7jqa"))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-dash" ,emacs-dash)
       ("emacs-hydra" ,emacs-hydra)
       ("emacs-s" ,emacs-s)))
    (arguments
     `(#:exclude (cons "^major-mode-hydra\\.el" %default-exclude)))
    (home-page "https://github.com/jerrypnz/major-mode-hydra.el")
    (synopsis "Major mode keybindings managed by Hydra")
    (description
     "This package offers an hydra-based method of managing major
mode-specific key bindings.  It is intended for use as a library only; see
package @code{emacs-major-mode-hydra} for a user-friendly interface.")
    (license license:gpl3+)))

(define-public emacs-interleave
  (package
    (name "emacs-interleave")


@@ 7144,6 7203,20 @@ automatically.")
by side to an Org buffer with your notes relevant to the current page.")
    (license license:gpl3+)))

(define-public emacs-major-mode-hydra
  (package
    (inherit emacs-pretty-hydra)
    (name "emacs-major-mode-hydra")
    (propagated-inputs
     `(("emacs-dash" ,emacs-dash)
       ("emacs-pretty-hydra" ,emacs-pretty-hydra)))
    (arguments
     `(#:exclude (cons "^pretty-hydra\\.el" %default-exclude)))
    (synopsis "Create nice-looking hydras")
    (description
     "This package provides the macro @code{pretty-hydra-define} to define
hydras with one column per group of heads.")))

(define-public emacs-ivy
  (package
    (name "emacs-ivy")


@@ 7662,7 7735,7 @@ The purpose of this library is to wrap all the quirks and hassle of
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/fuxialexander/counsel-notmuch.git")
               (url "https://github.com/fuxialexander/counsel-notmuch")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256


@@ 12239,14 12312,14 @@ highlighting.")
(define-public emacs-jsonrpc
  (package
    (name "emacs-jsonrpc")
    (version "1.0.12")
    (version "1.0.14")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://elpa.gnu.org/packages/"
                           "jsonrpc-" version ".el"))
       (sha256
        (base32 "0cqp05awikbrn88ifld3vwnv6cxgmr83wlnsvxw8bqb96djz70ad"))))
        (base32 "069l0sqkambam4ikj9id36kdw1jdjna8v586d51m64hiz96rmvm6"))))
    (build-system emacs-build-system)
    (home-page "http://elpa.gnu.org/packages/jsonrpc.html")
    (synopsis "JSON-RPC library")


@@ 12544,7 12617,7 @@ when browsing files with Dired.")
(define-public emacs-org-edit-latex
  (package
    (name "emacs-org-edit-latex")
    (version "0.8.0")
    (version "0.8.3")
    (source
     (origin
       (method git-fetch)


@@ 12553,18 12626,16 @@ when browsing files with Dired.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0zcllyhx9n9vcr5w87h0hfz25v52lvh5fi717cb7mf3jh89zh842"))))
        (base32 "1w0lyz71dq8x28ira4hig1b70bqn1dr53w3k5dgch9szcf6xa86y"))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-auctex" ,emacs-auctex)
       ;; The version of org in Emacs 25.2 is not sufficient, because the
       ;; `org-latex-make-preamble' function is required.
       ("emacs-org" ,emacs-org)))
    (home-page "https://github.com/et2010/org-edit-latex")
    (synopsis "Edit a latex fragment just like editing a src block")
    (description "@code{emacs-org-edit-latex} is an extension for org-mode.
It lets you edit a latex fragment in a dedicated buffer just like editing a
src block.")
    (synopsis "Edit a LaTeX fragment just like editing a source block")
    (description
     "Org Edit LaTeX is an extension for Org mode.  It lets you edit a LaTeX
fragment in a dedicated buffer just like editing a source block.")
    (license license:gpl3+)))

(define-public emacs-emamux


@@ 12635,31 12706,29 @@ functions written in continuation-passing style.")
    (license license:gpl3+)))

(define-public emacs-attrap
  (let ((commit "18cd1f7832870a36c404e872fa83a271fe8e688d")
        (revision "2"))
    (package
      (name "emacs-attrap")
      (version (git-version "1.0" revision commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/jyp/attrap")
                      (commit commit)))
                (sha256
                 (base32
                  "078391949h0fgmshin8f79a1a595m06ig577rkgjqgngcp0d61l9"))
                (file-name (git-file-name name version))))
      (build-system emacs-build-system)
      (propagated-inputs
       `(("emacs-dash" ,emacs-dash)
         ("emacs-f" ,emacs-f)
         ("emacs-flycheck" ,emacs-flycheck)
         ("emacs-s" ,emacs-s)))
      (home-page "https://github.com/jyp/attrap")
      (synopsis "Fix coding error at point")
      (description "This package provides a command to fix the Flycheck error
  (package
    (name "emacs-attrap")
    (version "1.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/jyp/attrap")
             (commit version)))
       (sha256
        (base32 "0wqc7bqx9rvk8r7fd3x84h8p01v97s6w2jf29nnjb59xakwp22i7"))
       (file-name (git-file-name name version))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-dash" ,emacs-dash)
       ("emacs-f" ,emacs-f)
       ("emacs-flycheck" ,emacs-flycheck)
       ("emacs-s" ,emacs-s)))
    (home-page "https://github.com/jyp/attrap")
    (synopsis "Fix coding error at point")
    (description "This package provides a command to fix the Flycheck error
at point.")
      (license license:gpl3+))))
    (license license:gpl3+)))

(define-public emacs-git-messenger
  (package


@@ 13268,16 13337,16 @@ contexts.
(define-public emacs-polymode
  (package
    (name "emacs-polymode")
    (version "0.2")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/polymode/polymode")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "04v0gnzfsjb50bgly6kvpryx8cyzwjaq2llw4qv9ijw1l6ixmq3b"))))
    (version "0.2.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/polymode/polymode")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn"))))
    (build-system emacs-build-system)
    (home-page "https://github.com/polymode/polymode")
    (synopsis "Framework for multiple Emacs modes based on indirect buffers")


@@ 13290,33 13359,30 @@ literate programming tools for exporting, weaving and tangling.")
    (license license:gpl3+)))

(define-public emacs-polymode-ansible
  (let ((commit "b26094d029e25dc797b94254f797e7807a57e4c8"))
    (package
      (name "emacs-polymode-ansible")
      ;; No upstream version release yet.
      (version (git-version "0.1" "1" commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://gitlab.com/mavit/poly-ansible")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32
           "055shddqibib3hx2ykwdz910nrqws40cd407mq946l2bf6v87gj6"))))
      (build-system emacs-build-system)
      (propagated-inputs
       `(("emacs-ansible-doc" ,emacs-ansible-doc)
         ("emacs-jinja2-mode" ,emacs-jinja2-mode)
         ("emacs-polymode" ,emacs-polymode)
         ("emacs-yaml-mode" ,emacs-yaml-mode)))
      (properties '((upstream-name . "poly-ansible")))
      (home-page "https://gitlab.com/mavit/poly-ansible/")
      (synopsis "Polymode for Ansible - Jinja2 in YAML")
      (description
       "Edit YAML files for Ansible containing embedded Jinja2 templating.")
      (license license:gpl3+))))
  (package
    (name "emacs-polymode-ansible")
    (version "0.3.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://gitlab.com/mavit/poly-ansible")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0f0yq6gmkp194nxk90ipprglf1xkmxrgz1rkgrhfslvxq4q2l81h"))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-ansible-doc" ,emacs-ansible-doc)
       ("emacs-jinja2-mode" ,emacs-jinja2-mode)
       ("emacs-polymode" ,emacs-polymode)
       ("emacs-yaml-mode" ,emacs-yaml-mode)))
    (properties '((upstream-name . "poly-ansible")))
    (home-page "https://gitlab.com/mavit/poly-ansible/")
    (synopsis "Polymode for Ansible - Jinja2 in YAML")
    (description
     "Edit YAML files for Ansible containing embedded Jinja2 templating.")
    (license license:gpl3+)))

(define-public emacs-powershell
  ;; Tagged branch 0.1 is outdated (2015).


@@ 13345,7 13411,7 @@ Microsoft PowerShell files.")
(define-public emacs-polymode-org
  (package
    (name "emacs-polymode-org")
    (version "0.2")
    (version "0.2.2")
    (source
     (origin
       (method git-fetch)


@@ 13354,8 13420,7 @@ Microsoft PowerShell files.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "04x6apjad4kg30456z1j4ipp64yjgkcaim6hqr6bb0rmrianqhck"))))
        (base32 "1srnwcsn2bh8gqzxixkhffk7gbnk66kd4dgvxbnps5nxqc6v0qhc"))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-polymode" ,emacs-polymode)))


@@ 13363,10 13428,9 @@ Microsoft PowerShell files.")
    (home-page "https://github.com/polymode/poly-org")
    (synopsis "Polymode definitions for Org mode buffers")
    (description
     "Provides definitions for @code{emacs-polymode} to support
@code{emacs-org} buffers.  Edit source blocks in an Org mode buffer using the
native modes of the blocks' languages while remaining inside the primary Org
buffer.")
     "This package provides definitions for Polymode to support Org buffers.
It edits source blocks in an Org buffer using the native modes of the blocks'
languages while remaining inside the primary Org buffer.")
    (license license:gpl3+)))

(define-public eless


@@ 17339,7 17403,7 @@ Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
          (base32
           "1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"))))
      (build-system emacs-build-system)
      (home-page "https://github.com/bgamari/dts-mode.git")
      (home-page "https://github.com/bgamari/dts-mode")
      (synopsis "Emacs minor mode for editing device tree files")
      (description
       "This package provides an Emacs minor mode for highlighting


@@ 19291,7 19355,7 @@ scratch, and you think the Spacemacs theme looks good.
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/TheBB/spaceline.git")
               (url "https://github.com/TheBB/spaceline")
               (commit commit)))
         (sha256
          (base32 "11lwckqcgzsahrkkm5wk1ph4kc7d4yz05r7251g8c9f0q6vdj9dp"))


@@ 19370,7 19434,7 @@ correctly.")
(define-public emacs-helm-sly
  (package
    (name "emacs-helm-sly")
    (version "0.5.0")
    (version "0.5.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 19379,7 19443,7 @@ correctly.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1690rxwwg69jbcjhi51nyjlx3gziaiaa8ssyal71gmc6schq2592"))))
                "13s2dj09mcdwlibjlahyyq2dxjkjlpxs88dbdyvcd64249jmahsx"))))
    (build-system emacs-build-system)
    (propagated-inputs
     `(("emacs-helm" ,emacs-helm)


@@ 19885,7 19949,7 @@ programs can use this table component for the application UI.")
    (package
      (name "emacs-leetcode")
      (version (git-version "0" "1" commit))
      (home-page "https://github.com/ginqi7/leetcode-emacs.git")
      (home-page "https://github.com/ginqi7/leetcode-emacs")
      (source (origin
                (method git-fetch)
                (uri (git-reference


@@ 20957,10 21021,10 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
      (license license:gpl3+))))

(define-public emacs-forge
  (let ((commit "09bf8adc9c9afb492632e612f51f39e1cc15fca0"))
  (let ((commit "05ef02913004826165c383bd6d2ff6574542b76c"))
    (package
      (name "emacs-forge")
      (version (git-version "0.1.0" "4" commit))
      (version (git-version "0.1.0" "5" commit))
      (source
       (origin
         (method git-fetch)


@@ 20970,7 21034,7 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
         (file-name (git-file-name name version))
         (sha256
          (base32
           "148h1rvmfmxyrfy2q5l0vzblr7lpsyw1si30hfwhzsj8fvj21qcr"))))
           "1vv7xlawj2zmwqk69qlsqflhh0lbyqm5xf4x8l4v2069g0k8mmx1"))))
      (build-system emacs-build-system)
      (native-inputs
       `(("texinfo" ,texinfo)))


@@ 22675,14 22739,14 @@ federated microblogging social network.")
(define-public emacs-ebdb
  (package
    (name "emacs-ebdb")
    (version "0.6.20")
    (version "0.6.21")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://elpa.gnu.org/packages/"
                           "ebdb-" version ".tar"))
       (sha256
        (base32 "1rhmnz2g4nmk893gzxm1hfwqf5nan20yss5mxilfpza2jh4368h3"))))
        (base32 "0pp190wr6z98kggmw9ls486f9vxfimdjdbqsp263qiyi21ws98if"))))
    (build-system emacs-build-system)
    (home-page "https://github.com/girzel/ebdb")
    (synopsis "EIEIO port of BBDB, Emacs's contact-management package")


@@ 24915,7 24979,7 @@ personal wiki.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/conao3/org-generate.el.git")
                    (url "https://github.com/conao3/org-generate.el")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256


@@ 25208,7 25272,7 @@ picked up when copy-pasting text from buffer to buffer.")
(define-public emacs-org-webring
  (package
    (name "emacs-org-webring")
    (version "1.9.8-rc4")
    (version "2.0.0")
    (source
     (origin
       (method git-fetch)


@@ 25218,7 25282,7 @@ picked up when copy-pasting text from buffer to buffer.")
       (file-name (git-file-name name version))
       (sha256
        (base32
         "0z2q29i9ng2vkzb6qbwb0dzvz8yv44p0kg07lx59pcdbv7mznjmc"))))
         "1si0jah7n2gvlvghjy5dpannqpkxni5rczfp1x2a4z6ydalr3bn5"))))
    (build-system emacs-build-system)
    (arguments
     `(#:phases


@@ 25473,3 25537,57 @@ Emacs.")
uncluttered design pattern to achieve optimal focus and readability for code
syntax highlighting and UI components.")
    (license license:expat)))

(define-public emacs-janet-mode
  (let ((commit "2f5bcabcb6953e1ed1926ba6a2328c453e8b4ac7"))
    (package
      (name "emacs-janet-mode")
      (version (git-version "0.1.0" "1" commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/ALSchwalm/janet-mode")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0qj0gpycv2f3z1dgz1a27bjn983hrr3ppvrp7csl34lagnmp89rz"))))
      (build-system emacs-build-system)
      (home-page "https://github.com/ALSchwalm/janet-mode")
      (synopsis "Emacs major mode for the Janet programming language")
      (description
       "This package provides an Emacs major mode for editing Janet files.")
      (license license:gpl3))))

(define-public emacs-inf-janet
  (let ((commit "df46651d3aad32593b2195c80ca91fb64d571fb7"))
    (package
      (name "emacs-inf-janet")
      (version (git-version "0.1.0" "1" commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/velkyel/inf-janet")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0g0y7q62667j0p32md1h6zb2cap9fga9qgdg7138xwjqnk0328v7"))))
      (build-system emacs-build-system)
      (propagated-inputs
       `(("janet-mode" ,emacs-janet-mode)))
      (arguments
       `(#:phases
         (modify-phases %standard-phases
           (add-after 'unpack 'fix-program-name
             (lambda _
               (make-file-writable "inf-janet.el")
               (emacs-substitute-variables "inf-janet.el"
                 ("inf-janet-program" "janet"))
               #t)))))
      (home-page "https://github.com/velkyel/inf-janet")
      (synopsis "Run an external Janet process in an Emacs buffer")
      (description
       "This Emacs package provides a Janet REPL to evaluate @code{janet-mode}
s-expression.")
      (license license:expat))))

M gnu/packages/embedded.scm => gnu/packages/embedded.scm +2 -2
@@ 1379,7 1379,7 @@ debugging them, and more.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://github.com/john30/ebusd.git")
                     (url "https://github.com/john30/ebusd")
                     (commit (string-append "v" version))))
              (file-name (string-append name "-" version "-checkout"))
              (sha256


@@ 1407,7 1407,7 @@ debugging them, and more.")
        ,(origin
              (method git-fetch)
              (uri (git-reference
                     (url "https://github.com/john30/ebusd-configuration.git")
                     (url "https://github.com/john30/ebusd-configuration")
                     (commit "666c0f6b9c4d7545eff7f43ab28a1c7baeab7913")))
              (file-name "config-checkout")
              (sha256

M gnu/packages/enchant.scm => gnu/packages/enchant.scm +1 -1
@@ 49,7 49,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/nuspell/nuspell.git")
         (url "https://github.com/nuspell/nuspell")
         (commit
          (string-append "v" version))))
       (file-name

M gnu/packages/file-systems.scm => gnu/packages/file-systems.scm +74 -0
@@ 68,6 68,7 @@
  #:use-module (gnu packages sqlite)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages valgrind)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages xml))

(define-public autofs


@@ 182,6 183,79 @@ another location, similar to @command{mount --bind}.  It can be used for:
@end itemize ")
    (license license:gpl2+)))

(define-public davfs2
  (package
    (name "davfs2")
    (version "1.6.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://download.savannah.nongnu.org/releases/"
                           "davfs2/davfs2-" version ".tar.gz"))
       (sha256
        (base32 "0l1vnv5lfigciwg17p10zxwhzj4qw2d9kw30prr7g4dxhmb6fsrf"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list "--sysconfdir=/etc"        ; so man pages & binaries contain /etc
             (string-append "--docdir=" (assoc-ref %outputs "out")
                            "/share/doc/" ,name "-" ,version)
             (string-append "ssbindir=" (assoc-ref %outputs "out") "/sbin")
             ;; The default ‘davfs2’ user and group don't exist on most systems.
             "dav_user=nobody"
             "dav_group=nogroup")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'omit-redundancy
           ;; Don't install redundant copies of /etc examples into /share.
           (lambda _
             (substitute* "etc/Makefile.in"
               (("(dist_pkgdata_DATA =.*) davfs2.conf secrets(.*)"
                 _ prefix suffix)
                (string-append prefix suffix)))
             #t))
         (add-after 'unpack 'patch-file-names
           (lambda _
             ;; Don't auto-load the FUSE kernel module.  That's up to root.
             ;; XXX If/when we restore the previous behaviour, make sure not
             ;; to introduce a security hole when mount.davfs is setuid.
             (substitute* "src/kernel_interface.c"
               (("/sbin/modprobe") "/modprobe/disabled"))
             #t))
         (replace 'install
           (lambda* (#:key make-flags outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out")))
               (apply invoke "make" "install"
                      (string-append "pkgsysconfdir=" out "/etc")
                      make-flags)))))))
    (inputs
     `(("neon" ,neon)

       ;; Neon requires but doesn't propagate zlib, nor would we want that.
       ;; XZ as well, but that's already present in the build environment.
       ("zlib" ,zlib)))
    (home-page "https://savannah.nongnu.org/projects/davfs2")
    (synopsis "Mount remote WebDAV resources in the local file system")
    (description
     "The @acronym{WebDAV, Web Distributed Authoring and Versioning} extension
to the HTTP protocol defines a standard way to author resources on a remote Web
server.  Davfs2 exposes such resources as a typical filesystem which can be used
by standard applications with no built-in support for WebDAV, such as the GNU
coreutils (@command{cp}, @command{mv}, etc.) or a graphical word processor.

Davfs2 works with most WebDAV servers with no or little configuration.  It
supports TLS (HTTPS), HTTP proxies, HTTP basic and digest authentication, and
client certificates.  It performs extensive caching to avoid unnecessary network
traffic, stay responsive even over slow or unreliable connections, and prevent
data loss.  It aims to make use by unprivileged users as easy and secure as
possible.

However, davfs2 is not a full-featured WebDAV client.  The file system interface
and the WebDAV protocol are quite different.  Translating between the two is not
always possible.")
    (license (list license:bsd-2        ; src/fuse_kernel.h
                   license:gpl3+))))    ; everything else

(define-public fsarchiver
  (package
    (name "fsarchiver")

M gnu/packages/fontutils.scm => gnu/packages/fontutils.scm +1 -1
@@ 283,7 283,7 @@ work with most software requiring Type 1 fonts.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/google/woff2.git")
         (url "https://github.com/google/woff2")
         (commit (string-append "v" version))))
       (file-name
        (git-file-name name version))

M gnu/packages/game-development.scm => gnu/packages/game-development.scm +2 -2
@@ 444,7 444,7 @@ support.")
(define-public tiled
  (package
    (name "tiled")
    (version "1.4.2")
    (version "1.4.3")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 453,7 453,7 @@ support.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0nhmv5rnmlnnmkiz95l3iy62f3754d98dm1wyh1m47xb3nbnl05b"))))
                "14bx4gywfzr2f07ldqk3la82g5ag1agj21f7ccrxip12ydmpx0xb"))))
    (build-system gnu-build-system)
    (inputs
     `(("qtbase" ,qtbase)

M gnu/packages/games.scm => gnu/packages/games.scm +2 -2
@@ 4436,7 4436,7 @@ is attributed to Albert Einstein.")
(define-public powwow
  (package
    (name "powwow")
    (version "1.2.19")
    (version "1.2.22")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 4444,7 4444,7 @@ is attributed to Albert Einstein.")
                    version ".tar.gz"))
              (sha256
               (base32
                "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
                "12i11b8zxg8vdb9d6ims8qy2lmwwr42rcqbwq3vsa1x94s51bcbp"))))
    (inputs
     `(("ncurses" ,ncurses)))
    (build-system gnu-build-system)

M gnu/packages/geo.scm => gnu/packages/geo.scm +1 -1
@@ 112,7 112,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/jiuka/memphis.git")
         (url "https://github.com/jiuka/memphis")
         (commit version)))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/gimp.scm => gnu/packages/gimp.scm +1 -1
@@ 139,7 139,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/hodefoting/mrg.git")
         (url "https://github.com/hodefoting/mrg")
         (commit version)))
       (file-name
        (git-file-name name version))

M gnu/packages/gnome-xyz.scm => gnu/packages/gnome-xyz.scm +1 -1
@@ 131,7 131,7 @@ the Obsidian icon theme.")
              (method git-fetch)
              (uri (git-reference
                    (url
                     "https://github.com/ubuntu/gnome-shell-extension-appindicator.git")
                     "https://github.com/ubuntu/gnome-shell-extension-appindicator")
                    (commit (string-append "v" version))))
              (sha256
               (base32

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +4 -4
@@ 10406,9 10406,9 @@ photo-booth-like software, such as Cheese.")
    (native-inputs
     `(("docbook-xsl" ,docbook-xsl)
       ("docbook-xml" ,docbook-xml-4.3)
       ("gettext" ,gettext-minimal)
       ("glib:bin" ,glib "bin")
       ("gtk-doc" ,gtk-doc)
       ("intltool" ,intltool)
       ("itstool" ,itstool)
       ("libxml2" ,libxml2)
       ("libxslt" ,libxslt)


@@ 11676,7 11676,7 @@ provided there is a DBus service present:
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/gkarsay/parlatype.git")
             (url "https://github.com/gkarsay/parlatype")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 11915,7 11915,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(define-public komikku
  (package
    (name "komikku")
    (version "0.22.1")
    (version "0.23.0")
    (source
     (origin
       (method git-fetch)


@@ 11925,7 11925,7 @@ integrated profiler via Sysprof, debugging support, and more.")
       (file-name (git-file-name name version))
       (sha256
        (base32
         "0ds4j542zprbyh36qyii1c9mb7kj14cvrfk5miqjvp8y4b5i6mdi"))))
         "1xh3qmf2pk80qxj528lajjcwg7mps72s1zz8cj388av58p8l3hyw"))))
    (build-system meson-build-system)
    (arguments
     `(#:glib-or-gtk? #t

M gnu/packages/gnuzilla.scm => gnu/packages/gnuzilla.scm +4 -4
@@ 1161,11 1161,11 @@ standards of the IceCat project.")
       (cpe-version . ,(first (string-split version #\-)))))))

;; Update this together with icecat!
(define %icedove-build-id "20201111000000") ;must be of the form YYYYMMDDhhmmss
(define %icedove-build-id "20201117000000") ;must be of the form YYYYMMDDhhmmss
(define-public icedove
  (package
    (name "icedove")
    (version "78.4.3")
    (version "78.5.0")
    (source icecat-source)
    (properties
     `((cpe-name . "thunderbird_esr")))


@@ 1445,7 1445,7 @@ standards of the IceCat project.")
        ;; in the Thunderbird release tarball.  We don't use the release
        ;; tarball because it duplicates the Icecat sources and only adds the
        ;; "comm" directory, which is provided by this repository.
        ,(let ((changeset "6ee1d79f9e77c90f0f165b9315b5b437a220b665"))
        ,(let ((changeset "92abc26b9c80383e974fb0234f22e06fea793be2"))
           (origin
             (method hg-fetch)
             (uri (hg-reference


@@ 1454,7 1454,7 @@ standards of the IceCat project.")
             (file-name (string-append "thunderbird-" version "-checkout"))
             (sha256
              (base32
               "0m6isazpirmviv14kjav8jn3w3gm3mls0qwyf1n87hj00bj6z6jc")))))
               "0468k3qrqs9w1vva2fdxvwqdsypqpsdy5iixgx58dqivchg4qlf9")))))
       ("autoconf" ,autoconf-2.13)
       ("cargo" ,rust-1.41 "cargo")
       ("clang" ,clang)

M gnu/packages/golang.scm => gnu/packages/golang.scm +2 -2
@@ 1145,7 1145,7 @@ optimized for performance yet simple to use.")
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/tv42/httpunix.git")
               (url "https://github.com/tv42/httpunix")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256


@@ 1714,7 1714,7 @@ finding resources located relative to the executable file.")
         (method git-fetch)
         (uri (git-reference
               (url
                "https://github.com/ayufan/golang-kardianos-service.git")
                "https://github.com/ayufan/golang-kardianos-service")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256

M gnu/packages/graphics.scm => gnu/packages/graphics.scm +5 -5
@@ 121,7 121,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/NVIDIA/eglexternalplatform.git")
         (url "https://github.com/NVIDIA/eglexternalplatform")
         (commit version)))
       (file-name
        (git-file-name name version))


@@ 172,7 172,7 @@ application-facing EGL functions.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/NVIDIA/egl-wayland.git")
         (url "https://github.com/NVIDIA/egl-wayland")
         (commit version)))
       (file-name
        (git-file-name name version))


@@ 202,7 202,7 @@ EGLStream families of extensions.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/hodefoting/mmm.git")
         (url "https://github.com/hodefoting/mmm")
         (commit version)))
       (file-name
        (git-file-name name version))


@@ 231,7 231,7 @@ framebuffer graphics, audio output and input event.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/deniskropp/DirectFB.git")
         (url "https://github.com/deniskropp/DirectFB")
         (commit "DIRECTFB_1_7_7")))
       (file-name (git-file-name name version))
       (sha256


@@ 301,7 301,7 @@ minimum of resource usage and overhead.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/deniskropp/flux.git")
         (url "https://github.com/deniskropp/flux")
         (commit "e45758a")))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/gstreamer.scm => gnu/packages/gstreamer.scm +4 -4
@@ 95,7 95,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/occipital/OpenNI2.git")
         (url "https://github.com/occipital/OpenNI2")
         (commit (string-append "v" version "-debian"))))
       (file-name (git-file-name name version))
       (sha256


@@ 167,7 167,7 @@ module for the DMA capture of the video flow.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/CCExtractor/ccextractor.git")
         (url "https://github.com/CCExtractor/ccextractor")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 220,7 220,7 @@ and very fast.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/Libvisual/libvisual.git")
         (url "https://github.com/Libvisual/libvisual")
         (commit (string-append name "-" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 268,7 268,7 @@ applications that want audio visualisation and audio visualisation plugins.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/Libvisual/libvisual.git")
         (url "https://github.com/Libvisual/libvisual")
         (commit (string-append name "-" version))))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/guile-xyz.scm => gnu/packages/guile-xyz.scm +5 -5
@@ 966,8 966,8 @@ convenient nested tree operations.")
    (license license:gpl3+)))

(define-public guile-simple-zmq
  (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
        (revision "3"))
  (let ((commit "5fc3b7190d31c258ce969c2a5d2ad38c66a09d09")
        (revision "4"))
    (package
      (name "guile-simple-zmq")
      (version (git-version "0.0.0" revision commit))


@@ 979,7 979,7 @@ convenient nested tree operations.")
               (commit commit)))
         (sha256
          (base32
           "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
           "0inhvl5jssvbw3nd129wdahfwyvy1iciq403wzf0algbvl1fqs7z"))
         (file-name (git-file-name name version))))
      (build-system guile-build-system)
      (arguments


@@ 2973,7 2973,7 @@ more expressive and flexible than the traditional @code{format} procedure.")
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/scheme-requests-for-implementation/srfi-180.git")
               (url "https://github.com/scheme-requests-for-implementation/srfi-180")
               (commit commit)))
         (sha256
          (base32


@@ 3734,7 3734,7 @@ models and also supports a rich set of boolean query operators.")
    (source (origin (method git-fetch)
                    (uri (git-reference
                          (url
                           "https://github.com/o-nly/torrent.git")
                           "https://github.com/o-nly/torrent")
                          (commit version)))
                    (file-name (git-file-name name version))
                    (sha256

M gnu/packages/haskell-web.scm => gnu/packages/haskell-web.scm +43 -0
@@ 10,6 10,7 @@
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@gmail.com>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 417,6 418,48 @@ contents of the HTTP connection.  It also provides higher-level functions
which allow you to avoid direct usage of conduits.")
    (license license:bsd-3)))

(define-public ghc-http-reverse-proxy
  (package
    (name "ghc-http-reverse-proxy")
    (version "0.6.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append
             "https://hackage.haskell.org/package/http-reverse-proxy/"
             "http-reverse-proxy-" version ".tar.gz"))
       (sha256
        (base32
         "1a6i5njf85b2lhg8m83njagcf09wih5q2irnyb2890s724qr277v"))))
    (build-system haskell-build-system)
    (inputs
     `(("ghc-case-insensitive" ,ghc-case-insensitive)
       ("ghc-http-types" ,ghc-http-types)
       ("ghc-word8" ,ghc-word8)
       ("ghc-blaze-builder" ,ghc-blaze-builder)
       ("ghc-http-client" ,ghc-http-client)
       ("ghc-wai" ,ghc-wai)
       ("ghc-network" ,ghc-network)
       ("ghc-conduit" ,ghc-conduit)
       ("ghc-conduit-extra" ,ghc-conduit-extra)
       ("ghc-wai-logger" ,ghc-wai-logger)
       ("ghc-resourcet" ,ghc-resourcet)
       ("ghc-unliftio" ,ghc-unliftio)
       ("ghc-streaming-commons" ,ghc-streaming-commons)))
    (native-inputs
     `(("ghc-hspec" ,ghc-hspec)
       ("ghc-warp" ,ghc-warp)
       ("ghc-http-conduit" ,ghc-http-conduit)))
    (home-page
     "https://github.com/fpco/http-reverse-proxy")
    (synopsis
     "Reverse proxy HTTP requests, either over raw sockets or with WAI")
    (description
     "Provides a simple means of reverse-proxying HTTP requests.  The raw
approach uses the same technique as leveraged by keter, whereas the WAI
approach performs full request/response parsing via WAI and http-conduit.")
    (license license:bsd-3)))

(define-public ghc-wai
  (package
    (name "ghc-wai")

M gnu/packages/heads.scm => gnu/packages/heads.scm +34 -0
@@ 19,6 19,7 @@
(define-module (gnu packages heads)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system trivial)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)


@@ 161,3 162,36 @@ done
    (synopsis "Musl-cross gcc 5 toolchain")
    (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
    (license license:isc))))

;; This package provides a "dev.cpio" file usable as a base for booting Heads.
(define-public heads-dev-cpio
  (package
    (name "heads-dev-cpio")
    (version "0.1")
    (source #f)
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils)
                  (guix cpio))
       #:builder (begin
                   (use-modules (guix build utils)
                                (guix cpio)
                                (srfi srfi-26))
                   (mkdir-p "dev") ; input directory.
                   (let* ((out (assoc-ref %outputs "out"))
                          (libexec (string-append out "/libexec")))
                     (mkdir-p libexec)
                     (call-with-output-file (string-append libexec "/dev.cpio")
                      (lambda (port)
                        (write-cpio-archive '("dev" "dev/console") port
                         #:file->header
                         (lambda (name)
                           (if (string=? "dev/console" name)
                               (special-file->cpio-header* name 'char-special 5 1 #o600)
                               (file->cpio-header* name))))))
                     #t))))
    (synopsis "@file{dev.cpio} for Heads")
    (description "This package provides a @file{dev.cpio} file usable as a
base for heads' initrd.")
    (home-page "http://osresearch.net/")
    (license license:bsd-2)))

M gnu/packages/image.scm => gnu/packages/image.scm +1 -1
@@ 791,7 791,7 @@ images of initially unknown height.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/uclouvain/openjpeg-data.git")
         (url "https://github.com/uclouvain/openjpeg-data")
         (commit "c5c4a8c")))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/irc.scm => gnu/packages/irc.scm +10 -8
@@ 62,6 62,7 @@
  #:use-module (gnu packages openldap)
  #:use-module (gnu packages kde)
  #:use-module (gnu packages kde-frameworks)
  #:use-module (gnu packages password-utils)
  #:use-module (gnu packages pcre)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)


@@ 499,7 500,7 @@ interface for those who are accustomed to the ircII way of doing things.")
(define-public inspircd
  (package
    (name "inspircd")
    (version "3.7.0")
    (version "3.8.1")
    (source
     (origin
       (method git-fetch)


@@ 508,13 509,13 @@ interface for those who are accustomed to the ircII way of doing things.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "1npzp23c3ac7m1grkm39i1asj04rs4i0jwf5w0c0j0hmnwslnz7a"))))
        (base32 "1i30649dw84iscxa5as81g96f393mn1i883aq4za5ypdinr5x65g"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags (map (lambda (module)
                                (string-append "--enable-extras=" module))
                              '("m_geo_maxmind.cpp"
                              '("m_argon2.cpp"
                                "m_geo_maxmind.cpp"
                                "m_ldap.cpp"
                                "m_mysql.cpp"
                                "m_pgsql.cpp"


@@ 550,16 551,17 @@ interface for those who are accustomed to the ircII way of doing things.")
                       (string-append "--config-dir=" out-etc name)))
             #t)))))
    (native-inputs
     `(("gnutls" ,gnutls)
       ("libgcrypt" ,libgcrypt)
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("argon2" ,argon2)
       ("gnutls" ,gnutls)
       ("libmaxminddb" ,libmaxminddb)
       ("mysql" ,mysql)
       ("mbedtls-apache" ,mbedtls-apache)
       ("mysql" ,mysql)
       ("openldap" ,openldap)
       ("openssl" ,openssl)
       ("pcre" ,pcre "bin")
       ("perl" ,perl)
       ("pkg-config" ,pkg-config)
       ("postgresql" ,postgresql)
       ("re2" ,re2)
       ("sqlite" ,sqlite)

M gnu/packages/java.scm => gnu/packages/java.scm +1 -1
@@ 2723,7 2723,7 @@ debugging, etc.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/javacc/javacc.git")
                    (url "https://github.com/javacc/javacc")
                    (commit "release_32")))
              (file-name (string-append "javacc-" version "-checkout"))
              (sha256

M gnu/packages/language.scm => gnu/packages/language.scm +2 -2
@@ 62,7 62,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/liblouis/liblouis.git")
         (url "https://github.com/liblouis/liblouis")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 115,7 115,7 @@ Marburg.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/liblouis/liblouisutdml.git")
         (url "https://github.com/liblouis/liblouisutdml")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/lego.scm => gnu/packages/lego.scm +42 -16
@@ 1,6 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 35,6 35,8 @@
    (name "nqc")
    (version "3.1.r6")
    (source (origin
              ;; XXX Using url-fetch/tarbomb results in failure:
              ;; Error: could not create compiler/rcx1_nqh.h
              (method url-fetch)
              (uri (string-append "http://bricxcc.sourceforge.net/nqc/release/"
                                  "nqc-" version ".tgz"))


@@ 44,24 46,48 @@
    (build-system gnu-build-system)
    (native-inputs
     `(("bison" ,bison)
       ("flex" ,flex)))
       ("flex" ,flex)
       ("add-usb-tcp-support.patch"
        ,(origin
           (method url-fetch)
           (uri (string-append "https://sourceforge.net/p/bricxcc/patches/"
                               "_discuss/thread/00b427dc/b84b/attachment/"
                               "nqc-01-Linux_usb_and_tcp.diff"))
           (sha256
            (base32 "0z5gx55ra1kamhhqxz08lvvwslfl36pbmwdd566rhmbgmyhlykbr"))))
       ("debian-writable-swap-inst-len.patch"
        ,(origin
           (method url-fetch)
           (uri (string-append "https://sources.debian.org/data/main/n/nqc/"
                               "3.1.r6-7/debian/patches/"
                               "writable-swap-inst-len.patch"))
           (sha256
            (base32 "1kr7j057aa5i0kxmlfpbfcsif5yq2lrmjw4sljn400ijaq4mys3v"))))))
    (arguments
     '(#:tests? #f                      ;no tests
       #:make-flags (list (string-append "PREFIX=" %output))
       #:phases (modify-phases %standard-phases
                  (delete 'configure)
                  (add-before 'build 'rm-generated
                    ;; Regenerating compiler/lexer.cpp avoids an 'undefined
                    ;; reference to `isatty(int)'' error.
                    (lambda _
                      (for-each delete-file
                                '("compiler/lexer.cpp"
                                  "compiler/parse.cpp"))
                      #t))
                  (add-after 'unpack 'deal-with-tarbomb
                    (lambda _
                      (chdir "..")      ;tarbomb
                      #t)))))
       #:phases
       (modify-phases %standard-phases
         (delete 'configure)
         (add-before 'build 'rm-generated
           ;; Regenerating compiler/lexer.cpp avoids an 'undefined
           ;; reference to `isatty(int)'' error.
           (lambda _
             (for-each delete-file
                       '("compiler/lexer.cpp"
                         "compiler/parse.cpp"))
             #t))
         (add-after 'unpack 'deal-with-tarbomb
           (lambda _
             (chdir "..")               ;tarbomb
             #t))
         (add-after 'deal-with-tarbomb 'patch
           (lambda* (#:key inputs #:allow-other-keys)
             (for-each (lambda (patch)
                         (invoke "patch" "-Np1" "-i"
                                 (assoc-ref inputs patch)))
                       (list "add-usb-tcp-support.patch"
                             "debian-writable-swap-inst-len.patch")))))))
    (home-page "http://bricxcc.sourceforge.net/nqc/")
    (synopsis "C-like language for Lego's MINDSTORMS")
    (description

M gnu/packages/libusb.scm => gnu/packages/libusb.scm +2 -2
@@ 564,7 564,7 @@ devices.")
(define-public hidapi
  (package
    (name "hidapi")
    (version "0.9.0")
    (version "0.10.0")
    (source
     (origin
       (method git-fetch)


@@ 573,7 573,7 @@ devices.")
             (commit (string-append "hidapi-" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1p4g8lgwj4rki6lbn5l6rvwj0xlbn1xfh4d255bg5pvgczmwmc4i"))))
        (base32 "1n3xn1zvxgyzb84cjpw3i5alw0gkbrps11r4ijxzyqxqym0khagr"))))
    (build-system gnu-build-system)
    (inputs
     `(("libusb" ,libusb)

M gnu/packages/linux.scm => gnu/packages/linux.scm +59 -54
@@ 352,15 352,15 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."

;; The current "stable" kernel. That is, the most recently released major
;; version.
(define-public linux-libre-5.9-version "5.9.8")
(define-public linux-libre-5.9-version "5.9.9")
(define deblob-scripts-5.9
  (linux-libre-deblob-scripts
   linux-libre-5.9-version
   (base32 "1l0iw2lp6alk0a8nvdafklyks83iiyw4b2r5xif84z47qfbydsis")
   (base32 "0wp0mx5d2qhv7brc595qj34phiaxz9z5gf26w5369nh9mll5cbw6")))
   (base32 "0yb04a4j2wq3mwvks3cj7kcm2pscmfs29lrz3falkxpbvjxbbgq2")))
(define-public linux-libre-5.9-pristine-source
  (let ((version linux-libre-5.9-version)
        (hash (base32 "19l67gzk97higd2cbggipcb0wi21pv0ag0mc4qh6cqk564xp6mkn")))
        (hash (base32 "1b8zysy0br131ydhc7ycxhh8d88r44xrmkf2q2lffy0jmy3d60m3")))
   (make-linux-libre-source version
                            (%upstream-linux-source version hash)
                            deblob-scripts-5.9)))


@@ 368,7 368,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The "longterm" kernels — the older releases with long-term upstream support.
;; Here are the support timelines:
;; <https://www.kernel.org/category/releases.html>
(define-public linux-libre-5.4-version "5.4.77")
(define-public linux-libre-5.4-version "5.4.78")
(define deblob-scripts-5.4
  (linux-libre-deblob-scripts
   linux-libre-5.4-version


@@ 376,12 376,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (base32 "167zcfkw62pm6nv1xdvvhxw0ca724sywcywnv3z00189f8f8p3vg")))
(define-public linux-libre-5.4-pristine-source
  (let ((version linux-libre-5.4-version)
        (hash (base32 "1xyvml0mps7bsa11bgpa4l0w8x6pasdz9yab2z4ds394f1lkxq53")))
        (hash (base32 "0z8skj0w9jfrz9pfxaqfzqh82l13bz5lhza2wjsxk02cyhhnm226")))
   (make-linux-libre-source version
                            (%upstream-linux-source version hash)
                            deblob-scripts-5.4)))

(define-public linux-libre-4.19-version "4.19.157")
(define-public linux-libre-4.19-version "4.19.158")
(define deblob-scripts-4.19
  (linux-libre-deblob-scripts
   linux-libre-4.19-version


@@ 389,12 389,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf")))
(define-public linux-libre-4.19-pristine-source
  (let ((version linux-libre-4.19-version)
        (hash (base32 "0mgpgv2ny49bb7kgaygy2ay6ckjgw7mg091viivi66jw4mjs7p3n")))
        (hash (base32 "0p5pim9izcscnk1a1kdlxbvyvxnnq9lqr1kwl86kfskr7yqy8n6n")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-4.19)))

(define-public linux-libre-4.14-version "4.14.206")
(define-public linux-libre-4.14-version "4.14.207")
(define deblob-scripts-4.14
  (linux-libre-deblob-scripts
   linux-libre-4.14-version


@@ 402,12 402,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky")))
(define-public linux-libre-4.14-pristine-source
  (let ((version linux-libre-4.14-version)
        (hash (base32 "1b46f0s15xnlam43cmw8w41rrvcwrhm6km0278lq6f86lpx3w8qw")))
        (hash (base32 "0a804hwh7cwbdd2gnr5n9i32b4s6gppd8iqihah4sn4q1nbm79vq")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-4.14)))

(define-public linux-libre-4.9-version "4.9.243")
(define-public linux-libre-4.9-version "4.9.244")
(define deblob-scripts-4.9
  (linux-libre-deblob-scripts
   linux-libre-4.9-version


@@ 415,12 415,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2")))
(define-public linux-libre-4.9-pristine-source
  (let ((version linux-libre-4.9-version)
        (hash (base32 "111rlzx6z4kf8zwxncib96d9wy6qmkbs0cq3dhnybipwlyf1iank")))
        (hash (base32 "02givxp0y04qma5nlqbpyxdcl7xdb41p3gw7kgj2rmwdanhzaylr")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-4.9)))

(define-public linux-libre-4.4-version "4.4.243")
(define-public linux-libre-4.4-version "4.4.244")
(define deblob-scripts-4.4
  (linux-libre-deblob-scripts
   linux-libre-4.4-version


@@ 428,7 428,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf")))
(define-public linux-libre-4.4-pristine-source
  (let ((version linux-libre-4.4-version)
        (hash (base32 "1daqbmj9ka9wdkkym625hqwqaxq5n11y7c4yc9ln3xkjpnv4dplm")))
        (hash (base32 "0brdj6z7flchig80ja0dhzcrpl743lh74s4r4r6prbgkksif9ahp")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-4.4)))


@@ 1043,39 1043,45 @@ It has been modified to remove all non-free binary blobs.")
;;;

(define-public acpi-call-linux-module
  (let ((commit "70b9c80bd700e6a4d10797eaac9fd34b7e8cbd4a")
        (revision "0"))
    (package
      (name "acpi-call-linux-module")
      (version (git-version "3.17" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/teleshoes/acpi_call")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "09c1vw6vcrkqxbwhpgfgpj4d1grzn4qq6ka8pwwzm7cvm405xj7x"))))
      (build-system linux-module-build-system)
      (arguments
       `(#:tests? #f                    ; no tests
         #:phases
         (modify-phases %standard-phases
           (add-after 'install 'install-documentation
             (lambda* (#:key outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
                      (doc (string-append out "/share/doc/" ,name "-" ,version)))
                 (for-each (lambda (file)
                             (let ((target (string-append doc "/" file)))
                               (mkdir-p (dirname target))
                               (copy-recursively file target)))
                           (list "README.md" "examples"))
                 #t))))))
      (home-page "https://github.com/teleshoes/acpi_call")
      (synopsis "Linux kernel module to perform ACPI method calls")
      (description
       "This simple Linux kernel module allows calls from user space to any
  (package
    (name "acpi-call-linux-module")
    (version "1.2.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/nix-community/acpi_call")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0mr4rjbv6fj4phf038addrgv32940bphghw2v9n1z4awvw7wzkbg"))))
    (build-system linux-module-build-system)
    (arguments
     `(#:tests? #f                      ; no tests
       #:phases
       (modify-phases %standard-phases
         (add-before 'install 'patch-shebangs-harder
           ;; The (only) shebangs in examples/ don't justify a reference.
           ;; However, do substitute a more portable one than the original.
           (lambda _
             (substitute* (find-files "examples" ".")
               (("^(#! *)/[^ ]*/" _ shebang)
                (string-append shebang "/usr/bin/env ")))
             #t))
         (add-after 'install 'install-documentation
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
               (for-each (lambda (file)
                           (let ((target (string-append doc "/" file)))
                             (mkdir-p (dirname target))
                             (copy-recursively file target)))
                         (list "README.md" "examples"))
               #t))))))
    (home-page "https://github.com/teleshoes/acpi_call")
    (synopsis "Linux kernel module to perform ACPI method calls")
    (description
     "This simple Linux kernel module allows calls from user space to any
@acronym{ACPI, Advanced Configuration and Power Interface} method provided by
your computer's firmware, by writing to @file{/proc/acpi/call}.  You can pass
any number of parameters of types @code{ACPI_INTEGER}, @code{ACPI_STRING},


@@ 1083,7 1089,7 @@ and @code{ACPI_BUFFER}.

It grants direct and undocumented access to your hardware that may cause damage
and should be used with caution, especially on untested models.")
      (license license:gpl3+))))        ; see README.md (no licence headers)
    (license license:gpl3+)))           ; see README.md (no licence headers)

(define-public rtl8812au-aircrack-ng-linux-module
  (let ((commit "df2b8dfd8cb7d9f6cfeb55abaeab8a5372011fc9")


@@ 1367,7 1373,7 @@ at login.  Local and dynamic reconfiguration are its key features.")
        ;; Tests not distributed in pypi release.
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/minrk/pamela.git")
               (url "https://github.com/minrk/pamela")
               (commit version)))
        (file-name (git-file-name name version))
        (sha256


@@ 5822,7 5828,7 @@ of flash storage.")
(define-public libseccomp
  (package
    (name "libseccomp")
    (version "2.5.0")
    (version "2.5.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/seccomp/libseccomp/"


@@ 5830,7 5836,7 @@ of flash storage.")
                                  "/libseccomp-" version ".tar.gz"))
              (sha256
               (base32
                "1wql62cg8f95cwpy057cl764nni9g4sdn5lqj68x22kjs8w71yhz"))))
                "0m8dlg1v7kflcxvajs4p76p275qwsm2abbf5mfapkakp7hw7wc7f"))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags '("--disable-static")


@@ 7523,7 7529,7 @@ and above.")
(define-public bpftrace
  (package
    (name "bpftrace")
    (version "0.10.0")
    (version "0.11.4")
    (source
     (origin
       (method git-fetch)


@@ 7532,8 7538,7 @@ and above.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "023ardywbw5w8815j2ny9rrp2xlpxndqaa7v2njjm8109p7ilsdn"))
        (base32 "0y4qgm2cpccrsm20rnh92hqplddqsc5q5zhw9nqn2igm3h9i0z7h"))
       (patches (search-patches "bpftrace-disable-bfd-disasm.patch"))))
    (build-system cmake-build-system)
    (native-inputs


@@ 7575,7 7580,7 @@ created by Alastair Robertson.")
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/eBUS/ttyebus.git")
               (url "https://github.com/eBUS/ttyebus")
               (commit "fe4332a2281cf79804ef4d8516aa848ca1c58d1f")))
         (file-name (git-file-name name version))
         (sha256

M gnu/packages/lisp-xyz.scm => gnu/packages/lisp-xyz.scm +3 -3
@@ 2549,10 2549,10 @@ is a library for creating graphical user interfaces.")
  (sbcl-package->ecl-package sbcl-cl-cffi-gtk))

(define-public sbcl-cl-webkit
  (let ((commit "04bb5703b68f4db9de71529b81896cc428ef54e1"))
  (let ((commit "aecd76a2bcc7bfee049c91d94cc75f893800bf37"))
    (package
      (name "sbcl-cl-webkit")
      (version (git-version "2.4" "8" commit))
      (version (git-version "2.4" "9" commit))
      (source
       (origin
         (method git-fetch)


@@ 2562,7 2562,7 @@ is a library for creating graphical user interfaces.")
         (file-name (git-file-name "cl-webkit" version))
         (sha256
          (base32
           "12dzqgkvgwi97r8dbflslj7nsx7p6iavx82fs48nj9wf7ln1c87s"))))
           "1j2wvn19kz0bcg17qr9pc4xp6fgjy8zngdnnp5rpfxd25sli62yc"))))
      (build-system asdf-build-system/sbcl)
      (inputs
       `(("cffi" ,sbcl-cffi)

M gnu/packages/lisp.scm => gnu/packages/lisp.scm +37 -0
@@ 1011,3 1011,40 @@ including a built-in database engine and a GUI system.")
     (package
       (inherit picolisp32)
       (name "picolisp")))))

(define-public janet
  (package
    (name "janet")
    (version "1.12.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/janet-lang/janet")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0if514zdmbjvvrsa9x5yfvg2b14sz53yaka12g3yhwkq8ls3qk0c"))))
    (build-system gnu-build-system)
    (arguments
     `(#:make-flags (list
                     (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                     (string-append "PREFIX=")
                     (string-append "CC=" (assoc-ref %build-inputs "gcc")
                                    "/bin/gcc"))
       #:phases
       (modify-phases %standard-phases
         (delete 'configure)
         (replace 'check
           (lambda _
             (invoke "make" "test"))))))
    (home-page "https://janet-lang.org/")
    (synopsis "Functional, imperative and embeddable programming language")
    (description
     "Janet is a functional and imperative programming language.  It can be
used for rapid prototyping, dynamic systems, and other domains where dynamic
languages shine.  You can also add Janet scripting to an application by
embedding a single C file and two headers.  It can be easily ported to new
platforms.  The entire language (core library, interpreter, compiler,
assembler, PEG) is less than 1MB.")
    (license license:expat)))

M gnu/packages/lxqt.scm => gnu/packages/lxqt.scm +1 -1
@@ 1330,7 1330,7 @@ like @command{tar} and @command{zip}.")
        (origin
          (method git-fetch)
          (uri (git-reference
            (url (string-append "https://github.com/lxqt/" name ".git"))
            (url (string-append "https://github.com/lxqt/" name))
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256 (base32 "0br4bxfrl8k7lq84aq4grznlk8xzzjgkmd19bf9mwjr0a87gg72v"))))

M gnu/packages/mail.scm => gnu/packages/mail.scm +1 -1
@@ 1447,7 1447,7 @@ useful features.")
    (source (origin
             (method git-fetch)
             (uri (git-reference
                   (url  "https://github.com/dinhviethoa/libetpan.git")
                   (url  "https://github.com/dinhviethoa/libetpan")
                   (commit version)))
             (file-name (git-file-name name version))
             (sha256

M gnu/packages/man.scm => gnu/packages/man.scm +1 -1
@@ 83,7 83,7 @@ as description, options, see also, etc.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/rtomayko/ronn.git")
         (url "https://github.com/rtomayko/ronn")
         (commit version)))
       (file-name
        (git-file-name name version))

M gnu/packages/messaging.scm => gnu/packages/messaging.scm +29 -31
@@ 743,7 743,8 @@ of xmpppy.")
                       (version-major+minor version)
                       "/gajim-" version ".tar.gz"))
       (sha256
        (base32 "1gfcp3b5nq43xxz5my8vfhfxnnli726j3hzcgwh9fzrzzd9ic3gx"))))
        (base32 "1gfcp3b5nq43xxz5my8vfhfxnnli726j3hzcgwh9fzrzzd9ic3gx"))
       (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
    (build-system python-build-system)
    (arguments
     `(#:imported-modules


@@ 756,16 757,6 @@ of xmpppy.")
        (guix build utils))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'add-plugin-dirs
           (lambda _
             (substitute* "gajim/common/configpaths.py"
               (("_paths\\['PLUGINS_USER'\\]\\]")
                "_paths['PLUGINS_USER']] + \
([os.getenv('GAJIM_PLUGIN_PATH')] \
if os.getenv('GAJIM_PLUGIN_PATH') \
and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
else [])"))
             #t))
         (replace 'check
           (lambda _
             ;; Tests require a running X server.


@@ 859,7 850,7 @@ and OpenPGP) and available in 29 languages.")
(define-public gajim-omemo
  (package
    (name "gajim-omemo")
    (version "2.7.9")
    (version "2.6.80")
    (source
     (origin
       (method url-fetch/zipbomb)


@@ 868,7 859,7 @@ and OpenPGP) and available in 29 languages.")
         "https://ftp.gajim.org/plugins_releases/omemo_"
         version ".zip"))
       (sha256
        (base32 "19si2v5yrxpn2m0f684npsg0iiyl2h3r5hbxyrxv4k3acmfmhb3z"))))
        (base32 "179hgx091c12258335znn1540jhp4z3n3wv5ksrgqq7l3jgc93d7"))))
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils))


@@ 897,7 888,7 @@ multi-client end-to-end encryption.")
(define-public gajim-openpgp
  (package
    (name "gajim-openpgp")
    (version "1.3.5")
    (version "1.2.14")
    (source
     (origin
       (method url-fetch/zipbomb)


@@ 906,7 897,7 @@ multi-client end-to-end encryption.")
         "https://ftp.gajim.org/plugins_releases/openpgp_"
         version ".zip"))
       (sha256
        (base32 "1jvpl2gjl5xxvsgxpmvh3mn2mm142dg2hknakkc32swb7l1fqx5m"))))
        (base32 "0wdjpf1i4pvl4ha4plfpywwi9aw5n2mhrpv8mmbidpawxqfbd94b"))))
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils))


@@ 932,19 923,19 @@ Encryption to Gajim.")
  (package
    (name "dino")
    (version "0.2.0")
    (outputs '("out" "debug"))
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://github.com/dino/dino/releases/download/v"
                           version "/dino-" version ".tar.gz"))
       (uri
        (string-append "https://github.com/dino/dino/releases/download/v"
                       version "/dino-" version ".tar.gz"))
       (sha256
        (base32
         "0iigh7bkil6prf02dqcl6lmd89jxz685h8lqr3ni4x39zkcransn"))))
        (base32 "0iigh7bkil6prf02dqcl6lmd89jxz685h8lqr3ni4x39zkcransn"))))
    (build-system cmake-build-system)
    (outputs '("out" "debug"))
    (arguments
     `(#:tests? #f
       #:parallel-build? #f ; not supported
       #:parallel-build? #f             ; not supported
       #:modules ((guix build cmake-build-system)
                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
                  (guix build utils))


@@ 955,10 946,21 @@ Encryption to Gajim.")
       (modify-phases %standard-phases
         (add-after 'install 'glib-or-gtk-wrap
           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
    (native-inputs
     `(("gettext" ,gettext-minimal)
       ("glib:bin" ,glib "bin")
       ("gtk+:bin" ,gtk+ "bin")
       ("pkg-config" ,pkg-config)
       ("vala" ,vala)))
    (inputs
     `(("libgee" ,libgee)
       ("libsignal-protocol-c" ,libsignal-protocol-c)
     `(("glib" ,glib)
       ("glib-networking" ,glib-networking)
       ("gpgme" ,gpgme)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gtk+" ,gtk+)
       ("libgcrypt" ,libgcrypt)
       ("libgee" ,libgee)
       ("libsignal-protocol-c" ,libsignal-protocol-c)
       ("libsoup" ,libsoup)
       ("qrencode" ,qrencode)
       ("sqlite" ,sqlite)


@@ 966,15 968,11 @@ Encryption to Gajim.")
       ("gtk+" ,gtk+)
       ("glib-networking" ,glib-networking)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("glib" ,glib "bin")
       ("vala" ,vala)
       ("gettext" ,gettext-minimal)))
    (synopsis "Graphical Jabber/XMPP Client using GTK+/Vala")
    (description "Dino is a chat client for the desktop.  It focuses on providing
a minimal yet reliable Jabber/XMPP experience and having encryption enabled by
default.")
    (home-page "https://dino.im")
    (synopsis "Graphical Jabber (XMPP) client")
    (description "Dino is a Jabber (XMPP) client which aims to fit well into
a graphical desktop environment like GNOME.")
    (license license:gpl3+)))

(define-public prosody

M gnu/packages/music.scm => gnu/packages/music.scm +57 -2
@@ 31,6 31,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;; Copyright © 2019 Riku Viitanen <riku.viitanen0@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 944,6 945,60 @@ engine (except effects) that can be used for layering or split patches.")
you to define complex tempo maps for entire songs or performances.")
    (license license:gpl2+)))

(define-public glyr
  (package
    (name "glyr")
    (version "1.0.10")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/sahib/glyr")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1miwbqzkhg0v3zysrwh60pj9sv6ci4lzq2vq2hhc6pc6hdyh8xyr"))))
    (build-system cmake-build-system)
    (arguments
     '(#:configure-flags '("-DTEST=true")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-tests
           (lambda _
             (substitute* "spec/capi/check_api.c"
               (("fail_unless \\(c != NULL,\"Could not load www.google.de\"\\);")
                ""))
             #t))
         (replace 'check
           (lambda* (#:key tests? #:allow-other-keys)
             (when tests?
               ;; capi tests
               (invoke "bin/check_api")
               ;; (invoke "bin/check_opt") TODO Very dependent on the network
               (invoke "bin/check_dbc"))

             ;; TODO Work out how to run the spec/providers Python tests
             #t)))))
    (inputs
     `(("glib" ,glib)
       ("curl" ,curl)
       ("sqlite" ,sqlite)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("check" ,check)))
    (home-page "https://github.com/sahib/glyr")
    (synopsis "Search engine for music related metadata")
    (description
     "Glyr comes both in a command-line interface tool (@command{glyrc}) and
as a C library (libglyr).

The sort of metadata glyr is searching (and downloading) is usually the data
you see in your musicplayer.  And indeed, originally it was written to serve
as internally library for a musicplayer, but has been extended to work as a
standalone program which is able to download cover art, lyrics, photos,
biographies, reviews and more.")
    (license license:lgpl3+)))

(define-public gtklick
  (package
    (name "gtklick")


@@ 1328,7 1383,7 @@ complete studio.")
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/onkelDead/tascam-gtk.git")
                      (url "https://github.com/onkelDead/tascam-gtk")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256


@@ 5097,7 5152,7 @@ for integration into status line generators or other command-line tools.")
              (method git-fetch)
              (uri (git-reference
                    (url
                     "https://github.com/openAVproductions/openAV-ArtyFX.git")
                     "https://github.com/openAVproductions/openAV-ArtyFX")
                    (commit (string-append "release-" version))))
              (file-name (git-file-name name version))
              (sha256

M gnu/packages/networking.scm => gnu/packages/networking.scm +5 -5
@@ 349,7 349,7 @@ supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/Haivision/srt.git")
         (url "https://github.com/Haivision/srt")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 386,7 386,7 @@ performance across unpredictable networks, such as the Internet.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/Haivision/srt.git")
         (url "https://github.com/Haivision/srt")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 402,7 402,7 @@ performance across unpredictable networks, such as the Internet.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/sctp/lksctp-tools.git")
         (url "https://github.com/sctp/lksctp-tools")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 458,7 458,7 @@ at the link-layer level.")
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/nanomsg/nng.git")
             (url "https://github.com/nanomsg/nng")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 501,7 501,7 @@ publish/subscribe, RPC-style request/reply, or service discovery.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/nanomsg/nanomsg.git")
         (url "https://github.com/nanomsg/nanomsg")
         (commit version)))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/ocaml.scm => gnu/packages/ocaml.scm +5 -3
@@ 5802,7 5802,9 @@ convenience functions for vectors and matrices.")
                "0wzysis9fa850s68qh8vrvqc6svgllhwra3kzll2ibv0wmdqrich"))))
    (build-system dune-build-system)
    (arguments
     `(;; FIXME: (got signal SEGV) #44725
     `(;; NOTE: GC reclaims bigarrays packed into a custom structure
       ;; regardless of their refcounts. Affects OCaml >= 4.10.x
       ;; https://github.com/ocaml/ocaml/issues/9360
       #:tests? #f
       #:test-target "tests"))
    (inputs


@@ 5822,7 5824,7 @@ and SVG file output.")
(define-public lablgtk3
  (package
    (name "lablgtk")
    (version "3.0.beta8")
    (version "3.1.1")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 5831,7 5833,7 @@ and SVG file output.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "08pgwnia240i2rw1rbgiahg673kwa7b6bvhsg3z4b47xr5sh9pvz"))))
                "11qfc39cmwfwfpwmjh6wh98zwdv6p73bv8hqwcsss869vs1r7gmn"))))
    (build-system dune-build-system)
    (arguments
     `(#:tests? #t

M gnu/packages/openstack.scm => gnu/packages/openstack.scm +116 -107
@@ 5,6 5,7 @@
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 26,6 27,7 @@
  #:use-module (gnu packages check)
  #:use-module (gnu packages gnupg)
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-check)
  #:use-module (gnu packages python-crypto)
  #:use-module (gnu packages python-web)
  #:use-module (gnu packages python-xyz)


@@ 45,47 47,64 @@
(define-public python-bandit
  (package
    (name "python-bandit")
    (version "1.4.0")
    (version "1.6.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "bandit" version))
       (sha256
        (base32
         "1m5bm42120zyazky4k0lp3d9r0jwhjmp6sb108xfr0vz952p15yb"))))
         "0rb034c99pyhb4a60z7f2kz40cjydhm8m9v2blaal1rmhlam7rs1"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (delete 'check)
                  (add-after 'install 'check
                    (lambda* (#:key inputs outputs #:allow-other-keys)
                      ;; Tests require the 'bandit' executable in PATH.
                      ;; It's only built during install time.
                      (add-installed-pythonpath inputs outputs)
                      (setenv "PATH" (string-append (assoc-ref outputs "out")
                                                    "/bin:" (getenv "PATH")))
                      (invoke "python" "setup.py" "testr"))))))
     ;; The tests are disabled to avoid a circular dependency with
     ;; python-stestr.
     `(#:tests? #f))
    (propagated-inputs
      `(("python-gitpython" ,python-gitpython)
        ("python-pyyaml" ,python-pyyaml)
        ("python-six" ,python-six)
        ("python-stevedore" ,python-stevedore)))
     `(("python-gitpython" ,python-gitpython)
       ("python-pyyaml" ,python-pyyaml)
       ("python-six" ,python-six)
       ("python-stevedore" ,python-stevedore)))
    (native-inputs
      `(;; Tests.
        ("python-beautifulsoup4" ,python-beautifulsoup4)
        ("python-fixtures" ,python-fixtures)
        ("python-mock" ,python-mock)
        ("python-subunit" ,python-subunit)
        ("python-testrepository" ,python-testrepository)
        ("python-testscenarios" ,python-testscenarios)
        ("python-testtools" ,python-testtools)))
     `(("python-pbr" ,python-pbr)))
    (home-page "https://github.com/PyCQA/bandit")
    (synopsis "Security oriented static analyser for python code")
    (description
      "Bandit is a tool designed to find common security issues in Python code.
To do this Bandit processes each file, builds an AST from it, and runs
appropriate plugins against the AST nodes.  Once Bandit has finished scanning
all the files it generates a report.")
    (description "Bandit is a tool designed to find common security issues in
Python code.  To do this Bandit processes each file, builds an AST from it,
and runs appropriate plugins against the AST nodes.  Once Bandit has finished
scanning all the files it generates a report.")
    (license asl2.0)))

(define-public python-cliff
  (package
    (name "python-cliff")
    (version "3.5.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "cliff" version))
       (sha256
        (base32
         "0n8pzr0mnn9lq2mykds69ij2xrn0fsirh4ndmkx0mzydbx5niysv"))))
    (build-system python-build-system)
    (arguments
     `(#:tests? #f))
    (native-inputs
     `(("python-pbr" ,python-pbr)))
    (propagated-inputs
     `(("python-cmd2" ,python-cmd2)
       ("python-prettytable" ,python-prettytable)
       ("python-pyparsing" ,python-pyparsing)
       ("python-pyyaml" ,python-pyyaml)
       ("python-bandit" ,python-bandit)
       ("python-stevedore" ,python-stevedore)))
    (home-page "https://opendev.org/openstack/cliff")
    (synopsis "Framework for building command line programs")
    (description "The @code{cliff} framework allows creating multi-level
commands such as those of @command{subversion} and @command{git}, where the
main program handles some basic argument parsing and then invokes a
sub-command to do the work.  It uses plugins to define sub-commands, output
formatters, and other extensions.")
    (license asl2.0)))

(define-public python-debtcollector


@@ 131,39 150,30 @@ manner.")
(define-public python-hacking
  (package
    (name "python-hacking")
    (version "1.1.0")
    (version "4.0.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "hacking" version))
       (sha256
        (base32
         "1vlgh81v4vsw3q3cf7qggsp043vq16knp203lrll82h7l7rhd8r3"))))
         "062rvbkvbavqqz55f7q00ikwipkn5j0rdls1rrajdbfwgckjcrsm"))))
    (build-system python-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'delete-broken-test
           (lambda _
             ;; TODO: Just one test fails:
             ;; hacking.tests.test_doctest.HackingTestCase.test_pycodestyle
             ;;   (H403-hacking_docstring_multiline_end-line-5)
             (delete-file "hacking/tests/test_doctest.py")
             #t)))))
    (propagated-inputs
     `(("python-flake8" ,python-flake8-2.6)
       ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
       ("python-pbr" ,python-pbr)
       ("python-pep8-1.5.7" ,python-pep8-1.5.7)
       ("python-pyflakes-1.2" ,python-pyflakes-1.2)
       ("python-six" ,python-six)))
     (propagated-inputs
     `(("python-flake8" ,python-flake8)))
    (native-inputs
     `( ;; Tests
       ("python-coverage" ,python-coverage)
       ("python-ddt" ,python-ddt)
       ("python-dnspython" ,python-dnspython)
       ("python-fixtures" ,python-fixtures)
       ("python-eventlet" ,python-eventlet)
       ("python-mock" ,python-mock)
       ("python-reno" ,python-reno)
       ("python-testrepository" ,python-testrepository)
       ("python-testscenarios" ,python-testscenarios)))
       ("python-monotonic" ,python-monotonic)
       ("python-subunit" ,python-subunit)
       ("python-stestr" ,python-stestr)
       ("python-testscenarios" ,python-testscenarios)
       ("python-testtools" ,python-testtools)))
    (home-page "https://github.com/openstack-dev/hacking")
    (synopsis "OpenStack hacking guideline enforcement")
    (description


@@ 172,9 182,6 @@ manner.")
guidelines}.")
    (license asl2.0)))

(define-public python2-hacking
  (package-with-python2 python-hacking))

(define-public python-mox3
  (package
    (name "python-mox3")


@@ 310,22 317,21 @@ to docs.openstack.org and developer.openstack.org.")
(define-public python-stevedore
  (package
    (name "python-stevedore")
    (version "1.28.0")
    (version "3.2.2")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "stevedore" version))
       (sha256
        (base32
         "02ynfgwma84g59834dmvzr39mcppy5s229zf1w23c0qngf753izi"))))
         "1w11lm293afzb73iq0ba9wnmr2rjwymnhr92km4a4xrs7a5qcigq"))))
    (build-system python-build-system)
    (propagated-inputs
     `(("python-pbr" ,python-pbr)
       ("python-six" ,python-six)))
    (arguments
     ;; The tests are disabled to avoid a circular dependency with
     ;; python-stestr.
     `(#:tests? #f))
    (native-inputs
     `(("python-mock" ,python-mock)
       ("python-sphinx" ,python-sphinx)
       ("python-testrepository" ,python-testrepository)))
     `(("python-pbr" ,python-pbr)))
    (home-page "https://github.com/dreamhost/stevedore")
    (synopsis "Manage dynamic plugins for Python applications")
    (description


@@ 427,22 433,33 @@ common features used in Tempest.")
(define-public python-oslo.context
  (package
    (name "python-oslo.context")
    (version "2.20.0")
    (version "3.1.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "oslo.context" version))
       (sha256
        (base32
         "0iiq9rpwg6wrdqnhf3d8z8g0g7fjhs5zn6qw6igvxplz2c3rbvvx"))))
         "1l2z186rkd9acrb2ygf53yrdc1lgf7cy1akbhm21kgkzind4p2r6"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (add-after 'unpack 'relax-requirements
                    (lambda _
                      (substitute* "test-requirements.txt"
                        (("hacking>=3.0.1,<3.1.0")
                         "hacking>=3.0.1"))
                      #t)))))
    (propagated-inputs
     `(("python-debtcollector" ,python-debtcollector)
       ("python-pbr" ,python-pbr)))
     `(("python-debtcollector" ,python-debtcollector)))
    (native-inputs
     `(("python-fixtures" ,python-fixtures)
     `(("python-bandit" ,python-bandit)
       ("python-coverage" ,python-coverage)
       ("python-fixtures" ,python-fixtures)
       ("python-hacking" ,python-hacking)
       ("python-oslotest" ,python-oslotest)))
       ("python-oslotest" ,python-oslotest)
       ("python-pbr" ,python-pbr)
       ("python-stestr" ,python-stestr)))
    (home-page "https://launchpad.net/oslo")
    (synopsis "Oslo context library")
    (description


@@ 600,70 617,62 @@ and building documentation from them.")
(define-public python-oslosphinx
  (package
    (name "python-oslosphinx")
    (version "4.10.0")
    (version "4.18.0")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "oslosphinx" version))
       (sha256
        (base32
         "09mxqyabi68f3s3arvdhlhq0mn38vf74jbsfcg84151hcj6czhnl"))))
         "1xm41857vzrzjmnyi6bqirg4i5qa61v7wxcsdc4q1nzgr3ndgz5k"))))
    (build-system python-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (replace 'check
         (add-after 'unpack 'relax-requirements
           (lambda _
             ;; Note: Upstream tests would have also built the release notes.
             ;; That only would work if we were in a git checkout.
             ;; Therefore, we don't do it here.
             (invoke "python" "setup.py" "build_sphinx"))))))
             (substitute* "test-requirements.txt"
               (("hacking!=0.13.0,<0.14,>=0.12.0")
                "hacking!=0.13.0,>=0.12.0"))
             #t)))))
    (propagated-inputs
      `(("python-requests" ,python-requests)))
     `(("python-requests" ,python-requests)))
    (native-inputs
      `(("python-pbr" ,python-pbr)
        ("python-docutils" ,python-docutils)
        ("python-hacking" ,python-hacking)
        ("python-sphinx" ,python-sphinx)))
     `(("python-hacking" ,python-hacking)
       ("python-openstackdocstheme" ,python-openstackdocstheme)
       ("python-pbr" ,python-pbr)
       ("python-reno" ,python-reno)
       ("python-sphinx" ,python-sphinx)))
    (home-page "https://www.openstack.org/")
    (synopsis "OpenStack sphinx extensions and theme")
    (description
      "This package provides themes and extensions for Sphinx documentation
from the OpenStack project.")
    (description "This package provides themes and extensions for Sphinx
documentation from the OpenStack project.")
    (license asl2.0)))

(define-public python2-oslosphinx
  (package-with-python2 python-oslosphinx))

(define-public python-oslotest
  (package
    (name "python-oslotest")
    (version "3.4.0")
    (version "4.4.1")
    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "oslotest" version))
        (sha256
          (base32
            "1pp8lq61d548cxcqi451czvrz5i5b3hyi2ry00wmngdgiswcqj1h"))))
     (origin
       (method url-fetch)
       (uri (pypi-uri "oslotest" version))
       (sha256
        (base32
         "0r50sz55m8ljv2vk1k7sp88iz1iqq4p9w6kb8hn8g8c50r9zdi5i"))))
    (build-system python-build-system)
    (arguments
     ;; The tests are disabled to avoid a circular dependency with oslo.config.
     `(#:tests? #f))
    (propagated-inputs
      `(("python-fixtures" ,python-fixtures)
        ("python-mock" ,python-mock)
        ("python-mox3" ,python-mox3)
        ("python-os-client-config" ,python-os-client-config)
        ("python-six" ,python-six)
        ("python-subunit" ,python-subunit)
        ("python-testrepository" ,python-testrepository)
        ("python-testtools" ,python-testtools)))
    (native-inputs
      `(("python-pbr" ,python-pbr)
        ("python-testscenarios" ,python-testscenarios)))
     `(("python-fixtures" ,python-fixtures)
       ("python-six" ,python-six)
       ("python-subunit" ,python-subunit)
       ("python-testtools" ,python-testtools)))
    (home-page "https://launchpad.net/oslo")
    (synopsis "Oslo test framework")
    (description
      "The Oslo Test framework provides common fixtures, support for debugging,
and better support for mocking results.")
    (description "The Oslo Test framework provides common fixtures, support
for debugging, and better support for mocking results.")
    (license asl2.0)))

(define-public python2-oslotest

M gnu/packages/package-management.scm => gnu/packages/package-management.scm +5 -5
@@ 130,8 130,8 @@
  ;; Latest version of Guix, which may or may not correspond to a release.
  ;; Note: the 'update-guix-package.scm' script expects this definition to
  ;; start precisely like this.
  (let ((version "1.2.0rc1")
        (commit "3ba6ffd0dd092ae879d014e4971989f231eaa56d")
  (let ((version "1.2.0rc2")
        (commit "0d4b1afb6bfa4bdeade2cb6409ece9467d513e39")
        (revision 1))
    (package
      (name "guix")


@@ 148,7 148,7 @@
                      (commit commit)))
                (sha256
                 (base32
                  "1wa67gdipmzqr400hp0cw5ih0rlfvj345h65rqbk9s4g3bkg38hm"))
                  "1d0pifzrr14f1n0fn21rlh0hzfjvfsavf9as1vcjga47bdjjvrpp"))
                (file-name (string-append "guix-" version "-checkout"))))
      (build-system gnu-build-system)
      (arguments


@@ 1273,7 1273,7 @@ for packaging and deployment of cross-compiled Windows applications.")
(define-public libostree
  (package
    (name "libostree")
    (version "2020.7")
    (version "2020.8")
    (source
     (origin
       (method url-fetch)


@@ 1281,7 1281,7 @@ for packaging and deployment of cross-compiled Windows applications.")
             "https://github.com/ostreedev/ostree/releases/download/v"
             (version-major+minor version) "/libostree-" version ".tar.xz"))
       (sha256
        (base32 "0clriq2ypz1fycd6mpjyrhzid44svzpzw0amnank593h69b216ax"))))
        (base32 "16v73v63h16ika73kgh2cvgm0v27r2d48m932mbj3xm6s295kapx"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases

M gnu/packages/parallel.scm => gnu/packages/parallel.scm +2 -2
@@ 55,14 55,14 @@
(define-public parallel
  (package
    (name "parallel")
    (version "20200822")
    (version "20201022")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "mirror://gnu/parallel/parallel-"
                          version ".tar.bz2"))
      (sha256
       (base32 "02dy46g6f05p7s2qs8h6yg20p1zl3flxxf77n5jw74l3h1m24m4n"))))
       (base32 "0qgh3947l854nvh2ylykbyzsflixd2zdi17vmwqm6azn9a32kzim"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases

A gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch => gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch +11 -0
@@ 0,0 1,11 @@
--- a/gajim/common/configpaths.py	2020-11-19 12:12:02.004414323 +0100
+++ a/gajim/common/configpaths.py	2020-11-19 15:34:52.211476895 +0100
@@ -47,7 +47,7 @@
         return [Path(_paths['PLUGINS_BASE']),
                 Path('/app/plugins')]
     return [Path(_paths['PLUGINS_BASE']),
-            Path(_paths['PLUGINS_USER'])]
+            Path(_paths['PLUGINS_USER'])] + ([Path(os.getenv('GAJIM_PLUGIN_PATH'))] if os.getenv('GAJIM_PLUGIN_PATH') and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() else [])
 
 
 def get_paths(type_: PathType) -> Generator[str, None, None]:

D gnu/packages/patches/xpra-4.0.4-norequests.patch => gnu/packages/patches/xpra-4.0.4-norequests.patch +0 -39
@@ 1,39 0,0 @@
Remove python-requests dependency, r27626 upstream.

--- a/xpra/net/websockets/common.py	(revision 27625)
+++ b/xpra/net/websockets/common.py	(revision 27626)
@@ -7,7 +7,6 @@
 import uuid
 from hashlib import sha1
 from base64 import b64encode
-from requests.structures import CaseInsensitiveDict
 
 from xpra.os_util import strtobytes, bytestostr, monotonic_time
 from xpra.log import Logger
@@ -77,7 +76,7 @@
     for line in lines:
         parts = line.split(b": ", 1)
         if len(parts)==2:
-            headers[parts[0]] = parts[1]
+            headers[parts[0].lower()] = parts[1]
     return headers
 
 def verify_response_headers(headers, key):
@@ -84,14 +83,13 @@
     log("verify_response_headers(%s)", headers)
     if not headers:
         raise Exception("no http headers found in response")
-    headers = CaseInsensitiveDict(headers)
-    upgrade = headers.get(b"Upgrade", b"")
+    upgrade = headers.get(b"upgrade", b"")
     if upgrade!=b"websocket":
         raise Exception("invalid http upgrade: '%s'" % upgrade)
-    protocol = headers.get(b"Sec-WebSocket-Protocol", b"")
+    protocol = headers.get(b"sec-websocket-protocol", b"")
     if protocol!=b"binary":
         raise Exception("invalid websocket protocol: '%s'" % protocol)
-    accept_key = headers.get(b"Sec-WebSocket-Accept", b"")
+    accept_key = headers.get(b"sec-websocket-accept", b"")
     if not accept_key:
         raise Exception("websocket accept key is missing")
     expected_key = make_websocket_accept_hash(key)

M gnu/packages/python-check.scm => gnu/packages/python-check.scm +67 -0
@@ 28,6 28,7 @@
(define-module (gnu packages python-check)
  #:use-module (gnu packages)
  #:use-module (gnu packages check)
  #:use-module (gnu packages openstack)
  #:use-module (gnu packages python-web)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages web)


@@ 82,6 83,39 @@ This package provides seamless integration with coverage.py (and thus pytest,
nosetests, etc...) in Python projects.")
    (license license:expat)))

(define-public python-junit-xml
  ;; XXX: There are no tags or PyPI releases, so take the latest commit
  ;; and use the version defined in setup.py.
  (let ((version "1.9")
        (commit "4bd08a272f059998cedf9b7779f944d49eba13a6")
        (revision "0"))
    (package
      (name "python-junit-xml")
      (version (git-version version revision commit))
      (home-page "https://github.com/kyrus/python-junit-xml")
      (source (origin
                (method git-fetch)
                (uri (git-reference (url home-page) (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "0b8kbjhk3j10rk0vcniy695m3h43yip6y93h1bd6jjh0cp7s09c7"))))
      (build-system python-build-system)
      (arguments
       `(#:phases (modify-phases %standard-phases
                    (replace 'check
                      (lambda _
                        (invoke "pytest" "-vv"))))))
      (native-inputs
       `(("python-pytest" ,python-pytest)))
      (propagated-inputs
       `(("python-six" ,python-six)))
      (synopsis "Create JUnit XML test results")
      (description
       "This package provides a Python module for creating JUnit XML test
result documents that can be read by tools such as Jenkins or Bamboo.")
      (license license:expat))))

(define-public python-vcrpy
  (package
    (name "python-vcrpy")


@@ 1078,3 1112,36 @@ any Python VM with basically no runtime overhead.")
    (description "Robber is a Python assertion library for test-driven and
behavior-driven development (TDD and BDD).")
    (license license:expat)))

(define-public python-stestr
  (package
    (name "python-stestr")
    (version "3.0.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "stestr" version))
       (sha256
        (base32
         "0adhqp9c9338wlvlq776k57k04lyxp38bv591afdm9gjsn2qn1zm"))))
    (build-system python-build-system)
    (arguments
     `(#:tests? #f))                    ;to avoid circular dependencies
    (native-inputs
     `(("python-pbr" ,python-pbr)))
    (propagated-inputs
     `(("python-cliff" ,python-cliff)
       ("python-fixtures" ,python-fixtures)
       ("python-future" ,python-future)
       ("python-pyyaml" ,python-pyyaml)
       ("python-subunit" ,python-subunit)
       ("python-testtools" ,python-testtools)
       ("python-voluptuous" ,python-voluptuous)))
    (home-page "https://stestr.readthedocs.io/en/latest/")
    (synopsis "Parallel Python test runner")
    (description "This package provides the @command{stestr} command, a
parallel Python test runner built around @code{subunit}.  It is designed to
execute @code{unittest} test suites using multiple processes to split up
execution of a test suite.  It will also store a history of all test runs to
help in debugging failures and optimizing the scheduler to improve speed.")
    (license license:asl2.0)))

M gnu/packages/python-crypto.scm => gnu/packages/python-crypto.scm +1 -1
@@ 74,7 74,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/python-otr/pure-python-otr.git")
         (url "https://github.com/python-otr/pure-python-otr")
         (commit version)))
       (file-name
        (git-file-name name version))

M gnu/packages/python-web.scm => gnu/packages/python-web.scm +383 -8
@@ 4,7 4,7 @@
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2020 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016, 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu>


@@ 68,6 68,7 @@
  #:use-module (gnu packages curl)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages django)
  #:use-module (gnu packages graphviz)
  #:use-module (gnu packages groff)
  #:use-module (gnu packages libevent)
  #:use-module (gnu packages libffi)


@@ 76,6 77,7 @@
  #:use-module (gnu packages python-check)
  #:use-module (gnu packages python-compression)
  #:use-module (gnu packages python-crypto)
  #:use-module (gnu packages python-science)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages serialization)
  #:use-module (gnu packages sphinx)


@@ 276,6 278,158 @@ WSGI.  This package includes libraries for implementing ASGI servers.")
    ;; looks like the user can choose a license.
    (license (list license:gpl3+ license:lgpl3+ license:expat))))

(define-public python-aws-sam-translator
  (package
    (name "python-aws-sam-translator")
    (version "1.30.1")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "aws-sam-translator" version))
              (sha256
               (base32
                "0d9ppd94x2kw404m49ajswmmxgdngbs4p5ajyrdvnlivfzqbv7dx"))))
    (build-system python-build-system)
    (arguments
     `(;; XXX: Tests are not distributed with the PyPI archive, and would
       ;; introduce a circular dependency on python-cfn-lint.
       #:tests? #f
       #:phases (modify-phases %standard-phases
                  (add-after 'unpack 'loosen-requirements
                    (lambda _
                      ;; The package needlessly specifies exact versions
                      ;; of dependencies, when it works fine with others.
                      (substitute* "requirements/base.txt"
                        (("(.*)(~=[0-9\\.]+)" all package version)
                         package))
                      #t)))))
    (propagated-inputs
     `(("python-boto3" ,python-boto3)
       ("python-jsonschema" ,python-jsonschema)
       ("python-six" ,python-six)))
    (home-page "https://github.com/awslabs/serverless-application-model")
    (synopsis "Transform AWS SAM templates into AWS CloudFormation templates")
    (description
     "AWS SAM Translator is a library that transform @dfn{Serverless Application
Model} (SAM) templates into AWS CloudFormation templates.")
    (license license:asl2.0)))

(define-public python-aws-xray-sdk
  (package
    (name "python-aws-xray-sdk")
    (version "2.6.0")
    (home-page "https://github.com/aws/aws-xray-sdk-python")
    (source (origin
              (method git-fetch)
              (uri (git-reference (url home-page) (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "12fzr0ylpa1lx3xr1x2f1jx8iiyzcr6g57fb9jign0j0lxdlbzpv"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (add-after 'unpack 'disable-tests
                    (lambda _
                      (for-each delete-file
                                '(;; These tests require packages not yet in Guix.
                                  "tests/ext/aiobotocore/test_aiobotocore.py"
                                  "tests/ext/aiohttp/test_middleware.py"
                                  "tests/ext/pg8000/test_pg8000.py"
                                  "tests/ext/psycopg2/test_psycopg2.py"
                                  "tests/ext/pymysql/test_pymysql.py"
                                  "tests/ext/pynamodb/test_pynamodb.py"
                                  "tests/test_async_recorder.py"

                                  ;; FIXME: Why is this failing?
                                  "tests/test_patcher.py"

                                  ;; TODO: How to configure Django for these tests.
                                  "tests/ext/django/test_db.py"
                                  "tests/ext/django/test_middleware.py"

                                  ;; These tests want to access httpbin.org.
                                  "tests/ext/requests/test_requests.py"
                                  "tests/ext/httplib/test_httplib.py"
                                  "tests/ext/aiohttp/test_client.py"))))
                  (replace 'check
                    (lambda _
                      (setenv "PYTHONPATH"
                              (string-append "./build/lib:.:"
                                             (getenv "PYTHONPATH")))
                      (invoke "pytest" "-vv" "tests"))))))
    (native-inputs
     `(;; These are required for the test suite.
       ("python-bottle" ,python-bottle)
       ("python-flask" ,python-flask)
       ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)
       ("python-pymysql" ,python-pymysql)
       ("python-pytest" ,python-pytest)
       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
       ("python-requests" ,python-requests)
       ("python-sqlalchemy" ,python-sqlalchemy)
       ("python-webtest" ,python-webtest)))
    (propagated-inputs
     `(("python-aiohttp" ,python-aiohttp)
       ("python-botocore" ,python-botocore)
       ("python-future" ,python-future)
       ("python-jsonpickle" ,python-jsonpickle)
       ("python-urllib3" ,python-urllib3)
       ("python-wrapt" ,python-wrapt)))
    (synopsis "Profile applications on AWS X-Ray")
    (description
     "The AWS X-Ray SDK for Python enables Python developers to record and
emit information from within their applications to the AWS X-Ray service.")
    (license license:asl2.0)))

(define-public python-cfn-lint
  (package
    (name "python-cfn-lint")
    (version "0.41.0")
    (home-page "https://github.com/aws-cloudformation/cfn-python-lint")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url home-page)
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0nqs0fmj3hd7pnd9hkb4z57jvi2iv82hh6n3xxba6i6p8zgx75q4"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (replace 'check
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let ((out (assoc-ref outputs "out")))
                        ;; Remove test for the documentation update scripts
                        ;; to avoid a dependency on 'git'.
                        (delete-file
                         "test/unit/module/maintenance/test_update_documentation.py")
                        (setenv "PYTHONPATH"
                                (string-append "./build/lib:"
                                               (getenv "PYTHONPATH")))
                        (setenv "PATH" (string-append out "/bin:"
                                                      (getenv "PATH")))
                        (invoke "python" "-m" "unittest" "discover"
                                "-s" "test")))))))
    (native-inputs
     `(("python-pydot" ,python-pydot)
       ("python-mock" ,python-mock)))
    (propagated-inputs
     `(("python-aws-sam-translator" ,python-aws-sam-translator)
       ("python-jsonpatch" ,python-jsonpatch)
       ("python-jsonschema" ,python-jsonschema)
       ("python-junit-xml" ,python-junit-xml)
       ("python-networkx" ,python-networkx)
       ("python-pyyaml" ,python-pyyaml)
       ("python-six" ,python-six)))
    (synopsis "Validate CloudFormation templates")
    (description
     "This package lets you validate CloudFormation YAML/JSON templates against
the CloudFormation spec and additional checks.  Includes checking valid values
for resource properties and best practices.")
    (license license:expat)))

(define-public python-falcon
  (package
    (name "python-falcon")


@@ 460,14 614,14 @@ HTTP servers, RESTful APIs, and web services.")
(define-public python-html2text
  (package
    (name "python-html2text")
    (version "2019.8.11")
    (version "2020.1.16")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "html2text" version))
       (sha256
        (base32
         "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm"))))
         "1fvv4z6dblii2wk1x82981ag8yhxbim1v2ksgywxsndh2s7335p2"))))
    (build-system python-build-system)
    (arguments
     '(#:phases


@@ 485,7 639,94 @@ Swartz.")
    (license license:gpl3+)))

(define-public python2-html2text
  (package-with-python2 python-html2text))
  (let ((base (package-with-python2 python-html2text)))
    (package
      (inherit base)
      ;; This is the last version with support for Python 2.
      (version "2019.8.11")
      (source (origin
                (method url-fetch)
                (uri (pypi-uri "html2text" version))
                (sha256
                 (base32
                  "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm")))))))

(define-public python-jose
  (package
    (name "python-jose")
    (version "3.2.0")
    (home-page "http://github.com/mpdavis/python-jose")
    (source (origin
              (method git-fetch)
              (uri (git-reference (url home-page) (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1xmnf8whzv2gnkkdv0fqcn9qwmcc7y647p4kw9fi3lvcp9kch8vi"))))
    (build-system python-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (replace 'check
           (lambda* (#:key tests? #:allow-other-keys)
             (if tests?
                 (invoke "pytest" "-vv")
                 (format #t "test suite not run~%"))
             #t)))))
    (native-inputs
     `(;; All native inputs are for tests.
       ("python-pyasn1" ,python-pyasn1)
       ("python-pytest" ,python-pytest)
       ("python-pytest-cov" ,python-pytest-cov)
       ("python-pytest-runner" ,python-pytest-runner)))
    (propagated-inputs
     `(("python-cryptography" ,python-cryptography)
       ("python-rsa" ,python-rsa)
       ("python-six" ,python-six)))
    (synopsis "JOSE implementation in Python")
    (description
     "The @dfn{JavaScript Object Signing and Encryption} (JOSE) technologies
- JSON Web Signature (JWS), JSON Web Encryption (JWE), JSON Web Key (JWK), and
JSON Web Algorithms (JWA) - collectively can be used to encrypt and/or sign
content using a variety of algorithms.")
    (license license:expat)))

(define-public python-jsonpickle
  (package
    (name "python-jsonpickle")
    (version "1.4.1")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "jsonpickle" version))
              (sha256
               (base32
                "1fn86z468hamw8njh2grw2xdhsm7g48dyxs3lw0n10nn1g6vgm78"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (replace 'check
                    (lambda _
                      (setenv "PYTHONPATH"
                              (string-append "./build/lib:"
                                             (getenv "PYTHONPATH")))
                      (invoke "pytest" "-vv"
                              ;; Prevent running the flake8 and black
                              ;; pytest plugins, which only tests style
                              ;; and frequently causes harmless failures.
                              "-o" "addopts=''"))))))
    (native-inputs
     `(("python-setuptools-scm" ,python-setuptools-scm)
       ("python-toml" ,python-toml)  ;XXX: for setuptools_scm[toml]
       ;; For tests.
       ("python-numpy" ,python-numpy)
       ("python-pandas" ,python-pandas)
       ("python-pytest" ,python-pytest)))
    (home-page "https://jsonpickle.github.io/")
    (synopsis "Serialize object graphs into JSON")
    (description
     "This package provides a Python library for serializing any arbitrary
object graph to and from JSON.")
    (license license:bsd-3)))

(define-public python-mechanicalsoup
  (package


@@ 712,6 953,30 @@ both of which are installed automatically if you install this library.")
(define-public python2-flask-babel
  (package-with-python2 python-flask-babel))

(define-public python-flask-cors
  (package
    (name "python-flask-cors")
    (version "3.0.9")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "Flask-Cors" version))
              (sha256
               (base32
                "1f36hkaxc92zn12f88fkzwifdvlvsnmlp1dv3p5inpcc500c3kvb"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-flask" ,python-flask)
       ("python-nose" ,python-nose)
       ("python-packaging" ,python-packaging)))
    (propagated-inputs
     `(("python-six" ,python-six)))
    (home-page "https://flask-cors.readthedocs.io/en/latest/")
    (synopsis "Handle Cross-Origin Resource Sharing with Flask")
    (description
     "This package provides a Flask extension for handling @acronym{CORS,Cross
Origin Resource Sharing}, making cross-origin AJAX possible.")
    (license license:expat)))

(define-public python-html5lib
  (package
    (name "python-html5lib")


@@ 788,6 1053,41 @@ C, yielding parse times that can be a thirtieth of the html5lib parse times.")
(define-public python2-html5-parser
  (package-with-python2 python-html5-parser))

(define-public python-minio
  (package
    (name "python-minio")
    (version "6.0.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "minio" version))
              (sha256
               (base32
                "1cxpa0m7mdvpdbc1g6wlihq6ja4g4paxkl6f3q84bbnx07zpbllp"))))
    (build-system python-build-system)
    (arguments
     '(#:phases (modify-phases %standard-phases
                  (add-before 'check 'disable-failing-tests
                    (lambda _
                      ;; This test requires network access.
                      (delete-file "tests/unit/credentials_test.py")
                      #t)))))
    (native-inputs
     `(("python-faker" ,python-faker)
       ("python-mock" ,python-mock)
       ("python-nose" ,python-nose)))
    (propagated-inputs
     `(("python-certifi" ,python-certifi)
       ("python-configparser" ,python-configparser)
       ("python-dateutil" ,python-dateutil)
       ("python-pytz" ,python-pytz)
       ("python-urllib3" ,python-urllib3)))
    (home-page "https://github.com/minio/minio-py")
    (synopsis "Programmatically access Amazon S3 from Python")
    (description
     "This package provides a Python library for interacting with any
Amazon S3 compatible object storage server.")
    (license license:asl2.0)))

(define-public python-pycurl
  (package
    (name "python-pycurl")


@@ 1013,6 1313,49 @@ another XPath engine to find the matching elements in an XML or HTML document.")
(define-public python2-cssselect
  (package-with-python2 python-cssselect))

(define-public python-databricks-cli
  (package
    (name "python-databricks-cli")
    (version "0.14.0")
    (home-page "https://github.com/databricks/databricks-cli")
    (source (origin
              (method git-fetch)
              (uri (git-reference (url home-page) (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0imwpfda2pxix1rx0nlqs48v58icfw065nsv53rpg0dw4bw9x2wi"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (replace 'check
                    (lambda _
                      (setenv "PYTHONPATH"
                              (string-append "./build/lib:"
                                             (getenv "PYTHONPATH")))
                      (invoke "pytest" "tests" "-vv"
                              ;; XXX: This fails with newer Pytest
                              ;; (upstream uses Pytest 3..).
                              "-k" "not test_get_request_with_list"))))))
    (native-inputs
     `(;; For tests.
       ("python-decorator" ,python-decorator)
       ("python-mock" ,python-mock)
       ("python-pytest" ,python-pytest)
       ("python-requests-mock" ,python-requests-mock)))
    (propagated-inputs
     `(("python-click" ,python-click)
       ("python-configparser" ,python-configparser)
       ("python-requests" ,python-requests)
       ("python-six" ,python-six)
       ("python-tabulate" ,python-tabulate)))
    (synopsis "Command line interface for Databricks")
    (description
     "The Databricks Command Line Interface is a tool which provides an easy
to use interface to the Databricks platform.  The CLI is built on top of the
Databricks REST APIs.")
    (license license:asl2.0)))

(define-public python-openid-cla
  (package
    (name "python-openid-cla")


@@ 1163,6 1506,37 @@ WebSockets (over HTTP/1 and HTTP/2), ASGI/2, and ASGI/3 specifications.  It can
utilise asyncio, uvloop, or trio worker types.")
    (license license:expat)))

(define-public python-querystring-parser
  (package
    (name "python-querystring-parser")
    (version "1.2.4")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "querystring_parser" version))
              (sha256
               (base32
                "0qlar8a0wa003hm2z6wcpb625r6vjj0a70rsni9h8lz0zwfcwkv4"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (replace 'check
                    (lambda _
                      ;; XXX FIXME: This test is broken with Python 3.7:
                      ;; https://github.com/bernii/querystring-parser/issues/35
                      (substitute* "querystring_parser/tests.py"
                        (("self\\.assertEqual\\(self\\.knownValuesNormalized, result\\)")
                         "True"))
                      (invoke "python" "querystring_parser/tests.py"))))))
    (propagated-inputs
     `(("python-six" ,python-six)))
    (home-page "https://github.com/bernii/querystring-parser")
    (synopsis "QueryString parser that correctly handles nested dictionaries")
    (description
     "This package provides a query string parser for Python and Django
projects that correctly creates nested dictionaries from sent form/querystring
data.")
    (license license:expat)))

(define-public python-tornado
  (package
    (name "python-tornado")


@@ 2283,15 2657,16 @@ supports url redirection and retries, and also gzip and deflate decoding.")

(define-public awscli
  (package
    ;; Note: updating awscli typically requires updating botocore as well.
    (name "awscli")
    (version "1.18.6")
    (version "1.18.183")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri name version))
       (sha256
        (base32
         "0p479mfs9r0m82a217pap8156ijwvhv6r3kqa4k267gd05wgvygm"))))
         "0n1pmdl33r1v8qnrcg08ihvri9zm4fvsp14605vwmlkxvs8nb7s5"))))
    (build-system python-build-system)
    (arguments
     ;; FIXME: The 'pypi' release does not contain tests.


@@ 2789,13 3164,13 @@ Betamax.")
(define-public python-s3transfer
  (package
    (name "python-s3transfer")
    (version "0.2.0")
    (version "0.3.3")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "s3transfer" version))
              (sha256
               (base32
                "08fhj73b1ai52hrs2q3nggshq3pswn1gq8ch3m009cb2v2vmqggj"))))
                "1nzp5kwmy9669334shcz9ipg89jgpdqhrmbkgdg18r7wmvi3f6lj"))))
    (build-system python-build-system)
    (arguments
     `(#:phases

M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +202 -113
@@ 91,6 91,7 @@
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;; Copyright © 2019 Kristian Trandem <kristian@devup.no>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 122,6 123,7 @@
  #:use-module (gnu packages crypto)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages dbm)
  #:use-module (gnu packages docker)
  #:use-module (gnu packages enchant)
  #:use-module (gnu packages file)
  #:use-module (gnu packages fontutils)


@@ 3933,6 3935,30 @@ augment the changelog, but it can be used for other documents, too.")
(define-public python2-rst.linker
  (package-with-python2 python-rst.linker))

(define-public python-sshpubkeys
  (package
    (name "python-sshpubkeys")
    (version "3.1.0")
    (home-page "https://github.com/ojarva/python-sshpubkeys")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url home-page)
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq"))))
    (build-system python-build-system)
    (propagated-inputs
     `(("python-cryptography" ,python-cryptography)
       ("python-ecdsa" ,python-ecdsa)))
    (synopsis "OpenSSH public key parser")
    (description
     "This package provides a library for parsing and validating OpenSSH
public key files.")
    (license license:bsd-3)))

(define-public python-feedgenerator
  (package
    (name "python-feedgenerator")


@@ 5636,14 5662,14 @@ the OleFileIO module from PIL, the Python Image Library.")
(define-public python-pillow
  (package
    (name "python-pillow")
    (version "6.2.1")
    (version "8.0.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "Pillow" version))
       (sha256
        (base32
         "1c8wkzc58f5wdh006jvmwdk3wxld1xgagcbdvj7iv17qi0m9fkmz"))))
         "17pv0flaqqfld9m4lz8ayxyqb11gbbmr7w04mw4ar79cn3lwdi8i"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-pytest" ,python-pytest)))


@@ 5683,12 5709,24 @@ efficient internal representation, and fairly powerful image processing
capabilities.  The core image library is designed for fast access to data
stored in a few basic pixel formats.  It should provide a solid foundation for
a general image processing tool.")
    (properties `((python2-variant . ,(delay python2-pillow))))
    (license (license:x11-style
              "http://www.pythonware.com/products/pil/license.htm"
              "The PIL Software License"))))

(define-public python2-pillow
  (package-with-python2 python-pillow))
  (package-with-python2
   (package
     (inherit (strip-python2-variant python-pillow))
     ;; Version 6 is the last series with Python 2 support.
     (version "6.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pillow" version))
        (sha256
         (base32
          "0l5rv8jkdrb5q846v60v03mcq64yrhklidjkgwv6s1pda71g17yv")))))))

(define-public python-pillow-2.9
  (package


@@ 8148,27 8186,6 @@ PEP 8.")
(define-public python2-pyflakes
  (package-with-python2 python-pyflakes))

;; Flake8 2.6 requires an older version of pyflakes.
;; This should be removed ASAP.
(define-public python-pyflakes-1.2
  (package (inherit python-pyflakes)
    (version "1.2.3")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "pyflakes" version))
       (sha256
        (base32
         "17hkw8yd44cr8fz13phy4aih3r5j2p7ild4zlvqdh2c8dmiinjif"))))
    (arguments
     '(#:phases
       (modify-phases %standard-phases
         ;; This one test fails.
         (replace 'check
           (lambda _ (invoke "pytest" "-vv" "-k" "not test_f_string"))))))
    (native-inputs
     `(("python-pytest" ,python-pytest)))))

(define-public python-mccabe
  (package
    (name "python-mccabe")


@@ 8194,39 8211,6 @@ complexity of Python source code.")
(define-public python2-mccabe
  (package-with-python2 python-mccabe))

(define-public python-mccabe-0.2.1
  (package (inherit python-mccabe)
    (version "0.2.1")
    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "mccabe" version))
        (sha256
          (base32
            "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))

(define-public python2-mccabe-0.2.1
  (package-with-python2 python-mccabe-0.2.1))

;; Flake8 2.4.1 requires an older version of pep8.
;; This should be removed ASAP.
(define-public python-pep8-1.5.7
  (package (inherit python-pep8)
    (version "1.5.7")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "pep8" version))
       (sha256
        (base32
         "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
    (arguments
     ;; XXX Tests not compatible with Python 3.5.
     '(#:tests? #f))))

(define-public python2-pep8-1.5.7
  (package-with-python2 python-pep8-1.5.7))

(define-public python-flake8
  (package
    (name "python-flake8")


@@ 8273,40 8257,6 @@ complexity of Python source code.")
         ("python2-typing" ,python2-typing)
          ,@(package-propagated-inputs base))))))

;; python-hacking requires flake8 <2.7.0.
(define-public python-flake8-2.6
  (package
    (inherit python-flake8)
    (version "2.6.2")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "flake8" version))
              (sha256
               (base32
                "0y57hzal0j84dh9i1g1g6dc4aywvrnhy2fjmmbglpv5ajihxh713"))))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'use-later-pycodestyles
           (lambda __
             (substitute* '("flake8.egg-info/requires.txt"
                            "setup.py")
               (("pycodestyle >= 2.0, < 2.1")
                "pycodestyle >= 2.0"))
             #t))
         (delete 'check)
         (add-after 'install 'check
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (add-installed-pythonpath inputs outputs)
             (invoke "pytest" "-v")
             #t)))))
    (propagated-inputs
     `(("python-pep8" ,python-pep8)
       ("python-pycodestyle" ,python-pycodestyle)
       ("python-entrypoints" ,python-entrypoints)
       ("python-pyflakes" ,python-pyflakes-1.2)
       ("python-mccabe" ,python-mccabe)))))

(define-public python-flake8-bugbear
  (package
    (name "python-flake8-bugbear")


@@ 8734,6 8684,26 @@ should be stored on various operating systems.")
(define-public python2-appdirs
  (package-with-python2 python-appdirs))

(define-public python-gorilla
  (package
    (name "python-gorilla")
    (version "0.3.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "gorilla" version))
              (sha256
               (base32
                "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy"))))
    (build-system python-build-system)
    (home-page "https://github.com/christophercrouzet/gorilla")
    (synopsis "Convenient monkey patching with Python")
    (description
     "Gorilla is a Python library that provides a convenient approach to
monkey patching.  Monkey patching is the process of modifying module and
class attributes at runtime with the purpose of replacing or extending
third-party code.")
    (license license:expat)))

(define-public python-llfuse
  (package
    (name "python-llfuse")


@@ 10922,6 10892,73 @@ text.")
(define-public python2-colorama
  (package-with-python2 python-colorama))

(define-public python-moto
  (package
    (name "python-moto")
    ;; XXX: Use a pre-release for compatibility with latest botocore & friends.
    (version "1.3.16.dev134")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "moto" version))
              (sha256
               (base32
                "1pix0c7zszjwzfy88n1rpih9vkdm25nqcvz93z850xvgwb4v81bd"))))
    (build-system python-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (add-after 'unpack 'patch-hardcoded-executable-names
                    (lambda _
                      (substitute* "moto/batch/models.py"
                        (("/bin/sh")
                         (which "sh")))
                      (substitute* (find-files "tests" "\\.py$")
                        (("#!/bin/bash")
                         (string-append "#!" (which "bash"))))
                      #t))
                  (replace 'check
                    (lambda _
                      (setenv "PYTHONPATH" (string-append "./build/lib:"
                                                          (getenv "PYTHONPATH")))
                      (invoke "pytest" "-vv" "-m" "not network"
                              ;; These tests require Docker.
                              "-k" "not test_terminate_job \
and not test_invoke_function_from_sqs_exception"))))))
    (native-inputs
     `(("python-flask" ,python-flask)
       ("python-flask-cors" ,python-flask-cors)
       ("python-freezegun" ,python-freezegun)
       ("python-parameterized" ,python-parameterized)
       ("python-pytest" ,python-pytest)
       ("python-sure" ,python-sure)))
    (propagated-inputs
     `(("python-aws-xray-sdk" ,python-aws-xray-sdk)
       ("python-boto" ,python-boto)
       ("python-boto3" ,python-boto3)
       ("python-botocore" ,python-botocore)
       ("python-cfn-lint" ,python-cfn-lint)
       ("python-cryptography" ,python-cryptography)
       ("python-dateutil" ,python-dateutil)
       ("python-docker" ,python-docker)
       ("python-idna" ,python-idna)
       ("python-jinja2" ,python-jinja2)
       ("python-jose" ,python-jose)
       ("python-jsondiff" ,python-jsondiff)
       ("python-mock" ,python-mock)
       ("python-pytz" ,python-pytz)
       ("python-pyyaml" ,python-pyyaml)
       ("python-requests" ,python-requests)
       ("python-responses" ,python-responses)
       ("python-six" ,python-six)
       ("python-sshpubkeys" ,python-sshpubkeys)
       ("python-werkzeug" ,python-werkzeug)
       ("python-xmltodict" ,python-xmltodict)))
    (home-page "https://github.com/spulec/moto")
    (synopsis "Mock out the boto library")
    (description
     "@code{moto} is a library designed to easily mock out the
@code{boto} library.")
    (license license:asl2.0)))

(define-public python-rsa
  (package
   (name "python-rsa")


@@ 11077,32 11114,55 @@ document.")
manipulation library.")
    (license license:expat)))

(define-public python-boto
  (package
    (name "python-boto")
    (version "2.49.0")
    (source (origin
              (method url-fetch)
              (uri (pypi-uri "boto" version))
              (sha256
               (base32
                "0njy09c4wjx7ipxhwi6vv404nflyiasl78vwwxxpclnql903n3ga"))))
    (build-system python-build-system)
    (arguments
     ;; XXX: This package is unmaintained and has problems with newer versions
     ;; of Python 3 as well as test libraries.  'python-moto' still uses a
     ;; subset of this library, so keep it around for now, but disable tests.
     '(#:tests? #f))
    (propagated-inputs
     `(("python-paramiko" ,python-paramiko)
       ("python-requests" ,python-requests)))
    (home-page "https://github.com/boto/boto")
    (synopsis "Python interfaces for Amazon Web Services")
    (description
     "This package provides various facilities for interacting with Amazon
Web Services through Python.

This software is unmaintained, and new projects should use @code{boto3} instead.")
    (license license:expat)))

(define-public python-botocore
  ;; Note: When updating botocore, also make sure that boto3 and awscli
  ;; are compatible.
  (package
    (name "python-botocore")
    (version "1.15.26")
    (version "1.19.22")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "botocore" version))
       (sha256
        (base32
         "1a87pbwkk5vlwz92hy1wizfnpiwn11bhaicr6bmji1i5ybwdhnr8"))))
         "0iim86x7c6hqmvd61ygz6x6x9glnsfbnyzv2y67qjdcdx8jpkmw7"))))
    (build-system python-build-system)
    (arguments
     ;; FIXME: Many tests are failing.
     '(#:tests? #f))
    (propagated-inputs
     `(("python-dateutil" ,python-dateutil)
       ("python-docutils" ,python-docutils)
       ("python-jmespath" ,python-jmespath)))
    (native-inputs
     `(("python-mock" ,python-mock)
       ("python-nose" ,python-nose)
       ("behave" ,behave)
       ("python-tox" ,python-tox)
       ("python-urllib3" ,python-urllib3)
       ("python-wheel" ,python-wheel)))
       ("python-jmespath" ,python-jmespath)
       ("python-urllib3" ,python-urllib3)))
    (home-page "https://github.com/boto/botocore")
    (synopsis "Low-level interface to AWS")
    (description "Botocore is a Python library that provides a low-level


@@ 11112,6 11172,40 @@ interface to the Amazon Web Services (AWS) API.")
(define-public python2-botocore
  (package-with-python2 python-botocore))

(define-public python-boto3
  (package
    (name "python-boto3")
    (version "1.16.22")
    (home-page "https://github.com/boto/boto3")
    (source (origin
              (method git-fetch)
              (uri (git-reference (url home-page) (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0h20hgl4yfl58g75qhb6ibrdmzn47md3srgar7hask14cjmfhfy3"))))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'delete-network-tests
           ;; Deleting integration tests because they are trying to connect to AWS.
	   (lambda _
	     (delete-file-recursively "tests/integration")
	     #t)))))
    (build-system python-build-system)
    (native-inputs
     `(("python-nose" ,python-nose)
       ("python-mock" ,python-mock)))
    (propagated-inputs
     `(("python-botocore" ,python-botocore)
       ("python-jmespath" ,python-jmespath)
       ("python-s3transfer" ,python-s3transfer)))
    (synopsis "AWS SDK for Python")
    (description
     "Boto3 is a Python library for writing programs that interact with
@acronym{AWS,Amazon Web Services}.")
    (license license:asl2.0)))

(define-public python-pyfiglet
  (package
    (name "python-pyfiglet")


@@ 14719,22 14813,20 @@ converting text with ANSI color codes to HTML or LaTeX.")
(define-public python-ddt
  (package
    (name "python-ddt")
    (version "1.1.3")
    (version "1.4.1")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "ddt" version))
       (sha256
        (base32
         "1lw17420iimhghkgzgax85nn8d1an2d6k2cfvb7j5kwn2dqlr1vk"))))
         "1niqpzc26sxdbyi46r07n4pma5fjx6crww2539vpfmsf0w6yg585"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-mock" ,python-mock)
       ("python-nose" ,python-nose)))
     `(("python-pytest" ,python-pytest)))
    (propagated-inputs
     `(("python-six" ,python-six)
       ("python-pyyaml" ,python-pyyaml)))
    (home-page "https://github.com/txels/ddt")
     `(("python-pyyaml" ,python-pyyaml)))
    (home-page "https://github.com/datadriventests/ddt")
    (synopsis "Data-Driven Tests")
    (description
     "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by


@@ 14742,9 14834,6 @@ running it with different test data, and make it appear as multiple test
cases.")
    (license license:expat)))

(define-public python2-ddt
  (package-with-python2 python-ddt))

(define-public python-pycountry
  (package
    (name "python-pycountry")


@@ 16038,7 16127,7 @@ by path in a JSON document (see RFC 6901).")
        (base32
         "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr"))))
    (build-system python-build-system)
    (native-inputs
    (propagated-inputs
     `(("python-jsonpointer" ,python-jsonpointer)))
    (home-page "https://github.com/stefankoegl/python-json-patch")
    (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")

M gnu/packages/qt.scm => gnu/packages/qt.scm +1 -1
@@ 1566,7 1566,7 @@ message.")))
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/manisandro/qtspell.git")
             (url "https://github.com/manisandro/qtspell")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/raspberry-pi.scm => gnu/packages/raspberry-pi.scm +2 -2
@@ 76,7 76,7 @@ used in the Raspberry Pi")
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/RPi-Distro/raspi-gpio.git")
                      (url "https://github.com/RPi-Distro/raspi-gpio")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256


@@ 98,7 98,7 @@ used in the Raspberry Pi")
  (origin
   (method git-fetch)
   (uri (git-reference
         (url "https://github.com/librerpi/rpi-open-firmware.git")
         (url "https://github.com/librerpi/rpi-open-firmware")
         (commit "6be45466e0be437a1b0b3512a86f3d9627217006")))
   (file-name "rpi-open-firmware-checkout")
   (sha256

M gnu/packages/rdesktop.scm => gnu/packages/rdesktop.scm +1 -1
@@ 87,7 87,7 @@ to remotely control a user's Windows desktop.")
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "git://github.com/FreeRDP/FreeRDP.git")
             (url "git://github.com/FreeRDP/FreeRDP")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256

M gnu/packages/ruby.scm => gnu/packages/ruby.scm +15 -15
@@ 1349,7 1349,7 @@ Prawn module.")
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/prawnpdf/prawn-templates.git")
             (url "https://github.com/prawnpdf/prawn-templates")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256


@@ 1411,7 1411,7 @@ loader for the file type associated with a filename extension, and it augments
     (origin
       (method git-fetch)               ;no test suite in distributed gem
       (uri (git-reference
             (url "https://github.com/cjheath/treetop.git")
             (url "https://github.com/cjheath/treetop")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 1474,7 1474,7 @@ for performance optimizations in Ruby code.")
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/searls/gimme.git")
               (url "https://github.com/searls/gimme")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256


@@ 1535,7 1535,7 @@ only what they care about.")
     (origin
       (method git-fetch)               ;no test suite in distributed gem
       (uri (git-reference
             (url "https://github.com/testdouble/standard.git")
             (url "https://github.com/testdouble/standard")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 1587,7 1587,7 @@ to save time in the following ways:
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/wvanbergen/chunky_png.git")
             (url "https://github.com/wvanbergen/chunky_png")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 1705,7 1705,7 @@ web pages.")
       (origin
         (method git-fetch)      ;no test suite in the distributed gem
         (uri (git-reference
               (url "https://github.com/asciidoctor/asciidoctor-pdf.git")
               (url "https://github.com/asciidoctor/asciidoctor-pdf")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256


@@ 6824,7 6824,7 @@ inspired by the Sinatra microframework style of specifying actions:
     (origin
       (method git-fetch)               ;no test suite in distributed gem
       (uri (git-reference
             (url "https://github.com/rubocop-hq/rubocop-ast.git")
             (url "https://github.com/rubocop-hq/rubocop-ast")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 6868,7 6868,7 @@ by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
     (origin
       (method git-fetch)               ;no tests in distributed gem
       (uri (git-reference
             (url "https://github.com/ruby/rexml.git")
             (url "https://github.com/ruby/rexml")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 6919,7 6919,7 @@ better performance than @code{Regexp} and @code{String} methods from the
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/janosch-x/range_compressor.git")
              (url "https://github.com/janosch-x/range_compressor")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256


@@ 6952,7 6952,7 @@ following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
     (origin
       (method git-fetch)
       (uri (git-reference              ;no test suite in distributed gem
             (url "https://github.com/jaynetics/regexp_property_values.git")
             (url "https://github.com/jaynetics/regexp_property_values")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 6983,7 6983,7 @@ they match.")
     (origin
       (method git-fetch)               ;bin/test missing from gem
       (uri (git-reference
             (url "https://github.com/ammar/regexp_parser.git")
             (url "https://github.com/ammar/regexp_parser")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 7056,7 7056,7 @@ run.")
     (origin
       (method git-fetch)               ;no tests in distributed gem
       (uri (git-reference
             (url "https://github.com/rubocop-hq/rubocop.git")
             (url "https://github.com/rubocop-hq/rubocop")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 10536,7 10536,7 @@ custom checks.  This gem provides a set of additional checks.")
    (source (origin
              (method git-fetch)        ;no test in distributed gem archive
              (uri (git-reference
                    (url "https://github.com/yob/pdf-reader.git")
                    (url "https://github.com/yob/pdf-reader")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256


@@ 10576,7 10576,7 @@ access to the contents of a PDF file with a high degree of flexibility.")
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/prawnpdf/pdf-inspector.git")
                      (url "https://github.com/prawnpdf/pdf-inspector")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256


@@ 10639,7 10639,7 @@ functionality from Prawn.")
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/prawnpdf/prawn.git")
                      (url "https://github.com/prawnpdf/prawn")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256

M gnu/packages/rust-apps.scm => gnu/packages/rust-apps.scm +3 -15
@@ 73,13 73,7 @@
        ("rust-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.4))
       #:cargo-development-inputs
       (("rust-datetime" ,rust-datetime-0.4))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'dont-vendor-sources
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t))
         ;; Ignoring failing tests.
         ;; Reported in https://github.com/ogham/exa/issues/318
         (add-before 'check 'disable-failing-tests


@@ 393,18 387,12 @@ gitignore rules.")
        ("rust-lazy-static" ,rust-lazy-static-1)
        ("rust-regex" ,rust-regex-1)
        ("rust-serde-json" ,rust-serde-json-1)
        ("rust-tempfile" ,rust-tempfile-3))
       #:phases
       (modify-phases %standard-phases
         (add-after 'configure 'unvendor-libraries-from-crates
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((openssl (assoc-ref inputs "openssl")))
               (setenv "OPENSSL_DIR" openssl))
             #t)))))
        ("rust-tempfile" ,rust-tempfile-3))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libgit2" ,libgit2)
       ("openssl" ,openssl)
       ("pkg-config" ,pkg-config)
       ("zlib" ,zlib)))
    (home-page "https://tokei.rs")
    (synopsis "Count code, quickly")

M gnu/packages/scheme.scm => gnu/packages/scheme.scm +1 -1
@@ 408,7 408,7 @@ implementation techniques and as an expository tool.")
                          version "/racket-" version "-src.tgz")))
              (sha256
               (base32
                "18pz6gjzqy6a62xkcmjanhr7kgxpvpmc0blrk4igz8ldcybz44if"))
                "0gmp2ahmfd97nn9bwpfx9lznjmjkd042slnrrbdmyh59cqh98y2m"))
              (patches (search-patches
                        "racket-store-checksum-override.patch"))))
    (build-system gnu-build-system)

M gnu/packages/shellutils.scm => gnu/packages/shellutils.scm +2 -2
@@ 278,7 278,7 @@ below the current cursor position, scrolling the screen if necessary.")
(define-public hstr
  (package
    (name "hstr")
    (version "2.2")
    (version "2.3")
    (source (origin
              (method git-fetch)
              (uri (git-reference


@@ 287,7 287,7 @@ below the current cursor position, scrolling the screen if necessary.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "07fkilqlkpygvf9kvxyvl58g3lfq0bwwdp3wczy4hk8qlbhmgihn"))))
                "1chmfdi1dwg3sarzd01nqa82g65q7wdr6hrnj96l75vikwsg986y"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases

M gnu/packages/simulation.scm => gnu/packages/simulation.scm +7 -11
@@ 684,17 684,13 @@ user interface to the FEniCS core components and external libraries.")
             (with-directory-excursion "test"
               ;; Note: The test test_snes_set_from_options() in the file
               ;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
               (and (invoke "py.test" "unit" "--ignore"
                            "unit/nls/test_PETScSNES_solver.py")
                    (invoke "mpirun" "-np" "3" "python" "-B" "-m"
                            "pytest" "unit" "--ignore"
                            "unit/nls/test_PETScSNES_solver.py")))
             (with-directory-excursion "demo"
               ;; Check demos.
               (invoke "python" "generate-demo-files.py")
               (and (invoke "python" "-m" "pytest" "-v" "test.py")
                    (invoke "python" "-m" "pytest" "-v" "test.py"
                            "--mpiexec=mpiexec" "--num-proc=3")))
               ;; Limit the number of jobs to 3 as 500 MiB of memory is used
               ;; per process.
               (invoke "mpirun" "-np" (number->string
                                       (min 3 (parallel-job-count)))
                       "python" "-B" "-m"
                       "pytest" "unit" "--ignore"
                       "unit/nls/test_PETScSNES_solver.py"))
             #t))
         (add-after 'install 'install-demo-files
           (lambda* (#:key outputs #:allow-other-keys)

M gnu/packages/storage.scm => gnu/packages/storage.scm +2 -2
@@ 55,14 55,14 @@
(define-public ceph
  (package
    (name "ceph")
    (version "14.2.13")
    (version "14.2.14")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://download.ceph.com/tarballs/ceph-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "0gaxjs909wf00nvh4z53cin89dw67v1q47b2jvi3iibynhkahkg1"))
                "10ma8qimgspz1q3lqb4yl990l9xa87iwd0r4dxl5xg89w6j7qwix"))
              (patches
               (search-patches "ceph-disable-cpu-optimizations.patch"))
              (modules '((guix build utils)))

M gnu/packages/syncthing.scm => gnu/packages/syncthing.scm +1 -1
@@ 195,7 195,7 @@ Protocol.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/syncthing/syncthing-gtk.git")
                    (url "https://github.com/syncthing/syncthing-gtk")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256

M gnu/packages/tls.scm => gnu/packages/tls.scm +7 -1
@@ 352,7 352,13 @@ required structures.")
                           ((string-prefix? "arm" target)
                            "linux-armv4")
                           ((string-prefix? "aarch64" target)
                            "linux-aarch64")))
                            "linux-aarch64")
                           ((string-prefix? "powerpc64le" target)
                            "linux-ppc64le")
                           ((string-prefix? "powerpc64" target)
                            "linux-ppc64")
                           ((string-prefix? "powerpc" target)
                            "linux-ppc")))
                 #t)))
           '())
        (replace 'configure

M gnu/packages/video.scm => gnu/packages/video.scm +9 -9
@@ 286,7 286,7 @@ video and audio streams from a DVD.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/OpenVisualCloud/SVT-HEVC.git")
         (url "https://github.com/OpenVisualCloud/SVT-HEVC")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 314,7 314,7 @@ efficiency.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/Intel-Media-SDK/MediaSDK.git")
         (url "https://github.com/Intel-Media-SDK/MediaSDK")
         (commit (string-append "intel-" name "-" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 490,7 490,7 @@ and mmsh protocols.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/farindk/libvideogfx.git")
         (url "https://github.com/farindk/libvideogfx")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 534,7 534,7 @@ applications by providing high-level classes for commonly required tasks.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/strukturag/libde265.git")
         (url "https://github.com/strukturag/libde265")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256


@@ 575,7 575,7 @@ other software.")
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/libts/tslib.git")
         (url "https://github.com/libts/tslib")
         (commit version)))
       (file-name (git-file-name name version))
       (sha256


@@ 2188,14 2188,14 @@ To load this plugin, specify the following option when starting mpv:
(define-public youtube-dl
  (package
    (name "youtube-dl")
    (version "2020.11.17")
    (version "2020.11.21.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://youtube-dl.org/downloads/latest/"
                                  "youtube-dl-" version ".tar.gz"))
              (sha256
               (base32
                "0b0vsmvnm2jn1k66jmymzly0nb34nk79z97msns0sw0cqhbld1b2"))))
                "0a9livib328z5j3kfndxys2193dvfs4hh38krx0idg0k26xp7cfl"))))
    (build-system python-build-system)
    (arguments
     ;; The problem here is that the directory for the man page and completion


@@ 3799,7 3799,7 @@ iTunes-style metadata.")
(define-public livemedia-utils
  (package
    (name "livemedia-utils")
    (version "2020.11.05")
    (version "2020.11.19")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 3807,7 3807,7 @@ iTunes-style metadata.")
                    version ".tar.gz"))
              (sha256
               (base32
                "1dx5imjil5yiya5dqlvbqkvzgic5pybsfilx5jz1cpi1znkzpgc9"))))
                "16w6yxdbmjdhvffnrb752dn4llf3l0wb00dgdkyia0vqsv2qqyn7"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f                      ; no tests

M gnu/packages/vim.scm => gnu/packages/vim.scm +32 -12
@@ 70,7 70,7 @@
(define-public vim
  (package
    (name "vim")
    (version "8.2.1980")
    (version "8.2.2017")
    (source (origin
             (method git-fetch)
             (uri (git-reference


@@ 79,7 79,7 @@
             (file-name (git-file-name name version))
             (sha256
              (base32
               "1l1bb4lhlivgvj4jaxkibdkcg6rh1gk80d6ni41kphyrir7xahja"))))
               "0ad0c4wv8zf28wns06k82c19rs63ilsphnglajhgw5j2a1aqplyn"))))
    (build-system gnu-build-system)
    (arguments
     `(#:test-target "test"


@@ 110,7 110,7 @@
             ;; Make sure the TERM environment variable is set for the tests
             (setenv "TERM" "xterm")
             #t))
         (add-before 'check 'skip-failing-tests
         (add-before 'check 'skip-or-fix-failing-tests
           (lambda _
             ;; This test assumes that PID 1 is run as root and that the user
             ;; running the test suite does not have permission to kill(1, 0)


@@ 121,16 121,36 @@
             (substitute* "src/testdir/test_swap.vim"
               (("if !IsRoot\\(\\)") "if 0"))

             ;; These tests check how the terminal looks after executing some
             ;; actions.  The path of the bash binary is shown, which results in
             ;; a difference being detected.  Patching the expected result is
             ;; non-trivial due to the special format used, so skip the test.
             (substitute* "src/testdir/test_terminal.vim"
               ((".*Test_terminal_postponed_scrollback.*" line)
                (string-append line "return\n")))
             ;; These tests compares output against a golden ‘…/|b|i|n|/|s|h…’
             ;; literal.  We need to match that and substitute a similarly
             ;; ‘spliced’ path to ‘sh’ in the store, truncated to the last
             ;; 44 (spliced: 88) or so characters.
             ;; Two of the tests we simply skip instead of patching the screen dump.
             (substitute* "src/testdir/test_popupwin.vim"
               ((".*Test_popup_drag_termwin.*" line)
                (string-append line "return\n")))
               ((".*Test_popupwin_term_0[1|2].*") ""))
             ;; We replace the external program call (!) with a scroll-back (<)
             ;; symbol and blindly fix some other differences based on error output.
             (let ((splice (lambda (s separator)
                               (string-join (map string (string->list s))
                                            separator))))
               (substitute* "src/testdir/dumps/Test_terminal_from_cmd.dump"
                 (((splice "/bin/sh" "\\|"))
                  (splice (string-take-right (which "sh") 44) "|"))
                 (("^\\|!") "|<")
                 (("@37") ""))
               (substitute* '("src/testdir/dumps/Test_terminal_scrollback_1.dump"
                              "src/testdir/dumps/Test_terminal_scrollback_2.dump")
                 (((splice "/bin/sh" "\\|"))
                  (splice (string-take-right (which "sh") 61) "|"))
                 (("^\\|!") "|<")
                 ((" @55") " @1"))
               (substitute* '("src/testdir/dumps/Test_terminal_scrollback_3.dump"
                              "src/testdir/dumps/Test_popupwin_term_03.dump"
                              "src/testdir/dumps/Test_popupwin_term_04.dump")
                 (((splice "/bin/sh" "\\|"))
                  (splice (string-take-right (which "sh") 62) "|"))
                 (("^\\|!") "|<")
                 (("\\]\\| @56") "]| @1")))
             #t)))))
    (inputs
     `(("gawk" ,gawk)

M gnu/packages/web.scm => gnu/packages/web.scm +2 -2
@@ 1424,7 1424,7 @@ used to validate and fix HTML data.")
(define-public esbuild
  (package
    (name "esbuild")
    (version "0.8.7")
    (version "0.8.11")
    (source
     (origin
       (method git-fetch)


@@ 1434,7 1434,7 @@ used to validate and fix HTML data.")
       (file-name (git-file-name name version))
       (sha256
        (base32
         "14x95dmh4jrfp93p7ln0cv917qxll04sqzlpf9rl6w01fifr2s75"))
         "18cp68jds8cq58hpcwh85cgvh5vlkjfdcpwqp5h754065j896rr3"))
       (modules '((guix build utils)))
       (snippet
        '(begin

M gnu/packages/xfce.scm => gnu/packages/xfce.scm +1 -0
@@ 787,6 787,7 @@ on the screen.")
                                          "/tmp/final.jpg")
                                  (copy-file "/tmp/final.jpg" image))
                                '(;; "backgrounds/xfce-blue.jpg"
                                  "backgrounds/xfce-stripes.png"
                                  "backgrounds/xfce-teal.jpg"))
                      #t)))


M gnu/packages/xml.scm => gnu/packages/xml.scm +13 -4
@@ 25,6 25,7 @@
;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 84,7 85,7 @@
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/hughsie/libxmlb.git")
         (url "https://github.com/hughsie/libxmlb")
         (commit version)))
       (file-name (git-file-name name version))
       (sha256


@@ 218,7 219,7 @@ project (but it is usable outside of the Gnome platform).")
    (source (origin
             (method git-fetch)
             (uri (git-reference
                   (url "https://github.com/libxmlplusplus/libxmlplusplus.git")
                   (url "https://github.com/libxmlplusplus/libxmlplusplus")
                   (commit version)))
             (file-name (git-file-name name version))
             (sha256


@@ 278,7 279,7 @@ It uses libxml2 to access the XML files.")
    (source (origin
             (method git-fetch)
             (uri (git-reference
                   (url "https://github.com/libxmlplusplus/libxmlplusplus.git")
                   (url "https://github.com/libxmlplusplus/libxmlplusplus")
                   (commit version)))
             (file-name (git-file-name name version))
             (sha256


@@ 1260,7 1261,15 @@ C++ programming language.")
           (substitute* "Makefile"
             (("^examples/schema1\\\\") "\\")
             (("^examples/valid1\\\\") "\\"))
           #t)))))
           #t))
       (add-after 'install 'symlink-xmlstarlet
         (lambda* (#:key outputs #:allow-other-keys)
           ;; Other distros usually either rename or symlink the `xml' binary
           ;; as `xmlstarlet', let's do it as well for compatibility.
           (let* ((out (assoc-ref outputs "out"))
                  (bin (string-append out "/bin")))
             (symlink "xml" (string-append bin "/xmlstarlet"))
             #t))))))
   (inputs
    `(("libxslt" ,libxslt)
      ("libxml2" ,libxml2)))

M gnu/packages/xorg.scm => gnu/packages/xorg.scm +3 -4
@@ 6270,16 6270,15 @@ basic eye-candy effects.")
(define-public xpra
  (package
    (name "xpra")
    (version "4.0.4")
    (version "4.0.5")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.xpra.org/src/xpra-"
                           version ".tar.xz"))
       (sha256
        (base32 "10alqdfmgml9ixdi1nyd9xlw8a5q0j8m2sv4g9p83pd6z1a0rpv2"))
       (patches (search-patches "xpra-4.0.1-systemd-run.patch"
                                "xpra-4.0.4-norequests.patch"))))
        (base32 "11ml66z8vbc0fa567kkmp2j20l5l60aflnkrz5ay8arw3w92nmnz"))
       (patches (search-patches "xpra-4.0.1-systemd-run.patch"))))
    (build-system python-build-system)
    ;; see also http://xpra.org/trac/wiki/Dependencies
    (inputs `(

M gnu/services/base.scm => gnu/services/base.scm +2 -1
@@ 62,7 62,8 @@
  #:use-module (srfi srfi-26)
  #:use-module (ice-9 match)
  #:use-module (ice-9 format)
  #:re-export (user-processes-service-type)       ;backwards compatibility
  #:re-export (user-processes-service-type        ;backwards compatibility
               %default-substitute-urls)
  #:export (fstab-service-type
            root-file-system-service
            file-system-service-type

M gnu/services/cups.scm => gnu/services/cups.scm +2 -1
@@ 482,7 482,8 @@ programs.")
   (package cups)
   "The CUPS package.")
  (extensions
   (package-list (list cups-filters escpr hplip-minimal foomatic-filters))
   (package-list (list cups-filters epson-inkjet-printer-escpr
                       foomatic-filters hplip-minimal splix))
   "Drivers and other extensions to the CUPS package.")
  (files-configuration
   (files-configuration (files-configuration))

M gnu/services/sddm.scm => gnu/services/sddm.scm +1 -1
@@ 169,7 169,7 @@ Relogin="              (if (sddm-configuration-relogin? config)

  (list (shepherd-service
         (documentation "SDDM display manager.")
         (requirement '(user-processes))
         (requirement '(user-processes elogind))
         (provision '(xorg-server display-manager))
         (start #~(make-forkexec-constructor #$sddm-command))
         (stop #~(make-kill-destructor)))))

A gnu/system/images/pinebook-pro.scm => gnu/system/images/pinebook-pro.scm +66 -0
@@ 0,0 1,66 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu system images pinebook-pro)
  #:use-module (gnu bootloader)
  #:use-module (gnu bootloader u-boot)
  #:use-module (gnu image)
  #:use-module (gnu packages linux)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu system)
  #:use-module (gnu system file-systems)
  #:use-module (gnu system image)
  #:use-module (srfi srfi-26)
  #:export (pinebook-pro-barebones-os
            pinebook-pro-image-type
            pinebook-pro-barebones-raw-image))

(define pinebook-pro-barebones-os
  (operating-system
    (host-name "viso")
    (timezone "Europe/Paris")
    (locale "en_US.utf8")
    (bootloader (bootloader-configuration
                 (bootloader u-boot-pinebook-pro-rk3399-bootloader)
                 (target "/dev/vda")))
    (initrd-modules '())
    (kernel linux-libre-arm64-generic)
    (file-systems (cons (file-system
                          (device (file-system-label "my-root"))
                          (mount-point "/")
                          (type "ext4"))
                        %base-file-systems))
    (services (cons (service agetty-service-type
                             (agetty-configuration
                              (extra-options '("-L")) ; no carrier detect
                              (baud-rate "115200")
                              (term "vt100")
                              (tty "ttyS0")))
                    %base-services))))

(define pinebook-pro-image-type
  (image-type
   (name 'pinebook-pro-raw)
   (constructor (cut image-with-os arm64-disk-image <>))))

(define pinebook-pro-barebones-raw-image
  (image
   (inherit
    (os->image pinebook-pro-barebones-os #:type pinebook-pro-image-type))
   (name 'pinebook-pro-barebones-raw-image)))

M guix/build/cargo-build-system.scm => guix/build/cargo-build-system.scm +7 -0
@@ 123,6 123,13 @@ directory = '" port)
  (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
  (setenv "LIBGIT2_SYS_USE_PKG_CONFIG" "1")
  (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
  (when (assoc-ref inputs "openssl")
    (setenv "OPENSSL_DIR" (assoc-ref inputs "openssl")))
  (when (assoc-ref inputs "gettext")
    (setenv "GETTEXT_SYSTEM" (assoc-ref inputs "gettext")))
  (when (assoc-ref inputs "clang")
    (setenv "LIBCLANG_PATH"
            (string-append (assoc-ref inputs "clang") "/lib")))

  ;; We don't use the Cargo.lock file to determine the package versions we use
  ;; during building, and in any case if one is not present it is created

M guix/cpio.scm => guix/cpio.scm +30 -3
@@ 27,6 27,7 @@
            make-cpio-header
            file->cpio-header
            file->cpio-header*
            special-file->cpio-header*
            write-cpio-header
            read-cpio-header



@@ 132,9 133,10 @@
    (%make-cpio-header MAGIC
                       inode mode uid gid
                       nlink mtime
                       (if (= C_ISDIR (logand mode C_FMT))
                           0
                           size)
                       (if (or (= C_ISLNK (logand mode C_FMT))
                               (= C_ISREG (logand mode C_FMT)))
                           size
                           0)
                       major minor rmajor rminor
                       (+ name-size 1)              ;include trailing zero
                       0)))                          ;checksum


@@ 146,6 148,8 @@ denotes, similar to 'stat:type'."
    (cond ((= C_ISREG fmt) 'regular)
          ((= C_ISDIR fmt) 'directory)
          ((= C_ISLNK fmt) 'symlink)
          ((= C_ISBLK fmt) 'block-special)
          ((= C_ISCHR fmt) 'char-special)
          (else
           (error "unsupported file type" mode)))))



@@ 187,6 191,25 @@ produced in a deterministic fashion."
                      #:size (stat:size st)
                      #:name-size (string-length file-name))))

(define* (special-file->cpio-header* file
                                     device-type
                                     device-major
                                     device-minor
                                     permission-bits
                                     #:optional (file-name file))
  "Create a character or block device header.

DEVICE-TYPE is either 'char-special or 'block-special.

The number of hard links is assumed to be 1."
  (make-cpio-header #:mode (logior (match device-type
                                    ('block-special C_ISBLK)
                                    ('char-special C_ISCHR))
                                    permission-bits)
                    #:nlink 1
                    #:rdev (device-number device-major device-minor)
                    #:name-size (string-length file-name)))

(define %trailer
  "TRAILER!!!")



@@ 233,6 256,10 @@ produces with the '-H newc' option."
           (put-string port target)))
        ((directory)
         #t)
        ((block-special)
         #t)
        ((char-special)
         #t)
        (else
         (error "file type not supported")))


M guix/import/hackage.scm => guix/import/hackage.scm +9 -5
@@ 40,7 40,8 @@
  #:use-module (guix upstream)
  #:use-module (guix packages)
  #:use-module ((guix utils) #:select (call-with-temporary-output-file))
  #:export (hackage->guix-package
  #:export (%hackage-url
            hackage->guix-package
            hackage-recursive-import
            %hackage-updater



@@ 92,20 93,23 @@

(define package-name-prefix "ghc-")

(define %hackage-url
  (make-parameter "https://hackage.haskell.org"))

(define (hackage-source-url name version)
  "Given a Hackage package NAME and VERSION, return a url to the source
tarball."
  (string-append "https://hackage.haskell.org/package/" name
                 "/" name "-" version ".tar.gz"))
  (string-append (%hackage-url) "/package/"
                 name "/" name "-" version ".tar.gz"))

(define* (hackage-cabal-url name #:optional version)
  "Given a Hackage package NAME and VERSION, return a url to the corresponding
.cabal file on Hackage.  If VERSION is #f or missing, the url for the latest
version is returned."
  (if version
      (string-append "https://hackage.haskell.org/package/"
      (string-append (%hackage-url) "/package/"
                     name "-" version "/" name ".cabal")
      (string-append "https://hackage.haskell.org/package/"
      (string-append (%hackage-url) "/package/"
                     name "/" name ".cabal")))

(define (hackage-name->package-name name)

M guix/import/stackage.scm => guix/import/stackage.scm +5 -3
@@ 30,7 30,8 @@
  #:use-module (guix memoization)
  #:use-module (guix packages)
  #:use-module (guix upstream)
  #:export (stackage->guix-package
  #:export (%stackage-url
            stackage->guix-package
            stackage-recursive-import
            %stackage-updater))



@@ 39,7 40,8 @@
;;; Stackage info fetcher and access functions
;;;

(define %stackage-url "https://www.stackage.org")
(define %stackage-url
  (make-parameter "https://www.stackage.org"))

;; Latest LTS version compatible with GHC 8.6.5.
(define %default-lts-version "14.27")


@@ 55,7 57,7 @@
  ;; "Retrieve the information about the LTS Stackage release VERSION."
  (memoize
   (lambda* (#:optional (version ""))
     (let* ((url (string-append %stackage-url
     (let* ((url (string-append (%stackage-url)
                                "/lts-" (if (string-null? version)
                                            %default-lts-version
                                            version)))

M guix/lint.scm => guix/lint.scm +82 -1
@@ 10,6 10,7 @@
;;; Copyright © 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 35,6 36,8 @@
  #:use-module (guix http-client)
  #:use-module (guix packages)
  #:use-module (guix i18n)
  #:use-module ((guix gexp)
                #:select (local-file? local-file-absolute-file-name))
  #:use-module (guix licenses)
  #:use-module (guix records)
  #:use-module (guix grafts)


@@ 50,6 53,7 @@
  #:use-module ((guix swh) #:hide (origin?))
  #:autoload   (guix git-download) (git-reference?
                                    git-reference-url git-reference-commit)
  #:use-module (guix import stackage)
  #:use-module (ice-9 match)
  #:use-module (ice-9 regex)
  #:use-module (ice-9 format)


@@ 73,6 77,7 @@
            check-inputs-should-be-native
            check-inputs-should-not-be-an-input-at-all
            check-patch-file-names
            check-patch-headers
            check-synopsis-style
            check-derivation
            check-home-page


@@ 87,6 92,7 @@
            check-formatting
            check-archival
            check-profile-collisions
            check-haskell-stackage

            lint-warning
            lint-warning?


@@ 712,6 718,54 @@ patch could not be found."
                     (_ #f))
                   patches)))))

(define (check-patch-headers package)
  "Check that PACKAGE's patches start with a comment.  Return a list of
warnings."
  (define (blank? str)
    (string-every char-set:blank str))

  (define (patch-header-warnings patch)
    (call-with-input-file patch
      (lambda (port)
        ;; Read from PORT until a non-blank line is found or EOF is reached.
        (let loop ()
          (let ((line (read-line port)))
            (cond ((eof-object? line)
                   (list (make-warning package
                                       (G_ "~a: empty patch")
                                       (list (basename patch))
                                       #:field 'source)))
                  ((blank? line)
                   (loop))
                  ((or (string-prefix? "--- " line)
                       (string-prefix? "+++ " line))
                   (list (make-warning package
                                       (G_ "~a: patch lacks comment and \
upstream status")
                                       (list (basename patch))
                                       #:field 'source)))
                  (else
                   '())))))))

  (guard (c ((formatted-message? c)               ;raised by 'search-patch'
             (list (%make-warning package
                                  (formatted-message-string c)
                                  (formatted-message-arguments c)
                                  #:field 'source))))
   (let ((patches (if (origin? (package-source package))
                      (origin-patches (package-source package))
                      '())))
     (append-map (lambda (patch)
                   ;; Dismiss PATCH if it's an origin or similar.
                   (cond ((string? patch)
                          (patch-header-warnings patch))
                         ((local-file? patch)
                          (patch-header-warnings
                           (local-file-absolute-file-name patch)))
                         (else
                          '())))
                 patches))))

(define (escape-quotes str)
  "Replace any quote character in STR by an escaped quote character."
  (list->string


@@ 1234,6 1288,25 @@ Heritage")
              '()
              (apply throw key args))))))))

(define (check-haskell-stackage package)
  "Check whether PACKAGE is a Haskell package ahead of the current
Stackage LTS version."
  (match (with-networking-fail-safe
          (format #f (G_ "while retrieving upstream info for '~a'")
                  (package-name package))
          #f
          (package-latest-release package (list %stackage-updater)))
    ((? upstream-source? source)
     (if (version>? (package-version package)
                    (upstream-source-version source))
         (list
          (make-warning package
                        (G_ "ahead of Stackage LTS version ~a")
                        (list (upstream-source-version source))
                        #:field 'version))
         '()))
    (#f '())))


;;;
;;; Source code formatting.


@@ 1418,6 1491,10 @@ or a list thereof")
    (description "Validate file names and availability of patches")
    (check       check-patch-file-names))
   (lint-checker
    (name        'patch-headers)
    (description "Validate patch headers")
    (check       check-patch-headers))
   (lint-checker
     (name        'formatting)
     (description "Look for formatting issues in the source")
     (check       check-formatting))))


@@ 1456,7 1533,11 @@ or a list thereof")
   (lint-checker
     (name        'archival)
     (description "Ensure source code archival on Software Heritage")
     (check       check-archival))))
     (check       check-archival))
   (lint-checker
     (name        'haskell-stackage)
     (description "Ensure Haskell packages use Stackage LTS versions")
     (check       check-haskell-stackage))))

(define %all-checkers
  (append %local-checkers

M guix/scripts/build.scm => guix/scripts/build.scm +3 -10
@@ 182,8 182,6 @@ options handled by 'set-build-options-from-command-line', and listed in
  (display (G_ "
  -M, --max-jobs=N       allow at most N build jobs"))
  (display (G_ "
      --help-transform   list package transformation options not shown here"))
  (display (G_ "
      --debug=LEVEL      produce debugging output at LEVEL")))

(define (set-build-options-from-command-line store opts)


@@ 319,14 317,7 @@ use '--no-offload' instead~%")))
                    (if c
                        (apply values (alist-cons 'max-jobs c result) rest)
                        (leave (G_ "not a number: '~a' option argument: ~a~%")
                               name arg)))))
        (option '("help-transform") #f #f
                (lambda _
                  (format #t
                          (G_ "Available package transformation options:~%"))
                  (show-transformation-options-help)
                  (newline)
                  (exit 0)))))
                               name arg)))))))


;;;


@@ 383,6 374,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"))
  (newline)
  (show-build-options-help)
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -h, --help             display this help and exit"))
  (display (G_ "

M guix/scripts/environment.scm => guix/scripts/environment.scm +2 -0
@@ 180,6 180,8 @@ COMMAND or an interactive shell in that environment.\n"))
  (newline)
  (show-build-options-help)
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -h, --help             display this help and exit"))
  (display (G_ "

M guix/scripts/graph.scm => guix/scripts/graph.scm +4 -1
@@ 35,7 35,8 @@
  #:use-module ((guix diagnostics)
                #:select (location-file formatted-message))
  #:use-module ((guix transformations)
                #:select (options->transformation
                #:select (show-transformation-options-help
                          options->transformation
                          %transformation-options))
  #:use-module ((guix scripts build)
                #:select (%standard-build-options))


@@ 546,6 547,8 @@ Emit a representation of the dependency graph of PACKAGE...\n"))
  (display (G_ "
  -L, --load-path=DIR    prepend DIR to the package module search path"))
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -h, --help             display this help and exit"))
  (display (G_ "

M guix/scripts/install.scm => guix/scripts/install.scm +2 -0
@@ 39,6 39,8 @@ This is an alias for 'guix package -i'.\n"))
  (newline)
  (show-build-options-help)
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -h, --help             display this help and exit"))
  (display (G_ "

M guix/scripts/lint.scm => guix/scripts/lint.scm +10 -5
@@ 10,6 10,7 @@
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019, 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 47,11 48,15 @@
  ;; provided MESSAGE.
  (for-each
   (lambda (lint-warning)
     (let ((package (lint-warning-package lint-warning))
           (loc     (lint-warning-location lint-warning)))
       (info loc (G_ "~a@~a: ~a~%")
             (package-name package) (package-version package)
             (lint-warning-message lint-warning))))
     (let* ((package (lint-warning-package lint-warning))
            (name    (package-name package))
            (version (package-version package))
            (loc     (lint-warning-location lint-warning))
            (message (lint-warning-message lint-warning)))
       (parameterize
           ((guix-warning-port (current-output-port)))
         (info loc (G_ "~a@~a: ~a~%")
               name version message))))
   warnings))

(define* (run-checkers package checkers #:key store)

M guix/scripts/pack.scm => guix/scripts/pack.scm +2 -0
@@ 1067,6 1067,8 @@ last resort for relocation."
Create a bundle of PACKAGE.\n"))
  (show-build-options-help)
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -f, --format=FORMAT    build a pack in the given FORMAT"))
  (display (G_ "

M guix/scripts/package.scm => guix/scripts/package.scm +2 -0
@@ 398,6 398,8 @@ Install, remove, or upgrade packages in a single transaction.\n"))
  (newline)
  (show-build-options-help)
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -h, --help             display this help and exit"))
  (display (G_ "

M guix/scripts/publish.scm => guix/scripts/publish.scm +5 -1
@@ 63,10 63,14 @@
  #:use-module ((guix build utils)
                #:select (dump-port mkdir-p find-files))
  #:use-module ((guix build syscalls) #:select (set-thread-name))
  #:export (%public-key
  #:export (%default-gzip-compression

            %public-key
            %private-key
            signed-string

            open-server-socket
            run-publish-server
            guix-publish))

(define (show-help)

M guix/scripts/upgrade.scm => guix/scripts/upgrade.scm +2 -0
@@ 42,6 42,8 @@ This is an alias for 'guix package -u'.\n"))
  (newline)
  (show-build-options-help)
  (newline)
  (show-transformation-options-help)
  (newline)
  (display (G_ "
  -h, --help             display this help and exit"))
  (display (G_ "

M guix/store.scm => guix/store.scm +6 -0
@@ 113,6 113,7 @@
            build
            query-failed-paths
            clear-failed-paths
            ensure-path
            add-temp-root
            add-indirect-root
            add-permanent-root


@@ 1397,6 1398,11 @@ When a handler is installed with 'with-build-handler', it is called any time
                                         (message "unsupported build mode")
                                         (status  1))))))))))))

(define-operation (ensure-path (store-path path))
  "Make PATH a temporary root for the duration of the current session.
Return #t."
  boolean)

(define-operation (add-temp-root (store-path path))
  "Make PATH a temporary root for the duration of the current session.
Return #t."

M guix/transformations.scm => guix/transformations.scm +14 -2
@@ 508,9 508,17 @@ to the same package but with #:strip-binaries? #f in its 'arguments' field."
          (option '("with-debug-info") #t #f
                  (parser 'with-debug-info))
          (option '("without-tests") #t #f
                  (parser 'without-tests)))))
                  (parser 'without-tests))

(define (show-transformation-options-help)
          (option '("help-transform") #f #f
                  (lambda _
                    (format #t
                            (G_ "Available package transformation options:~%"))
                    (show-transformation-options-help/detailed)
                    (newline)
                    (exit 0))))))

(define (show-transformation-options-help/detailed)
  (display (G_ "
      --with-source=[PACKAGE=]SOURCE
                         use SOURCE when building the corresponding package"))


@@ 539,6 547,10 @@ to the same package but with #:strip-binaries? #f in its 'arguments' field."
      --without-tests=PACKAGE
                         build PACKAGE without running its tests")))

(define (show-transformation-options-help)
  "Show basic help for package transformation options."
  (display (G_ "
      --help-transform   list package transformation options not shown here")))

(define (options->transformation opts)
  "Return a procedure that, when passed an object to build (package,

M po/doc/guix-manual.fr.po => po/doc/guix-manual.fr.po +23 -24
@@ 41,7 41,7 @@ msgstr ""
"Project-Id-Version: guix-manual 1.2.0-pre3\n"
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
"POT-Creation-Date: 2020-11-05 17:27+0100\n"
"PO-Revision-Date: 2020-11-09 00:09+0100\n"
"PO-Revision-Date: 2020-11-20 14:37+0100\n"
"Last-Translator: Julien Lepiller <julien@lepiller.eu>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"


@@ 658,7 658,7 @@ msgstr "La distribution GNU est jeune et vos paquets préférés peuvent manquer
#. type: Plain text
#: doc/contributing.texi:339
msgid "Free software packages are usually distributed in the form of @dfn{source code tarballs}---typically @file{tar.gz} files that contain all the source files.  Adding a package to the distribution means essentially two things: adding a @dfn{recipe} that describes how to build the package, including a list of other packages required to build it, and adding @dfn{package metadata} along with that recipe, such as a description and licensing information."
msgstr "Les paquets de logiciels libres sont habituellement distribués sous forme @dfn{d'archives de sources} — typiquement des fichiers @file{.tar.gz} contenant tous les fichiers sources.  Ajouter un paquet à la distribution signifie essentiellement deux choses : ajouter une @dfn{recette} qui décrit comment construire le paquet, avec une liste d'autres paquets requis pour le construire, et ajouter des @dfn{métadonnées de paquet} avec la recette, comme une description et une licence."
msgstr "Les paquets de logiciels libres sont habituellement distribués sous forme @dfn{d'archives de sources} — typiquement des fichiers @file{.tar.gz} contenant tous les fichiers sources.  Ajouter un paquet à la distribution signifie en substance deux choses : ajouter une @dfn{recette} qui décrit comment construire le paquet, avec une liste d'autres paquets requis pour le construire, et ajouter des @dfn{métadonnées de paquet} avec la recette, comme une description et une licence."

#. type: Plain text
#: doc/contributing.texi:348


@@ 10698,7 10698,7 @@ msgstr "Le format nar est comparable dans l'esprit au format \"tar\", mais avec 
#. type: Plain text
#: doc/guix.texi:4747
msgid "That nar bundle format is essentially the concatenation of zero or more nars along with metadata for each store item it contains: its file name, references, corresponding derivation, and a digital signature."
msgstr "Ce format nar bundle est essentiellement la concaténation de zéro ou plus de nar avec des métadonnées pour chaque élément du dépôt qu'il contient : son nom de fichier, ses références, la dérivation correspondante et une signature numérique."
msgstr "Ce format de lot nar est surtout la concaténation de zéro, un ou plusieurs nar avec des métadonnées pour chaque élément du dépôt qu'il contient : son nom de fichier, ses références, la dérivation correspondante et une signature numérique."

#. type: Plain text
#: doc/guix.texi:4753


@@ 11226,12 11226,9 @@ msgstr ""
" (version 0)\n"
" (dependencies\n"
"  (channel\n"
"   (name une-collection)\n"
"   (url \"https://exemple.org/premiere-collection.git\"))\n"
"  (channel\n"
"   (name une-autre-collection)\n"
"   (url \"https://exemple.org/deuxieme-collection.git\")\n"
"   (branch \"testing\"))))\n"
"   (name 'some-collection)\n"
"   (url \"https://example.org/first-collection.git\")\n"
"\n"

#. type: lisp
#: doc/guix.texi:5151


@@ 11249,7 11246,7 @@ msgid ""
"   (url \"https://example.org/second-collection.git\")\n"
"   (branch \"testing\"))))\n"
msgstr ""
"   ;; La partie \"introduction\" ci-dessous est facultative : vous la\n"
"   ;; La partie « introduction » ci-dessous est facultative : vous la\n"
"   ;; fournissez pour les dépendances qui peuvent être authentifiées.\n"
"   (introduction\n"
"    (channel-introduction\n"


@@ 12361,7 12358,7 @@ msgstr "Produire des @dfn{binaires repositionnables} — c.-à-d.@: des binaires
#. type: table
#: doc/guix.texi:5890
msgid "When this option is passed once, the resulting binaries require support for @dfn{user namespaces} in the kernel Linux; when passed @emph{twice}@footnote{Here's a trick to memorize it: @code{-RR}, which adds PRoot support, can be thought of as the abbreviation of ``Really Relocatable''.  Neat, isn't it?}, relocatable binaries fall to back to other techniques if user namespaces are unavailable, and essentially work anywhere---see below for the implications."
msgstr "Lorsque vous passez cette option une fois, les binaires qui en résultent demandent le support des @dfn{espaces de nom utilisateurs} dans le noyau Linux ; lorsque vous la passez @emph{deux fois}@footnote{Il y a une astuce pour s'en souvenir : on peut envisager @code{-RR}, qui ajoute le support PRoot, comme étant l'abréviation de « Réellement Repositionnable ».  Pas mal, hein ?}, les binaires repositionnables utilisent PRoot si les espaces de noms ne sont pas utilisables, et ça fonctionne partout — voir plus bas pour comprendre les implications."
msgstr "Lorsque vous passez cette option une fois, les binaires qui en résultent demandent le support des @dfn{espaces de nom utilisateurs} dans le noyau Linux ; lorsque vous la passez @emph{deux fois}@footnote{Il y a une astuce pour s'en souvenir : on peut envisager @code{-RR}, qui ajoute le support PRoot, comme étant l'abréviation de « Réellement Repositionnable ».  Pas mal, hein ?}, les binaires repositionnables utilisent PRoot si les espaces de noms ne sont pas utilisables, et ça fonctionne à peu près partout — voir plus bas pour comprendre les implications."

#. type: table
#: doc/guix.texi:5892


@@ 12875,7 12872,7 @@ msgstr "En ajoutant le répertoire contenant vos modules de paquets au chemin de
#. type: enumerate
#: doc/guix.texi:6264
msgid "By defining a @dfn{channel} and configuring @command{guix pull} so that it pulls from it.  A channel is essentially a Git repository containing package modules.  @xref{Channels}, for more information on how to define and use channels."
msgstr "En définissant un @dfn{canal} et en configurant @command{guix pull} pour qu'il l'utilise.  Un canal est essentiellement un dépôt Git contenant des modules de paquets.  @xref{Channels}, pour plus d'informations sur comment définir et utiliser des canaux."
msgstr "En définissant un @dfn{canal} et en configurant @command{guix pull} pour qu'il l'utilise.  Un canal est en substance un dépôt Git contenant des modules de paquets.  @xref{Channels}, pour plus d'informations sur comment définir et utiliser des canaux."

#. type: Plain text
#: doc/guix.texi:6267


@@ 12968,7 12965,7 @@ msgstr ""
#. type: Plain text
#: doc/guix.texi:6325
msgid "Without being a Scheme expert, the reader may have guessed the meaning of the various fields here.  This expression binds the variable @code{hello} to a @code{<package>} object, which is essentially a record (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}).  This package object can be inspected using procedures found in the @code{(guix packages)} module; for instance, @code{(package-name hello)} returns---surprise!---@code{\"hello\"}."
msgstr "Sans être un expert Scheme, le lecteur peut comprendre la signification des différents champs présents.  Cette expression lie la variable @code{hello} à un objet @code{<package>}, qui est essentiellement un enregistrement (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}).  On peut inspecter cet objet de paquet avec les procédures qui se trouvent dans le module @code{(guix packages)} ; par exemple, @code{(package-name hello)} renvoie — oh surprise ! — @code{\"hello\"}."
msgstr "Sans être un expert Scheme, le lecteur peut comprendre la signification des différents champs présents.  Cette expression lie la variable @code{hello} à un objet @code{<package>}, qui est en substance un enregistrement (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}).  On peut inspecter cet objet de paquet avec les procédures qui se trouvent dans le module @code{(guix packages)} ; par exemple, @code{(package-name hello)} renvoie — oh surprise ! — @code{\"hello\"}."

#. type: Plain text
#: doc/guix.texi:6329


@@ 13959,7 13956,7 @@ msgstr ""
#. type: Plain text
#: doc/guix.texi:6888
msgid "The example above corresponds to what the @option{--with-source} package transformation option does.  Essentially @code{hello-2.2} preserves all the fields of @code{hello}, except @code{version} and @code{source}, which it overrides.  Note that the original @code{hello} variable is still there, in the @code{(gnu packages base)} module, unchanged.  When you define a custom package like this, you are really @emph{adding} a new package definition; the original one remains available."
msgstr "L'exemple ci-dessus correspond à ce que l'option de transformation des paquets @option{--with-source} fait.  Essentiellement, @code{hello-2.2} préserve tous les champs de @code{hello}, sauf @code{version} et @code{source}, qu'il remplace.  Remarquez que la variable @code{hello} originale est toujours là, dans le module @code{(gnu packages base)}, et n'est pas modifiée.  Lorsque vous définissez un paquet personnalisé comme ceci, vous @emph{ajoutez} en fait une nouvelle définition de paquet ; la version originale est toujours disponible."
msgstr "L'exemple ci-dessus correspond à ce que l'option de transformation des paquets @option{--with-source} fait.  En substance, @code{hello-2.2} préserve tous les champs de @code{hello}, sauf @code{version} et @code{source}, qu'il remplace.  Remarquez que la variable @code{hello} originale est toujours là, dans le module @code{(gnu packages base)}, et n'est pas modifiée.  Lorsque vous définissez un paquet personnalisé comme ceci, vous @emph{ajoutez} en fait une nouvelle définition de paquet ; la version originale est toujours disponible."

#. type: Plain text
#: doc/guix.texi:6894


@@ 14997,7 14994,7 @@ msgstr "{Variable Scheme} julia-build-system"
#. type: defvr
#: doc/guix.texi:7550
msgid "This variable is exported by @code{(guix build-system julia)}.  It implements the build procedure used by @uref{https://julialang.org/, julia} packages, which essentially is similar to running @samp{julia -e 'using Pkg; Pkg.add(package)'} in an environment where @env{JULIA_LOAD_PATH} contains the paths to all Julia package inputs.  Tests are run with @code{Pkg.test}."
msgstr "Cette variable est exportée par @code{(guix build-system julia)}.  Elle implémente la procédure de compilation utilisée par les paquets @uref{https://julialang.org/, julia}, qui est essentiellement similaire à l'exécution de @samp{julia -e 'using Pkg ; Pkg.add(package)'} dans un environnement où @env{JULIA_LOAD_PATH} contient les chemins de toutes les entrées des paquets Julia. Les tests sont effectués avec @code{Pkg.test}."
msgstr "Cette variable est exportée par @code{(guix build-system julia)}.  Elle implémente la procédure de compilation utilisée par les paquets @uref{https://julialang.org/, julia}, qui est globalement similaire à l'exécution de @samp{julia -e 'using Pkg ; Pkg.add(package)'} dans un environnement où @env{JULIA_LOAD_PATH} contient les chemins de toutes les entrées des paquets Julia. Les tests sont effectués avec @code{Pkg.test}."

#. type: defvr
#: doc/guix.texi:7553


@@ 15221,7 15218,7 @@ msgstr "{Variable Scheme} r-build-system"
#. type: defvr
#: doc/guix.texi:7753
msgid "This variable is exported by @code{(guix build-system r)}.  It implements the build procedure used by @uref{https://r-project.org, R} packages, which essentially is little more than running @samp{R CMD INSTALL --library=/gnu/store/@dots{}} in an environment where @env{R_LIBS_SITE} contains the paths to all R package inputs.  Tests are run after installation using the R function @code{tools::testInstalledPackage}."
msgstr "Cette variable est exportée par @code{(guix build-system r)}.  Elle implémente la procédure de compilation utilisée par les paquets @uref{https://r-project.org, R}, qui consiste essentiellement à exécuter @samp{R CMD INSTALL --library=/gnu/store/@dots{}} dans un environnement où @env{R_LIBS_SITE} contient les chemins de toutes les entrées des paquets R.  Les tests sont exécutés après l'installation en utilisant la fonction R @code{tools::testInstalledPackage}."
msgstr "Cette variable est exportée par @code{(guix build-system r)}.  Elle implémente la procédure de compilation utilisée par les paquets @uref{https://r-project.org, R}, qui consiste en substance à exécuter @samp{R CMD INSTALL --library=/gnu/store/@dots{}} dans un environnement où @env{R_LIBS_SITE} contient les chemins de toutes les entrées des paquets R.  Les tests sont exécutés après l'installation en utilisant la fonction R @code{tools::testInstalledPackage}."

#. type: defvr
#: doc/guix.texi:7755


@@ 18835,7 18832,7 @@ msgstr "Produire une sortie de débogage qui provient du démon de construction.
#. type: Plain text
#: doc/guix.texi:10046
msgid "Behind the scenes, @command{guix build} is essentially an interface to the @code{package-derivation} procedure of the @code{(guix packages)} module, and to the @code{build-derivations} procedure of the @code{(guix derivations)} module."
msgstr "Sous le capot, @command{guix build} est surtout un interface à la procédure @code{package-derivation} du module @code{(guix packages)}, et à la procédure @code{build-derivations} du module @code{(guix derivations)}."
msgstr "Sous le capot, @command{guix build} est surtout une interface à la procédure @code{package-derivation} du module @code{(guix packages)}, et à la procédure @code{build-derivations} du module @code{(guix derivations)}."

#. type: Plain text
#: doc/guix.texi:10050


@@ 20766,7 20763,7 @@ (gnu packages commencement) glibc-final)'\n"
#. type: table
#: doc/guix.texi:11317
msgid "This command lists the dependents of the ``final'' libc (essentially all the packages)."
msgstr "Cette commande liste les dépendances de la libc « finale » (essentiellement tous les paquets)."
msgstr "Cette commande liste les dépendances de la libc « finale » (presque tous les paquets)."

#. type: item
#: doc/guix.texi:11318


@@ 23567,17 23564,19 @@ msgid ""
"\n"
msgstr ""
"(define %my-services\n"
"  ;; Ma propre liste de services.\n"
"  ;; ma propre liste de services.\n"
"  (modify-services %base-services\n"
"    (guix-service-type config =>\n"
"                       (guix-configuration\n"
"                        (inherit config)\n"
"                        (use-substitutes? #f)\n"
"                        (extra-options '(\"--gc-keep-derivations\"))))\n"
"                        ;; Récupérer les substituts depuis example.org.\n"
"                        (substitute-urls\n"
"                          (list \"https://example.org/guix\"\n"
"                                \"https://ci.guix.gnu.org\"))))\n"
"    (mingetty-service-type config =>\n"
"                           (mingetty-configuration\n"
"                            (inherit config)))))\n"
"                            ;; Automatially log in as \"guest\".\n"
"                            (inherit config)\n"
"                            ;; Connexion automatique en tant que « guest ».\n"
"                            (auto-login \"guest\")))))\n"
"\n"



@@ 25029,7 25028,7 @@ msgstr ""
"                          \"audio\"   ;carte son\n"
"                          \"video\"   ;périphériques réseaux comme les webcams\n"
"                          \"cdrom\")) ;le bon vieux CD-ROM\n"
"  (comment \"Bob's sister\")\n"
"  (comment \"Bob's sister\"))\n"

#. type: Plain text
#: doc/guix.texi:13865

M tests/lint.scm => tests/lint.scm +88 -0
@@ 7,6 7,7 @@
;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 36,6 37,10 @@
  #:use-module (guix lint)
  #:use-module (guix ui)
  #:use-module (guix swh)
  #:use-module ((guix gexp) #:select (local-file))
  #:use-module ((guix utils) #:select (call-with-temporary-directory))
  #:use-module ((guix import hackage) #:select (%hackage-url))
  #:use-module ((guix import stackage) #:select (%stackage-url))
  #:use-module (gnu packages)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages pkg-config)


@@ 344,6 349,60 @@
                  (list (search-patch "this-patch-does-not-exist!"))))))))
     (check-patch-file-names pkg))))

(test-assert "patch headers: no warnings"
  (call-with-temporary-directory
   (lambda (directory)
     (call-with-output-file (string-append directory "/t.patch")
       (lambda (port)
         (display "This is a patch.\n\n--- a\n+++ b\n"
                  port)))

     (parameterize ((%patch-path (list directory)))
       (let ((pkg (dummy-package "x"
                    (source (dummy-origin
                             (patches (search-patches "t.patch")))))))
         (null? (check-patch-headers pkg)))))))

(test-equal "patch headers: missing comment"
  "t.patch: patch lacks comment and upstream status"
  (call-with-temporary-directory
   (lambda (directory)
     (call-with-output-file (string-append directory "/t.patch")
       (lambda (port)
         (display "\n--- a\n+++ b\n"
                  port)))

     (parameterize ((%patch-path (list directory)))
       (let ((pkg (dummy-package "x"
                    (source (dummy-origin
                             (patches (search-patches "t.patch")))))))
         (single-lint-warning-message (check-patch-headers pkg)))))))

(test-equal "patch headers: empty"
  "t.patch: empty patch"
  (call-with-temporary-directory
   (lambda (directory)
     (call-with-output-file (string-append directory "/t.patch")
       (const #t))

     (parameterize ((%patch-path '()))
       (let ((pkg (dummy-package "x"
                    (source (dummy-origin
                             (patches
                              (list (local-file
                                     (string-append directory
                                                    "/t.patch")))))))))
         (single-lint-warning-message (check-patch-headers pkg)))))))

(test-equal "patch headers: patch not found"
  "does-not-exist.patch: patch not found\n"
  (parameterize ((%patch-path '()))
    (let ((pkg (dummy-package "x"
                 (source (dummy-origin
                          (patches
                           (search-patches "does-not-exist.patch")))))))
      (single-lint-warning-message (check-patch-headers pkg)))))

(test-equal "derivation: invalid arguments"
  "failed to create x86_64-linux derivation: (wrong-type-arg \"map\" \"Wrong type argument: ~S\" (invalid-module) ())"
  (match (let ((pkg (dummy-package "x"


@@ 1001,6 1060,35 @@
    (string-contains (single-lint-warning-message warnings)
                     "rate limit reached")))

(test-skip (if (http-server-can-listen?) 0 1))
(test-assert "haskell-stackage"
  (let* ((stackage (string-append "{ \"packages\": [{"
                                  "    \"name\":\"x\","
                                  "    \"version\":\"1.0\" }]}"))
         (packages (map (lambda (version)
                          (dummy-package
                           (string-append "ghc-x")
                           (version version)
                           (source
                            (dummy-origin
                             (method url-fetch)
                             (uri (string-append
                                   "https://hackage.haskell.org/package/"
                                   "x-" version "/x-" version ".tar.gz"))))))
                        '("0.9" "1.0" "2.0")))
         (warnings (pk (with-http-server `((200 ,stackage) ; memoized
                                           (200 "name: x\nversion: 1.0\n")
                                           (200 "name: x\nversion: 1.0\n")
                                           (200 "name: x\nversion: 1.0\n"))
                         (parameterize ((%hackage-url (%local-url))
                                        (%stackage-url (%local-url)))
                           (append-map check-haskell-stackage packages))))))
    (match warnings
      (((? lint-warning? warning))
       (and (string=? (package-version (lint-warning-package warning)) "2.0")
            (string-contains (lint-warning-message warning)
                             "ahead of Stackage LTS version"))))))

(test-end "lint")

;; Local Variables:

M tests/store-database.scm => tests/store-database.scm +25 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 21,6 21,8 @@
  #:use-module (guix store)
  #:use-module (guix store database)
  #:use-module ((guix utils) #:select (call-with-temporary-output-file))
  #:use-module ((guix build utils)
                #:select (mkdir-p delete-file-recursively))
  #:use-module (srfi srfi-26)
  #:use-module (srfi srfi-64))



@@ 55,6 57,28 @@
           (list (stat:mtime (lstat file))
                 (stat:mtime (lstat ref)))))))

(test-equal "register-path, directory"
  '(1 1 1)
  (let ((file (string-append (%store-prefix) "/" (make-string 32 #\f)
                             "-fake-directory")))
    (when (valid-path? %store file)
      (delete-paths %store (list file)))
    (false-if-exception (delete-file-recursively file))

    (let ((drv (string-append file ".drv")))
      (mkdir-p (string-append file "/a"))
      (call-with-output-file (string-append file "/a/b")
        (const #t))
      (register-path file #:deriver drv)

      (and (valid-path? %store file)
           (null? (references %store file))
           (null? (valid-derivers %store file))
           (null? (referrers %store file))
           (list (stat:mtime (lstat file))
                 (stat:mtime (lstat (string-append file "/a")))
                 (stat:mtime (lstat (string-append file "/a/b"))))))))

(test-equal "new database"
  (list 1 2)
  (call-with-temporary-output-file