From 473d63607291ab71ee7fa917bb0bbc2b6f4d530a Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 03:50:11 +0200 Subject: [PATCH 001/408] gnu: emacs-evil-multiedit: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-evil-multiedit): Enable tests. [inputs]: Add emacs-ert-runner. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8f866fbc28..3cb4366925 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -13923,6 +13923,18 @@ describing the key binding changes.") (propagated-inputs `(("emacs-evil" ,emacs-evil) ("emacs-iedit" ,emacs-iedit))) + (native-inputs + `(("emacs-ert-runner" ,emacs-ert-runner))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("@cask exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/hlissner/evil-multiedit") (synopsis "Multiple cursors for Evil mode") From 9b4ea95bbeb44db7a823f54f56da99aa3ca3422f Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 04:44:28 +0200 Subject: [PATCH 002/408] gnu: emacs-evil-owl: Update to 0.0.1-3.24e5f43. * gnu/packages/emacs-xyz.scm (emacs-evil-owl): Update to 0.0.1-3.24e5f43. [source]: Enable tests. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 3cb4366925..8d65955a7b 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -6736,8 +6736,8 @@ end of a line and increment or decrement it.") (license license:gpl3+)))) (define-public emacs-evil-owl - (let ((commit "e8fe5b2f745e36db04cb71eb689bf91c5409614f") - (revision "2")) + (let ((commit "24c5f43df375194386344e69bc720ea3986c9510") + (revision "3")) (package (name "emacs-evil-owl") (version (git-version "0.0.1" revision commit)) @@ -6750,10 +6750,13 @@ end of a line and increment or decrement it.") (file-name (git-file-name name version)) (sha256 (base32 - "1g7kplna62f271135mnjdbvxk2ayx7m4gvd6l86d2394alx16nhq")))) + "0bqzch14whlmrcasakah3psrzswvkzd7mmi8hx5s64kfp29wbdhi")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/mamapanda/evil-owl") (synopsis "Preview candidates when using Evil registers and marks") (description From 8deabdba58e0236ef03d2cefe69e342e6c4d4d29 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 08:31:01 +0200 Subject: [PATCH 003/408] gnu: emacs-elisp-demos: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-elisp-demos): Enable tests. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8d65955a7b..4673967bd1 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -3091,7 +3091,10 @@ for Flow files.") (base32 "0lybadq66bl4snkwph9i1y0qxln29wyfjn222ii3nfwany28cj66")))) (build-system emacs-build-system) - (arguments '(#:include '("\\.el$" "\\.org$"))) + (arguments + `(#:include '("\\.el$" "\\.org$") + #:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/xuchunyang/elisp-demos/") (synopsis "Enhance @code{*Help*} buffers with additional examples") (description From a8afeb058e79214a9360862dab8861768b838e28 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 08:47:14 +0200 Subject: [PATCH 004/408] gnu: emacs-evil-expat: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-evil-expat): Enable tests. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 4673967bd1..8bbaf48c21 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -6915,6 +6915,9 @@ aligning text objects based on separators.") "0872ix682hkdz0k8pn6sb54rqkx00rz5fxpd5j2snx406yagpaxz")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/edkolev/evil-expat") (synopsis "Extra @code{ex} commands for @code{evil-mode}") (description From 1acf8e7ea8b742f468cff641ec33ce1ced2cafe0 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 08:43:42 +0200 Subject: [PATCH 005/408] gnu: emacs-evil-exchange: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-evil-exchange): Enable tests. [native-inputs]: Add emacs-ert-runner. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8bbaf48c21..b547f89459 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -6786,6 +6786,17 @@ a popup window for previewing candidates.") "0bjpn4yqig17ddym6wqq5fm1b294q74hzcbj9a6gs97fqiwf88xa")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (native-inputs `(("emacs-ert-runner" ,emacs-ert-runner))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("cask exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/Dewdrops/evil-exchange") (synopsis "Exchange text easily within Evil") (description From d6ac801591c595f209ee0a893f60406177fd1355 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 08:55:32 +0200 Subject: [PATCH 006/408] gnu: emacs-sudo-edit: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-sudo-edit): Enable tests. [native-inputs]: Add emacs-undercover. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index b547f89459..bf6818425c 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -3129,11 +3129,10 @@ completion of relevant keywords.") (define-public emacs-sudo-edit (let ((commit "cc3d478937b1accd38742bfceba92af02ee9357d") - (version "0.1.0") (revision "6")) (package (name "emacs-sudo-edit") - (version (git-version version revision commit)) + (version (git-version "0.1.0" revision commit)) (source (origin (method git-fetch) @@ -3145,6 +3144,18 @@ completion of relevant keywords.") (base32 "1qv58x5j5a3v1s2ylhck1ykbfclq0mbi0gsvaql3nyv8cxazqlwl")))) (build-system emacs-build-system) + (native-inputs + `(("emacs-undercover" ,emacs-undercover))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("\\$\\(CASK\\) exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/nflath/sudo-edit/") (synopsis "Open files as another user") (description From 4278537e85b11807765136f19b43534413fca173 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 17:55:09 +0200 Subject: [PATCH 007/408] gnu: emacs-org-ql: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-org-ql): Enable tests. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index bf6818425c..04e92b7cbf 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -11345,6 +11345,11 @@ timestamps by providing a @code{ts} struct.") ("emacs-ts" ,emacs-ts) ("emacs-org" ,emacs-org) ("emacs-dash" ,emacs-dash))) + (native-inputs + `(("emacs-buttercup" ,emacs-buttercup))) + (arguments + `(#:tests? #t + #:test-command '("buttercup" "-L" "."))) (home-page "https://github.com/alphapapa/org-ql/") (synopsis "Query language for Org buffers") (description "This package provides a Lispy query language for Org From a9ca0325b55419d625ee461962528aa0522d473b Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 3 Sep 2019 22:55:54 +0200 Subject: [PATCH 008/408] gnu: emacs-evil-traces: Enable tests. * gnu/packages/emacs-xyz.scm (emacs-evil-traces): Enable tests. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 04e92b7cbf..5b4b2be904 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -17597,6 +17597,17 @@ corresponding Evil keys.") (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-shell + ;; Setting the SHELL environment variable is required for the tests + ;; to find sh. + (lambda _ + (setenv "SHELL" (which "sh")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) (home-page "https://github.com/mamapanda/evil-traces") (synopsis "Visual hints for @code{evil-ex}") (description "This package adds visual hints to certain @code{ex} From 141d8a896fd4806be9a127f3b314407c535dd27e Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Thu, 5 Sep 2019 23:43:24 +0200 Subject: [PATCH 009/408] gnu: emacs-flycheck-haskell: Include .hs file. * gnu/packages/emacs-xyz.scm (emacs-flycheck-haskell): Include package file. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 5b4b2be904..abc9a5ba36 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -16594,11 +16594,10 @@ unescaping of quotes.") (define-public emacs-flycheck-haskell (let ((commit "32ddff87165a7d3a35e7318bee997b5b4bd41278") - (version "0.8") - (revision "79")) + (revision "2")) (package (name "emacs-flycheck-haskell") - (version (git-version version revision commit)) + (version (git-version "0.8" revision commit)) (source (origin (method git-fetch) @@ -16616,6 +16615,8 @@ unescaping of quotes.") ("emacs-flycheck" ,emacs-flycheck) ("emacs-haskell-mode" ,emacs-haskell-mode) ("emacs-let-alist" ,emacs-let-alist))) + (arguments + `(#:include '("\\.el$" "\\.hs$"))) (home-page "https://github.com/flycheck/flycheck-haskell") (synopsis "Flycheck for Haskell") (description "This package configures syntax-checking for Haskell From 14c9c456c740f125a843b11303e311e4ab311f07 Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Tue, 13 Aug 2019 21:16:14 +0200 Subject: [PATCH 010/408] gnu: emacs-robe: Update to 0.8.2. * gnu/packages/emacs-xyz.scm (emacs-robe): Update to 0.8.2. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index abc9a5ba36..ab3365591f 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2855,7 +2855,7 @@ mode-line.") (define-public emacs-robe (package (name "emacs-robe") - (version "0.8.1") + (version "0.8.2") (source (origin (method git-fetch) @@ -2864,7 +2864,7 @@ mode-line.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0ll7ivxqnglfb0i70ly6qq2yfw9cyi3vq3lmj4s6h6c1c7rm3gcq")))) + (base32 "0qw18wi54yg971n4wnjqkd8lqj5lbs9ra8bvmngif2bzhqlfdsbn")))) (build-system emacs-build-system) (arguments '(#:include (cons "^lib\\/" %default-include))) From 43931643a68363e1494a00227d3292806a9a7b4a Mon Sep 17 00:00:00 2001 From: Brian Leung Date: Wed, 4 Sep 2019 12:01:37 +0200 Subject: [PATCH 011/408] gnu: Add emacs-leetcode. * gnu/packages/emacs-xyz.scm (emacs-leetcode): New variable. Signed-off-by: Oleg Pykhalov --- gnu/packages/emacs-xyz.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index ab3365591f..0ca1af9d05 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -15853,6 +15853,31 @@ buffers, etc. It also has plug-ins to help your Emacs life.") programs can use this table component for the application UI.") (license license:gpl3+)))) +(define-public emacs-leetcode + (let ((commit "8624496af9e105c3e07d88844b37ede87540d604") + (revision "1")) + (package + (name "emacs-leetcode") + (version (git-version "0" "1" commit)) + (home-page "https://github.com/ginqi7/leetcode-emacs.git") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ginqi7/leetcode-emacs") + (commit commit))) + (sha256 + (base32 + "11pp7ydlmwrv7djf9mwk4xzn295xbmdnj5x13bfj5yjpjr89p531")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-names" ,emacs-names) + ("emacs-ctable" ,emacs-ctable))) + (synopsis "Solve and submit LeetCode problems from within Emacs") + (description "This package provides an Emacs interface to LeetCode +allowing users to log in and solve problems of their choice using Emacs.") + (license license:unlicense)))) + (define-public emacs-epc (let ((commit "e1bfa5ca163273859336e3cc89b4b6460f7f8cda")) (package From 3b38bf141a464e1bb370af7d2b2651d1efb29781 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 6 Sep 2019 12:23:57 +0200 Subject: [PATCH 012/408] =?UTF-8?q?services:=20Add=20=E2=80=98/usr/bin/env?= =?UTF-8?q?=E2=80=99=20special=20file.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/base.scm (%base-services): Add ‘/usr/bin/env‘ to special-files-service-type. --- gnu/services/base.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index dcb7278f0f..a6439568f7 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2018 Mathieu Othacehe ;;; Copyright © 2019 Efraim Flashner +;;; Copyright © 2019 Tobias Geerinckx-Rice ;;; Copyright © 2019 John Soo ;;; ;;; This file is part of GNU Guix. @@ -41,9 +42,9 @@ #:use-module (gnu packages admin) #:use-module ((gnu packages linux) #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools)) - #:use-module ((gnu packages base) - #:select (canonical-package glibc glibc-utf8-locales)) #:use-module (gnu packages bash) + #:use-module ((gnu packages base) + #:select (canonical-package coreutils glibc glibc-utf8-locales)) #:use-module (gnu packages package-management) #:use-module ((gnu packages gnupg) #:select (guile-gcrypt)) #:use-module (gnu packages linux) @@ -2425,6 +2426,9 @@ to handle." (service special-files-service-type `(("/bin/sh" ,(file-append (canonical-package bash) - "/bin/sh")))))) + "/bin/sh")) + "/bin/sh")) + ("/usr/bin/env" ,(file-append (canonical-package coreutils) + "/usr/bin/env")))))) ;;; base.scm ends here From e15f55208f8d0f93e075f681e36e86c65baa4405 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 6 Sep 2019 13:52:33 +0300 Subject: [PATCH 013/408] services: Fix typo. This is a follow-up to 3b38bf141a464e1bb370af7d2b2651d1efb29781. * gnu/services/base.scm (%base-services): Remove duplicated line. --- gnu/services/base.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index a6439568f7..97c53eeaf3 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -2427,7 +2427,6 @@ to handle." (service special-files-service-type `(("/bin/sh" ,(file-append (canonical-package bash) "/bin/sh")) - "/bin/sh")) ("/usr/bin/env" ,(file-append (canonical-package coreutils) "/usr/bin/env")))))) From 5ef82ec8baff1e4f172b0cfbe46298547c47cef3 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:02:33 +0300 Subject: [PATCH 014/408] gnu: Add rust-rand. * gnu/packages/crates-io.scm (rust-rand): New variable. --- gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ebd3d4ded1..0ad3de9921 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1514,6 +1514,32 @@ to write.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) +(define-public rust-rand + (package + (name "rust-rand") + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "rand" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1gfgnqfj2pyh27dcb720jpawskllwnbvxh816ddyykv269xz8ml3")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-fuchsia-zircon" ,rust-fuchsia-zircon) + ("rust-libc" ,rust-libc) + ("rust-winapi" ,rust-winapi)))) + (home-page "https://crates.io/crates/rand") + (synopsis "Random number generators and other randomness functionality") + (description + "Rand provides utilities to generate random numbers, to convert them to +useful types and distributions, and some randomness-related algorithms.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-rawpointer (package (name "rust-rawpointer") From 2f8e436a29d9a64828d23c79e80d2c563fc3ca19 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:32:38 +0300 Subject: [PATCH 015/408] gnu: Add rust-rand-0.3. * gnu/packages/crates-io.scm (rust-rand-0.3): New variable. --- gnu/packages/crates-io.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 0ad3de9921..8fb2f87da8 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1540,6 +1540,24 @@ useful types and distributions, and some randomness-related algorithms.") (license (list license:asl2.0 license:expat)))) +(define-public rust-rand-0.3 + (package + (inherit rust-rand) + (name "rust-rand") + (version "0.3.23") + (source + (origin + (method url-fetch) + (uri (crate-uri "rand" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0v679h38pjjqj5h4md7v2slsvj6686qgcn7p9fbw3h43iwnk1b34")))) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc) + ("rust-rand" ,rust-rand)))))) + (define-public rust-rawpointer (package (name "rust-rawpointer") From f81d58b8b3735282114e2a5c29b123e08afa7520 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:35:58 +0300 Subject: [PATCH 016/408] gnu: Add rust-tempdir. * gnu/packages/crates-io.scm (rust-tempdir): New variable. --- gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 8fb2f87da8..262c1e4116 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2102,6 +2102,32 @@ and Jaro-Winkler.") "This package provides helper test traits for synstructure doctests.") (license license:expat))) +(define-public rust-tempdir + (package + (name "rust-tempdir") + (version "0.3.7") + (source + (origin + (method url-fetch) + (uri (crate-uri "tempdir" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1n5n86zxpgd85y0mswrp5cfdisizq2rv3la906g6ipyc03xvbwhm")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-rand" ,rust-rand) + ("rust-remove-dir-all" ,rust-remove-dir-all)))) + (home-page + "https://github.com/rust-lang/tempdir") + (synopsis "Temporary directory management for Rust") + (description + "This package provides a library for managing a temporary directory and +deleting all contents when it's dropped.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-termcolor (package (name "rust-termcolor") From 90c48ddd76a8c2926d271d68199bb96537a483de Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:39:10 +0300 Subject: [PATCH 017/408] gnu: Add rust-adler32. * gnu/packages/crates-io.scm (rust-adler32): New variable. --- gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 262c1e4116..753b144c46 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -30,6 +30,30 @@ ;;; Please: Try to add new module packages in alphabetic order. ;;; +(define-public rust-adler32 + (package + (name "rust-adler32") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "adler32" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0p7fxlnks9l7p7rwfqi7aqgnk2bps5zc0rjiw00mdw19nnbjjlky")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs (("rust-rand" ,rust-rand)))) + (home-page "https://github.com/remram44/adler32-rs") + (synopsis "Implementation of the Adler32 rolling hash algorithm") + (description + "This library is an implementation of the Adler32 rolling hash algorithm in +the Rust programming language.") + (license (list license:bsd-3 + license:zlib)))) + (define-public rust-antidote (package (name "rust-antidote") From c988c9bb8588fecba465f4d689b44082e493e662 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:41:58 +0300 Subject: [PATCH 018/408] gnu: Add rust-base-x. * gnu/packages/crates-io.scm (rust-base-x): New variable. --- gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 753b144c46..1c607161c9 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -121,6 +121,29 @@ support.") (license (list license:asl2.0 license:expat)))) +(define-public rust-base-x + (package + (name "rust-base-x") + (version "0.2.5") + (source + (origin + (method url-fetch) + (uri (crate-uri "base-x" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0hv4y5cdhv6bk0ghk2434clw8v4mmk5cc9lsh6qrpri92zlfmx3n")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-bencher" ,rust-bencher) + ("rust-json" ,rust-json) + ("rust-rand" ,rust-rand-0.3)))) + (home-page "https://github.com/OrKoN/base-x-rs") + (synopsis "Encode/decode any base") + (description "This library provides for encoding and decoding any base.") + (license license:expat))) + (define-public rust-bencher (package (name "rust-bencher") From c2c0ac145183742ed04d58c0dc893886a5b07575 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:45:15 +0300 Subject: [PATCH 019/408] gnu: Add rust-rustc-serialize. * gnu/packages/crates-io.scm (rust-rustc-serialize): New variable. --- gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 1c607161c9..29d8da51d4 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1728,6 +1728,32 @@ system calls.") (license (list license:asl2.0 license:expat)))) +(define-public rust-rustc-serialize + (package + (name "rust-rustc-serialize") + (version "0.3.24") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustc-serialize" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1nkg3vasg7nk80ffkazizgiyv3hb1l9g3d8h17cajbkx538jiwfw")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-rand" ,rust-rand-0.3)))) + (home-page "https://github.com/rust-lang-deprecated/rustc-serialize") + (synopsis "Generic serialization/deserialization support") + (description + "This package provides generic serialization/deserialization support +corresponding to the @code{derive(RustcEncodable, RustcDecodable)} mode in the +compiler. Also includes support for hex, base64, and json encoding and +decoding.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-rustc-std-workspace-core (package (name "rust-rustc-std-workspace-core") From 313778655e4a3bd69febb1af486513dc8d25e2f6 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:49:00 +0300 Subject: [PATCH 020/408] gnu: Add rust-log. * gnu/packages/crates-io.scm (rust-log): New variable. --- gnu/packages/crates-io.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 29d8da51d4..ab022abc29 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1004,6 +1004,26 @@ the platform that libc is compiled for.") (license (list license:expat license:asl2.0)))) +(define-public rust-log + (package + (name "rust-log") + (version "0.3.8") + (source + (origin + (method url-fetch) + (uri (crate-uri "log" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0nsn28syc49vvjhxcfc8261rd1frhjc0r4bn9v3mqvps3ra7f3w8")))) + (build-system cargo-build-system) + (home-page "https://github.com/rust-lang-nursery/log") + (synopsis "Lightweight logging") + (description + "This package provides a lightweight logging facade for Rust") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-maplit (package (name "rust-maplit") From 5bd7965e115b473ad74ab22cb07364394a990ffc Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:52:02 +0300 Subject: [PATCH 021/408] gnu: Add rust-cc. * gnu/packages/crates-io.scm (rust-cc): New variable. --- gnu/packages/crates-io.scm | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ab022abc29..9b715c7cf9 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -230,6 +230,45 @@ behave like a set of bitflags.") (license (list license:asl2.0 license:expat)))) +(define-public rust-cc + (package + (name "rust-cc") + (version "1.0.41") + (source + (origin + (method url-fetch) + (uri (crate-uri "cc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1zxzd559dbbf1iwdzmkj7czapzccs17kqqmsj9ayijpdix5rrbld")))) + (build-system cargo-build-system) + (arguments + `(;#:cargo-inputs + ;(("rust-rayon" ,rust-rayon)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-optional-deps + (lambda _ + (substitute* "Cargo.toml.orig" + ((".*optional.*") "\n") + ((".*features.*") "") + ((".*parallel.*") "")) + (delete-file "Cargo.toml") + (copy-file "Cargo.toml.orig" "Cargo.toml") + #t))) + #:tests? #f)) ; Tests require cc-test from git repo. + (home-page "https://github.com/alexcrichton/cc-rs") + (synopsis "Invoke the native C compiler") + (description + "This package provides a build-time dependency for Cargo build scripts to +assist in invoking the native C compiler to compile native C code into a static +archive to be linked into Rustcode.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-cfg-if (package (name "rust-cfg-if") From 2446b451e2d92bc2ad5da0f1d877d306f32b84e7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 16:55:17 +0300 Subject: [PATCH 022/408] gnu: Add rust-cmake. * gnu/packages/crates-io.scm (rust-cmake): New variable. --- gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 9b715c7cf9..b4a5c8f171 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -338,6 +338,30 @@ colorization.") "Low level interface to CloudABI. Contains all syscalls and related types.") (license license:bsd-2))) +(define-public rust-cmake + (package + (name "rust-cmake") + (version "0.1.42") + (source + (origin + (method url-fetch) + (uri (crate-uri "cmake" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0qkwibkvx5xjazvv9v8gvdlpky2jhjxvcz014nrixgzqfyv2byw1")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-cc" ,rust-cc)))) + (home-page "https://github.com/alexcrichton/cmake-rs") + (synopsis "Rust build dependency for running cmake") + (description + "This package provides a build dependency for running @code{cmake} to build +a native library. The CMake executable is assumed to be @code{cmake} unless the +CMAKE environmental variable is set.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-constant-time-eq (package (name "rust-constant-time-eq") From e78973f45b0ebb259703b827a9b16abfee5e8112 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:08:00 +0300 Subject: [PATCH 023/408] gnu: Add rust-stacker. * gnu/packages/crates-io.scm (rust-stacker): New variable. --- gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index b4a5c8f171..b945091fdc 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2152,6 +2152,33 @@ to the same address.") (license (list license:asl2.0 license:expat)))) +(define-public rust-stacker + (package + (name "rust-stacker") + (version "0.1.5") + (source + (origin + (method url-fetch) + (uri (crate-uri "stacker" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0js0axz5nla1mkr2dm2vrv9rj964ng1lrv4l43sqlnfgawplhygv")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cfg-if" ,rust-cfg-if) + ("rust-libc" ,rust-libc) + ("rust-winapi" ,rust-winapi) + ("rust-cc" ,rust-cc)))) + (home-page "https://github.com/rust-lang/stacker") + (synopsis "Manual segmented stacks for Rust") + (description + "This package provides a stack growth library useful when implementing +deeply recursive algorithms that may accidentally blow the stack.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-stdweb-internal-runtime (package (name "rust-stdweb-internal-runtime") From 412c43b42350da4b91dacc11721d1b876e9cb62e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:16:05 +0300 Subject: [PATCH 024/408] gnu: Add rust-compiler-builtins. * gnu/packages/crates-io.scm (rust-compiler-builtins): New hidden variable. --- gnu/packages/crates-io.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index b945091fdc..204257e8fc 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -362,6 +362,36 @@ CMAKE environmental variable is set.") (license (list license:asl2.0 license:expat)))) +;; This package requires features which are unavailable +;; on the stable releases of Rust. +(define-public rust-compiler-builtins + (package + (name "rust-compiler-builtins") + (version "0.1.19") + (source + (origin + (method url-fetch) + (uri (crate-uri "compiler_builtins" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1fpabpmg8paj4r5a37vmidh1jx1b7a6ilxm4s3xsxczx27ybjcjf")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cc" ,rust-cc) + ("rust-rustc-std-workspace-core" + ,rust-rustc-std-workspace-core)))) + (home-page "https://github.com/rust-lang-nursery/compiler-builtins") + (synopsis "Compiler intrinsics used by the Rust compiler") + (description + "This package provides compiler intrinsics used by the Rust compiler. This +package is primarily useful when building the @code{core} crate yourself and you +need compiler-rt intrinsics.") + (properties `((hidden? . #t))) + (license (list license:asl2.0 + license:expat)))) + (define-public rust-constant-time-eq (package (name "rust-constant-time-eq") From 6f5cd37a60b0082c703c3a675abd0d1ef46118e7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:18:33 +0300 Subject: [PATCH 025/408] gnu: Add rust-libloading. * gnu/packages/crates-io.scm (rust-libloading): New variable. --- gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 204257e8fc..e4da943c80 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1097,6 +1097,33 @@ the platform that libc is compiled for.") (license (list license:expat license:asl2.0)))) +(define-public rust-libloading + (package + (name "rust-libloading") + (version "0.5.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "libloading" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0lyply8rcqc8agajzxs7bq6ivba9dnn1i68kgb9z2flnfjh13cgj")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cc" ,rust-cc) + ("rust-winapi" ,rust-winapi)))) + (home-page "https://github.com/nagisa/rust_libloading/") + (synopsis "Rust library for loading dynamic libraries") + (description + "A memory-safer wrapper around system dynamic library loading primitives. +The most important safety guarantee by this library is prevention of +dangling-Symbols that may occur after a Library is unloaded. Using this library +allows loading dynamic libraries (also known as shared libraries) as well as use +functions and static variables these libraries contain.") + (license license:isc))) + (define-public rust-log (package (name "rust-log") From aeaa6012609741f4957a033df0b7d3dbfd14980b Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:23:56 +0300 Subject: [PATCH 026/408] gnu: Add rust-vcpkg. * gnu/packages/crates-io.scm (rust-vcpkg): New variable. --- gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index e4da943c80..ae89552b2c 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2835,6 +2835,32 @@ whitespace from a string.") untrusted inputs in Rust.") (license license:isc))) +(define-public rust-vcpkg + (package + (name "rust-vcpkg") + (version "0.2.7") + (source + (origin + (method url-fetch) + (uri (crate-uri "vcpkg" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "15dzk1b96q946v9aisbd1bbhi33n93wvgziwh1shmscn1xflbp9k")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-lazy-static" ,rust-lazy-static) + ("rust-tempdir" ,rust-tempdir)) + #:tests? #f)) ; tests try to link libmysql, graphite2, harfbuzz + (home-page "https://github.com/mcgoo/vcpkg-rs") + (synopsis "Find native dependencies in a vcpkg tree at build time") + (description + "This package provides a library to find native dependencies in a +@code{vcpkg} tree at build time in order to be used in Cargo build scripts.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-version-check (package (name "rust-version-check") From 701eaebc6666ae40f0d284b2b8e377fee2553d9b Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:34:33 +0300 Subject: [PATCH 027/408] gnu: Add rust-memmap. * gnu/packages/crates-io.scm (rust-memmap): New variable. --- gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ae89552b2c..5683c177df 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1202,6 +1202,33 @@ whether an expression matches a pattern.") (license (list license:asl2.0 license:expat)))) +(define-public rust-memmap + (package + (name "rust-memmap") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "memmap" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ns7kkd1h4pijdkwfvw4qlbbmqmlmzwlq3g2676dcl5vwyazv1b5")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc) + ("rust-winapi" ,rust-winapi)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)))) + (home-page "https://github.com/danburkert/memmap-rs") + (synopsis "Rust library for cross-platform memory mapped IO") + (description + "This package provides a cross-platform Rust API for memory-mapped +file IO.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-mime (package (name "rust-mime") From 94c715e613c7c9a7ede9f960c63002664f2a0db9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:36:09 +0300 Subject: [PATCH 028/408] gnu: Add rust-memmap-0.6. * gnu/packages/crates-io.scm (rust-memmap@0.6): New variable. --- gnu/packages/crates-io.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 5683c177df..d01f6a03df 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1229,6 +1229,26 @@ file IO.") (license (list license:asl2.0 license:expat)))) +(define-public rust-memmap-0.6 + (package + (inherit rust-memmap) + (name "rust-memmap") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "memmap" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1zy6s0ni0lx9rjzq3gq2zz9r8zgjmbp02332g3gsj4fyhv4s5zz2")))) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc) + ("rust-winapi" ,rust-winapi)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)))))) + (define-public rust-mime (package (name "rust-mime") From 3a3c72e6b1a5a9a8b5251be6d0edb14bf060b453 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:46:36 +0300 Subject: [PATCH 029/408] gnu: Add rust-miniz-oxide. * gnu/packages/crates-io.scm (rust-miniz-oxide): New variable. --- gnu/packages/crates-io.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index d01f6a03df..4a2f545018 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1272,6 +1272,37 @@ file IO.") (license (list license:asl2.0 license:expat)))) +(define-public rust-miniz-oxide + (package + (name "rust-miniz-oxide") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "miniz_oxide" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "041s41l5w7z8pkp93pdzn8rngxr93q4wxp034pr0cvc7bgway23i")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-adler32" ,rust-adler32)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "tests/test.rs" + (("../miniz/miniz.c") "Cargo.toml")) + #t))))) + (home-page "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide") + (synopsis "Pure rust replacement for the miniz DEFLATE/zlib encoder/decoder") + (description + "A pure rust replacement for the miniz DEFLATE/zlib encoder/decoder. Using +@code{flate2} with the @code{rust_backend} feature provides an easy to use +streaming API for miniz_oxide.") + (license license:expat))) + (define-public rust-modifier (package (name "rust-modifier") From e81e48ef29df257c8b3347a36165bbe284c13568 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:48:06 +0300 Subject: [PATCH 030/408] gnu: Add rust-miniz-sys. * gnu/packages/crates-io.scm (rust-miniz-sys): New variable. --- gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 4a2f545018..ea6fd1dbc7 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1303,6 +1303,30 @@ file IO.") streaming API for miniz_oxide.") (license license:expat))) +(define-public rust-miniz-sys + (package + (name "rust-miniz-sys") + (version "0.1.12") + (source + (origin + (method url-fetch) + (uri (crate-uri "miniz-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "00l2r4anm8g35x0js2zfdnwfbrih9m43vphdpb77c5ga3kjkm7hy")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cc" ,rust-cc) + ("rust-libc" ,rust-libc)))) + (home-page "https://github.com/alexcrichton/flate2-rs") + (synopsis "Bindings to the miniz.c library") + (description + "This package provides bindings to the @code{miniz.c} library.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-modifier (package (name "rust-modifier") From 5b15d635eddda7708d68a224f4df50e1c866f92d Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:52:14 +0300 Subject: [PATCH 031/408] gnu: Add rust-netlib-src. * gnu/packages/crates-io.scm (rust-netlib-src): New variable. --- gnu/packages/crates-io.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ea6fd1dbc7..d6a26fc119 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -24,6 +24,8 @@ #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (gnu packages gcc) + #:use-module (gnu packages maths) #:use-module (gnu packages pkg-config)) ;;; @@ -1373,6 +1375,42 @@ types as proposed in RFC 1158.") (license (list license:asl2.0 license:expat)))) +(define-public rust-netlib-src + (package + (name "rust-netlib-src") + (version "0.7.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "netlib-src" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "112hwfw1zzdj10h3j213xxqjrq38iygb3nb3ijay65ycmrg819s4")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-cmake" ,rust-cmake) + ("rust-libc" ,rust-libc)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-system-lapack + (lambda _ + (delete-file-recursively "source") + (substitute* "Cargo.toml" + (("default .*") + "default = [\"system\"]\n")) + #t))))) + (inputs + `(("gfortran:lib" ,gfortran "lib") + ("lapack" ,lapack))) + (home-page "https://github.com/blas-lapack-rs/netlib-src") + (synopsis "Source of BLAS and LAPACK via Netlib") + (description + "The package provides a source of BLAS and LAPACK via Netlib.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-nodrop (package (name "rust-nodrop") From f51c47b528a7acf79dd189e18cebf841afaf4c30 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:54:47 +0300 Subject: [PATCH 032/408] gnu: Add rust-openssl-probe. * gnu/packages/crates-io.scm (rust-openssl-probe): New variable. --- gnu/packages/crates-io.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index d6a26fc119..f0a29486ad 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1558,6 +1558,27 @@ implementation (which is unstable / requires nightly).") (license (list license:asl2.0 license:expat)))) +(define-public rust-openssl-probe + (package + (name "rust-openssl-probe") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "openssl-probe" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1pijrdifgsdwd45b08c2g0dsmnhz7c3kmagb70839ngrd7d29bvp")))) + (build-system cargo-build-system) + (home-page "https://github.com/alexcrichton/openssl-probe") + (synopsis "Find SSL certificate locations") + (description + "This package provides a tool to find SSL certificate locations on the +system for OpenSSL.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-owning-ref (package (name "rust-owning-ref") From 02f66e9022d92d2041869231ee5adcf6009f07a9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 17:59:43 +0300 Subject: [PATCH 033/408] gnu: Add rust-gcc. * gnu/packages/crates-io.scm (rust-gcc): New variable. --- gnu/packages/crates-io.scm | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index f0a29486ad..ea43d8e5e1 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -802,6 +802,46 @@ the computation on the threads themselves.") (license (list license:asl2.0 license:expat)))) +(define-public rust-gcc + (package + (inherit rust-cc) + (name "rust-gcc") + (version "0.3.55") + (source + (origin + (method url-fetch) + (uri (crate-uri "gcc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1hng1sajn4r67hndvhjysswz8niayjwvcj42zphpxzhbz89kjpwg")))) + (build-system cargo-build-system) + (arguments + `(;#:cargo-inputs + ;(("rust-rayon" ,rust-rayon)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-optional-deps + (lambda _ + (substitute* "Cargo.toml.orig" + ((".*optional.*") "\n") + ((".*features.*") "") + ((".*parallel.*") "")) + (delete-file "Cargo.toml") + (copy-file "Cargo.toml.orig" "Cargo.toml") + #t))) + #:tests? #f)) + (home-page "https://github.com/alexcrichton/cc-rs") + (synopsis "Library to compile C/C++ code into a Rust library/application") + (description + "This package provides a build-time dependency for Cargo build scripts to +assist in invoking the native C compiler to compile native C code into a static +archive to be linked into Rustcode.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-heapsize (package (name "rust-heapsize") From eda57f4834b29ef17758f7f1f62d3af899e2d669 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:00:03 +0300 Subject: [PATCH 034/408] gnu: Add rust-pico-sys. * gnu/packages/crates-io.scm (rust-pico-sys): New variable. --- gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ea43d8e5e1..909dd5d2f8 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1707,6 +1707,29 @@ algorithm.") (license (list license:asl2.0 license:expat)))) +(define-public rust-pico-sys + (package + (name "rust-pico-sys") + (version "0.0.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "pico-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1q5pg0ms6szz6b5h26h4k40zb76zbwwjgyigac4wly9qngdj4yl5")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-gcc" ,rust-gcc) + ("rust-libc" ,rust-libc)))) + (home-page "https://github.com/reem/rust-pico-sys.git") + (synopsis "Bindings to the PicoHTTPParser") + (description + "This package provides bindings to the PicoHTTPParser.") + (license license:expat))) + (define-public rust-pin-utils (package (name "rust-pin-utils") From f0074113086c32ebb31f49cf01a2fd4740d01999 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:04:20 +0300 Subject: [PATCH 035/408] gnu: Add rust-rustc-demangle. * gnu/packages/crates-io.scm (rust-rustc-demangle): New variable. --- gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 909dd5d2f8..183291e737 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2092,6 +2092,32 @@ system calls.") (license (list license:asl2.0 license:expat)))) +(define-public rust-rustc-demangle + (package + (name "rust-rustc-demangle") + (version "0.1.16") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustc-demangle" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "10qp42sl1wrdbgbbh8rnay2grm976z7hqgz32c4y09l1c071qsac")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-compiler-builtins" + ,rust-compiler-builtins) + ("rust-rustc-std-workspace-core" + ,rust-rustc-std-workspace-core)))) + (home-page "https://github.com/alexcrichton/rustc-demangle") + (synopsis "Rust compiler symbol demangling") + (description + "This package demanges the symbols from the Rust compiler.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-rustc-serialize (package (name "rust-rustc-serialize") From c891c7f174eb1942e75324f494aade8da1c04f36 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:08:30 +0300 Subject: [PATCH 036/408] gnu: Add rust-cargon. * gnu/packages/crates-io.scm (rust-cargon): New variable. --- gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 183291e737..35453124ef 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -210,6 +210,29 @@ behave like a set of bitflags.") (license (list license:asl2.0 license:expat)))) +(define-public rust-cargon + (package + (name "rust-cargon") + (version "0.0.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "cargon" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1cszlab7jk736p0lb50ag4l9nv72m7j41bwrmygl0lr4iz0350w2")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-gcc" ,rust-gcc)))) + (home-page "https://github.com/bryant/argon2rs") + (synopsis "Thin wrapper around the Argon2 C library") + (description + "This package provides a thin wrapper around the Argon2 C library. It is +used in argon2rs' bench suite.") + (license license:wtfpl2))) + (define-public rust-cblas-sys (package (name "rust-cblas-sys") From f32a4ba74660b6f1adfc7e61343a1684ffedeb8a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:14:38 +0300 Subject: [PATCH 037/408] gnu: Add rust-jemalloc-sys. * gnu/packages/crates-io.scm (rust-jemalloc-sys): New variable. --- gnu/packages/crates-io.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 35453124ef..7a7b2be4f4 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -25,6 +25,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (gnu packages gcc) + #:use-module (gnu packages jemalloc) #:use-module (gnu packages maths) #:use-module (gnu packages pkg-config)) @@ -1026,6 +1027,41 @@ primitives to an @code{io::Write}.") (license (list license:asl2.0 license:expat)))) +(define-public rust-jemalloc-sys + (package + (name "rust-jemalloc-sys") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "jemalloc-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ify9vlql01qhfxlj7d4p9jvcp90mj2h69nkbq7slccvbhzryfqd")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc) + ("rust-cc" ,rust-cc) + ("rust-fs-extra" ,rust-fs-extra)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'override-jemalloc + (lambda* (#:key inputs #:allow-other-keys) + (let ((jemalloc (assoc-ref inputs "jemalloc"))) + (delete-file-recursively "jemalloc") + (setenv "JEMALLOC_OVERRIDE" + (string-append jemalloc "/lib/libjemalloc_pic.a"))) + #t))))) + (inputs + `(("jemalloc" ,jemalloc))) + (home-page "https://github.com/gnzlbg/jemallocator") + (synopsis "Rust FFI bindings to jemalloc") + (description "This package provides Rust FFI bindings to jemalloc.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-json (package (name "rust-json") From 1515ecae214891dbf96045e0a1ff9be7b0527830 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:20:49 +0300 Subject: [PATCH 038/408] gnu: Add rust-lzma-sys. * gnu/packages/crates-io.scm (rust-lzma-sys): New variable. --- gnu/packages/crates-io.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 7a7b2be4f4..705cccbce9 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -24,6 +24,7 @@ #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (gnu packages compression) #:use-module (gnu packages gcc) #:use-module (gnu packages jemalloc) #:use-module (gnu packages maths) @@ -1245,6 +1246,42 @@ functions and static variables these libraries contain.") (license (list license:asl2.0 license:expat)))) +(define-public rust-lzma-sys + (package + (name "rust-lzma-sys") + (version "0.1.15") + (source + (origin + (method url-fetch) + (uri (crate-uri "lzma-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "14gyj256yh0wm77jbvmlc39v7lfn0navpfrja4alczarzlc8ir2k")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cc" ,rust-cc) + ("rust-libc" ,rust-libc) + ("rust-pkg-config" ,rust-pkg-config)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unbundle-xz + (lambda* (#:key inputs #:allow-other-keys) + (let ((xz (assoc-ref inputs "xz"))) + (delete-file-recursively "xz-5.2")) + #t))))) + (inputs + `(("pkg-config" ,pkg-config) + ("xz" ,xz))) + (home-page "https://github.com/alexcrichton/xz2-rs") + (synopsis "Bindings to liblzma for lzma and xz stream encoding/decoding") + (description + "This package contains the raw bindings to liblzma which contains an +implementation of LZMA and xz stream encoding/decoding.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-maplit (package (name "rust-maplit") From 5ef6549e12985fb4ed97672e5068d994c541b3a3 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:26:05 +0300 Subject: [PATCH 039/408] gnu: Add rust-tempfile. * gnu/packages/crates-io.scm (rust-tempfile): New variable. --- gnu/packages/crates-io.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 705cccbce9..ec65076a36 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2714,6 +2714,34 @@ deleting all contents when it's dropped.") (license (list license:asl2.0 license:expat)))) +(define-public rust-tempfile + (package + (name "rust-tempfile") + (version "3.0.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "tempfile" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ny1cdbcsrmwjpy4k9366xm6p0jqkrmrvr0cln2djxspp1inyxs7")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc) + ("rust-rand" ,rust-rand) + ("rust-redox-syscall" ,rust-redox-syscall) + ("rust-remove-dir-all" ,rust-remove-dir-all) + ("rust-winapi" ,rust-winapi)))) + (home-page "http://stebalien.com/projects/tempfile-rs") + (synopsis "Library for managing temporary files and directories") + (description + "This package provides a library for managing temporary files and +directories.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-termcolor (package (name "rust-termcolor") From 1a9ce2a252cc75d9b7686ed4fcee9964d2b61eef Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:30:13 +0300 Subject: [PATCH 040/408] gnu: Add rust-xattr. * gnu/packages/crates-io.scm (rust-xattr): New variable. --- gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ec65076a36..a56faa011b 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -3620,6 +3620,33 @@ color in a Windows console.") "Contains function definitions for the Windows API library ws2_32.") (license license:expat))) +(define-public rust-xattr + (package + (name "rust-xattr") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "xattr" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0k556fb6f5jc907975j9c8iynl2fqz3rf0w6fiig83i4yi0kfk14")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc)) + #:cargo-development-inputs + (("rust-tempfile" ,rust-tempfile)) + #:tests? #f)) ; Tests assume read access to /var. + (home-page "https://github.com/Stebalien/xattr") + (synopsis "Unix extended filesystem attributes") + (description + "This package provide a small library for setting, getting, and listing +extended attributes.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-xdg (package (name "rust-xdg") From 27438eb81725fe031d8d3bea7de45ef412e5b184 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:32:38 +0300 Subject: [PATCH 041/408] gnu: Add rust-filetime. * gnu/packages/crates-io.scm (rust-filetime): New variable. --- gnu/packages/crates-io.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index a56faa011b..971aec2e5d 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -594,6 +594,38 @@ provides implementations for @code{HashMap} and @code{HashSet}.") (license (list license:asl2.0 license:expat)))) +(define-public rust-filetime + (package + (name "rust-filetime") + (version "0.2.7") + (source + (origin + (method url-fetch) + (uri (crate-uri "filetime" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0sflihq2l77xjrza7yjalnxsc7dxzg25rhzcfbd9vmyfah5kimvb")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cfg-if" ,rust-cfg-if) + ("rust-libc" ,rust-libc) + ("rust-redox-syscall" ,rust-redox-syscall) + ("rust-winapi" ,rust-winapi)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)))) + (home-page "https://github.com/alexcrichton/filetime") + (synopsis "Platform-agnostic accessors of timestamps in File metadata") + (description + "This library contains a helper library for inspecting and setting the +various timestamps of files in Rust. This library takes into account +cross-platform differences in terms of where the timestamps are located, what +they are called, and how to convert them into a platform-independent +representation.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-findshlibs (package (name "rust-findshlibs") From 3494be351567e1f32a02bbb3d2f7cedec7d6446c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:37:18 +0300 Subject: [PATCH 042/408] gnu: Add rust-tar. * gnu/packages/crates-io.scm (rust-tar): New variable. --- gnu/packages/crates-io.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 971aec2e5d..4de42d9de4 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2720,6 +2720,39 @@ and Jaro-Winkler.") "This package provides helper test traits for synstructure doctests.") (license license:expat))) +(define-public rust-tar + (package + (name "rust-tar") + (version "0.4.26") + (source + (origin + (method url-fetch) + (uri (crate-uri "tar" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1lr6v3cpkfxd2lk5ll2jd8wr1xdskwj35smnh5sfb8xvzzxnn6dk")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-filetime" ,rust-filetime) + ("rust-libc" ,rust-libc) + ("rust-redox-syscall" ,rust-redox-syscall) + ("rust-xattr" ,rust-xattr)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)) + #:tests? #f)) ; Test archives are not distributed in the crate tarball. + (home-page "https://github.com/alexcrichton/tar-rs") + (synopsis "Tar file reading/writing for Rust") + (description + "This package provides a Rust implementation of a TAR file reader and +writer. This library does not currently handle compression, but it is abstract +over all I/O readers and writers. Additionally, great lengths are taken to +ensure that the entire contents are never required to be entirely resident in +memory all at once.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-tempdir (package (name "rust-tempdir") From fbf37a7bff9a946fa93acf9131b423c2a3a8fbb1 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:41:02 +0300 Subject: [PATCH 043/408] gnu: Add rust-socket2. * gnu/packages/crates-io.scm (rust-socket2): New variable. --- gnu/packages/crates-io.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 4de42d9de4..2b31ec3c66 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2543,6 +2543,36 @@ words, like Python's shlex.") data type.") (license license:expat))) +(define-public rust-socket2 + (package + (name "rust-socket2") + (version "0.3.11") + (source + (origin + (method url-fetch) + (uri (crate-uri "socket2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "11bdcz04i106g4q7swkll0qxrb4287srqd2k3aq2q6i22zjlvdz8")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cfg-if" ,rust-cfg-if) + ("rust-libc" ,rust-libc) + ("rust-redox-syscall" ,rust-redox-syscall) + ("rust-winapi" ,rust-winapi)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)) + #:tests? #f)) ; Tests expect network connectivity. + (home-page "https://github.com/alexcrichton/socket2-rs") + (synopsis "Networking sockets in Rust") + (description + "This package provides utilities for handling networking sockets with a +maximal amount of configuration possible intended.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-spin (package (name "rust-spin") From 1241007f16648be578f96db5bc30e623f88cb2f5 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 18:54:40 +0300 Subject: [PATCH 044/408] gnu: Add rust-ansi-term. * gnu/packages/crates-io.scm (rust-ansi-term): New variable. --- gnu/packages/crates-io.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 2b31ec3c66..3246b0f83d 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -58,6 +58,38 @@ the Rust programming language.") (license (list license:bsd-3 license:zlib)))) +(define-public rust-ansi-term + (package + (name "rust-ansi-term") + (version "0.11.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "ansi_term" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-winapi" ,rust-winapi)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + ;; https://github.com/ogham/rust-ansi-term/commit/5ff6af6f38790abcb3aafee1239286c10ef69576.patch + (lambda _ + (substitute* "src/debug.rs" + (("^ *Blue") " Blue,") + (("underline: false") "underline: false,")) + #t))))) + (home-page "https://github.com/ogham/rust-ansi-term") + (synopsis "Library for ANSI terminal colours and styles") + (description + "This is a library for controlling colours and formatting, such as red bold +text or blue underlined text, on ANSI terminals.") + (license license:expat))) + (define-public rust-antidote (package (name "rust-antidote") From 5ae8c1fba34d3e770751663ebdab087da91732d9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 19:00:51 +0300 Subject: [PATCH 045/408] gnu: Add rust-miow. * gnu/packages/crates-io.scm (rust-miow): New variable. --- gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 3246b0f83d..7b0cfd49a8 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1529,6 +1529,33 @@ streaming API for miniz_oxide.") (license (list license:asl2.0 license:expat)))) +(define-public rust-miow + (package + (name "rust-miow") + (version "0.3.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "miow" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "09ljvx6wg30f2xlv7b7hhpkw7k312n3hjgmrbhwzhz9x03ra0sir")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-socket2" ,rust-socket2) + ("rust-winapi" ,rust-winapi)) + #:cargo-development-inputs + (("rust-rand" ,rust-rand)))) + (home-page "https://github.com/alexcrichton/miow") + (synopsis "Rust I/O library for Windows") + (description + "This package provides a zero overhead I/O library for Windows, focusing on +IOCP and Async I/O abstractions.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-modifier (package (name "rust-modifier") From 61322df0191878a49ae2f048793e5e3a57d504cb Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 19:02:28 +0300 Subject: [PATCH 046/408] gnu: Add rust-miow-0.2. * gnu/packages/crates-io.scm (rust-miow-0.2): New variable. --- gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 7b0cfd49a8..710b0d6cef 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1556,6 +1556,28 @@ IOCP and Async I/O abstractions.") (license (list license:asl2.0 license:expat)))) +(define-public rust-miow-0.2 + (package + (inherit rust-miow) + (name "rust-miow") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "miow" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "06g9b8sqlh5gxakwqq4rrib07afwanfnxgxajrldwcgk3hxjy7wc")))) + (arguments + `(#:cargo-inputs + (("rust-kernel32-sys" ,rust-kernel32-sys) + ("rust-net2" ,rust-net2) + ("rust-winapi" ,rust-winapi-0.2) + ("rust-ws2-32-sys" ,rust-ws2-32-sys)) + #:cargo-development-inputs + (("rust-rand" ,rust-rand-0.3)))))) + (define-public rust-modifier (package (name "rust-modifier") From 01519b3d9f87790ecf743426d2a8bfed2ae87cb8 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 19:11:22 +0300 Subject: [PATCH 047/408] gnu: Add rust-sourcefile. * gnu/packages/crates-io.scm (rust-sourcefile): New variable. --- gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 710b0d6cef..f2aafa43c9 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2654,6 +2654,30 @@ maximal amount of configuration possible intended.") (license (list license:asl2.0 license:expat)))) +(define-public rust-sourcefile + (package + (name "rust-sourcefile") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "sourcefile" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1lwa6973zs4bgj29my7agfjgk4nw9hp6j7dfnr13nid85fw7rxsb")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-tempfile" ,rust-tempfile)))) + (home-page "https://github.com/derekdreery/sourcefile-rs") + (synopsis "Concatenate source from multiple files") + (description + "A library for concatenating source from multiple files, whilst keeping +track of where each new file and line starts.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-spin (package (name "rust-spin") From b79eab74a14992ff382e7f40a9fd13de11728bb9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 19:26:01 +0300 Subject: [PATCH 048/408] gnu: Add rust-glob. * gnu/packages/crates-io.scm (rust-glob): New variable. --- gnu/packages/crates-io.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index f2aafa43c9..e6a081d9c3 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -931,6 +931,38 @@ archive to be linked into Rustcode.") (license (list license:asl2.0 license:expat)))) +(define-public rust-glob + (package + (name "rust-glob") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "glob" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0x25wfr7vg3mzxc9x05dcphvd3nwlcmbnxrvwcvrrdwplcrrk4cv")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + ;; This test assumes /root exists but is unreadable by the user. + (lambda _ + (substitute* "src/lib.rs" + (("cfg\\(all\\(unix,.*") "cfg(windows)]\n")) + #t))))) + (home-page "https://github.com/rust-lang-nursery/glob") + (synopsis "Match file paths against Unix shell style patterns") + (description + "This package provides support for matching file paths against Unix +shell style patterns.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-heapsize (package (name "rust-heapsize") From cef7de6fa61761f905876414debca94cadb01e07 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 20:18:31 +0300 Subject: [PATCH 049/408] gnu: Add rust-glob-0.2. * gnu/packages/crates-io.scm (rust-glob-0.2): New variable. --- gnu/packages/crates-io.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index e6a081d9c3..c6aee38fd4 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -963,6 +963,31 @@ shell style patterns.") (license (list license:asl2.0 license:expat)))) +(define-public rust-glob-0.2 + (package + (inherit rust-glob) + (name "rust-glob") + (version "0.2.11") + (source + (origin + (method url-fetch) + (uri (crate-uri "glob" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb")))) + (arguments + `(#:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + ;; This test assumes /root exists but is unreadable by the user. + (lambda _ + (substitute* "src/lib.rs" + (("cfg\\(unix") "cfg(windows")) + #t))))))) + (define-public rust-heapsize (package (name "rust-heapsize") From 9a5ee9928a9de0183ed1702160035319fe1d2407 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 20:25:38 +0300 Subject: [PATCH 050/408] gnu: Add rust-clang-sys. * gnu/packages/crates-io.scm (rust-clang-sys): New variable. --- gnu/packages/crates-io.scm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index c6aee38fd4..4722773d50 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -27,6 +27,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages gcc) #:use-module (gnu packages jemalloc) + #:use-module (gnu packages llvm) #:use-module (gnu packages maths) #:use-module (gnu packages pkg-config)) @@ -349,6 +350,42 @@ depending on a large number of #[cfg] parameters. Structured like an (license (list license:asl2.0 license:expat)))) +(define-public rust-clang-sys + (package + (name "rust-clang-sys") + (version "0.28.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "clang-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ls8zcqi5bmmrvrk3b6r1ym4wlivinbv590d2dvg2xn9f44mbpl1")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-glob" ,rust-glob) + ("rust-libc" ,rust-libc) + ("rust-libloading" ,rust-libloading)) + #:cargo-development-inputs + (("rust-glob" ,rust-glob)) + #: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))))) + (inputs + `(("libclang" ,clang))) + (home-page "https://github.com/KyleMayes/clang-sys") + (synopsis "Rust bindings for libclang") + (description + "This package provides Rust bindings for @code{libclang}.") + (license license:asl2.0))) + (define-public rust-clicolors-control (package (name "rust-clicolors-control") From 516b2f1a3b87147daee345a7708b394e87fd29bd Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 20:31:32 +0300 Subject: [PATCH 051/408] gnu: Add rust-getopts. * gnu/packages/crates-io.scm (rust-getopts): New variable. --- gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 4722773d50..235767a207 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -968,6 +968,28 @@ archive to be linked into Rustcode.") (license (list license:asl2.0 license:expat)))) +(define-public rust-getopts + (package + (name "rust-getopts") + (version "0.2.17") + (source + (origin + (method url-fetch) + (uri (crate-uri "getopts" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "018yhq97zgcrcxwhj3pxh31h83704sgaiijdnpl0r1ir366c005r")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-log" ,rust-log)))) + (home-page "https://github.com/rust-lang-nursery/getopts") + (synopsis "Rust library for option parsing for CLI utilities") + (description "This library provides getopts-like option parsing.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-glob (package (name "rust-glob") From 4282cbe9b0a0c142477c71369d1aa3cc7a5ea8ff Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 20:37:38 +0300 Subject: [PATCH 052/408] gnu: Add rust-semver-parser-0.7. * gnu/packages/crates-io.scm (rust-semver-parser-0.7): New variable. --- gnu/packages/crates-io.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 235767a207..2756a193fa 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -2701,6 +2701,20 @@ with one of the implemented strategies.") (license (list license:asl2.0 license:expat)))) +(define-public rust-semver-parser-0.7 + (package + (inherit rust-semver-parser) + (name "rust-semver-parser") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "semver-parser" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "18vhypw6zgccnrlm5ps1pwa0khz7ry927iznpr88b87cagr1v2iq")))))) + (define-public rust-shlex (package (name "rust-shlex") From 540d830edc910dd85c0d84f922a4d26848c1b35e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 20:53:02 +0300 Subject: [PATCH 053/408] gnu: Add rust-time. * gnu/packages/crates-io.scm (rust-time): New variable. --- gnu/packages/crates-io.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 2756a193fa..ab3513af67 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -3191,6 +3191,37 @@ fixed set of worker threads.") (license (list license:asl2.0 license:expat)))) +(define-public rust-time + (package + (name "rust-time") + (version "0.1.39") + (source + (origin + (method url-fetch) + (uri (crate-uri "time" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "161hqx0gw722ikydanpahky447vaxqncwmkj66rny282vzqpalx1")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc) + ("rust-redox-syscall" ,rust-redox-syscall) + ("rust-rustc-serialize" ,rust-rustc-serialize) + ("rust-winapi" ,rust-winapi)) + #:cargo-development-inputs + (("rust-log" ,rust-log) + ("rust-winapi" ,rust-winapi)) + #:tests? #f)) ; Tests have difficulty with the timezones. + (home-page "https://github.com/rust-lang-deprecated/time") + (synopsis "Simple time handling in Rust") + (description + "This package provides utilities for working with time-related functions +in Rust.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-tokio-mock-task (package (name "rust-tokio-mock-task") From 41ba4cf1503cc7448aa99813438cc5bdf2c00c1c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Sep 2019 21:07:24 +0300 Subject: [PATCH 054/408] gnu: Add rust-parity-wasm. * gnu/packages/crates-io.scm (rust-parity-wasm): New variable. --- gnu/packages/crates-io.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ab3513af67..980ddc5d9e 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -1968,6 +1968,31 @@ owner with them. This can sometimes be useful because Rust borrowing rules normally prevent moving a type that has been borrowed from.") (license license:expat))) +(define-public rust-parity-wasm + (package + (name "rust-parity-wasm") + (version "0.40.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "parity-wasm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1p84f0k36q05j18jy66n122lyali794cj78hbxgy9wj6si84plqd")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-time" ,rust-time)) + #:tests? #f)) ; Test files are not included in release. + (home-page "https://github.com/paritytech/parity-wasm") + (synopsis "Low-level WebAssembly format library") + (description + "This package provides a WebAssembly binary format serialization, +deserialization, and interpreter in Rust.") + (license (list license:asl2.0 + license:expat)))) + (define-public rust-peeking-take-while (package (name "rust-peeking-take-while") From 7cd446fd3f1d3b5dce4800d1daba2fa31a07f1b2 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 5 Sep 2019 23:33:52 +0200 Subject: [PATCH 055/408] gnu: Add r-txdb-celegans-ucsc-ce6-ensgene. * gnu/packages/bioconductor.scm (r-txdb-celegans-ucsc-ce6-ensgene): New variable. --- gnu/packages/bioconductor.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 3ba5415597..37cd51d16c 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -708,6 +708,31 @@ the TxDb object of Mouse data as provided by UCSC (mm10, December 2011) based on the knownGene track.") (license license:artistic2.0))) +(define-public r-txdb-celegans-ucsc-ce6-ensgene + (package + (name "r-txdb-celegans-ucsc-ce6-ensgene") + (version "3.2.2") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "TxDb.Celegans.UCSC.ce6.ensGene" + version 'annotation)) + (sha256 + (base32 + "1sgppva33cdy4isj2is8mfalj5gmmkpbkq9w1d83a4agcq31mi90")))) + (properties + `((upstream-name . "TxDb.Celegans.UCSC.ce6.ensGene"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-genomicfeatures" ,r-genomicfeatures))) + (home-page "https://bioconductor.org/packages/TxDb.Celegans.UCSC.ce6.ensGene/") + (synopsis "Annotation package for C elegans TxDb objects") + (description + "This package exposes a C elegans annotation database generated from UCSC +by exposing these as TxDb objects.") + (license license:artistic2.0))) + (define-public r-fdb-infiniummethylation-hg19 (package (name "r-fdb-infiniummethylation-hg19") From 8205534569cb2a09d53b7c925a349cd7f4e3599d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 6 Sep 2019 15:00:16 +0200 Subject: [PATCH 056/408] gnu: Add samblaster. * gnu/packages/bioinformatics.scm (samblaster): New variable. --- gnu/packages/bioinformatics.scm | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index f98f10a2c3..cf2dc57fa7 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -15232,3 +15232,37 @@ indels (insertions and deletions), MNPs (multi-nucleotide polymorphisms), and complex events (composite insertion and substitution events) smaller than the length of a short-read sequencing alignment.") (license license:expat)))) + +(define-public samblaster + (package + (name "samblaster") + (version "0.1.24") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/GregoryFaust/samblaster.git") + (commit (string-append "v." version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0iv2ddfw8363vb2x8gr3p8g88whb6mb9m0pf71i2cqsbv6jghap7")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; there are none + #:phases + (modify-phases %standard-phases + (delete 'configure) ; There is no configure phase. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (install-file "samblaster" + (string-append (assoc-ref outputs "out") "/bin")) + #t))))) + (home-page "https://github.com/GregoryFaust/samblaster") + (synopsis "Mark duplicates in paired-end SAM files") + (description "Samblaster is a fast and flexible program for marking +duplicates in read-id grouped paired-end SAM files. It can also optionally +output discordant read pairs and/or split read mappings to separate SAM files, +and/or unmapped/clipped reads to a separate FASTQ file. When marking +duplicates, samblaster will require approximately 20MB of memory per 1M read +pairs.") + (license license:expat))) From cae531275819178d7103562ec86dedfd053136a7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 6 Sep 2019 17:25:03 +0300 Subject: [PATCH 057/408] gnu: crates-io.scm: Fix several home-pages. * gnu/packages/crates-io.scm (rust-constant-time-eq, rust-fixedbitset, rust-futures, rust-pico-sys, rust-pkg-config, rust-quick-error, rust-remove-dir-all, rust-spin, rust-tempdir, rust-traitobject, rust-void)[home-page]: Update to correct home-page. --- gnu/packages/crates-io.scm | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 980ddc5d9e..e138b93e9b 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -501,7 +501,7 @@ need compiler-rt intrinsics.") (base32 "083icpr9xb72rrdxw3p4068dcspn6ai22jy7rhl2a8grfz448nlr")))) (build-system cargo-build-system) - (home-page "https://crates.io/crates/constant_time_eq") + (home-page "https://github.com/cesarb/constant_time_eq") (synopsis "Compares two equal-sized byte strings in constant time") (description @@ -733,7 +733,7 @@ cross platform API.") (base32 "0czam11mi80dbyhf4rd4lz0ihcf7vkfchrdcrn45wbs0h40dxm46")))) (build-system cargo-build-system) - (home-page "https://github.com/bluss/fixedbitset") + (home-page "https://github.com/petgraph/fixedbitset") (synopsis "FixedBitSet is a simple bitset collection") (description "FixedBitSet is a simple bitset collection.") (license (list license:asl2.0 @@ -900,7 +900,7 @@ featuring zero allocations, composability, and iterator-like interfaces.") `(#:cargo-inputs (("rust-futures" ,rust-futures) ("rust-num-cpus" ,rust-num-cpus)))) - (home-page "https://github.com/alexcrichton/futures-rs") + (home-page "https://github.com/rust-lang-nursery/futures-rs") (synopsis "Implementation of thread pools which hand out futures") (description "An implementation of thread pools which hand out futures to the results of @@ -2074,7 +2074,7 @@ algorithm.") `(#:cargo-inputs (("rust-gcc" ,rust-gcc) ("rust-libc" ,rust-libc)))) - (home-page "https://github.com/reem/rust-pico-sys.git") + (home-page "https://github.com/reem/rust-pico-sys") (synopsis "Bindings to the PicoHTTPParser") (description "This package provides bindings to the PicoHTTPParser.") @@ -2117,7 +2117,7 @@ algorithm.") (("rust-lazy-static" ,rust-lazy-static)))) (inputs `(("pkg-config" ,pkg-config))) - (home-page "https://github.com/alexcrichton/pkg-config-rs") + (home-page "https://github.com/rust-lang/pkg-config-rs") (synopsis "Library to run the pkg-config system tool") (description "A library to run the pkg-config system tool at build time in order to be @@ -2246,7 +2246,7 @@ in terms of the upstream unstable API.") (base32 "1w6kgwwv7p7zr0yyg5rb315lkk24bimywklwx7fsvsbwi10bjx4j")))) (build-system cargo-build-system) - (home-page "http://github.com/tailhook/quick-error") + (home-page "https://github.com/tailhook/quick-error") (synopsis "Macro which makes error types pleasant to write") (description "This crate provides a macro which makes error types pleasant to write.") @@ -2409,7 +2409,7 @@ system calls.") ;; The test phase expects there to be a README.md in the root directory. (lambda _ (invoke "touch" "README.md")))))) - (home-page "https://github.com/XAMPPRocky/remove_dir_all.git") + (home-page "https://github.com/XAMPPRocky/remove_dir_all") (synopsis "Implementation of remove_dir_all for Windows") (description "This package provides a safe, reliable implementation of @@ -2846,7 +2846,7 @@ track of where each new file and line starts.") (base32 "0m9clchsj0rf13bggsgvbv9haiy0f6rhvnvkpvkk8720a5pkydj4")))) (build-system cargo-build-system) - (home-page "https://github.com/mvdnes/spin-rs.git") + (home-page "https://github.com/mvdnes/spin-rs") (synopsis "Synchronization primitives based on spinning") (description "This crate provides synchronization primitives based on spinning. They may contain data, are usable without @code{std},and static @@ -3060,8 +3060,7 @@ memory all at once.") `(#:cargo-inputs (("rust-rand" ,rust-rand) ("rust-remove-dir-all" ,rust-remove-dir-all)))) - (home-page - "https://github.com/rust-lang/tempdir") + (home-page "https://github.com/rust-lang-deprecated/tempdir") (synopsis "Temporary directory management for Rust") (description "This package provides a library for managing a temporary directory and @@ -3303,7 +3302,7 @@ in Rust.") (base32 "0yb0n8822mr59j200fyr2fxgzzgqljyxflx9y8bdy3rlaqngilgg")))) (build-system cargo-build-system) - (home-page "https://github.com/reem/rust-traitobject.git") + (home-page "https://github.com/reem/rust-traitobject") (synopsis "Unsafe helpers for dealing with raw trait objects") (description "Unsafe helpers for dealing with raw trait objects.") (license (list license:asl2.0 @@ -3672,7 +3671,7 @@ If that fails, no determination is made, and calls return None.") (base32 "0zc8f0ksxvmhvgx4fdg0zyn6vdnbxd2xv9hfx4nhzg6kbs4f80ka")))) (build-system cargo-build-system) - (home-page "https://github.com/reem/rust-void.git") + (home-page "https://github.com/reem/rust-void") (synopsis "Void type for use in statically impossible cases") (description "The uninhabited void type for use in statically impossible cases.") From ccbd1648f461c15e79f73384ebeaccd6cdbd877b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 6 Sep 2019 17:33:34 +0200 Subject: [PATCH 058/408] gnu: exim: Update to 4.92.2 [fixes CVE-2019-15846]. * gnu/packages/mail.scm (exim): Update to 4.92.2. --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 30ce5cd70c..fdbb082fdc 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1197,7 +1197,7 @@ delivery.") (define-public exim (package (name "exim") - (version "4.92.1") + (version "4.92.2") (source (origin (method url-fetch) @@ -1206,7 +1206,7 @@ delivery.") (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-" version ".tar.bz2"))) (sha256 - (base32 "132zmxgzz35xwi89g3crw6hd3y74rxj5zcpamakvrnlcn256amdp")))) + (base32 "1xnc5rdcg5mcrvjqp506a9frmcr89jwsh4c5vbks46awyz1rfzsm")))) (build-system gnu-build-system) (inputs `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’ From 7fc41e6e6607bcf78db707d0c698d371985a6efe Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 6 Sep 2019 23:29:07 +0200 Subject: [PATCH 059/408] gnu: Add emacs-poet-theme. * gnu/packages/emacs-xyz.scm (emacs-poet-theme): New variable. --- gnu/packages/emacs-xyz.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 0ca1af9d05..afb55cb902 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4493,6 +4493,32 @@ variants.") package provides a light and a dark variant.") (license license:gpl3+))) +(define-public emacs-poet-theme + (let ((commit "d84f7b259cc9b6ff8d442cf4c38bd6c7065ff8f4") + (revision "0")) + (package + (name "emacs-poet-theme") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kunalb/poet.git") + (commit commit))) + (sha256 + (base32 + "0a84jdaj619mb59a46dmkk2sfs42rylqk9ryl1drgs8d3lia79mz")))) + (build-system emacs-build-system) + (home-page "https://github.com/kunalb/poet/") + (synopsis "Emacs theme for prose") + (description + "Emacs has very good support for multiple fonts in a single file. Poet +uses this support to make it much more convenient to write prose within Emacs, +with particular attention paid to @code{org-mode} and @code{markdown-mode}. +Code blocks, tables, etc are formatted in monospace text with the appropriate +backgrounds.") + (license license:expat)))) + (define-public emacs-ahungry-theme (package (name "emacs-ahungry-theme") From 61acb764eddb303ef5836c3b5a4bb9b6c718d4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 5 Sep 2019 23:04:37 +0200 Subject: [PATCH 060/408] gnu: ecl-net.didierverna.asdf-flv: Fix variable name. Fixes a typo in 0403d01f01c22ddd552dd5a0cfb97b0e8e58da9e. * gnu/packages/lisp.scm (ecl-net.didierverna.asdf-flv): New name of the second occurrence of 'ecl-alexandria'. --- gnu/packages/lisp.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index caf52018d1..65fc1a58cd 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -760,7 +760,7 @@ In order to make one or several variables file-local, use the macros (define-public cl-net.didierverna.asdf-flv (sbcl-package->cl-source-package sbcl-net.didierverna.asdf-flv)) -(define-public ecl-alexandria +(define-public ecl-net.didierverna.asdf-flv (sbcl-package->ecl-package sbcl-net.didierverna.asdf-flv)) (define-public sbcl-fiveam From 4961364f1681ea5c3fc7a988b4f48db448338cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 6 Sep 2019 22:58:26 +0200 Subject: [PATCH 061/408] gnu: qtwebkit: Disable non-x86 builds. * gnu/packages/qt.scm (qtwebkit)[supported-systems]: New field. --- gnu/packages/qt.scm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 52eb46cce0..165b8fd7b4 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2212,6 +2212,12 @@ time Web content can be enhanced with native controls.") ;; Building QtWebKit takes around 13 hours on an AArch64 machine. Give some ;; room for slower or busy hardware. (properties '((timeout . 64800))) ;18 hours + + ;; XXX: This consumes too much RAM to successfully build on AArch64 (e.g., + ;; SoftIron OverDrive with 8 GiB of RAM), so instead of wasting resources, + ;; disable it on non-Intel platforms. + (supported-systems '("x86_64-linux" "i686-linux")) + (license license:lgpl2.1+))) (define-public dotherside From f8c143a7131d6f40f387f4cd2ad1fa78b5e2f429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 6 Sep 2019 22:59:32 +0200 Subject: [PATCH 062/408] doc: Highlight Scheme syntax in the HTML output. * doc/build.scm (syntax-highlighted-html): New procedure. (html-manual): Use it. --- doc/build.scm | 115 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) diff --git a/doc/build.scm b/doc/build.scm index 7ba9f57bc9..c99bd505fd 100644 --- a/doc/build.scm +++ b/doc/build.scm @@ -34,6 +34,7 @@ (gnu packages gawk) (gnu packages gettext) (gnu packages guile) + (gnu packages guile-xyz) (gnu packages iso-codes) (gnu packages texinfo) (gnu packages tex) @@ -164,6 +165,115 @@ as well as images, OS examples, and translations." ;; Options passed to 'makeinfo --html'. '("--css-ref=https://www.gnu.org/software/gnulib/manual.css")) +(define* (syntax-highlighted-html input + #:key + (name "highlighted-syntax") + (syntax-css-url + "/static/base/css/code.css")) + "Return a derivation called NAME that processes all the HTML files in INPUT +to (1) add them a link to SYNTAX-CSS-URL, and (2) highlight the syntax of all +its
 blocks (as produced by 'makeinfo --html')."
+  (define build
+    (with-extensions (list guile-lib guile-syntax-highlight)
+      (with-imported-modules '((guix build utils))
+        #~(begin
+            (use-modules (htmlprag)
+                         (syntax-highlight)
+                         (syntax-highlight scheme)
+                         (syntax-highlight lexers)
+                         (guix build utils)
+                         (ice-9 match)
+                         (ice-9 threads))
+
+            (define entity->string
+              (match-lambda
+                ("rArr"   "⇒")
+                ("hellip" "…")
+                ("rsquo"  "’")
+                (e (pk 'unknown-entity e) (primitive-exit 2))))
+
+            (define (concatenate-snippets pieces)
+              ;; Concatenate PIECES, which contains strings and entities,
+              ;; replacing entities with their corresponding string.
+              (let loop ((pieces pieces)
+                         (strings '()))
+                (match pieces
+                  (()
+                   (string-concatenate-reverse strings))
+                  (((? string? str) . rest)
+                   (loop rest (cons str strings)))
+                  ((('*ENTITY* "additional" entity) . rest)
+                   (loop rest (cons (entity->string entity) strings)))
+                  ((('span _ lst ...) . rest)     ;for 
+                   (loop (append lst rest) strings))
+                  (something
+                   (pk 'unsupported-code-snippet something)
+                   (primitive-exit 1)))))
+
+            (define (syntax-highlight sxml)
+              ;; Recurse over SXML and syntax-highlight code snippets.
+              (match sxml
+                (('*TOP* decl body ...)
+                 `(*TOP* ,decl ,@(map syntax-highlight body)))
+                (('head things ...)
+                 `(head ,@things
+                        (link (@ (rel "stylesheet")
+                                 (type "text/css")
+                                 (href #$syntax-css-url)))))
+                (('pre ('@ ('class "lisp")) code-snippet ...)
+                 `(pre (@ (class "lisp"))
+                       ,(highlights->sxml
+                         (highlight lex-scheme
+                                    (concatenate-snippets code-snippet)))))
+                ((tag ('@ attributes ...) body ...)
+                 `(,tag (@ ,@attributes) ,@(map syntax-highlight body)))
+                ((tag body ...)
+                 `(,tag ,@(map syntax-highlight body)))
+                ((? string? str)
+                 str)))
+
+            (define (process-html file)
+              ;; Parse FILE and perform syntax highlighting for its Scheme
+              ;; snippets.  Install the result to #$output.
+              (format (current-error-port) "processing ~a...~%" file)
+              (let* ((shtml        (call-with-input-file file html->shtml))
+                     (highlighted  (syntax-highlight shtml))
+                     (base         (string-drop file (string-length #$input)))
+                     (target       (string-append #$output base)))
+                (mkdir-p (dirname target))
+                (call-with-output-file target
+                  (lambda (port)
+                    (write-shtml-as-html highlighted port)))))
+
+            (define (copy-as-is file)
+              ;; Copy FILE as is to #$output.
+              (let* ((base   (string-drop file (string-length #$input)))
+                     (target (string-append #$output base)))
+                (mkdir-p (dirname target))
+                (catch 'system-error
+                  (lambda ()
+                    (if (eq? 'symlink (stat:type (lstat file)))
+                        (symlink (readlink file) target)
+                        (link file target)))
+                  (lambda args
+                    (let ((errno (system-error-errno args)))
+                      (pk 'error-link file target (strerror errno))
+                      (primitive-exit 3))))))
+
+            ;; Install a UTF-8 locale so we can process UTF-8 files.
+            (setenv "GUIX_LOCPATH"
+                    #+(file-append glibc-utf8-locales "/lib/locale"))
+            (setlocale LC_ALL "en_US.utf8")
+
+            (n-par-for-each (parallel-job-count)
+                            (lambda (file)
+                              (if (string-suffix? ".html" file)
+                                  (process-html file)
+                                  (copy-as-is file)))
+                            (find-files #$input))))))
+
+  (computed-file name build))
+
 (define* (html-manual source #:key (languages %languages)
                       (version "0.0")
                       (manual "guix")
@@ -242,7 +352,10 @@ makeinfo OPTIONS."
                                                 "/html_node/images"))))
                     '#$languages))))
 
-  (computed-file (string-append manual "-html-manual") build))
+  (let* ((name   (string-append manual "-html-manual"))
+         (manual (computed-file name build)))
+    (syntax-highlighted-html manual
+                             #:name (string-append name "-highlighted"))))
 
 (define* (pdf-manual source #:key (languages %languages)
                      (version "0.0")

From 2c10c4182c6acabd4ba49ad113e48f2c050aa341 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Sun, 18 Aug 2019 22:00:20 +0200
Subject: [PATCH 063/408] gnu: xfconf: Add support for gobject-introspection.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (xfconf): Add gobject-introspection to native-inputs.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 6bd47233cb..19bf642b6a 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -140,8 +140,8 @@ Xfce Desktop Environment.")
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
-       ("glib:bin" ,glib "bin")         ;; for gdbus-codegen
-       ))
+       ("glib:bin" ,glib "bin") ;; for gdbus-codegen
+       ("gobject-introspection" ,gobject-introspection)))
     (propagated-inputs
      ;; libxfconf-0.pc refers to all these.
      `(("glib" ,glib)))

From dbfd5a1380cb8b2e2596a6669d2ae36703ea75fe Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Sun, 18 Aug 2019 22:10:46 +0200
Subject: [PATCH 064/408] gnu: xfconf: Add vala support.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (xfconf): Add vala to native-inputs.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 19bf642b6a..d4b32b335c 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -141,7 +141,8 @@ Xfce Desktop Environment.")
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
        ("glib:bin" ,glib "bin") ;; for gdbus-codegen
-       ("gobject-introspection" ,gobject-introspection)))
+       ("gobject-introspection" ,gobject-introspection)
+       ("vala" ,vala)))
     (propagated-inputs
      ;; libxfconf-0.pc refers to all these.
      `(("glib" ,glib)))

From 279b5730d41720868e4e9b93e1bf2338936bfaa7 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 16:04:52 +0200
Subject: [PATCH 065/408] gnu: xfconf: Fix tests.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (xfconf)[arguments]: Rename check phase to
  custom-check.
  [native-inputs]: Add dbus.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index d4b32b335c..045f14f768 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -127,7 +127,7 @@ Xfce Desktop Environment.")
      '(#:phases
        ;; Run check after install phase to test dbus activation.
        (modify-phases %standard-phases
-         (add-after 'install 'check
+         (add-after 'install 'custom-check
            (lambda _
              (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
              ;; Run test-suite under a dbus session.
@@ -142,7 +142,8 @@ Xfce Desktop Environment.")
        ("intltool" ,intltool)
        ("glib:bin" ,glib "bin") ;; for gdbus-codegen
        ("gobject-introspection" ,gobject-introspection)
-       ("vala" ,vala)))
+       ("vala" ,vala)
+       ("dbus" ,dbus)))
     (propagated-inputs
      ;; libxfconf-0.pc refers to all these.
      `(("glib" ,glib)))

From 48af9356722007707f001889cc217042a1933b55 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Sun, 18 Aug 2019 22:35:07 +0200
Subject: [PATCH 066/408] gnu: libxfce4ui: Add gobject-introspection support.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (libxfce4ui): Add gobject-introspection to native-inputs.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 045f14f768..05606f5ba9 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -171,7 +171,8 @@ storage system.")
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("intltool" ,intltool)))
+       ("intltool" ,intltool)
+       ("gobject-introspection" ,gobject-introspection)))
     (propagated-inputs
      `(("gtk+-3" ,gtk+)    ; required by libxfce4ui-2.pc
        ;; libxfce4kbd-private-2.pc refers to all these.

From 64200f01973e3eb0b9b5a49c7ac24bf5f75aa1b1 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Sun, 18 Aug 2019 22:36:55 +0200
Subject: [PATCH 067/408] gnu: libxfce4ui: Add vendor.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (libxfce4ui)[arguments]: Add #:configure-flags.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 05606f5ba9..512ca35fe9 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -169,6 +169,9 @@ storage system.")
                (base32
                 "1npjhznmnckhnylsv3l7p1zvhckhmp9d7vifs8w12kdfmrg0fjf4"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--with-vendor-info=GNU Guix")))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)

From 8cc5d3dc4d3c66d19d14b65f75afbfe4a695b6af Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 16:06:59 +0200
Subject: [PATCH 068/408] gnu: xfce4-panel: Fix tzdata path.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (xfce4-panel)[inputs]: Add tzdata.
[arguments] Add Fix-tzdata-path phase.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 512ca35fe9..0487c24b68 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -37,6 +37,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (gnu artwork)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages pkg-config)
@@ -309,6 +310,15 @@ management D-Bus specification.")
                 "1x3flv86jh9vqah7mr5mmfx2991mc6icsqjygsc3j88lgsyz7y6m"))
               (patches (search-patches "xfce4-panel-plugins.patch"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tzdata-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (string-append "plugins/clock/clock.c")
+               (("/usr/share/zoneinfo")
+                (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
+             #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
@@ -317,7 +327,8 @@ management D-Bus specification.")
      `(("gtk+-3" ,gtk+)                 ; required by libxfce4panel-2.0.pc
        ("libxfce4util" ,libxfce4util))) ; required by libxfce4panel-2.0.pc
     (inputs
-     `(("exo" ,exo)
+     `(("tzdata" ,tzdata) ;; For fix-tzdata-path phase only.
+       ("exo" ,exo)
        ("gtk+-2" ,gtk+-2)
        ("xfconf" ,xfconf)
        ("garcon" ,garcon)

From a35f153d54a2e571c88386424c7846b2d4b59689 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 7 Sep 2019 00:42:16 +0200
Subject: [PATCH 069/408] gnu: python-scipy: Update to 1.3.1.

* gnu/packages/python-xyz.scm (python-scipy): Update to 1.3.1.
(python2-scipy): Keep at version 1.2.2.
---
 gnu/packages/python-xyz.scm | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d5fcc5668c..2827ddf770 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -4033,14 +4033,14 @@ operators such as union, intersection, and difference.")
 (define-public python-scipy
   (package
     (name "python-scipy")
-    (version "1.2.2")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "scipy" version))
        (sha256
         (base32
-         "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4"))))
+         "1df113c9i6vazsn6y3n9wc22jh737z1g7dmx3mypkdwpdnscyhr6"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-numpy" ,python-numpy)
@@ -4136,9 +4136,19 @@ routines such as routines for numerical integration and optimization.")
     (properties `((python2-variant . ,(delay python2-scipy))))
     (license license:bsd-3)))
 
+;; Version 1.2.2 is the last version to support Python 2
 (define-public python2-scipy
-  (package-with-python2
-   (strip-python2-variant python-scipy)))
+  (package
+    (inherit (package-with-python2
+              (strip-python2-variant python-scipy)))
+    (version "1.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "scipy" version))
+       (sha256
+        (base32
+         "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4"))))))
 
 (define-public python-socksipy-branch
   (package

From 3fe53f49a718468bc086fa7d41740505d407e3ba Mon Sep 17 00:00:00 2001
From: Mark H Weaver 
Date: Fri, 6 Sep 2019 19:35:08 -0400
Subject: [PATCH 070/408] =?UTF-8?q?Revert=20"services:=20Add=20=E2=80=98/u?=
 =?UTF-8?q?sr/bin/env=E2=80=99=20special=20file."?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit 3b38bf141a464e1bb370af7d2b2651d1efb29781.

The Guix project discussed this years ago and decided against including
/usr/bin/env.  That decision should not be reversed without a wider
discussion.
---
 gnu/services/base.scm | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 97c53eeaf3..dcb7278f0f 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -8,7 +8,6 @@
 ;;; Copyright © 2016 Ricardo Wurmus 
 ;;; Copyright © 2018 Mathieu Othacehe 
 ;;; Copyright © 2019 Efraim Flashner 
-;;; Copyright © 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2019 John Soo 
 ;;;
 ;;; This file is part of GNU Guix.
@@ -42,9 +41,9 @@
   #:use-module (gnu packages admin)
   #:use-module ((gnu packages linux)
                 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
-  #:use-module (gnu packages bash)
   #:use-module ((gnu packages base)
-                #:select (canonical-package coreutils glibc glibc-utf8-locales))
+                #:select (canonical-package glibc glibc-utf8-locales))
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages package-management)
   #:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
   #:use-module (gnu packages linux)
@@ -2426,8 +2425,6 @@ to handle."
 
         (service special-files-service-type
                  `(("/bin/sh" ,(file-append (canonical-package bash)
-                                            "/bin/sh"))
-                   ("/usr/bin/env" ,(file-append (canonical-package coreutils)
-                                                 "/usr/bin/env"))))))
+                                            "/bin/sh"))))))
 
 ;;; base.scm ends here

From be0fb599e7f09af5dfe39aba2718cddb3b98b05d Mon Sep 17 00:00:00 2001
From: Mark H Weaver 
Date: Fri, 6 Sep 2019 20:38:06 -0400
Subject: [PATCH 071/408] gnu: linux-libre@4.4: Update to 4.4.191.

* gnu/packages/linux.scm (linux-libre-4.4-version): Update to 4.4.191.
(linux-libre-4.4-pristine-source): Update hash.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 6c4ab22135..08089a9d5c 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -382,10 +382,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.190")
+(define-public linux-libre-4.4-version "4.4.191")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "1rf28cjrrmj7mm8xqlfld6k20ddk15j4mmyarqibjx9pk9acij7y")))
+        (hash (base32 "0x3lnq4xyj5v6r1cz4jizm4vdspws1nb806f5qczwi3yil5nm6bh")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))

From 67ad69b7682d63e892344d9a6d23e7eed0d96358 Mon Sep 17 00:00:00 2001
From: Mark H Weaver 
Date: Fri, 6 Sep 2019 20:39:13 -0400
Subject: [PATCH 072/408] gnu: linux-libre@4.9: Update to 4.9.191.

* gnu/packages/linux.scm (linux-libre-4.9-version): Update to 4.9.191.
(linux-libre-4.9-pristine-source): Update hash.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 08089a9d5c..b44502b5e6 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -374,10 +374,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.190")
+(define-public linux-libre-4.9-version "4.9.191")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "05ha3snfk0vdqk9i27icwpq2if0h2jvshavn69ldwqm4h2h1r2py")))
+        (hash (base32 "1g5p736p8zx5rmxaj56yw93jp768npl868jsn8973dny0rsbim6y")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))

From d45f5c40a2434da93280b4a0a6c530bd200149be Mon Sep 17 00:00:00 2001
From: Mark H Weaver 
Date: Fri, 6 Sep 2019 20:40:18 -0400
Subject: [PATCH 073/408] gnu: linux-libre@4.14: Update to 4.14.142.

* gnu/packages/linux.scm (linux-libre-4.14-version): Update to 4.14.142.
(linux-libre-4.14-pristine-source): Update hash.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b44502b5e6..053c778871 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -366,10 +366,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.141")
+(define-public linux-libre-4.14-version "4.14.142")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "05rs411rw10hhnfzvaxmcik3pq20i1i05shvvra4bv164f0z1f8b")))
+        (hash (base32 "1wwhnm1n1b6yzsd2zzzf9i3n4hlvgnph70p67cwahw0ik4ssayz6")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))

From a6ec7eba26dc75204b5f6f52b92df46520bf8c30 Mon Sep 17 00:00:00 2001
From: Mark H Weaver 
Date: Fri, 6 Sep 2019 20:41:23 -0400
Subject: [PATCH 074/408] gnu: linux-libre@4.14: Update to 4.19.71.

* gnu/packages/linux.scm (linux-libre-4.19-version): Update to 4.19.71.
(linux-libre-4.19-pristine-source): Update hash.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 053c778871..42d1bc7c20 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -358,10 +358,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.2)))
 
-(define-public linux-libre-4.19-version "4.19.69")
+(define-public linux-libre-4.19-version "4.19.71")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "11yrw8ixd5ni9rlpndqsz2ihx6k8qaf35a1lf164lkhaa85pd4f0")))
+        (hash (base32 "1bjwkb7k82l646ryyy0jbwsnygm2qsxgcwli8bdrj844skzynlqz")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))

From f66aee3d0d2f573187ed5d44ae7c13d73cd4097a Mon Sep 17 00:00:00 2001
From: Mark H Weaver 
Date: Fri, 6 Sep 2019 20:42:05 -0400
Subject: [PATCH 075/408] gnu: linux-libre: Update to 5.2.13.

* gnu/packages/linux.scm (linux-libre-5.2-version): Update to 5.2.13.
(linux-libre-5.2-pristine-source): Update hash.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 42d1bc7c20..270e2e5dcc 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -350,10 +350,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.2-version "5.2.11")
+(define-public linux-libre-5.2-version "5.2.13")
 (define-public linux-libre-5.2-pristine-source
   (let ((version linux-libre-5.2-version)
-        (hash (base32 "1y9kn1zny3xpmbi5an3g7hbzywnycys8chfaw6laij1xk4gq6ahc")))
+        (hash (base32 "12hpph3iynr22mfwz7745lp01waf2kg579hr56d4pvhx4iahzdhp")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.2)))

From 08b35210006c260703973b98d7cd1c6895c1cd7f Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Sat, 7 Sep 2019 11:15:06 +0200
Subject: [PATCH 076/408] gnu: wireguard: Update to 0.0.20190905.

* gnu/packages/vpn.scm (wireguard): Update to 0.0.20190905.
---
 gnu/packages/vpn.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 3c6db64ad7..3df9873781 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -452,14 +452,14 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
 (define-public wireguard
   (package
     (name "wireguard")
-    (version "0.0.20190702")
+    (version "0.0.20190905")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.zx2c4.com/WireGuard/snapshot/"
                                   "WireGuard-" version ".tar.xz"))
               (sha256
                (base32
-                "1b5s1ncwqxdgb0c6cd07x4ynnj6cpbiqp4bxqir7mm5bf6y124qs"))))
+                "1xm8w773impgp11jj6kp3fghld0aj8nhfpqla6lflsr8npp7qxkq"))))
     (build-system gnu-build-system)
     (outputs '("out" ; The WireGuard userspace tools
                "kernel-patch")) ; A patch to build Linux with WireGuard support

From c3a7dae831bffa2afd0c928ebeb3b3623fb75289 Mon Sep 17 00:00:00 2001
From: Kei Kebreau 
Date: Sat, 7 Sep 2019 00:55:29 -0400
Subject: [PATCH 077/408] gnu: qtermwidget: Enable UTF-8 support.

* gnu/packages/lxqt.scm (qtermwidget)[inputs]: Add utf8proc.
---
 gnu/packages/lxqt.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index e72f5b82d9..e5487d3ae4 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -1177,7 +1177,8 @@ processes currently in existence, much like code{top} or code{ps}.")
         (base32 "0v1vvi8vf9y8nv8y0gzffaqji53s75ab5jypksih0ndcws8ryww4"))))
     (build-system cmake-build-system)
     (inputs
-     `(("qtbase" ,qtbase)))
+     `(("qtbase" ,qtbase)
+       ("utf8proc" ,utf8proc)))
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))

From 7854bbeb3f88ad4747b0a4ca01021ef2741f7b4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Sat, 7 Sep 2019 15:37:22 +0200
Subject: [PATCH 078/408] doc: Work around (htmlprag) parser issue.

* doc/build.scm (guile-lib/htmlprag-fixed): New variable.
(syntax-highlighted-html): Use it instead of GUILE-LIB.
---
 doc/build.scm | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/doc/build.scm b/doc/build.scm
index c99bd505fd..5bc95d2517 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -29,6 +29,7 @@
              (guix gexp)
              (guix git)
              (guix git-download)
+             (guix utils)
              (git)
              (gnu packages base)
              (gnu packages gawk)
@@ -165,6 +166,35 @@ as well as images, OS examples, and translations."
   ;; Options passed to 'makeinfo --html'.
   '("--css-ref=https://www.gnu.org/software/gnulib/manual.css"))
 
+(define guile-lib/htmlprag-fixed
+  ;; Guile-Lib with a hotfix for (htmlprag).
+  (package
+    (inherit guile-lib)
+    (source (origin
+              (inherit (package-source guile-lib))
+              (modules '(( guix build utils)))
+              (snippet
+               '(begin
+                  ;; When parsing
+                  ;; "

foo

\n
", + ;; 'html->shtml' would mistakenly close 'blockquote' right + ;; before

. This patch removes 'p' from the + ;; 'parent-constraints' alist to fix that. + (substitute* "src/htmlprag.scm" + (("^[[:blank:]]*\\(p[[:blank:]]+\\. \\(body td th\\)\\).*") + "")) + #t)))) + (arguments + (substitute-keyword-arguments (package-arguments guile-lib) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'skip-known-failure + (lambda _ + ;; XXX: The above change causes one test failure among + ;; the htmlprag tests. + (setenv "XFAIL_TESTS" "htmlprag.scm") + #t)))))))) + (define* (syntax-highlighted-html input #:key (name "highlighted-syntax") @@ -174,7 +204,7 @@ as well as images, OS examples, and translations." to (1) add them a link to SYNTAX-CSS-URL, and (2) highlight the syntax of all its

 blocks (as produced by 'makeinfo --html')."
   (define build
-    (with-extensions (list guile-lib guile-syntax-highlight)
+    (with-extensions (list guile-lib/htmlprag-fixed guile-syntax-highlight)
       (with-imported-modules '((guix build utils))
         #~(begin
             (use-modules (htmlprag)

From 8ba31e8bd1f780301a429bbd826aa26daad9e71c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Sat, 7 Sep 2019 18:21:01 +0200
Subject: [PATCH 079/408] doc: Use @lisp instead of @example for Scheme
 snippets.

This is a followup to f8c143a7131d6f40f387f4cd2ad1fa78b5e2f429, which
allows syntax highlighting of @lisp snippets in the HTML output.

* doc/guix.texi, doc/contributing.texi: Use @lisp instead of @example
for all the Scheme snippets.
---
 doc/contributing.texi |  16 +-
 doc/guix.texi         | 642 +++++++++++++++++++++---------------------
 2 files changed, 329 insertions(+), 329 deletions(-)

diff --git a/doc/contributing.texi b/doc/contributing.texi
index 59917193f1..655c8283e5 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -376,7 +376,7 @@ package and does not contain any version number.
 
 For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:
 
-@example
+@lisp
 (define-public gtk+
   (package
     (name "gtk+")
@@ -387,15 +387,15 @@ For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows
     (name "gtk+")
     (version "2.24.20")
     ...))
-@end example
+@end lisp
 If we also wanted GTK+ 3.8.2, this would be packaged as
-@example
+@lisp
 (define-public gtk+-3.8
   (package
     (name "gtk+")
     (version "3.8.2")
     ...))
-@end example
+@end lisp
 
 @c See ,
 @c for a discussion of what follows.
@@ -432,7 +432,7 @@ kernel.)  It is best to use the full commit identifiers in
 @code{origin}s, though, to avoid ambiguities.  A typical package
 definition may look like this:
 
-@example
+@lisp
 (define my-package
   (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
         (revision "1"))          ;Guix package revision
@@ -447,7 +447,7 @@ definition may look like this:
                 (file-name (git-file-name name version))))
       ;; @dots{}
       )))
-@end example
+@end lisp
 
 @node Synopses and Descriptions
 @subsection Synopses and Descriptions
@@ -825,12 +825,12 @@ recommend using the @code{qemu-binfmt-service-type} to emulate them.  In
 order to enable it, add the following service to the list of services in
 your @code{operating-system} configuration:
 
-@example
+@lisp
 (service qemu-binfmt-service-type
  (qemu-binfmt-configuration
    (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))
    (guix-support? #t)))
-@end example
+@end lisp
 
 Then reconfigure your system.
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 6d6a09b36b..83f791d71d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1035,7 +1035,7 @@ build are copied back to the initial machine.
 
 The @file{/etc/guix/machines.scm} file typically looks like this:
 
-@example
+@lisp
 (list (build-machine
         (name "eightysix.example.org")
         (system "x86_64-linux")
@@ -1051,7 +1051,7 @@ The @file{/etc/guix/machines.scm} file typically looks like this:
         (private-key
          (string-append (getenv "HOME")
                         "/.ssh/identity-for-guix"))))
-@end example
+@end lisp
 
 @noindent
 In the example above we specify a list of two build machines, one for
@@ -2756,9 +2756,9 @@ Install the package that the code within @var{file} evaluates to.
 As an example, @var{file} might contain a definition like this
 (@pxref{Defining Packages}):
 
-@example
+@lisp
 @verbatiminclude package-hello.scm
-@end example
+@end lisp
 
 Developers may find it useful to include such a @file{guix.scm} file
 in the root of their project source tree that can be used to test
@@ -2814,7 +2814,7 @@ so on.
 of packages:
 
 @findex packages->manifest
-@example
+@lisp
 (use-package-modules guile emacs)
 
 (packages->manifest
@@ -2822,7 +2822,7 @@ of packages:
        guile-2.0
        ;; Use a specific package output.
        (list guile-2.0 "debug")))
-@end example
+@end lisp
 
 @findex specifications->manifest
 In this example we have to know which modules define the @code{emacs}
@@ -2832,10 +2832,10 @@ instead provide regular package specifications and let
 @code{specifications->manifest} look up the corresponding package
 objects, like this:
 
-@example
+@lisp
 (specifications->manifest
  '("emacs" "guile@@2.2" "guile@@2.2:debug"))
-@end example
+@end lisp
 
 @item --roll-back
 @cindex rolling back
@@ -4548,9 +4548,9 @@ within @var{file} evaluates to.
 As an example, @var{file} might contain a definition like this
 (@pxref{Defining Packages}):
 
-@example
+@lisp
 @verbatiminclude environment-gdb.scm
-@end example
+@end lisp
 
 @item --manifest=@var{file}
 @itemx -m @var{file}
@@ -5124,7 +5124,7 @@ The high-level interface to package definitions is implemented in the
 example, the package definition, or @dfn{recipe}, for the GNU Hello
 package looks like this:
 
-@example
+@lisp
 (define-module (gnu packages hello)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -5150,7 +5150,7 @@ package looks like this:
     (description "Guess what GNU Hello prints!")
     (home-page "https://www.gnu.org/software/hello/")
     (license gpl3+)))
-@end example
+@end lisp
 
 @noindent
 Without being a Scheme expert, the reader may have guessed the meaning
@@ -5331,7 +5331,7 @@ the name of a package and returns its new name after rewrite.
 @noindent
 Consider this example:
 
-@example
+@lisp
 (define libressl-instead-of-openssl
   ;; This is a procedure to replace OPENSSL by LIBRESSL,
   ;; recursively.
@@ -5339,7 +5339,7 @@ Consider this example:
 
 (define git-with-libressl
   (libressl-instead-of-openssl git))
-@end example
+@end lisp
 
 @noindent
 Here we first define a rewriting procedure that replaces @var{openssl}
@@ -5361,11 +5361,11 @@ replacement for that package.
 
 The example above could be rewritten this way:
 
-@example
+@lisp
 (define libressl-instead-of-openssl
   ;; Replace all the packages called "openssl" with LibreSSL.
   (package-input-rewriting/spec `(("openssl" . ,(const libressl)))))
-@end example
+@end lisp
 
 The key difference here is that, this time, packages are matched by spec and
 not by identity.  In other words, any package in the graph that is called
@@ -5431,11 +5431,11 @@ defaults to @code{"out"} (@pxref{Packages with Multiple Outputs}, for
 more on package outputs).  For example, the list below specifies three
 inputs:
 
-@example
+@lisp
 `(("libffi" ,libffi)
   ("libunistring" ,libunistring)
   ("glib:bin" ,glib "bin"))  ;the "bin" output of Glib
-@end example
+@end lisp
 
 @cindex cross compilation, package dependencies
 The distinction between @code{native-inputs} and @code{inputs} is
@@ -5516,7 +5516,7 @@ identifier resolves to the package being defined.
 The example below shows how to add a package as a native input of itself when
 cross-compiling:
 
-@example
+@lisp
 (package
   (name "guile")
   ;; ...
@@ -5526,7 +5526,7 @@ cross-compiling:
   (native-inputs (if (%current-target-system)
                      `(("self" ,this-package))
                      '())))
-@end example
+@end lisp
 
 It is an error to refer to @code{this-package} outside a package definition.
 @end deffn
@@ -5563,11 +5563,11 @@ clone the Git version control repository, and check out the revision
 specified in the @code{uri} field as a @code{git-reference} object; a
 @code{git-reference} looks like this:
 
-@example
+@lisp
 (git-reference
   (url "https://git.savannah.gnu.org/git/hello.git")
   (commit "v2.10"))
-@end example
+@end lisp
 @end table
 
 @item @code{sha256}
@@ -6779,7 +6779,7 @@ in a monad---values that carry this additional context---are called
 
 Consider this ``normal'' procedure:
 
-@example
+@lisp
 (define (sh-symlink store)
   ;; Return a derivation that symlinks the 'bash' executable.
   (let* ((drv (package-derivation store bash))
@@ -6787,19 +6787,19 @@ Consider this ``normal'' procedure:
          (sh  (string-append out "/bin/bash")))
     (build-expression->derivation store "sh"
                                   `(symlink ,sh %output))))
-@end example
+@end lisp
 
 Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten
 as a monadic function:
 
-@example
+@lisp
 (define (sh-symlink)
   ;; Same, but return a monadic value.
   (mlet %store-monad ((drv (package->derivation bash)))
     (gexp->derivation "sh"
                       #~(symlink (string-append #$drv "/bin/bash")
                                  #$output))))
-@end example
+@end lisp
 
 There are several things to note in the second version: the @code{store}
 parameter is now implicit and is ``threaded'' in the calls to the
@@ -6811,12 +6811,12 @@ As it turns out, the call to @code{package->derivation} can even be
 omitted since it will take place implicitly, as we will see later
 (@pxref{G-Expressions}):
 
-@example
+@lisp
 (define (sh-symlink)
   (gexp->derivation "sh"
                     #~(symlink (string-append #$bash "/bin/bash")
                                #$output)))
-@end example
+@end lisp
 
 @c See
 @c 
@@ -6826,10 +6826,10 @@ said, ``you exit a monad like you exit a building on fire: by running''.
 So, to exit the monad and get the desired effect, one must use
 @code{run-with-store}:
 
-@example
+@lisp
 (run-with-store (open-connection) (sh-symlink))
 @result{} /gnu/store/...-sh-symlink
-@end example
+@end lisp
 
 Note that the @code{(guix monad-repl)} module extends the Guile REPL with
 new ``meta-commands'' to make it easier to deal with monadic procedures:
@@ -6878,7 +6878,7 @@ Guile.  Thus we use this somewhat cryptic symbol inherited from the
 Haskell language.}.  There can be one @var{mproc} or several of them, as
 in this example:
 
-@example
+@lisp
 (run-with-state
     (with-monad %state-monad
       (>>= (return 1)
@@ -6888,7 +6888,7 @@ in this example:
 
 @result{} 4
 @result{} some-state
-@end example
+@end lisp
 @end deffn
 
 @deffn {Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @
@@ -6947,7 +6947,7 @@ Consider the example below.  The @code{square} procedure returns a value
 in the state monad.  It returns the square of its argument, but also
 increments the current state value:
 
-@example
+@lisp
 (define (square x)
   (mlet %state-monad ((count (current-state)))
     (mbegin %state-monad
@@ -6957,7 +6957,7 @@ increments the current state value:
 (run-with-state (sequence %state-monad (map square (iota 3))) 0)
 @result{} (0 1 4)
 @result{} 3
-@end example
+@end lisp
 
 When ``run'' through @var{%state-monad}, we obtain that additional state
 value, which is the number of @code{square} calls.
@@ -7032,14 +7032,14 @@ entries for which @var{select?} does not return true.
 
 The example below adds a file to the store, under two different names:
 
-@example
+@lisp
 (run-with-store (open-connection)
   (mlet %store-monad ((a (interned-file "README"))
                       (b (interned-file "README" "LEGU-MIN")))
     (return (list a b))))
 
 @result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN")
-@end example
+@end lisp
 
 @end deffn
 
@@ -7133,22 +7133,22 @@ below.)
 
 To illustrate the idea, here is an example of a gexp:
 
-@example
+@lisp
 (define build-exp
   #~(begin
       (mkdir #$output)
       (chdir #$output)
       (symlink (string-append #$coreutils "/bin/ls")
                "list-files")))
-@end example
+@end lisp
 
 This gexp can be passed to @code{gexp->derivation}; we obtain a
 derivation that builds a directory containing exactly one symlink to
 @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls}:
 
-@example
+@lisp
 (gexp->derivation "the-thing" build-exp)
-@end example
+@end lisp
 
 As one would expect, the @code{"/gnu/store/@dots{}-coreutils-8.22"} string is
 substituted to the reference to the @var{coreutils} package in the
@@ -7164,7 +7164,7 @@ host---versus references to cross builds of a package.  To that end, the
 @code{#+} plays the same role as @code{#$}, but is a reference to a
 native package build:
 
-@example
+@lisp
 (gexp->derivation "vi"
    #~(begin
        (mkdir #$output)
@@ -7173,7 +7173,7 @@ native package build:
                 (string-append #$emacs "/bin/emacs")
                 (string-append #$output "/bin/vi")))
    #:target "mips64el-linux-gnu")
-@end example
+@end lisp
 
 @noindent
 In the example above, the native build of @var{coreutils} is used, so
@@ -7187,7 +7187,7 @@ able to use certain Guile modules from the ``host environment'' in the
 gexp, so those modules should be imported in the ``build environment''.
 The @code{with-imported-modules} form allows you to express that:
 
-@example
+@lisp
 (let ((build (with-imported-modules '((guix build utils))
                #~(begin
                    (use-modules (guix build utils))
@@ -7197,7 +7197,7 @@ The @code{with-imported-modules} form allows you to express that:
                         #$build
                         (display "success!\n")
                         #t)))
-@end example
+@end lisp
 
 @noindent
 In this example, the @code{(guix build utils)} module is automatically
@@ -7213,7 +7213,7 @@ because of missing dependent modules.  The @code{source-module-closure}
 procedure computes the closure of a module by looking at its source file
 headers, which comes in handy in this case:
 
-@example
+@lisp
 (use-modules (guix modules))   ;for 'source-module-closure'
 
 (with-imported-modules (source-module-closure
@@ -7224,7 +7224,7 @@ headers, which comes in handy in this case:
                         (use-modules (guix build utils)
                                      (gnu build vm))
                         @dots{})))
-@end example
+@end lisp
 
 @cindex extensions, for gexps
 @findex with-extensions
@@ -7233,7 +7233,7 @@ modules, but also ``extensions'' such as Guile bindings to C libraries
 or other ``full-blown'' packages.  Say you need the @code{guile-json}
 package available on the build side, here's how you would do it:
 
-@example
+@lisp
 (use-modules (gnu packages guile))  ;for 'guile-json'
 
 (with-extensions (list guile-json)
@@ -7241,7 +7241,7 @@ package available on the build side, here's how you would do it:
                     #~(begin
                         (use-modules (json))
                         @dots{})))
-@end example
+@end lisp
 
 The syntactic form to construct gexps is summarized below.
 
@@ -7310,12 +7310,12 @@ Each item in @var{modules} can be the name of a module, such as
 @code{(guix build utils)}, or it can be a module name, followed by an
 arrow, followed by a file-like object:
 
-@example
+@lisp
 `((guix build utils)
   (guix gcrypt)
   ((guix config) => ,(scheme-file "config.scm"
                                   #~(define-module @dots{}))))
-@end example
+@end lisp
 
 @noindent
 In the example above, the first two modules are taken from the search
@@ -7414,10 +7414,10 @@ The @code{local-file}, @code{plain-file}, @code{computed-file},
 @dfn{file-like objects}.  That is, when unquoted in a G-expression,
 these objects lead to a file in the store.  Consider this G-expression:
 
-@example
+@lisp
 #~(system* #$(file-append glibc "/sbin/nscd") "-f"
            #$(local-file "/tmp/my-nscd.conf"))
-@end example
+@end lisp
 
 The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it
 to the store.  Once expanded, for instance @i{via}
@@ -7473,13 +7473,13 @@ Look up @var{exp}'s modules in @var{module-path}.
 The example below builds a script that simply invokes the @command{ls}
 command:
 
-@example
+@lisp
 (use-modules (guix gexp) (gnu packages base))
 
 (gexp->script "list-files"
               #~(execl #$(file-append coreutils "/bin/ls")
                        "ls"))
-@end example
+@end lisp
 
 When ``running'' it through the store (@pxref{The Store Monad,
 @code{run-with-store}}), we obtain a derivation that produces an
@@ -7537,14 +7537,14 @@ to create will reference items from the store.  This is typically the
 case when building a configuration file that embeds store file names,
 like this:
 
-@example
+@lisp
 (define (profile.sh)
   ;; Return the name of a shell script in the store that
   ;; initializes the 'PATH' environment variable.
   (text-file* "profile.sh"
               "export PATH=" coreutils "/bin:"
               grep "/bin:" sed "/bin\n"))
-@end example
+@end lisp
 
 In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file
 will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby
@@ -7556,10 +7556,10 @@ Return an object representing store file @var{name} containing
 @var{text}.  @var{text} is a sequence of strings and file-like objects,
 as in:
 
-@example
+@lisp
 (mixed-text-file "profile"
                  "export PATH=" coreutils "/bin:" grep "/bin")
-@end example
+@end lisp
 
 This is the declarative counterpart of @code{text-file*}.
 @end deffn
@@ -7570,13 +7570,13 @@ Each item in @var{files} must be a two-element list where the first element is t
 file name to use in the new directory, and the second element is a gexp
 denoting the target file.  Here's an example:
 
-@example
+@lisp
 (file-union "etc"
             `(("hosts" ,(plain-file "hosts"
                                     "127.0.0.1 localhost"))
               ("bashrc" ,(plain-file "bashrc"
                                      "alias ls='ls --color=auto'"))))
-@end example
+@end lisp
 
 This yields an @code{etc} directory containing these two files.
 @end deffn
@@ -7585,9 +7585,9 @@ This yields an @code{etc} directory containing these two files.
 Return a directory that is the union of @var{things}, where @var{things} is a list of
 file-like objects denoting directories.  For example:
 
-@example
+@lisp
 (directory-union "guile+emacs" (list guile emacs))
-@end example
+@end lisp
 
 yields a directory that is the union of the @code{guile} and @code{emacs} packages.
 @end deffn
@@ -7599,19 +7599,19 @@ and @var{suffix}, where @var{obj} is a lowerable object and each
 
 As an example, consider this gexp:
 
-@example
+@lisp
 (gexp->script "run-uname"
               #~(system* #$(file-append coreutils
                                         "/bin/uname")))
-@end example
+@end lisp
 
 The same effect could be achieved with:
 
-@example
+@lisp
 (gexp->script "run-uname"
               #~(system* (string-append #$coreutils
                                         "/bin/uname")))
-@end example
+@end lisp
 
 There is one difference though: in the @code{file-append} case, the
 resulting script contains the absolute file name as a string, whereas in
@@ -8099,9 +8099,9 @@ Build the package, derivation, or other file-like object that the code within
 As an example, @var{file} might contain a package definition like this
 (@pxref{Defining Packages}):
 
-@example
+@lisp
 @verbatiminclude package-hello.scm
-@end example
+@end lisp
 
 @item --expression=@var{expr}
 @itemx -e @var{expr}
@@ -8974,13 +8974,13 @@ and @command{guix refresh} needs a little help.  Most updaters honor the
 @code{upstream-name} property in package definitions, which can be used
 to that effect:
 
-@example
+@lisp
 (define-public network-manager
   (package
     (name "network-manager")
     ;; @dots{}
     (properties '((upstream-name . "NetworkManager")))))
-@end example
+@end lisp
 
 When passed @code{--update}, it modifies distribution source files to
 update the version numbers and source tarball hashes of those package
@@ -9323,14 +9323,14 @@ Package developers can specify in package recipes the
 name and version of the package when they differ from the name or version
 that Guix uses, as in this example:
 
-@example
+@lisp
 (package
   (name "grub")
   ;; @dots{}
   ;; CPE calls this package "grub2".
   (properties '((cpe-name . "grub2")
                 (cpe-version . "2.3")))
-@end example
+@end lisp
 
 @c See .
 Some entries in the CVE database do not specify which version of a
@@ -9338,7 +9338,7 @@ package they apply to, and would thus ``stick around'' forever.  Package
 developers who found CVE alerts and verified they can be ignored can
 declare them as in this example:
 
-@example
+@lisp
 (package
   (name "t1lib")
   ;; @dots{}
@@ -9347,7 +9347,7 @@ declare them as in this example:
                                     "CVE-2011-1553"
                                     "CVE-2011-1554"
                                     "CVE-2011-5244")))))
-@end example
+@end lisp
 
 @item formatting
 Warn about obvious source code formatting issues: trailing white space,
@@ -10447,11 +10447,11 @@ mode, as in the example above.  However, more recent machines rely instead on
 the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot.  In that case,
 the @code{bootloader} field should contain something along these lines:
 
-@example
+@lisp
 (bootloader-configuration
   (bootloader grub-efi-bootloader)
   (target "/boot/efi"))
-@end example
+@end lisp
 
 @xref{Bootloader Configuration}, for more information on the available
 configuration options.
@@ -10588,11 +10588,11 @@ Partitioning,,, guile, GNU Guile Reference Manual}).  For instance, the
 following expression returns a list that contains all the services in
 @code{%desktop-services} minus the Avahi service:
 
-@example
+@lisp
 (remove (lambda (service)
           (eq? (service-kind service) avahi-service-type))
         %desktop-services)
-@end example
+@end lisp
 
 @unnumberedsubsec Instantiating the System
 
@@ -10753,12 +10753,12 @@ the home directory of newly-created user accounts.
 
 For instance, a valid value may look like this:
 
-@example
+@lisp
 `((".bashrc" ,(plain-file "bashrc" "echo Hello\n"))
   (".guile" ,(plain-file "guile"
                          "(use-modules (ice-9 readline))
                           (activate-readline)")))
-@end example
+@end lisp
 
 @item @code{issue} (default: @code{%default-issue})
 A string denoting the contents of the @file{/etc/issue} file, which is
@@ -10836,14 +10836,14 @@ this identifier resolves to the operating system being defined.
 The example below shows how to refer to the operating system being defined in
 the definition of the @code{label} field:
 
-@example
+@lisp
 (use-modules (gnu) (guix))
 
 (operating-system
   ;; ...
   (label (package-full-name
           (operating-system-kernel this-operating-system))))
-@end example
+@end lisp
 
 It is an error to refer to @code{this-operating-system} outside an operating
 system definition.
@@ -10859,12 +10859,12 @@ The list of file systems to be mounted is specified in the
 (@pxref{Using the Configuration System}).  Each file system is declared
 using the @code{file-system} form, like this:
 
-@example
+@lisp
 (file-system
   (mount-point "/home")
   (device "/dev/sda3")
   (type "ext4"))
-@end example
+@end lisp
 
 As usual, some of the fields are mandatory---those shown in the example
 above---while others can be omitted.  These are described below.
@@ -10898,12 +10898,12 @@ procedure, UUIDs are created using @code{uuid}, and @file{/dev} node are
 plain strings.  Here's an example of a file system referred to by its
 label, as shown by the @command{e2label} command:
 
-@example
+@lisp
 (file-system
   (mount-point "/home")
   (type "ext4")
   (device (file-system-label "my-home")))
-@end example
+@end lisp
 
 @findex uuid
 UUIDs are converted from their string representation (as shown by the
@@ -10914,12 +10914,12 @@ form of UUID used by the ext2 family of file systems and others, but it
 is different from ``UUIDs'' found in FAT file systems, for instance.},
 like this:
 
-@example
+@lisp
 (file-system
   (mount-point "/home")
   (type "ext4")
   (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))
-@end example
+@end lisp
 
 When the source of a file system is a mapped device (@pxref{Mapped
 Devices}), its @code{device} field @emph{must} refer to the mapped
@@ -11094,12 +11094,12 @@ The @file{/dev/mapper/home}
 device can then be used as the @code{device} of a @code{file-system}
 declaration (@pxref{File Systems}).
 
-@example
+@lisp
 (mapped-device
   (source "/dev/sda3")
   (target "home")
   (type luks-device-mapping))
-@end example
+@end lisp
 
 Alternatively, to become independent of device numbering, one may obtain
 the LUKS UUID (@dfn{unique identifier}) of the source device by a
@@ -11111,12 +11111,12 @@ cryptsetup luksUUID /dev/sda3
 
 and use it as follows:
 
-@example
+@lisp
 (mapped-device
   (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44"))
   (target "home")
   (type luks-device-mapping))
-@end example
+@end lisp
 
 @cindex swap encryption
 It is also desirable to encrypt swap space, since swap space may contain
@@ -11128,12 +11128,12 @@ swap file is encrypted because the entire device is encrypted.
 A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1}
 may be declared as follows:
 
-@example
+@lisp
 (mapped-device
   (source (list "/dev/sda1" "/dev/sdb1"))
   (target "/dev/md0")
   (type raid-device-mapping))
-@end example
+@end lisp
 
 The @file{/dev/md0} device can then be used as the @code{device} of a
 @code{file-system} declaration (@pxref{File Systems}).
@@ -11152,7 +11152,7 @@ User accounts and groups are entirely managed through the
 @code{operating-system} declaration.  They are specified with the
 @code{user-account} and @code{user-group} forms:
 
-@example
+@lisp
 (user-account
   (name "alice")
   (group "users")
@@ -11162,7 +11162,7 @@ User accounts and groups are entirely managed through the
                           "cdrom")) ;the good ol' CD-ROM
   (comment "Bob's sister")
   (home-directory "/home/alice"))
-@end example
+@end lisp
 
 When booting or upon completion of @command{guix system reconfigure},
 the system ensures that only the user accounts and groups specified in
@@ -11226,14 +11226,14 @@ If you @emph{do} want to set an initial password for an account, then
 this field must contain the encrypted password, as a string.  You can use the
 @code{crypt} procedure for this purpose:
 
-@example
+@lisp
 (user-account
   (name "charlie")
   (group "users")
 
   ;; Specify a SHA-512-hashed initial password.
   (password (crypt "InitialPassword!" "$6$abc")))
-@end example
+@end lisp
 
 @quotation Note
 The hash of this initial password will be available in a file in
@@ -11251,9 +11251,9 @@ Guile Reference Manual}, for information on Guile's @code{crypt} procedure.
 @cindex groups
 User group declarations are even simpler:
 
-@example
+@lisp
 (user-group (name "students"))
-@end example
+@end lisp
 
 @deftp {Data Type} user-group
 This type is for, well, user groups.  There are just a few fields:
@@ -11340,7 +11340,7 @@ optional variant name, an optional keyboard model name, and a possibly empty
 list of additional options.  In most cases the layout name is all you care
 about.  Here are a few example:
 
-@example
+@lisp
 ;; The German QWERTZ layout.  Here we assume a standard
 ;; "pc105" keyboard model.
 (keyboard-layout "de")
@@ -11365,7 +11365,7 @@ about.  Here are a few example:
 ;; dead keys to enter accented characters.  This is for an
 ;; Apple MacBook keyboard.
 (keyboard-layout "us" "intl" #:model "macbook78")
-@end example
+@end lisp
 
 See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package
 for a complete list of supported layouts, variants, and models.
@@ -11455,20 +11455,20 @@ used locales, but not all the available locales, in order to save space.
 For instance, to add the North Frisian locale for Germany, the value of
 that field may be:
 
-@example
+@lisp
 (cons (locale-definition
         (name "fy_DE.utf8") (source "fy_DE"))
       %default-locale-definitions)
-@end example
+@end lisp
 
 Likewise, to save space, one might want @code{locale-definitions} to
 list only the locales that are actually used, as in:
 
-@example
+@lisp
 (list (locale-definition
         (name "ja_JP.eucjp") (source "ja_JP")
         (charset "EUC-JP")))
-@end example
+@end lisp
 
 @vindex LOCPATH
 The compiled locale definitions are available at
@@ -11554,13 +11554,13 @@ it---this is especially crucial on a multi-user system.  To do that, the
 administrator can specify several libc packages in the
 @code{locale-libcs} field of @code{operating-system}:
 
-@example
+@lisp
 (use-package-modules base)
 
 (operating-system
   ;; @dots{}
   (locale-libcs (list glibc-2.21 (canonical-package glibc))))
-@end example
+@end lisp
 
 This example would lead to a system containing locale definitions for
 both libc 2.21 and the current version of libc in
@@ -11665,11 +11665,11 @@ This is the default value of the @code{services} field of
 system, you will want to append services to @code{%base-services}, like
 this:
 
-@example
+@lisp
 (append (list (service avahi-service-type)
               (service openssh-service-type))
         %base-services)
-@end example
+@end lisp
 @end defvr
 
 @defvr {Scheme Variable} special-files-service-type
@@ -11682,19 +11682,19 @@ and the second element is its target.  By default it is:
 
 @cindex @file{/bin/sh}
 @cindex @file{sh}, in @file{/bin}
-@example
-`(("/bin/sh" ,(file-append @var{bash} "/bin/sh")))
-@end example
+@lisp
+`(("/bin/sh" ,(file-append bash "/bin/sh")))
+@end lisp
 
 @cindex @file{/usr/bin/env}
 @cindex @file{env}, in @file{/usr/bin}
 If you want to add, say, @code{/usr/bin/env} to your system, you can
 change it to:
 
-@example
-`(("/bin/sh" ,(file-append @var{bash} "/bin/sh"))
-  ("/usr/bin/env" ,(file-append @var{coreutils} "/bin/env")))
-@end example
+@lisp
+`(("/bin/sh" ,(file-append bash "/bin/sh"))
+  ("/usr/bin/env" ,(file-append coreutils "/bin/env")))
+@end lisp
 
 Since this is part of @code{%base-services}, you can use
 @code{modify-services} to customize the set of special files
@@ -11710,10 +11710,10 @@ For example, adding the following lines to the @code{services} field of
 your operating system declaration leads to a @file{/usr/bin/env}
 symlink:
 
-@example
+@lisp
 (extra-special-file "/usr/bin/env"
                     (file-append coreutils "/bin/env"))
-@end example
+@end lisp
 @end deffn
 
 @deffn {Scheme Procedure} host-name-service @var{name}
@@ -12212,14 +12212,14 @@ In the following example, a rule for a USB device is defined to be
 stored in the file @file{90-usb-thing.rules}.  The rule runs a script
 upon detecting a USB device with a given product identifier.
 
-@example
+@lisp
 (define %example-udev-rule
   (udev-rule
     "90-usb-thing.rules"
     (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
                    "ATTR@{product@}==\"Example\", "
                    "RUN+=\"/path/to/script\"")))
-@end example
+@end lisp
 
 The @command{herd rules udev} command, as root, returns the name of the
 directory containing all the active udev rules.
@@ -12227,7 +12227,7 @@ directory containing all the active udev rules.
 
 Here we show how the default @var{udev-service} can be extended with it.
 
-@example
+@lisp
 (operating-system
  ;; @dots{}
  (services
@@ -12236,7 +12236,7 @@ Here we show how the default @var{udev-service} can be extended with it.
      (udev-configuration (inherit config)
       (rules (append (udev-configuration-rules config)
                      (list %example-udev-rule))))))))
-@end example
+@end lisp
 
 @deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]
 Return a udev file named @var{file-name} containing the rules defined
@@ -12244,7 +12244,7 @@ within @var{file}, a file-like object.
 
 The following example showcases how we can use an existing rule file.
 
-@example
+@lisp
 (use-modules (guix download)     ;for url-fetch
              (guix packages)     ;for origin
              ;; @dots{})
@@ -12259,7 +12259,7 @@ The following example showcases how we can use an existing rule file.
                            "android-udev-rules/" version "/51-android.rules"))
        (sha256
         (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
-@end example
+@end lisp
 @end deffn
 
 Additionally, Guix package definitions can be included in @var{rules} in
@@ -12278,7 +12278,7 @@ create such a group, we must define it both as part of the
 @var{supplementary-groups} of our @var{user-account} declaration, as
 well as in the @var{groups} field of the @var{operating-system} record.
 
-@example
+@lisp
 (use-modules (gnu packages android)  ;for android-udev-rules
              (gnu system shadow)     ;for user-group
              ;; @dots{})
@@ -12304,7 +12304,7 @@ well as in the @var{groups} field of the @var{operating-system} record.
       (udev-configuration (inherit config)
                           (rules (cons android-udev-rules
                                        (udev-configuration-rules config))))))))
-@end example
+@end lisp
 
 @defvr {Scheme Variable} urandom-seed-service-type
 Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
@@ -12378,9 +12378,9 @@ This is a list of compression method/level tuple used when compressing
 substitutes.  For example, to compress all substitutes with @emph{both} lzip
 at level 7 and gzip at level 9, write:
 
-@example
+@lisp
 '(("lzip" 7) ("gzip" 9))
-@end example
+@end lisp
 
 Level 9 achieves the best compression ratio at the expense of increased CPU
 usage, whereas level 1 achieves fast compression.
@@ -12435,12 +12435,12 @@ Return a service that installs a configuration file for the
 The following limits definition sets two hard and soft limits for all
 login sessions of users in the @code{realtime} group:
 
-@example
+@lisp
 (pam-limits-service
  (list
   (pam-limits-entry "@@realtime" 'both 'rtprio 99)
   (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited)))
-@end example
+@end lisp
 
 The first entry increases the maximum realtime priority for
 non-privileged processes; the second entry lifts any restriction of the
@@ -12647,7 +12647,7 @@ Taking an example from the Rottlog manual (@pxref{Period Related File
 Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be
 defined like this:
 
-@example
+@lisp
 (log-rotation
   (frequency 'daily)
   (files '("/var/log/apache/*"))
@@ -12655,7 +12655,7 @@ defined like this:
              "rotate 6"
              "notifempty"
              "nocompress")))
-@end example
+@end lisp
 
 The list of fields is as follows:
 
@@ -12704,12 +12704,12 @@ This type defines a service that runs a DHCP daemon.  To create a
 service of this type, you must supply a @code{}.
 For example:
 
-@example
+@lisp
 (service dhcpd-service-type
          (dhcpd-configuration
           (config-file (local-file "my-dhcpd.conf"))
           (interfaces '("enp0s25"))))
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} dhcpd-configuration
@@ -12765,11 +12765,11 @@ to handle.
 
 For example:
 
-@example
+@lisp
 (static-networking-service "eno1" "192.168.1.82"
                            #:gateway "192.168.1.2"
                            #:name-servers '("192.168.1.2"))
-@end example
+@end lisp
 @end deffn
 
 @cindex wicd
@@ -12924,11 +12924,11 @@ a network connection manager.
 Its value must be an
 @code{connman-configuration} record as in this example:
 
-@example
+@lisp
 (service connman-service-type
          (connman-configuration
            (disable-vpn? #t)))
-@end example
+@end lisp
 
 See below for details about @code{connman-configuration}.
 @end deffn
@@ -13066,7 +13066,7 @@ Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented
 by @uref{http://www.openntpd.org, OpenNTPD}.  The daemon will keep the system
 clock synchronized with that of the given servers.
 
-@example
+@lisp
 (service
  openntpd-service-type
  (openntpd-configuration
@@ -13076,7 +13076,7 @@ clock synchronized with that of the given servers.
   (constraints-from '("https://www.google.com/"))
   (allow-large-adjustment? #t)))
 
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} openntpd-configuration
@@ -13126,7 +13126,7 @@ built-in @command{echo} service, as well as an smtp service which
 forwards smtp traffic over ssh to a server @code{smtp-server} behind a
 gateway @code{hostname}:
 
-@example
+@lisp
 (service
  inetd-service-type
  (inetd-configuration
@@ -13148,7 +13148,7 @@ gateway @code{hostname}:
              (arguments
               '("ssh" "-qT" "-i" "/path/to/ssh_key"
                 "-W" "smtp-server:25" "user@@hostname")))))
-@end example
+@end lisp
 
 See below for more details about @code{inetd-configuration}.
 @end deffn
@@ -13284,9 +13284,9 @@ This is the service type for the @uref{https://rsync.samba.org, rsync} daemon,
 The value for this service type is a
 @command{rsync-configuration} record as in this example:
 
-@example
+@lisp
 (service rsync-service-type)
-@end example
+@end lisp
 
 See below for details about @code{rsync-configuration}.
 @end deffn
@@ -13390,7 +13390,7 @@ This is the type for the @uref{http://www.openssh.org, OpenSSH} secure
 shell daemon, @command{sshd}.  Its value must be an
 @code{openssh-configuration} record as in this example:
 
-@example
+@lisp
 (service openssh-service-type
          (openssh-configuration
            (x11-forwarding? #t)
@@ -13398,18 +13398,18 @@ shell daemon, @command{sshd}.  Its value must be an
            (authorized-keys
              `(("alice" ,(local-file "alice.pub"))
                ("bob" ,(local-file "bob.pub"))))))
-@end example
+@end lisp
 
 See below for details about @code{openssh-configuration}.
 
 This service can be extended with extra authorized keys, as in this
 example:
 
-@example
+@lisp
 (service-extension openssh-service-type
                    (const `(("charlie"
                              ,(local-file "charlie.pub")))))
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} openssh-configuration
@@ -13486,12 +13486,12 @@ subsystem request.
 
 The command @command{internal-sftp} implements an in-process SFTP
 server.  Alternately, one can specify the @command{sftp-server} command:
-@example
+@lisp
 (service openssh-service-type
          (openssh-configuration
           (subsystems
            `(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
-@end example
+@end lisp
 
 @item @code{accepted-environment} (default: @code{'()})
 List of strings describing which environment variables may be exported.
@@ -13504,11 +13504,11 @@ It is set by terminal emulators, which support colors.  You can use it in
 your shell's ressource file to enable colors for the prompt and commands
 if this variable is set.
 
-@example
+@lisp
 (service openssh-service-type
          (openssh-configuration
            (accepted-environment '("COLORTERM"))))
-@end example
+@end lisp
 
 @item @code{authorized-keys} (default: @code{'()})
 @cindex authorized keys, SSH
@@ -13517,13 +13517,13 @@ This is the list of authorized keys.  Each element of the list is a user
 name followed by one or more file-like objects that represent SSH public
 keys.  For example:
 
-@example
+@lisp
 (openssh-configuration
   (authorized-keys
     `(("rekado" ,(local-file "rekado.pub"))
       ("chris" ,(local-file "chris.pub"))
       ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))
-@end example
+@end lisp
 
 @noindent
 registers the specified public keys for user accounts @code{rekado},
@@ -13546,12 +13546,12 @@ is especially useful for elaborate configurations that cannot be expressed
 otherwise.  This configuration, for example, would generally disable root
 logins, but permit them from one specific IP address:
 
-@example
+@lisp
 (openssh-configuration
   (extra-content "\
 Match Address 192.168.0.1
   PermitRootLogin yes"))
-@end example
+@end lisp
 
 @end table
 @end deftp
@@ -13564,10 +13564,10 @@ object.
 For example, to specify a Dropbear service listening on port 1234, add
 this call to the operating system's @code{services} field:
 
-@example
+@lisp
 (dropbear-service (dropbear-configuration
                     (port-number 1234)))
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} dropbear-configuration
@@ -13608,7 +13608,7 @@ This variable is typically used in the @code{hosts-file} field of an
 @code{operating-system} declaration (@pxref{operating-system Reference,
 @file{/etc/hosts}}):
 
-@example
+@lisp
 (use-modules (gnu) (guix))
 
 (operating-system
@@ -13620,7 +13620,7 @@ This variable is typically used in the @code{hosts-file} field of an
     (plain-file "hosts"
                 (string-append (local-host-aliases host-name)
                                %facebook-host-aliases))))
-@end example
+@end lisp
 
 This mechanism can prevent programs running locally, such as Web
 browsers, from accessing Facebook.
@@ -14054,9 +14054,9 @@ system, add a @code{cups-service} to the operating system definition:
 The service type for the CUPS print server.  Its value should be a valid
 CUPS configuration (see below).  To use the default settings, simply
 write:
-@example
+@lisp
 (service cups-service-type)
-@end example
+@end lisp
 @end deffn
 
 The CUPS configuration controls the basic things about your CUPS
@@ -14072,13 +14072,13 @@ 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):
 
-@example
+@lisp
 (service cups-service-type
          (cups-configuration
            (web-interface? #t)
            (extensions
              (list cups-filters escpr hplip-minimal))))
-@end example
+@end lisp
 
 Note: If you wish to use the Qt5 based GUI which comes with the hplip
 package then it is suggested that you install the @code{hplip} package,
@@ -14886,12 +14886,12 @@ For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in
 strings of the same name, you could instantiate a CUPS service like
 this:
 
-@example
+@lisp
 (service cups-service-type
          (opaque-cups-configuration
            (cupsd.conf cupsd.conf)
            (cups-files.conf cups-files.conf)))
-@end example
+@end lisp
 
 
 @node Desktop Services
@@ -15034,7 +15034,7 @@ them by default.  To add GNOME, Xfce or MATE, just @code{cons} them onto
 @code{%desktop-services} in the @code{services} field of your
 @code{operating-system}:
 
-@example
+@lisp
 (use-modules (gnu))
 (use-service-modules desktop)
 (operating-system
@@ -15044,7 +15044,7 @@ them by default.  To add GNOME, Xfce or MATE, just @code{cons} them onto
                    (service xfce-desktop-service)
                    %desktop-services))
   ...)
-@end example
+@end lisp
 
 These desktop environments will then be available as options in the
 graphical login window.
@@ -15313,9 +15313,9 @@ Architecture} (ALSA) system, which generates the @file{/etc/asound.conf}
 configuration file.  The value for this type is a @command{alsa-configuration}
 record as in this example:
 
-@example
+@lisp
 (service alsa-service-type)
-@end example
+@end lisp
 
 See below for details about @code{alsa-configuration}.
 @end deffn
@@ -15401,7 +15401,7 @@ to create a geographic database using the @code{postgis} extension, a user can
 configure the postgresql-service as in this example:
 
 @cindex postgis
-@example
+@lisp
 (use-package-modules databases geo)
 
 (operating-system
@@ -15413,7 +15413,7 @@ configure the postgresql-service as in this example:
     (cons*
       (postgresql-service #:extension-packages (list postgis))
       %base-services)))
-@end example
+@end lisp
 
 Then the extension becomes visible and you can initialise an empty geographic
 database in this way:
@@ -15461,9 +15461,9 @@ Memcached} service, which provides a distributed in memory cache.  The
 value for the service type is a @code{memcached-configuration} object.
 @end defvr
 
-@example
+@lisp
 (service memcached-service-type)
-@end example
+@end lisp
 
 @deftp {Data Type} memcached-configuration
 Data type representing the configuration of memcached.
@@ -15492,9 +15492,9 @@ This is the service type for @uref{https://www.mongodb.com/, MongoDB}.
 The value for the service type is a @code{mongodb-configuration} object.
 @end defvr
 
-@example
+@lisp
 (service mongodb-service-type)
-@end example
+@end lisp
 
 @deftp {Data Type} mongodb-configuration
 Data type representing the configuration of mongodb.
@@ -15565,11 +15565,11 @@ administrator to specify these parameters via a uniform Scheme interface.
 For example, to specify that mail is located at @code{maildir~/.mail},
 one would instantiate the Dovecot service like this:
 
-@example
+@lisp
 (dovecot-service #:config
                  (dovecot-configuration
                   (mail-location "maildir:~/.mail")))
-@end example
+@end lisp
 
 The available configuration parameters follow.  Each parameter
 definition is preceded by its type; for example, @samp{string-list foo}
@@ -16905,11 +16905,11 @@ The contents of the @code{dovecot.conf}, as a string.
 For example, if your @code{dovecot.conf} is just the empty string, you
 could instantiate a dovecot service like this:
 
-@example
+@lisp
 (dovecot-service #:config
                  (opaque-dovecot-configuration
                   (string "")))
-@end example
+@end lisp
 
 @subsubheading OpenSMTPD Service
 
@@ -16918,11 +16918,11 @@ This is the type of the @uref{https://www.opensmtpd.org, OpenSMTPD}
 service, whose value should be an @code{opensmtpd-configuration} object
 as in this example:
 
-@example
+@lisp
 (service opensmtpd-service-type
          (opensmtpd-configuration
            (config-file (local-file "./my-smtpd.conf"))))
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} opensmtpd-configuration
@@ -16952,11 +16952,11 @@ This is the type of the @uref{https://exim.org, Exim} mail transfer
 agent (MTA), whose value should be an @code{exim-configuration} object
 as in this example:
 
-@example
+@lisp
 (service exim-service-type
          (exim-configuration
            (config-file (local-file "./my-exim.conf"))))
-@end example
+@end lisp
 @end deffn
 
 In order to use an @code{exim-service-type} service you must also have a
@@ -17280,11 +17280,11 @@ Defaults to @samp{()}.
 This is the type of the service which provides @code{/etc/aliases},
 specifying how to deliver mail to users on this system.
 
-@example
+@lisp
 (service mail-aliases-service-type
          '(("postmaster" "bob")
            ("bob" "bob@@example.com" "bob@@example2.com")))
-@end example
+@end lisp
 @end deffn
 
 The configuration for a @code{mail-aliases-service-type} service is an
@@ -17307,11 +17307,11 @@ This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,,
 mailutils, GNU Mailutils Manual}), whose value should be an
 @code{imap4d-configuration} object as in this example:
 
-@example
+@lisp
 (service imap4d-service-type
          (imap4d-configuration
            (config-file (local-file "imap4d.conf"))))
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} imap4d-configuration
@@ -17345,7 +17345,7 @@ This is the type for the @uref{https://prosody.im, Prosody XMPP
 communication server}.  Its value must be a @code{prosody-configuration}
 record as in this example:
 
-@example
+@lisp
 (service prosody-service-type
          (prosody-configuration
           (modules-enabled (cons "groups" "mam" %default-modules-enabled))
@@ -17359,7 +17359,7 @@ record as in this example:
            (list
             (virtualhost-configuration
              (domain "example.net"))))))
-@end example
+@end lisp
 
 See below for details about @code{prosody-configuration}.
 
@@ -17747,11 +17747,11 @@ The contents of the @code{prosody.cfg.lua} to use.
 For example, if your @code{prosody.cfg.lua} is just the empty
 string, you could instantiate a prosody service like this:
 
-@example
+@lisp
 (service prosody-service-type
          (opaque-prosody-configuration
           (prosody.cfg.lua "")))
-@end example
+@end lisp
 
 @c end of Prosody auto-generated documentation
 
@@ -17770,9 +17770,9 @@ below).
 To have BitlBee listen on port 6667 on localhost, add this line to your
 services:
 
-@example
+@lisp
 (service bitlbee-service-type)
-@end example
+@end lisp
 @end defvr
 
 @deftp {Data Type} bitlbee-configuration
@@ -17844,7 +17844,7 @@ the server of the @uref{https://mumble.info, Mumble} voice-over-IP
 The service type for the Murmur server.  An example configuration can
 look like this:
 
-@example
+@lisp
 (service murmur-service-type
          (murmur-configuration
           (welcome-text
@@ -17852,7 +17852,7 @@ look like this:
           (cert-required? #t) ;disallow text password logins
           (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
           (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))
-@end example
+@end lisp
 
 After reconfiguring your system, you can manually set the murmur @code{SuperUser}
 password with the command that is printed during the activation phase.
@@ -17966,14 +17966,14 @@ Should logged ips be obfuscated to protect the privacy of users.
 @item @code{ssl-cert} (default: @code{#f})
 File name of the SSL/TLS certificate used for encrypted connections.
 
-@example
+@lisp
 (ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem")
-@end example
+@end lisp
 @item @code{ssl-key} (default: @code{#f})
 Filepath to the ssl private key used for encrypted connections.
-@example
+@lisp
 (ssl-key "/etc/letsencrypt/live/example.com/privkey.pem")
-@end example
+@end lisp
 
 @item @code{ssl-dh-params} (default: @code{#f})
 File name of a PEM-encoded file with Diffie-Hellman parameters
@@ -18047,20 +18047,20 @@ viewing and searching log files.
 The following example will configure the service with default values.
 By default, Tailon can be accessed on port 8080 (@code{http://localhost:8080}).
 
-@example
+@lisp
 (service tailon-service-type)
-@end example
+@end lisp
 
 The following example customises more of the Tailon configuration,
 adding @command{sed} to the list of allowed commands.
 
-@example
+@lisp
 (service tailon-service-type
          (tailon-configuration
            (config-file
              (tailon-configuration-file
                (allowed-commands '("tail" "grep" "awk" "sed"))))))
-@end example
+@end lisp
 
 
 @deftp {Data Type} tailon-configuration
@@ -18076,11 +18076,11 @@ The configuration file to use for Tailon. This can be set to a
 For example, to instead use a local file, the @code{local-file} function
 can be used:
 
-@example
+@lisp
 (service tailon-service-type
          (tailon-configuration
            (config-file (local-file "./my-tailon.conf"))))
-@end example
+@end lisp
 
 @item @code{package} (default: @code{tailon})
 The tailon package to use.
@@ -18136,12 +18136,12 @@ restricted to the credentials provided here. To configure users, use a
 list of pairs, where the first element of the pair is the username, and
 the 2nd element of the pair is the password.
 
-@example
+@lisp
 (tailon-configuration-file
   (http-auth "basic")
   (users     '(("user1" . "password1")
                ("user2" . "password2"))))
-@end example
+@end lisp
 
 @end table
 @end deftp
@@ -18158,11 +18158,11 @@ This is the service type for the
 service,  its value must be a @code{darkstat-configuration} record as in
 this example:
 
-@example
+@lisp
 (service darkstat-service-type
          (darkstat-configuration
            (interface "eno1")))
-@end example
+@end lisp
 @end defvar
 
 @deftp {Data Type} darkstat-configuration
@@ -18202,11 +18202,11 @@ This is the service type for the
 service, its value must be a @code{prometheus-node-exporter-configuration}
 record as in this example:
 
-@example
+@lisp
 (service prometheus-node-exporter-service-type
          (prometheus-node-exporter-configuration
            (web-listen-address ":9100")))
-@end example
+@end lisp
 @end defvar
 
 @deftp {Data Type} prometheus-node-exporter-configuration
@@ -18682,7 +18682,7 @@ Here is a simple operating system declaration with a default configuration of
 the @code{nslcd-service-type} and a Name Service Switch configuration that
 consults the @code{ldap} name service last:
 
-@example
+@lisp
 (use-service-modules authentication)
 (use-modules (gnu system nss))
 ...
@@ -18704,7 +18704,7 @@ consults the @code{ldap} name service last:
       (group    services)
       (netgroup services)
       (gshadow  services)))))
-@end example
+@end lisp
 
 @c %start of generated documentation for nslcd-configuration
 
@@ -19163,19 +19163,19 @@ Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server
 
 A simple example configuration is given below.
 
-@example
+@lisp
 (service httpd-service-type
          (httpd-configuration
            (config
              (httpd-config-file
                (server-name "www.example.com")
                (document-root "/srv/http/www.example.com")))))
-@end example
+@end lisp
 
 Other services can also extend the @code{httpd-service-type} to add to
 the configuration.
 
-@example
+@lisp
 (simple-service 'my-extra-server httpd-service-type
                 (list
                   (httpd-virtualhost
@@ -19183,7 +19183,7 @@ the configuration.
                     (list (string-append
                            "ServerName "www.example.com
                             DocumentRoot \"/srv/http/www.example.com\"")))))
-@end example
+@end lisp
 @end deffn
 
 The details for the @code{httpd-configuration}, @code{httpd-module},
@@ -19240,7 +19240,7 @@ additional configuration.
 For example, in order to handle requests for PHP files, you can use Apache’s
 @code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:
 
-@example
+@lisp
 (service httpd-service-type
          (httpd-configuration
           (config
@@ -19261,7 +19261,7 @@ For example, in order to handle requests for PHP files, you can use Apache’s
          (php-fpm-configuration
           (socket "/var/run/php-fpm.sock")
           (socket-group "httpd")))
-@end example
+@end lisp
 
 @item @code{server-root} (default: @code{httpd})
 The @code{ServerRoot} in the configuration file, defaults to the httpd
@@ -19315,7 +19315,7 @@ This data type represents a virtualhost configuration block for the httpd servic
 
 These should be added to the extra-config for the httpd-service.
 
-@example
+@lisp
 (simple-service 'my-extra-server httpd-service-type
                 (list
                   (httpd-virtualhost
@@ -19323,7 +19323,7 @@ These should be added to the extra-config for the httpd-service.
                     (list (string-append
                            "ServerName "www.example.com
                             DocumentRoot \"/srv/http/www.example.com\"")))))
-@end example
+@end lisp
 
 @table @asis
 @item @code{addresses-and-ports}
@@ -19344,25 +19344,25 @@ value for this service type is a @code{} record.
 
 A simple example configuration is given below.
 
-@example
+@lisp
 (service nginx-service-type
          (nginx-configuration
            (server-blocks
              (list (nginx-server-configuration
                      (server-name '("www.example.com"))
                      (root "/srv/http/www.example.com"))))))
-@end example
+@end lisp
 
 In addition to adding server blocks to the service configuration
 directly, this service can be extended by other services to add server
 blocks, as in this example:
 
-@example
+@lisp
 (simple-service 'my-extra-server nginx-service-type
                 (list (nginx-server-configuration
                         (root "/srv/http/extra-website")
                         (try-files (list "$uri" "$uri/index.html")))))
-@end example
+@end lisp
 @end deffn
 
 At startup, @command{nginx} has not yet read its configuration file, so
@@ -19398,14 +19398,14 @@ file, the elements should be of type
 The following example would setup NGinx to serve @code{www.example.com}
 from the @code{/srv/http/www.example.com} directory, without using
 HTTPS.
-@example
+@lisp
 (service nginx-service-type
          (nginx-configuration
            (server-blocks
              (list (nginx-server-configuration
                      (server-name '("www.example.com"))
                      (root "/srv/http/www.example.com"))))))
-@end example
+@end lisp
 
 @item @code{upstream-blocks} (default: @code{'()})
 A list of @dfn{upstream blocks} to create in the generated configuration
@@ -19419,7 +19419,7 @@ creates a server configuration with one location configuration, that
 will proxy requests to a upstream configuration, which will handle
 requests with two servers.
 
-@example
+@lisp
 (service
   nginx-service-type
   (nginx-configuration
@@ -19437,7 +19437,7 @@ requests with two servers.
               (name "server-proxy")
               (servers (list "server1.example.com"
                              "server2.example.com")))))))
-@end example
+@end lisp
 
 @item @code{file} (default: @code{#f})
 If a configuration @var{file} is provided, this will be used, rather than
@@ -19475,9 +19475,9 @@ path for a UNIX-domain socket on which the server will accept requests.
 Both address and port, or only address or only port can be specified.
 An address may also be a hostname, for example:
 
-@example
+@lisp
 '("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000")
-@end example
+@end lisp
 
 @item @code{server-name} (default: @code{(list 'default)})
 A list of server names this server represents. @code{'default} represents the
@@ -19615,7 +19615,7 @@ VCL syntax.
 For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you
 can do something along these lines:
 
-@example
+@lisp
 (define %gnu-mirror
   (plain-file
    "gnu.vcl"
@@ -19629,7 +19629,7 @@ backend gnu @{ .host = "www.gnu.org"; @}"))
                             (listen '(":80"))
                             (vcl %gnu-mirror)))
                   %base-services)))
-@end example
+@end lisp
 
 The configuration of an already running Varnish instance can be inspected
 and changed using the @command{varnishadm} program.
@@ -19665,7 +19665,7 @@ Service type for Patchwork.
 The following example is an example of a minimal service for Patchwork, for
 the @code{patchwork.example.com} domain.
 
-@example
+@lisp
 (service patchwork-service-type
          (patchwork-configuration
           (domain "patchwork.example.com")
@@ -19685,7 +19685,7 @@ the @code{patchwork.example.com} domain.
             (extra-parameters
             '((mailboxes . ("Patches"))))))))
 
-@end example
+@end lisp
 
 There are three records for configuring the Patchwork service.  The
 @code{} relates to the configuration for Patchwork
@@ -20004,7 +20004,7 @@ A helper function to quickly add php to an @code{nginx-server-configuration}.
 @end deffn
 
 A simple services setup for nginx with php can look like this:
-@example
+@lisp
 (services (cons* (service dhcp-client-service-type)
                  (service php-fpm-service-type)
                  (service nginx-service-type
@@ -20017,7 +20017,7 @@ A simple services setup for nginx with php can look like this:
                            (ssl-certificate #f)
                            (ssl-certificate-key #f)))
                  %base-services))
-@end example
+@end lisp
 
 @cindex cat-avatar-generator
 The cat avatar generator is a simple service to demonstrate the use of php-fpm
@@ -20035,14 +20035,14 @@ be able to use @code{cache-dir} as its cache directory.
 @end deffn
 
 A simple setup for cat-avatar-generator can look like this:
-@example
+@lisp
 (services (cons* (cat-avatar-generator-service
                   #:configuration
                   (nginx-server-configuration
                     (server-name '("example.com"))))
                  ...
                  %base-services))
-@end example
+@end lisp
 
 @subsubheading Hpcguix-web
 
@@ -20099,7 +20099,7 @@ The hpcguix-web package to use.
 
 A typical hpcguix-web service declaration looks like this:
 
-@example
+@lisp
 (service hpcguix-web-service-type
          (hpcguix-web-configuration
           (specs
@@ -20107,7 +20107,7 @@ A typical hpcguix-web service declaration looks like this:
                (hpcweb-configuration
                 (title-prefix "Guix-HPC - ")
                 (menu '(("/about" "ABOUT"))))))))
-@end example
+@end lisp
 
 @quotation Note
 The hpcguix-web service periodically updates the package list it publishes by
@@ -20167,7 +20167,7 @@ can be found there:
 A service type for the @code{certbot} Let's Encrypt client.  Its value
 must be a @code{certbot-configuration} record as in this example:
 
-@example
+@lisp
 (define %nginx-deploy-hook
   (program-file
    "nginx-deploy-hook"
@@ -20184,7 +20184,7 @@ must be a @code{certbot-configuration} record as in this example:
              (deploy-hook %nginx-deploy-hook))
             (certificate-configuration
              (domains '("bar.example.net")))))))
-@end example
+@end lisp
 
 See below for details about @code{certbot-configuration}.
 @end defvr
@@ -20766,12 +20766,12 @@ The list of knot-zone-configuration used by this configuration.
 This is the type of the dnsmasq service, whose value should be an
 @code{dnsmasq-configuration} object as in this example:
 
-@example
+@lisp
 (service dnsmasq-service-type
          (dnsmasq-configuration
            (no-resolv? #t)
            (servers '("192.168.1.1"))))
-@end example
+@end lisp
 @end deffn
 
 @deftp {Data Type} dnsmasq-configuration
@@ -20824,9 +20824,9 @@ care of automatically updating DNS entries for service providers such as
 The following example show instantiates the service with its default
 configuration:
 
-@example
+@lisp
 (service ddclient-service-type)
-@end example
+@end lisp
 
 Note that ddclient needs to access credentials that are stored in a
 @dfn{secret file}, by default @file{/etc/ddclient/secrets} (see
@@ -21416,7 +21416,7 @@ and builds the packages from a manifest.  Some of the packages are defined in
 the @code{"custom-packages"} input, which is the equivalent of
 @code{GUIX_PACKAGE_PATH}.
 
-@example
+@lisp
 (define %cuirass-specs
   #~(list
      '((#:name . "my-manifest")
@@ -21447,7 +21447,7 @@ the @code{"custom-packages"} input, which is the equivalent of
 (service cuirass-service-type
          (cuirass-configuration
           (specifications %cuirass-specs)))
-@end example
+@end lisp
 
 While information related to build jobs is located directly in the
 specifications, global settings for the @command{cuirass} process are
@@ -21535,9 +21535,9 @@ source is detected.  More information can be found at
 The service type for the TLP tool.  Its value should be a valid
 TLP configuration (see below).  To use the default settings, simply
 write:
-@example
+@lisp
 (service tlp-service-type)
-@end example
+@end lisp
 @end deffn
 
 By default TLP does not need much configuration but most TLP parameters
@@ -22065,12 +22065,12 @@ of clients.
 The following example shows how one might run @code{mpd} as user
 @code{"bob"} on port @code{6666}.  It uses pulseaudio for output.
 
-@example
+@lisp
 (service mpd-service-type
          (mpd-configuration
           (user "bob")
           (port "6666")))
-@end example
+@end lisp
 
 @defvr {Scheme Variable} mpd-service-type
 The service type for @command{mpd}
@@ -22124,12 +22124,12 @@ and performs required management tasks for virtualized guests.
 This is the type of the @uref{https://libvirt.org, libvirt daemon}.
 Its value must be a @code{libvirt-configuration}.
 
-@example
+@lisp
 (service libvirt-service-type
          (libvirt-configuration
           (unix-sock-group "libvirt")
           (tls-port "16555")))
-@end example
+@end lisp
 @end deffn
 
 @c Auto-generated with (generate-libvirt-documentation)
@@ -22690,11 +22690,11 @@ itself upon receiving @code{SIGUSR1}, to allow live upgrades without downtime.
 This is the type of the virtlog daemon.
 Its value must be a @code{virtlog-configuration}.
 
-@example
+@lisp
 (service virtlog-service-type
          (virtlog-configuration
           (max-clients 1000)))
-@end example
+@end lisp
 @end deffn
 
 @deftypevr {@code{virtlog-configuration} parameter} integer log-level
@@ -22832,11 +22832,11 @@ Its value must be a @code{qemu-binfmt-configuration} object, which
 specifies the QEMU package to use as well as the architecture we want to
 emulated:
 
-@example
+@lisp
 (service qemu-binfmt-service-type
          (qemu-binfmt-configuration
            (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))))
-@end example
+@end lisp
 
 In this example, we enable transparent emulation for the ARM and aarch64
 platforms.  Running @code{herd stop qemu-binfmt} turns it off, and
@@ -22862,12 +22862,12 @@ that you can transparently build programs for another architecture.
 For example, let's suppose you're on an x86_64 machine and you have this
 service:
 
-@example
+@lisp
 (service qemu-binfmt-service-type
          (qemu-binfmt-configuration
            (platforms (lookup-qemu-platforms "arm"))
            (guix-support? #t)))
-@end example
+@end lisp
 
 You can run:
 
@@ -23018,7 +23018,7 @@ Compute an @code{nginx-location-configuration} that corresponds to the
 given Git http configuration.  An example nginx service definition to
 serve the default @file{/srv/git} over HTTPS might be:
 
-@example
+@lisp
 (service nginx-service-type
          (nginx-configuration
           (server-blocks
@@ -23034,7 +23034,7 @@ serve the default @file{/srv/git} over HTTPS might be:
               (list
                (git-http-nginx-location-configuration
                 (git-http-configuration (uri-path "/"))))))))))
-@end example
+@end lisp
 
 This example assumes that you are using Let's Encrypt to get your TLS
 certificate.  @xref{Certificate Services}.  The default @code{certbot}
@@ -23053,9 +23053,9 @@ repositories written in C.
 The following example will configure the service with default values.
 By default, Cgit can be accessed on port 80 (@code{http://localhost:80}).
 
-@example
+@lisp
 (service cgit-service-type)
-@end example
+@end lisp
 
 The @code{file-object} type designates either a file-like object
 (@pxref{G-Expressions, file-like objects}) or a string.
@@ -23988,11 +23988,11 @@ The contents of the @code{cgitrc}, as a string.
 For example, if your @code{cgitrc} is just the empty string, you
 could instantiate a cgit service like this:
 
-@example
+@lisp
 (service cgit-service-type
          (opaque-cgit-configuration
           (cgitrc "")))
-@end example
+@end lisp
 
 @subsubheading Gitolite Service
 
@@ -24007,13 +24007,13 @@ configuration of the permissions for the users on the repositories.
 The following example will configure Gitolite using the default @code{git}
 user, and the provided SSH public key.
 
-@example
+@lisp
 (service gitolite-service-type
          (gitolite-configuration
            (admin-pubkey (plain-file
                            "yourname.pub"
                            "ssh-rsa AAAA... guix@@example.com"))))
-@end example
+@end lisp
 
 Gitolite is configured through a special admin repository which you can clone,
 for example, if you setup Gitolite on @code{example.com}, you would run the
@@ -24056,9 +24056,9 @@ within the gitolite-admin repository.
 
 To specify the SSH key as a string, use the @code{plain-file} function.
 
-@example
+@lisp
 (plain-file "yourname.pub" "ssh-rsa AAAA... guix@@example.com")
-@end example
+@end lisp
 
 @end table
 @end deftp
@@ -24103,9 +24103,9 @@ Service type for the wesnothd service.  Its value must be a
 @code{wesnothd-configuration} object.  To run wesnothd in the default
 configuration, instantiate it as:
 
-@example
+@lisp
 (service wesnothd-service-type)
-@end example
+@end lisp
 @end defvar
 
 @deftp {Data Type} wesnothd-configuration
@@ -24133,9 +24133,9 @@ read and identify fingerprints via a fingerprint sensor.
 The service type for @command{fprintd}, which provides the fingerprint
 reading capability.
 
-@example
+@lisp
 (service fprintd-service-type)
-@end example
+@end lisp
 @end defvr
 
 @cindex sysctl
@@ -24149,11 +24149,11 @@ The service type for @command{sysctl}, which modifies kernel parameters
 under @file{/proc/sys/}.  To enable IPv4 forwarding, it can be
 instantiated as:
 
-@example
+@lisp
 (service sysctl-service-type
          (sysctl-configuration
            (settings '(("net.ipv4.ip_forward" . "1")))))
-@end example
+@end lisp
 @end defvr
 
 @deftp {Data Type} sysctl-configuration
@@ -24182,9 +24182,9 @@ Service type for the @command{pcscd} service.  Its value must be a
 @code{pcscd-configuration} object.  To run pcscd in the default
 configuration, instantiate it as:
 
-@example
+@lisp
 (service pcscd-service-type)
-@end example
+@end lisp
 @end defvr
 
 @deftp {Data Type} pcscd-configuration
@@ -24339,7 +24339,7 @@ Dictionary of English using the @code{gcide} package.
 
 The following is an example @code{dicod-service} configuration.
 
-@example
+@lisp
 (dicod-service #:config
   (dicod-configuration
    (handlers (list (dicod-handler
@@ -24353,7 +24353,7 @@ The following is an example @code{dicod-service} configuration.
                      (handler "wordnet")
                      (options '("database=wn")))
                     %dicod-database:gcide))))
-@end example
+@end lisp
 
 @cindex Docker
 @subsubheading Docker Service
@@ -24453,7 +24453,7 @@ This is the type of the service that runs build daemon of the
 @url{https://nixos.org/nix/, Nix} package manager.  Here is an example showing
 how to use it:
 
-@example
+@lisp
 (use-modules (gnu))
 (use-service-modules nix)
 (use-package-modules package-management)
@@ -24465,7 +24465,7 @@ how to use it:
 
   (services (append (list (service nix-service-type))
                     %base-services)))
-@end example
+@end lisp
 
 After @command{guix system reconfigure} configure Nix for your user:
 
@@ -24620,7 +24620,7 @@ As an example, the declaration below configures the NSS to use the
 back-end}, which supports host name lookups over multicast DNS (mDNS)
 for host names ending in @code{.local}:
 
-@example
+@lisp
 (name-service-switch
    (hosts (list %files    ;first, check /etc/hosts
 
@@ -24642,7 +24642,7 @@ for host names ending in @code{.local}:
                 ;; Finally, try with the "full" 'mdns'.
                 (name-service
                   (name "mdns")))))
-@end example
+@end lisp
 
 Do not worry: the @code{%mdns-host-lookup-nss} variable (see below)
 contains this configuration, so you will not have to type it if all you
@@ -24723,10 +24723,10 @@ An action specified using the @code{lookup-specification} macro
 (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library
 Reference Manual}).  For example:
 
-@example
+@lisp
 (lookup-specification (unavailable => continue)
                       (success => return))
-@end example
+@end lisp
 @end table
 @end deftp
 
@@ -24750,11 +24750,11 @@ most use cases.  For example, assuming you need the @code{megaraid_sas}
 module in addition to the default modules to be able to access your root
 file system, you would write:
 
-@example
+@lisp
 (operating-system
   ;; @dots{}
   (initrd-modules (cons "megaraid_sas" %base-initrd-modules)))
-@end example
+@end lisp
 
 @defvr {Scheme Variable} %base-initrd-modules
 This is the list of kernel modules included in the initrd by default.
@@ -24772,14 +24772,14 @@ For example, if you want to add a bunch of kernel modules to be loaded
 at boot time, you can define the @code{initrd} field of the operating
 system declaration like this:
 
-@example
+@lisp
 (initrd (lambda (file-systems . rest)
           ;; Create a standard initrd but set up networking
           ;; with the parameters QEMU expects by default.
           (apply base-initrd file-systems
                  #:qemu-networking? #t
                  rest)))
-@end example
+@end lisp
 
 The @code{base-initrd} procedure also handles common use cases that
 involves using the system as a QEMU guest, or as a ``live'' system with
@@ -25031,13 +25031,13 @@ Should you want to list additional boot menu entries @i{via} the
 boot another distro (hard to imagine!), you can define a menu entry
 along these lines:
 
-@example
+@lisp
 (menu-entry
   (label "The Other Distro")
   (linux "/boot/old/vmlinux-2.6.32")
   (linux-arguments '("root=/dev/sda2"))
   (initrd "/boot/old/initrd"))
-@end example
+@end lisp
 
 Details below.
 
@@ -25052,9 +25052,9 @@ The label to show in the menu---e.g., @code{"GNU"}.
 @item @code{linux}
 The Linux kernel image to boot, for example:
 
-@example
+@lisp
 (file-append linux-libre "/bzImage")
-@end example
+@end lisp
 
 For GRUB, it is also possible to specify a device explicitly in the
 file path using GRUB's device naming convention (@pxref{Naming
@@ -25590,7 +25590,7 @@ guix deploy @var{file}
 Such an invocation will deploy the machines that the code within @var{file}
 evaluates to.  As an example, @var{file} might contain a definition like this:
 
-@example
+@lisp
 ;; This is a Guix deployment of a "bare bones" setup, with
 ;; no X11 display server, to a machine with an SSH daemon
 ;; listening on localhost:2222. A configuration such as this
@@ -25630,7 +25630,7 @@ evaluates to.  As an example, @var{file} might contain a definition like this:
                        (user "alice")
                        (identity "./id_rsa")
                        (port 2222)))))
-@end example
+@end lisp
 
 The file should evaluate to a list of @var{machine} objects.  This example,
 upon being deployed, will create a new generation on the remote system
@@ -25919,7 +25919,7 @@ A @dfn{service type} is a node in the DAG described above.  Let us start
 with a simple example, the service type for the Guix build daemon
 (@pxref{Invoking guix-daemon}):
 
-@example
+@lisp
 (define guix-service-type
   (service-type
    (name 'guix)
@@ -25928,7 +25928,7 @@ with a simple example, the service type for the Guix build daemon
           (service-extension account-service-type guix-accounts)
           (service-extension activation-service-type guix-activation)))
    (default-value (guix-configuration))))
-@end example
+@end lisp
 
 @noindent
 It defines three things:
@@ -25972,12 +25972,12 @@ booted.
 
 A service of this type is instantiated like this:
 
-@example
+@lisp
 (service guix-service-type
          (guix-configuration
            (build-accounts 5)
            (use-substitutes? #f)))
-@end example
+@end lisp
 
 The second argument to the @code{service} form is a value representing
 the parameters of this specific service instance.
@@ -25986,9 +25986,9 @@ information about the @code{guix-configuration} data type.  When the
 value is omitted, the default value specified by
 @code{guix-service-type} is used:
 
-@example
+@lisp
 (service guix-service-type)
-@end example
+@end lisp
 
 @code{guix-service-type} is quite simple because it extends other
 services but is not extensible itself.
@@ -25997,7 +25997,7 @@ services but is not extensible itself.
 
 The service type for an @emph{extensible} service looks like this:
 
-@example
+@lisp
 (define udev-service-type
   (service-type (name 'udev)
                 (extensions
@@ -26011,7 +26011,7 @@ The service type for an @emph{extensible} service looks like this:
                              (udev-configuration
                               (udev udev)   ;the udev package to use
                               (rules (append initial-rules rules)))))))))
-@end example
+@end lisp
 
 This is the service type for the
 @uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device
@@ -26068,17 +26068,17 @@ raised.
 
 For instance, this:
 
-@example
+@lisp
 (service openssh-service-type)
-@end example
+@end lisp
 
 @noindent
 is equivalent to this:
 
-@example
+@lisp
 (service openssh-service-type
          (openssh-configuration))
-@end example
+@end lisp
 
 In both cases the result is an instance of @code{openssh-service-type}
 with the default configuration.
@@ -26099,7 +26099,7 @@ parameters.
 
 Here is an example of how a service is created and manipulated:
 
-@example
+@lisp
 (define s
   (service nginx-service-type
            (nginx-configuration
@@ -26113,7 +26113,7 @@ Here is an example of how a service is created and manipulated:
 
 (eq? (service-kind s) nginx-service-type)
 @result{} #t
-@end example
+@end lisp
 
 The @code{modify-services} form provides a handy way to change the
 parameters of some of the services of a list such as
@@ -26215,10 +26215,10 @@ service is an instance.
 For example, this extends mcron (@pxref{Scheduled Job Execution}) with
 an additional job:
 
-@example
+@lisp
 (simple-service 'my-mcron-job mcron-service-type
                 #~(job '(next-hour (3)) "guix gc -F 2G"))
-@end example
+@end lisp
 @end deffn
 
 At the core of the service abstraction lies the @code{fold-services}
@@ -26253,9 +26253,9 @@ The type of the @file{/etc} service.  This service is used to create
 files under @file{/etc} and can be extended by
 passing it name/file tuples such as:
 
-@example
+@lisp
 (list `("issue" ,(plain-file "issue" "Welcome!\n")))
-@end example
+@end lisp
 
 In this example, the effect would be to add an @file{/etc/issue} file
 pointing to the given file.
@@ -26391,7 +26391,7 @@ shepherd, The GNU Shepherd Manual}).
 The following example defines an action called @code{say-hello} that kindly
 greets the user:
 
-@example
+@lisp
 (shepherd-action
   (name 'say-hello)
   (documentation "Say hi!")
@@ -26399,7 +26399,7 @@ greets the user:
                  (format #t "Hello, friend! arguments: ~s\n"
                          args)
                  #t)))
-@end example
+@end lisp
 
 Assuming this action is added to the @code{example} service, then you can do:
 
@@ -26606,13 +26606,13 @@ Bash, say @code{bash-fixed}, in the usual way (@pxref{Defining
 Packages}).  Then, the original package definition is augmented with a
 @code{replacement} field pointing to the package containing the bug fix:
 
-@example
+@lisp
 (define bash
   (package
     (name "bash")
     ;; @dots{}
     (replacement bash-fixed)))
-@end example
+@end lisp
 
 From there on, any package depending directly or indirectly on Bash---as
 reported by @command{guix gc --requisites} (@pxref{Invoking guix

From e877f4d012342cc5fa916652b3846e40fdcd0491 Mon Sep 17 00:00:00 2001
From: Julien Lepiller 
Date: Sat, 7 Sep 2019 20:09:25 +0200
Subject: [PATCH 080/408] gnu: nml: Fix for newer pillow version.

* gnu/packages/game-development.scm (nml)[arguments]: Add a phase to fix
for newer pillow.
---
 gnu/packages/game-development.scm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 7eac935a69..bb4c1d26bb 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -314,6 +314,16 @@ provide connectivity for client applications written in any language.")
         (base32
          "1pmvvm3sgnpngfa7884mqhq3fwdjh9sr0ca07ypnidcg0y341w53"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-pillow
+           (lambda _
+             ;; pillow's version is not in PIL.Image.VERSION anymore
+             (substitute* "nml/version_info.py"
+               (("from PIL import Image") "import PIL")
+               (("Image.VERSION") "PIL.__version__"))
+             #t)))))
     (propagated-inputs
      `(("python-pillow" ,python-pillow)
        ("python-ply" ,python-ply)))

From 9d280ef2a8865c09f0708745a264520a3beb8496 Mon Sep 17 00:00:00 2001
From: Arun Isaac 
Date: Sat, 7 Sep 2019 23:58:44 +0530
Subject: [PATCH 081/408] gnu: poussetaches: Update to 0.0.2.

* gnu/packages/web.scm (poussetaches): Update to 0.0.2.
---
 gnu/packages/web.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index bea9f3dcc7..ad6f0635dd 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -6603,7 +6603,7 @@ Anonip can also be uses as a Python module in your own Python application.")
 (define-public poussetaches
   (package
     (name "poussetaches")
-    (version "0.0.1")
+    (version "0.0.2")
     (source
      (origin
        (method git-fetch)
@@ -6613,7 +6613,7 @@ Anonip can also be uses as a Python module in your own Python application.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "07106kfcz3a39jvrv3mlqqxlihsmdhgkrjnqznyjsij9absgvdv6"))))
+         "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
     (build-system go-build-system)
     (propagated-inputs
      `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron)

From 1d03a9198db6f3656a34d62eb89e5f7d5a99e76a Mon Sep 17 00:00:00 2001
From: Julien Lepiller 
Date: Sat, 7 Sep 2019 22:23:32 +0200
Subject: [PATCH 082/408] tests: opam: Fix input type in import test.

* tests/opam.scm: Expect propagated-inputs instead of inputs.
---
 tests/opam.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/opam.scm b/tests/opam.scm
index e8c0d15198..d3626fd010 100644
--- a/tests/opam.scm
+++ b/tests/opam.scm
@@ -99,7 +99,7 @@ url {
                          ('base32
                           (? string? hash)))))
              ('build-system 'ocaml-build-system)
-             ('inputs
+             ('propagated-inputs
               ('quasiquote
                (("ocaml-zarith" ('unquote 'ocaml-zarith)))))
              ('native-inputs

From 7a5ed348c0073cb28dae01c10b25155e29188fdb Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 7 Sep 2019 23:50:15 +0200
Subject: [PATCH 083/408] gnu: Add r-covr.

* gnu/packages/cran.scm (r-covr): New variable.
---
 gnu/packages/cran.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5bf37e3900..44913e53f7 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15212,3 +15212,35 @@ single cell integration, described in Korsunsky et al
 @url{doi.org/10.1101/461954}.  The package includes a standalone Harmony
 function and interfaces to external frameworks.")
       (license license:gpl3))))
+
+(define-public r-covr
+  (package
+    (name "r-covr")
+    (version "3.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "covr" version))
+       (sha256
+        (base32
+         "0fvd7v53w11x6kaw61hbml8n1j2ck9l2fv2wvqdsg689xic9rqcs"))))
+    (properties `((upstream-name . "covr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-crayon" ,r-crayon)
+       ("r-digest" ,r-digest)
+       ("r-httr" ,r-httr)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-rex" ,r-rex)
+       ("r-withr" ,r-withr)
+       ("r-yaml" ,r-yaml)))
+    (home-page "https://github.com/r-lib/covr")
+    (synopsis "Test coverage for R packages")
+    (description
+     "Thisp package enables you to track and report code coverage for your
+package and (optionally) upload the results to a coverage service.  Code
+coverage is a measure of the amount of code being exercised by a set of tests.
+It is an indirect measure of test quality and completeness.  This package is
+compatible with any testing methodology or framework and tracks coverage of
+both R code and compiled C/C++/FORTRAN code.")
+    (license license:gpl3)))

From 6983178b06f1efe61dc513d5b3fe1673c63ff47d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:01:25 +0200
Subject: [PATCH 084/408] gnu: Add r-systemfonts.

* gnu/packages/cran.scm (r-systemfonts): New variable.
---
 gnu/packages/cran.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 44913e53f7..bdfc3fb2c9 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15244,3 +15244,32 @@ It is an indirect measure of test quality and completeness.  This package is
 compatible with any testing methodology or framework and tracks coverage of
 both R code and compiled C/C++/FORTRAN code.")
     (license license:gpl3)))
+
+(define-public r-systemfonts
+  (package
+    (name "r-systemfonts")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "systemfonts" version))
+       (sha256
+        (base32
+         "0m0ljid683xcam2f14x7k2zv1yx4npac38a3gfv11vhxfbnpgp0z"))))
+    (properties `((upstream-name . "systemfonts")))
+    (build-system r-build-system)
+    (inputs
+     `(("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/r-lib/systemfonts")
+    (synopsis "System native font finding")
+    (description
+     "This package provides system native access to the font catalogue.  As
+font handling varies between systems it is difficult to correctly locate
+installed fonts across different operating systems.  The 'systemfonts' package
+provides bindings to the native libraries for finding font files that can then
+be used further by e.g. graphic devices.")
+    (license license:expat)))

From 9390300915a642c08a494aa67bf970c9a6ad5ff3 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:17:22 +0200
Subject: [PATCH 085/408] gnu: Add r-graphlayouts.

* gnu/packages/cran.scm (r-graphlayouts): New variable.
---
 gnu/packages/cran.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index bdfc3fb2c9..ac528468cb 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15273,3 +15273,30 @@ installed fonts across different operating systems.  The 'systemfonts' package
 provides bindings to the native libraries for finding font files that can then
 be used further by e.g. graphic devices.")
     (license license:expat)))
+
+(define-public r-graphlayouts
+  (package
+    (name "r-graphlayouts")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "graphlayouts" version))
+       (sha256
+        (base32
+         "03dizbhhdhnzbj2i5zvqgs617kwcv4h2pha4f16adic0fph1rxl3"))))
+    (properties `((upstream-name . "graphlayouts")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-igraph" ,r-igraph)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)))
+    (home-page "https://github.com/schochastics/graphlayouts")
+    (synopsis "Additional layout algorithms for network visualizations")
+    (description
+     "This package provides several layout algorithms to visualize networks
+which are not part of the igraph library.  Most are based on the concept of
+stress majorization by Gansner et al. (2004)
+.  Some more specific algorithms allow to
+emphasize hidden group structures in networks or focus on specific nodes.")
+    (license license:expat)))

From 9567bd8dd9d092ac4bfdf9abfc35263e39146e26 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:18:03 +0200
Subject: [PATCH 086/408] gnu: Add r-tidygraph.

* gnu/packages/cran.scm (r-tidygraph): New variable.
---
 gnu/packages/cran.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index ac528468cb..19aa0522b1 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15300,3 +15300,36 @@ stress majorization by Gansner et al. (2004)
 .  Some more specific algorithms allow to
 emphasize hidden group structures in networks or focus on specific nodes.")
     (license license:expat)))
+
+(define-public r-tidygraph
+  (package
+    (name "r-tidygraph")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "tidygraph" version))
+       (sha256
+        (base32
+         "1zpsarm74afbc7p5dlyb0whc09670qdcddw1ckb25cfc9hfh0hjn"))))
+    (properties `((upstream-name . "tidygraph")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-igraph" ,r-igraph)
+       ("r-magrittr" ,r-magrittr)
+       ("r-pillar" ,r-pillar)
+       ("r-r6" ,r-r6)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rlang" ,r-rlang)
+       ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)))
+    (home-page "https://github.com/thomasp85/tidygraph")
+    (synopsis "Tidy API for graph manipulation")
+    (description
+     "This package provides a graph implementation that can be thought of as
+two tidy data frames describing node and edge data respectively.  It provides
+an approach to manipulate these two virtual data frames using the API defined
+in the @code{dplyr} package, and it also provides tidy interfaces to a lot of
+common graph algorithms.")
+    (license license:expat)))

From e5cf3722c68561f19cb91d605692d7a8a0e69b76 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:18:18 +0200
Subject: [PATCH 087/408] gnu: r-gdtools: Update to 0.2.0.

* gnu/packages/statistics.scm (r-gdtools): Update to 0.2.0.
[inputs]: Add freetype.
[propagated-inputs]: Add r-systemfonts; remove r-withr.
---
 gnu/packages/statistics.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 143df3e63e..a532c376c6 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages emacs-xyz)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gettext)
@@ -1199,23 +1200,24 @@ agnes cluster diagrams.")
 (define-public r-gdtools
   (package
     (name "r-gdtools")
-    (version "0.1.9")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gdtools" version))
        (sha256
         (base32
-         "0w4fihf52q5qxxk0lg36x6yvjjl8vw66y60ncdjs5fvnxqn5z2vb"))))
+         "1mvpkp8cj30fwd4bwlz96x3cff7yzfbfz7iswmf77zl0a6122inh"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("cairo" ,cairo)
+       ("freetype2" ,freetype)
        ("zlib" ,zlib)))
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
-       ("r-withr" ,r-withr)))
+       ("r-systemfonts" ,r-systemfonts)))
     (home-page "https://cran.r-project.org/web/packages/gdtools")
     (synopsis "Utilities for graphical rendering")
     (description

From 2b705168e99a21c777353d028150cc4e03abceb1 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:19:15 +0200
Subject: [PATCH 088/408] gnu: r-devtools: Update to 2.2.0.

* gnu/packages/statistics.scm (r-devtools): Update to 2.2.0.
[propagated-inputs]: Add r-covr, r-crayon, r-desc, r-dt, r-ellipsis, r-glue,
and r-rversions.
---
 gnu/packages/statistics.scm | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index a532c376c6..03640a2cfd 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -2438,18 +2438,24 @@ informative error messages when it's not available.")
 (define-public r-devtools
   (package
     (name "r-devtools")
-    (version "2.1.0")
+    (version "2.2.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "devtools" version))
               (sha256
                (base32
-                "0393v7nr22gr5g9afgrhq4ab3lwbqy6fd3shnmlhdpqam5357xy1"))))
+                "05fag25mkqy13yja8x32aqr9c0ah9rbm8cfjcsmy1dv5h4j8cxa1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
        ("r-cli" ,r-cli)
+       ("r-covr" ,r-covr)
+       ("r-crayon" ,r-crayon)
+       ("r-desc" ,r-desc)
        ("r-digest" ,r-digest)
+       ("r-dt" ,r-dt)
+       ("r-ellipsis" ,r-ellipsis)
+       ("r-glue" ,r-glue)
        ("r-git2r" ,r-git2r)
        ("r-httr" ,r-httr)
        ("r-jsonlite" ,r-jsonlite)
@@ -2460,6 +2466,7 @@ informative error messages when it's not available.")
        ("r-roxygen2" ,r-roxygen2)
        ("r-remotes" ,r-remotes)
        ("r-rstudioapi" ,r-rstudioapi)
+       ("r-rversions" ,r-rversions)
        ("r-sessioninfo" ,r-sessioninfo)
        ("r-testthat" ,r-testthat)
        ("r-usethis" ,r-usethis)

From de162a1509af8d79af136e646f1ae65c1df8bfaa Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:19:46 +0200
Subject: [PATCH 089/408] gnu: r-rcpparmadillo: Update to 0.9.700.2.0.

* gnu/packages/statistics.scm (r-rcpparmadillo): Update to 0.9.700.2.0.
---
 gnu/packages/statistics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 03640a2cfd..43f8778e70 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -2607,13 +2607,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.600.4.0")
+    (version "0.9.700.2.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "07jg2667xyhmp1fbcdi5nnhmkk81da76s9rlswfq4k2sjsmbfmr0"))))
+                "0g25w32dnqrvhnri8x4yxqawxd8qhn7w3m8d29nxxy0gybx3y8x9"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     ;; All needed for vignettes

From 5e7c6e54c812f7913737785f747c06ebf24b1c08 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:19:55 +0200
Subject: [PATCH 090/408] gnu: r-matrixstats: Update to 0.55.0.

* gnu/packages/statistics.scm (r-matrixstats): Update to 0.55.0.
---
 gnu/packages/statistics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 43f8778e70..61d1babd91 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -3654,13 +3654,13 @@ t-probabilities, quantiles, random deviates and densities.")
 (define-public r-matrixstats
   (package
     (name "r-matrixstats")
-    (version "0.54.0")
+    (version "0.55.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "matrixStats" version))
               (sha256
                (base32
-                "0vx00ldsg2zvdrjn49jxczk2c9iaabgvzgpdka5j02ihh7hv83cg"))))
+                "06fvx0rlaz80k0lkqq2n7v0309xpz7h7ss0m9kgyikp4xs8bvmhn"))))
     (properties `((upstream-name . "matrixStats")))
     (build-system r-build-system)
     (native-inputs

From 02efab6917ebb0f3e08b18a101526f2a0f1fd0b8 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:05 +0200
Subject: [PATCH 091/408] gnu: r-feather: Update to 0.3.4.

* gnu/packages/cran.scm (r-feather): Update to 0.3.4.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 19aa0522b1..57765b7d85 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1059,14 +1059,14 @@ work well on small screens.")
 (define-public r-feather
   (package
     (name "r-feather")
-    (version "0.3.3")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "feather" version))
        (sha256
         (base32
-         "0ls8lmygyjq60467s88h66d7fczjp1d3a2106rfq4dx9lyfvdfsa"))))
+         "1zwr2lxbzks2k1jjbnnv965j8sbwxnszl1vyrnl60ar24nykd2f3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-hms" ,r-hms)

From 9960ad55be0b874dc5d9fea2f8527aad47f5aab9 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:09 +0200
Subject: [PATCH 092/408] gnu: r-geometry: Update to 0.4.4.

* gnu/packages/cran.scm (r-geometry): Update to 0.4.4.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 57765b7d85..0b70df1434 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -2663,14 +2663,14 @@ Optimization problems by using the simplex algorithm.")
 (define-public r-geometry
   (package
     (name "r-geometry")
-    (version "0.4.3")
+    (version "0.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "geometry" version))
        (sha256
         (base32
-         "0z4491mhfmrlbb8lazjvq55alrprx7k0abg2d39fj0lsj84cls1r"))))
+         "1mx5n5mw63nij4n6crs9165mlls4fnh1ipw5ch467rjsidgl0mg8"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-magic" ,r-magic)

From f11920c759447679221ef483f7a06ebb9bdd6292 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:15 +0200
Subject: [PATCH 093/408] gnu: r-ggpubr: Update to 0.2.3.

* gnu/packages/cran.scm (r-ggpubr): Update to 0.2.3.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 0b70df1434..bcc277e76c 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -5569,14 +5569,14 @@ and adds the annotation to the plot.")
 (define-public r-ggpubr
   (package
     (name "r-ggpubr")
-    (version "0.2.2")
+    (version "0.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggpubr" version))
        (sha256
         (base32
-         "0r5knv3707pmpngmj60zn761y3bh8lj89dhh1b80ss083xnxr4qw"))))
+         "0i81mmz4qn9yzcgfa6dhkcrx4ddlflkm2c3b40isc8all43rm8rn"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cowplot" ,r-cowplot)

From c90eebf791b063760a922f1f4de64867681b2a3a Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:20 +0200
Subject: [PATCH 094/408] gnu: r-insight: Update to 0.5.0.

* gnu/packages/cran.scm (r-insight): Update to 0.5.0.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index bcc277e76c..a7be239761 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -6091,14 +6091,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.4.1")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "1lw1r3mb97z5p9z25jfzlhs0sbnwp6v8kzysf0am01x4m7l3iz82"))))
+         "0lrh2l9n2zd9n3zzknsxz6nlasnrayx3bplxlz7m616g56gr5nfp"))))
     (build-system r-build-system)
     (home-page "https://easystats.github.io/insight/")
     (synopsis "Easy access to model information for various model objects")

From 9a4706828cfd01dce148c146dc710db84e538266 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:25 +0200
Subject: [PATCH 095/408] gnu: r-ggformula: Update to 0.9.2.

* gnu/packages/cran.scm (r-ggformula): Update to 0.9.2.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index a7be239761..dbc2ea6e60 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -6873,13 +6873,13 @@ and coverage methods to tune the choice of threshold.")
 (define-public r-ggformula
   (package
     (name "r-ggformula")
-    (version "0.9.1")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggformula" version))
        (sha256
-        (base32 "01ngx8qh9lhmagng6abx2ky54zi3iyj5bpxlnw59slagwv7l6icx"))))
+        (base32 "16ycabhnp78fsiv1dc63ccgh9gmpsy2683vbmq0fdzl6w3pd87sr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)

From f396d343b7779a20f2e7dc3696167c54d9869274 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:30 +0200
Subject: [PATCH 096/408] gnu: r-ggeffects: Update to 0.12.0.

* gnu/packages/cran.scm (r-ggeffects): Update to 0.12.0.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index dbc2ea6e60..be32bdefb9 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -8162,14 +8162,14 @@ effects models and Bayesian models.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "0.11.0")
+    (version "0.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "1b0lxa8bljdh6h4lk7pql1lrhjlvh7p5c8qlgb8ac6ay8hb79vmi"))))
+         "0idfycjk05gyykfp9ibmhxfcjvd01ikh1dl0fb4nqw6znw3ar0xp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)

From 995a20e89214049daab5026c430fe34ae4cccedb Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:35 +0200
Subject: [PATCH 097/408] gnu: r-msigdbr: Update to 7.0.1.

* gnu/packages/cran.scm (r-msigdbr): Update to 7.0.1.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index be32bdefb9..224dbe8b10 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -13607,14 +13607,14 @@ the XKCD web comic.")
 (define-public r-msigdbr
   (package
     (name "r-msigdbr")
-    (version "6.2.1")
+    (version "7.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "msigdbr" version))
        (sha256
         (base32
-         "1264j1hs74kq7hyh68vfynadfi6mdpq46qm1hnwzkzzhmbzpb9cg"))))
+         "19p8z617m3my8la7n1qgb1s2msf940r372im3q30qkbcx3qxg3sd"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)

From 801dc98f1f6a99d576525c22ee40305d0cbea30c Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:20:46 +0200
Subject: [PATCH 098/408] gnu: r-ggraph: Update to 2.0.0.

* gnu/packages/cran.scm (r-ggraph): Update to 2.0.0.
[propagated-inputs]: Add r-graphlayouts, r-rlang, and r-tidygraph; remove
r-plyr.
---
 gnu/packages/cran.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 224dbe8b10..b09d46678a 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -13881,14 +13881,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
 (define-public r-ggraph
   (package
     (name "r-ggraph")
-    (version "1.0.2")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggraph" version))
        (sha256
         (base32
-         "0fpmp326mryd1k1qvacjadksrnhbla8h960i18lmrimzrag7692c"))))
+         "0qj7w3af0pgmd9mil6y571jikfkln7b8csvzg6b08spwbglfy1s3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -13896,12 +13896,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
        ("r-ggforce" ,r-ggforce)
        ("r-ggplot2" ,r-ggplot2)
        ("r-ggrepel" ,r-ggrepel)
+       ("r-graphlayouts" ,r-graphlayouts)
        ("r-gtable" ,r-gtable)
        ("r-igraph" ,r-igraph)
        ("r-mass" ,r-mass)
-       ("r-plyr" ,r-plyr)
        ("r-rcpp" ,r-rcpp)
+       ("r-rlang" ,r-rlang)
        ("r-scales" ,r-scales)
+       ("r-tidygraph" ,r-tidygraph)
        ("r-viridis" ,r-viridis)))
     (home-page "https://cran.r-project.org/web/packages/ggraph/")
     (synopsis "Implementation of grammar of graphics for graphs and networks")

From f70599cb785f1b0faf01380363987d4478b74f41 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:21:13 +0200
Subject: [PATCH 099/408] gnu: r-edger: Update to 3.26.8.

* gnu/packages/bioinformatics.scm (r-edger): Update to 3.26.8.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index cf2dc57fa7..68c26a2ff5 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7458,13 +7458,13 @@ names in their natural, rather than lexicographic, order.")
 (define-public r-edger
   (package
     (name "r-edger")
-    (version "3.26.7")
+    (version "3.26.8")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "edgeR" version))
               (sha256
                (base32
-                "1xbhb8aa1ygm5crkp1bmqs2x1601ppa2kgc2xlf2zh8jj8zqapg8"))))
+                "1wwimzviy2vklp80faz7sbbp74qcw2csbmlfgvzj7b785vwarpwg"))))
     (properties `((upstream-name . "edgeR")))
     (build-system r-build-system)
     (propagated-inputs

From 8e70b33c56075ae338d7fe5587d4841171fc3c8d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:21:21 +0200
Subject: [PATCH 100/408] gnu: r-annotationhub: Update to 2.16.1.

* gnu/packages/bioinformatics.scm (r-annotationhub): Update to 2.16.1.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 68c26a2ff5..bb0206f24f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -9639,14 +9639,14 @@ Shiny-based display methods for Bioconductor objects.")
 (define-public r-annotationhub
   (package
     (name "r-annotationhub")
-    (version "2.16.0")
+    (version "2.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AnnotationHub" version))
        (sha256
         (base32
-         "1rpzl4x5mrwxrrf1jzm4zni6li6x34fjfyybsdvplb0ixa48zhn4"))))
+         "0c773cmhng907839f0bq161jky7362lxxny36ac55qxiz1giqi8j"))))
     (properties `((upstream-name . "AnnotationHub")))
     (build-system r-build-system)
     (propagated-inputs

From d40ebbf228326485dca926013223e7509c2a9435 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:21:26 +0200
Subject: [PATCH 101/408] gnu: r-gprofiler: Update to 0.6.8.

* gnu/packages/bioinformatics.scm (r-gprofiler): Update to 0.6.8.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index bb0206f24f..61d992aacc 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -10034,14 +10034,14 @@ interval to data view, mismatch pileup, and several splicing summaries.")
 (define-public r-gprofiler
   (package
     (name "r-gprofiler")
-    (version "0.6.7")
+    (version "0.6.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gProfileR" version))
        (sha256
         (base32
-         "12nwidbnqmnfy5dnqga26byslvdnkrpz2fi19qfcby6xx0wbndk7"))))
+         "05d6y6b7vkkzp2qhs1cwlvp02djij1b28dbwxnrms08f8qi35iaj"))))
     (properties `((upstream-name . "gProfileR")))
     (build-system r-build-system)
     (propagated-inputs

From a39222d7e2dc64841c79d42d8c0da782e6b5b29a Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:21:32 +0200
Subject: [PATCH 102/408] gnu: r-regioner: Update to 1.16.3.

* gnu/packages/bioconductor.scm (r-regioner): Update to 1.16.3.
---
 gnu/packages/bioconductor.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 37cd51d16c..4f8ebbcfd6 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1013,14 +1013,14 @@ the Human Protein Atlas project.")
 (define-public r-regioner
   (package
     (name "r-regioner")
-    (version "1.16.2")
+    (version "1.16.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "regioneR" version))
        (sha256
         (base32
-         "1b8ybx4wcxlqw9nvajawsf0lqaqn9v89rxcawg4g3dbzlfssfc5q"))))
+         "0p0jkq5w6v9zlg0csp4ag55228ikbbc86w28yzd9s0gxgx1wvdv4"))))
     (properties `((upstream-name . "regioneR")))
     (build-system r-build-system)
     (propagated-inputs

From f791b1eecc31bbeb77489a8d5b336daa8abe1927 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 00:21:40 +0200
Subject: [PATCH 103/408] gnu: r-rsubread: Update to 1.34.7.

* gnu/packages/bioconductor.scm (r-rsubread): Update to 1.34.7.
---
 gnu/packages/bioconductor.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 4f8ebbcfd6..087ec9bf10 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -4888,14 +4888,14 @@ annotations.")
 (define-public r-rsubread
   (package
     (name "r-rsubread")
-    (version "1.34.6")
+    (version "1.34.7")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rsubread" version))
        (sha256
         (base32
-         "0nnfh4hnrs5kd72m8c50cidbsxjz12szw2vynpmg8q0wpd99q550"))))
+         "0z4ydk9296bp76ah5y6a7za5jyn4h238xngb789zragly902x83y"))))
     (properties `((upstream-name . "Rsubread")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))

From 9f74bd317f00c55ab1fa30683c1668a19bf17eab Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Sat, 7 Sep 2019 20:08:16 -0700
Subject: [PATCH 104/408] gnu: python-debian: Update to 0.1.36.

* gnu/packages/python-xyz (python-debian): Update to 0.1.36.
  [source]: Switch to using git-fetch.
  [arguments]: Add phase to delete tests depending on tools not yet present in
  guix.
  [propagated-inputs]: Add python-chardet.
---
 gnu/packages/python-xyz.scm | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2827ddf770..16f1331a84 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -7490,17 +7490,31 @@ serve the same purpose: provide Python bindings for libmagic.")))
   (package
     (name "python-debian")
     (home-page "https://salsa.debian.org/python-debian-team/python-debian")
-    (version "0.1.28")
+    (version "0.1.36")
     (source
      (origin
-       (method url-fetch)
-       (uri (pypi-uri name version))
+       ;; Use git-fetch, as pypi doesn't include test suite.
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
+         "0qy6x28bj6yfikhjww932v5xq4mf5bm1iczl7acy4c7zm6mwhqfa"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'remove-debian-specific-tests
+                    ;; python-apt, apt and dpkg are not yet available in guix,
+                    ;; and these tests heavily depend on them.
+                    (lambda _
+                      (delete-file "lib/debian/tests/test_deb822.py")
+                      (delete-file "lib/debian/tests/test_debfile.py")
+                      #t)))))
     (propagated-inputs
-     `(("python-six" ,python-six)))
+     `(("python-six" ,python-six)
+       ("python-chardet" ,python-chardet)))
     (synopsis "Debian package related modules")
     (description
      ;; XXX: Use @enumerate instead of @itemize to work around

From 3ec8c0ca942409da6ce06c38f6d8b6ccfc2a943a Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Sat, 7 Sep 2019 15:35:14 -0700
Subject: [PATCH 105/408] gnu: diffoscope: Update to 123.

* gnu/packages/package-management (diffoscope): Update to 123.
  [arguments]: Update phase writable-test-data to include tests directory.
    Add phase remove-ocaml-test.
---
 gnu/packages/package-management.scm | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 100c148fda..1cc2d3f6a0 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -546,7 +546,7 @@ transactions from C or Python.")
     (license license:gpl2+)))
 
 (define-public diffoscope
-  (let ((version "122"))
+  (let ((version "123"))
     (package
       (name "diffoscope")
       (version version)
@@ -558,7 +558,7 @@ transactions from C or Python.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1pwddknk8qyv88ba63why8vbnlc14b47434lv4ijx49m7ya3zfvg"))))
+                  "11bxms5rkhi0v4pxx29v4qgvhp3fmf0fkzci6gn5xcv4fl1zy4wj"))))
       (build-system python-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
@@ -575,6 +575,13 @@ transactions from C or Python.")
                       (lambda _
                         (delete-file "tests/comparators/test_berkeley_db.py")
                         #t))
+                    ;; Test is dynamically generated and may have false
+                    ;; negatives with different ocaml versions.  Further
+                    ;; background in: https://bugs.debian.org/939386
+                    (add-after 'unpack 'remove-ocaml-test
+                      (lambda _
+                        (delete-file "tests/comparators/test_ocaml.py")
+                        #t))
                     (add-after 'unpack 'embed-tool-references
                       (lambda* (#:key inputs #:allow-other-keys)
                         (substitute* "diffoscope/comparators/utils/compare.py"
@@ -594,10 +601,9 @@ transactions from C or Python.")
                         #t))
                     (add-before 'check 'writable-test-data
                       (lambda _
-                        ;; tests/comparators/test_elf.py needs write access to
-                        ;; test data
-                        (make-file-writable
-                         "tests/data/ignore_readelf_errors_expected_diff")
+                        ;; tests may need needs write access to tests
+                        ;; directory
+                        (for-each make-file-writable (find-files "tests"))
                         #t))
                     (add-before 'check 'delete-failing-test
                       (lambda _

From 3dd20da0cbdd8b273b5b76b6b8f95aed28c8d0e9 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Fri, 6 Sep 2019 10:52:50 -0700
Subject: [PATCH 106/408] gnu: diffoscope: Enable additional tests.

* gnu/packages/package-management (diffoscope) [native-inputs]: Add additional
  packages used for tests.
---
 gnu/packages/package-management.scm | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 1cc2d3f6a0..560684e458 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -620,7 +620,25 @@ transactions from C or Python.")
                 ("xxd" ,xxd)))
       ;; Below are modules used for tests.
       (native-inputs `(("python-pytest" ,python-pytest)
-                       ("python-chardet" ,python-chardet)))
+                       ("python-chardet" ,python-chardet)
+                       ;; test suite skips tests when tool is missing
+                       ("bdb" ,bdb)
+                       ("binutils" ,binutils)
+                       ("bzip2" ,bzip2)
+                       ("colord" ,colord)
+                       ("cpio" ,cpio)
+                       ("e2fsprogs" ,e2fsprogs)
+                       ("gettext" ,gettext-minimal)
+                       ("gnumeric" ,gnumeric)
+                       ("gnupg" ,gnupg)
+                       ("libarchive" ,libarchive)
+                       ("lz4" ,lz4)
+                       ("openssh" ,openssh)
+                       ("rpm" ,rpm)
+                       ("sqlite" ,sqlite)
+                       ("squashfs-tools" ,squashfs-tools)
+                       ("xxd" ,xxd)
+                       ("xz" ,xz)))
       (home-page "https://diffoscope.org/")
       (synopsis "Compare files, archives, and directories in depth")
       (description

From 37ecf2d905e6afc555150ffe51095415a0d27b89 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Sat, 7 Sep 2019 17:04:39 -0700
Subject: [PATCH 107/408] gnu: diffoscope: Enable even more tests.

* gnu/packages/package-management (diffoscope)[native-inputs]: Add additional
  dependencies for tests.
  [use-module]: Add corresponding package modules.
---
 gnu/packages/package-management.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 560684e458..579a2001d8 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -31,6 +31,7 @@
 (define-module (gnu packages package-management)
   #:use-module (gnu packages)
   #:use-module (gnu packages acl)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages autotools)
@@ -39,6 +40,7 @@
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages bootstrap)          ;for 'bootstrap-guile-origin'
+  #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpio)
@@ -48,6 +50,7 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -55,12 +58,20 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages guile-xyz)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages man)
+  #:use-module (gnu packages mono)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
@@ -72,8 +83,10 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages web)
@@ -625,18 +638,31 @@ transactions from C or Python.")
                        ("bdb" ,bdb)
                        ("binutils" ,binutils)
                        ("bzip2" ,bzip2)
+                       ("cdrtools" ,cdrtools)
                        ("colord" ,colord)
                        ("cpio" ,cpio)
+                       ("docx2txt" ,docx2txt)
                        ("e2fsprogs" ,e2fsprogs)
+                       ("ffmpeg" ,ffmpeg)
                        ("gettext" ,gettext-minimal)
+                       ("ghc" ,ghc)
+                       ("ghostscript" ,ghostscript)
+                       ("giflib:bin" ,giflib "bin")
                        ("gnumeric" ,gnumeric)
                        ("gnupg" ,gnupg)
+                       ("imagemagick" ,imagemagick)
                        ("libarchive" ,libarchive)
+                       ("llvm" ,llvm)
                        ("lz4" ,lz4)
+                       ("mono" ,mono)
+                       ;; no unversioned openjdk available
+                       ("openjdk:jdk" ,openjdk12 "jdk")
                        ("openssh" ,openssh)
+                       ("poppler" ,poppler)
                        ("rpm" ,rpm)
                        ("sqlite" ,sqlite)
                        ("squashfs-tools" ,squashfs-tools)
+                       ("tcpdump" ,tcpdump)
                        ("xxd" ,xxd)
                        ("xz" ,xz)))
       (home-page "https://diffoscope.org/")

From 68fea604b06a6d1d461fa856a6379bb49500fb3b Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Sat, 7 Sep 2019 16:15:08 -0700
Subject: [PATCH 108/408] gnu: Add pngsuite.

* gnu/packages/image (pngsuite): New variable.
---
 gnu/packages/image.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 4e3fee53e2..433e59c207 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1462,6 +1462,40 @@ PNG, and performs PNG integrity checks and corrections.")
     (home-page "http://optipng.sourceforge.net/")
     (license license:zlib)))
 
+(define-public pngsuite
+  (package
+    (name "pngsuite")
+    (version "2017jul19")
+    (source
+     (origin
+       (method url-fetch/tarbomb)
+       (uri (string-append "http://www.schaik.com/pngsuite2011/PngSuite-"
+                           version ".tgz"))
+       (sha256
+        (base32
+         "1j7xgd9iffcnpphhzz9ld9ybrjmx9brhq0803g0450ssr52b5502"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; there is no test target
+       #:license-file-regexp "PngSuite.LICENSE"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (copy-recursively "." (string-append out "/"))
+             #t)))
+         (delete 'build)
+         (delete 'configure))))
+    (home-page "http://www.schaik.com/pngsuite2011/pngsuite.html")
+    (synopsis "Example PNGs for use in test suites")
+    (description "Collection of graphics images created to test PNG
+applications like viewers, converters and editors.  As far as that is
+possible, all formats supported by the PNG standard are represented.")
+    (license (license:fsdg-compatible "file://PngSuite.LICENSE" "Permission to
+use, copy, modify and distribute these images for any purpose and without fee
+is hereby granted."))))
+
 (define-public libjpeg-turbo
   (package
     (name "libjpeg-turbo")

From d54ca1cd4d77a945ad07dba34a69c23a3e57b3f1 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Fri, 6 Sep 2019 16:48:40 -0700
Subject: [PATCH 109/408] gnu: Add sng.

* gnu/packages/images (sng): New variable.
* gnu/packages/package-management (diffoscope)[native-inputs]: Add sng.
---
 gnu/packages/image.scm              | 39 +++++++++++++++++++++++++++++
 gnu/packages/package-management.scm |  1 +
 2 files changed, 40 insertions(+)

diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 433e59c207..2a9ee990be 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1836,3 +1836,42 @@ identical visual appearance.")
 to the standard output.  It works well together with grim.")
    ;; MIT license.
    (license license:expat)))
+
+(define-public sng
+  (package
+    (name "sng")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/sng/sng-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "06a6ydvx9xb3vxvrzdrg3hq0rjwwj9ibr7fyyxjxq6qx1j3mb70i"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'link-pngsuite
+           ;; tests expect pngsuite in source dir
+           (lambda* (#:key inputs #:allow-other-keys)
+             (symlink (assoc-ref inputs "pngsuite") "pngsuite")
+             #t)))
+       #:configure-flags
+       (list (string-append "--with-rgbtxt="
+                            (assoc-ref %build-inputs "xorg-rgb")
+                            "/share/X11/rgb.txt"))))
+    (inputs `(("xorg-rgb" ,xorg-rgb)
+              ("libpng" ,libpng)))
+    (native-inputs `(("pngsuite" ,pngsuite)))
+    (home-page "http://sng.sourceforge.net")
+    (synopsis "Markup language for representing PNG contents")
+    (description "SNG (Scriptable Network Graphics) is a minilanguage designed
+specifically to represent the entire contents of a PNG (Portable Network
+Graphics) file in an editable form.  Thus, SNGs representing elaborate
+graphics images and ancillary chunk data can be readily generated or modified
+using only text tools.
+
+SNG is implemented by a compiler/decompiler called sng that
+losslessly translates between SNG and PNG.")
+    (license license:zlib)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 579a2001d8..b9eabfb55c 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -660,6 +660,7 @@ transactions from C or Python.")
                        ("openssh" ,openssh)
                        ("poppler" ,poppler)
                        ("rpm" ,rpm)
+                       ("sng" ,sng)
                        ("sqlite" ,sqlite)
                        ("squashfs-tools" ,squashfs-tools)
                        ("tcpdump" ,tcpdump)

From bc5aa386675cb39aaf034d73af406c3ddffb4cb0 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Thu, 5 Sep 2019 16:12:08 -0700
Subject: [PATCH 110/408] gnu: Add odt2txt.

* gnu/packages/textutils (odt2txt): New variable.
* gnu/packages/package-management (diffoscope)[native-inputs]: Add odt2txt.
  [use-modules]: Remove accidentally added libreoffice package module.
---
 gnu/packages/package-management.scm |  2 +-
 gnu/packages/textutils.scm          | 38 +++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index b9eabfb55c..b712bd7ec9 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -62,7 +62,6 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages java)
-  #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages llvm)
@@ -655,6 +654,7 @@ transactions from C or Python.")
                        ("llvm" ,llvm)
                        ("lz4" ,lz4)
                        ("mono" ,mono)
+                       ("odt2txt" ,odt2txt)
                        ;; no unversioned openjdk available
                        ("openjdk:jdk" ,openjdk12 "jdk")
                        ("openssh" ,openssh)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 388f164428..2da31973f4 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -879,6 +879,44 @@ indentation.
     (home-page "http://docx2txt.sourceforge.net")
     (license license:gpl3+)))
 
+(define-public odt2txt
+  (package
+    (name "odt2txt")
+    (version "0.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/dstosberg/odt2txt/")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0im3kzvhxkjlx57w6h13mc9584c74ma1dyymgvpq2y61av3gc35v"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no make check
+       #:make-flags (list "CC=gcc"
+                          (string-append "DESTDIR=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         ;; no configure script
+         (delete 'configure))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://github.com/dstosberg/odt2txt/")
+    (synopsis "Converter from OpenDocument Text to plain text")
+    (description "odt2txt is a command-line tool which extracts the text out
+of OpenDocument Texts, as produced by OpenOffice.org, KOffice, StarOffice and
+others.
+
+odt2txt can also extract text from some file formats similar to OpenDocument
+Text, such as OpenOffice.org XML (*.sxw), which was used by OpenOffice.org
+version 1.x and older StarOffice versions.  To a lesser extent, odt2txt may be
+useful to extract content from OpenDocument spreadsheets (*.ods) and
+OpenDocument presentations (*.odp).")
+    (license license:gpl2)))
+
 (define-public opencc
   (package
     (name "opencc")

From e0819e5ca2d59d87ba6c16a6149e7b18faf60543 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 09:27:11 +0200
Subject: [PATCH 111/408] gnu: Add emacs-tao-theme.

* gnu/packages/emacs-xyz.scm (emacs-tao-theme): New variable.
---
 gnu/packages/emacs-xyz.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index afb55cb902..f3de24d825 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -18171,3 +18171,32 @@ JIRA issue servers.")
        "This packages fontifies the ssh config keywords and creates
 keybindings for skipping from host section to host section.")
       (license license:gpl3+))))
+
+(define-public emacs-tao-theme
+  (let ((commit "c5107fbe7e752f4e58c2d2147ff18a1ebb12937c")
+        (revision "0"))
+    (package
+      (name "emacs-tao-theme")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/11111000000/tao-theme-emacs.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "07vvlglmkj87hpxz79s3bl2cjn71vain57fdxs7j9vlr5jkchxwn"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/11111000000/tao-theme-emacs")
+      (synopsis "Parameterized uncolored color themes for Emacs")
+      (description
+       "This package provides two parameterized uncolored color themes for
+Emacs: @code{tao-yin} and @code{tao-yang}.  The default
+@code{tao-theme-scale-fn} is @code{tao-theme-golden-scale}.
+
+You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
+@code{tao-theme-scale-filter-fn}, for edge filter; and
+@code{tao-theme-use-height}.")
+      (license license:gpl3+))))

From 799d8d3ca616c0a85d8f0b6e7f5e12898db94714 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 11:17:53 +0300
Subject: [PATCH 112/408] gnu: haskell-xyz.scm: Correctly hide packages.

* gnu/packages/haskell-xyz.scm (ghc-attoparsec-bootstrap,
ghc-integer-logarithms-bootstrap, ghc-scientific-bootstrap,
ghc-semigroups-bootstrap, ghc-unordered-containers-bootstrap,
ghc-wcwidth-bootstrap)[properties]: Fix typo, make 'hidden?' a tuple.
---
 gnu/packages/haskell-xyz.scm | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 940fbe8a6c..ee26c1a25a 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2019 Eric Bavier 
 ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès 
 ;;; Copyright © 2016, 2017 ng0 
-;;; Copyright © 2016 Efraim Flashner 
+;;; Copyright © 2016, 2019 Efraim Flashner 
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus 
 ;;; Copyright © 2016, 2017 David Craven 
 ;;; Copyright © 2017 Danny Milosavljevic 
@@ -463,7 +463,7 @@ complicated text/binary file formats.")
     (inputs
      `(("ghc-scientific" ,ghc-scientific-bootstrap)))
     (native-inputs '())
-    (properties '(hidden? #t))))
+    (properties '((hidden? #t)))))
 
 (define-public ghc-attoparsec-iso8601
   (package
@@ -5201,7 +5201,7 @@ in migrated modules.")
     (name "ghc-integer-logarithms-bootstrap")
     (arguments `(#:tests? #f))
     (native-inputs '())
-    (properties '(hidden? #t))))
+    (properties '((hidden? #t)))))
 
 (define-public ghc-interpolate
   (package
@@ -8667,7 +8667,7 @@ notation}.")
        ("ghc-hashable" ,ghc-hashable)
        ("ghc-primitive" ,ghc-primitive)))
     (native-inputs '())
-    (properties '(hidden? #t))))
+    (properties '((hidden? #t)))))
 
 (define-public ghc-sdl
   (package
@@ -8951,7 +8951,7 @@ semigroup.")
        ("ghc-tagged" ,ghc-tagged)
        ("ghc-unordered-containers" ,ghc-unordered-containers-bootstrap)
        ("ghc-hashable" ,ghc-hashable-bootstrap)))
-    (properties '(hidden? #t))))
+    (properties '((hidden? #t)))))
 
 (define-public ghc-setenv
   (package
@@ -10781,7 +10781,7 @@ and high speed.")
     (arguments `(#:tests? #f))
     (inputs
      `(("ghc-hashable" ,ghc-hashable-bootstrap)))
-    (properties '(hidden? #t))))
+    (properties '((hidden? #t)))))
 
 (define-public ghc-unsafe
   (package
@@ -11322,7 +11322,7 @@ widths to the Char type.")
      `(("ghc-setlocale" ,ghc-setlocale)
        ("ghc-utf8-string" ,ghc-utf8-string)
        ("ghc-attoparsec" ,ghc-attoparsec-bootstrap)))
-    (properties '(hidden? #t))))
+    (properties '((hidden? #t)))))
 
 (define-public ghc-weigh
   (package

From 7fcc2f93552bfb6ebb96cb9e1b47876a92fb0173 Mon Sep 17 00:00:00 2001
From: raingloom 
Date: Mon, 2 Sep 2019 15:44:15 +0200
Subject: [PATCH 113/408] gnu: Add fmit.

* gnu/packages/music.scm (fmit): New variable.

Signed-off-by: Nicolas Goaziou 
---
 gnu/packages/music.scm | 63 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index a43bccf4f8..bcae8e7733 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2019 Gabriel Hondet 
 ;;; Copyright © 2019 Timotej Lazar 
 ;;; Copyright © 2019 Jakob L. Kreuze 
+;;; Copyright © 2019 raingloom 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4529,3 +4530,65 @@ discard bad quality ones.
 controller.")
     (home-page "https://github.com/charlesfleche/lpd8editor")
     (license license:expat)))
+
+(define-public fmit
+  (package
+    (name "fmit")
+    (version "1.2.6")
+    (source (origin
+	      (method git-fetch)
+	      (uri (git-reference
+		    (url "https://github.com/gillesdegottex/fmit/")
+		    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+	      (sha256
+               (base32
+                "03nzkig5mw2rqwhwmg0qvc5cnk9bwh2wp13jh0mdrr935w0587mz"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+	 (delete 'configure)
+	 (add-before 'build 'qmake
+	   (lambda _
+	     (let ((out (assoc-ref %outputs "out")))
+               (invoke "qmake"
+                       "fmit.pro"
+                       (string-append "PREFIX=" out)
+                       (string-append "PREFIXSHORTCUT=" out)
+                       "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/fmit")
+                 `("QT_PLUGIN_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/plugins"))
+                         '("qtbase" "qtmultimedia" "qtsvg")))
+                 `("QML2_IMPORT_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/qml"))
+                         '("qtmultimedia"))))
+               #t))))))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fftw" ,fftw)
+       ("jack" ,jack-1)
+       ("portaudio" ,portaudio)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtsvg" ,qtsvg)))
+    (native-inputs
+     `(("gettext" ,gnu-gettext)
+       ("hicolor-icon-theme" ,hicolor-icon-theme)
+       ("itstool" ,itstool)
+       ("qttools" ,qttools)))
+    (synopsis "Musical instrument tuner")
+    (description "FMIT is a graphical utility for tuning musical instruments,
+with error and volume history, and advanced features.")
+    (home-page "https://gillesdegottex.github.io/fmit/")
+    ;; Most of the code is under GPL2+, but some abstract or helper classes
+    ;; are under LGPL2.1.
+    (license (list license:gpl2+ license:lgpl2.1))))

From 2e3e5d21988fc2cafb2a9eaf4b00976ea425629d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 3 Sep 2019 21:36:29 +0200
Subject: [PATCH 114/408] daemon: Invoke 'guix gc --list-busy' instead of
 'list-runtime-roots'.

* nix/scripts/list-runtime-roots.in: Remove.
* guix/store/roots.scm (%proc-directory): New variable.
(proc-file-roots, proc-exe-roots, proc-cwd-roots)
(proc-fd-roots, proc-maps-roots, proc-environ-roots)
(referenced-files, canonicalize-store-item, busy-store-items): New
procedures, taken from 'list-runtime-roots.in'.
* nix/libstore/globals.hh (Settings)[guixProgram]: New field.
* nix/libstore/globals.cc (Settings::processEnvironment): Initialize
'guixProgram'.
* nix/libstore/gc.cc (addAdditionalRoots): Drop code related to
'NIX_ROOT_FINDER'.  Run "guix gc --list-busy".
* nix/local.mk (nodist_pkglibexec_SCRIPTS): Remove
'scripts/list-runtime-roots'.
* config-daemon.ac: Don't output nix/scripts/list-runtime-roots.
* build-aux/pre-inst-env.in: Don't set 'NIX_ROOT_FINDER'.
Set 'GUIX'.
* doc/guix.texi (Invoking guix gc): Document '--list-busy'.
* guix/scripts/gc.scm (show-help, %options): Add "--list-busy".
(guix-gc)[list-busy]: New procedure.
Handle the 'list-busy' action.
---
 build-aux/pre-inst-env.in         |   6 +-
 config-daemon.ac                  |   3 -
 doc/guix.texi                     |   4 +
 guix/scripts/gc.scm               |  15 +++
 guix/store/roots.scm              | 129 +++++++++++++++++++++++++-
 nix/libstore/gc.cc                |  11 +--
 nix/libstore/globals.cc           |   1 +
 nix/libstore/globals.hh           |   3 +
 nix/local.mk                      |   1 -
 nix/scripts/list-runtime-roots.in | 147 ------------------------------
 10 files changed, 158 insertions(+), 162 deletions(-)
 delete mode 100644 nix/scripts/list-runtime-roots.in

diff --git a/build-aux/pre-inst-env.in b/build-aux/pre-inst-env.in
index 3efab69e7d..ab1c519d70 100644
--- a/build-aux/pre-inst-env.in
+++ b/build-aux/pre-inst-env.in
@@ -44,15 +44,17 @@ export PATH
 
 # Daemon helpers.
 
-NIX_ROOT_FINDER="$abs_top_builddir/nix/scripts/list-runtime-roots"
 NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'authenticate', etc.
 
-export NIX_ROOT_FINDER NIX_LIBEXEC_DIR
+export NIX_LIBEXEC_DIR
 
 NIX_BUILD_HOOK="$abs_top_builddir/nix/scripts/offload"
 @BUILD_DAEMON_OFFLOAD_TRUE@export NIX_BUILD_HOOK
 @BUILD_DAEMON_OFFLOAD_FALSE@# No offloading support.
 @BUILD_DAEMON_OFFLOAD_FALSE@unset NIX_BUILD_HOOK
+# The daemon invokes 'guix'; tell it which one to use.
+GUIX="$abs_top_builddir/scripts/guix"
+export GUIX
 
 # The following variables need only be defined when compiling Guix
 # modules, but we define them to be on the safe side in case of
diff --git a/config-daemon.ac b/config-daemon.ac
index f1ad10acff..f1d26af3a7 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -148,9 +148,6 @@ if test "x$guix_build_daemon" = "xyes"; then
   AC_SUBST([GUIX_TEST_ROOT])
 
   GUIX_CHECK_LOCALSTATEDIR
-
-  AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
-    [chmod +x nix/scripts/list-runtime-roots])
   AC_CONFIG_FILES([nix/scripts/download],
     [chmod +x nix/scripts/download])
   AC_CONFIG_FILES([nix/scripts/substitute],
diff --git a/doc/guix.texi b/doc/guix.texi
index 83f791d71d..31f7890fe9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3496,6 +3496,10 @@ This prints nothing unless the daemon was started with
 List the GC roots owned by the user; when run as root, list @emph{all} the GC
 roots.
 
+@item --list-busy
+List store items in use by currently running processes.  These store
+items are effectively considered GC roots: they cannot be deleted.
+
 @item --clear-failures
 Remove the specified store items from the failed-build cache.
 
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 31657326b6..3f20a2e192 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -56,6 +56,8 @@ Invoke the garbage collector.\n"))
   -D, --delete           attempt to delete PATHS"))
   (display (G_ "
       --list-roots       list the user's garbage collector roots"))
+  (display (G_ "
+      --list-busy        list store items used by running processes"))
   (display (G_ "
       --optimize         optimize the store by deduplicating identical files"))
   (display (G_ "
@@ -174,6 +176,10 @@ is deprecated; use '-D'~%"))
                 (lambda (opt name arg result)
                   (alist-cons 'action 'list-roots
                               (alist-delete 'action result))))
+        (option '("list-busy") #f #f
+                (lambda (opt name arg result)
+                  (alist-cons 'action 'list-busy
+                              (alist-delete 'action result))))
         (option '("list-dead") #f #f
                 (lambda (opt name arg result)
                   (alist-cons 'action 'list-dead
@@ -265,6 +271,12 @@ is deprecated; use '-D'~%"))
                   (newline))
                 roots)))
 
+  (define (list-busy)
+    ;; List store items used by running processes.
+    (for-each (lambda (item)
+                (display item) (newline))
+              (busy-store-items)))
+
   (with-error-handling
     (let* ((opts  (parse-options))
            (store (open-connection))
@@ -305,6 +317,9 @@ is deprecated; use '-D'~%"))
         ((list-roots)
          (assert-no-extra-arguments)
          (list-roots))
+        ((list-busy)
+         (assert-no-extra-arguments)
+         (list-busy))
         ((delete)
          (delete-paths store (map direct-store-path paths)))
         ((list-references)
diff --git a/guix/store/roots.scm b/guix/store/roots.scm
index 4f23ae34e8..58653507f8 100644
--- a/guix/store/roots.scm
+++ b/guix/store/roots.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Ludovic Courtès 
+;;; Copyright © 2012, 2013, 2014, 2017, 2019 Ludovic Courtès 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,9 +26,13 @@
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
+  #:use-module (ice-9 rdelim)
+  #:use-module (ice-9 ftw)
+  #:use-module (rnrs io ports)
   #:re-export (%gc-roots-directory)
   #:export (gc-roots
-            user-owned?))
+            user-owned?
+            busy-store-items))
 
 ;;; Commentary:
 ;;;
@@ -118,3 +122,124 @@ are user-controlled symlinks stored anywhere on the file system."
 
       (= (stat:uid stat) uid))
     (const #f)))
+
+
+;;;
+;;; Listing "busy" store items: those referenced by currently running
+;;; processes.
+;;;
+
+(define %proc-directory
+  ;; Mount point of Linuxish /proc file system.
+  "/proc")
+
+(define (proc-file-roots dir file)
+  "Return a one-element list containing the file pointed to by DIR/FILE,
+or the empty list."
+  (or (and=> (false-if-exception (readlink (string-append dir "/" file)))
+             list)
+      '()))
+
+(define proc-exe-roots (cut proc-file-roots <> "exe"))
+(define proc-cwd-roots (cut proc-file-roots <> "cwd"))
+
+(define (proc-fd-roots dir)
+  "Return the list of store files referenced by DIR, which is a
+/proc/XYZ directory."
+  (let ((dir (string-append dir "/fd")))
+    (filter-map (lambda (file)
+                  (let ((target (false-if-exception
+                                 (readlink (string-append dir "/" file)))))
+                    (and target
+                         (string-prefix? "/" target)
+                         target)))
+                (or (scandir dir string->number) '()))))
+
+(define (proc-maps-roots dir)
+  "Return the list of store files referenced by DIR, which is a
+/proc/XYZ directory."
+  (define %file-mapping-line
+    (make-regexp "^.*[[:blank:]]+/([^ ]+)$"))
+
+  (call-with-input-file (string-append dir "/maps")
+    (lambda (maps)
+      (let loop ((line  (read-line maps))
+                 (roots '()))
+        (cond ((eof-object? line)
+               roots)
+              ((regexp-exec %file-mapping-line line)
+               =>
+               (lambda (match)
+                 (let ((file (string-append "/"
+                                            (match:substring match 1))))
+                   (loop (read-line maps)
+                         (cons file roots)))))
+              (else
+               (loop (read-line maps) roots)))))))
+
+(define (proc-environ-roots dir)
+  "Return the list of store files referenced by DIR/environ, where DIR is a
+/proc/XYZ directory."
+  (define split-on-nul
+    (cute string-tokenize <>
+          (char-set-complement (char-set #\nul))))
+
+  (define (rhs-file-names str)
+    (let ((equal (string-index str #\=)))
+      (if equal
+          (let* ((str (substring str (+ 1 equal)))
+                 (rx  (string-append (regexp-quote %store-directory)
+                                     "/[0-9a-z]{32}-[a-zA-Z0-9\\._+-]+")))
+            (map match:substring (list-matches rx str)))
+          '())))
+
+  (define environ
+    (string-append dir "/environ"))
+
+  (append-map rhs-file-names
+              (split-on-nul
+               (call-with-input-file environ
+                 get-string-all))))
+
+(define (referenced-files)
+  "Return the list of referenced store items."
+  (append-map (lambda (pid)
+                (let ((proc (string-append %proc-directory "/" pid)))
+                  (catch 'system-error
+                    (lambda ()
+                      (append (proc-exe-roots proc)
+                              (proc-cwd-roots proc)
+                              (proc-fd-roots proc)
+                              (proc-maps-roots proc)
+                              (proc-environ-roots proc)))
+                    (lambda args
+                      (let ((err (system-error-errno args)))
+                        (if (or (= ENOENT err)    ;TOCTTOU race
+                                (= ESRCH err)     ;ditto
+                                (= EACCES err))   ;not running as root
+                            '()
+                            (apply throw args)))))))
+              (scandir %proc-directory string->number
+                       (lambda (a b)
+                         (< (string->number a) (string->number b))))))
+
+(define canonicalize-store-item
+  (let* ((store  (string-append %store-directory "/"))
+         (prefix (string-length store)))
+    (lambda (file)
+      "Return #f if FILE is not a store item; otherwise, return the store file
+name without any sub-directory components."
+      (and (string-prefix? store file)
+           (string-append store
+                          (let ((base (string-drop file prefix)))
+                            (match (string-index base #\/)
+                              (#f    base)
+                              (slash (string-take base slash)))))))))
+
+(define (busy-store-items)
+  "Return the list of store items used by the currently running processes.
+
+This code should typically run as root; it allows the garbage collector to
+determine which store items must not be deleted."
+  (delete-duplicates
+   (filter-map canonicalize-store-item (referenced-files))))
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 46171e116c..c466996668 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -339,14 +339,11 @@ Roots LocalStore::findRoots()
 
 static void addAdditionalRoots(StoreAPI & store, PathSet & roots)
 {
-    Path rootFinder = getEnv("NIX_ROOT_FINDER",
-        settings.nixLibexecDir + "/list-runtime-roots");
+    debug(format("executing `%1% gc --list-busy' to find additional roots")
+	  % settings.guixProgram);
 
-    if (rootFinder.empty()) return;
-
-    debug(format("executing `%1%' to find additional roots") % rootFinder);
-
-    string result = runProgram(rootFinder);
+    const Strings args = { "gc", "--list-busy" };
+    string result = runProgram(settings.guixProgram, false, args);
 
     StringSet paths = tokenizeString(result, "\n");
 
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 6df20e7a52..8f7c976fcb 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -73,6 +73,7 @@ void Settings::processEnvironment()
     nixLibexecDir = canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR));
     nixBinDir = canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR));
     nixDaemonSocketFile = canonPath(nixStateDir + DEFAULT_SOCKET_PATH);
+    guixProgram = canonPath(getEnv("GUIX", nixBinDir + "/guix"));
 }
 
 
diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh
index b073f724b6..0d9315a41a 100644
--- a/nix/libstore/globals.hh
+++ b/nix/libstore/globals.hh
@@ -66,6 +66,9 @@ struct Settings {
     /* File name of the socket the daemon listens to.  */
     Path nixDaemonSocketFile;
 
+    /* Absolute file name of the 'guix' program.  */
+    Path guixProgram;
+
     /* Whether to keep temporary directories of failed builds. */
     bool keepFailed;
 
diff --git a/nix/local.mk b/nix/local.mk
index 6d7e60e9fb..fd7379b5ff 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -155,7 +155,6 @@ noinst_HEADERS =						\
 	           (write (get-string-all in) out)))))"
 
 nodist_pkglibexec_SCRIPTS =			\
-  %D%/scripts/list-runtime-roots		\
   %D%/scripts/substitute			\
   %D%/scripts/download
 
diff --git a/nix/scripts/list-runtime-roots.in b/nix/scripts/list-runtime-roots.in
deleted file mode 100644
index 5f2660fb5e..0000000000
--- a/nix/scripts/list-runtime-roots.in
+++ /dev/null
@@ -1,147 +0,0 @@
-#!@GUILE@ -ds
-!#
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2017 Ludovic Courtès 
-;;;
-;;; 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 .
-
-;;;
-;;; List files being used at run time; these files are garbage collector
-;;; roots.  This is equivalent to `find-runtime-roots.pl' in Nix.
-;;;
-
-(use-modules (ice-9 ftw)
-             (ice-9 regex)
-             (ice-9 rdelim)
-             (ice-9 match)
-             (srfi srfi-1)
-             (srfi srfi-26)
-             (rnrs io ports))
-
-(define %proc-directory
-  ;; Mount point of Linuxish /proc file system.
-  "/proc")
-
-(define %store-directory
-  (or (getenv "NIX_STORE_DIR")
-      "@storedir@"))
-
-(define (proc-file-roots dir file)
-  "Return a one-element list containing the file pointed to by DIR/FILE,
-or the empty list."
-  (or (and=> (false-if-exception (readlink (string-append dir "/" file)))
-             list)
-      '()))
-
-(define proc-exe-roots (cut proc-file-roots <> "exe"))
-(define proc-cwd-roots (cut proc-file-roots <> "cwd"))
-
-(define (proc-fd-roots dir)
-  "Return the list of store files referenced by DIR, which is a
-/proc/XYZ directory."
-  (let ((dir (string-append dir "/fd")))
-    (filter-map (lambda (file)
-                  (let ((target (false-if-exception
-                                 (readlink (string-append dir "/" file)))))
-                    (and target
-                         (string-prefix? "/" target)
-                         target)))
-                (or (scandir dir string->number) '()))))
-
-(define (proc-maps-roots dir)
-  "Return the list of store files referenced by DIR, which is a
-/proc/XYZ directory."
-  (define %file-mapping-line
-    (make-regexp "^.*[[:blank:]]+/([^ ]+)$"))
-
-  (call-with-input-file (string-append dir "/maps")
-    (lambda (maps)
-      (let loop ((line  (read-line maps))
-                 (roots '()))
-        (cond ((eof-object? line)
-               roots)
-              ((regexp-exec %file-mapping-line line)
-               =>
-               (lambda (match)
-                 (let ((file (string-append "/"
-                                            (match:substring match 1))))
-                   (loop (read-line maps)
-                         (cons file roots)))))
-              (else
-               (loop (read-line maps) roots)))))))
-
-(define (proc-environ-roots dir)
-  "Return the list of store files referenced by DIR/environ, where DIR is a
-/proc/XYZ directory."
-  (define split-on-nul
-    (cute string-tokenize <>
-          (char-set-complement (char-set #\nul))))
-
-  (define (rhs-file-names str)
-    (let ((equal (string-index str #\=)))
-      (if equal
-          (let* ((str (substring str (+ 1 equal)))
-                 (rx  (string-append (regexp-quote %store-directory)
-                                     "/[0-9a-z]{32}-[a-zA-Z0-9\\._+-]+")))
-            (map match:substring (list-matches rx str)))
-          '())))
-
-  (define environ
-    (string-append dir "/environ"))
-
-  (append-map rhs-file-names
-              (split-on-nul
-               (call-with-input-file environ
-                 get-string-all))))
-
-(define (referenced-files)
-  "Return the list of referenced store items."
-  (append-map (lambda (pid)
-                (let ((proc (string-append %proc-directory "/" pid)))
-                  (catch 'system-error
-                    (lambda ()
-                      (append (proc-exe-roots proc)
-                              (proc-cwd-roots proc)
-                              (proc-fd-roots proc)
-                              (proc-maps-roots proc)
-                              (proc-environ-roots proc)))
-                    (lambda args
-                      (let ((err (system-error-errno args)))
-                        (if (or (= ENOENT err)    ;TOCTTOU race
-                                (= ESRCH err)     ;ditto
-                                (= EACCES err))   ;not running as root
-                            '()
-                            (apply throw args)))))))
-              (scandir %proc-directory string->number
-                       (lambda (a b)
-                         (< (string->number a) (string->number b))))))
-
-(define canonicalize-store-item
-  (let* ((store  (string-append %store-directory "/"))
-         (prefix (string-length store)))
-    (lambda (file)
-      "Return #f if FILE is not a store item; otherwise, return the store file
-name without any sub-directory components."
-      (and (string-prefix? store file)
-           (string-append store
-                          (let ((base (string-drop file prefix)))
-                            (match (string-index base #\/)
-                              (#f    base)
-                              (slash (string-take base slash)))))))))
-
-(for-each (cut simple-format #t "~a~%" <>)
-          (delete-duplicates
-           (filter-map canonicalize-store-item (referenced-files))))

From 0c684b7edfacada4f576855dbb09291f04a84fa2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 3 Sep 2019 21:51:25 +0200
Subject: [PATCH 115/408] daemon: Run 'guix authenticate' directly.

* nix/scripts/authenticate.in: Remove.
* nix/local.mk (nodist_pkglibexec_SCRIPTS): Remove
scripts/authenticate.
* config-daemon.ac: Don't output 'nix/scripts/authenticate'.
* nix/libstore/local-store.cc (runAuthenticationProgram): Run 'guix
authenticate'.
---
 config-daemon.ac            |  2 --
 nix/libstore/local-store.cc |  5 +++--
 nix/local.mk                |  3 ---
 nix/scripts/authenticate.in | 11 -----------
 4 files changed, 3 insertions(+), 18 deletions(-)
 delete mode 100644 nix/scripts/authenticate.in

diff --git a/config-daemon.ac b/config-daemon.ac
index f1d26af3a7..907457f478 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -152,8 +152,6 @@ if test "x$guix_build_daemon" = "xyes"; then
     [chmod +x nix/scripts/download])
   AC_CONFIG_FILES([nix/scripts/substitute],
     [chmod +x nix/scripts/substitute])
-  AC_CONFIG_FILES([nix/scripts/authenticate],
-    [chmod +x nix/scripts/authenticate])
   AC_CONFIG_FILES([nix/scripts/offload],
     [chmod +x nix/scripts/offload])
 fi
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 892d9300b1..951c35faf3 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -1224,8 +1224,9 @@ static void checkSecrecy(const Path & path)
 
 static std::string runAuthenticationProgram(const Strings & args)
 {
-    return runProgram(settings.nixLibexecDir + "/authenticate",
-		      false, args);
+    Strings fullArgs = { "authenticate" };
+    fullArgs.insert(fullArgs.end(), args.begin(), args.end()); // append
+    return runProgram(settings.guixProgram, false, fullArgs);
 }
 
 void LocalStore::exportPath(const Path & path, bool sign,
diff --git a/nix/local.mk b/nix/local.mk
index fd7379b5ff..cdcd9eb1c2 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -165,9 +165,6 @@ nodist_pkglibexec_SCRIPTS +=			\
 
 endif BUILD_DAEMON_OFFLOAD
 
-nodist_pkglibexec_SCRIPTS +=			\
-  %D%/scripts/authenticate
-
 # The '.service' files for systemd.
 systemdservicedir = $(libdir)/systemd/system
 nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service
diff --git a/nix/scripts/authenticate.in b/nix/scripts/authenticate.in
deleted file mode 100644
index 5ce57915f0..0000000000
--- a/nix/scripts/authenticate.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#!@SHELL@
-# A shorthand for "guix authenticate", for use by the daemon.
-
-if test "x$GUIX_UNINSTALLED" = "x"
-then
-    prefix="@prefix@"
-    exec_prefix="@exec_prefix@"
-    exec "@bindir@/guix" authenticate "$@"
-else
-    exec guix authenticate "$@"
-fi

From 9fcc35c51fd579b3bb7b4f61cba6973675c3922c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 3 Sep 2019 21:59:45 +0200
Subject: [PATCH 116/408] daemon: Run 'guix perform-download' directly.

* nix/scripts/download.in: Remove.
* nix/local.mk (nodist_pkglibexec_SCRIPTS): Remove 'scripts/download'.
* config-daemon.ac: Don't output 'nix/scripts/download'.
* nix/libstore/builtins.cc (builtinDownload): Invoke 'guix
perform-download' directly.
---
 config-daemon.ac         |  2 --
 nix/libstore/builtins.cc |  4 ++--
 nix/local.mk             |  3 +--
 nix/scripts/download.in  | 11 -----------
 4 files changed, 3 insertions(+), 17 deletions(-)
 delete mode 100644 nix/scripts/download.in

diff --git a/config-daemon.ac b/config-daemon.ac
index 907457f478..50227e310c 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -148,8 +148,6 @@ if test "x$guix_build_daemon" = "xyes"; then
   AC_SUBST([GUIX_TEST_ROOT])
 
   GUIX_CHECK_LOCALSTATEDIR
-  AC_CONFIG_FILES([nix/scripts/download],
-    [chmod +x nix/scripts/download])
   AC_CONFIG_FILES([nix/scripts/substitute],
     [chmod +x nix/scripts/substitute])
   AC_CONFIG_FILES([nix/scripts/offload],
diff --git a/nix/libstore/builtins.cc b/nix/libstore/builtins.cc
index f7c7d42484..4111ac4760 100644
--- a/nix/libstore/builtins.cc
+++ b/nix/libstore/builtins.cc
@@ -39,7 +39,7 @@ static void builtinDownload(const Derivation &drv,
 
     const char *const argv[] =
       {
-	"download", drvPath.c_str(), output.c_str(), NULL
+	  "guix", "perform-download", drvPath.c_str(), output.c_str(), NULL
       };
 
     /* Tell the script what the store file name is, so that
@@ -50,7 +50,7 @@ static void builtinDownload(const Derivation &drv,
     /* Tell it about options such as "print-extended-build-trace".  */
     setenv("_NIX_OPTIONS", settings.pack().c_str(), 1);
 
-    const string program = settings.nixLibexecDir + "/download";
+    const string program = settings.guixProgram;
     execv(program.c_str(), (char *const *) argv);
 
     throw SysError(format("failed to run download program '%1%'") % program);
diff --git a/nix/local.mk b/nix/local.mk
index cdcd9eb1c2..c4c3920fa3 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -155,8 +155,7 @@ noinst_HEADERS =						\
 	           (write (get-string-all in) out)))))"
 
 nodist_pkglibexec_SCRIPTS =			\
-  %D%/scripts/substitute			\
-  %D%/scripts/download
+  %D%/scripts/substitute
 
 if BUILD_DAEMON_OFFLOAD
 
diff --git a/nix/scripts/download.in b/nix/scripts/download.in
deleted file mode 100644
index 4d7088a993..0000000000
--- a/nix/scripts/download.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#!@SHELL@
-# A shorthand for "guix perform-download", for use by the daemon.
-
-if test "x$GUIX_UNINSTALLED" = "x"
-then
-    prefix="@prefix@"
-    exec_prefix="@exec_prefix@"
-    exec "@bindir@/guix" perform-download "$@"
-else
-    exec guix perform-download "$@"
-fi

From bc69ea2d605810cc32e13ed03d5848b8dc358b61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 3 Sep 2019 22:11:47 +0200
Subject: [PATCH 117/408] daemon: Run 'guix offload' directly.

* nix/scripts/offload.in: Remove.
* nix/local.mk (nodist_pkglibexec_SCRIPTS) [BUILD_DAEMON_OFFLOAD]:
Remove 'scripts/offload'.
* config-daemon.ac: Don't output 'nix/scripts/offload'.
* build-aux/pre-inst-env.in: Don't set 'NIX_BUILD_HOOK'.
* nix/libstore/build.cc (HookInstance::HookInstance): Run 'guix
offload'.
(DerivationGoal::tryBuildHook): Remove reference to 'NIX_BUILD_HOOK'.
* nix/nix-daemon/guix-daemon.cc (main) [HAVE_DAEMON_OFFLOAD_HOOK]: Don't
set 'NIX_BUILD_HOOK'.
* nix/nix-daemon/nix-daemon.cc (performOp) [!HAVE_DAEMON_OFFLOAD_HOOK]:
Leave 'settings.useBuildHook' unchanged.
---
 build-aux/pre-inst-env.in     |  4 ----
 config-daemon.ac              |  2 --
 nix/libstore/build.cc         | 11 +++++------
 nix/local.mk                  |  7 -------
 nix/nix-daemon/guix-daemon.cc |  9 +--------
 nix/nix-daemon/nix-daemon.cc  |  8 +++++++-
 nix/scripts/offload.in        | 11 -----------
 7 files changed, 13 insertions(+), 39 deletions(-)
 delete mode 100644 nix/scripts/offload.in

diff --git a/build-aux/pre-inst-env.in b/build-aux/pre-inst-env.in
index ab1c519d70..f96288132d 100644
--- a/build-aux/pre-inst-env.in
+++ b/build-aux/pre-inst-env.in
@@ -48,10 +48,6 @@ NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'authenticate', etc.
 
 export NIX_LIBEXEC_DIR
 
-NIX_BUILD_HOOK="$abs_top_builddir/nix/scripts/offload"
-@BUILD_DAEMON_OFFLOAD_TRUE@export NIX_BUILD_HOOK
-@BUILD_DAEMON_OFFLOAD_FALSE@# No offloading support.
-@BUILD_DAEMON_OFFLOAD_FALSE@unset NIX_BUILD_HOOK
 # The daemon invokes 'guix'; tell it which one to use.
 GUIX="$abs_top_builddir/scripts/guix"
 export GUIX
diff --git a/config-daemon.ac b/config-daemon.ac
index 50227e310c..3d92e8f778 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -150,8 +150,6 @@ if test "x$guix_build_daemon" = "xyes"; then
   GUIX_CHECK_LOCALSTATEDIR
   AC_CONFIG_FILES([nix/scripts/substitute],
     [chmod +x nix/scripts/substitute])
-  AC_CONFIG_FILES([nix/scripts/offload],
-    [chmod +x nix/scripts/offload])
 fi
 
 AM_CONDITIONAL([HAVE_LIBBZ2], [test "x$HAVE_LIBBZ2" = "xyes"])
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index fe7bf79069..9f1f88933a 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -614,9 +614,7 @@ HookInstance::HookInstance()
 {
     debug("starting build hook");
 
-    Path buildHook = getEnv("NIX_BUILD_HOOK");
-    if (string(buildHook, 0, 1) != "/") buildHook = settings.nixLibexecDir + "/nix/" + buildHook;
-    buildHook = canonPath(buildHook);
+    const Path &buildHook = settings.guixProgram;
 
     /* Create a pipe to get the output of the child. */
     fromHook.create();
@@ -642,13 +640,14 @@ HookInstance::HookInstance()
         if (dup2(builderOut.writeSide, 4) == -1)
             throw SysError("dupping builder's stdout/stderr");
 
-        execl(buildHook.c_str(), buildHook.c_str(), settings.thisSystem.c_str(),
+        execl(buildHook.c_str(), buildHook.c_str(), "offload",
+	    settings.thisSystem.c_str(),
             (format("%1%") % settings.maxSilentTime).str().c_str(),
             (format("%1%") % settings.printBuildTrace).str().c_str(),
             (format("%1%") % settings.buildTimeout).str().c_str(),
             NULL);
 
-        throw SysError(format("executing `%1%'") % buildHook);
+        throw SysError(format("executing `%1% offload'") % buildHook);
     });
 
     pid.setSeparatePG(true);
@@ -1581,7 +1580,7 @@ void DerivationGoal::buildDone()
 
 HookReply DerivationGoal::tryBuildHook()
 {
-    if (!settings.useBuildHook || getEnv("NIX_BUILD_HOOK") == "") return rpDecline;
+    if (!settings.useBuildHook) return rpDecline;
 
     if (!worker.hook)
         worker.hook = std::shared_ptr(new HookInstance);
diff --git a/nix/local.mk b/nix/local.mk
index c4c3920fa3..8e52c77bd9 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -157,13 +157,6 @@ noinst_HEADERS =						\
 nodist_pkglibexec_SCRIPTS =			\
   %D%/scripts/substitute
 
-if BUILD_DAEMON_OFFLOAD
-
-nodist_pkglibexec_SCRIPTS +=			\
-  %D%/scripts/offload
-
-endif BUILD_DAEMON_OFFLOAD
-
 # The '.service' files for systemd.
 systemdservicedir = $(libdir)/systemd/system
 nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index f47d142612..73962af584 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -474,15 +474,8 @@ main (int argc, char *argv[])
       settings.set ("substitute-urls", GUIX_SUBSTITUTE_URLS);
 
 #ifdef HAVE_DAEMON_OFFLOAD_HOOK
-      /* Use our build hook for distributed builds by default.  */
+      /* Use 'guix offload' for distributed builds by default.  */
       settings.useBuildHook = true;
-      if (getenv ("NIX_BUILD_HOOK") == NULL)
-	{
-	  std::string build_hook;
-
-	  build_hook = settings.nixLibexecDir + "/offload";
-	  setenv ("NIX_BUILD_HOOK", build_hook.c_str (), 1);
-	}
 #else
       /* We are not installing any build hook, so disable it.  */
       settings.useBuildHook = false;
diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc
index 56137701a1..f29bcd2eab 100644
--- a/nix/nix-daemon/nix-daemon.cc
+++ b/nix/nix-daemon/nix-daemon.cc
@@ -580,8 +580,14 @@ static void performOp(bool trusted, unsigned int clientVersion,
             settings.set("build-max-silent-time", std::to_string(readInt(from)));
         }
 
-        if (GET_PROTOCOL_MINOR(clientVersion) >= 2)
+        if (GET_PROTOCOL_MINOR(clientVersion) >= 2) {
+#ifdef HAVE_DAEMON_OFFLOAD_HOOK
             settings.useBuildHook = readInt(from) != 0;
+#else
+	    readInt(from);			  // ignore the user's setting
+#endif
+	}
+
         if (GET_PROTOCOL_MINOR(clientVersion) >= 4) {
             settings.buildVerbosity = (Verbosity) readInt(from);
             logType = (LogType) readInt(from);
diff --git a/nix/scripts/offload.in b/nix/scripts/offload.in
deleted file mode 100644
index 50faed31c0..0000000000
--- a/nix/scripts/offload.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#!@SHELL@
-# A shorthand for "guix offload", for use by the daemon.
-
-if test "x$GUIX_UNINSTALLED" = "x"
-then
-    prefix="@prefix@"
-    exec_prefix="@exec_prefix@"
-    exec "@bindir@/guix" offload "$@"
-else
-    exec guix offload "$@"
-fi

From f6919ebdc6b0ce0286814cc6ab0564b1a4c67f5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 4 Sep 2019 11:04:44 +0200
Subject: [PATCH 118/408] daemon: Run 'guix substitute' directly and assume a
 single substituter.

The daemon had a mechanism that allows it to handle a list of
substituters and try them sequentially; this removes it.

* nix/scripts/substitute.in: Remove.
* nix/local.mk (nodist_pkglibexec_SCRIPTS): Remove.
* config-daemon.ac: Don't output 'nix/scripts/substitute'.
* nix/libstore/build.cc (SubstitutionGoal)[subs, sub, hasSubstitute]:
Remove.
[tryNext]: Make private.
(SubstitutionGoal::SubstitutionGoal, SubstitutionGoal::init): Remove now
unneeded initializers.
(SubstitutionGoal::tryNext): Adjust to assume a single substituter: call
'amDone' upfront when we couldn't find substitutes.
(SubstitutionGoal::tryToRun): Adjust to run 'guix substitute' via
'settings.guixProgram'.
(SubstitutionGoal::finished): Call 'amDone(ecFailed)' upon failure
instead of setting 'state' to 'tryNext'.
* nix/libstore/globals.hh (Settings)[substituters]: Remove.
* nix/libstore/local-store.cc (LocalStore::~LocalStore): Adjust to
handle a single substituter.
(LocalStore::startSubstituter): Remove 'path' parameter.  Adjust to
invoke 'settings.guixProgram'.  Don't refer to 'run.program', which no
longer exists.
(LocalStore::querySubstitutablePaths): Adjust for 'runningSubstituters'
being a singleton instead of a list.
(LocalStore::querySubstitutablePathInfos): Likewise, and remove
'substituter' parameter.
* nix/libstore/local-store.hh (RunningSubstituter)[program]: Remove.
(LocalStore)[runningSubstituters]: Remove.
[runningSubstituter]: New field.
[querySubstitutablePathInfos]: Remove 'substituter' parameter.
[startSubstituter]: Remove 'substituter' parameter.
* nix/nix-daemon/guix-daemon.cc (main): Remove references to
'settings.substituters'.
* nix/nix-daemon/nix-daemon.cc (performOp): Ignore the user's
"build-use-substitutes" value when 'settings.useSubstitutes' is false.
---
 config-daemon.ac              |  2 -
 nix/libstore/build.cc         | 52 +++++++------------
 nix/libstore/globals.hh       |  5 --
 nix/libstore/local-store.cc   | 95 +++++++++++++++++++----------------
 nix/libstore/local-store.hh   | 12 ++---
 nix/local.mk                  |  3 --
 nix/nix-daemon/guix-daemon.cc | 11 +---
 nix/nix-daemon/nix-daemon.cc  |  8 ++-
 nix/scripts/substitute.in     | 11 ----
 9 files changed, 84 insertions(+), 115 deletions(-)
 delete mode 100644 nix/scripts/substitute.in

diff --git a/config-daemon.ac b/config-daemon.ac
index 3d92e8f778..bf94815966 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -148,8 +148,6 @@ if test "x$guix_build_daemon" = "xyes"; then
   AC_SUBST([GUIX_TEST_ROOT])
 
   GUIX_CHECK_LOCALSTATEDIR
-  AC_CONFIG_FILES([nix/scripts/substitute],
-    [chmod +x nix/scripts/substitute])
 fi
 
 AM_CONDITIONAL([HAVE_LIBBZ2], [test "x$HAVE_LIBBZ2" = "xyes"])
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index 9f1f88933a..ad53b81413 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -2863,15 +2863,6 @@ private:
     /* The store path that should be realised through a substitute. */
     Path storePath;
 
-    /* The remaining substituters. */
-    Paths subs;
-
-    /* The current substituter. */
-    Path sub;
-
-    /* Whether any substituter can realise this path */
-    bool hasSubstitute;
-
     /* Path info returned by the substituter's query info operation. */
     SubstitutablePathInfo info;
 
@@ -2897,6 +2888,8 @@ private:
     typedef void (SubstitutionGoal::*GoalState)();
     GoalState state;
 
+    void tryNext();
+
 public:
     SubstitutionGoal(const Path & storePath, Worker & worker, bool repair = false);
     ~SubstitutionGoal();
@@ -2914,7 +2907,6 @@ public:
 
     /* The states. */
     void init();
-    void tryNext();
     void gotInfo();
     void referencesValid();
     void tryToRun();
@@ -2930,7 +2922,6 @@ public:
 
 SubstitutionGoal::SubstitutionGoal(const Path & storePath, Worker & worker, bool repair)
     : Goal(worker)
-    , hasSubstitute(false)
     , repair(repair)
 {
     this->storePath = storePath;
@@ -2980,37 +2971,31 @@ void SubstitutionGoal::init()
     if (settings.readOnlyMode)
         throw Error(format("cannot substitute path `%1%' - no write access to the store") % storePath);
 
-    subs = settings.substituters;
-
     tryNext();
 }
 
 
 void SubstitutionGoal::tryNext()
 {
-    trace("trying next substituter");
+    trace("trying substituter");
 
-    if (subs.size() == 0) {
+    SubstitutablePathInfos infos;
+    PathSet dummy(singleton(storePath));
+    worker.store.querySubstitutablePathInfos(dummy, infos);
+    SubstitutablePathInfos::iterator k = infos.find(storePath);
+    if (k == infos.end()) {
         /* None left.  Terminate this goal and let someone else deal
            with it. */
         debug(format("path `%1%' is required, but there is no substituter that can build it") % storePath);
         /* Hack: don't indicate failure if there were no substituters.
            In that case the calling derivation should just do a
            build. */
-        amDone(hasSubstitute ? ecFailed : ecNoSubstituters);
-        return;
+        amDone(ecNoSubstituters);
+	return;
     }
 
-    sub = subs.front();
-    subs.pop_front();
-
-    SubstitutablePathInfos infos;
-    PathSet dummy(singleton(storePath));
-    worker.store.querySubstitutablePathInfos(sub, dummy, infos);
-    SubstitutablePathInfos::iterator k = infos.find(storePath);
-    if (k == infos.end()) { tryNext(); return; }
+    /* Found a substitute.  */
     info = k->second;
-    hasSubstitute = true;
 
     /* To maintain the closure invariant, we first have to realise the
        paths referenced by this one. */
@@ -3098,7 +3083,8 @@ void SubstitutionGoal::tryToRun()
 
     /* Fill in the arguments. */
     Strings args;
-    args.push_back(baseNameOf(sub));
+    args.push_back("guix");
+    args.push_back("substitute");
     args.push_back("--substitute");
     args.push_back(storePath);
     args.push_back(destPath);
@@ -3111,9 +3097,9 @@ void SubstitutionGoal::tryToRun()
         if (dup2(outPipe.writeSide, STDOUT_FILENO) == -1)
             throw SysError("cannot dup output pipe into stdout");
 
-        execv(sub.c_str(), stringsToCharPtrs(args).data());
+        execv(settings.guixProgram.c_str(), stringsToCharPtrs(args).data());
 
-        throw SysError(format("executing `%1%'") % sub);
+        throw SysError(format("executing `%1% substitute'") % settings.guixProgram);
     });
 
     pid.setSeparatePG(true);
@@ -3126,7 +3112,9 @@ void SubstitutionGoal::tryToRun()
     state = &SubstitutionGoal::finished;
 
     if (settings.printBuildTrace)
-        printMsg(lvlError, format("@ substituter-started %1% %2%") % storePath % sub);
+	/* The second element in the message used to be the name of the
+	   substituter but we're left with only one.  */
+        printMsg(lvlError, format("@ substituter-started %1% substitute") % storePath);
 }
 
 
@@ -3192,9 +3180,7 @@ void SubstitutionGoal::finished()
                 % storePath % status % e.msg());
         }
 
-        /* Try the next substitute. */
-        state = &SubstitutionGoal::tryNext;
-        worker.wakeUp(shared_from_this());
+	amDone(ecFailed);
         return;
     }
 
diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh
index 0d9315a41a..0069c85956 100644
--- a/nix/libstore/globals.hh
+++ b/nix/libstore/globals.hh
@@ -115,11 +115,6 @@ struct Settings {
        means infinity.  */
     time_t buildTimeout;
 
-    /* The substituters.  There are programs that can somehow realise
-       a store path without building, e.g., by downloading it or
-       copying it from a CD. */
-    Paths substituters;
-
     /* Whether to use build hooks (for distributed builds).  Sometimes
        users want to disable this from the command-line. */
     bool useBuildHook;
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 951c35faf3..3b08492c64 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -184,13 +184,15 @@ LocalStore::LocalStore(bool reserveSpace)
 LocalStore::~LocalStore()
 {
     try {
-        foreach (RunningSubstituters::iterator, i, runningSubstituters) {
-            if (i->second.disabled) continue;
-            i->second.to.close();
-            i->second.from.close();
-            i->second.error.close();
-            if (i->second.pid != -1)
-                i->second.pid.wait(true);
+	if (runningSubstituter) {
+	    RunningSubstituter &i = *runningSubstituter;
+            if (!i.disabled) {
+		i.to.close();
+		i.from.close();
+		i.error.close();
+		if (i.pid != -1)
+		    i.pid.wait(true);
+	    }
         }
     } catch (...) {
         ignoreException();
@@ -808,11 +810,12 @@ void LocalStore::setSubstituterEnv()
 }
 
 
-void LocalStore::startSubstituter(const Path & substituter, RunningSubstituter & run)
+void LocalStore::startSubstituter(RunningSubstituter & run)
 {
     if (run.disabled || run.pid != -1) return;
 
-    debug(format("starting substituter program `%1%'") % substituter);
+    debug(format("starting substituter program `%1% substitute'")
+	  % settings.guixProgram);
 
     Pipe toPipe, fromPipe, errorPipe;
 
@@ -829,11 +832,10 @@ void LocalStore::startSubstituter(const Path & substituter, RunningSubstituter &
             throw SysError("dupping stdout");
         if (dup2(errorPipe.writeSide, STDERR_FILENO) == -1)
             throw SysError("dupping stderr");
-        execl(substituter.c_str(), substituter.c_str(), "--query", NULL);
-        throw SysError(format("executing `%1%'") % substituter);
+        execl(settings.guixProgram.c_str(), "guix", "substitute", "--query", NULL);
+        throw SysError(format("executing `%1%'") % settings.guixProgram);
     });
 
-    run.program = baseNameOf(substituter);
     run.to = toPipe.writeSide.borrow();
     run.from = run.fromBuf.fd = fromPipe.readSide.borrow();
     run.error = errorPipe.readSide.borrow();
@@ -889,13 +891,14 @@ string LocalStore::getLineFromSubstituter(RunningSubstituter & run)
                 if (errno == EINTR) continue;
                 throw SysError("reading from substituter's stderr");
             }
-            if (n == 0) throw EndOfFile(format("substituter `%1%' died unexpectedly") % run.program);
+            if (n == 0) throw EndOfFile(format("`%1% substitute' died unexpectedly")
+					% settings.guixProgram);
             err.append(buf, n);
             string::size_type p;
             while (((p = err.find('\n')) != string::npos)
 		   || ((p = err.find('\r')) != string::npos)) {
 	        string thing(err, 0, p + 1);
-	        writeToStderr(run.program + ": " + thing);
+	        writeToStderr("substitute: " + thing);
                 err = string(err, p + 1);
             }
         }
@@ -907,7 +910,7 @@ string LocalStore::getLineFromSubstituter(RunningSubstituter & run)
                 unsigned char c;
                 run.fromBuf(&c, 1);
                 if (c == '\n') {
-                    if (!err.empty()) printMsg(lvlError, run.program + ": " + err);
+                    if (!err.empty()) printMsg(lvlError, "substitute: " + err);
                     return res;
                 }
                 res += c;
@@ -930,38 +933,47 @@ PathSet LocalStore::querySubstitutablePaths(const PathSet & paths)
 {
     PathSet res;
 
-    if (!settings.useSubstitutes) return res;
+    if (!settings.useSubstitutes || paths.empty()) return res;
 
-    foreach (Paths::iterator, i, settings.substituters) {
-        if (res.size() == paths.size()) break;
-        RunningSubstituter & run(runningSubstituters[*i]);
-        startSubstituter(*i, run);
-        if (run.disabled) continue;
-        string s = "have ";
-        foreach (PathSet::const_iterator, j, paths)
-            if (res.find(*j) == res.end()) { s += *j; s += " "; }
-        writeLine(run.to, s);
-        while (true) {
-            /* FIXME: we only read stderr when an error occurs, so
-               substituters should only write (short) messages to
-               stderr when they fail.  I.e. they shouldn't write debug
-               output. */
-            Path path = getLineFromSubstituter(run);
-            if (path == "") break;
-            res.insert(path);
-        }
+    if (!runningSubstituter) {
+	std::unique_ptrfresh(new RunningSubstituter);
+	runningSubstituter.swap(fresh);
     }
+
+    RunningSubstituter & run = *runningSubstituter;
+    startSubstituter(run);
+
+    if (!run.disabled) {
+	string s = "have ";
+	foreach (PathSet::const_iterator, j, paths)
+	    if (res.find(*j) == res.end()) { s += *j; s += " "; }
+	writeLine(run.to, s);
+	while (true) {
+	    /* FIXME: we only read stderr when an error occurs, so
+	       substituters should only write (short) messages to
+	       stderr when they fail.  I.e. they shouldn't write debug
+	       output. */
+	    Path path = getLineFromSubstituter(run);
+	    if (path == "") break;
+	    res.insert(path);
+	}
+    }
+
     return res;
 }
 
 
-void LocalStore::querySubstitutablePathInfos(const Path & substituter,
-    PathSet & paths, SubstitutablePathInfos & infos)
+void LocalStore::querySubstitutablePathInfos(PathSet & paths, SubstitutablePathInfos & infos)
 {
     if (!settings.useSubstitutes) return;
 
-    RunningSubstituter & run(runningSubstituters[substituter]);
-    startSubstituter(substituter, run);
+    if (!runningSubstituter) {
+	std::unique_ptrfresh(new RunningSubstituter);
+	runningSubstituter.swap(fresh);
+    }
+
+    RunningSubstituter & run = *runningSubstituter;
+    startSubstituter(run);
     if (run.disabled) return;
 
     string s = "info ";
@@ -993,10 +1005,9 @@ void LocalStore::querySubstitutablePathInfos(const Path & substituter,
 void LocalStore::querySubstitutablePathInfos(const PathSet & paths,
     SubstitutablePathInfos & infos)
 {
-    PathSet todo = paths;
-    foreach (Paths::iterator, i, settings.substituters) {
-        if (todo.empty()) break;
-        querySubstitutablePathInfos(*i, todo, infos);
+    if (!paths.empty()) {
+	PathSet todo = paths;
+	querySubstitutablePathInfos(todo, infos);
     }
 }
 
diff --git a/nix/libstore/local-store.hh b/nix/libstore/local-store.hh
index 4e6b4cfc1d..4113fafcb5 100644
--- a/nix/libstore/local-store.hh
+++ b/nix/libstore/local-store.hh
@@ -40,7 +40,6 @@ struct OptimiseStats
 
 struct RunningSubstituter
 {
-    Path program;
     Pid pid;
     AutoCloseFD to, from, error;
     FdSource fromBuf;
@@ -52,8 +51,8 @@ struct RunningSubstituter
 class LocalStore : public StoreAPI
 {
 private:
-    typedef std::map RunningSubstituters;
-    RunningSubstituters runningSubstituters;
+    /* The currently running substituter or empty.  */
+    std::unique_ptr runningSubstituter;
 
     Path linksDir;
 
@@ -93,8 +92,8 @@ public:
 
     PathSet querySubstitutablePaths(const PathSet & paths);
 
-    void querySubstitutablePathInfos(const Path & substituter,
-        PathSet & paths, SubstitutablePathInfos & infos);
+    void querySubstitutablePathInfos(PathSet & paths,
+        SubstitutablePathInfos & infos);
 
     void querySubstitutablePathInfos(const PathSet & paths,
         SubstitutablePathInfos & infos);
@@ -261,8 +260,7 @@ private:
 
     void removeUnusedLinks(const GCState & state);
 
-    void startSubstituter(const Path & substituter,
-        RunningSubstituter & runningSubstituter);
+    void startSubstituter(RunningSubstituter & runningSubstituter);
 
     string getLineFromSubstituter(RunningSubstituter & run);
 
diff --git a/nix/local.mk b/nix/local.mk
index 8e52c77bd9..18e9ba7604 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -154,9 +154,6 @@ noinst_HEADERS =						\
 	         (lambda (in)					\
 	           (write (get-string-all in) out)))))"
 
-nodist_pkglibexec_SCRIPTS =			\
-  %D%/scripts/substitute
-
 # The '.service' files for systemd.
 systemdservicedir = $(libdir)/systemd/system
 nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-publish.service
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index 73962af584..6f9c404c8d 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -466,8 +466,7 @@ main (int argc, char *argv[])
     {
       settings.processEnvironment ();
 
-      /* Use our substituter by default.  */
-      settings.substituters.clear ();
+      /* Enable substitutes by default.  */
       settings.set ("build-use-substitutes", "true");
 
       /* Use our substitute server by default.  */
@@ -490,14 +489,6 @@ main (int argc, char *argv[])
       printMsg(lvlDebug,
 	       format ("build log compression: %1%") % settings.logCompression);
 
-      if (settings.useSubstitutes)
-	settings.substituters.push_back (settings.nixLibexecDir
-					 + "/substitute");
-      else
-	/* Clear the substituter list to make sure nothing ever gets
-	   substituted, regardless of the client's settings.  */
-	settings.substituters.clear ();
-
       if (geteuid () == 0 && settings.buildUsersGroup.empty ())
 	fprintf (stderr, _("warning: daemon is running as root, so \
 using `--build-users-group' is highly recommended\n"));
diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc
index f29bcd2eab..ffac6cde34 100644
--- a/nix/nix-daemon/nix-daemon.cc
+++ b/nix/nix-daemon/nix-daemon.cc
@@ -596,8 +596,12 @@ static void performOp(bool trusted, unsigned int clientVersion,
         if (GET_PROTOCOL_MINOR(clientVersion) >= 6
             && GET_PROTOCOL_MINOR(clientVersion) < 0x61)
             settings.set("build-cores", std::to_string(readInt(from)));
-        if (GET_PROTOCOL_MINOR(clientVersion) >= 10)
-            settings.set("build-use-substitutes", readInt(from) ? "true" : "false");
+        if (GET_PROTOCOL_MINOR(clientVersion) >= 10) {
+	    if (settings.useSubstitutes)
+		settings.set("build-use-substitutes", readInt(from) ? "true" : "false");
+	    else
+		readInt(from);			// substitutes remain disabled
+	}
         if (GET_PROTOCOL_MINOR(clientVersion) >= 12) {
             unsigned int n = readInt(from);
             for (unsigned int i = 0; i < n; i++) {
diff --git a/nix/scripts/substitute.in b/nix/scripts/substitute.in
deleted file mode 100644
index 5a2eeb7259..0000000000
--- a/nix/scripts/substitute.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#!@SHELL@
-# A shorthand for "guix substitute", for use by the daemon.
-
-if test "x$GUIX_UNINSTALLED" = "x"
-then
-    prefix="@prefix@"
-    exec_prefix="@exec_prefix@"
-    exec "@bindir@/guix" substitute "$@"
-else
-    exec guix substitute "$@"
-fi

From 82f903e70f580c34503052245625354d2f097d7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 4 Sep 2019 12:00:31 +0200
Subject: [PATCH 119/408] daemon: Remove 'NIX_LIBEXEC_DIR'.

* nix/libstore/globals.hh (Settings)[nixLibexecDir]: Remove.
* nix/libstore/globals.cc (Settings::processEnvironment): Remove
reference to 'nixLibexecDir'.
* nix/local.mk (libstore_a_CPPFLAGS): Remove -DNIX_LIBEXEC_DIR flag.
* build-aux/pre-inst-env.in: Remove references to 'NIX_LIBEXEC_DIR'.
---
 build-aux/pre-inst-env.in | 6 ------
 nix/libstore/globals.cc   | 1 -
 nix/libstore/globals.hh   | 3 ---
 nix/local.mk              | 1 -
 4 files changed, 11 deletions(-)

diff --git a/build-aux/pre-inst-env.in b/build-aux/pre-inst-env.in
index f96288132d..e0aa7fe868 100644
--- a/build-aux/pre-inst-env.in
+++ b/build-aux/pre-inst-env.in
@@ -42,12 +42,6 @@ export GUILE_LOAD_COMPILED_PATH GUILE_LOAD_PATH
 PATH="$abs_top_builddir/scripts:$abs_top_builddir:$PATH"
 export PATH
 
-# Daemon helpers.
-
-NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'authenticate', etc.
-
-export NIX_LIBEXEC_DIR
-
 # The daemon invokes 'guix'; tell it which one to use.
 GUIX="$abs_top_builddir/scripts/guix"
 export GUIX
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 8f7c976fcb..0cc001fbe4 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -70,7 +70,6 @@ void Settings::processEnvironment()
     nixStateDir = canonPath(getEnv("GUIX_STATE_DIRECTORY", NIX_STATE_DIR));
     nixDBPath = getEnv("GUIX_DATABASE_DIRECTORY", nixStateDir + "/db");
     nixConfDir = canonPath(getEnv("GUIX_CONFIGURATION_DIRECTORY", GUIX_CONFIGURATION_DIRECTORY));
-    nixLibexecDir = canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR));
     nixBinDir = canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR));
     nixDaemonSocketFile = canonPath(nixStateDir + DEFAULT_SOCKET_PATH);
     guixProgram = canonPath(getEnv("GUIX", nixBinDir + "/guix"));
diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh
index 0069c85956..27616a2283 100644
--- a/nix/libstore/globals.hh
+++ b/nix/libstore/globals.hh
@@ -57,9 +57,6 @@ struct Settings {
     /* The directory where configuration files are stored. */
     Path nixConfDir;
 
-    /* The directory where internal helper programs are stored. */
-    Path nixLibexecDir;
-
     /* The directory where the main programs are stored. */
     Path nixBinDir;
 
diff --git a/nix/local.mk b/nix/local.mk
index 18e9ba7604..dc5a8398b2 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -110,7 +110,6 @@ libstore_a_CPPFLAGS =				\
   -DNIX_STATE_DIR=\"$(localstatedir)/guix\"	\
   -DNIX_LOG_DIR=\"$(localstatedir)/log/guix\"	\
   -DGUIX_CONFIGURATION_DIRECTORY=\"$(sysconfdir)/guix\"		\
-  -DNIX_LIBEXEC_DIR=\"$(libexecdir)/guix\"	\
   -DNIX_BIN_DIR=\"$(bindir)\"			\
   -DDEFAULT_CHROOT_DIRS="\"\""
 

From cc98b00857e29074de96a6ed60e325cdfffaea1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 4 Sep 2019 12:07:21 +0200
Subject: [PATCH 120/408] etc: Remove references to libexec/guix* from SELinux
 policy.

* etc/guix-daemon.cil.in: Remove references to libexec/guix*.
---
 etc/guix-daemon.cil.in | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/etc/guix-daemon.cil.in b/etc/guix-daemon.cil.in
index c0c82d8fbb..e0c9113498 100644
--- a/etc/guix-daemon.cil.in
+++ b/etc/guix-daemon.cil.in
@@ -277,9 +277,5 @@
            file (system_u object_r guix_daemon_exec_t (low low)))
   (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon"
            file (system_u object_r guix_daemon_exec_t (low low)))
-  (filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix-authenticate"
-           file (system_u object_r guix_daemon_exec_t (low low)))
-  (filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix/(.*)?"
-           any (system_u object_r guix_daemon_exec_t (low low)))
   (filecon "@guix_localstatedir@/guix/daemon-socket/socket"
            any (system_u object_r guix_daemon_socket_t (low low))))

From 7fb742215cf616f8f457be65b7acf0c358d8b2ef Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 13:51:08 +0300
Subject: [PATCH 121/408] gnu: wget.scm: Use license: prefix.

* gnu/packages/wget.scm (wget, wgetpaste, wget2)[license]: Use
'license:' prefix.
---
 gnu/packages/wget.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 76ceed5ff7..ba775961a8 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -21,7 +21,7 @@
 ;;; along with GNU Guix.  If not, see .
 
 (define-module (gnu packages wget)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
@@ -74,7 +74,7 @@
 HTTPS and FTP protocols.  It can resume interrupted downloads, use file name
 wild cards, supports proxies and cookies, and it can convert absolute links
 in downloaded documents to relative links.")
-    (license gpl3+))) ; some files are under GPLv2+
+    (license license:gpl3+))) ; some files are under GPLv2+
 
 (define-public wgetpaste
   (package
@@ -136,7 +136,7 @@ in downloaded documents to relative links.")
     (description
      "@code{wgetpaste} is an extremely simple command-line interface to various
 online pastebin services.")
-    (license public-domain)))
+    (license license:public-domain)))
 
 (define-public wget2
   (package
@@ -200,4 +200,4 @@ online pastebin services.")
    (description "GNU Wget2 is the successor of GNU Wget, a file and recursive
 website downloader.  Designed and written from scratch it wraps around libwget,
 that provides the basic functions needed by a web client.")
-   (license (list gpl3+ lgpl3+))))
+   (license (list license:gpl3+ license:lgpl3+))))

From 78249ebf5badd00d2bb130d85ca1fd2f3ac50963 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 13:49:57 +0300
Subject: [PATCH 122/408] gnu: wget2: Update to 1.99.2.

* gnu/packages/wget.scm (wget2): Update to 1.99.2.
[source]: Download from gnu mirrors.
[arguments]: Remove custom 'bootstrap phase, update custom
'skip-network-tests phase. Don't build static library.
[inputs]: Add bzip2, gpgme, zlib.
[native-inputs]: Remove autoconf, automake, flex, gettext-minimal,
libtool, python-2.
---
 gnu/packages/wget.scm | 60 +++++++++++++------------------------------
 1 file changed, 18 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index ba775961a8..1501ea2746 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -23,13 +23,11 @@
 (define-module (gnu packages wget)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
-  #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
-  #:use-module (gnu packages flex)
-  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnunet)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
@@ -40,7 +38,6 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix git-download)
   #:use-module (guix build-system gnu))
 
 (define-public wget
@@ -141,60 +138,39 @@ online pastebin services.")
 (define-public wget2
   (package
    (name "wget2")
-   (version "1.99.1")
+   (version "1.99.2")
    (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://gitlab.com/gnuwget/wget2.git")
-              (commit (string-append name "-" version))
-              (recursive? #t))) ;; Needed for 'gnulib' git submodule.
-       (file-name (string-append name "-" version "-checkout"))
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/wget/wget2-" version ".tar.gz"))
        (sha256
         (base32
-         "15wxsnjhc6bzk7f60i1djmsarh1w31gwi5h2gh9k19ncwypfj5dm"))))
+         "0qv55f4bablrlhc8bnic8g3mkk1kq44c4cphrk5jmv92z9aqzi6b"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
-        (add-after 'unpack 'skip-network-test
+        (add-after 'unpack 'skip-network-tests
           (lambda _
-            (substitute* "tests/Makefile.am"
-              (("test-auth-digest\\$\\(EXEEXT)") ""))
-            #t))
-        (replace 'bootstrap
-          (lambda _
-            ;; Make sure all the files are writable so that ./bootstrap
-            ;; can proceed.
-            (for-each (lambda (file)
-                        (chmod file #o755))
-                        (find-files "."))
-            (patch-shebang "./gnulib/gnulib-tool.py")
-            ;; Remove unnecessary inputs from bootstrap.conf
-            (substitute* "bootstrap.conf"
-              (("flex.*") "")
-              (("makeinfo.*") "")
-              (("lzip.*") "")
-              (("rsync.*") ""))
-            (invoke "sh" "./bootstrap"
-                    "--gnulib-srcdir=gnulib"
-                    "--no-git"))))))
+            (substitute* "tests/Makefile.in"
+              (("test-gpg-verify-no-file\\$\\(EXEEXT)") "")
+              (("test-gpg-valid\\$\\(EXEEXT)") "")
+              (("test-gpg-styles\\$\\(EXEEXT)") ""))
+            #t)))
+      #:configure-flags '("--enable-static=no")))
    (inputs
-    `(("gnutls" ,gnutls/dane)
+    `(("bzip2" ,bzip2)
+      ("gnutls" ,gnutls/dane)
+      ("gpgme" ,gpgme)
       ("libiconv" ,libiconv)
       ("libidn2" ,libidn2)
       ("libmicrohttpd" ,libmicrohttpd)
       ("libpsl" ,libpsl)
-      ("pcre2" ,pcre2)))
+      ("pcre2" ,pcre2)
+      ("zlib" ,zlib)))
    ;; TODO: Add libbrotlidec, libnghttp2.
    (native-inputs
-    `(("autoconf" ,autoconf)
-      ("automake" ,automake)
-      ("flex" ,flex)
-      ("gettext" ,gettext-minimal)
-      ("libtool" ,libtool)
-      ("pkg-config" ,pkg-config)
-      ("python" ,python-2)))
+    `(("pkg-config" ,pkg-config)))
    (home-page "https://gitlab.com/gnuwget/wget2")
    (synopsis "Successor of GNU Wget")
    (description "GNU Wget2 is the successor of GNU Wget, a file and recursive

From 28ac73358f4a5db9eabb05ae85a09a726b2b5a24 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 14:17:43 +0300
Subject: [PATCH 123/408] gnu: micropython: Update to 1.11.

* gnu/packages/python.scm (micropython): Update to 1.11.
---
 gnu/packages/python.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index aa92e82ac2..e8c0f63fe7 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -464,7 +464,7 @@ instead of @command{python3}.")))
 (define-public micropython
   (package
     (name "micropython")
-    (version "1.10")
+    (version "1.11")
     (source
       (origin
         (method url-fetch)
@@ -473,7 +473,7 @@ instead of @command{python3}.")))
                             "/micropython-" version ".tar.gz"))
         (sha256
          (base32
-          "1g1zjip3rkx6bp16qi1bag72wivnbh56fcsl3nffanrx4j5f4z90"))
+          "0px3xhw16rl0l7qifq7jw1gq92wzlnhd17dmszv9m2c3wbzs9p9f"))
       (modules '((guix build utils)))
       (snippet
        '(begin
@@ -487,7 +487,7 @@ instead of @command{python3}.")))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'build 'preprare-build
+         (add-before 'build 'prepare-build
            (lambda _
              (chdir "ports/unix")
              ;; see: https://github.com/micropython/micropython/pull/4246

From 74781c65f3d5294ea7da12366bf0fd22b08b381b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Sun, 8 Sep 2019 14:04:50 +0200
Subject: [PATCH 124/408] gnu: guix: Update to cc98b00.

* gnu/packages/package-management.scm (guix): Update to cc98b00.
(guix-daemon)[arguments]: Remove 'install' phase; add
'change-default-guix' phase.
---
 gnu/packages/package-management.scm | 33 +++++++++++++++--------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index b712bd7ec9..32836331f6 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -123,8 +123,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.0.1")
-        (commit "c902458863d1d341ffd74970b75e69c2bb848183")
-        (revision 4))
+        (commit "cc98b00857e29074de96a6ed60e325cdfffaea1a")
+        (revision 5))
     (package
       (name "guix")
 
@@ -140,7 +140,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0w93qjgy9n0qqyij12s7hm7fl4wb6h99bmfril4cqf4ynckpdvbb"))
+                  "0r5v4a0lyvn97gvp1q6algpw91k77r36vlnxx8w4s0c6r767b6z3"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -355,6 +355,19 @@ the Nix package manager.")
         #f)
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
+           (add-after 'unpack 'change-default-guix
+             (lambda _
+               ;; We need to tell 'guix-daemon' which 'guix' command to use.
+               ;; Here we use a questionable hack where we hard-code root's
+               ;; current guix, which could be wrong (XXX).  Note that scripts
+               ;; like 'guix perform-download' do not run as root so we assume
+               ;; that they have access to /var/guix/profiles/per-user/root.
+               (substitute* "nix/libstore/globals.cc"
+                 (("guixProgram = (.*)nixBinDir + \"/guix\"" _ before)
+                  (string-append "guixProgram = " before
+                                 "/var/guix/profiles/per-user/root\
+/current-guix/bin/guix")))
+               #t))
            (replace 'build
              (lambda _
                (invoke "make" "nix/libstore/schema.sql.hh")
@@ -364,19 +377,7 @@ the Nix package manager.")
            (delete 'copy-bootstrap-guile)
            (replace 'install
              (lambda* (#:key outputs #:allow-other-keys)
-               (invoke "make" "install-binPROGRAMS"
-                       "install-nodist_pkglibexecSCRIPTS")
-
-               ;; We need to tell 'guix-daemon' which 'guix' command to use.
-               ;; Here we use a questionable hack where we hard-code root's
-               ;; current guix, which could be wrong (XXX).  Note that scripts
-               ;; like 'guix perform-download' do not run as root so we assume
-               ;; that they have access to /var/guix/profiles/per-user/root.
-               (let ((out (assoc-ref outputs "out")))
-                 (substitute* (find-files (string-append out "/libexec"))
-                   (("exec \".*/bin/guix\"")
-                    "exec \"${GUIX:-/var/guix/profiles/per-user/root/current-guix/bin/guix}\""))
-                 #t)))
+               (invoke "make" "install-binPROGRAMS")))
            (delete 'wrap-program)))))))
 
 (define-public guile2.0-guix

From 45151bcb94b4ae943551ab444d8006c21f6cd69b Mon Sep 17 00:00:00 2001
From: Andrew Miloradovsky 
Date: Thu, 5 Sep 2019 12:30:44 +0300
Subject: [PATCH 125/408] gnu: Add libraft
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/cluster.scm (libraft): New variable.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/cluster.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 3608d67bed..3a81194cc5 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Sou Bunnbu 
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
+;;; Copyright © 2019 Andrew Miloradovsky 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,8 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages sphinx)
@@ -79,3 +82,34 @@ Server (@dfn{IPVS}) kernel module.  High availability is achieved by the Virtual
 Redundancy Routing Protocol (@dfn{VRRP}).  Each Keepalived framework can be used
 independently or together to provide resilient infrastructures.")
     (license license:gpl2+)))
+
+(define-public libraft
+  (package
+    (name "libraft")
+    (version "0.9.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/canonical/raft/archive/v"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0zd8nnmsszvsrwvybcg783y705z4xik9pi0mb6gb6ii58qq2b3hz"))))
+    (arguments '(#:configure-flags '("--disable-uv")))
+    ;; The uv plugin tests fail, if libuv (or the example) is enabled,
+    ;; because setting up the environment requires too much privileges.
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/canonical/raft")
+    (synopsis "C implementation of the Raft consensus protocol")
+    (description "The library has modular design: its core part implements only
+the core Raft algorithm logic, in a fully platform independent way.  On top of
+that, a pluggable interface defines the I/O implementation for networking
+(send/receive RPC messages) and disk persistence (store log entries and
+snapshots).")
+    (license license:asl2.0)))

From befac35876712fce847fd763caf3240c54f495f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Sun, 8 Sep 2019 14:19:25 +0200
Subject: [PATCH 126/408] gnu: libraft: Fetch source from Git.

* gnu/packages/cluster.scm (libraft)[source]: Switch to GIT-FETCH.
---
 gnu/packages/cluster.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 3a81194cc5..8b99a21356 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -22,6 +22,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gettext)
@@ -87,14 +88,15 @@ independently or together to provide resilient infrastructures.")
   (package
     (name "libraft")
     (version "0.9.5")
+    (home-page "https://github.com/canonical/raft")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/canonical/raft/archive/v"
-                    version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0zd8nnmsszvsrwvybcg783y705z4xik9pi0mb6gb6ii58qq2b3hz"))))
+                "1q49f5mmv6nr6dxhnp044xwc6jlczgh0nj0bl6718wiqh28411x0"))))
     (arguments '(#:configure-flags '("--disable-uv")))
     ;; The uv plugin tests fail, if libuv (or the example) is enabled,
     ;; because setting up the environment requires too much privileges.
@@ -105,7 +107,6 @@ independently or together to provide resilient infrastructures.")
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
     (build-system gnu-build-system)
-    (home-page "https://github.com/canonical/raft")
     (synopsis "C implementation of the Raft consensus protocol")
     (description "The library has modular design: its core part implements only
 the core Raft algorithm logic, in a fully platform independent way.  On top of

From 2a6f5190cfe958455f7f98a8cf984c673a985d27 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Sun, 18 Aug 2019 23:27:34 +0200
Subject: [PATCH 127/408] gnu: tumbler: Fix pdf thumbnailer.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (tumbler)[inputs]: Add cairo.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 0487c24b68..82dc12322f 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -283,6 +283,7 @@ merging features essential for loading menus modified with menu editors.")
     (inputs
      `(("dbus" ,dbus)
        ("gdk-pixbuf" ,gdk-pixbuf)
+       ("cairo" ,cairo) ;; Needed for pdf thumbnails (poppler-glibc.pc)
        ("freetype" ,freetype)
        ("libjpeg" ,libjpeg)
        ("libgsf" ,libgsf)

From 2bb29718836f29d4dddc8494d6c3fa6ad6c2840e Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 19 Aug 2019 01:02:49 +0200
Subject: [PATCH 128/408] gnu: tumbler: Remove unused gstreamer.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (tumbler)[inputs]: Remove gstreamer.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 82dc12322f..5ec2cb8193 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -288,7 +288,9 @@ merging features essential for loading menus modified with menu editors.")
        ("libjpeg" ,libjpeg)
        ("libgsf" ,libgsf)
        ("poppler" ,poppler)
-       ("gstreamer" ,gstreamer)))
+       ;; FIXME Provide gstreamer and gstreamer-tag to get video thumbnails
+       ;; ("gstreamer" ,gstreamer)
+       ))
     (home-page "https://www.xfce.org/")
     (synopsis "D-Bus service for applications to request thumbnails")
     (description

From 982a94e97eff85b053558fac7c0442726a091f11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Sun, 8 Sep 2019 14:29:27 +0200
Subject: [PATCH 129/408] import: github: Fix incorrect no-release case.

This is a followup to 81c3dc32244a17241d74eea9fa265edfcb326f6d.

Since that commit, when /releases returned an empty JSON array, we would
not fall back to /tags because of the incorrect match.

* guix/import/github.scm (fetch-releases-or-tags): Match the empty
vector instead of the empty list.
---
 guix/import/github.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix/import/github.scm b/guix/import/github.scm
index 55e1f72a42..55ea00a111 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -161,7 +161,7 @@ empty list."
         url))
 
   (match (json-fetch (decorate release-url) #:headers headers)
-    (()
+    (#()
      ;; We got the empty list, presumably because the user didn't use GitHub's
      ;; "release" mechanism, but hopefully they did use Git tags.
      (json-fetch (decorate tag-url) #:headers headers))

From 3426c0e531823f14825f0777923146ef2869d210 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 16:10:39 +0200
Subject: [PATCH 130/408] gnu: thunar-volman: Update to 0.9.5.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (thunar-volman): Update to 0.9.5.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 5ec2cb8193..bf732c82be 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -673,7 +673,7 @@ fast.")
 (define-public thunar-volman
   (package
     (name "thunar-volman")
-    (version "0.9.3")
+    (version "0.9.5")
     (source
      (origin
        (method url-fetch)
@@ -681,7 +681,7 @@ fast.")
                            (version-major+minor version) "/"
                            "thunar-volman-" version ".tar.bz2"))
        (sha256
-        (base32 "1sfmz40164rg77hclrkrgnbk8cb7f325qqi7lz2hh3wbvf8r0c19"))))
+        (base32 "0dqqkbhn43hhmhqyx1fnmawpvysdjzw6ln4ryf629wil6dlwd9vy"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)

From 861b9a365b2a56d70012c9b573b1a3d953601257 Mon Sep 17 00:00:00 2001
From: Matthew Kraai 
Date: Sat, 7 Sep 2019 17:59:32 -0700
Subject: [PATCH 131/408] doc: Fix verb conjugation.

* doc/guix.texi (Invoking guix pull): Change "run" to "ran".

Signed-off-by: Tobias Geerinckx-Rice 
---
 doc/guix.texi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 31f7890fe9..51429d8964 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3624,7 +3624,7 @@ version.  New @command{guix} sub-commands added by the update also
 become available.
 
 Any user can update their Guix copy using @command{guix pull}, and the
-effect is limited to the user who run @command{guix pull}.  For
+effect is limited to the user who ran @command{guix pull}.  For
 instance, when user @code{root} runs @command{guix pull}, this has no
 effect on the version of Guix that user @code{alice} sees, and vice
 versa.

From 08b4a10fa6bc535cd99d65f0233dd027153878eb Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 3 Sep 2019 00:42:24 +0900
Subject: [PATCH 132/408] services: ntp: Allow large adjustment by default.

This is documented as best practice in `man ntpd', and is required to allow
the date to be set correctly when traveling (without having to manually update
the hardware clock in the BIOS/UEFI).

* gnu/services/networking.scm ()[allow-large-adjustment?]: Set the
default value to #t.
* doc/guix.texi (Networking Services): Update documentation.
---
 doc/guix.texi               | 2 +-
 gnu/services/networking.scm | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 51429d8964..fdfcdde258 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -13050,7 +13050,7 @@ This is the data type for the NTP service configuration.
 This is the list of servers (host names) with which @command{ntpd} will be
 synchronized.
 
-@item @code{allow-large-adjustment?} (default: @code{#f})
+@item @code{allow-large-adjustment?} (default: @code{#t})
 This determines whether @command{ntpd} is allowed to make an initial
 adjustment of more than 1,000 seconds.
 
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 376b4ccc4e..e149fe0b69 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -315,7 +315,7 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
   (servers  ntp-configuration-servers
             (default %ntp-servers))
   (allow-large-adjustment? ntp-allow-large-adjustment?
-                           (default #f)))
+                           (default #t))) ;as recommended in the ntpd manual
 
 (define ntp-shepherd-service
   (match-lambda

From d4de2f9ea43d670645f5b8fabf2d1e2a65639191 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 3 Sep 2019 10:05:06 +0900
Subject: [PATCH 133/408] services: ntp: Fix KOD warning.

Otherwise the following messages would be printed by ntpd:

Sep  2 05:18:21 localhost ntpd[15849]: restrict default: KOD does nothing without LIMITE.
Sep  2 05:18:21 localhost ntpd[15849]: restrict ::: KOD does nothing without LIMITED.

Debian uses the same set of "restrict" keywords (see:
https://sources.debian.org/src/ntp/1:4.2.8p13+dfsg-2/debian/ntp.conf).

* gnu/services/networking.scm (ntp-shepherd-service): Add the 'limited'
keyword to both the IPv4 and IPv6 'restrict' directives.
---
 gnu/services/networking.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index e149fe0b69..13a5c6c98d 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -330,8 +330,8 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
                         "
 # Disable status queries as a workaround for CVE-2013-5211:
 # .
-restrict default kod nomodify notrap nopeer noquery
-restrict -6 default kod nomodify notrap nopeer noquery
+restrict default kod nomodify notrap nopeer noquery limited
+restrict -6 default kod nomodify notrap nopeer noquery limited
 
 # Yet, allow use of the local 'ntpq'.
 restrict 127.0.0.1

From ac73f504cf997559869f67a6c308cf3b19d253ea Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 3 Sep 2019 10:13:26 +0900
Subject: [PATCH 134/408] doc: Add index to find 'ntpd'.

* doc/guix.texi (Networking Services): Add @cindex to find 'ntpd'
---
 doc/guix.texi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/guix.texi b/doc/guix.texi
index fdfcdde258..84f2c1558a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -13032,6 +13032,7 @@ objects}).
 @end deftp
 
 @cindex NTP (Network Time Protocol), service
+@cindex ntpd, service for the Network Time Protocol daemon
 @cindex real time clock
 @defvr {Scheme Variable} ntp-service-type
 This is the type of the service running the @uref{http://www.ntp.org,

From 5658ae8a0ad5d988765944b7e783b2bdc23a7f48 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 3 Sep 2019 10:14:59 +0900
Subject: [PATCH 135/408] services: ntp: Support different NTP server types and
 options.

* gnu/services/networking.scm (ntp-server-types): New enum.
(): New record type.
(ntp-server->string): New procedure.
(%ntp-servers): Define in terms of  records.  Use the first
entrypoint server as a pool instead of a list of static servers.  This is more
resilient since a new server of the pool can be interrogated on every
request.  Add the 'iburst' options.
(ntp-configuration-servers): Define a custom accessor that warns but honors
the now deprecated server format.
(): Use it.
(%openntpd-servers): New variable,
(): Use it, as a pool ('servers' field) instead of a
regular server.
* tests/networking.scm: New file.
* Makefile.am (SCM_TESTS): Register it.
* doc/guix.texi: Update documentation.
---
 Makefile.am                 |   1 +
 doc/guix.texi               |  42 ++++++++++++--
 gnu/services/networking.scm | 108 ++++++++++++++++++++++++++++++------
 tests/networking.scm        |  50 +++++++++++++++++
 4 files changed, 178 insertions(+), 23 deletions(-)
 create mode 100644 tests/networking.scm

diff --git a/Makefile.am b/Makefile.am
index 796e96f099..683b2242f0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -402,6 +402,7 @@ SCM_TESTS =					\
   tests/modules.scm				\
   tests/monads.scm				\
   tests/nar.scm				\
+  tests/networking.scm				\
   tests/opam.scm				\
   tests/packages.scm				\
   tests/pack.scm				\
diff --git a/doc/guix.texi b/doc/guix.texi
index 84f2c1558a..9101aafda1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -48,7 +48,7 @@ Copyright @copyright{} 2017 humanitiesNerd@*
 Copyright @copyright{} 2017 Christopher Allan Webber@*
 Copyright @copyright{} 2017, 2018 Marius Bakke@*
 Copyright @copyright{} 2017 Hartmut Goebel@*
-Copyright @copyright{} 2017 Maxim Cournoyer@*
+Copyright @copyright{} 2017, 2019 Maxim Cournoyer@*
 Copyright @copyright{} 2017, 2018, 2019 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*
@@ -13048,8 +13048,9 @@ This is the data type for the NTP service configuration.
 
 @table @asis
 @item @code{servers} (default: @code{%ntp-servers})
-This is the list of servers (host names) with which @command{ntpd} will be
-synchronized.
+This is the list of servers (@code{} records) with which
+@command{ntpd} will be synchronized.  See the @code{ntp-server} data type
+definition below.
 
 @item @code{allow-large-adjustment?} (default: @code{#t})
 This determines whether @command{ntpd} is allowed to make an initial
@@ -13065,6 +13066,32 @@ List of host names used as the default NTP servers.  These are servers of the
 @uref{https://www.ntppool.org/en/, NTP Pool Project}.
 @end defvr
 
+@deftp {Data Type} ntp-server
+The data type representing the configuration of a NTP server.
+
+@table @asis
+@item @code{type} (default: @code{'server})
+The type of the NTP server, given as a symbol. One of @code{'pool},
+@code{'server}, @code{'peer}, @code{'broadcast} or @code{'manycastclient}.
+
+@item @code{address}
+The address of the server, as a string.
+
+@item @code{options}
+NTPD options to use with that specific server, given as a list of option names
+and/or of option names and values tuples. The following example define a server
+to use with the options @option{iburst} and @option{prefer}, as well as
+@option{version} 3 and a @option{maxpoll} time of 16 seconds.
+
+@example
+(ntp-server
+ (type 'server)
+ (address "some.ntp.server.org")
+ (options `(iburst (version 3) (maxpoll 16) prefer))))
+@end example
+@end table
+@end deftp
+
 @cindex OpenNTPD
 @deffn {Scheme Procedure} openntpd-service-type
 Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented
@@ -13084,6 +13111,11 @@ clock synchronized with that of the given servers.
 @end lisp
 @end deffn
 
+@defvr {Scheme Variable} %openntpd-servers
+This variable is a list of the server addresses defined in
+@var{%ntp-servers}.
+@end defvr
+
 @deftp {Data Type} openntpd-configuration
 @table @asis
 @item @code{openntpd} (default: @code{(file-append openntpd "/sbin/ntpd")})
@@ -13097,9 +13129,9 @@ Specify a list of timedelta sensor devices ntpd should use.  @code{ntpd}
 will listen to each sensor that actually exists and ignore non-existent ones.
 See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more
 information.
-@item @code{server} (default: @var{%ntp-servers})
+@item @code{server} (default: @code{'()})
 Specify a list of IP addresses or hostnames of NTP servers to synchronize to.
-@item @code{servers} (default: @code{'()})
+@item @code{servers} (default: @var{%openntp-servers})
 Specify a list of IP addresses or hostnames of NTP pools to synchronize to.
 @item @code{constraint-from} (default: @code{'()})
 @code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS.
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 13a5c6c98d..c45bfcdad9 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -51,6 +51,7 @@
   #:use-module (guix records)
   #:use-module (guix modules)
   #:use-module (guix deprecation)
+  #:use-module (rnrs enums)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-26)
@@ -72,13 +73,22 @@
             dhcpd-configuration-pid-file
             dhcpd-configuration-interfaces
 
-            %ntp-servers
-
             ntp-configuration
             ntp-configuration?
+            ntp-configuration-ntp
+            ntp-configuration-servers
+            ntp-allow-large-adjustment?
+
+            %ntp-servers
+            ntp-server
+            ntp-server-type
+            ntp-server-address
+            ntp-server-options
+
             ntp-service
             ntp-service-type
 
+            %openntpd-servers
             openntpd-configuration
             openntpd-configuration?
             openntpd-service-type
@@ -292,31 +302,87 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
     (list (service-extension shepherd-root-service-type dhcpd-shepherd-service)
           (service-extension activation-service-type dhcpd-activation)))))
 
-(define %ntp-servers
-  ;; Default set of NTP servers. These URLs are managed by the NTP Pool project.
-  ;; Within Guix, Leo Famulari  is the administrative contact
-  ;; for this NTP pool "zone".
-  '("0.guix.pool.ntp.org"
-    "1.guix.pool.ntp.org"
-    "2.guix.pool.ntp.org"
-    "3.guix.pool.ntp.org"))
-
 
 ;;;
 ;;; NTP.
 ;;;
 
-;; TODO: Export.
+(define ntp-server-types (make-enumeration
+                          '(pool
+                            server
+                            peer
+                            broadcast
+                            manycastclient)))
+
+(define-record-type* 
+  ntp-server make-ntp-server
+  ntp-server?
+  ;; The type can be one of the symbols of the NTP-SERVER-TYPE? enumeration.
+  (type ntp-server-type
+        (default 'server))
+  (address ntp-server-address)    ; a string
+  ;; The list of options can contain single option names or tuples in the form
+  ;; '(name value).
+  (options ntp-server-options
+           (default '())))
+
+(define (ntp-server->string ntp-server)
+  ;; Serialize the NTP server object as a string, ready to use in the NTP
+  ;; configuration file.
+  (define (flatten lst)
+    (reverse
+     (let loop ((x lst)
+                (res '()))
+       (if (list? x)
+           (fold loop res x)
+           (cons (format #f "~s" x) res)))))
+
+  (match ntp-server
+    (($  type address options)
+     ;; XXX: It'd be neater if fields were validated at the syntax level (for
+     ;; static ones at least).  Perhaps the Guix record type could support a
+     ;; predicate property on a field?
+     (unless (enum-set-member? type ntp-server-types)
+       (error "Invalid NTP server type" type))
+     (string-join (cons* (symbol->string type)
+                         address
+                         (flatten options))))))
+
+(define %ntp-servers
+  ;; Default set of NTP servers. These URLs are managed by the NTP Pool project.
+  ;; Within Guix, Leo Famulari  is the administrative contact
+  ;; for this NTP pool "zone".
+  (list
+   (ntp-server
+    (type 'pool)
+    (address "0.guix.pool.ntp.org")
+    (options '("iburst")))))               ;as recommended in the ntpd manual
+
 (define-record-type* 
   ntp-configuration make-ntp-configuration
   ntp-configuration?
   (ntp      ntp-configuration-ntp
             (default ntp))
-  (servers  ntp-configuration-servers
+  (servers  %ntp-configuration-servers   ;list of  objects
             (default %ntp-servers))
   (allow-large-adjustment? ntp-allow-large-adjustment?
                            (default #t))) ;as recommended in the ntpd manual
 
+(define (ntp-configuration-servers ntp-configuration)
+  ;; A wrapper to support the deprecated form of this field.
+  (let ((ntp-servers (%ntp-configuration-servers ntp-configuration)))
+    (match ntp-servers
+      (((? string?) (? string?) ...)
+       (format (current-error-port) "warning: Defining NTP servers as strings is \
+deprecated.  Please use  records instead.\n")
+       (map (lambda (addr)
+              (ntp-server
+               (type 'server)
+               (address addr)
+               (options '()))) ntp-servers))
+      ((($ ) ($ ) ...)
+       ntp-servers))))
+
 (define ntp-shepherd-service
   (match-lambda
     (($  ntp servers allow-large-adjustment?)
@@ -324,8 +390,7 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
        ;; TODO: Add authentication support.
        (define config
          (string-append "driftfile /var/run/ntpd/ntp.drift\n"
-                        (string-join (map (cut string-append "server " <>)
-                                          servers)
+                        (string-join (map ntp-server->string servers)
                                      "\n")
                         "
 # Disable status queries as a workaround for CVE-2013-5211:
@@ -335,7 +400,11 @@ restrict -6 default kod nomodify notrap nopeer noquery limited
 
 # Yet, allow use of the local 'ntpq'.
 restrict 127.0.0.1
-restrict -6 ::1\n"))
+restrict -6 ::1
+
+# This is required to use servers from a pool directive when using the 'nopeer'
+# option by default, as documented in the 'ntp.conf' manual.
+restrict source notrap nomodify noquery\n"))
 
        (define ntpd.conf
          (plain-file "ntpd.conf" config))
@@ -409,6 +478,9 @@ make an initial adjustment of more than 1,000 seconds."
 ;;; OpenNTPD.
 ;;;
 
+(define %openntpd-servers
+  (map ntp-server-address %ntp-servers))
+
 (define-record-type* 
   openntpd-configuration make-openntpd-configuration
   openntpd-configuration?
@@ -422,9 +494,9 @@ make an initial adjustment of more than 1,000 seconds."
   (sensor                  openntpd-sensor
                            (default '()))
   (server                  openntpd-server
-                           (default %ntp-servers))
-  (servers                 openntpd-servers
                            (default '()))
+  (servers                 openntpd-servers
+                           (default %openntpd-servers))
   (constraint-from         openntpd-constraint-from
                            (default '()))
   (constraints-from        openntpd-constraints-from
diff --git a/tests/networking.scm b/tests/networking.scm
new file mode 100644
index 0000000000..001d7df74d
--- /dev/null
+++ b/tests/networking.scm
@@ -0,0 +1,50 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Maxim Cournoyer 
+;;;
+;;; 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 .
+
+(define-module (tests networking)
+  #:use-module (gnu services networking)
+  #:use-module (srfi srfi-64))
+
+;;; Tests for the (gnu services networking) module.
+
+(define ntp-server->string (@@ (gnu services networking) ntp-server->string))
+
+(define %ntp-server-sample
+  (ntp-server
+   (type 'server)
+   (address "some.ntp.server.org")
+   (options `(iburst (version 3) (maxpoll 16) prefer))))
+
+(test-begin "networking")
+
+(test-equal "ntp-server->string"
+  (ntp-server->string %ntp-server-sample)
+  "server some.ntp.server.org iburst version 3 maxpoll 16 prefer")
+
+(test-equal "ntp configuration servers deprecated form"
+  (ntp-configuration-servers
+   (ntp-configuration
+    (servers (list (ntp-server
+                    (type 'server)
+                    (address "example.pool.ntp.org")
+                    (options '()))))))
+  (ntp-configuration-servers
+   (ntp-configuration
+    (servers (list "example.pool.ntp.org")))))
+
+(test-end "networking")

From f92cf9d356e5584b073a626bcb27ffb5ed7f99a7 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Fri, 6 Sep 2019 18:52:51 +0900
Subject: [PATCH 136/408] gnu: openntpd: Fix error CA errors when using
 constraints.

The error printed by nttpd was "constraint: failed to load constraint ca" when
libressl tried loading the file /etc/ssl/cert.pem.  The problem was
investigated as part of fixing issue 37318 (see:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37318).

* gnu/packages/ntp.scm (openntpd)[configure-flags]: Use the '--with-cacert'
flag to specify the location of the certificate authority file of libressl.
---
 gnu/packages/ntp.scm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 419b6d7321..6942ecec2f 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2015, 2018 Ludovic Courtès 
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner 
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice 
+;;; Copyright © 2019 Maxim Cournoyer 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -108,8 +109,11 @@ computers over a network.")
                 "0fn12i4kzsi0zkr4qp3dp9bycmirnfapajqvdfx02zhr4hanj0kv"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--with-privsep-user=ntpd"
-                           "--localstatedir=/var")
+     '(#:configure-flags `( "--with-privsep-user=ntpd"
+                            "--localstatedir=/var"
+                            ,(string-append "--with-cacert="
+                                            (assoc-ref %build-inputs "libressl")
+                                            "/etc/ssl/cert.pem"))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'modify-install-locations

From afd39a76e26a8ad6d77e65b7316b912fd8dbb623 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Fri, 6 Sep 2019 21:12:26 +0900
Subject: [PATCH 137/408] services: openntpd: Remove useless let.

* gnu/services/networking.scm (openntpd-shepherd-service): Remove useless let.
---
 gnu/services/networking.scm | 64 ++++++++++++++++++-------------------
 1 file changed, 32 insertions(+), 32 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index c45bfcdad9..dd2f9e29e2 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -508,41 +508,41 @@ make an initial adjustment of more than 1,000 seconds."
   (match-record config 
     (openntpd listen-on query-from sensor server servers constraint-from
               constraints-from allow-large-adjustment?)
-    (let ()
-      (define config
-        (string-join
-          (filter-map
-            (lambda (field value)
-              (string-join
-                (map (cut string-append field <> "\n")
-                     value)))
-            '("listen on " "query from " "sensor " "server " "servers "
-              "constraint from ")
-            (list listen-on query-from sensor server servers constraint-from))
-          ;; The 'constraints from' field needs to be enclosed in double quotes.
+
+    (define config
+      (string-join
+       (filter-map
+        (lambda (field value)
           (string-join
-            (map (cut string-append "constraints from \"" <> "\"\n")
-                 constraints-from))))
+           (map (cut string-append field <> "\n")
+                value)))
+        '("listen on " "query from " "sensor " "server " "servers "
+          "constraint from ")
+        (list listen-on query-from sensor server servers constraint-from))
+       ;; The 'constraints from' field needs to be enclosed in double quotes.
+       (string-join
+        (map (cut string-append "constraints from \"" <> "\"\n")
+             constraints-from))))
 
-      (define ntpd.conf
-        (plain-file "ntpd.conf" config))
+    (define ntpd.conf
+      (plain-file "ntpd.conf" config))
 
-      (list (shepherd-service
-              (provision '(ntpd))
-              (documentation "Run the Network Time Protocol (NTP) daemon.")
-              (requirement '(user-processes networking))
-              (start #~(make-forkexec-constructor
-                         (list (string-append #$openntpd "/sbin/ntpd")
-                               "-f" #$ntpd.conf
-                               "-d" ;; don't daemonize
-                               #$@(if allow-large-adjustment?
-                                    '("-s")
-                                    '()))
-                         ;; When ntpd is daemonized it repeatedly tries to respawn
-                         ;; while running, leading shepherd to disable it.  To
-                         ;; prevent spamming stderr, redirect output to logfile.
-                         #:log-file "/var/log/ntpd"))
-              (stop #~(make-kill-destructor)))))))
+    (list (shepherd-service
+           (provision '(ntpd))
+           (documentation "Run the Network Time Protocol (NTP) daemon.")
+           (requirement '(user-processes networking))
+           (start #~(make-forkexec-constructor
+                     (list (string-append #$openntpd "/sbin/ntpd")
+                           "-f" #$ntpd.conf
+                           "-d" ;; don't daemonize
+                           #$@(if allow-large-adjustment?
+                                  '("-s")
+                                  '()))
+                     ;; When ntpd is daemonized it repeatedly tries to respawn
+                     ;; while running, leading shepherd to disable it.  To
+                     ;; prevent spamming stderr, redirect output to logfile.
+                     #:log-file "/var/log/ntpd"))
+           (stop #~(make-kill-destructor))))))
 
 (define (openntpd-service-activation config)
   "Return the activation gexp for CONFIG."

From 2625abc6aa5df66a6503e906b7592691452954f5 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Sat, 7 Sep 2019 09:24:43 +0900
Subject: [PATCH 138/408] services: openntpd: Add test for issue #3731.

See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37318.

* gnu/services/networking.scm (openntpd-configuration->string): New procedure,
extracted from top of the `openntpd-shepherd-service' to make it testable.
(openntpd-shepherd-service): Adapt following the move of the code to the above
procedure.
* tests/networking.scm: Add a test for the `openntpd-configuration->string'
procedure.
---
 gnu/services/networking.scm | 38 +++++++++++----------
 tests/networking.scm        | 67 +++++++++++++++++++++++++++++++++++--
 2 files changed, 85 insertions(+), 20 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index dd2f9e29e2..432f3a80ee 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -504,28 +504,30 @@ make an initial adjustment of more than 1,000 seconds."
   (allow-large-adjustment? openntpd-allow-large-adjustment?
                            (default #f))) ; upstream default
 
-(define (openntpd-shepherd-service config)
+(define (openntpd-configuration->string config)
   (match-record config 
-    (openntpd listen-on query-from sensor server servers constraint-from
-              constraints-from allow-large-adjustment?)
+    (listen-on query-from sensor server servers constraint-from
+               constraints-from)
+    (string-join
+     (filter-map
+      (lambda (field value)
+        (string-join
+         (map (cut string-append field <> "\n")
+              value)))
+      '("listen on " "query from " "sensor " "server " "servers "
+        "constraint from ")
+      (list listen-on query-from sensor server servers constraint-from))
+     ;; The 'constraints from' field needs to be enclosed in double quotes.
+     (string-join
+      (map (cut string-append "constraints from \"" <> "\"\n")
+           constraints-from)))))
 
-    (define config
-      (string-join
-       (filter-map
-        (lambda (field value)
-          (string-join
-           (map (cut string-append field <> "\n")
-                value)))
-        '("listen on " "query from " "sensor " "server " "servers "
-          "constraint from ")
-        (list listen-on query-from sensor server servers constraint-from))
-       ;; The 'constraints from' field needs to be enclosed in double quotes.
-       (string-join
-        (map (cut string-append "constraints from \"" <> "\"\n")
-             constraints-from))))
+(define (openntpd-shepherd-service config)
+  (let ((openntpd (openntpd-configuration-openntpd config))
+        (allow-large-adjustment? (openntpd-allow-large-adjustment? config)))
 
     (define ntpd.conf
-      (plain-file "ntpd.conf" config))
+      (plain-file "ntpd.conf" (openntpd-configuration->string config)))
 
     (list (shepherd-service
            (provision '(ntpd))
diff --git a/tests/networking.scm b/tests/networking.scm
index 001d7df74d..439cca5ffc 100644
--- a/tests/networking.scm
+++ b/tests/networking.scm
@@ -17,11 +17,19 @@
 ;;; along with GNU Guix.  If not, see .
 
 (define-module (tests networking)
+  #:use-module (ice-9 regex)
   #:use-module (gnu services networking)
   #:use-module (srfi srfi-64))
 
 ;;; Tests for the (gnu services networking) module.
 
+(test-begin "networking")
+
+
+;;;
+;;; NTP.
+;;;
+
 (define ntp-server->string (@@ (gnu services networking) ntp-server->string))
 
 (define %ntp-server-sample
@@ -30,8 +38,6 @@
    (address "some.ntp.server.org")
    (options `(iburst (version 3) (maxpoll 16) prefer))))
 
-(test-begin "networking")
-
 (test-equal "ntp-server->string"
   (ntp-server->string %ntp-server-sample)
   "server some.ntp.server.org iburst version 3 maxpoll 16 prefer")
@@ -47,4 +53,61 @@
    (ntp-configuration
     (servers (list "example.pool.ntp.org")))))
 
+
+;;;
+;;; OpenNTPD
+;;;
+
+(define openntpd-configuration->string (@@ (gnu services networking)
+                                           openntpd-configuration->string))
+
+(define %openntpd-conf-sample
+  (openntpd-configuration
+   (server '("0.guix.pool.ntp.org" "1.guix.pool.ntp.org"))
+   (listen-on '("127.0.0.1" "::1"))
+   (sensor '("udcf0 correction 70000"))
+   (constraint-from '("www.gnu.org"))
+   (constraints-from '("https://www.google.com/"))
+   (allow-large-adjustment? #t)))
+
+(test-assert "openntpd configuration generation sanity check"
+
+  (begin
+    (define (string-match/newline pattern text)
+      (regexp-exec (make-regexp pattern regexp/newline) text))
+
+    (define (match-count pattern text)
+      (fold-matches (make-regexp pattern regexp/newline) text 0
+                    (lambda (match count)
+                      (1+ count))))
+
+    (let ((config (openntpd-configuration->string %openntpd-conf-sample)))
+      (if (not
+           (and (string-match/newline "^listen on 127.0.0.1$" config)
+                (string-match/newline "^listen on ::1$" config)
+                (string-match/newline "^sensor udcf0 correction 70000$" config)
+                (string-match/newline "^constraint from www.gnu.org$" config)
+                (string-match/newline "^server 0.guix.pool.ntp.org$" config)
+                (string-match/newline
+                 "^constraints from \"https://www.google.com/\"$"
+                 config)
+
+                ;; Check for issue #3731 (see:
+                ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37318).
+                (= (match-count "^listen on " config) 2)
+                (= (match-count "^sensor " config) 1)
+                (= (match-count "^constraint from " config) 1)
+                (= (match-count "^server " config) 2)
+                (= (match-count "^constraints from " config) 1)))
+          (begin
+            (format #t "The configuration below failed \
+the sanity check:\n~a~%" config)
+            #f)
+          #t))))
+
+(test-equal "openntpd generated config string ends with a newline"
+  (let ((config (openntpd-configuration->string %openntpd-conf-sample)))
+    (string-take-right config 1))
+  "\n")
+
 (test-end "networking")

From ccdfae388d61f2263a085a4ddac8cb2919d01531 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Sat, 7 Sep 2019 12:37:37 +0900
Subject: [PATCH 139/408] services: openntpd: Fix the config generation code.

This fixes issue #37318 (see: http://bugs.gnu.org/37318).

* gnu/services/networking.scm (openntpd-configuration->string): Rewrite in
order to make the "openntpd configuration generation sanity check" test pass.
---
 gnu/services/networking.scm | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 432f3a80ee..c775242f99 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -505,22 +505,33 @@ make an initial adjustment of more than 1,000 seconds."
                            (default #f))) ; upstream default
 
 (define (openntpd-configuration->string config)
+
+  (define (quote-field? name)
+    (member name '("constraints from")))
+
   (match-record config 
     (listen-on query-from sensor server servers constraint-from
                constraints-from)
-    (string-join
-     (filter-map
-      (lambda (field value)
-        (string-join
-         (map (cut string-append field <> "\n")
-              value)))
-      '("listen on " "query from " "sensor " "server " "servers "
-        "constraint from ")
-      (list listen-on query-from sensor server servers constraint-from))
-     ;; The 'constraints from' field needs to be enclosed in double quotes.
+    (string-append
      (string-join
-      (map (cut string-append "constraints from \"" <> "\"\n")
-           constraints-from)))))
+      (concatenate
+       (filter-map (lambda (field values)
+                     (match values
+                       (() #f)          ;discard entry with filter-map
+                       ((val ...)       ;validate value type
+                        (map (lambda (value)
+                               (if (quote-field? field)
+                                   (format #f "~a \"~a\"" field value)
+                                   (format #f "~a ~a" field value)))
+                             values))))
+                   ;; The entry names.
+                   '("listen on" "query from" "sensor" "server" "servers"
+                     "constraint from" "constraints from")
+                   ;; The corresponding entry values.
+                   (list listen-on query-from sensor server servers
+                         constraint-from constraints-from)))
+      "\n")
+     "\n")))                              ;add a trailing newline
 
 (define (openntpd-shepherd-service config)
   (let ((openntpd (openntpd-configuration-openntpd config))

From 8a35e58a27a4d06f2bed7d6a6b106ed6d242555c Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 15:44:05 +0300
Subject: [PATCH 140/408] gnu: js-html5shiv: Don't use unstable tarball.

* gnu/packages/javascript.scm (js-html5shiv)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 9e1818dfaf..472fd5e98f 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -194,13 +194,14 @@ Media Queries.")
     (name "js-html5shiv")
     (version "3.7.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/aFarkas/html5shiv/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/aFarkas/html5shiv")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0inlbpxpqzdyi24lqagzf7l24zxg0y02xcpqs2h4npjscazzw7hg"))))
+                "0y1c5nyq0brl9fjdihhax33vks4s1ij9iv113879sg3zflmgqpd0"))))
     (build-system minify-build-system)
     (home-page "https://github.com/aFarkas/html5shiv")
     (synopsis "Enable HTML5 sectioning elements in legacy browsers")

From 16df2914144b56fcc481e1b7837aaf724fdd8d21 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 15:57:50 +0300
Subject: [PATCH 141/408] gnu: js-strftime: Don't use unstable tarball.

* gnu/packages/javascript.scm (js-strftime)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 472fd5e98f..ff6878fdf0 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -265,13 +265,14 @@ provided by ES5.  @code{JSONPath} is used to represent the links.")
     (name "js-strftime")
     (version "0.10.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/samsonjs/strftime/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url"https://github.com/samsonjs/strftime")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1iya43w7y26y2dp9l4d40bhjc4scb5a9mng5ng5c8hsqr82f1375"))))
+                "131nmlivazwxyba25kh9lda99749fq4xsyin6lzfalaaydviby4p"))))
     (build-system minify-build-system)
     (arguments
      `(#:javascript-files '("strftime.js")))

From 778f4430e0d3de0ec8e29926f636aca3ed2709e0 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:00:24 +0300
Subject: [PATCH 142/408] gnu: js-highlight: Don't use unstable tarball.

* gnu/packages/javascript.scm (js-highlight)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index ff6878fdf0..aa2c17fb68 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -289,13 +289,14 @@ well as some other extensions from Ruby.")
     (name "js-highlight")
     (version "9.12.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/isagalaev/highlight.js/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/isagalaev/highlight.js")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jjn9mj7fwq4zpr6is438bscf03b3q8jkj0k5c3fc6pkmjnhw939"))))
+                "12qz22qjpd6svj58pwgcwg2x2rzhihfdrxg6lgj39nfpaln6dris"))))
     (build-system minify-build-system)
     (arguments
      `(#:javascript-files '("src/highlight.js")))

From 4151447897dbc0ea78d192278371afb6b1218b5f Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:02:40 +0300
Subject: [PATCH 143/408] gnu: js-selectize: Don't use unstable tarball.

* gnu/packages/javascript.scm (js-selectize)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index aa2c17fb68..ed338c72dd 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -337,13 +337,14 @@ HTML tables with minimal effort.")
     (name "js-selectize")
     (version "0.12.4")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/selectize/selectize.js/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/selectize/selectize.js")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0756p49aaz34mw2dx8k1gxf210mngfrri25vkba0j7wihd2af8gn"))))
+                "1l6gdl9v9z0xb1yl81ssaqm067imjbxwbpa76nd0cyrx0jskih22"))))
     (build-system minify-build-system)
     (arguments `(#:javascript-files '("src/selectize.js")))
     (home-page "http://selectize.github.io/selectize.js/")

From 3500cb58f86b3966b9bca446f6d51498d112390d Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:03:41 +0300
Subject: [PATCH 144/408] gnu: js-selectize: Update to 0.12.6.

* gnu/packages/javascript.scm (js-selectize): Update to 0.12.6.
---
 gnu/packages/javascript.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index ed338c72dd..3b10442e35 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -335,7 +335,7 @@ HTML tables with minimal effort.")
 (define-public js-selectize
   (package
     (name "js-selectize")
-    (version "0.12.4")
+    (version "0.12.6")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -344,7 +344,7 @@ HTML tables with minimal effort.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1l6gdl9v9z0xb1yl81ssaqm067imjbxwbpa76nd0cyrx0jskih22"))))
+                "15gichl8wi6yxag2ps723nxrgyan15976dzsnvw9h9py8sbyyzjn"))))
     (build-system minify-build-system)
     (arguments `(#:javascript-files '("src/selectize.js")))
     (home-page "http://selectize.github.io/selectize.js/")

From 2209a4476e58b9fb4e0fe154179fe8d22a1430cb Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:05:28 +0300
Subject: [PATCH 145/408] gnu: js-es5-shim: Don't use unstable tarball.

* gnu/packages/javascript.scm (js-es5-shim)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 3b10442e35..da7226e50e 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -359,13 +359,14 @@ navigation; it is useful for tagging, contact lists, etc.")
     (name "js-es5-shim")
     (version "4.5.9")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/es-shims/es5-shim/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/es-shims/es5-shim")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0yfndyijz0ykddzprpvfjb2453gzpn528klmwycwbqc1bqd3m1hl"))))
+                "03kp6iinnr8ky298k3cfa5rm2ykqfry1nd65dqaywc3i3fs3h43d"))))
     (build-system minify-build-system)
     (arguments `(#:javascript-files
                  '("es5-sham.js"

From 9cf60dec1d4862e52e942e2674e12d1dc3e1f535 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:06:31 +0300
Subject: [PATCH 146/408] gnu: js-es5-shim: Update to 4.5.13.

* gnu/packages/javascript.scm (js-es5-shim): Update to 4.5.13.
---
 gnu/packages/javascript.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index da7226e50e..cc0542636c 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -357,7 +357,7 @@ navigation; it is useful for tagging, contact lists, etc.")
 (define-public js-es5-shim
   (package
     (name "js-es5-shim")
-    (version "4.5.9")
+    (version "4.5.13")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -366,7 +366,7 @@ navigation; it is useful for tagging, contact lists, etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "03kp6iinnr8ky298k3cfa5rm2ykqfry1nd65dqaywc3i3fs3h43d"))))
+                "142w384fbyllq4yggv173g82lw3wix4jqcg6hkhx1ymq89vvnpmh"))))
     (build-system minify-build-system)
     (arguments `(#:javascript-files
                  '("es5-sham.js"

From e452c69aa89b2646c93235e4c4322e9f60040a1b Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:08:18 +0300
Subject: [PATCH 147/408] gnu: js-filesaver: Don't use unstable tarball.

* gnu/packages/javascript.scm (js-filesaver)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index cc0542636c..da285db0b9 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -386,13 +386,14 @@ means that these shams cause many ES5 methods to silently fail.")
     (name "js-filesaver")
     (version "1.3.8")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/eligrey/FileSaver.js/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/eligrey/FileSaver.js")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rkhfqs5plaj628kzj7qgm5qahy4v7ihygifidqr6g6265mil97h"))))
+                "0gvqk0hnr8fig0n4da7vj7q6z31bcyv52916xz3rbmdj3pgpiv1d"))))
     (build-system minify-build-system)
     (arguments
      `(#:phases

From 367d0833c3c4d6828fe47bee5513a8ac78016c3e Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:14:41 +0300
Subject: [PATCH 148/408] gnu: js-respond: Use minify-build-system.

* gnu/packages/javascript.scm (js-respond)[build-system]: Use
minify-build-system.
[arguments]: Remove custom builder code.
[native-inputs]: Remove uglify-js, source, gzip, tar.
---
 gnu/packages/javascript.scm | 34 ++++------------------------------
 1 file changed, 4 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index da285db0b9..ba0ccddff4 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -151,38 +151,12 @@ be able to view it naturally and easily.")))
               (sha256
                (base32
                 "0ds1ya2a185jp93mdn07159c2x8zczwi960ykrawpp62bwk2n93d"))))
-    (build-system trivial-build-system)
+    (build-system minify-build-system)
     (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils)
-                      (ice-9 match)
-                      (ice-9 popen)
-                      (srfi srfi-26))
-         (set-path-environment-variable
-          "PATH" '("bin") (map (match-lambda
-                                 ((_ . input)
-                                  input))
-                               %build-inputs))
-         (let ((install-directory (string-append %output
-                                                 "/share/javascript/respond/")))
-           (invoke "tar" "xvf"
-                   (assoc-ref %build-inputs "source")
-                   "--strip" "1")
-           (mkdir-p install-directory)
-           (let* ((file "src/respond.js")
-                  (installed (string-append install-directory "respond.min.js")))
-             (let ((minified (open-pipe* OPEN_READ "uglify-js" file)))
-               (call-with-output-file installed
-                 (cut dump-port minified <>)))))
-         #t)))
+     `(#:javascript-files '("src/matchmedia.addListener.js"
+                            "src/matchmedia.polyfill.js"
+                            "src/respond.js")))
     (home-page "https://github.com/scottjehl/Respond")
-    (native-inputs
-     `(("uglify-js" ,uglify-js)
-       ("source" ,source)
-       ("gzip" ,gzip)
-       ("tar" ,tar)))
     (synopsis "Polyfill for min/max-width CSS3 Media Queries")
     (description "The goal of this script is to provide a fast and lightweight
 script to enable responsive web designs in browsers that don't support CSS3

From 97f6004ca194a764bc7829f1ebdc292ef01f9b2b Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Sun, 8 Sep 2019 16:12:50 +0300
Subject: [PATCH 149/408] gnu: js-respond: Don't use unstable-tarball.

* gnu/packages/javascript.scm (js-respond)[source]: Use 'git-fetch'.
---
 gnu/packages/javascript.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index ba0ccddff4..2390c23c4b 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -144,13 +144,14 @@ be able to view it naturally and easily.")))
     (name "js-respond")
     (version "1.4.2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/scottjehl/Respond/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/scottjehl/Respond")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ds1ya2a185jp93mdn07159c2x8zczwi960ykrawpp62bwk2n93d"))))
+                "00xid731rirc7sdy1gc8qal3v9g0agr2qx15hm4x97l1lcbylyn2"))))
     (build-system minify-build-system)
     (arguments
      `(#:javascript-files '("src/matchmedia.addListener.js"

From ba7bd6c62ddaab4d5623fb149b47579e13a9e5f5 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Sun, 8 Sep 2019 01:56:53 -0700
Subject: [PATCH 150/408] gnu: Add pgpdump.

* gnu/packages/gnupg (pgpdump): New variable.
* gnu/packages/package-management (diffoscope)[native-inputs]: Add pgpdump.
---
 gnu/packages/gnupg.scm              | 28 ++++++++++++++++++++++++++++
 gnu/packages/package-management.scm |  1 +
 2 files changed, 29 insertions(+)

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 0d619c6a1d..bc1e3c8720 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -907,6 +907,34 @@ bytes (whether by hand, OCR, QR code, or the like) and paperkey can use
 them to transform your existing public key into a secret key.")
     (license license:gpl2+)))
 
+(define-public pgpdump
+  (package
+    (name "pgpdump")
+    (version "0.33")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.mew.org/~kazu/proj/pgpdump/pgpdump-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1j001jra2m89n6cys3n0hs574bipjdzfxhzpnd4jfyv95mqwl7n4"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no make check
+       #:configure-flags (list "--prefix=/")
+       #:make-flags (list "CC=gcc"
+                          (string-append "DESTDIR=" (assoc-ref %outputs "out")))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://www.mew.org/~kazu/proj/pgpdump/en/")
+    (synopsis "PGP packet visualizer")
+    (description "pgpdump displays the sequence of OpenPGP or PGP version 2
+packets from a file.
+
+The output of this command is similar to GnuPG's list packets command,
+however, pgpdump produces more detailed and easier to understand output.")
+    (license license:bsd-3)))
+
 (define-public gpa
   (package
     (name "gpa")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 32836331f6..0d1830c164 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -659,6 +659,7 @@ transactions from C or Python.")
                        ;; no unversioned openjdk available
                        ("openjdk:jdk" ,openjdk12 "jdk")
                        ("openssh" ,openssh)
+                       ("pgpdump" ,pgpdump)
                        ("poppler" ,poppler)
                        ("rpm" ,rpm)
                        ("sng" ,sng)

From 30696ea2b27747e047589527572ef39e60555047 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian 
Date: Sun, 8 Sep 2019 13:40:01 -0700
Subject: [PATCH 151/408] gnu: diffoscope: Add zip and unzip for test suite.

* gnu/packages/package-management (diffoscope)[native-inputs]: Add zip, unzip.
---
 gnu/packages/package-management.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 0d1830c164..18e8a3853f 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -666,8 +666,10 @@ transactions from C or Python.")
                        ("sqlite" ,sqlite)
                        ("squashfs-tools" ,squashfs-tools)
                        ("tcpdump" ,tcpdump)
+                       ("unzip" ,unzip)
                        ("xxd" ,xxd)
-                       ("xz" ,xz)))
+                       ("xz" ,xz)
+                       ("zip" ,(@ (gnu packages compression) zip))))
       (home-page "https://diffoscope.org/")
       (synopsis "Compare files, archives, and directories in depth")
       (description

From a2931b14d3aadad0f1c5f4e881f6c9ed900dbf11 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 02:35:40 +0200
Subject: [PATCH 152/408] gnu: bs1770gain: Update to 0.6.0.

* gnu/packages/audio.scm (bs1770gain): Update to 0.6.0.
[source]: Adjust snippet.
---
 gnu/packages/audio.scm | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d3fd8c8245..df0e5a2868 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3203,24 +3203,27 @@ with support for HD extensions.")
 (define-public bs1770gain
   (package
     (name "bs1770gain")
-    (version "0.5.2")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
                            version "/bs1770gain-" version ".tar.gz"))
        (sha256
-        (base32
-         "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk"))
+        (base32 "0nnqixvw3x7i22nsr54n4bgm35z9nh3d9qj5s75cfd3ajjsjndyh"))
        (modules '((guix build utils)))
        (snippet
         '(begin
            ;; XXX
-           (substitute* "bs1770gain/bs1770gain.c"
-             (("\"N.*\"") "\"\""))
-           (substitute* "configure"
-             (("URL=.*$")
-              "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html\n"))))))
+           (substitute* "libbg/bgx.c"
+             (("#define BS.* ") "#define BS ")
+             (("BS.*NO?.*N.*S.*E.*N.*SE?") "NO")
+             (("\"( #|N).*\"") "\"\""))
+           (substitute* (list "config.h"
+                              "configure.ac"
+                              "configure")
+             (("https?://bs1770gain[^/]*/")
+              "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))))))
     (build-system gnu-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("sox" ,sox)))

From 2777dc7589a8ecdb05574c574ff86e178594b92a Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 19:43:40 +0200
Subject: [PATCH 153/408] gnu: bs1770gain: Return #t from source snippet.

* gnu/packages/audio.scm (bs1770gain)[source]: Return #t from snippet.
---
 gnu/packages/audio.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index df0e5a2868..4dbbace3e3 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3223,7 +3223,8 @@ with support for HD extensions.")
                               "configure.ac"
                               "configure")
              (("https?://bs1770gain[^/]*/")
-              "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))))))
+              "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))
+           #t))))
     (build-system gnu-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("sox" ,sox)))

From a9162155975a131afa1e6a44262afbb7af91f7fd Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Fri, 6 Sep 2019 12:23:57 +0200
Subject: [PATCH 154/408] =?UTF-8?q?services:=20Add=20=E2=80=98/usr/bin/env?=
 =?UTF-8?q?=E2=80=99=20special=20file.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/services/base.scm (%base-services): Add ‘/usr/bin/env‘ to
special-files-service-type.
---
 gnu/services/base.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index dcb7278f0f..97c53eeaf3 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus 
 ;;; Copyright © 2018 Mathieu Othacehe 
 ;;; Copyright © 2019 Efraim Flashner 
+;;; Copyright © 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2019 John Soo 
 ;;;
 ;;; This file is part of GNU Guix.
@@ -41,9 +42,9 @@
   #:use-module (gnu packages admin)
   #:use-module ((gnu packages linux)
                 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
-  #:use-module ((gnu packages base)
-                #:select (canonical-package glibc glibc-utf8-locales))
   #:use-module (gnu packages bash)
+  #:use-module ((gnu packages base)
+                #:select (canonical-package coreutils glibc glibc-utf8-locales))
   #:use-module (gnu packages package-management)
   #:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
   #:use-module (gnu packages linux)
@@ -2425,6 +2426,8 @@ to handle."
 
         (service special-files-service-type
                  `(("/bin/sh" ,(file-append (canonical-package bash)
-                                            "/bin/sh"))))))
+                                            "/bin/sh"))
+                   ("/usr/bin/env" ,(file-append (canonical-package coreutils)
+                                                 "/usr/bin/env"))))))
 
 ;;; base.scm ends here

From fb8fe1e8d98f94812b54537649ee3b08fd2d6dae Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 02:05:48 +0200
Subject: [PATCH 155/408] gnu: glib-networking: Don't use NAME in source URI.

* gnu/packages/gnome.scm (glib-networking)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index efe5206e53..9ee652c304 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2629,7 +2629,7 @@ library.")
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/glib-networking/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "glib-networking-" version ".tar.xz"))
               (sha256
                (base32
                 "0s006gs9nsq6mg31spqha1jffzmp6qjh10y27h0fxf1iw1ah5ymx"))

From 6b4bc27a47e032a86dace3e1efb3b038d9d43f35 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Mon, 9 Sep 2019 08:28:52 +0200
Subject: [PATCH 156/408] gnu: btrfs-progs: Update to 5.2.2.

* gnu/packages/linux.scm (btrfs-progs): Update to 5.2.2.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 270e2e5dcc..b98c6b984d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -3838,7 +3838,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "5.2.1")
+    (version "5.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -3846,7 +3846,7 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "0crjv3i20nyj2dagfw6q7byshscpn6j7wlqch3apkzzzk00lmb1n"))))
+                "1imivxjppi8zl27gn472pwpk8bg5dijkbyi340by31vhy7dj24w2"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of the binaries in "out"

From c10a27a2683afee30c4f0ea22c04ea3212dd3853 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Mon, 9 Sep 2019 08:33:36 +0200
Subject: [PATCH 157/408] gnu: retroarch: Update to 1.7.8.3.

* gnu/packages/emulators.scm (retroarch): Update to 1.7.8.3.
---
 gnu/packages/emulators.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9ff1cd4897..d3feda3f17 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1054,7 +1054,7 @@ emulation community.  It provides highly accurate emulation.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.7.8")
+    (version "1.7.8.3")
     (source
      (origin
        (method git-fetch)
@@ -1063,7 +1063,7 @@ emulation community.  It provides highly accurate emulation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0jwy5winrm87s6xa645fwa47x242r25m6i3rwf10x59448bd19r6"))))
+        (base32 "0lsfiljy6cin3xsxyh80d6y9a77h7h82fcm6k148cd8mndvyxcdn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests

From 3a341e822c8c73af9d8620858c66340119c5b800 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Mon, 9 Sep 2019 11:25:02 +0200
Subject: [PATCH 158/408] gnu: Add r-soupx.

* gnu/packages/cran.scm (r-soupx): New variable.
---
 gnu/packages/cran.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index b09d46678a..6ef2066429 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15335,3 +15335,33 @@ an approach to manipulate these two virtual data frames using the API defined
 in the @code{dplyr} package, and it also provides tidy interfaces to a lot of
 common graph algorithms.")
     (license license:expat)))
+
+(define-public r-soupx
+  (let ((commit "a3354be76fb52fd795be6ddf163cf056c05c6cb8")
+        (revision "1"))
+    (package
+      (name "r-soupx")
+      (version (git-version "0.3.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/constantAmateur/SoupX")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1zmlyzrl0fz6l79gn2wswid670p88mm3y292is89sa5p3h7frr99"))))
+      (properties `((upstream-name . "SoupX")))
+      (build-system r-build-system)
+      (propagated-inputs
+       `(("r-ggplot2" ,r-ggplot2)
+         ("r-matrix" ,r-matrix)
+         ("r-seurat" ,r-seurat)))
+      (home-page "https://github.com/constantAmateur/SoupX")
+      (synopsis "Single cell mRNA Soup eXterminator")
+      (description
+       "This package provides a package for quantifying, profiling and
+removing cell free mRNA contamination (the \"soup\") from droplet based single
+cell RNA-seq experiments.")
+      (license license:gpl2))))

From 0d7dfbced24908d3f29cec50fafc9ca133417659 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Mon, 9 Sep 2019 16:18:39 +0300
Subject: [PATCH 159/408] gnu: kdeconnect: Set upstream-name.

* gnu/packages/kde.scm (kdeconnect)[properties]: New field.
---
 gnu/packages/kde.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 68d2804dcc..bf5694557e 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -600,4 +600,5 @@ communicate with each other.  Here's a few things KDE Connect can do:
 @item Browse your phone from the desktop
 @item Control the desktop's volume from the phone
 @end enumerate")
+    (properties `((upstream-name . "kdeconnect-kde")))
     (license (list license:gpl2 license:gpl3)))) ; dual licensed

From 53223dc34017585b1616c57bcd59526e234353c0 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Mon, 9 Sep 2019 16:31:16 +0300
Subject: [PATCH 160/408] gnu: kdeconnect: Update to 1.3.5.

* gnu/packages/kde.scm (kdeconnect): Update to 1.3.5.
[source]: Update source uri.
---
 gnu/packages/kde.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index bf5694557e..f2261f7f98 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -529,16 +529,16 @@ different notification systems.")
 (define-public kdeconnect
   (package
     (name "kdeconnect")
-    (version "1.3.3")
+    (version "1.3.5")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kde/stable/kdeconnect/"
-                            version "/src/kdeconnect-kde-"
+                            version "/kdeconnect-kde-"
                             version ".tar.xz"))
         (sha256
          (base32
-          "1vac0mw1myrswr61adv7lgif0c4wzw5wnsj0sqxj6msp4l4pfgsg"))))
+          "02lr3xx5s2mgddac4n3lkgr7ppf1z5m6ajs90rjix0vs8a271kp5"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_TESTING=ON")

From d9e3a21318f166b54d0fd770e67bc7a49ad2c411 Mon Sep 17 00:00:00 2001
From: Robert Vollmert 
Date: Tue, 30 Jul 2019 11:36:33 +0200
Subject: [PATCH 161/408] gnu: Add scron.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/suckless.scm (scron): New package.

Signed-off-by: 宋文武 
---
 gnu/packages/suckless.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 427bc44598..f0055cc0cc 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -724,3 +724,31 @@ as -1, to be used instead of U+FFFD.
 It is a front end for ii-like chat programs.  It uses @code{tail -f} to get the
 chat output in the background.")
       (license license:isc))))
+
+(define-public scron
+  (package
+    (name "scron")
+    (version "0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://dl.2f30.org/releases/"
+                           name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "066fwa55kqcgfrsqgxh94sqbkxfsr691360xg4ljxr4i75d25s2a"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX=" %output))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)))) ; No configure script
+    (home-page "https://git.2f30.org/scron/")
+    (synopsis "Simple cron daemon")
+    (description
+     "Schedule commands to be run at specified dates and times.
+Single daemon and configuration file.  Log to stdout or syslog.  No mail
+support.")
+    (license license:expat)))

From 695ee52eb552f8143e476e1de0440d09c0edaf1d Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou 
Date: Mon, 9 Sep 2019 22:19:01 +0200
Subject: [PATCH 162/408] gnu: grammalecte: Update to 1.4.0.

* gnu/packages/dictionaries.scm (grammalecte): Update to 1.4.0.
[synopsis]: Remove spurious space.
---
 gnu/packages/dictionaries.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index ba22fecf20..37bd4aaf6b 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -218,7 +218,7 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
 (define-public grammalecte
   (package
     (name "grammalecte")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch/zipbomb)
@@ -226,10 +226,10 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
                            "Grammalecte-fr-v" version ".zip"))
        (sha256
         (base32
-         "1knysfdd1rx4vc5cmmnry4jsza0cdjy26fv505m854yfmq6zrckd"))))
+         "0k30b9kcczsadjjgwja03rkm11cpcc1xi6w8l6k0qfbjfpkhsh66"))))
     (build-system python-build-system)
     (home-page "https://grammalecte.net")
-    (synopsis  "French spelling and grammar checker")
+    (synopsis "French spelling and grammar checker")
     (description "Grammalecte is a grammar checker dedicated to the French
 language, derived from Lightproof.
 

From 86c3a506462f941a3590594bcf1e406e57012faa Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen 
Date: Sat, 7 Sep 2019 19:08:29 +0200
Subject: [PATCH 163/408] gnu: nyacc: Update to 0.99.0.

* gnu/packages/mes.scm (nyacc): Update to 0.99.0.
---
 gnu/packages/mes.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index ae887fa24d..ef0717cc29 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017,2018 Jan Nieuwenhuizen 
+;;; Copyright © 2017, 2018, 2019 Jan Nieuwenhuizen 
 ;;; Copyright © 2017, 2018 Efraim Flashner 
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
 ;;;
@@ -63,14 +63,14 @@ extensive examples, including parsers for the Javascript and C99 languages.")
 (define-public nyacc
   (package
     (inherit nyacc-0.86)
-    (version "0.94.0")
+    (version "0.99.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/nyacc/nyacc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "12qnzwm1n3j8z7hbr9hy2wka9a1aasm2rvnpnvdxkjcsbdzj8fn4"))
+                "0hl5qxx19i4x1r0839sxm19ziqq65g4hy97yik81cc2yb9yvgyv3"))
               (modules '((guix build utils)))
               (snippet
                '(begin

From 9aed1de3e90cd17f926b4c46df007c1869b10c3f Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen 
Date: Sat, 7 Sep 2019 19:23:43 +0200
Subject: [PATCH 164/408] gnu: mescc-tools: Update to 0.6.1.

* gnu/packages/mes.scm (mescc-tools): Update to 0.6.1.
---
 gnu/packages/mes.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index ef0717cc29..4e683b77b0 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -141,7 +141,7 @@ Guile.")
 (define-public mescc-tools
   (package
     (name "mescc-tools")
-    (version "0.5.2")
+    (version "0.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -151,11 +151,12 @@ Guile.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "01x7bhmgwyf6mc2g1hcvibhps98nllacqm4f0j5l51b1mbi18pc2"))))
+                "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n"))))
     (build-system gnu-build-system)
     (supported-systems '("i686-linux" "x86_64-linux"))
     (arguments
-     `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+     `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          "CC=gcc")
        #:test-target "test"
        #:phases (modify-phases %standard-phases
                   (delete 'configure))))

From 0b95b19b1d3b525993e79c0c33bdac6b2469c8d4 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen 
Date: Sat, 7 Sep 2019 19:09:48 +0200
Subject: [PATCH 165/408] gnu: mes: Update to 0.20.

* gnu/packages/mes.scm (mes): Update to 0.20.  Use nyacc-0.99.0.
---
 gnu/packages/mes.scm | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 4e683b77b0..49224a7ba5 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -94,22 +94,19 @@ extensive examples, including parsers for the Javascript and C99 languages.")
 (define-public mes
   (package
     (name "mes")
-    (version "0.19")
+    (version "0.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mes/"
                                   "mes-" version ".tar.gz"))
               (sha256
                (base32
-                "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0"))))
+                "04pajp8v31na34ls4730ig5f6miiplhdvkmsb9ls1b8bbmw2vb4n"))))
     (build-system gnu-build-system)
     (supported-systems '("i686-linux" "x86_64-linux"))
     (propagated-inputs
      `(("mescc-tools" ,mescc-tools)
-
-       ;; XXX: MesCC appears to enter an infinite loop (?) while building
-       ;; crt1.o when we switch to nyacc 0.94.
-       ("nyacc" ,nyacc-0.86)))
+       ("nyacc" ,nyacc)))
     (native-inputs
      `(("guile" ,guile-2.2)
        ,@(let ((target-system (or (%current-target-system)

From 0ada4e298762526b9de7fa96429e70c2ba792db6 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 01:51:11 +0200
Subject: [PATCH 166/408] gnu: libsecret: Don't use NAME in source URI.

* gnu/packages/gnome.scm (libsecret)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 9ee652c304..dbc3ed6793 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2813,7 +2813,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
               (uri (string-append
                     "mirror://gnome/sources/libsecret/"
                     (version-major+minor version) "/"
-                    name "-" version ".tar.xz"))
+                    "libsecret-" version ".tar.xz"))
               (sha256
                (base32
                 "058x64689k55wxfkdp4svhnwvv8jmqm7z5mrynybl38f4sfqiyiv"))))

From b243d2f7d3f76073dd3631c85b91e7e589a02774 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 01:50:58 +0200
Subject: [PATCH 167/408] gnu: libsecret: Update to 0.19.1.

* gnu/packages/gnome.scm (libsecret): Update to 0.19.1.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index dbc3ed6793..a572075ea0 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2807,7 +2807,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
 (define-public libsecret
   (package
     (name "libsecret")
-    (version "0.18.8")
+    (version "0.19.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2816,7 +2816,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
                     "libsecret-" version ".tar.xz"))
               (sha256
                (base32
-                "058x64689k55wxfkdp4svhnwvv8jmqm7z5mrynybl38f4sfqiyiv"))))
+                "0fhflcsr70b1pps2pcvqcbdhip2ny5am9nbm634f4sj5g40y30w5"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments

From 351c804217d2b00b78e0be72069221a08d1a0768 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 01:32:50 +0200
Subject: [PATCH 168/408] gnu: libmbim: Don't use NAME in source URI.

* gnu/packages/freedesktop.scm (libmbim)[source]: Hard-code NAME.
---
 gnu/packages/freedesktop.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 9cfdbca3fb..63c99b2345 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -924,8 +924,8 @@ interfaces, based on the useradd, usermod and userdel commands.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://www.freedesktop.org/software/" name "/"
-                    name "-" version ".tar.xz"))
+                    "https://www.freedesktop.org/software/libmbim/"
+                    "libmbim-" version ".tar.xz"))
               (sha256
                (base32
                 "0s4jsfsydp2vykv7lnimalp9i680aas1qcx7zdpjiic64b5g48vp"))))

From ddaefa2202a438df44e5ed32ca1137db02698e01 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Sun, 8 Sep 2019 01:32:39 +0200
Subject: [PATCH 169/408] gnu: libmbim: Update to 1.20.0.

* gnu/packages/freedesktop.scm (libmbim): Update to 1.20.0.
---
 gnu/packages/freedesktop.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 63c99b2345..401f54bb14 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -920,7 +920,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
 (define-public libmbim
   (package
     (name "libmbim")
-    (version "1.18.2")
+    (version "1.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -928,7 +928,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
                     "libmbim-" version ".tar.xz"))
               (sha256
                (base32
-                "0s4jsfsydp2vykv7lnimalp9i680aas1qcx7zdpjiic64b5g48vp"))))
+                "0rm8j4zh9gnb3yi324cnxy91gdimc1vg5gv1kxc2m5lymb3wdxrc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums

From 3053feab0a9e76a045dcffed58101cb4313ee39b Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Mon, 9 Sep 2019 17:20:21 +0200
Subject: [PATCH 170/408] gnu: zeromq: Update to 4.3.2.

* gnu/packages/networking.scm (zeromq): Update to 4.3.2.
[source]: Download GitHub release tarball.
---
 gnu/packages/networking.scm | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 9383e1a1d8..2f7f67583a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -275,14 +275,14 @@ transparently check connection attempts against an access control list.")
 (define-public zeromq
   (package
     (name "zeromq")
-    (version "4.0.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://download.zeromq.org/zeromq-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "00vvwhgcdr1lva2pavicvy92iad0hj8cf71n702hv6blw1kjj2z0"))))
+    (version "4.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/zeromq/libzmq/releases/"
+                           "download/v" version "/zeromq-" version ".tar.gz"))
+       (sha256
+        (base32 "0qzp80ky4y2k7k1ya09v9gkivvfbz2km813snrb8jhnn634bbmzb"))))
     (build-system gnu-build-system)
     (home-page "http://zeromq.org")
     (synopsis "Library for message-based applications")

From 5fbba846964f72e69cc26aacce9f35301ca13c35 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Mon, 9 Sep 2019 17:21:10 +0200
Subject: [PATCH 171/408] gnu: zeromq: Use HTTPS home page.

* gnu/packages/networking.scm (zeromq)[home-page]: Use HTTPS.
---
 gnu/packages/networking.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 2f7f67583a..a80b24a6cf 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -284,7 +284,7 @@ transparently check connection attempts against an access control list.")
        (sha256
         (base32 "0qzp80ky4y2k7k1ya09v9gkivvfbz2km813snrb8jhnn634bbmzb"))))
     (build-system gnu-build-system)
-    (home-page "http://zeromq.org")
+    (home-page "https://zeromq.org")
     (synopsis "Library for message-based applications")
     (description
      "The 0MQ lightweight messaging kernel is a library which extends the

From 36eef80d45ae754ba42a761ffc97e38cc7253bd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Mon, 9 Sep 2019 10:19:59 +0200
Subject: [PATCH 172/408] packages: 'package-field-location' really catches
 'system-error.

This had been wrong since forever (i.e., 2013).

* guix/packages.scm (package-field-location): Catch 'system-error, not
'system.
---
 guix/packages.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix/packages.scm b/guix/packages.scm
index 143417b861..b92ed0ab0c 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -351,7 +351,7 @@ object."
 
   (match (package-location package)
     (($  file line column)
-     (catch 'system
+     (catch 'system-error
        (lambda ()
          ;; In general we want to keep relative file names for modules.
          (with-fluids ((%file-port-name-canonicalization 'relative))

From 7c101c4c175b7abcb43279d1c66b41a91b9c64bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Mon, 9 Sep 2019 10:33:42 +0200
Subject: [PATCH 173/408] refresh: Distinguish between "no updater" and
 "failing updater".

Previously, something like "guix refresh texmacs" would report "no
updater".  Now, it reports that the 'gnu-ftp' updater failed to list
releases.

* guix/upstream.scm (lookup-updater): Use 'find' instead of 'any' to
return the .
(package-latest-release): Adjust accordingly.
* guix/scripts/refresh.scm (check-for-package-update): When
'package-latest-release' returns #f, distinguish between "no updater"
and "failing updater".
---
 guix/scripts/refresh.scm | 12 ++++++++++--
 guix/upstream.scm        | 12 ++++++------
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index 4591d0f308..daf6fcf947 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -368,8 +368,16 @@ the latest known version of ~a (~a)~%")
                      (upstream-source-version source)))))))
     (#f
      (when warn?
-       (warn-no-updater package)))))
-
+       ;; Distinguish between "no updater" and "failing updater."
+       (match (lookup-updater package updaters)
+         ((? upstream-updater? updater)
+          (warning (package-location package)
+                   (G_ "'~a' updater failed to determine available \
+releases for ~a~%")
+                   (upstream-updater-name updater)
+                   (package-name package)))
+         (#f
+          (warn-no-updater package)))))))
 
 
 ;;;
diff --git a/guix/upstream.scm b/guix/upstream.scm
index d4f9c5bb45..aa47dab4b4 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -245,18 +245,18 @@ correspond to the same version."
 (define (lookup-updater package updaters)
   "Return an updater among UPDATERS that matches PACKAGE, or #f if none of
 them matches."
-  (any (match-lambda
-         (($  name description pred latest)
-          (and (pred package) latest)))
-       updaters))
+  (find (match-lambda
+          (($  name description pred latest)
+           (pred package)))
+        updaters))
 
 (define (package-latest-release package updaters)
   "Return an upstream source to update PACKAGE, a  object, or #f if
 none of UPDATERS matches PACKAGE.  It is the caller's responsibility to ensure
 that the returned source is newer than the current one."
   (match (lookup-updater package updaters)
-    ((? procedure? latest-release)
-     (latest-release package))
+    ((? upstream-updater? updater)
+     ((upstream-updater-latest updater) package))
     (_ #f)))
 
 (define (package-latest-release* package updaters)

From fd63ecbe050bf8fa7c8ff0a003d56cce97b6ded1 Mon Sep 17 00:00:00 2001
From: Martin Becze 
Date: Mon, 9 Sep 2019 11:36:04 -0400
Subject: [PATCH 174/408] import: crate: Allow imports of a specific version.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* guix/import/crate.scm (crate->guix-package): Add optional 'version'
argument and honor it.
* guix/scripts/import/crate.scm (guix-import-crate): Assume the first
argument is a spec and destructure it with
'package-name->name+version'.  Pass both to 'crate->guix-package'.
* doc/guix.texi (Invoking guix import): Document it.

Co-authored-by: Ludovic Courtès 
---
 doc/guix.texi                 | 12 +++++++++++-
 guix/import/crate.scm         | 29 +++++++++++++++++++----------
 guix/scripts/import/crate.scm | 13 ++++++++++---
 3 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 9101aafda1..989b3d03bb 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -8912,7 +8912,17 @@ in Guix.
 @item crate
 @cindex crate
 Import metadata from the crates.io Rust package repository
-@uref{https://crates.io, crates.io}.
+@uref{https://crates.io, crates.io}, as in this example:
+
+@example
+guix import crate blake2-rfc
+@end example
+
+The crate importer also allows you to specify a version string:
+
+@example
+guix import crate constant-time-eq@@0.1.0
+@end example
 
 @item opam
 @cindex OPAM
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index f6057dbf8b..fd1974eae8 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 David Craven 
 ;;; Copyright © 2019 Ludovic Courtès 
+;;; Copyright © 2019 Martin Becze 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -181,9 +182,11 @@ and LICENSE."
   ;; This regexp matches that.
   (make-regexp "^(.*) OR (.*)$"))
 
-(define (crate->guix-package crate-name)
+(define* (crate->guix-package crate-name #:optional version)
   "Fetch the metadata for CRATE-NAME from crates.io, and return the
-`package' s-expression corresponding to that package, or #f on failure."
+`package' s-expression corresponding to that package, or #f on failure.
+When VERSION is specified, attempt to fetch that version; otherwise fetch the
+latest version of CRATE-NAME."
   (define (string->license string)
     (match (regexp-exec %dual-license-rx string)
       (#f (list (spdx-string->license string)))
@@ -196,12 +199,18 @@ and LICENSE."
   (define crate
     (lookup-crate crate-name))
 
-  (and crate
-       (let* ((version        (find (lambda (version)
-                                      (string=? (crate-version-number version)
-                                                (crate-latest-version crate)))
-                                    (crate-versions crate)))
-              (dependencies   (crate-version-dependencies version))
+  (define version-number
+    (or version
+        (crate-latest-version crate)))
+
+  (define version*
+    (find (lambda (version)
+            (string=? (crate-version-number version)
+                      version-number))
+          (crate-versions crate)))
+
+  (and crate version*
+       (let* ((dependencies   (crate-version-dependencies version*))
               (dep-crates     (filter normal-dependency? dependencies))
               (dev-dep-crates (remove normal-dependency? dependencies))
               (cargo-inputs   (sort (map crate-dependency-id dep-crates)
@@ -210,14 +219,14 @@ and LICENSE."
                (sort (map crate-dependency-id dev-dep-crates)
                      string-ci (crate-version-license version)
+                          #:license (and=> (crate-version-license version*)
                                            string->license)))))
 
 (define (guix-package->crate-name package)
diff --git a/guix/scripts/import/crate.scm b/guix/scripts/import/crate.scm
index cab9a4397b..7ae8638911 100644
--- a/guix/scripts/import/crate.scm
+++ b/guix/scripts/import/crate.scm
@@ -2,6 +2,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 David Thompson 
 ;;; Copyright © 2016 David Craven 
+;;; Copyright © 2019 Martin Becze 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -75,6 +76,7 @@ Import and convert the crate.io package for PACKAGE-NAME.\n"))
                   (alist-cons 'argument arg result))
                 %default-options))
 
+
   (let* ((opts (parse-options))
          (args (filter-map (match-lambda
                             (('argument . value)
@@ -82,11 +84,16 @@ Import and convert the crate.io package for PACKAGE-NAME.\n"))
                             (_ #f))
                            (reverse opts))))
     (match args
-      ((package-name)
-       (let ((sexp (crate->guix-package package-name)))
+      ((spec)
+       (define-values (name version)
+         (package-name->name+version spec))
+
+       (let ((sexp (crate->guix-package name version)))
          (unless sexp
            (leave (G_ "failed to download meta-data for package '~a'~%")
-                  package-name))
+                  (if version
+                      (string-append name "@" version)
+                      name)))
          sexp))
       (()
        (leave (G_ "too few arguments~%")))

From 3551f305c4eb54860016e04dbed48c521d40b376 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 16:10:49 +0200
Subject: [PATCH 175/408] gnu: mousepad: Update to 0.4.2.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (mousepad): Update to 0.4.2.
[arguments] Remove unnecessary --enable-gtk3 flag from #:configure-flags.
[inputs] Add xfconf.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index bf732c82be..bec1f67912 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -1071,7 +1071,7 @@ of data to either CD/DVD/BD.")
 (define-public mousepad
   (package
     (name "mousepad")
-    (version "0.4.1")
+    (version "0.4.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/apps/mousepad/"
@@ -1079,11 +1079,10 @@ of data to either CD/DVD/BD.")
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "12si6fvhp68wz4scr339c23jxqq5ywn5nf4w55jld5lxjadkg9rr"))))
+                "1myy7954r1a30dk7inwy7kwki7zvfbnnsc3a8swk72vzrbgjmh44"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--enable-gtk3"
-                           ;; Use the GSettings keyfile backend rather than
+     '(#:configure-flags '(;; Use the GSettings keyfile backend rather than
                            ;; DConf.
                            "--enable-keyfile-settings")
        #:phases
@@ -1103,7 +1102,8 @@ of data to either CD/DVD/BD.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gtk+" ,gtk+)
-       ("gtksourceview" ,gtksourceview-3)))
+       ("gtksourceview" ,gtksourceview-3)
+       ("xfconf" ,xfconf)))
     (home-page "https://git.xfce.org/apps/mousepad/")
     (synopsis "Simple text editor for Xfce")
     (description

From b82cf9644a40a3c5aa2e40fbb36f9aeca4be278a Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 16:11:01 +0200
Subject: [PATCH 176/408] gnu: ristretto: Update to 0.10.0.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (ristretto): Update to 0.10.0.
[inputs] Add gtk+. Remove gtk+-2.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index bec1f67912..fddfa74d66 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -910,7 +910,7 @@ inhibit interface which allows applications to prevent automatic sleep.")
 (define-public ristretto
   (package
     (name "ristretto")
-    (version "0.8.4")
+    (version "0.10.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/apps/ristretto/"
@@ -918,14 +918,14 @@ inhibit interface which allows applications to prevent automatic sleep.")
                                   "ristretto-" version ".tar.bz2"))
               (sha256
                (base32
-                "18nf01djwnbjc91bdlv3p0h6pwcq1kfnjgp6yaxhxv4kdi9f82rs"))))
+                "0sa75m1w6yvv4xvzrwqiif6vnqgi29hjrixrh87nxss58bbms8hn"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("desktop-file-utils" ,desktop-file-utils)
-       ("gtk+" ,gtk+-2)
+       ("gtk+" ,gtk+)
        ("libexif" ,libexif)
        ("libxfce4ui" ,libxfce4ui)
        ("librsvg" ,librsvg)

From c629b99e3b3a1db3adccaadd3d9771d7507868b1 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 17:04:50 +0200
Subject: [PATCH 177/408] gnu: orage: Fix build.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (orage)[arguments]: Add phase fixing build with libical3.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index fddfa74d66..5d59285c64 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -981,6 +981,14 @@ memory usage graphically, and it can display processes as a tree.")
               (sha256
                (base32
                 "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-build-with-libical3
+           (lambda* _
+             (substitute* "src/ical-code.c" ;; .is_utc not available in libical3
+               ((".*\\.is_utc.*$") ""))
+             #t)))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)

From c0c0e9b8369e9c9295058f58624979d11495f274 Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 2 Sep 2019 17:05:44 +0200
Subject: [PATCH 178/408] gnu: Add copyright header.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm: Add copyright header.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 5d59285c64..3a8b223b9c 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2017 ng0 
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2019 Pkill -9 
+;;; Copyright © 2019 L  p R n  d n 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;

From 44554d86dae9e595a9432b5a064f9aac63abf1fd Mon Sep 17 00:00:00 2001
From: Guillaume Le Vaillant 
Date: Wed, 4 Sep 2019 16:58:55 +0200
Subject: [PATCH 179/408] gnu: monero: Fix detection of readline library.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/finance.scm (monero)[arguments]: Define 'Readline_ROOT_DIR'
  in 'configure-flags'.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/finance.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 377cb3a405..5824a14c33 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -490,9 +490,12 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
        ("zeromq" ,zeromq)))
     (arguments
      `(#:out-of-source? #t
-       #:configure-flags '("-DARCH=default"
-                           "-DBUILD_TESTS=ON"
-                           "-DBUILD_GUI_DEPS=ON")
+       #:configure-flags
+       (list "-DARCH=default"
+             "-DBUILD_TESTS=ON"
+             "-DBUILD_GUI_DEPS=ON"
+             (string-append "-DReadline_ROOT_DIR="
+                            (assoc-ref %build-inputs "readline")))
        #:phases
        (modify-phases %standard-phases
          ;; tests/core_tests need a valid HOME

From b7a07bbd5ec3b97eab86c1ad574176715ae49652 Mon Sep 17 00:00:00 2001
From: Guillaume Le Vaillant 
Date: Wed, 4 Sep 2019 16:58:56 +0200
Subject: [PATCH 180/408] gnu: monero: Activate Trezor support.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/finance.scm (monero):
  [native-inputs]: Add python and protobuf.
  [inputs]: Add libusb and protobuf.
  [arguments]: Add delete-dead-links phase.
  (monero-gui)[inputs]: Add libusb and protobuf.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/finance.scm | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 5824a14c33..30ea797daf 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -473,16 +473,20 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
        ("git" ,git)
        ("graphviz" ,graphviz)
        ("pkg-config" ,pkg-config)
+       ("protobuf" ,protobuf)
+       ("python" ,python)
        ("qttools" ,qttools)))
     (inputs
      `(("boost" ,boost)
        ("cppzmq" ,cppzmq)
        ("expat" ,expat)
        ("hidapi" ,hidapi)
-       ("libunwind" ,libunwind)
        ("libsodium" ,libsodium)
+       ("libunwind" ,libunwind)
+       ("libusb" ,libusb)
        ("miniupnpc" ,miniupnpc)
        ("openssl" ,openssl)
+       ("protobuf" ,protobuf)
        ("rapidjson" ,rapidjson)
        ("readline" ,readline)
        ("unbound" ,unbound)
@@ -534,7 +538,13 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
                      ":")))
                (invoke "tests/unit_tests/unit_tests"
                        (string-append "--gtest_filter=-"
-                                      excluded-unit-tests))))))))
+                                      excluded-unit-tests)))))
+         (add-after 'install 'delete-dead-links
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (delete-file (string-append out "/lib/libprotobuf.so"))
+               (delete-file (string-append out "/lib/libusb-1.0.so"))
+               #t))))))
     (home-page "https://getmonero.org/")
     (synopsis "Command-line interface to the Monero currency")
     (description
@@ -563,9 +573,11 @@ the Monero command line client and daemon.")
     (inputs
      `(("boost" ,boost)
        ("hidapi" ,hidapi)
-       ("libunwind" ,libunwind)
        ("libsodium" ,libsodium)
+       ("libunwind" ,libunwind)
+       ("libusb" ,libusb)
        ("openssl" ,openssl)
+       ("protobuf" ,protobuf)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)

From deb083628f46d56272e8df46364926c50c6df48b Mon Sep 17 00:00:00 2001
From: Guillaume Le Vaillant 
Date: Wed, 4 Sep 2019 16:58:57 +0200
Subject: [PATCH 181/408] gnu: monero-gui: Update to 0.14.1.2.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/finance.scm (monero-gui): Update to 0.14.1.2.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/finance.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 30ea797daf..3fa0a4d331 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -555,7 +555,7 @@ the Monero command line client and daemon.")
 (define-public monero-gui
   (package
     (name "monero-gui")
-    (version "0.14.1.0")
+    (version "0.14.1.2")
     (source
      (origin
        (method git-fetch)
@@ -565,7 +565,7 @@ the Monero command line client and daemon.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0ilx47771faygf97wilm64xnqxgxa3b43q0g9v014npk0qj8pc31"))))
+         "1rm043r6y2mzy8pclnzbjjfxgps8pkfa2b92p66k8y8rdmgq6m1k"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)

From 36ed9b4678ee9366b4ec40501928ccbb149c6db7 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 00:39:35 +0200
Subject: [PATCH 182/408] gnu: aisleriot: Update to 3.22.9.

* gnu/packages/gnome.scm (aisleriot): Update to 3.22.9.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index a572075ea0..d40919693a 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3360,7 +3360,7 @@ playlists in a variety of formats.")
 (define-public aisleriot
   (package
     (name "aisleriot")
-    (version "3.22.8")
+    (version "3.22.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/aisleriot/"
@@ -3368,7 +3368,7 @@ playlists in a variety of formats.")
                                   "aisleriot-" version ".tar.xz"))
               (sha256
                (base32
-                "15pm39679ymxki07sb5nvhycz4z53zwbvascyp5wm4864bn98815"))))
+                "0yzdh9cw5cjjgvfh75bihl968czlgfmpmn1z0fdk88sgvpjgzwji"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags

From 9a5f35fe0597f35c4be39f7f5b0f479239051dcf Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 01:28:28 +0200
Subject: [PATCH 183/408] gnu: eclib: Update to 20190909.

* gnu/packages/algebra.scm (eclib): Update to 20190909.
---
 gnu/packages/algebra.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index fb9e78bf92..02b4d4ca21 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1435,7 +1435,7 @@ of M4RI from F_2 to F_{2^e}.")
 (define-public eclib
   (package
     (name "eclib")
-    (version "20190226")
+    (version "20190909")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1444,7 +1444,7 @@ of M4RI from F_2 to F_{2^e}.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1910np1xzyjzszay24xn4b81qhpsvhp5aix9vdpknplni2mq8kwb"))))
+                "1gw27lqc3f525n8qdcmr2nyn16y9g10z9f6dnmckyyxcdzvhq35n"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)

From ae1bab3e95506663de62b8868ba96682716d13d1 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 01:34:39 +0200
Subject: [PATCH 184/408] gnu: fakeroot: Update to 1.24.

* gnu/packages/linux.scm (fakeroot): Update to 1.24.
[source]: Adjust and use HTTPS.
---
 gnu/packages/linux.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b98c6b984d..92b9d2ece1 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -5862,15 +5862,15 @@ the superuser to make device nodes.")
 (define-public fakeroot
   (package
     (name "fakeroot")
-    (version "1.23")
+    (version "1.24")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://ftp.debian.org/debian/pool/main/f/"
-                                  "fakeroot/fakeroot_" version ".orig.tar.xz"))
+              (uri (string-append "https://deb.debian.org/debian/pool/main/f/"
+                                  "fakeroot/fakeroot_" version ".orig.tar.gz"))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1xpl0s2yjyjwlf832b6kbkaa5921liybaar13k7n45ckd9lxd700"))))
+                "1vb6f93hjyqnwx8dc8mm3dgma7axgqk8s7sdsjs8l2rpc0qmn11f"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases

From e9c784fba145b9e8d8942740bd750e50af7389bd Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 01:40:17 +0200
Subject: [PATCH 185/408] gnu: rclone: Update to 1.49.2.

* gnu/packages/sync.scm (rclone): Update to 1.49.2.
---
 gnu/packages/sync.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index e281f43554..0c840a1a1d 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -264,14 +264,14 @@ over the Internet in an HTTP and CDN friendly way;
 (define-public rclone
   (package
     (name "rclone")
-    (version "1.49.1")
+    (version "1.49.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/rclone/rclone/releases/download/"
                            "v" version "/rclone-v" version ".tar.gz"))
        (sha256
-        (base32 "1d0qvj7fn5bx3zqlf6hzn1922nrmy4x341n760m1b6h9az32mc5x"))))
+        (base32 "1q8lf85hg2havb1xsal75r19ck166rh19lffpd3i43zgblc6gs8j"))))
     ;; FIXME: Rclone bundles some libraries Guix already provides.  Need to
     ;; un-bundle them.
     (build-system go-build-system)

From 83aa6562173e06e8fafd4857a2e708feabfe56f8 Mon Sep 17 00:00:00 2001
From: Timothy Sample 
Date: Mon, 9 Sep 2019 21:12:41 -0400
Subject: [PATCH 186/408] gnu: ghc@8.6: Add missing 'native-search-paths'.

Fixes .

* gnu/packages/haskell.scm (ghc-8.6)[native-search-paths]: Set search
paths explicitly instead of inheriting them.
---
 gnu/packages/haskell.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 4d16cd656f..d86daa52c5 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -596,7 +596,13 @@ interactive environment for the functional language Haskell.")
                  (("^test\\('T8108'") "# guix skipped: test('T8108'"))
                (substitute* "libraries/unix/tests/libposix/all.T"
                  (("^test\\('posix010'") "# guix skipped: test('posix010'"))
-               #t))))))))
+               #t))))))
+    (native-search-paths (list (search-path-specification
+                                (variable "GHC_PACKAGE_PATH")
+                                (files (list
+                                        (string-append "lib/ghc-" version)))
+                                (file-pattern ".*\\.conf\\.d$")
+                                (file-type 'directory))))))
 
 (define-public ghc-8 ghc-8.4)
 

From da1027a70508ea96134f5ef89d9dd390679255f0 Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Tue, 27 Aug 2019 18:20:16 +0200
Subject: [PATCH 187/408] guix: Rename and move sans-extension to
 tarball-sans-extension.

* guix/gnu-maintenance.scm (sans-extension): Move and rename to ...
* guix/utils.scm (tarball-sans-extension): ... here.
---
 guix/gnu-maintenance.scm | 26 ++++++++++++--------------
 guix/utils.scm           |  7 +++++++
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index d63d44f629..8fce956c60 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -230,12 +230,6 @@ network to check in GNU's database."
             (or (assoc-ref (package-properties package) 'ftp-directory)
                 (string-append "/gnu/" name)))))
 
-(define (sans-extension tarball)
-  "Return TARBALL without its .tar.* or .zip extension."
-  (let ((end (or (string-contains tarball ".tar")
-                 (string-contains tarball ".zip"))))
-    (substring tarball 0 end)))
-
 (define %tarball-rx
   ;; The .zip extensions is notably used for freefont-ttf.
   ;; The "-src" pattern is for "TeXmacs-1.0.7.9-src.tar.gz".
@@ -261,14 +255,15 @@ true."
                                           (string-append project
                                                          "-src")))))))
        (not (regexp-exec %alpha-tarball-rx file))
-       (let ((s (sans-extension file)))
+       (let ((s (tarball-sans-extension file)))
          (regexp-exec %package-name-rx s))))
 
 (define (tarball->version tarball)
   "Return the version TARBALL corresponds to.  TARBALL is a file name like
 \"coreutils-8.23.tar.xz\"."
   (let-values (((name version)
-                (gnu-package-name->name+version (sans-extension tarball))))
+                (gnu-package-name->name+version
+                 (tarball-sans-extension tarball))))
     version))
 
 (define* (releases project
@@ -492,8 +487,9 @@ return the corresponding signature URL, or #f it signatures are unavailable."
       (and (string=? url (basename url))          ;relative reference?
            (release-file? package url)
            (let-values (((name version)
-                         (package-name->name+version (sans-extension url)
-                                                     #\-)))
+                         (package-name->name+version
+                          (tarball-sans-extension url)
+                          #\-)))
              (upstream-source
               (package name)
               (version version)
@@ -565,14 +561,16 @@ list available from %GNU-FILE-LIST-URI over HTTP(S)."
                                     (release-file? name (basename file))))
                              files)))
       (match (sort relevant (lambda (file1 file2)
-                              (version>? (sans-extension (basename file1))
-                                         (sans-extension (basename file2)))))
+                              (version>? (tarball-sans-extension
+                                          (basename file1))
+                                         (tarball-sans-extension
+                                          (basename file2)))))
         ((and tarballs (reference _ ...))
          (let* ((version  (tarball->version reference))
                 (tarballs (filter (lambda (file)
-                                    (string=? (sans-extension
+                                    (string=? (tarball-sans-extension
                                                (basename file))
-                                              (sans-extension
+                                              (tarball-sans-extension
                                                (basename reference))))
                                   tarballs)))
            (upstream-source
diff --git a/guix/utils.scm b/guix/utils.scm
index f480c3291f..1f99c5b3f5 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -91,6 +91,7 @@
             arguments-from-environment-variable
             file-extension
             file-sans-extension
+            tarball-sans-extension
             compressed-file?
             switch-symlinks
             call-with-temporary-output-file
@@ -578,6 +579,12 @@ minor version numbers from version-string."
         (substring file 0 dot)
         file)))
 
+(define (tarball-sans-extension tarball)
+  "Return TARBALL without its .tar.* or .zip extension."
+  (let ((end (or (string-contains tarball ".tar")
+                 (string-contains tarball ".zip"))))
+    (substring tarball 0 end)))
+
 (define (compressed-file? file)
   "Return true if FILE denotes a compressed file."
   (->bool (member (file-extension file)

From 33f53947aa6d50ef7fe08c0ef9e32cdb9e77db89 Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Sun, 4 Aug 2019 11:30:32 +0200
Subject: [PATCH 188/408] gnu-maintenance: KDE updater no longer relies on FTP
 access.

Fetch the ls-lR.bz2 file list for download.kde.org, convert it into a list of
file paths and cache the list.

* guix/gnu-maintenance.scm (%kde-file-list-uri): New variable.
  (download.kde.org-files): New procedure.
  (latest-kde-release): Change to use DOWNLOAD.KDE.ORG-FILES and search
  for files in this list.
---
 guix/gnu-maintenance.scm | 100 +++++++++++++++++++++++++++++++++++----
 1 file changed, 92 insertions(+), 8 deletions(-)

diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index 8fce956c60..9ce06508a3 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès 
 ;;; Copyright © 2012, 2013 Nikita Karetnikov 
+;;; Copyright © 2019 Hartmut Goebel 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
   #:use-module (sxml simple)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 rdelim)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
@@ -613,15 +615,97 @@ releases are on gnu.org."
 (define gnu-hosted?
   (url-prefix-predicate "mirror://gnu/"))
 
+(define %kde-file-list-uri
+  ;; URI of the file list (ls -lR format) for download.kde.org.
+  (string->uri "https://download.kde.org/ls-lR.bz2"))
+
+(define (download.kde.org-files)
+  ;;"Return the list of files available at download.kde.org."
+
+  (define (ls-lR-line->filename path line)
+    ;; remove mode, blocks, user, group, size, date, time and one space
+    (regexp-substitute
+     #f (string-match "^(\\S+\\s+){6}\\S+\\s" line) path 'post))
+
+  (define (canonicalize path)
+    (let* ((path (if (string-prefix? "/srv/archives/ftp/" path)
+                     (string-drop path (string-length "/srv/archives/ftp"))
+                     path))
+           (path (if (string-suffix? ":" path)
+                     (string-drop-right path 1)
+                     path))
+           (path (if (not (string-suffix? "/" path))
+                     (string-append path "/")
+                     path)))
+      path))
+
+  (define (write-cache input cache)
+    "Read bzipped ls-lR from INPUT, and write it as a list of file paths to
+CACHE."
+
+    (call-with-decompressed-port 'bzip2 input
+      (lambda (input)
+        (let loop_dirs ((files '()))
+          (let ((path (read-line input)))
+            (if
+             (or (eof-object? path) (string= path ""))
+             (write (reverse files) cache))
+            (let loop_entries ((path (canonicalize path))
+                               (files files))
+              (let ((line (read-line input)))
+                (cond
+                 ((eof-object? line)
+                  (write (reverse files) cache))
+                 ((string-prefix? "-" line)
+                  (loop_entries path
+                                (cons (ls-lR-line->filename path line) files)))
+                 ((not (string= line ""))
+                  (loop_entries path files))
+                 (#t (loop_dirs files))))))))))
+
+  (define (cache-miss uri)
+    (format (current-error-port) "fetching ~a...~%" (uri->string uri)))
+
+  (let* ((port (http-fetch/cached %kde-file-list-uri
+                                  #:ttl 3600
+                                  #:write-cache write-cache
+                                  #:cache-miss cache-miss))
+         (files (read port)))
+    (close-port port)
+    files))
+
 (define (latest-kde-release package)
-  "Return the latest release of PACKAGE, the name of an KDE.org package."
-  (let ((uri (string->uri (origin-uri (package-source package)))))
-    (false-if-ftp-error
-     (latest-ftp-release
-      (package-upstream-name package)
-      #:server "ftp.mirrorservice.org"
-      #:directory (string-append "/sites/ftp.kde.org/pub/kde/"
-                                 (dirname (dirname (uri-path uri))))))))
+  "Return the latest release of PACKAGE, a KDE package, or #f if it could not
+be determined."
+  (let* ((uri      (string->uri (origin-uri (package-source package))))
+         (directory  (dirname (dirname (uri-path uri))))
+         (name     (package-upstream-name package))
+         (files    (download.kde.org-files))
+         (relevant (filter (lambda (file)
+                             (and (string-prefix? directory file)
+                                  (release-file? name (basename file))))
+                           files)))
+    (match (sort relevant (lambda (file1 file2)
+                            (version>? (tarball-sans-extension
+                                        (basename file1))
+                                       (tarball-sans-extension
+                                        (basename file2)))))
+           ((and tarballs (reference _ ...))
+            (let* ((version  (tarball->version reference))
+                   (tarballs (filter (lambda (file)
+                                       (string=? (tarball-sans-extension
+                                                  (basename file))
+                                                 (tarball-sans-extension
+                                                  (basename reference))))
+                                     tarballs)))
+              (upstream-source
+               (package name)
+               (version version)
+               (urls (map (lambda (file)
+                            (string-append "mirror://kde/" file))
+                          tarballs)))))
+           (()
+            #f))))
 
 (define (latest-xorg-release package)
   "Return the latest release of PACKAGE, the name of an X.org package."

From d1dce0c3638a577a2ab713d2551f4aabe67d031c Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Tue, 3 Sep 2019 14:16:03 +0200
Subject: [PATCH 189/408] upstream: Move KDE updater into a separate module.

As it was done for (guix import gnome).

* guix/import/kde.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/gnu-maintenance.scm (%kde-updater) (%kde-file-list-uri)
  (download.kde.org-files) (latest-kde-release): Remove.
---
 Makefile.am              |   1 +
 guix/gnu-maintenance.scm | 102 -------------------------
 guix/import/kde.scm      | 158 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 159 insertions(+), 102 deletions(-)
 create mode 100644 guix/import/kde.scm

diff --git a/Makefile.am b/Makefile.am
index 683b2242f0..7e3b5c1070 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -221,6 +221,7 @@ MODULES =					\
   guix/import/gnu.scm				\
   guix/import/hackage.scm			\
   guix/import/json.scm				\
+  guix/import/kde.scm				\
   guix/import/launchpad.scm   			\
   guix/import/opam.scm				\
   guix/import/print.scm				\
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index 9ce06508a3..ef067704ad 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -1,7 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès 
 ;;; Copyright © 2012, 2013 Nikita Karetnikov 
-;;; Copyright © 2019 Hartmut Goebel 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,7 +24,6 @@
   #:use-module (sxml simple)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
-  #:use-module (ice-9 rdelim)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
@@ -64,7 +62,6 @@
 
             %gnu-updater
             %gnu-ftp-updater
-            %kde-updater
             %xorg-updater
             %kernel.org-updater))
 
@@ -615,98 +612,6 @@ releases are on gnu.org."
 (define gnu-hosted?
   (url-prefix-predicate "mirror://gnu/"))
 
-(define %kde-file-list-uri
-  ;; URI of the file list (ls -lR format) for download.kde.org.
-  (string->uri "https://download.kde.org/ls-lR.bz2"))
-
-(define (download.kde.org-files)
-  ;;"Return the list of files available at download.kde.org."
-
-  (define (ls-lR-line->filename path line)
-    ;; remove mode, blocks, user, group, size, date, time and one space
-    (regexp-substitute
-     #f (string-match "^(\\S+\\s+){6}\\S+\\s" line) path 'post))
-
-  (define (canonicalize path)
-    (let* ((path (if (string-prefix? "/srv/archives/ftp/" path)
-                     (string-drop path (string-length "/srv/archives/ftp"))
-                     path))
-           (path (if (string-suffix? ":" path)
-                     (string-drop-right path 1)
-                     path))
-           (path (if (not (string-suffix? "/" path))
-                     (string-append path "/")
-                     path)))
-      path))
-
-  (define (write-cache input cache)
-    "Read bzipped ls-lR from INPUT, and write it as a list of file paths to
-CACHE."
-
-    (call-with-decompressed-port 'bzip2 input
-      (lambda (input)
-        (let loop_dirs ((files '()))
-          (let ((path (read-line input)))
-            (if
-             (or (eof-object? path) (string= path ""))
-             (write (reverse files) cache))
-            (let loop_entries ((path (canonicalize path))
-                               (files files))
-              (let ((line (read-line input)))
-                (cond
-                 ((eof-object? line)
-                  (write (reverse files) cache))
-                 ((string-prefix? "-" line)
-                  (loop_entries path
-                                (cons (ls-lR-line->filename path line) files)))
-                 ((not (string= line ""))
-                  (loop_entries path files))
-                 (#t (loop_dirs files))))))))))
-
-  (define (cache-miss uri)
-    (format (current-error-port) "fetching ~a...~%" (uri->string uri)))
-
-  (let* ((port (http-fetch/cached %kde-file-list-uri
-                                  #:ttl 3600
-                                  #:write-cache write-cache
-                                  #:cache-miss cache-miss))
-         (files (read port)))
-    (close-port port)
-    files))
-
-(define (latest-kde-release package)
-  "Return the latest release of PACKAGE, a KDE package, or #f if it could not
-be determined."
-  (let* ((uri      (string->uri (origin-uri (package-source package))))
-         (directory  (dirname (dirname (uri-path uri))))
-         (name     (package-upstream-name package))
-         (files    (download.kde.org-files))
-         (relevant (filter (lambda (file)
-                             (and (string-prefix? directory file)
-                                  (release-file? name (basename file))))
-                           files)))
-    (match (sort relevant (lambda (file1 file2)
-                            (version>? (tarball-sans-extension
-                                        (basename file1))
-                                       (tarball-sans-extension
-                                        (basename file2)))))
-           ((and tarballs (reference _ ...))
-            (let* ((version  (tarball->version reference))
-                   (tarballs (filter (lambda (file)
-                                       (string=? (tarball-sans-extension
-                                                  (basename file))
-                                                 (tarball-sans-extension
-                                                  (basename reference))))
-                                     tarballs)))
-              (upstream-source
-               (package name)
-               (version version)
-               (urls (map (lambda (file)
-                            (string-append "mirror://kde/" file))
-                          tarballs)))))
-           (()
-            #f))))
-
 (define (latest-xorg-release package)
   "Return the latest release of PACKAGE, the name of an X.org package."
   (let ((uri (string->uri (origin-uri (package-source package)))))
@@ -754,13 +659,6 @@ be determined."
                 (pure-gnu-package? package))))
    (latest latest-release*)))
 
-(define %kde-updater
-  (upstream-updater
-    (name 'kde)
-    (description "Updater for KDE packages")
-    (pred (url-prefix-predicate "mirror://kde/"))
-    (latest latest-kde-release)))
-
 (define %xorg-updater
   (upstream-updater
    (name 'xorg)
diff --git a/guix/import/kde.scm b/guix/import/kde.scm
new file mode 100644
index 0000000000..927ecc8263
--- /dev/null
+++ b/guix/import/kde.scm
@@ -0,0 +1,158 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 David Craven 
+;;; Copyright © 2016, 2017 Ludovic Courtès 
+;;; Copyright © 2019 Hartmut Goebel 
+;;;
+;;; 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 .
+
+(define-module (guix import kde)
+  #:use-module (guix http-client)
+  #:use-module (guix memoization)
+  #:use-module (guix gnu-maintenance)
+  #:use-module (guix packages)
+  #:use-module (guix upstream)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 rdelim)
+  #:use-module (ice-9 regex)
+  #:use-module (srfi srfi-11)
+  #:use-module (web uri)
+
+  #:export (%kde-updater))
+
+;;; Commentary:
+;;;
+;;; This package provides not an actual importer but simply an updater for
+;;; KDE packages.  It grabs available files from the 'ls-lR.bz2' file
+;;; available on download.kde.org.
+;;;
+;;; Code:
+
+(define (tarball->version tarball)
+  "Return the version TARBALL corresponds to.  TARBALL is a file name like
+\"coreutils-8.23.tar.xz\"."
+  (let-values (((name version)
+                (gnu-package-name->name+version
+                 (tarball-sans-extension tarball))))
+    version))
+
+(define %kde-file-list-uri
+  ;; URI of the file list (ls -lR format) for download.kde.org.
+  (string->uri "https://download.kde.org/ls-lR.bz2"))
+
+(define (download.kde.org-files)
+  ;;"Return the list of files available at download.kde.org."
+
+    (define (ls-lR-line->filename path line)
+      ;; Remove mode, blocks, user, group, size, date, time and one space,
+      ;; then prepend PATH
+      (regexp-substitute
+       #f (string-match "^(\\S+\\s+){6}\\S+\\s" line) path 'post))
+
+    (define (canonicalize path)
+      (let* ((path (if (string-prefix? "/srv/archives/ftp/" path)
+                       (string-drop path (string-length "/srv/archives/ftp"))
+                       path))
+             (path (if (string-suffix? ":" path)
+                       (string-drop-right path 1)
+                       path))
+             (path (if (not (string-suffix? "/" path))
+                       (string-append path "/")
+                       path)))
+        path))
+
+    (define (write-cache input cache)
+      "Read bzipped ls-lR from INPUT, and write it as a list of file paths to
+CACHE."
+      (call-with-decompressed-port 'bzip2 input
+        (lambda (input)
+          (let loop_dirs ((files '()))
+            ;; process a new directory block
+            (let ((path (read-line input)))
+              (if
+               (or (eof-object? path) (string= path ""))
+               (write (reverse files) cache)
+               (let loop_entries ((path (canonicalize path))
+                                  (files files))
+                 ;; process entries within the directory block
+                 (let ((line (read-line input)))
+                   (cond
+                    ((eof-object? line)
+                     (write (reverse files) cache))
+                    ((string-prefix? "-" line)
+                     ;; this is a file entry: prepend to FILES, then re-enter
+                     ;; the loop for remaining entries
+                     (loop_entries path
+                                   (cons (ls-lR-line->filename path line) files)
+                                   ))
+                    ((not (string= line ""))
+                     ;; this is a non-file entry: ignore it, just re-enter the
+                     ;; loop for remaining entries
+                     (loop_entries path files))
+                    ;; empty line: directory block end, re-enter the outer
+                    ;; loop for the next block
+                    (#t (loop_dirs files)))))))))))
+
+  (define (cache-miss uri)
+    (format (current-error-port) "fetching ~a...~%" (uri->string uri)))
+
+  (let* ((port (http-fetch/cached %kde-file-list-uri
+                                  #:ttl 3600
+                                  #:write-cache write-cache
+                                  #:cache-miss cache-miss))
+         (files (read port)))
+    (close-port port)
+    files))
+
+(define (latest-kde-release package)
+  "Return the latest release of PACKAGE, a KDE package, or #f if it could
+not be determined."
+  (let* ((uri      (string->uri (origin-uri (package-source package))))
+         (directory  (dirname (dirname (uri-path uri))))
+         (name     (package-upstream-name package))
+         (files    (download.kde.org-files))
+         (relevant (filter (lambda (file)
+                             (and (string-prefix? directory file)
+                                  (release-file? name (basename file))))
+                           files)))
+    (match (sort relevant (lambda (file1 file2)
+                            (version>? (tarball-sans-extension
+                                        (basename file1))
+                                       (tarball-sans-extension
+                                        (basename file2)))))
+           ((and tarballs (reference _ ...))
+            (let* ((version  (tarball->version reference))
+                   (tarballs (filter (lambda (file)
+                                       (string=? (tarball-sans-extension
+                                                  (basename file))
+                                                 (tarball-sans-extension
+                                                  (basename reference))))
+                                     tarballs)))
+              (upstream-source
+               (package name)
+               (version version)
+               (urls (map (lambda (file)
+                            (string-append "mirror://kde/" file))
+                          tarballs)))))
+           (()
+            #f))))
+
+(define %kde-updater
+  (upstream-updater
+    (name 'kde)
+    (description "Updater for KDE packages")
+    (pred (url-prefix-predicate "mirror://kde/"))
+    (latest latest-kde-release)))

From 4eb69bf0d33810886ee118f38989cef696e4c868 Mon Sep 17 00:00:00 2001
From: Hartmut Goebel 
Date: Sun, 4 Aug 2019 11:32:39 +0200
Subject: [PATCH 190/408] import: KDE updater finds packages even in
 sub-directory.

Fixes  and
finally fixes .

Formerly packages living in a path like
/stable/frameworks/5.60/portingAids/kross-5.60.0.tar.xz
have not been found.

* guix/import/kde.scm (uri->kde-path-pattern): New procedure.
  (latest-kde-release): Use pattern to search for file.
---
 guix/import/kde.scm | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/guix/import/kde.scm b/guix/import/kde.scm
index 927ecc8263..6873418d62 100644
--- a/guix/import/kde.scm
+++ b/guix/import/kde.scm
@@ -117,15 +117,47 @@ CACHE."
     (close-port port)
     files))
 
+(define (uri->kde-path-pattern uri)
+  "Build a regexp from the package's URI suitable for matching the package
+path version-agnostic.
+
+Example:
+Input:
+   mirror://kde//stable/frameworks/5.55/portingAids/kross-5.55.0.zip
+Output:
+   //stable/frameworks/[^/]+/portingAids/
+"
+
+  (define version-regexp
+    ;; regexp for matching versions as used in the ld-lR file
+    (make-regexp
+     (string-join '("^([0-9]+\\.)+[0-9]+-?"   ;; 5.12.90, 4.2.0-preview
+                    "^[0-9]+$"                ;; 20031002
+                    ".*-([0-9]+\\.)+[0-9]+$") ;; kdepim-4.6.1
+                    "|")))
+
+  (define (version->pattern part)
+    ;; If a path element might be a version, replace it by a catch-all part
+    (if (regexp-exec version-regexp part)
+        "[^/]+"
+        part))
+
+  (let* ((path (uri-path uri))
+         (directory-parts (string-split (dirname path) #\/)))
+    (make-regexp
+     (string-append
+      (string-join (map version->pattern directory-parts) "/")
+      "/"))))
+
 (define (latest-kde-release package)
   "Return the latest release of PACKAGE, a KDE package, or #f if it could
 not be determined."
   (let* ((uri      (string->uri (origin-uri (package-source package))))
-         (directory  (dirname (dirname (uri-path uri))))
+         (path-rx  (uri->kde-path-pattern uri))
          (name     (package-upstream-name package))
          (files    (download.kde.org-files))
          (relevant (filter (lambda (file)
-                             (and (string-prefix? directory file)
+                             (and (regexp-exec path-rx file)
                                   (release-file? name (basename file))))
                            files)))
     (match (sort relevant (lambda (file1 file2)

From 07c0110eac24f2e1dc292e143d93f681244838a3 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 15:26:38 +0200
Subject: [PATCH 191/408] gnu: weechat: Update to 2.6.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/irc.scm (weechat): Update to 2.6.
[source]: Remove obsolete patch.
[inputs]: Replace python-2 with python(@3).
[arguments]: Remove ‘wrap’ phase.
* gnu/packages/patches/weechat-python.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                              |  1 -
 gnu/packages/irc.scm                      | 20 ++++--------
 gnu/packages/patches/weechat-python.patch | 40 -----------------------
 3 files changed, 7 insertions(+), 54 deletions(-)
 delete mode 100644 gnu/packages/patches/weechat-python.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b7a5ef825b..d76438ca63 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1398,7 +1398,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/wavpack-CVE-2018-6767.patch		\
   %D%/packages/patches/wavpack-CVE-2018-7253.patch		\
   %D%/packages/patches/wavpack-CVE-2018-7254.patch		\
-  %D%/packages/patches/weechat-python.patch			\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
   %D%/packages/patches/wicd-urwid-1.3.patch			\
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 622f1253d8..e3418c1fec 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner 
 ;;; Copyright © 2016 ng0 
 ;;; Copyright © 2017 Marius Bakke 
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice 
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -166,15 +166,14 @@ SILC and ICB protocols via plugins.")
 (define-public weechat
   (package
     (name "weechat")
-    (version "2.5")
+    (version "2.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://weechat.org/files/src/weechat-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "09sc5lf7z70x3iw87q4zh8rbyngsw89pwnzs5jk195zzqdspgj2j"))
-              (patches (search-patches "weechat-python.patch"))))
+                "0j2iflnfvv31q2l9r67r8aj3ipggqfm2r2dpy7pvdpxgwwq337ps"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -187,9 +186,11 @@ SILC and ICB protocols via plugins.")
               ("aspell" ,aspell)
               ("curl" ,curl)
               ("gnutls" ,gnutls)
+
+              ;; Scripting language plug-ins.
               ("guile" ,guile-2.0)
               ("lua" ,lua-5.1)
-              ("python" ,python-2)
+              ("python" ,python)
               ("perl" ,perl)
               ("tcl" ,tcl)))
     (arguments
@@ -214,14 +215,7 @@ SILC and ICB protocols via plugins.")
              (substitute* "tests/scripts/test-scripts.cpp"
                ((".*\\{ \"(javascript|php|ruby)\", " all)
                 (string-append "// SKIP" all)))
-             #t))
-         (add-after 'install 'wrap
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (py2 (assoc-ref inputs "python")))
-               (wrap-program (string-append out "/bin/weechat")
-                 `("PATH" ":" prefix (,(string-append py2 "/bin"))))
-               #t))))))
+             #t)))))
     (synopsis "Extensible chat client")
     (description "WeeChat (Wee Enhanced Environment for Chat) is an
 @dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast.
diff --git a/gnu/packages/patches/weechat-python.patch b/gnu/packages/patches/weechat-python.patch
deleted file mode 100644
index 8182636ecb..0000000000
--- a/gnu/packages/patches/weechat-python.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Get Python LDFLAGS from 'pkg-config'.
-
-The other approach is more complex and gets it wrong: it returns
-"-L/path/to/python/lib/python-2.7.10/lib/python2.7/config -lpython -lwhatever";
-since that config/ sub-directory contains libpython2.7.a, we end up
-statically linking Python in Weechat's python.so, which we do not want.
-
---- weechat-1.3/configure.ac	2015-08-16 08:27:07.000000000 +0200
-+++ weechat-1.3/configure.ac	2015-11-29 18:18:52.975197048 +0100
-@@ -535,29 +535,7 @@ if test "x$enable_python" = "xyes" ; the
-             if test -r "$PYTHON_INCLUDE/Python.h"; then
-                 PYTHON_CFLAGS="-I$PYTHON_INCLUDE"
-                 AC_MSG_RESULT(found)
--                PYTHON_LIB=`$PYTHON -c "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_config_var('LIBPL'))"`
--                PYTHON_LFLAGS="-lpython$PYTHON_VERSION "`$PYTHON -c "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_config_var('LIBS')+' '+distutils.sysconfig.get_config_var('SYSLIBS')+' '+distutils.sysconfig.get_config_var('LINKFORSHARED'))"`
--                AC_MSG_CHECKING(for Python library)
--                if test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.so"; then
--                   PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS"
--                   AC_MSG_RESULT(found)
--                elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.a"; then
--                   PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS"
--                   AC_MSG_RESULT(found)
--                elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.dll.a"; then
--                   PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS"
--                   AC_MSG_RESULT(found)
--                elif test -r "$PYTHON_SYSPREFIX/lib/libpython$PYTHON_VERSION.so"; then
--                   PYTHON_LFLAGS="-L$PYTHON_SYSPREFIX/lib/ $PYTHON_LFLAGS"
--                   AC_MSG_RESULT(found)
--                else
--                    AC_MSG_WARN([
--*** Python library couldn't be found on your system.
--*** Try to install it with your software package manager.
--*** WeeChat will be built without Python support.])
--                    enable_python="no"
--                    not_found="$not_found python"
--                fi
-+                PYTHON_LFLAGS=`pkg-config python2 --libs`
-             else
-                 AC_MSG_WARN([
- *** Python header files couldn't be found on your system.

From 97e036cac1e2210924b67f4a647625171552e4b3 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 19:38:40 +0200
Subject: [PATCH 192/408] gnu: i3blocks: Update to 1.5.

* gnu/packages/wm.scm (i3blocks): Update to 1.5.
[source]: Use git tag.
[arguments]: Remove entirely.
---
 gnu/packages/wm.scm | 54 ++++++++++++++++++---------------------------
 1 file changed, 21 insertions(+), 33 deletions(-)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index c62ccf4990..c4b15cc755 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -271,42 +271,30 @@ Despite the name it should work with any X11 window manager.")
     (license license:bsd-3)))
 
 (define-public i3blocks
-  (let ((commit "ec050e79ad8489a6f8deb37d4c20ab10729c25c3")
-        (revision "2"))
-    (package
-      (name "i3blocks")
-      (version (string-append "1.4-" revision "."
-                              (string-take commit 7)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/vivien/i3blocks.git")
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "1fx4230lmqa5rpzph68dwnpcjfaaqv5gfkradcr85hd1z8d1qp1b"))
-                (file-name (git-file-name name version))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
-         #:phases (modify-phases %standard-phases
-                    (add-after 'install 'install-doc
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        (let* ((out (assoc-ref outputs "out"))
-                               (man1 (string-append out "/share/man/man1")))
-                          (install-file "docs/i3blocks.1" man1)
-                          #t))))))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)))
-      (home-page "https://github.com/vivien/i3blocks")
-      (synopsis "Minimalist scheduler for status bar scripts")
-      (description "i3blocks executes your command lines and generates a
+  (package
+    (name "i3blocks")
+    (version "1.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vivien/i3blocks.git")
+                    (commit version)))
+              (sha256
+               (base32
+                "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/vivien/i3blocks")
+    (synopsis "Minimalist scheduler for status bar scripts")
+    (description "i3blocks executes your command lines and generates a
 status line from their output.  The generated line is meant to be displayed by
 the i3 window manager through its i3bar component, as an alternative to
 i3status.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public perl-anyevent-i3
   (package

From db05b572056128191c457143bdafa7aaf22ece9d Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 21:38:55 +0200
Subject: [PATCH 193/408] gnu: youtube-dl: Update to 2019.09.01.

* gnu/packages/video.scm (youtube-dl): Update to 2019.09.01.
---
 gnu/packages/video.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d5dfb1383e..66bc55e33e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1492,7 +1492,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.08.13")
+    (version "2019.09.01")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1500,7 +1500,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0b94hrhbqa7jhn91pxsbphg2ylwkpkknb2y4v4sczp7rjvgmjgdj"))))
+                "0jbby0x5krww1acc8qxhmmwg0dsqmj6yjnynfm7r6k3rxbvlydqr"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion

From 08dd5f673d02ef0474124a546dcbd99809ecc492 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 21:47:08 +0200
Subject: [PATCH 194/408] gnu: strongswan: Update to 5.8.1.

* gnu/packages/networking.scm (strongswan): Update to 5.8.1.
---
 gnu/packages/networking.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index a80b24a6cf..6bdf7f9e2f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -1970,14 +1970,14 @@ displays the results in real time.")
 (define-public strongswan
   (package
     (name "strongswan")
-    (version "5.8.0")
+    (version "5.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.strongswan.org/strongswan-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "0cq9m86ydd2i0awxkv4a256f4926p2f9pzlisyskl9fngl6f3c8m"))))
+        (base32 "034rd6kr1bmnvj8rg2kcxdjb0cgj3dn9310mmm94j1awxan71byr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -2000,7 +2000,7 @@ displays the results in real time.")
              #t)))
        #:configure-flags
        (list
-        ;; Disable bsd-4 licensed plugins
+        ;; Disable bsd-4 licensed plugins.
         "--disable-des"
         "--disable-blowfish")))
     (inputs

From 7e143375d3649f3c0bd4c13958b26c086f364647 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:00:42 +0200
Subject: [PATCH 195/408] gnu: links: Update to 2.20.1 [security fix for tor
 users].

* gnu/packages/web-browsers.scm (links): Update to 2.20.1.
---
 gnu/packages/web-browsers.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 3368772ec6..22ecf3cfec 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -93,14 +93,14 @@ older or slower computers and embedded systems.")
 (define-public links
   (package
     (name "links")
-    (version "2.19")
+    (version "2.20.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://links.twibright.com/download/"
                                   "links-" version ".tar.bz2"))
                 (sha256
                (base32
-                "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh"))))
+                "0184g59cxxhg9dqg5gv66f30f1wg8sx957pp5rs7b8icnwnafa5v"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases

From 489d16577e4a6ccc30f3719d9263900089edd842 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 10 Sep 2019 19:04:51 +0200
Subject: [PATCH 196/408] gnu: cmake: Add package variant that knows about
 X.509 certificates.

Fixes .

* gnu/packages/patches/cmake-curl-certificates.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/cmake.scm (cmake/fixed): New variable.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/cmake.scm                        | 12 ++++++
 .../patches/cmake-curl-certificates.patch     | 40 +++++++++++++++++++
 3 files changed, 53 insertions(+)
 create mode 100644 gnu/packages/patches/cmake-curl-certificates.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index d76438ca63..3f32b9cbf2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -744,6 +744,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/clementine-use-openssl.patch		\
   %D%/packages/patches/clisp-remove-failing-test.patch		\
   %D%/packages/patches/clucene-pkgconfig.patch			\
+  %D%/packages/patches/cmake-curl-certificates.patch		\
   %D%/packages/patches/coda-use-system-libs.patch		\
   %D%/packages/patches/combinatorial-blas-awpm.patch		\
   %D%/packages/patches/combinatorial-blas-io-fix.patch		\
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 7186cf98df..95f884b36d 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -164,6 +164,18 @@ and workspaces that can be used in the compiler environment of your choice.")
                    license:expat             ; cmjsoncpp is dual MIT/public domain
                    license:public-domain)))) ; cmlibarchive/archive_getdate.c
 
+(define-public cmake/fixed
+  ;; This is a variant of CMake that fixes X.509 certificate lookup:
+  ;; .
+  (package
+    (inherit cmake)
+    (version (string-append (package-version cmake) "-1"))
+    (source (origin
+              (inherit (package-source cmake))
+              (patches
+               (append (search-patches "cmake-curl-certificates.patch")
+                       (origin-patches (package-source cmake))))))))
+
 (define-public emacs-cmake-mode
   (package
     (inherit cmake)
diff --git a/gnu/packages/patches/cmake-curl-certificates.patch b/gnu/packages/patches/cmake-curl-certificates.patch
new file mode 100644
index 0000000000..36252083f8
--- /dev/null
+++ b/gnu/packages/patches/cmake-curl-certificates.patch
@@ -0,0 +1,40 @@
+By default commands such as "ctest" would not look for certificates
+at all: .
+
+This changes CMake such that commands honor SSL_CERT_FILE and SSL_CERT_DIR
+as well as /etc/ssl/certs.
+
+--- cmake-3.13.1/Source/cmCurl.cxx	2019-09-10 17:27:36.926907260 +0200
++++ cmake-3.13.1/Source/cmCurl.cxx	2019-09-10 17:52:35.475903919 +0200
+@@ -4,11 +4,8 @@
+ 
+ #include "cmThirdParty.h"
+ 
+-#if !defined(CMAKE_USE_SYSTEM_CURL) && !defined(_WIN32) &&                    \
+-  !defined(__APPLE__) && !defined(CURL_CA_BUNDLE) && !defined(CURL_CA_PATH)
+ #  define CMAKE_FIND_CAFILE
+ #  include "cmSystemTools.h"
+-#endif
+ 
+ // curl versions before 7.21.5 did not provide this error code
+ #if defined(LIBCURL_VERSION_NUM) && LIBCURL_VERSION_NUM < 0x071505
+@@ -29,6 +26,19 @@ std::string cmCurlSetCAInfo(::CURL* curl
+     ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cafile);
+     check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
+   }
++
++  /* Honor the usual environment variables.  */
++  else if (cmSystemTools::GetEnv("SSL_CERT_FILE", e)) {
++    ::CURLcode res =
++      ::curl_easy_setopt(curl, CURLOPT_CAINFO, e.c_str());
++    check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
++  }
++  else if (cmSystemTools::GetEnv("SSL_CERT_DIR", e)) {
++    ::CURLcode res =
++      ::curl_easy_setopt(curl, CURLOPT_CAPATH, e.c_str());
++    check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
++  }
++
+ #ifdef CMAKE_FIND_CAFILE
+ #  define CMAKE_CAFILE_FEDORA "/etc/pki/tls/certs/ca-bundle.crt"
+   else if (cmSystemTools::FileExists(CMAKE_CAFILE_FEDORA, true)) {

From 984cabc4a66cd6b58354887530d136e92bd8a172 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Sat, 24 Aug 2019 04:47:38 +0200
Subject: [PATCH 197/408] gnu: python-language-server: Update to 0.28.1.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/python-xyz.scm (python-language-server): Update to 0.28.1.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 16f1331a84..a928677858 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -2987,14 +2987,14 @@ Server (PLS).")
 (define-public python-language-server
   (package
     (name "python-language-server")
-    (version "0.26.1")
+    (version "0.28.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-language-server" version))
        (sha256
         (base32
-         "1vs9ckfmm534n1hq3m871916wsjvi5h4gyj6wlzg13ck6506lx0s"))))
+         "1qbiij208l6g1l5hzihx8badhmqkxdk0spn7gm7564yg54zdp2g2"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pluggy" ,python-pluggy)

From c3c0eda646f749d8603fbdacb281fd14112b1139 Mon Sep 17 00:00:00 2001
From: Steve Sprang 
Date: Fri, 23 Aug 2019 15:38:42 -0700
Subject: [PATCH 198/408] gnu: Add opencsg.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/graphics.scm (opencsg): New variable.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/graphics.scm | 41 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index b06a369325..988b519ffa 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2018 Kei Kebreau 
 ;;; Copyright © 2019 Mark H Weaver 
 ;;; Copyright © 2019 Carlo Zancanaro 
+;;; Copyright © 2019 Steve Sprang 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1018,3 +1019,43 @@ requirements.")
 performance subdivision surface (subdiv) evaluation on massively parallel CPU
 and GPU architectures.")
     (license license:asl2.0)))
+
+(define-public opencsg
+  (let ((dot-to-dash (lambda (c) (if (char=? c #\.) #\- c))))
+    (package
+      (name "opencsg")
+      (version "1.4.2")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/floriankirsch/OpenCSG.git")
+               (commit (string-append "opencsg-"
+                                      (string-map dot-to-dash version)
+                                      "-release"))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "00m4vs6jn3scqczscc4591l1d6zg6anqp9v1ldf9ymf70rdyvm7m"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* "src/Makefile"
+                 (("/usr/local") (assoc-ref outputs "out")))
+               #t))
+           (add-before 'build 'skip-example
+             (lambda _ (chdir "src") #t)))))
+      (inputs
+       `(("glew" ,glew)
+         ("freeglut" ,freeglut)))
+      (synopsis "Library for rendering Constructive Solid Geometry (CSG)")
+      (description
+       "OpenCSG is a library for rendering Constructive Solid Geometry (CSG) using
+OpenGL.  CSG is an approach for modeling complex 3D-shapes using simpler ones.
+For example, two shapes can be combined by uniting them, by intersecting them,
+or by subtracting one shape from the other.")
+      (home-page "http://www.opencsg.org/")
+      (license license:gpl2))))

From eb7ce870e0991669d795f5e14dc85b632be1c158 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Mon, 9 Sep 2019 06:37:16 +0200
Subject: [PATCH 199/408] gnu: emacs-helm-company: Update to 0.2.5.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/emacs-xyz.scm (emacs-helm-company): Update to 0.2.5.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/emacs-xyz.scm | 45 +++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f3de24d825..704fbfbc6b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -14260,30 +14260,29 @@ on-line service.")
     (license license:gpl3+)))
 
 (define-public emacs-helm-company
-  (let ((commit "d3fc093a0e833b4dee6561c00d6df3d62aa50f3f"))
-    (package
-      (name "emacs-helm-company")
-      (version (git-version "0.2.3" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/Sodel-the-Vociferous/helm-company")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1ciirsanhajdqm5iwl8k9ywf4jha1wdv4sc4d9kslyrfr9zn4q6k"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)
-         ("emacs-company" ,emacs-company)))
-      (home-page "https://github.com/Sodel-the-Vociferous/helm-company")
-      (synopsis "Helm interface for company-mode")
-      (description
-       "This is a Helm interface to company-mode, a text completion
+  (package
+    (name "emacs-helm-company")
+    (version "0.2.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Sodel-the-Vociferous/helm-company")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1ci37w6ahnqrfpb284gjvxmimlf61sdxb9k192yy9q983cksv2hx"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-company" ,emacs-company)))
+    (home-page "https://github.com/Sodel-the-Vociferous/helm-company")
+    (synopsis "Helm interface for company-mode")
+    (description
+     "This is a Helm interface to company-mode, a text completion
 framework.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-helm-descbinds
   (let ((commit "033be73f21778633813264ce1634a6e1ad873d8e"))

From 389cae8b0727bff958e4a2dd98526cf7edbe9ade Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:18:39 +0200
Subject: [PATCH 200/408] gnu: haveged: Update to 1.9.6.

* gnu/packages/linux.scm (haveged): Update to 1.9.6.
---
 gnu/packages/linux.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 92b9d2ece1..8b18587c76 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -4455,16 +4455,16 @@ cpufreq sub-system is enabled or not.")
 (define-public haveged
   (package
     (name "haveged")
-    (version "1.9.4")
+    (version "1.9.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/jirka-h/haveged.git")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1hrwzjd4byq4fdrg8svww3d8x449k80jxxrjy9v6jvzhfv19rvxr"))))
+        (base32 "11kr19n2f87izsj341lv5amhd1wc2ckfmqr9pq5fxix8pkbs94rh"))))
     (build-system gnu-build-system)
     (home-page "http://www.issihosts.com/haveged")
     (synopsis "Entropy source for the Linux random number generator")

From 6664ec0c8a978accebc3a7eadd6a83dc4a4b28e8 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:19:08 +0200
Subject: [PATCH 201/408] gnu: haveged: Use HTTPS home page.

* gnu/packages/linux.scm (haveged)[home-page]: Use HTTPS.
---
 gnu/packages/linux.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 8b18587c76..38bfa09b2b 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -4466,7 +4466,7 @@ cpufreq sub-system is enabled or not.")
        (sha256
         (base32 "11kr19n2f87izsj341lv5amhd1wc2ckfmqr9pq5fxix8pkbs94rh"))))
     (build-system gnu-build-system)
-    (home-page "http://www.issihosts.com/haveged")
+    (home-page "https://www.issihosts.com/haveged")
     (synopsis "Entropy source for the Linux random number generator")
     (description
      "haveged generates an unpredictable stream of random numbers for use by

From 8e42b087f09aade76076b8bda0d2a1cfaceba35b Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:23:01 +0200
Subject: [PATCH 202/408] gnu: haveged: Use @acronym in description.

* gnu/packages/linux.scm (havege)[description]: Substitute @acronym
for @dfn mark-up.
---
 gnu/packages/linux.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 38bfa09b2b..1fc4d7d98e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -4475,10 +4475,10 @@ standard mechanisms for filling the entropy pool may not be sufficient for
 systems with high needs or limited user interaction, such as headless servers.
 
 @command{haveged} runs as a privileged daemon, harvesting randomness from the
-indirect effects of hardware events on hidden processor state using the HArdware
-Volatile Entropy Gathering and Expansion (@dfn{HAVEGE}) algorithm.  It tunes
-itself to its environment and provides the same built-in test suite for the
-output stream as used on certified hardware security devices.
+indirect effects of hardware events on hidden processor state using the
+@acronym{HAVEGE, HArdware Volatile Entropy Gathering and Expansion} algorithm.
+It tunes itself to its environment and provides the same built-in test suite
+for the output stream as used on certified hardware security devices.
 
 The quality of the randomness produced by this algorithm has not been proven.
 It is recommended to run it together with another entropy source like rngd, and

From 0edfe5533249df00b2fc0a43c27447fa7ddc7ed6 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:19:28 +0200
Subject: [PATCH 203/408] gnu: perl-archive-zip: Update to 1.65.

* gnu/packages/perl-compression.scm (perl-archive-zip): Update to 1.65.
---
 gnu/packages/perl-compression.scm | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/perl-compression.scm b/gnu/packages/perl-compression.scm
index ea71492262..d09e68e294 100644
--- a/gnu/packages/perl-compression.scm
+++ b/gnu/packages/perl-compression.scm
@@ -133,7 +133,7 @@ type by using either Perl modules, or command-line tools on your system.")
 (define-public perl-archive-zip
   (package
     (name "perl-archive-zip")
-    (version "1.64")
+    (version "1.65")
     (source
      (origin
        (method url-fetch)
@@ -141,8 +141,7 @@ type by using either Perl modules, or command-line tools on your system.")
              "mirror://cpan/authors/id/P/PH/PHRED/Archive-Zip-"
              version ".tar.gz"))
        (sha256
-        (base32
-         "0zfinh8nx3rxzscp57vq3w8hihpdb0zs67vvalykcf402kr88pyy"))))
+        (base32 "116vcg8x7n92i7cn3bx0xck69mz9vjy0il9i8p7p7lk40kz7jcbl"))))
     (build-system perl-build-system)
     (native-inputs
      ;; For tests.

From 886534b4e0ff471e951c33dd3aea4dfbd11e9420 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:32:34 +0200
Subject: [PATCH 204/408] gnu: yoshimi: Update to 1.6.0.1.

* gnu/packages/music.scm (yoshimi): Update to 1.6.0.1.
---
 gnu/packages/music.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index bcae8e7733..4d1e11f260 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2146,7 +2146,7 @@ capabilities, custom envelopes, effects, etc.")
 (define-public yoshimi
   (package
     (name "yoshimi")
-    (version "1.6.0")
+    (version "1.6.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/yoshimi/"
@@ -2154,10 +2154,10 @@ capabilities, custom envelopes, effects, etc.")
                                   "/yoshimi-" version ".tar.bz2"))
               (sha256
                (base32
-                "0bcc5spnq73yp1fmm367d1mxcswqkmzs3cnpb4cxr513ir98sa50"))))
+                "140f2k4akj39pny8c7i794q125415gyvmy4rday0il5ncp3glik4"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; there are no tests
+     `(#:tests? #f                      ; there are no tests
        #:configure-flags
        (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
                             (assoc-ref %outputs "out") "/share"))

From abab956bfc52fc057667cd55fd776e75916e9eea Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:34:13 +0200
Subject: [PATCH 205/408] gnu: umockdev: Update to 0.13.2.

* gnu/packages/check.scm (umockdev): Update to 0.13.2.
---
 gnu/packages/check.scm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 085538b2de..374a4d35fa 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2243,7 +2243,7 @@ provides a simple way to achieve this.")
 (define-public umockdev
   (package
     (name "umockdev")
-    (version "0.12.1")
+    (version "0.13.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/martinpitt/umockdev/"
@@ -2251,7 +2251,7 @@ provides a simple way to achieve this.")
                                   "umockdev-" version ".tar.xz"))
               (sha256
                (base32
-                "1hx5jm9afng6hw9wyp524z8nwdp6w053pca0w2c0gqpgrmvjxvd2"))))
+                "095v3abc321s584sga04y16lcmdzsdi88h24wcrm78v7vq484g74"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -2264,10 +2264,12 @@ provides a simple way to achieve this.")
              #t)))))
     (native-inputs
      `(("vala" ,vala)
-       ("python" ,python)               ; for tests
-       ("which" ,which)                 ; for tests
        ("gtk-doc" ,gtk-doc)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+
+       ;; For tests.
+       ("python" ,python)
+       ("which" ,which)))
     (inputs
      `(("glib" ,glib)
        ("eudev" ,eudev)

From 1d68eb321ffee0ca6c450f785cc17a735493df0d Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 10 Sep 2019 23:50:27 +0200
Subject: [PATCH 206/408] gnu: gvfs: Don't use NAME in source URI.

* gnu/packages/gnome.scm (gvfs)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d40919693a..4d7ed45f77 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4182,9 +4182,9 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
     (version "1.36.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/gvfs/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "gvfs-" version ".tar.xz"))
               (sha256
                (base32
                 "1xq105596sk9yram5a143b369wpaiiwc9gz86n0j1kfr7nipkqn4"))))

From b5b0fd23548ac06e5c5ce3f890218579605ef024 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 00:08:37 +0200
Subject: [PATCH 207/408] gnu: tracker: Don't use NAME in source URI.

* gnu/packages/gnome.scm (tracker)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 4d7ed45f77..f002ff17b7 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -6299,9 +6299,9 @@ easy, safe, and automatic.")
     (version "2.0.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/tracker/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "tracker-" version ".tar.xz"))
               (sha256
                (base32
                 "1mfc5lv820kr7ssi7hldn25gmshh65k19kh478qjsnb64sshsbyf"))))

From c1b79b36524d38b80f7ed7e139a231dbb928833f Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 00:11:24 +0200
Subject: [PATCH 208/408] gnu: libsoup: Don't use NAME in source URI.

* gnu/packages/gnome.scm (libsoup)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index f002ff17b7..562f2981e9 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2701,7 +2701,7 @@ libxml to ease remote use of the RESTful API.")
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "libsoup-" version ".tar.xz"))
               (sha256
                (base32
                 "0amfw1yvy1kjrg41rfh2vvrw5gkwnyckqbw1fab50hm6xc1acbmx"))))

From c5e3f4f0438cfde1cb9133caf8178a1ed4bd6695 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Wed, 11 Sep 2019 10:19:59 +0200
Subject: [PATCH 209/408] gnu: libnftnl: Update to 1.1.4.

* gnu/packages/linux.scm (libnftnl): Update to 1.1.4.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 1fc4d7d98e..92831b63a8 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -5128,14 +5128,14 @@ re-use code and to avoid re-inventing the wheel.")
 (define-public libnftnl
   (package
     (name "libnftnl")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://netfilter.org/libnftnl/"
                            "libnftnl-" version ".tar.bz2"))
        (sha256
-        (base32 "03xszkcpqk3s1rqc6vh7g5j13kh3d3yjnvjhk5scds3an39rgp92"))))
+        (base32 "087dfc2n4saf2k68hyi4byvgz5grwpw5kfjvmkpn3wmd8y1riiy8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))

From f8b7c35ad0f06cd2cdd508ad6869d29530beb3c8 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Wed, 11 Sep 2019 10:20:26 +0200
Subject: [PATCH 210/408] gnu: nftables: Update to 0.9.2.

* gnu/packages/linux.scm (nftables): Update to 0.9.2.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 92831b63a8..148254e63f 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -5152,7 +5152,7 @@ used by nftables.")
 (define-public nftables
   (package
     (name "nftables")
-    (version "0.9.0")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
@@ -5160,7 +5160,7 @@ used by nftables.")
                            "/files/nftables-" version ".tar.bz2"))
        (sha256
         (base32
-         "14bygs6vg2v448cw5r4pxqi8an29hw0m9vab8hpmgjmrzjsq30dd"))))
+         "1x8kalbggjq44j4916i6vyv1rb20dlh1dcsf9xvzqsry2j063djw"))))
     (build-system gnu-build-system)
     (arguments `(#:configure-flags
                  '("--disable-man-doc"))) ; FIXME: Needs docbook2x.

From 2316ce51870744b80562a45415343d78fda1afd7 Mon Sep 17 00:00:00 2001
From: Steve Sprang 
Date: Tue, 10 Sep 2019 16:22:57 -0700
Subject: [PATCH 211/408] gnu: Add openscad.

* gnu/packages/engineering.scm (openscad): New variable.

Signed-off-by: Efraim Flashner 
---
 gnu/packages/engineering.scm | 69 ++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 7f5409c835..c1c1b18ed3 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -65,6 +65,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages graphics)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -89,6 +90,7 @@
   #:use-module (gnu packages tex)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
 (define-public librecad
@@ -2145,3 +2147,70 @@ well as conversion and validation tools for input and output data.  The
 specification can be downloaded at @url{http://3mf.io/specification/}.")
     (home-page "https://3mf.io/")
     (license license:bsd-2)))
+
+(define-public openscad
+  (package
+    (name "openscad")
+    (version "2019.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://files.openscad.org/openscad-" version
+                           ".src.tar.gz"))
+       (sha256
+        (base32
+         "0nbgk5q5pgnw53la0kccdcpz2f4xf6d6076rkn0q08z57hkc85ha"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("boost" ,boost)
+       ("cgal" ,cgal)
+       ("double-conversion" ,double-conversion)
+       ("eigen" ,eigen)
+       ("fontconfig" ,fontconfig)
+       ("glew" ,glew)
+       ("gmp" ,gmp)
+       ("harfbuzz" ,harfbuzz)
+       ("lib3mf" ,lib3mf)
+       ("libxml2" ,libxml2)
+       ("libzip" ,libzip)
+       ("mpfr" ,mpfr)
+       ("opencsg" ,opencsg)
+       ("qscintilla" ,qscintilla)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)
+       ;; the following are only needed for tests
+       ("imagemagick" ,imagemagick)
+       ("ps" ,procps)
+       ("python" ,python)
+       ("xvfb" ,xorg-server)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "qmake"
+                     (string-append "PREFIX=" (assoc-ref outputs "out")))
+             #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "tests"
+               (invoke "cmake" ".")
+               (invoke "make")
+               (invoke "ctest"))
+             ;; strip python test files since lib dir ends up in out/share
+             (for-each delete-file
+                       (find-files "libraries/MCAD" ".*\\.py"))
+             #t)))))
+    (synopsis "Script-based 3D modeling application")
+    (description
+     "OpenSCAD is a 3D Computer-aided Design (CAD) application.  Unlike an
+interactive modeler, OpenSCAD generates 3D models from a script, giving you
+full programmatic control over your models.")
+    (home-page "https://www.openscad.org/")
+    (license license:gpl2+)))

From 1475094a457cd927e149d54ec9b8f59a8b05f0f2 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 10 Sep 2019 22:28:00 +0900
Subject: [PATCH 212/408] gnu: python-parso: Update to 0.5.1.

* gnu/packages/python-xyz.scm (python-parso): Update to 0.5.1.
---
 gnu/packages/python-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index a928677858..ea183c0301 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14744,14 +14744,14 @@ time-based (TOTP) passwords.")
 (define-public python-parso
   (package
     (name "python-parso")
-    (version "0.3.1")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "parso" version))
        (sha256
         (base32
-         "18p89iwcm8mnf380f92g9w0bhx5km8wxp392vvjcq4y1ld1llw1m"))))
+         "171a9ivhxwsd52h1cgsz40zgzpgzscn7yqb7sdjhy8m1lzj0wsv6"))))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (build-system python-build-system)

From 4eb97c254effc95115d5e9da1b7083ecbc427a2f Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 10 Sep 2019 22:34:22 +0900
Subject: [PATCH 213/408] gnu: python-parso: Run the test suite.

* gnu/packages/python-xyz.scm (python-parso)[phases]: Replace the check phase.
---
 gnu/packages/python-xyz.scm | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ea183c0301..991082eed0 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -14755,6 +14755,10 @@ time-based (TOTP) passwords.")
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _ (invoke "pytest" "-vv"))))))
     (home-page "https://github.com/davidhalter/parso")
     (synopsis "Python Parser")
     (description "Parso is a Python parser that supports error recovery and

From 296e1aea65eda887d9c9ce14038fec5ff090b977 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Wed, 11 Sep 2019 09:34:29 +0900
Subject: [PATCH 214/408] gnu: python-jedi: Update to 0.15.1 and re-enable
 tests.

* gnu/packages/python-xyz.scm (python-jedi): Update to 0.15.1; re-enable
tests.
---
 gnu/packages/python-xyz.scm | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 991082eed0..819b3045a3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -10556,25 +10556,29 @@ characters, mouse support, and auto suggestions.")
 (define-public python-jedi
   (package
     (name "python-jedi")
-    (version "0.13.3")
+    (version "0.15.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "jedi" version))
        (sha256
         (base32
-         "0nsrjlb57njqppxmi8wjsb1dkad7qa7svx67jbkhixq66lz61c1b"))))
+         "0bp4pxhsynaarbvzblsn5x32lzp29svy3sxfy8i6m5iwz9s9r1ds"))))
     (build-system python-build-system)
     (arguments
-     `( ;; Many tests are failing with Python 3.7.x as of version 0.13.3 (see:
-        ;; https://github.com/davidhalter/jedi/issues/1263)
-       #:tests? #f
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'disable-file-completion-test
+           ;; A single parameterized test currently fail (see:
+           ;; https://github.com/davidhalter/jedi/issues/1395).  Remove it.
+           (lambda _
+             (substitute* "test/test_api/test_completion.py"
+               ((".*'example.py', 'rb\"' \\+ join\\('\\.\\.'.*") ""))
+             #t))
          (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "py.test" "-vv")))))))
+           (lambda _
+             (setenv "HOME" "/tmp")
+             (invoke "python" "-m" "pytest"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)
        ("python-docopt" ,python-docopt)))
@@ -10592,11 +10596,7 @@ well.")
     (license license:expat)))
 
 (define-public python2-jedi
-  (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
-    (package
-      (inherit base)
-      (arguments (substitute-keyword-arguments (package-arguments base)
-                   ((#:tests? _) #t))))))
+  (package-with-python2 python-jedi))
 
 (define-public ptpython
   (package

From e135ef96868f8a50d2a5da536d4f693f577f4f80 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Wed, 11 Sep 2019 17:10:29 +0900
Subject: [PATCH 215/408] gnu: emacs-elpy: Update to 1.31.0.

* gnu/packages/emacs-xyz.scm (emacs-elpy): Update to 1.31.0.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 704fbfbc6b..2dd0d38867 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6008,7 +6008,7 @@ indentation guides in Emacs:
 (define-public emacs-elpy
   (package
     (name "emacs-elpy")
-    (version "1.28.0")
+    (version "1.31.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -6017,7 +6017,7 @@ indentation guides in Emacs:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "073bwxwjzcbmvpcz9q2xjwzx9x7hkvjni6fwvikh6yawzjp56jis"))))
+                "0bvmgqs3c80bhs9v5ymgadv7vk4iamha10y7rl09pixmjm4mzagk"))))
     (build-system emacs-build-system)
     (arguments
      `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include)

From ef640db2f509f51ebfe3a6a66ba837ef3103bbb7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= 
Date: Wed, 28 Aug 2019 20:49:40 +0800
Subject: [PATCH 216/408] gnu: libvirt: Don't wrap with PATH.

This reverts commit 903e051a71467bc96a054c9b4ed89348fdae8977 to fix
.  The full path of the 'ip' command is already
embedded, and we want to search 'qemu' in PATH.

* gnu/packages/virtualization.scm (libvirt): Remove 'wrap-libvirtd phase.  Add
configure flags to run qemu as 'nobody:kvm'.
* gnu/services/virtualization.scm (libvirt-service-type): Add 'qemu' to the
system profile.
---
 gnu/packages/virtualization.scm | 17 +++++------------
 gnu/services/virtualization.scm |  6 ++++--
 2 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 26477714e4..f46c31df1f 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -401,7 +401,10 @@ manage system or application containers.")
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
-       (list "--with-polkit"
+       (list "--with-qemu"
+             "--with-qemu-user=nobody"
+             "--with-qemu-group=kvm"
+             "--with-polkit"
              (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
                             ,name "-" ,version)
              "--sysconfdir=/etc"
@@ -431,23 +434,13 @@ manage system or application containers.")
              (apply invoke "make" "install"
                     "sysconfdir=/tmp/etc"
                     "localstatedir=/tmp/var"
-                    make-flags)))
-         (add-after 'install 'wrap-libvirtd
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/sbin/libvirtd")
-                 `("PATH" = (,(string-append (assoc-ref inputs "iproute")
-                                             "/sbin")
-                             ,(string-append (assoc-ref inputs "qemu")
-                                             "/bin"))))
-               #t))))))
+                    make-flags))))))
     (inputs
      `(("libxml2" ,libxml2)
        ("eudev" ,eudev)
        ("libpciaccess" ,libpciaccess)
        ("gnutls" ,gnutls)
        ("dbus" ,dbus)
-       ("qemu" ,qemu)
        ("libpcap" ,libpcap)
        ("libnl" ,libnl)
        ("libuuid" ,util-linux)
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 705ed84d06..03aedd326c 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -442,8 +442,10 @@ potential infinite waits blocking libvirt."))
                   (service-extension polkit-service-type
                                      (compose list libvirt-configuration-libvirt))
                   (service-extension profile-service-type
-                                     (compose list
-                                              libvirt-configuration-libvirt))
+                                     (lambda (config)
+                                       (list
+                                        (libvirt-configuration-libvirt config)
+                                        qemu)))
                   (service-extension activation-service-type
                                      %libvirt-activation)
                   (service-extension shepherd-root-service-type

From 9abc58d3efe47fe2d1cf8c1a48ef939efad36f6b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 11 Sep 2019 13:56:39 +0200
Subject: [PATCH 217/408] gnu: guile-gcrypt: Update to 0.2.0.

* gnu/packages/gnupg.scm (guile-gcrypt): Update to 0.2.0.
---
 gnu/packages/gnupg.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index bc1e3c8720..69d7f34a49 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -434,7 +434,7 @@ gpgpme starting with version 1.7.")
 (define-public guile-gcrypt
   (package
     (name "guile-gcrypt")
-    (version "0.1.0")
+    (version "0.2.0")
     (home-page "https://notabug.org/cwebber/guile-gcrypt")
     (source (origin
               (method git-fetch)
@@ -443,7 +443,7 @@ gpgpme starting with version 1.7.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1lhgh3105yi0ggrjsjibv4wp1ipz8s17pa820hk2wln3rc04wpvf"))
+                "1mhc5m4xygkfj7x18f8apiqpfdn9mrql0am5sk13cf5xn8x1r63z"))
               (file-name (string-append name "-" version "-checkout"))))
     (build-system gnu-build-system)
     (native-inputs

From 4e0299194d2f32387fa420a414496ddd5265bc98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 11 Sep 2019 14:02:19 +0200
Subject: [PATCH 218/408] gnu: guile-json: Update to 3.2.0.

* gnu/packages/guile.scm (guile-json-3): Update to 3.2.0.
---
 gnu/packages/guile.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 71169966da..db847765d8 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -483,14 +483,14 @@ specification.  These are the main features:
   (package
     (inherit guile-json)
     (name "guile-json")
-    (version "3.1.0")
+    (version "3.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.savannah.nongnu.org/releases/"
                                   name "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1yfqscz74i4vxylabd3s9l0wbdp8bg9qxnv1ixdm3b1l7zdx00z3"))))))
+                "14m6b6g2maw0mkvfm4x63rqb54vgbpn1gcqs715ijw4bikfzlqfz"))))))
 
 ;; There are two guile-gdbm packages, one using the FFI and one with
 ;; direct C bindings, hence the verbose name.

From 28123c01d188e8d4afb81e2772654698642d109d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 11 Sep 2019 14:04:12 +0200
Subject: [PATCH 219/408] gnu: guile-json: Use "mirror://savannah" URL.

* gnu/packages/guile.scm (guile-json, guile-json-3): Change URL to
mirror://savannah.
---
 gnu/packages/guile.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index db847765d8..0731caedc2 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -444,8 +444,8 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
     (home-page "https://github.com/aconchillo/guile-json")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://download.savannah.nongnu.org/releases/"
-                                  name "/" name "-" version ".tar.gz"))
+              (uri (string-append "mirror://savannah/guile-json/guile-json-"
+                                  version ".tar.gz"))
               (sha256
                (base32
                 "15gnb84d7hpazqhskkf3g9z4r6knw54wfj4ch5270kakz1lp70c9"))))
@@ -486,8 +486,8 @@ specification.  These are the main features:
     (version "3.2.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://download.savannah.nongnu.org/releases/"
-                                  name "/" name "-" version ".tar.gz"))
+              (uri (string-append "mirror://savannah/guile-json/guile-json-"
+                                  version ".tar.gz"))
               (sha256
                (base32
                 "14m6b6g2maw0mkvfm4x63rqb54vgbpn1gcqs715ijw4bikfzlqfz"))))))

From 373546123e0aea273f41163e0f18ff777ffdb90d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 11 Sep 2019 14:43:57 +0200
Subject: [PATCH 220/408] gnu: emacs-smart-mode-line: Update to 2.13.

* gnu/packages/emacs-xyz.scm (emacs-smart-mode-line): Update to 2.13.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2dd0d38867..9ee458187c 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -2932,7 +2932,7 @@ snippets for yasnippet.")
 (define-public emacs-smart-mode-line
   (package
     (name "emacs-smart-mode-line")
-    (version "2.12.0")
+    (version "2.13")
     (source
      (origin
        (method git-fetch)
@@ -2941,7 +2941,7 @@ snippets for yasnippet.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1gs4ay9hdg8gmia4ir74qawk80pqwv99hp4yhy108kpfry5mrq6z"))))
+        (base32 "164b697xm1rwcggv37dymhf3npbyh2bs59z8b6m5x35lb4c3lf8b"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-rich-minority" ,emacs-rich-minority)))

From 7dc4b2a728afd8e25397db891088ce20b0ce3927 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Wed, 11 Sep 2019 14:44:15 +0200
Subject: [PATCH 221/408] gnu: emacs-debbugs: Update to 0.19.

* gnu/packages/emacs-xyz.scm (emacs-debbugs): Update to 0.19.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9ee458187c..b5a20680ab 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -3211,14 +3211,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.18")
+    (version "0.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "00kich80zdg7v3v613f9prqddkpwpm1nf9sj10f0n6wh15rzwv07"))))
+                "0cpby8f088cqb5mpd756a2mb706x763k15cg2xdmmsxl415k3yw4"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs

From aa51d92cdb68a825e6d18d0c340f9b9d160866cd Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Mon, 9 Sep 2019 11:05:57 +0900
Subject: [PATCH 222/408] gnu: workrave: Update to version 1.10.34.

* gnu/packages/gnome.scm (workrave): Update version and hash strings.
[inputs]: Remove python-cheetah.
[native-inputs]: Add boost, python-3 and python-jinja2; remove the "bin"
output of glib.
---
 gnu/packages/gnome.scm | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 562f2981e9..60e39bee32 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -39,6 +39,7 @@
 ;;; Copyright © 2019 Giacomo Leidi 
 ;;; Copyright © 2019 Jelle Licht 
 ;;; Copyright © 2019 Jonathan Frederickson 
+;;; Copyright © 2019 Maxim Cournoyer 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +66,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages cdrom)
@@ -7992,7 +7994,7 @@ configurable file renaming. ")
 (define-public workrave
   (package
     (name "workrave")
-    (version "1.10.23")
+    (version "1.10.34")
     (source
      (origin
        (method git-fetch)
@@ -8003,7 +8005,7 @@ configurable file renaming. ")
                                          version)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1qhlwfhwk5agv4904d6bsf83k9k89q7bms6agg967vsca4905vcw"))))
+        (base32 "0czwhr7nw523753ajcjjfwrf91mq8pmzr19gp0srqsvb1dsn1zcf"))))
     (build-system glib-or-gtk-build-system)
     (propagated-inputs `(("glib" ,glib)
                          ("gtk+" ,gtk+)
@@ -8014,9 +8016,8 @@ configurable file renaming. ")
                          ("libxtst" ,libxtst)
                          ("dconf" ,dconf)
                          ("libice" ,libice)))
-    (inputs `(("libsm" ,libsm)
-              ("python-cheetah" ,python2-cheetah)))
-    (native-inputs `(("glib" ,glib "bin")
+    (inputs `(("libsm" ,libsm)))
+    (native-inputs `(("boost" ,boost)
                      ("pkg-config" ,pkg-config)
                      ("gettext" ,gnu-gettext)
                      ("autoconf" ,autoconf)
@@ -8026,7 +8027,8 @@ configurable file renaming. ")
                      ("intltool" ,intltool)
                      ("libxscrnsaver" ,libxscrnsaver)
                      ("gobject-introspection" ,gobject-introspection)
-                     ("python2" ,python-2)))
+                     ("python3" ,python-3)
+                     ("python-jinja2" ,python-jinja2)))
     (synopsis "Tool to help prevent repetitive strain injury (RSI)")
     (description
      "Workrave is a program that assists in the recovery and prevention of

From d1c9684753ff3a6adf1bb9ab397a73a5c23010c1 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Tue, 10 Sep 2019 21:10:03 +0900
Subject: [PATCH 223/408] gnu: workrave: Correct the types of inputs used.

* gnu/packages/gnome.scm (workrave)[propagated-inputs]: Move them all to...
[inputs]: ...here.
[native-inputs]: Move libxscrnsaver to the 'inputs' field.
---
 gnu/packages/gnome.scm | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 60e39bee32..8341bd6802 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -8007,16 +8007,17 @@ configurable file renaming. ")
        (sha256
         (base32 "0czwhr7nw523753ajcjjfwrf91mq8pmzr19gp0srqsvb1dsn1zcf"))))
     (build-system glib-or-gtk-build-system)
-    (propagated-inputs `(("glib" ,glib)
-                         ("gtk+" ,gtk+)
-                         ("gdk-pixbuf" ,gdk-pixbuf)
-                         ("gtkmm" ,gtkmm)
-                         ("glibmm" ,glibmm)
-                         ("libx11" ,libx11)
-                         ("libxtst" ,libxtst)
-                         ("dconf" ,dconf)
-                         ("libice" ,libice)))
-    (inputs `(("libsm" ,libsm)))
+    (inputs `(("glib" ,glib)
+              ("gtk+" ,gtk+)
+              ("gdk-pixbuf" ,gdk-pixbuf)
+              ("gtkmm" ,gtkmm)
+              ("glibmm" ,glibmm)
+              ("libx11" ,libx11)
+              ("libxtst" ,libxtst)
+              ("dconf" ,dconf)
+              ("libice" ,libice)
+              ("libsm" ,libsm)
+              ("libxscrnsaver" ,libxscrnsaver)))
     (native-inputs `(("boost" ,boost)
                      ("pkg-config" ,pkg-config)
                      ("gettext" ,gnu-gettext)
@@ -8025,7 +8026,6 @@ configurable file renaming. ")
                      ("automake" ,automake)
                      ("libtool" ,libtool)
                      ("intltool" ,intltool)
-                     ("libxscrnsaver" ,libxscrnsaver)
                      ("gobject-introspection" ,gobject-introspection)
                      ("python3" ,python-3)
                      ("python-jinja2" ,python-jinja2)))

From ae9b6dba1943c244acf5a52996e3c82921242c2d Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 16:30:06 +0200
Subject: [PATCH 224/408] gnu: foo2zjs: Update to 20190909.

* gnu/packages/cups.scm (foo2zjs): Update to 20190909.
---
 gnu/packages/cups.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 4be1eee156..152258a522 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -636,14 +636,14 @@ printer/driver specific, but spooler-independent PPD file.")
 (define-public foo2zjs
   (package
     (name "foo2zjs")
-    (version "20190517")
+    (version "20190909")
     (source (origin
               (method url-fetch)
               ;; XXX: This is an unversioned URL!
               (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
               (sha256
                (base32
-                "13gzsd26nq4brx1xzpwmg1qnr4nk7ykgi94qr1hbjqfi561prki4"))))
+                "1nn84c045mbv6yzpjfggc6152bvgrmcxiyvgz9v2w3sws7ihshrm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases

From 5df412bfe68ba4937c2f9bfdd995a5b646a7aae8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= 
Date: Wed, 11 Sep 2019 23:07:52 +0800
Subject: [PATCH 225/408] services: libvirtd: Use
 '/run/current-system/profile/bin' as PATH.

This is a followup to ef640db2f509f51ebfe3a6a66ba837ef3103bbb7.

* gnu/services/virtualization.scm (libvirt-shepherd-service): Set
'#:environment-variables' for 'make-forkexec-constructor'.
---
 gnu/services/virtualization.scm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 03aedd326c..3eecd2c085 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -432,7 +432,10 @@ potential infinite waits blocking libvirt."))
            (provision '(libvirtd))
            (start #~(make-forkexec-constructor
                      (list (string-append #$libvirt "/sbin/libvirtd")
-                           "-f" #$config-file)))
+                           "-f" #$config-file)
+                     #:environment-variables
+                     ;; For finding qemu binaries.
+                     '("PATH=/run/current-system/profile/bin")))
            (stop #~(make-kill-destructor))))))
 
 (define libvirt-service-type

From 0cd3e99d64081e958919845ddd01ae8d2fb2d692 Mon Sep 17 00:00:00 2001
From: Joshua Branson 
Date: Wed, 11 Sep 2019 10:39:08 -0400
Subject: [PATCH 226/408] doc: Run fc-cache verbosely and delete existing
 caches.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* doc/guix.texi (Application Setup): Suggest ‘fc-cache -rv’ instead
of ‘fc-cache -f’.

Signed-off-by: Tobias Geerinckx-Rice 
---
 doc/guix.texi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 989b3d03bb..a3c5a564c3 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1724,8 +1724,8 @@ to make sure your TrueType fonts are listed there.
 After installing fonts you may have to refresh the font cache to use
 them in applications.  The same applies when applications installed via
 Guix do not seem to find fonts.  To force rebuilding of the font cache
-run @code{fc-cache -f}.  The @code{fc-cache} command is provided by the
-@code{fontconfig} package.
+run @code{fc-cache -frv}.  The @code{fc-cache} command is provided by
+the @code{fontconfig} package.
 
 @subsection X.509 Certificates
 

From b3f724b0a156adafa2cb155b603428eaa576ed11 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 18:05:35 +0200
Subject: [PATCH 227/408] =?UTF-8?q?doc:=20Actually=20suggest=20=E2=80=98fc?=
 =?UTF-8?q?-cache=20-r=E2=80=99.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

A follow-up commit to 0cd3e99d64081e958919845ddd01ae8d2fb2d692.

* doc/guix.texi (Application Setup): Fix my own typo.
---
 doc/guix.texi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index a3c5a564c3..39d4b865f6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1724,7 +1724,7 @@ to make sure your TrueType fonts are listed there.
 After installing fonts you may have to refresh the font cache to use
 them in applications.  The same applies when applications installed via
 Guix do not seem to find fonts.  To force rebuilding of the font cache
-run @code{fc-cache -frv}.  The @code{fc-cache} command is provided by
+run @code{fc-cache -rv}.  The @code{fc-cache} command is provided by
 the @code{fontconfig} package.
 
 @subsection X.509 Certificates

From cf065aba1ec14bdacab7a5a6bddbdfd7661cd409 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 18:27:33 +0200
Subject: [PATCH 228/408] gnu: openssl: Update to 1.1.1d [fix
 CVE-2019-{1547,1549,1552,1563}].

* gnu/packages/tls.scm (openssl-next): Update to 1.1.1d.
---
 gnu/packages/tls.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 833a3715af..45ec4f796b 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -412,7 +412,7 @@ required structures.")
   (package
     (inherit openssl)
     (name "openssl")
-    (version "1.1.1c")
+    (version "1.1.1d")
     (source (origin
              (method url-fetch)
              (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -425,7 +425,7 @@ required structures.")
               (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
               (sha256
                (base32
-                "142c7zdlz06hjrrvinb9f276czc78bnkyhd9xma621qmmmwk1yzn"))))
+                "1whinyw402z3b9xlb3qaxv4b9sk4w1bgh9k0y8df1z4x3yy92fhy"))))
     (outputs '("out"
                "doc"        ; 6.8 MiB of man3 pages and full HTML documentation
                "static"))   ; 6.4 MiB of .a files

From e8cfac22c7152a0a7d00c85d7528e664226c860f Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Wed, 11 Sep 2019 21:02:16 +0200
Subject: [PATCH 229/408] gnu: youtube-dl: Update to 2019.09.12.

* gnu/packages/video.scm (youtube-dl): Update to 2019.09.12.
---
 gnu/packages/video.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 66bc55e33e..8e0362752e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1492,7 +1492,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.09.01")
+    (version "2019.09.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1500,7 +1500,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0jbby0x5krww1acc8qxhmmwg0dsqmj6yjnynfm7r6k3rxbvlydqr"))))
+                "0wmc0rl4l08hnz3agh69ld1pcmjs7czg0d2k7mnnlxhwlwi38w56"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion

From bfebc73a748dd4edb3581f5b1cf6308559915bf1 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 22:27:59 +0200
Subject: [PATCH 230/408] gnu: neofetch: Update to 6.1.0.

* gnu/packages/admin.scm (neofetch): Update to 6.1.0.
---
 gnu/packages/admin.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3e75b73dcb..2e072deed7 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2725,7 +2725,7 @@ tool for remote execution and deployment.")
 (define-public neofetch
   (package
     (name "neofetch")
-    (version "6.0.0")
+    (version "6.1.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2733,7 +2733,7 @@ tool for remote execution and deployment.")
                     (commit version)))
               (sha256
                (base32
-                "0j0r40llyry1sgc6p9wd7jrpydps2lnj4rwajjp37697g2bik89i"))))
+                "022xzn9jk18k2f4b6011d8jk5nbl84i3mw3inlz4q52p2hvk8fch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests

From 97e53dccc08541123b5f42a72036fc62f3dc1922 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 20:03:49 +0200
Subject: [PATCH 231/408] gnu: nghttp2: Don't use NAME in source URI.

* gnu/packages/web.scm (nghttp2)[source]: Hard-code NAME.
---
 gnu/packages/web.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index ad6f0635dd..39475bd6a8 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -6386,7 +6386,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
        (method url-fetch)
        (uri (string-append "https://github.com/nghttp2/nghttp2/"
                            "releases/download/v" version "/"
-                           name "-" version ".tar.xz"))
+                           "nghttp2-" version ".tar.xz"))
        (sha256
         (base32
          "0fi6qg2w82636wixwkqy7bclpgxslmvg82r431hs8h6aqc4mnzwv"))))

From 3b14974706913d283bdeb6d62e660cb5702125e0 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 20:54:34 +0200
Subject: [PATCH 232/408] gnu: glslang: Use GIT-FILE-NAME.

* gnu/packages/vulkan.scm (glslang)[source]: Use GIT-FILE-NAME.
---
 gnu/packages/vulkan.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 0b3d476fa2..511831b9bd 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling 
-;;; Copyright © 2018 Tobias Geerinckx-Rice 
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 Efraim Flashner 
 ;;;
 ;;; This file is part of GNU Guix.
@@ -53,7 +53,7 @@
        (sha256
         (base32
          "0m56smanfcczjfif4yfcqhjj4d4sc088kwg6dgia8fwdsjavdm4d"))
-      (file-name (string-append name "-" version "-checkout"))))
+      (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ;; No tests

From 5ca1900ba5401ee1ae207491a305da54f525229c Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 22:24:08 +0200
Subject: [PATCH 233/408] gnu: recode: Update to 3.7.5.

* gnu/packages/textutils.scm (recode): Update to 3.7.5.
[native-inputs]: Use python@3 and python-cython@3.
---
 gnu/packages/textutils.scm | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 2da31973f4..c331940592 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2017,2019 Hartmut Goebel 
 ;;; Copyright © 2017 Kei Kebreau 
 ;;; Copyright © 2017 Alex Vong 
-;;; Copyright © 2018 Tobias Geerinckx-Rice 
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 Pierre Neidhardt 
 ;;; Copyright © 2018 Meiyo Peng 
 ;;; Copyright © 2019 Yoshinori Arai 
@@ -89,23 +89,22 @@ to DOS format and vice versa.")
 (define-public recode
   (package
     (name "recode")
-    (version "3.7.1")
+    (version "3.7.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/rrthomas/recode/releases/"
                            "download/v" version "/" name "-" version ".tar.gz"))
        (sha256
-        (base32
-         "0215hfj0rhlh0grg91qfx75pp6z09bpv8211qdxqihniw7y9a4fs"))
+        (base32 "1sl99dfx2b76paq86wv3a0lcy66f1hylf6iy04rzwxj7ccwpsk30"))
        (modules '((guix build utils)))
        (snippet '(begin
                    (delete-file "tests/Recode.c")
                    #t))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("python" ,python-2)
-       ("python2-cython" ,python2-cython)))
+     `(("python" ,python)
+       ("python-cython" ,python-cython)))
     (home-page "https://github.com/rrthomas/recode")
     (synopsis "Text encoding converter")
     (description "The Recode library converts files between character sets and

From 6f2f7bc88aa093f87874fcfaa27366074978d9ee Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Wed, 11 Sep 2019 22:24:36 +0200
Subject: [PATCH 234/408] gnu: recode: Don't use NAME in source URI.

* gnu/packages/textutils.scm (recode)[source]: Hard-code NAME.
---
 gnu/packages/textutils.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index c331940592..9ce01e66ea 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -94,7 +94,7 @@ to DOS format and vice versa.")
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/rrthomas/recode/releases/"
-                           "download/v" version "/" name "-" version ".tar.gz"))
+                           "download/v" version "/recode-" version ".tar.gz"))
        (sha256
         (base32 "1sl99dfx2b76paq86wv3a0lcy66f1hylf6iy04rzwxj7ccwpsk30"))
        (modules '((guix build utils)))

From 0f272518eca06f849cef86d26c294f17edc82c3e Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Wed, 11 Sep 2019 23:29:07 +0200
Subject: [PATCH 235/408] gnu: python-ipython-documentation: Make reproducible.

Fixes .

* gnu/packages/python-xyz.scm (python-ipython)[arguments]: Add phase
"make-docs-reproducible" to remove timestamps from documentation generated in
dependent python-ipython-documentation package.
---
 gnu/packages/python-xyz.scm | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 819b3045a3..00bffca74a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -5399,6 +5399,13 @@ computing.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-docs-reproducible
+           (lambda _
+             (substitute* "IPython/sphinxext/ipython_directive.py"
+               ((".*import datetime") "")
+               ((".*datetime.datetime.now\\(\\)") "")
+               (("%timeit") "# %timeit"))
+             #t))
          ;; Tests can only be run after the library has been installed and not
          ;; within the source directory.
          (delete 'check)

From 86ced7b27197d5f0dc4c09382cb8b3b93dc8cfae Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Wed, 11 Sep 2019 23:58:52 +0200
Subject: [PATCH 236/408] gnu: r-bsgenome-celegans-ucsc-ce6: Use
 bioconductor-uri.

* gnu/packages/bioconductor.scm (r-bsgenome-celegans-ucsc-ce6)[source]: Use
BIOCONDUCTOR-URI.
---
 gnu/packages/bioconductor.scm | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 087ec9bf10..ff691c6e4a 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -50,12 +50,8 @@
     (version "1.4.0")
     (source (origin
               (method url-fetch)
-              ;; We cannot use bioconductor-uri here because this tarball is
-              ;; located under "data/annotation/" instead of "bioc/".
-              (uri (string-append "https://www.bioconductor.org/packages/"
-                                  "release/data/annotation/src/contrib/"
-                                  "BSgenome.Celegans.UCSC.ce6_"
-                                  version ".tar.gz"))
+              (uri (bioconductor-uri "BSgenome.Celegans.UCSC.ce6"
+                                     version 'annotation))
               (sha256
                (base32
                 "0mqzb353xv2c3m3vkb315dkmnxkgczp7ndnknyhpgjlybyf715v9"))))

From 412153bbaf99da8c6a3538a932bd150e28ba4111 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Wed, 11 Sep 2019 23:59:28 +0200
Subject: [PATCH 237/408] gnu: r-bsgenome-celegans-ucsc-ce6: Permit
 substitution.

* gnu/packages/bioconductor.scm (r-bsgenome-celegans-ucsc-ce6)[arguments]:
Remove field.
---
 gnu/packages/bioconductor.scm | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index ff691c6e4a..8279d2a546 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -58,9 +58,6 @@
     (properties
      `((upstream-name . "BSgenome.Celegans.UCSC.ce6")))
     (build-system r-build-system)
-    ;; As this package provides little more than a very large data file it
-    ;; doesn't make sense to build substitutes.
-    (arguments `(#:substitutable? #f))
     (propagated-inputs
      `(("r-bsgenome" ,r-bsgenome)))
     (home-page

From 4913828bb1f1c9f672a49c19090ba4ae8d14e88b Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 11 Sep 2019 19:15:22 +0200
Subject: [PATCH 238/408] gnu: python-language-server: Update to
 0.28.3-1.c3cab77.

* gnu/packages/python-xyz.scm (python-language-server): Update to 0.28.3-1.c3cab77.

Signed-off-by: Maxim Cournoyer 
---
 gnu/packages/python-xyz.scm | 62 ++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 28 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 00bffca74a..8b2023ceba 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -2984,38 +2984,44 @@ Language (TOML) configuration files.")
 Server (PLS).")
     (license license:expat)))
 
+;; XXX: We must use a non-release version since the latest release version
+;; requires python-jedi version < 0.15.
 (define-public python-language-server
-  (package
-    (name "python-language-server")
-    (version "0.28.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "python-language-server" version))
-       (sha256
-        (base32
-         "1qbiij208l6g1l5hzihx8badhmqkxdk0spn7gm7564yg54zdp2g2"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-pluggy" ,python-pluggy)
-       ("python-jsonrpc-server" ,python-jsonrpc-server)
-       ("python-jedi" ,python-jedi)
-       ("python-yapf" ,python-yapf)
-       ("python-pyflakes" ,python-pyflakes)
-       ("python-pydocstyle" ,python-pydocstyle)
-       ("python-pycodestyle" ,python-pycodestyle)
-       ("python-mccabe" ,python-mccabe)
-       ("python-rope" ,python-rope)
-       ("python-autopep8" ,python-autopep8)
-       ("python-pylint" ,python-pylint)))
-    (home-page "https://github.com/palantir/python-language-server")
-    (synopsis "Python implementation of the Language Server Protocol")
-    (description
-     "The Python Language Server (pyls) is an implementation of the Python 3
+  (let ((commit "c3cab77a85b1de4af1aec1bafea6a7320d6baec5")
+        (revision "1"))
+    (package
+      (name "python-language-server")
+      (version (git-version "0.28.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/palantir/python-language-server.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "1q0xdwgln09sh58j0ryygj92hfgdhwcs57zjvqihya23jr5v0bz4"))))
+      (build-system python-build-system)
+      (propagated-inputs
+       `(("python-pluggy" ,python-pluggy)
+         ("python-jsonrpc-server" ,python-jsonrpc-server)
+         ("python-jedi" ,python-jedi)
+         ("python-yapf" ,python-yapf)
+         ("python-pyflakes" ,python-pyflakes)
+         ("python-pydocstyle" ,python-pydocstyle)
+         ("python-pycodestyle" ,python-pycodestyle)
+         ("python-mccabe" ,python-mccabe)
+         ("python-rope" ,python-rope)
+         ("python-autopep8" ,python-autopep8)
+         ("python-pylint" ,python-pylint)))
+      (home-page "https://github.com/palantir/python-language-server")
+      (synopsis "Python implementation of the Language Server Protocol")
+      (description
+       "The Python Language Server (pyls) is an implementation of the Python 3
 language specification for the Language Server Protocol (LSP).  This tool is
 used in text editing environments to provide a complete and integrated
 feature-set for programming Python effectively.")
-    (license license:expat)))
+      (license license:expat))))
 
 (define-public python-black
   (package

From 63d57404b3d29fc9a4542cf183a957c714fd0ecd Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Thu, 12 Sep 2019 12:06:01 +0200
Subject: [PATCH 239/408] gnu: texlive-xypic: Install all files.

Reported by numerobis on the #guix IRC channel.

* gnu/packages/tex.scm (texlive-xypic)[source]: Install "tex/generic/xypic"
files.
[arguments]: Remove #:tex-directory.
---
 gnu/packages/tex.scm | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 43e1c44c72..c293d2f661 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -6817,17 +6817,14 @@ titles.")
                          "/fonts/afm/public/xypic/"
                          "/fonts/tfm/public/xypic/"
                          "/fonts/type1/public/xypic/"
-
-                         ;;"/tex/generic/xypic/" ; I guess these are generated
-                         )
+                         "/tex/generic/xypic/")
                    (base32
-                    "0sqkkvjzzsiazvh8803qqyrcv4is3m1qs9x9v2m35jjikbqc08y8"))))
+                    "09b51bbm189xh7039h5n8nmab5nn2bybhh26qjn08763m80zdhjg")
+                   #:trivial? #t)))
     (package
       (inherit template)
       (arguments
        (substitute-keyword-arguments (package-arguments template)
-         ((#:tex-directory _ #t)
-          "tex/generic/xypic")
          ((#:phases phases)
           `(modify-phases ,phases
              (delete 'reset-gzip-timestamps)))))

From 8b35c8cd612032ebabfd04a8247d588c69acf463 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Thu, 12 Sep 2019 12:07:20 +0200
Subject: [PATCH 240/408] gnu: hypre: Update texlive-union.

* gnu/packages/maths.scm (hypre)[native-inputs]: Replace texlive-generic-xypic
and texlive-fonts-xypic with texlive-xypic; add texlive-cm to the
texlive-union.
---
 gnu/packages/maths.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c81e999daa..aa94d057cf 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3828,8 +3828,8 @@ set.")
      `(("doc++" ,doc++)
        ("netpbm" ,netpbm)
        ("perl" ,perl)                   ; needed to run 'ppmquant' during tests
-       ("texlive" ,(texlive-union (list texlive-generic-xypic
-                                        texlive-fonts-xypic
+       ("texlive" ,(texlive-union (list texlive-xypic
+                                        texlive-cm
                                         texlive-latex-hyperref
                                         texlive-bibtex)))
        ("ghostscript" ,ghostscript)))

From 7faed56c443f89dc3a802fb2a130c73cbb1b33b5 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 12 Sep 2019 16:16:07 +0200
Subject: [PATCH 241/408] gnu: openconnect: Update to 8.05 [fixes
 CVE-2019-16239].

* gnu/packages/vpn.scm (openconnect): Update to 8.05.
---
 gnu/packages/vpn.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 3df9873781..5f78c4365a 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -239,13 +239,13 @@ the user specifically asks to proxy, so the @dfn{VPN} interface no longer
 (define-public openconnect
   (package
    (name "openconnect")
-   (version "8.04")
+   (version "8.05")
    (source (origin
             (method url-fetch)
             (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/"
                                 "openconnect-" version ".tar.gz"))
             (sha256
-             (base32 "07zqcl2ykdc4mgix9sbv4jgpg7cybifxfgrycvf99ckq7xp9r5wq"))))
+             (base32 "14i9q727c2zc9xhzp1a9hz3gzb5lwgsslbhircm84dnbs192jp1k"))))
    (build-system gnu-build-system)
    (propagated-inputs
     `(("libxml2" ,libxml2)

From 237d4cf73c0a4b7b25653c01a6003e1db3da1716 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Thu, 12 Sep 2019 01:30:13 +0200
Subject: [PATCH 242/408] gnu: gfbgraph: Don't use NAME in source URI.

* gnu/packages/gnome.scm (gfbgraph)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 8341bd6802..5dc18b3bb5 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7231,9 +7231,9 @@ compiled.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "mirror://gnome/sources/" name "/"
+                    "mirror://gnome/sources/gfbgraph/"
                     (version-major+minor version) "/"
-                    name "-" version ".tar.xz"))
+                    "gfbgraph-" version ".tar.xz"))
               (sha256
                (base32
                 "1dp0v8ia35fxs9yhnqpxj3ir5lh018jlbiwifjfn8ayy7h47j4fs"))))

From 01a53e0b378aca02c429ebfb5018237867a6d024 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Fri, 13 Sep 2019 00:05:09 +0900
Subject: [PATCH 243/408] gnu: python-pathpy: Add a missing propagated input.

This fixes the build of 'python-pytest-shutil', amongst others.

* gnu/packages/python-xyz.scm (python-pathpy)[propagated-inputs]: Add
python-importlib-metadata.
---
 gnu/packages/python-xyz.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 8b2023ceba..74abf336c8 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -4972,7 +4972,8 @@ releases.")
     (outputs '("out" "doc"))
     (build-system python-build-system)
     (propagated-inputs
-     `(("python-appdirs" ,python-appdirs)))
+     `(("python-appdirs" ,python-appdirs)
+       ("python-importlib-metadata" ,python-importlib-metadata)))
     (native-inputs
      `(("python-setuptools-scm" ,python-setuptools-scm)
        ("python-sphinx" ,python-sphinx)

From e2fb29b792cb9cf2416c6292ece56c09a89bdcc9 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Wed, 11 Sep 2019 23:22:10 +0900
Subject: [PATCH 244/408] gnu: python-pytest-virtualenv: Enable tests.

* gnu/packages/python-check.scm (python-pytest-virtualenv)
[phases]{patch-virtualenv-executable}: New phase.
[propagated-inputs]: Move python-virtualenv from here...
[inputs]: ...to here.
---
 gnu/packages/python-check.scm | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 676dae5430..b8aaef9b77 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2019 Ricardo Wurmus 
 ;;; Copyright © 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2019 Efraim Flashner 
+;;; Copyright © 2019 Maxim Cournoyer 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -226,11 +227,27 @@ testing framework.")
         (base32
          "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12"))))
     (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; one test fails; can't find virtualenv
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Reference the virtualenv executable directly, to avoid the need
+         ;; for PYTHONPATH, which gets cleared when instantiating a new
+         ;; virtualenv with pytest-virtualenv.
+         (add-after 'unpack 'patch-virtualenv-executable
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((virtualenv (assoc-ref inputs "python-virtualenv"))
+                    (virtualenv-bin (string-append virtualenv
+                                                   "/bin/virtualenv")))
+               (substitute* "pytest_virtualenv.py"
+                 (("^DEFAULT_VIRTUALENV_FIXTURE_EXECUTABLE.*$")
+                  (format #f "DEFAULT_VIRTUALENV_FIXTURE_EXECUTABLE = '~a'"
+                          virtualenv-bin)))
+               #t))))))
     (propagated-inputs
-     `(("python-virtualenv" ,python-virtualenv)
-       ("python-pytest-shutil" ,python-pytest-shutil)
+     `(("python-pytest-shutil" ,python-pytest-shutil)
        ("python-pytest-fixture-config" ,python-pytest-fixture-config)))
+    (inputs
+     `(("python-virtualenv" ,python-virtualenv)))
     (native-inputs
      `(("python-mock" ,python-mock)
        ("python-pytest" ,python-pytest)

From abed5df7774a637a0104ca05254e8f97226d38d5 Mon Sep 17 00:00:00 2001
From: Paul Garlick 
Date: Thu, 12 Sep 2019 16:12:31 +0100
Subject: [PATCH 245/408] gnu: gmsh: Fetch source from Git.

* gnu/packages/maths.scm (gmsh)[source]: Switch to GIT-FETCH.
---
 gnu/packages/maths.scm | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index aa94d057cf..487f53ead1 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1717,11 +1717,16 @@ This is the certified version of the Open Cascade Technology (OCCT) library.")
     (version "2.16.0")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "http://gmsh.info/src/gmsh-"
-                          version "-source.tgz"))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://gitlab.onelab.info/gmsh/gmsh.git")
+            (commit
+             (string-append "gmsh_"
+                            (string-map (lambda (x) (if (eq? x #\.) #\_ x))
+                                        version)))))
+      (file-name (git-file-name name version))
       (sha256
-       (base32 "1slf0bfkwrcgn6296wb4qhbk4ahz6i4wfb10hnim08x05vrylag8"))
+       (base32 "08rq4jajwmlpivnm9yifz2jhaivnz065lnk0h2zv773nwl9wf162"))
       (modules '((guix build utils)))
       (snippet
        ;; Remove non-free METIS code

From f58b2f38e4dfdbb8473fb2816d44fae6ad9cbc79 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Thu, 12 Sep 2019 20:20:26 +0300
Subject: [PATCH 246/408] build: cargo-build-system: Strip store hash from
 vendor-dir.

* guix/build/cargo-build-system.scm (configure): When copying the
sources into the vendor-dir strip off the hash before the package name.
---
 guix/build/cargo-build-system.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index f173b64c83..0134997c27 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -99,7 +99,7 @@ Cargo.toml file present at its root."
   (for-each
     (match-lambda
       ((name . path)
-       (let* ((basepath (basename path))
+       (let* ((basepath (string-drop (basename path) 33))
               (crate-dir (string-append vendor-dir "/" basepath)))
          (and (crate-src? path)
               ;; Gracefully handle duplicate inputs

From 5ccec77176b7e0c67ed58c8849e5e76f3dd79a88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 12 Sep 2019 22:17:43 +0200
Subject: [PATCH 247/408] file-systems: Add /var/run/nscd to
 '%network-file-mappings'.

This allows containers created by "guix environment -CN" or by
"guix system container -N" to talk to the host nscd.

* gnu/system/file-systems.scm (%network-file-mappings): Add
"/var/run/nscd".
* gnu/build/shepherd.scm (default-mounts)[nscd-socket]: Remove.
* gnu/system/linux-container.scm (container-script)[nscd-run-directory]
[nscd-mapping, nscd-os, nscd-specs]: Remove.
[script]: Filter out from SPECS bind-mounts where the device does not
exist.
* guix/scripts/environment.scm (launch-environment/container)
[optional-mapping->fs]: New procedure.
[mappings]: Remove %NETWORK-FILE-MAPPINGS.
[file-systems]: Add %NETWORK-FILE-MAPPINGS here, filtered through
'optional-mapping->fs'.
---
 gnu/build/shepherd.scm         |  8 +-------
 gnu/system/file-systems.scm    |  2 +-
 gnu/system/linux-container.scm | 33 +++++++++++++--------------------
 guix/scripts/environment.scm   | 13 ++++++++-----
 4 files changed, 23 insertions(+), 33 deletions(-)

diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index cf68f2108b..b32765ed5e 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -67,16 +67,10 @@
           (file-system-mapping
            (source "/etc/group") (target source))))
 
-  (define nscd-socket
-    (file-system-mapping
-     (source "/var/run/nscd") (target source)
-     (writable? #t)))
-
   (append (cons (tmpfs "/tmp") %container-file-systems)
           (let ((mappings `(,@(if (memq 'net namespaces)
                                   '()
-                                  (cons nscd-socket
-                                        %network-file-mappings))
+                                  %network-file-mappings)
                             ,@(if (and (memq 'mnt namespaces)
                                        (not (memq 'user namespaces)))
                                   accounts
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index d11b36f25d..6cf6ccc53e 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -508,7 +508,7 @@ a bind mount."
                  ;; symlink to a file in a tmpfs which, for an unknown reason,
                  ;; cannot be bind mounted read-only within the container.
                  (writable? (string=? file "/etc/resolv.conf"))))
-              %network-configuration-files))
+              (cons "/var/run/nscd" %network-configuration-files)))
 
 (define (file-system-type-predicate type)
   "Return a predicate that, when passed a file system, returns #t if that file
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 6273cee3d3..451a72762c 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -147,13 +147,6 @@ containerized OS.  EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
   "Return a derivation of a script that runs OS as a Linux container.
 MAPPINGS is a list of  objects that specify the files/directories
 that will be shared with the host system."
-  (define nscd-run-directory "/var/run/nscd")
-
-  (define nscd-mapping
-    (file-system-mapping
-     (source nscd-run-directory)
-     (target nscd-run-directory)))
-
   (define (mountable-file-system? file-system)
     ;; Return #t if FILE-SYSTEM should be mounted in the container.
     (and (not (string=? "/" (file-system-mount-point file-system)))
@@ -168,12 +161,7 @@ that will be shared with the host system."
               os (cons %store-mapping mappings)
               #:shared-network? shared-network?
               #:extra-file-systems %container-file-systems))
-         (nscd-os (containerized-operating-system
-                   os (cons* nscd-mapping %store-mapping mappings)
-                   #:shared-network? shared-network?
-                   #:extra-file-systems %container-file-systems))
-         (specs (os-file-system-specs os))
-         (nscd-specs (os-file-system-specs nscd-os)))
+         (specs (os-file-system-specs os)))
 
     (define script
       (with-imported-modules (source-module-closure
@@ -182,14 +170,19 @@ that will be shared with the host system."
         #~(begin
             (use-modules (gnu build linux-container)
                          (gnu system file-systems) ;spec->file-system
-                         (guix build utils))
+                         (guix build utils)
+                         (srfi srfi-1))
 
-            (call-with-container
-                (map spec->file-system
-                     (if (and #$shared-network?
-                              (file-exists? #$nscd-run-directory))
-                         '#$nscd-specs
-                         '#$specs))
+            (define file-systems
+              (filter-map (lambda (spec)
+                            (let* ((fs    (spec->file-system spec))
+                                   (flags (file-system-flags fs)))
+                              (and (or (not (memq 'bind-mount flags))
+                                       (file-exists? (file-system-device fs)))
+                                   fs)))
+                          '#$specs))
+
+            (call-with-container file-systems
               (lambda ()
                 (setenv "HOME" "/root")
                 (setenv "TMPDIR" "/tmp")
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index cf58768300..535f181bfd 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -462,6 +462,10 @@ host file systems to mount inside the container.  If USER is not #f, each
 target of USER-MAPPINGS will be re-written relative to '/home/USER', and USER
 will be used for the passwd entry.  LINK-PROFILE? creates a symbolic link from
 ~/.guix-profile to the environment profile."
+  (define (optional-mapping->fs mapping)
+    (and (file-exists? (file-system-mapping-source mapping))
+         (file-system-mapping->bind-mount mapping)))
+
   (mlet %store-monad ((reqs (inputs->requisites
                              (list (direct-store-path bash) profile))))
     (return
@@ -498,11 +502,6 @@ will be used for the passwd entry.  LINK-PROFILE? creates a symbolic link from
                                   (target cwd)
                                   (writable? #t)))
                            '())))
-              ;; When in Rome, do as Nix build.cc does: Automagically
-              ;; map common network configuration files.
-              (if network?
-                  %network-file-mappings
-                  '())
               ;; Mappings for the union closure of all inputs.
               (map (lambda (dir)
                      (file-system-mapping
@@ -511,6 +510,10 @@ will be used for the passwd entry.  LINK-PROFILE? creates a symbolic link from
                       (writable? #f)))
                    reqs)))
             (file-systems (append %container-file-systems
+                                  (if network?
+                                      (filter-map optional-mapping->fs
+                                                  %network-file-mappings)
+                                      '())
                                   (map file-system-mapping->bind-mount
                                        mappings))))
        (exit/status

From da966a7a3d8a5c3fbc2f4105b95c4af17b2bbfdc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 12 Sep 2019 22:23:35 +0200
Subject: [PATCH 248/408] linux-container: Exclude more services when sharing
 networking with the host.

* gnu/system/linux-container.scm (containerized-operating-system)[useless-services]:
Add more services to the list when SHARED-NETWORK? is true.
---
 gnu/system/linux-container.scm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 451a72762c..cca626be06 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -30,6 +30,7 @@
   #:use-module (gnu build linux-container)
   #:use-module (gnu services)
   #:use-module (gnu services base)
+  #:use-module (gnu services networking)
   #:use-module (gnu services shepherd)
   #:use-module (gnu system)
   #:use-module (gnu system file-systems)
@@ -109,7 +110,11 @@ containerized OS.  EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
             ;; Remove nscd service if network is shared with the host.
             (if shared-network?
                 (list nscd-service-type
-                      static-networking-service-type)
+                      static-networking-service-type
+                      dhcp-client-service-type
+                      network-manager-service-type
+                      connman-service-type
+                      wicd-service-type)
                 (list))))
 
   (operating-system

From 3d8424a5ad96452ae2bfd98d970f6047cc17b5fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 12 Sep 2019 22:39:01 +0200
Subject: [PATCH 249/408] services: Fix /usr/bin/env special file target.

This is a followup to a9162155975a131afa1e6a44262afbb7af91f7fd.

* gnu/services/base.scm (%base-services): Fix "/usr/bin/env" target.
---
 gnu/services/base.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 97c53eeaf3..25716ef152 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -2428,6 +2428,6 @@ to handle."
                  `(("/bin/sh" ,(file-append (canonical-package bash)
                                             "/bin/sh"))
                    ("/usr/bin/env" ,(file-append (canonical-package coreutils)
-                                                 "/usr/bin/env"))))))
+                                                 "/bin/env"))))))
 
 ;;; base.scm ends here

From d236cd16a7173278ca69578d3e7ce4d1ce55e04c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Thu, 12 Sep 2019 23:06:12 +0200
Subject: [PATCH 250/408] linux-container: "run-container" scripts shows the
 container's PID.

* gnu/build/linux-container.scm (call-with-container): Add
 #:process-spawned-hook and honor it.
* gnu/system/linux-container.scm (container-script)[script]:
Define 'explain' and pass it as #:process-spawned-hook'.
---
 gnu/build/linux-container.scm  |  7 +++++--
 gnu/system/linux-container.scm | 19 +++++++++++++++++--
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 6ccb924861..87695c98fd 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -299,8 +299,10 @@ delete it when leaving the dynamic extent of this call."
         (false-if-exception (delete-file-recursively tmp-dir))))))
 
 (define* (call-with-container mounts thunk #:key (namespaces %namespaces)
-                              (host-uids 1) (guest-uid 0) (guest-gid 0))
-  "Run THUNK in a new container process and return its exit status.
+                              (host-uids 1) (guest-uid 0) (guest-gid 0)
+                              (process-spawned-hook (const #t)))
+  "Run THUNK in a new container process and return its exit status; call
+PROCESS-SPAWNED-HOOK with the PID of the new process that has been spawned.
 MOUNTS is a list of  objects that specify file systems to mount
 inside the container.  NAMESPACES is a list of symbols corresponding to
 the identifiers for Linux namespaces: mnt, ipc, uts, pid, user, and net.  By
@@ -329,6 +331,7 @@ load path must be adjusted as needed."
            (false-if-exception
             (kill pid SIGKILL))))
 
+       (process-spawned-hook pid)
        (match (waitpid pid)
          ((_ . status) status))))))
 
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index cca626be06..c6124cd223 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -171,11 +171,15 @@ that will be shared with the host system."
     (define script
       (with-imported-modules (source-module-closure
                               '((guix build utils)
-                                (gnu build linux-container)))
+                                (gnu build linux-container)
+                                (guix i18n)
+                                (guix diagnostics)))
         #~(begin
             (use-modules (gnu build linux-container)
                          (gnu system file-systems) ;spec->file-system
                          (guix build utils)
+                         (guix i18n)
+                         (guix diagnostics)
                          (srfi srfi-1))
 
             (define file-systems
@@ -187,6 +191,16 @@ that will be shared with the host system."
                                    fs)))
                           '#$specs))
 
+            (define (explain pid)
+              ;; XXX: We can't quite call 'bindtextdomain' so there's actually
+              ;; no i18n.
+              (info (G_ "system container is running as PID ~a~%") pid)
+              ;; XXX: Should we recommend 'guix container exec'?  It's more
+              ;; verbose and doesn't bring much.
+              (info (G_ "Run 'sudo nsenter -a -t ~a' to get a shell into it.~%")
+                    pid)
+              (newline (guix-warning-port)))
+
             (call-with-container file-systems
               (lambda ()
                 (setenv "HOME" "/root")
@@ -201,7 +215,8 @@ that will be shared with the host system."
               #:host-uids 65536
               #:namespaces (if #$shared-network?
                                (delq 'net %namespaces)
-                               %namespaces)))))
+                               %namespaces)
+              #:process-spawned-hook explain))))
 
     (gexp->script "run-container" script)))
 

From 2151e04c1acf48c3fb4ec5a2703a9a88f2323d2e Mon Sep 17 00:00:00 2001
From: Tim Gesthuizen 
Date: Mon, 9 Sep 2019 18:48:31 +0200
Subject: [PATCH 251/408] gnu: Add emacs-doom-themes.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/emacs-xyz.scm (emacs-doom-themes): New variable.

Co-authored-by: Brett Gilio 
Signed-off-by: Ludovic Courtès 
---
 gnu/packages/emacs-xyz.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b5a20680ab..3c63663263 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -18199,3 +18199,37 @@ You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
 @code{tao-theme-scale-filter-fn}, for edge filter; and
 @code{tao-theme-use-height}.")
       (license license:gpl3+))))
+
+(define-public emacs-doom-themes
+  (package
+    (name "emacs-doom-themes")
+    (version "2.1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/hlissner/emacs-doom-themes.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "042pzcdhxi2z07jcscgjbaki9nrrm0cbgbbrnymd1r4q8ckkn8l9"))))
+    (build-system emacs-build-system)
+    (native-inputs
+     `(("emacs-ert-runner" ,emacs-ert-runner)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("ert-runner")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'move-themes
+           (lambda _
+             ;; Move the source files to the top level, which is in the
+             ;; EMACSLOADPATH.
+             (for-each (lambda (f)
+                         (rename-file f (basename f)))
+                       (find-files "./themes" ".*\\.el$"))
+             #t)))))
+    (synopsis "Wide collection of color themes for Emacs")
+    (description "Emacs-doom-themes contains numerous popular color themes for
+Emacs that integrate with major modes like Org-mode.")
+    (home-page "https://github.com/hlissner/emacs-doom-themes")
+    (license license:expat)))

From 86ce3691e1439ca446c2089bf4f24b36b23212d5 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Wed, 11 Sep 2019 20:52:28 +0200
Subject: [PATCH 252/408] gnu: emacs-interactive-align: Update to 0.4.2.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/emacs-xyz.scm (emacs-interactive-align): Update to 0.4.2.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/emacs-xyz.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 3c63663263..cbda68c350 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -13189,16 +13189,17 @@ compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
 (define-public emacs-interactive-align
   (package
     (name "emacs-interactive-align")
-    (version "0.1.0")
+    (version "0.4.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/mkcms/interactive-align/"
-                           "archive/" "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mkcms/interactive-align.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0sibpgb4lp6yy3pziak8f3hz4b28yj0dqy2nzh51z3d0b63h528m"))))
+         "0bh03w91i622hbar5dcq631ndxx1y8kd3h655pgw1g0lqkv1mlnc"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mkcms/interactive-align/")
     (synopsis "Interactive align-regexp command in Emacs")

From 16fddf17f5ba90cd1b3c203a5fd8ec5b652fddb7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Wiktor=20=C5=BBelazny?= 
Date: Thu, 12 Sep 2019 18:44:57 +0200
Subject: [PATCH 253/408] gnu: Add r-assertr.

* gnu/packages/cran.scm (r-assertr): New variable.

Signed-off-by: Ricardo Wurmus 
---
 gnu/packages/cran.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 6ef2066429..aa1135d0e4 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2018 Marius Bakke 
 ;;; Copyright © 2018, 2019 Brett Gilio 
 ;;; Copyright © 2019 Nicolò Balzarotti 
+;;; Copyright © 2019 Wiktor Żelazny 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -15365,3 +15366,30 @@ common graph algorithms.")
 removing cell free mRNA contamination (the \"soup\") from droplet based single
 cell RNA-seq experiments.")
       (license license:gpl2))))
+
+(define-public r-assertr
+  (package
+    (name "r-assertr")
+    (version "2.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "assertr" version))
+       (sha256
+        (base32
+         "0g4ii6vhp0155a29ljhs64a09x0nzy5ybvwwchhk4mkcgsvnvfkj"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-mass" ,r-mass)
+       ("r-rlang" ,r-rlang)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))           ; needed for vignette
+    (home-page "https://github.com/ropensci/assertr")
+    (synopsis "Assertive programming for R analysis pipelines")
+    (description
+     "This package provides functionality to assert conditions that have to be
+met so that errors in data used in analysis pipelines can fail quickly.  It is
+similar to @code{stopifnot()} but more powerful, friendly, and easier for use
+in pipelines.")
+    (license license:expat)))

From 5ea654cfe030165efadf1f1dcfb2adef66a1f44f Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Thu, 12 Sep 2019 21:59:10 +0200
Subject: [PATCH 254/408] gnu: python-matplotlib: Update to 3.1.1.

* gnu/packages/python-xyz.scm (python-matplotlib): Update to 3.1.1.
[native-inputs]: Remove python-nose; add python-pytest and unzip; add
jquery-ui.
[arguments]: Add build phases "fix-and-disable-failing-tests" and
"install-jquery-ui", and move the "check" phase after the "install" phase;
use the default backend in setup.cfg.
(python2-matplotlib): Keep at version 2.2.3.
(python-matplotlib-documentation)[arguments]: Remove "check" phase.
---
 gnu/packages/python-xyz.scm | 73 +++++++++++++++++++++++++++++++++----
 1 file changed, 66 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 74abf336c8..1a4c804f37 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3806,14 +3806,14 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
 (define-public python-matplotlib
   (package
     (name "python-matplotlib")
-    (version "2.2.3")
+    (version "3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "matplotlib" version))
        (sha256
         (base32
-         "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
+         "14qc109dibp32xfd9lah54djc0rc76fhbsj9cwyb328lzqmd5sqz"))))
     (build-system python-build-system)
     (propagated-inputs ; the following packages are all needed at run time
      `(("python-cycler" ,python-cycler)
@@ -3830,7 +3830,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
        ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
        ;; object. For this reason we need to import both libraries.
-       ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
+       ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi
        ("python-pycairo" ,python-pycairo)
        ("python-cairocffi" ,python-cairocffi)))
     (inputs
@@ -3845,11 +3845,59 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ("tk" ,tk)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("python-nose" ,python-nose)
-       ("python-mock" ,python-mock)))
+       ("python-pytest" ,python-pytest)
+       ("python-mock" ,python-mock)
+       ("unzip" ,unzip)
+       ("jquery-ui"
+        ,(origin
+           (method url-fetch)
+           (uri "https://jqueryui.com/resources/download/jquery-ui-1.12.1.zip")
+           (sha256
+            (base32
+             "0kb21xf38diqgxcdi1z3s9ssq36pldvyqxy56hn6pcva6rs3c8zq"))))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         ;; XXX We disable all image comparison tests because we're using a
+         ;; newer version of FreeType than matplotlib expects.  This leads to
+         ;; minor differences throughout the tests.
+         (add-after 'unpack 'fix-and-disable-failing-tests
+           (lambda _
+             (substitute* (append (find-files "lib/matplotlib/tests/"
+                                              "test_.*\\.py$")
+                                  (find-files "lib/mpl_toolkits/tests"
+                                              "test_.*\\.py$"))
+               (("^from matplotlib" match)
+                (string-append "import pytest\n" match))
+               (("( *)@image_comparison" match indent)
+                (string-append indent
+                               "@pytest.mark.skip(reason=\"unknown minor image differences\")\n"
+                               match)))
+             (substitute* "lib/matplotlib/tests/test_animation.py"
+               (("/bin/sh") (which "sh")))
+             (for-each delete-file
+                       ;; test_normal_axes, test_get_tightbbox_polar
+                       '("lib/matplotlib/tests/test_axes.py"
+                         ;; test_outward_ticks
+                         "lib/matplotlib/tests/test_tightlayout.py"
+                         ;; Fontconfig returns no fonts.
+                         "lib/matplotlib/tests/test_font_manager.py"))
+             #t))
+         (add-before 'install 'install-jquery-ui
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((dir (string-append (assoc-ref outputs "out")
+                                       "/lib/python3.7/site-packages/matplotlib/backends/web_backend/")))
+               (mkdir-p dir)
+               (invoke "unzip"
+                       (assoc-ref inputs "jquery-ui")
+                       "-d" dir))
+             #t))
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python" "tests.py" "-v"
+                     "-m" "not network")))
          (add-before 'build 'configure-environment
            (lambda* (#:key outputs inputs #:allow-other-keys)
              (let ((cairo (assoc-ref inputs "cairo")))
@@ -3861,8 +3909,8 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
                  (lambda (port)
                    (format port "[directories]~%
 basedirlist = ~a,~a~%
- [rc_options]~%
-backend = TkAgg~%"
+[packages]~%
+tests = True~%"
                         (assoc-ref inputs "tcl")
                         (assoc-ref inputs "tk")))))
              #t)))))
@@ -3881,6 +3929,14 @@ toolkits.")
   (let ((matplotlib (package-with-python2
                      (strip-python2-variant python-matplotlib))))
     (package (inherit matplotlib)
+      (version "2.2.3")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (pypi-uri "matplotlib" version))
+         (sha256
+          (base32
+           "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
       ;; Make sure to use special packages for Python 2 instead
       ;; of those automatically rewritten by package-with-python2.
       (propagated-inputs
@@ -3930,6 +3986,9 @@ toolkits.")
      `(#:tests? #f ; we're only generating documentation
        #:phases
        (modify-phases %standard-phases
+         ;; The tests in python-matplotlib are run after the install phase, so
+         ;; we need to delete the extra phase here.
+         (delete 'check)
          (replace 'build
            (lambda _
              (chdir "doc")

From bcb22b3624e677231b50029fea63e3b6e4978b2d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Thu, 12 Sep 2019 23:00:22 +0200
Subject: [PATCH 255/408] gnu: Add python-sphinx-copybutton.

* gnu/packages/sphinx.scm (python-sphinx-copybutton): New variable.
---
 gnu/packages/sphinx.scm | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 5ec769388a..9bd1e8d421 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 David Thompson 
-;;; Copyright © 2015, 2017 Ricardo Wurmus 
+;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus 
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari 
 ;;; Copyright © 2016 Hartmut Goebel 
 ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke 
@@ -163,6 +163,25 @@ sources.")
 Apple help books.")
     (license license:bsd-2)))
 
+(define-public python-sphinx-copybutton
+  (package
+    (name "python-sphinx-copybutton")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sphinx-copybutton" version))
+       (sha256
+        (base32
+         "1bk006nv5s9ym6v67cxd4d2wvd8wm6czqi21mqcs33risygksncl"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/choldgraf/sphinx-copybutton")
+    (synopsis "Sphinx extension to add \"copy\" buttons to code blocks")
+    (description
+     "This package provides a small sphinx extension to add \"copy\" buttons
+to code blocks.")
+    (license license:expat)))
+
 (define-public python-sphinxcontrib-devhelp
   (package
     (name "python-sphinxcontrib-devhelp")

From 5ad0a4522116007420aeb288f76da241f43cb6bf Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Thu, 12 Sep 2019 23:00:39 +0200
Subject: [PATCH 256/408] gnu: python-matplotlib-documentation: Add missing
 input.

* gnu/packages/python-xyz.scm (python-matplotlib-documentation)[native-inputs]:
Add python-sphinx-copybutton.
(python2-matplotlib-documentation)[native-inputs]: Remove
python-sphinx-copybutton.
---
 gnu/packages/python-xyz.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1a4c804f37..4541604873 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3960,6 +3960,7 @@ toolkits.")
      `(("python-matplotlib" ,python-matplotlib)
        ("python-colorspacious" ,python-colorspacious)
        ("python-sphinx" ,python-sphinx)
+       ("python-sphinx-copybutton" ,python-sphinx-copybutton)
        ("python-sphinx-gallery" ,python-sphinx-gallery)
        ("python-numpydoc" ,python-numpydoc)
        ("python-ipython" ,python-ipython)
@@ -4037,7 +4038,12 @@ toolkits.")
     (license (package-license python-matplotlib))))
 
 (define-public python2-matplotlib-documentation
-  (package-with-python2 python-matplotlib-documentation))
+  (let ((parent (package-with-python2 python-matplotlib-documentation)))
+    (package
+      (inherit parent)
+      (native-inputs
+       (alist-delete "python-sphinx-copybutton"
+                     (package-native-inputs parent))))))
 
 (define-public python-matplotlib-venn
   (package

From ba05be22495478c6ea3307d0dde6dd635a84e7cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Fri, 13 Sep 2019 10:10:37 +0200
Subject: [PATCH 257/408] gnu: openblas: Set 'NUM_THREADS'.

Until now, OpenBLAS would use at most the N threads, where N is the
number of cores that happened to be available on the build
machine (typically N=8).

* gnu/packages/maths.scm (openblas/fixed-num-threads): New variable.
(openblas)[replacement]: New field.
(openblas-ilp64): Use 'package/inherit'.
---
 gnu/packages/maths.scm | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 487f53ead1..761cb70abd 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3096,6 +3096,10 @@ parts of it.")
 
 (define-public openblas
   (package
+    ;; TODO: Incorporate 'openblas/fixed-num-threads' changes on the next
+    ;; rebuild cycle.
+    (replacement openblas/fixed-num-threads)
+
     (name "openblas")
     (version "0.3.5")
     (source
@@ -3166,7 +3170,7 @@ parts of it.")
     (license license:bsd-3)))
 
 (define-public openblas-ilp64
-  (package (inherit openblas)
+  (package/inherit openblas
     (name "openblas-ilp64")
     (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux"))
     (arguments
@@ -3177,6 +3181,24 @@ parts of it.")
     (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
     (license license:bsd-3)))
 
+(define openblas/fixed-num-threads
+  ;; TODO: Move that to 'openblas' proper on the next rebuild cycle.
+  (package
+    (inherit openblas)
+    (version (match (string-split (package-version openblas) #\.)
+               ((numbers ... (= string-length len))
+                (string-join (append numbers
+                                     (list (make-string len #\a)))
+                             "."))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments openblas)
+       ((#:make-flags flags ''())
+        ;; This is the maximum number of threads OpenBLAS will ever use (that
+        ;; is, if $OPENBLAS_NUM_THREADS is greater than that, then NUM_THREADS
+        ;; is used.)  If we don't set it, the makefile sets it to the number
+        ;; of cores of the build machine, which is obviously wrong.
+        `(cons "NUM_THREADS=128" ,flags))))))
+
 (define* (make-blis implementation #:optional substitutable?)
   "Return a BLIS package with the given IMPLEMENTATION (see config/ in the
 source tree for a list of implementations.)

From a00a3132c7c5585e75862b479be1c63fde36b29d Mon Sep 17 00:00:00 2001
From: L p R n d n 
Date: Mon, 19 Aug 2019 14:01:52 +0200
Subject: [PATCH 258/408] gnu: Thunar: Update to 1.8.9.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/xfce.scm (thunar): Update to 1.8.9.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/xfce.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 3a8b223b9c..c71285c7bd 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -642,7 +642,7 @@ like appearance, display, keyboard and mouse settings.")
 (define-public thunar
   (package
     (name "thunar")
-    (version "1.8.7")
+    (version "1.8.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/xfce/"
@@ -650,7 +650,7 @@ like appearance, display, keyboard and mouse settings.")
                                   "Thunar-" version ".tar.bz2"))
               (sha256
                (base32
-                "0afkp528mwwa2m18m39mvw53qgaijyynrw9wwwiyxgjiczq3l0ry"))))
+                "1fah2d7v3a7fp28xa5wv896rap1iad9q9y04qchca09mq1x8wxbs"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)

From f69f37d54a677c1816b225ead7503a4e3cfee24d Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" 
Date: Wed, 11 Sep 2019 23:08:37 -0400
Subject: [PATCH 259/408] gnu: Add sh-z shell tool
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/shellutils.scm (sh-z): New variable.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/shellutils.scm | 38 +++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index f7542ea759..f901eaaa8f 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Stefan Reichör 
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 Benjamin Slade 
+;;; Copyright © 2019 Collin J. Doering 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +39,43 @@
   #:use-module (guix build-system go)
   #:use-module (guix build-system python))
 
+(define-public sh-z
+  (package
+    (name "sh-z")
+    (version "1.11")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rupa/z.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13zbgkj6y0qhvn5jpkrqbd4jjxjr789k228iwma5hjfh1nx7ghyb"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests provided
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (man (string-append out "/share/man/man1"))
+                    (bin (string-append out "/bin")))
+               (install-file "z.sh" bin)
+               (chmod (string-append bin "/z.sh") #o755)
+               (install-file "z.1" man)
+               #t))))))
+    (synopsis "Jump about directories")
+    (description
+     "Tracks your most used directories, based on ``frecency''.  After a short
+learning phase, z will take you to the most ``frecent'' directory that matches
+all of the regexes given on the command line in order.")
+    (home-page "https://github.com/rupa/z")
+    (license license:expat)))
+
 (define-public envstore
   (package
     (name "envstore")

From 43ffa11fdc4de4197a1096f6ebc4067115f9eb26 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Fri, 13 Sep 2019 15:05:10 +0300
Subject: [PATCH 260/408] build-system/cargo: Use 'strip-store-file-name'.

This is a follow-up to f58b2f38e4dfdbb8473fb2816d44fae6ad9cbc79.

* guix/build/cargo-build-system.scm (configure): Use bespoke
'strip-store-file-name' function.
---
 guix/build/cargo-build-system.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index 0134997c27..c69cae5afd 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -99,7 +99,7 @@ Cargo.toml file present at its root."
   (for-each
     (match-lambda
       ((name . path)
-       (let* ((basepath (string-drop (basename path) 33))
+       (let* ((basepath (strip-store-file-name path))
               (crate-dir (string-append vendor-dir "/" basepath)))
          (and (crate-src? path)
               ;; Gracefully handle duplicate inputs

From 3af85f832dd007296ec64ddc34beadd397481311 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Fri, 13 Sep 2019 15:09:34 +0300
Subject: [PATCH 261/408] build-system/cargo: Remove unused function.

* guix/build/cargo-build-system.scm (touch): Remove it.
---
 guix/build/cargo-build-system.scm | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index c69cae5afd..4be5443083 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -168,9 +168,6 @@ directory = '" port)
       (apply invoke `("cargo" "test" ,@cargo-test-flags))
       #t))
 
-(define (touch file-name)
-  (call-with-output-file file-name (const #t)))
-
 (define* (install #:key inputs outputs skip-build? #:allow-other-keys)
   "Install a given Cargo package."
   (let* ((out (assoc-ref outputs "out")))

From 9c4cb1ef4cbd4ea95eb2c73b0fcdf893062b53d1 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" 
Date: Thu, 12 Sep 2019 17:09:00 -0400
Subject: [PATCH 262/408] gnu: Add ruby-rspec-wait.

* gnu/packages/ruby.scm (ruby-rspec-wait): New variable.

Signed-off-by: Efraim Flashner 
---
 gnu/packages/ruby.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index ef9792bc0f..a886a1cdd2 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2019 Mikhail Kirillov 
 ;;; Copyright © 2019 Jelle Licht 
 ;;; Copyright © 2019 Brian Leung 
+;;; Copyright © 2019 Collin J. Doering 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -670,6 +671,35 @@ RSpec tests.")
     (home-page "https://github.com/dblock/rspec-rerun")
     (license license:expat)))
 
+(define-public ruby-rspec-wait
+  (package
+    (name "ruby-rspec-wait")
+    (version "0.0.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rspec-wait" version))
+        (sha256
+         (base32
+          "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "rake" "spec"))))))
+    (native-inputs
+     `(("bundler" ,bundler)))
+    (propagated-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (home-page "https://github.com/laserlemon/rspec-wait")
+    (synopsis "Wait for conditions in RSpec")
+    (description
+     "RSpec::Wait strives to make it easier to test asynchronous or slow
+interactions.")
+    (license license:expat)))
+
 (define-public ruby-rspec
   (package
     (name "ruby-rspec")

From 8ebd56ea75768cf7acda877bd294ff0dd3a1809d Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" 
Date: Thu, 12 Sep 2019 17:09:07 -0400
Subject: [PATCH 263/408] gnu: Add zsh-autosuggestions.

* gnu/packages/shellutils.scm (zsh-autosuggestions): New variable.

Signed-off-by: Efraim Flashner 
---
 gnu/packages/shellutils.scm | 49 +++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index f901eaaa8f..a5fadd9343 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -34,11 +34,60 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages tmux)
+  #:use-module (gnu packages shells)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python))
 
+(define-public zsh-autosuggestions
+  (package
+    (name "zsh-autosuggestions")
+    (version "0.6.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/zsh-users/zsh-autosuggestions.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h8h2mz9wpjpymgl2p7pc146c1jgb3dggpvzwm9ln3in336wl95c"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("ruby" ,ruby)
+       ("ruby-byebug" ,ruby-byebug)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-wait" ,ruby-rspec-wait)
+       ("tmux" ,tmux)
+       ("zsh" ,zsh)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'check ; Tests use ruby's bundler; instead execute rspec directly.
+           (lambda _
+             (setenv "TMUX_TMPDIR" (getenv "TMPDIR"))
+             (setenv "SHELL" (which "zsh"))
+             (invoke "rspec")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (zsh-plugins
+                      (string-append out "/share/zsh/plugins/zsh-autosuggestions")))
+               (invoke "make" "all")
+               (install-file "zsh-autosuggestions.zsh" zsh-plugins)
+               #t))))))
+    (home-page "https://github.com/zsh-users/zsh-autosuggestions")
+    (synopsis "Fish-like autosuggestions for zsh")
+    (description
+     "Fish-like fast/unobtrusive autosuggestions for zsh.  It suggests commands
+as you type.")
+    (license license:expat)))
+
 (define-public sh-z
   (package
     (name "sh-z")

From f0e149752a76b453b197b39c88e4ffc9ac5f52fa Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Fri, 13 Sep 2019 15:37:56 +0300
Subject: [PATCH 264/408] gnu: shellutils.scm: Sort module inputs.

* gnu/packages/shellutils.scm: Sort module inputs alphabetically.
---
 gnu/packages/shellutils.scm | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index a5fadd9343..6630332692 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -23,24 +23,24 @@
 ;;; along with GNU Guix.  If not, see .
 
 (define-module (gnu packages shellutils)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages golang)
-  #:use-module (gnu packages python)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages readline)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages ruby)
-  #:use-module (gnu packages tmux)
-  #:use-module (gnu packages shells)
-  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
-  #:use-module (guix build-system python))
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages golang)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages shells)
+  #:use-module (gnu packages tmux))
 
 (define-public zsh-autosuggestions
   (package

From f61f424d5b3da735380dc99bb2bad3883d218ccb Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Fri, 13 Sep 2019 15:59:02 +0300
Subject: [PATCH 265/408] gnu: mcron: Update to 1.1.2.

* gnu/packages/guile-xyz.scm (mcron): Update to 1.1.2.
[arguments]: Remove custom 'set-timezone phase.
[native-inputs]: Add autoconf, automake, help2man, texinfo.
[inputs]: Remove ed, which.
---
 gnu/packages/guile-xyz.scm | 28 +++++++++-------------------
 1 file changed, 9 insertions(+), 19 deletions(-)

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index b765ef36e1..2f974ee63b 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Alex Sassmannshausen 
 ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus 
 ;;; Copyright © 2016 Erik Edrosa 
-;;; Copyright © 2016 Eraim Flashner 
+;;; Copyright © 2016, 2019 Eraim Flashner 
 ;;; Copyright © 2016, 2017 Alex Kost 
 ;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira  
 ;;; Copyright © 2016 Amirouche 
@@ -48,7 +48,6 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages disk)
-  #:use-module (gnu packages ed)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages emacs-xyz)
   #:use-module (gnu packages gawk)
@@ -1926,30 +1925,17 @@ is no support for parsing block and inline level HTML.")
 (define-public mcron
   (package
     (name "mcron")
-    (version "1.1.1")
+    (version "1.1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mcron/mcron-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4"))))
+                "069m3ri7nc8lgy3h9ka7gj3v3anqj69x9jw4l3cfq65nqkxsch4g"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-before 'check 'set-timezone
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      ;; 'tests/job-specifier.scm' expects to be running in
-                      ;; UTC-2 or something.
-                      ;; FIXME: This issue is being investigated upstream, for
-                      ;; now we'll just skip the tests (see below):
-                      ;; .
-                      (let ((tzdata (assoc-ref inputs "tzdata")))
-                        (setenv "TZDIR"
-                                (string-append tzdata
-                                               "/share/zoneinfo"))
-                        (setenv "TZ" "UTC-2")
-                        #t)))
                   (add-before 'check 'adjust-tests
                     (lambda _
                       (substitute* "tests/job-specifier.scm"
@@ -1966,9 +1952,13 @@ is no support for parsing block and inline level HTML.")
                         (("\\(test-equal \"next-year\"" all)
                          (string-append "(test-skip 4)\n" all)))
                       #t)))))
-    (native-inputs `(("pkg-config" ,pkg-config)
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("help2man" ,help2man)
+                     ("pkg-config" ,pkg-config)
+                     ("texinfo" ,texinfo)
                      ("tzdata" ,tzdata-for-tests)))
-    (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
+    (inputs `(("guile" ,guile-2.2)))
     (home-page "https://www.gnu.org/software/mcron/")
     (synopsis "Run jobs at scheduled times")
     (description

From 0746c33effdbd2419a584b3731d752698cbbd2f5 Mon Sep 17 00:00:00 2001
From: Paul Garlick 
Date: Fri, 13 Sep 2019 14:45:44 +0100
Subject: [PATCH 266/408] gnu: gmsh: Update home page. This addresses a 'guix
 lint' warning.

* gnu/packages/maths.scm (gmsh)[home-page]: Update to avoid URL
redirection.
---
 gnu/packages/maths.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 761cb70abd..5380b4a99e 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1752,7 +1752,7 @@ This is the certified version of the Open Cascade Technology (OCCT) library.")
      `(#:configure-flags `("-DENABLE_METIS:BOOL=OFF"
                            "-DENABLE_BUILD_SHARED:BOOL=ON"
                            "-DENABLE_BUILD_DYNAMIC:BOOL=ON")))
-    (home-page "http://www.geuz.org/gmsh/")
+    (home-page "http://gmsh.info/")
     (synopsis "3D finite element grid generator")
     (description "Gmsh is a 3D finite element grid generator with a built-in
 CAD engine and post-processor.  Its design goal is to provide a fast, light

From dbb0b06eb4cf8489a2eb413a8c63df0cac78d22a Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Fri, 13 Sep 2019 16:32:56 +0300
Subject: [PATCH 267/408] gnu: tipp10: Fix path in desktop entry.

* gnu/packages/patches/tipp10-fix-compiling.patch: Remove changes to
hardcode executable path.
---
 gnu/packages/patches/tipp10-fix-compiling.patch | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gnu/packages/patches/tipp10-fix-compiling.patch b/gnu/packages/patches/tipp10-fix-compiling.patch
index 4c206d4d83..3a34a98b22 100644
--- a/gnu/packages/patches/tipp10-fix-compiling.patch
+++ b/gnu/packages/patches/tipp10-fix-compiling.patch
@@ -204,8 +204,7 @@ https://sources.debian.net/data/main/t/tipp10/2.1.0-2/debian/patches/0001-FixCom
  Name=TIPP10
  Comment=Touch Typing Tutor
  Comment[de]=10-Finger-Schreibtrainer
--Exec=tipp10
-+Exec=/usr/bin/tipp10
+ Exec=tipp10
  Icon=tipp10.png
  Terminal=false
  Type=Application

From 18a613fb29bf053b344bca585e78a2cf26b44469 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Fri, 13 Sep 2019 16:49:18 +0300
Subject: [PATCH 268/408] gnu: gnujump: Add desktop file.

This fixes bug#37069.

* gnu/packages/games.scm (gnujump)[arguments]: Add custom
'create-desktop-entry phase to install a desktop file.
---
 gnu/packages/games.scm | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index f9d7331f5b..c5ab05ed60 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2210,7 +2210,24 @@ also available.")
        (modify-phases %standard-phases
          (add-before
           'configure 'link-libm
-          (lambda _ (setenv "LIBS" "-lm"))))))
+          (lambda _ (setenv "LIBS" "-lm")))
+         (add-after 'install 'create-desktop-entry
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (apps (string-append out "/share/applications")))
+               (mkdir-p apps)
+               (with-output-to-file
+                 (string-append apps "/gnujump.desktop")
+                 (lambda _
+                   (format #t
+                           "[Desktop Entry]~@
+                           Name=GNUjump~@
+                           Comment=Jump up the tower to survive~@
+                           Exec=~a/bin/gnujump~@
+                           Terminal=false~@
+                           Type=Application~@
+                           Categories=Game;ArcadeGame~%"
+                           out)))))))))
     (inputs
      `(("glu" ,glu)
        ("mesa" ,mesa)

From a5a79dd0b88c0d9da09be7823c6158fa80ac5acd Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:23:14 +0200
Subject: [PATCH 269/408] gnu: Add r-parameters.

* gnu/packages/cran.scm (r-parameters): New variable.
---
 gnu/packages/cran.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index aa1135d0e4..732028601f 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15393,3 +15393,30 @@ met so that errors in data used in analysis pipelines can fail quickly.  It is
 similar to @code{stopifnot()} but more powerful, friendly, and easier for use
 in pipelines.")
     (license license:expat)))
+
+(define-public r-parameters
+  (package
+    (name "r-parameters")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "parameters" version))
+       (sha256
+        (base32
+         "12v301va1l3xydicbf0k04anxlmyjclbbjfg0riprryhkxwwk8g5"))))
+    (properties `((upstream-name . "parameters")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-bayestestr" ,r-bayestestr)
+       ("r-insight" ,r-insight)))
+    (home-page "https://cran.r-project.org/web/packages/parameters")
+    (synopsis "Processing of model parameters")
+    (description
+     "This package provides utilities for processing the parameters of various
+statistical models.  Beyond computing p values, CIs, and other indices for a
+wide variety of models, this package implements features like standardization
+or bootstrapping of parameters and models, feature reduction (feature
+extraction and variable selection) as well as conversion between indices of
+effect size.")
+    (license license:gpl3)))

From a0244ef0008dd3c45ede84d5692c4be4327b60d0 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:31:21 +0200
Subject: [PATCH 270/408] gnu: Add r-rgdal.

* gnu/packages/cran.scm (r-rgdal): New variable.
---
 gnu/packages/cran.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 732028601f..3c300a39a6 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15420,3 +15420,32 @@ or bootstrapping of parameters and models, feature reduction (feature
 extraction and variable selection) as well as conversion between indices of
 effect size.")
     (license license:gpl3)))
+
+(define-public r-rgdal
+  (package
+    (name "r-rgdal")
+    (version "1.4-4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rgdal" version))
+       (sha256
+        (base32
+         "1my56hdc9x40ynxx1qwqwqxjvjxybmm00w4xg5gi8zgj19pffci5"))))
+    (properties `((upstream-name . "rgdal")))
+    (build-system r-build-system)
+    (inputs
+     `(("gdal" ,gdal)
+       ("proj.4" ,proj.4)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-sp" ,r-sp)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://rgdal.r-forge.r-project.org")
+    (synopsis "Bindings for the Geospatial Data Abstraction Library")
+    (description
+     "This package provides bindings to the Geospatial Data Abstraction
+Library (GDAL) and access to projection/transformation operations from the
+PROJ.4 library.")
+    (license license:gpl2+)))

From 5ad9da9ab32761181ace8e41d7af9798e7ce9ea9 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:31:57 +0200
Subject: [PATCH 271/408] gnu: Add r-insol.

* gnu/packages/cran.scm (r-insol): New variable.
---
 gnu/packages/cran.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 3c300a39a6..8228f2d988 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15449,3 +15449,31 @@ effect size.")
 Library (GDAL) and access to projection/transformation operations from the
 PROJ.4 library.")
     (license license:gpl2+)))
+
+(define-public r-insol
+  (package
+    (name "r-insol")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "insol" version))
+       (sha256
+        (base32
+         "14ikz05375pjn9hby7kwkhcnykjilbnkdy5i8lsl7c5qdbhmqcm5"))))
+    (properties `((upstream-name . "insol")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-raster" ,r-raster)
+       ("r-rgdal" ,r-rgdal)))
+    (native-inputs
+     `(("gfortran" ,gfortran)))
+    (home-page "https://meteoexploration.com/R/insol/index.html")
+    (synopsis "Tools for calculating solar radiation")
+    (description
+     "This package provides functions to compute insolation on tilted
+surfaces, computes atmospheric transmittance and related parameters such as:
+Earth radius vector, declination, sunset and sunrise, daylength, equation of
+time, vector in the direction of the sun, vector normal to surface, and some
+atmospheric physics.")
+    (license license:gpl2+)))

From a1f439943802eb45ec9c1c8da9e439079722ced5 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:34:29 +0200
Subject: [PATCH 272/408] gnu: r-httpuv: Update to 1.5.2.

* gnu/packages/cran.scm (r-httpuv): Update to 1.5.2.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 8228f2d988..0fc017d007 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -448,13 +448,13 @@ into a pipeline of data manipulation and visualisation.")
 (define-public r-httpuv
   (package
     (name "r-httpuv")
-    (version "1.5.1")
+    (version "1.5.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "httpuv" version))
               (sha256
                (base32
-                "042piypg4c8sqrlcdl3dwajkafkbglsky3x7d0jpjv8s5wxnpfxm"))))
+                "13ax0hs2lc39ilznh1zarwqdzahcbhb8adilrfik3xg0fkljpcwk"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)

From 4557f44755530be1675ea92437665f00b34c40fe Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:34:34 +0200
Subject: [PATCH 273/408] gnu: r-circlize: Update to 0.4.8.

* gnu/packages/cran.scm (r-circlize): Update to 0.4.8.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 0fc017d007..635d295701 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1650,14 +1650,14 @@ validation and filtering on the values, making options invisible or private.")
 (define-public r-circlize
   (package
     (name "r-circlize")
-    (version "0.4.7")
+    (version "0.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "circlize" version))
        (sha256
         (base32
-         "07y1bchkslpz2wl43yg5j5h1nl9z0i425a07jdmfd5avrynd8p3m"))))
+         "0jvr9hmxyhg0zx101iiqkrg8wfaj86kp62xpv42n2j9fkn5r1mi2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-colorspace" ,r-colorspace)

From 3ab3f7f3bb80951cf1456589c2918163884f257b Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:34:39 +0200
Subject: [PATCH 274/408] gnu: r-sjlabelled: Update to 1.1.1.

* gnu/packages/cran.scm (r-sjlabelled): Update to 1.1.1.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 635d295701..fbf0f8c4ec 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -6118,14 +6118,14 @@ information are missing.")
 (define-public r-sjlabelled
   (package
     (name "r-sjlabelled")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjlabelled" version))
        (sha256
         (base32
-         "0rnmlwpp41h04dzfjd5ncvzjzs43slaimb4v2in1axznv3haafyc"))))
+         "0c9wy0gsr2sbkrv2638xbi7qm0gl6jyr6sfricavhkm7l4hljjkz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-haven" ,r-haven)

From 28110e684275282e3a980b09e0cf04ef840a7485 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:34:48 +0200
Subject: [PATCH 275/408] gnu: r-emmeans: Update to 1.4.1.

* gnu/packages/cran.scm (r-emmeans): Update to 1.4.1.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index fbf0f8c4ec..1f4f5e2f9d 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -7879,14 +7879,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.4")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "1ynf9hhbch83k63lwps69ijfch30fk5v0sc418ck264c5vih26dh"))))
+         "1fpawaxnmj67md169a9mzrnnh2d0c973xydfg6hw865933jil9lq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)

From 664e15ed8fcb255c60ba2e7fbe807cafe36e3961 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:34:55 +0200
Subject: [PATCH 276/408] gnu: r-sjstats: Update to 0.17.6.

* gnu/packages/cran.scm (r-sjstats): Update to 0.17.6.
[propagated-inputs]: Add r-parameters.
---
 gnu/packages/cran.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 1f4f5e2f9d..fac81d5e86 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -8037,14 +8037,14 @@ detection, parallelism through BLAS and parallel user templates.")
 (define-public r-sjstats
   (package
     (name "r-sjstats")
-    (version "0.17.5")
+    (version "0.17.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjstats" version))
        (sha256
         (base32
-         "1x9ybvz84vgaabmqp4z6crbv5q6kqjg6msk1spbr11zx9dbj06ca"))))
+         "11z1wfi0d74d1rld0320l3vmv6rl41wa0v9bjc44rk06yc90wld2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bayestestr" ,r-bayestestr)
@@ -8056,6 +8056,7 @@ detection, parallelism through BLAS and parallel user templates.")
        ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-modelr" ,r-modelr)
+       ("r-parameters" ,r-parameters)
        ("r-performance" ,r-performance)
        ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)

From d72da21d54a6836668b7405743f25d34bc871877 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:07 +0200
Subject: [PATCH 277/408] gnu: r-sjplot: Update to 2.7.1.

* gnu/packages/cran.scm (r-sjplot): Update to 2.7.1.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index fac81d5e86..946ee5b7aa 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -8198,14 +8198,14 @@ results using @code{ggplot2}.")
 (define-public r-sjplot
   (package
     (name "r-sjplot")
-    (version "2.7.0")
+    (version "2.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjPlot" version))
        (sha256
         (base32
-         "1m0gy991fmxvqry91kkzdkdapyalhrwql25d0hg2a2naxgfw4zpk"))))
+         "14shypabpahf68hd66rb1dpqhiyl3i0yx1yc85wamdvljh9fdymb"))))
     (properties `((upstream-name . "sjPlot")))
     (build-system r-build-system)
     (propagated-inputs

From aef5e2aaddfddd6c574853928236f4e37efe9827 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:12 +0200
Subject: [PATCH 278/408] gnu: r-activity: Update to 1.3.

* gnu/packages/cran.scm (r-activity): Update to 1.3.
[propagated-inputs]: Add r-insol.
---
 gnu/packages/cran.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 946ee5b7aa..436e545e00 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -9124,17 +9124,18 @@ Scientific.")
 (define-public r-activity
   (package
     (name "r-activity")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "activity" version))
        (sha256
         (base32
-         "11w2bz6p9xbzdh6773dmbbh6rws0h5dj18p8m0ivzizgq932vdzs"))))
+         "12imqj366dp6pam5gap6ji56p5wf1073xz5g4iikfxf5l8snxw92"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-circular" ,r-circular)
+       ("r-insol" ,r-insol)
        ("r-pbapply" ,r-pbapply)))
     (home-page "https://cran.r-project.org/web/packages/activity/")
     (synopsis "Animal activity statistics")

From ac50956f319106315df8263dabcf3dd3705d0ef1 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:22 +0200
Subject: [PATCH 279/408] gnu: r-tidytree: Update to 0.2.7.

* gnu/packages/cran.scm (r-tidytree): Update to 0.2.7.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 436e545e00..fa03c3a0c8 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -9447,14 +9447,14 @@ maps.")
 (define-public r-tidytree
   (package
     (name "r-tidytree")
-    (version "0.2.6")
+    (version "0.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidytree" version))
        (sha256
         (base32
-         "13mhizbsawmfqjpnzb73yw6kn1f1wlz0vhyzj3g0rj6ry880rw89"))))
+         "15ky7hj7w08jx94wm0yikckca0apwv3jy5svd77dpzgb2lr9ff9a"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)

From cd3ba9c8c7952567d4524f67d57046f08b7ad48a Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:27 +0200
Subject: [PATCH 280/408] gnu: r-huge: Update to 1.3.3.

* gnu/packages/cran.scm (r-huge): Update to 1.3.3.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index fa03c3a0c8..d85712df2c 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -11155,14 +11155,14 @@ regression coefficients can be conducted via jackknifing.")
 (define-public r-huge
   (package
     (name "r-huge")
-    (version "1.3.2")
+    (version "1.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "huge" version))
        (sha256
         (base32
-         "1j93gvi1jyq3ld9jhdqhrpm2is54rk3ilmf3yw7fx6gva0y6hjqd"))))
+         "18f8w4hdp9fdi2k5ip6fnrn5z47w4ybgxs2m6a7jdvd2v4wfdr69"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-igraph" ,r-igraph)

From f5b1354fdb963586bb3cf0411c8bb2a3e8e7fd84 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:37 +0200
Subject: [PATCH 281/408] gnu: Add r-lifecycle.

* gnu/packages/cran.scm (r-lifecycle): New variable.
---
 gnu/packages/cran.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index d85712df2c..f40d00fc94 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15479,3 +15479,31 @@ Earth radius vector, declination, sunset and sunrise, daylength, equation of
 time, vector in the direction of the sun, vector normal to surface, and some
 atmospheric physics.")
     (license license:gpl2+)))
+
+(define-public r-lifecycle
+  (package
+    (name "r-lifecycle")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "lifecycle" version))
+       (sha256
+        (base32
+         "11rk7hkw63rfrf4aqmb4xrb88kg95xh8hajpjvjfwjym2v02h74n"))))
+    (properties `((upstream-name . "lifecycle")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-glue" ,r-glue)
+       ("r-rlang" ,r-rlang)))
+    (home-page "https://github.com/r-lib/lifecycle")
+    (synopsis "Manage the life cycle of your package functions")
+    (description
+     "Manage the life cycle of your exported functions with shared
+conventions, documentation badges, and non-invasive deprecation warnings.  The
+lifecycle package defines four development stages (experimental, maturing,
+stable, and questioning) and three deprecation stages (soft-deprecated,
+deprecated, and defunct).  It makes it easy to insert badges corresponding to
+these stages in your documentation.  Usage of deprecated functions are
+signalled with increasing levels of non-invasive verbosity.")
+    (license license:gpl3)))

From fd399b7a83c2e804a68eb83b67055ad752713f0e Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:42 +0200
Subject: [PATCH 282/408] gnu: r-seqinr: Update to 3.6-1.

* gnu/packages/cran.scm (r-seqinr): Update to 3.6-1.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index f40d00fc94..84b3b1dab6 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -12593,14 +12593,14 @@ barplots or heatmaps.")
 (define-public r-seqinr
   (package
     (name "r-seqinr")
-    (version "3.4-5")
+    (version "3.6-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "seqinr" version))
        (sha256
         (base32
-         "17zv0n5cji17izwmwg0jcbxbjl3w5rls91w15svcnlpxjms38ahn"))))
+         "0j30za6kji6y3v09cvcydiacnp65pv6ig8aw7cydl47l5s9chky4"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ade4" ,r-ade4)

From 17f3960f28ef95866b97b281bfaf5b4569702b0a Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:48 +0200
Subject: [PATCH 283/408] gnu: r-diffusionmap: Update to 1.2.0.

* gnu/packages/graph.scm (r-diffusionmap): Update to 1.2.0.
---
 gnu/packages/graph.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 8b06aaa0e9..bde8b44a30 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -139,14 +139,14 @@ more.")
 (define-public r-diffusionmap
   (package
     (name "r-diffusionmap")
-    (version "1.1-0.1")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "diffusionMap" version))
        (sha256
         (base32
-         "11l4kbciawvli5nlsi4qaf8afmgk5xgqiqpdyhvaqri5mx0zhk5j"))))
+         "1rvk7069brlm1s9kqj4c31mwwr3mw4hmhay95cjjjfmw5xclff2j"))))
     (properties `((upstream-name . "diffusionMap")))
     (build-system r-build-system)
     (propagated-inputs

From 981dcc3b0cb6b043b673dc0f31912a8443ad49e3 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:35:57 +0200
Subject: [PATCH 284/408] gnu: r-tidyr: Update to 1.0.0.

* gnu/packages/statistics.scm (r-tidyr): Update to 1.0.0.
[propagated-inputs]: Add r-ellipsis, r-lifecycle, and r-vctrs.
---
 gnu/packages/statistics.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 61d1babd91..2ffe0a10d6 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -3757,25 +3757,28 @@ selection.")
 (define-public r-tidyr
   (package
     (name "r-tidyr")
-    (version "0.8.3")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidyr" version))
        (sha256
         (base32
-         "0dyc4b03wi65bk7j0ma0y188syh37h57wgxji82i0h8j6pn593x1"))))
+         "1403j0xd93l0r7qj738ryd5zc79hbcghrzybib3c3hrnaq5s78cj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
+       ("r-ellipsis" ,r-ellipsis)
        ("r-magrittr" ,r-magrittr)
        ("r-glue" ,r-glue)
+       ("r-lifecycle" ,r-lifecycle)
        ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
        ("r-tidyselect" ,r-tidyselect)
        ("r-rcpp" ,r-rcpp)
        ("r-stringi" ,r-stringi)
-       ("r-tibble" ,r-tibble)))
+       ("r-tibble" ,r-tibble)
+       ("r-vctrs" ,r-vctrs)))
     (home-page "https://github.com/hadley/tidyr")
     (synopsis "Tidy data with `spread()` and `gather()` functions")
     (description

From 6e377b88930226f3f74ba9fac74d80c36494d9be Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 00:36:51 +0200
Subject: [PATCH 285/408] import/utils: beautify-description: Recognize more
 fragments.

* guix/import/utils.scm (beautify-description): Handle additional common
initial sentence fragments in descriptions.
---
 guix/import/utils.scm | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index 252875eeab..4694b6e7ef 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -212,10 +212,19 @@ with dashes."
 (define (beautify-description description)
   "Improve the package DESCRIPTION by turning a beginning sentence fragment
 into a proper sentence and by using two spaces between sentences."
-  (let ((cleaned (if (string-prefix? "A " description)
-                     (string-append "This package provides a"
-                                    (substring description 1))
-                     description)))
+  (let ((cleaned (cond
+                  ((string-prefix? "A " description)
+                   (string-append "This package provides a"
+                                  (substring description 1)))
+                  ((string-prefix? "Provides " description)
+                   (string-append "This package provides"
+                                  (substring description
+                                             (string-length "Provides"))))
+                  ((string-prefix? "Functions " description)
+                   (string-append "This package provides functions"
+                                  (substring description
+                                             (string-length "Functions"))))
+                  (else description))))
     ;; Use double spacing between sentences
     (regexp-substitute/global #f "\\. \\b"
                               cleaned 'pre ".  " 'post)))

From fda8ed0eb1c0650ad4bb09503342f1e7e6208d44 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Sat, 14 Sep 2019 13:00:26 +0200
Subject: [PATCH 286/408] gnu: wine-staging: Update to 4.16.

* gnu/packages/wine.scm (wine-staging-patchset-data): Update to 4.16.
* gnu/packages/wine.scm (wine-staging): Update to 4.16.
---
 gnu/packages/wine.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 3a5def50b1..d1c27a65a7 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -318,7 +318,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
     (name "wine-staging-patchset-data")
-    (version "4.15")
+    (version "4.16")
     (source
      (origin
        (method git-fetch)
@@ -328,7 +328,7 @@ integrate Windows applications into your desktop.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "13g40h2ybcl6vab4zbl1ksqfqyly5hzxssza9dv8r5pmp8x54hgr"))))
+         "0zkvwl6rxr6xcqk4a3h43cak67w6bcyqqnajz6azif07ir3z1c61"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("bash" ,bash)
@@ -374,7 +374,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0bfh4vd99zwj7f4108zvs80dfvmmnnsap7i6gmf21jgcly3paygq"))))
+                "17qxbddv23ibbayw1ai984m0dlq63cgplms2jhsc09incjhafywd"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("faudio" ,faudio)
               ("ffmpeg" ,ffmpeg)

From cd75c487c8b1fb7447903d34a7fee2b335d4260d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?=
 
Date: Sat, 14 Sep 2019 19:40:19 +0200
Subject: [PATCH 287/408] gnu: Add emacs-elixir-mode.

* gnu/packages/emacs-xyz.scm (emacs-elixir-mode): New variable.
---
 gnu/packages/emacs-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index cbda68c350..9d4b4df458 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -18234,3 +18234,28 @@ You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
 Emacs that integrate with major modes like Org-mode.")
     (home-page "https://github.com/hlissner/emacs-doom-themes")
     (license license:expat)))
+
+(define-public emacs-elixir-mode
+  (package
+    (name "emacs-elixir-mode")
+    (version "2.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://stable.melpa.org/packages/elixir-mode-"
+             version
+             ".tar"))
+       (sha256
+        (base32
+         "091cizxg1aw8bkj58y048mj020ssapjflav633z9bl6gmi10dy4v"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-pkg-info" ,emacs-pkg-info)))
+    (home-page
+     "https://github.com/elixir-editors/emacs-elixir")
+    (synopsis "Major mode for editing Elixir files")
+    (description
+     "Elixir-Mode Provides font-locking, indentation and navigation support
+ for the Elixir programming language.")
+    (license license:gpl3+)))

From ec0270b1e958abd6edd5b4445b0c2e980d32443a Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:38:51 +0200
Subject: [PATCH 288/408] gnu: r-regioner: Update to 1.16.4.

* gnu/packages/bioconductor.scm (r-regioner): Update to 1.16.4.
---
 gnu/packages/bioconductor.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 8279d2a546..e35301a0fd 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1006,14 +1006,14 @@ the Human Protein Atlas project.")
 (define-public r-regioner
   (package
     (name "r-regioner")
-    (version "1.16.3")
+    (version "1.16.4")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "regioneR" version))
        (sha256
         (base32
-         "0p0jkq5w6v9zlg0csp4ag55228ikbbc86w28yzd9s0gxgx1wvdv4"))))
+         "0xzk057h6nkr3rvd412prxgnkpq625b90laj1kwb0i5q8j5ch760"))))
     (properties `((upstream-name . "regioneR")))
     (build-system r-build-system)
     (propagated-inputs

From f8fb5b75c9d4a64f6af99a00243149cf7bea547e Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:38:58 +0200
Subject: [PATCH 289/408] gnu: r-gtrellis: Update to 1.16.1.

* gnu/packages/bioconductor.scm (r-gtrellis): Update to 1.16.1.
---
 gnu/packages/bioconductor.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index e35301a0fd..48d523b982 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -3888,14 +3888,14 @@ analysis.")
 (define-public r-gtrellis
   (package
     (name "r-gtrellis")
-    (version "1.16.0")
+    (version "1.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gtrellis" version))
        (sha256
         (base32
-         "00d5swg3brnx8ryzpg7hp3mg9hx3vz4yd1lv2chlp2pj2rhsir1y"))))
+         "069hln9vflyxic24bxrlmdmz9h3jdd2qaqy898rgk5bn0gqwcjix"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-circlize" ,r-circlize)

From 11f973e09367d9b1b0551f2ef7efc0314460611b Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:39:03 +0200
Subject: [PATCH 290/408] gnu: r-mixomics: Update to 6.8.4.

* gnu/packages/bioconductor.scm (r-mixomics): Update to 6.8.4.
---
 gnu/packages/bioconductor.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 48d523b982..407d3ee93b 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5040,14 +5040,14 @@ self-organizing map clustering and minimal spanning trees.")
 (define-public r-mixomics
   (package
     (name "r-mixomics")
-    (version "6.8.2")
+    (version "6.8.4")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "mixOmics" version))
        (sha256
         (base32
-         "0issfrhsgc102sr33q9v6w6jrrd32plig7szd1nm0n4r3yn4y2fc"))))
+         "0lw4c9lxcm83xrvl4y120i1z710qjbdqginhrw738azpr1f82hcg"))))
     (properties `((upstream-name . "mixOmics")))
     (build-system r-build-system)
     (propagated-inputs

From 7f518ef70b4538d75953d7f7b9c246595023ae87 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:39:08 +0200
Subject: [PATCH 291/408] gnu: r-s4vectors: Update to 0.22.1.

* gnu/packages/bioinformatics.scm (r-s4vectors): Update to 0.22.1.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 61d992aacc..e8071323e1 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7351,13 +7351,13 @@ checks on R packages that are to be submitted to the Bioconductor repository.")
 (define-public r-s4vectors
   (package
     (name "r-s4vectors")
-    (version "0.22.0")
+    (version "0.22.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "S4Vectors" version))
               (sha256
                (base32
-                "1wkqmpy0d0fab9bjfc7i5wh2zng75pg9rn9c1z1lkki7fpwaw2jb"))))
+                "0cpxqb18wd3pjd7bi8lry13sm5ffqahcvvxpk5pwm5xcj30cdlm9"))))
     (properties
      `((upstream-name . "S4Vectors")))
     (build-system r-build-system)

From 146f0ba5d15b8735bb4f8da537a20e2f0a7d3c8a Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:39:12 +0200
Subject: [PATCH 292/408] gnu: r-genomicranges: Update to 1.36.1.

* gnu/packages/bioinformatics.scm (r-genomicranges): Update to 1.36.1.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index e8071323e1..4e4a450cfd 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7580,13 +7580,13 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.")
 (define-public r-genomicranges
   (package
     (name "r-genomicranges")
-    (version "1.36.0")
+    (version "1.36.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicRanges" version))
               (sha256
                (base32
-                "1285fr8qjd7d0ixpv7d5imi0n6wzc4k6yia1rkmig71qd2gg556k"))))
+                "1yid84gn0052v52h84685lvk854grl1wl65psmlmxx9yyykgc0jn"))))
     (properties
      `((upstream-name . "GenomicRanges")))
     (build-system r-build-system)

From cd25e296166adcc2e6a9d0e5065c0c81ecd3ae31 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:39:20 +0200
Subject: [PATCH 293/408] gnu: r-rtracklayer: Update to 1.44.4.

* gnu/packages/bioinformatics.scm (r-rtracklayer): Update to 1.44.4.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 4e4a450cfd..44f919d19f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7883,13 +7883,13 @@ alignments.")
 (define-public r-rtracklayer
   (package
     (name "r-rtracklayer")
-    (version "1.44.3")
+    (version "1.44.4")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "rtracklayer" version))
               (sha256
                (base32
-                "091zydz1zpz519ha0jkbvzrhxjvw5r2963qz9grmvl2jd8girvcg"))))
+                "0dnifr58j2si2qbnvap2wslz3xgjv3h4l7a6v7nmmc57hq6kdbym"))))
     (build-system r-build-system)
     (arguments
      `(#:phases

From 82e343d14a2723e115b6ef24d5ad54935009cf0f Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:39:25 +0200
Subject: [PATCH 294/408] gnu: r-rhdf5lib: Update to 1.6.1.

* gnu/packages/bioinformatics.scm (r-rhdf5lib): Update to 1.6.1.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 44f919d19f..9b740c02f8 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -10459,14 +10459,14 @@ block processing.")
 (define-public r-rhdf5lib
   (package
     (name "r-rhdf5lib")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rhdf5lib" version))
        (sha256
         (base32
-         "1lpmyxlwwcy92hyxqag321ssc5z6yw3a0ws9r058jwgzyjg7i2gm"))
+         "0niz9dh66fcwbvqpkpsdlz9d06kwi3kfh45dhk3qz9g9qqyiakr1"))
        (modules '((guix build utils)))
        (snippet
         '(begin

From 9eac3150690bfd9389d433f6053fc07d6d57e45b Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sat, 14 Sep 2019 23:39:39 +0200
Subject: [PATCH 295/408] gnu: r-delayedmatrixstats: Update to 1.6.1.

* gnu/packages/bioinformatics.scm (r-delayedmatrixstats): Update to 1.6.1.
---
 gnu/packages/bioinformatics.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 9b740c02f8..3fffb9f2ed 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -10655,14 +10655,14 @@ variable and significantly correlated genes.")
 (define-public r-delayedmatrixstats
   (package
     (name "r-delayedmatrixstats")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DelayedMatrixStats" version))
        (sha256
         (base32
-         "0632ypndblrgzfk8k98rr8c6m2r0zwzf02pzvlrhcp9bj1pvqbrz"))))
+         "1riyzfsq4bd513hidkw3cfkx3jywk3x87j89q70v459xsdfdc95b"))))
     (properties
      `((upstream-name . "DelayedMatrixStats")))
     (build-system r-build-system)

From 991c44109f92aef099b3ec50501c7cd08978c793 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 09:28:24 +0200
Subject: [PATCH 296/408] gnu: Add yubico-pam.

* gnu/packages/authentication.scm (yubico-pam): New variable.
---
 gnu/packages/authentication.scm | 41 +++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm
index 68a6459828..fba157344d 100644
--- a/gnu/packages/authentication.scm
+++ b/gnu/packages/authentication.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
+;;; Copyright © 2019 Ricardo Wurmus 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,10 +19,14 @@
 
 (define-module (gnu packages authentication)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages security-token)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages))
 
@@ -77,3 +82,39 @@ Supported technologies include the event-based @dfn{HOTP} algorithm (RFC4226)
 and the time-based @dfn{TOTP} algorithm (RFC6238).")
     (license (list license:lgpl2.1+     ; the libraries (liboath/ & libpskc/)
                    license:gpl3+))))    ; the tools (everything else)
+
+(define-public yubico-pam
+  (let ((commit "b5bd00db81e0e0e0ecced65c684080bb56ddc35b")
+        (revision "0"))
+    (package
+      (name "yubico-pam")
+      (version (git-version "2.26" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/Yubico/yubico-pam.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "10dq8dqi3jldllj6p8r9hldx9sank9n82c44w8akxrs1vli6nj3m"))))
+      (build-system gnu-build-system)
+      (arguments
+       ;; The pam_test fails because ykclient fails to build a Curl handle.
+       '(#:make-flags '("TESTS=util_test")))
+      (inputs
+       `(("linux-pam" ,linux-pam)
+         ("libyubikey" ,libyubikey)
+         ("ykclient" ,ykclient)
+         ("yubikey-personalization" ,yubikey-personalization)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("asciidoc" ,asciidoc)
+         ("pkg-config" ,pkg-config)))
+      (home-page "https://developers.yubico.com/yubico-pam")
+      (synopsis "Yubico pluggable authentication module")
+      (description "The Yubico PAM module provides an easy way to integrate the
+YubiKey into your existing user authentication infrastructure.")
+      (license license:bsd-2))))

From 21fc601295ac4be8b645f1051edcaa94e4a793a5 Mon Sep 17 00:00:00 2001
From: Giacomo Leidi 
Date: Sun, 15 Sep 2019 13:08:40 +0200
Subject: [PATCH 297/408] gnu: emacs-zerodark-theme: Update to 4.6.

* gnu/packages/emacs-xyz.scm (emacs-zerodark-theme): Update to 4.6.
[source]: Update to new source uri.
---
 gnu/packages/emacs-xyz.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9d4b4df458..2452949d0f 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -49,7 +49,7 @@
 ;;; Copyright © 2019 LaFreniere, Joseph 
 ;;; Copyright © 2019 Amar Singh 
 ;;; Copyright © 2019 Baptiste Strazzulla 
-;;; Copyright © 2019 Giacomo Leidi 
+;;; Copyright © 2019 Giacomo Leidi 
 ;;; Copyright © 2019 Jens Mølgaard 
 ;;; Copyright © 2019 Amin Bandali 
 ;;; Copyright © 2019 Jelle Licht 
@@ -17804,17 +17804,17 @@ connections using TLS encryption.")
 (define-public emacs-zerodark-theme
   (package
     (name "emacs-zerodark-theme")
-    (version "4.5")
+    (version "4.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://gitlab.petton.fr/nico/zerodark-theme.git")
+             (url "https://github.com/NicolasPetton/zerodark-theme")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0nnlxzsmhsbszqigcyxak9i1a0digrd13gv6v18ck4h760mihh1m"))))
+         "0pfyd1iqs7l2ngwgvj9n0r9k1px7yl16h8n502xdyf0pprxcs4p6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-flycheck" ,emacs-flycheck)

From e48e476f41319736297a67699b9eb26d40f6d0af Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 16:13:15 +0200
Subject: [PATCH 298/408] gnu: r-feather: Update to 0.3.5.

* gnu/packages/cran.scm (r-feather): Update to 0.3.5.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 84b3b1dab6..4f1e9bcdbd 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1060,14 +1060,14 @@ work well on small screens.")
 (define-public r-feather
   (package
     (name "r-feather")
-    (version "0.3.4")
+    (version "0.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "feather" version))
        (sha256
         (base32
-         "1zwr2lxbzks2k1jjbnnv965j8sbwxnszl1vyrnl60ar24nykd2f3"))))
+         "1gxd0h2m56sjjlzn4dry6s13nddxc4l5i11gsvavaf2dwbahdzsh"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-hms" ,r-hms)

From d77e69e9e1fd1f9e3810e20749f9888d26090906 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 16:13:22 +0200
Subject: [PATCH 299/408] gnu: r-spam: Update to 2.3-0.

* gnu/packages/cran.scm (r-spam): Update to 2.3-0.
---
 gnu/packages/cran.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 4f1e9bcdbd..5398b4dca3 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -10770,14 +10770,14 @@ This makes it a convenient and fast interface to C/C++ and Fortran code.")
 (define-public r-spam
   (package
     (name "r-spam")
-    (version "2.2-2")
+    (version "2.3-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spam" version))
        (sha256
         (base32
-         "024dgfnjfxvsiymbzrhadinamj6qy509f4sbd1zxql8ymkyxn7vi"))))
+         "194n5mgvyms9ckjqixl3h33apii8h9kqspqg2si9k741k578qb3w"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dotcall64" ,r-dotcall64)))

From 739b2d10f0701f0df9a6cae411e02376d3e23813 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:41:01 +0200
Subject: [PATCH 300/408] gnu: Add r-wavcluster.

* gnu/packages/bioconductor.scm (r-wavcluster): New variable.
---
 gnu/packages/bioconductor.scm | 46 +++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 407d3ee93b..baa1f71524 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5459,3 +5459,49 @@ with multiple R processes supported by the package @code{parallel}.")
      "This package provides methods for working with Illumina arrays using the
 @code{gdsfmt} package.")
     (license license:gpl3)))
+
+(define-public r-wavcluster
+  (package
+    (name "r-wavcluster")
+    (version "2.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "wavClusteR" version))
+       (sha256
+        (base32
+         "02i53dskirzr9nls3dsmv7dqhvy3vikkpx7247zpy2qd9r5yvhy2"))))
+    (properties `((upstream-name . "wavClusteR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-foreach" ,r-foreach)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-hmisc" ,r-hmisc)
+       ("r-iranges" ,r-iranges)
+       ("r-mclust" ,r-mclust)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-seqinr" ,r-seqinr)
+       ("r-stringr" ,r-stringr)
+       ("r-wmtsa" ,r-wmtsa)))
+    (home-page "https://bioconductor.org/packages/wavClusteR/")
+    (synopsis "Identification of RNA-protein interaction sites in PAR-CLIP data")
+    (description
+     "This package provides an integrated pipeline for the analysis of
+PAR-CLIP data.  PAR-CLIP-induced transitions are first discriminated from
+sequencing errors, SNPs and additional non-experimental sources by a non-
+parametric mixture model.  The protein binding sites (clusters) are then
+resolved at high resolution and cluster statistics are estimated using a
+rigorous Bayesian framework.  Post-processing of the results, data export for
+UCSC genome browser visualization and motif search analysis are provided.  In
+addition, the package allows to integrate RNA-Seq data to estimate the False
+Discovery Rate of cluster detection.  Key functions support parallel multicore
+computing.  While wavClusteR was designed for PAR-CLIP data analysis, it can
+be applied to the analysis of other NGS data obtained from experimental
+procedures that induce nucleotide substitutions (e.g. BisSeq).")
+    (license license:gpl2)))

From 853211a51b63315b096c98371618eec243feae38 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:42:41 +0200
Subject: [PATCH 301/408] gnu: Add r-timeseriesexperiment.

* gnu/packages/bioconductor.scm (r-timeseriesexperiment): New variable.
---
 gnu/packages/bioconductor.scm | 39 +++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index baa1f71524..b458c62dbc 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5505,3 +5505,42 @@ computing.  While wavClusteR was designed for PAR-CLIP data analysis, it can
 be applied to the analysis of other NGS data obtained from experimental
 procedures that induce nucleotide substitutions (e.g. BisSeq).")
     (license license:gpl2)))
+
+(define-public r-timeseriesexperiment
+  (package
+    (name "r-timeseriesexperiment")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "TimeSeriesExperiment" version))
+       (sha256
+        (base32
+         "1j11g7a2p0yk38fx6wd6152l1xynghj01pfxihalw601jwf1bl0y"))))
+    (properties
+     `((upstream-name . "TimeSeriesExperiment")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-deseq2" ,r-deseq2)
+       ("r-dplyr" ,r-dplyr)
+       ("r-dynamictreecut" ,r-dynamictreecut)
+       ("r-edger" ,r-edger)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-hmisc" ,r-hmisc)
+       ("r-limma" ,r-limma)
+       ("r-magrittr" ,r-magrittr)
+       ("r-proxy" ,r-proxy)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)
+       ("r-vegan" ,r-vegan)
+       ("r-viridis" ,r-viridis)))
+    (home-page "https://github.com/nlhuong/TimeSeriesExperiment/")
+    (synopsis "Analysis for short time-series data")
+    (description
+     "This package is a visualization and analysis toolbox for short time
+course data which includes dimensionality reduction, clustering, two-sample
+differential expression testing and gene ranking techniques.  The package also
+provides methods for retrieving enriched pathways.")
+    (license license:lgpl3+)))

From 53b1e10f239bbb257ac7dea9cdb03c744f03ef4c Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:53:01 +0200
Subject: [PATCH 302/408] gnu: Add r-affydata.

* gnu/packages/bioconductor.scm (r-affydata): New variable.
---
 gnu/packages/bioconductor.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index b458c62dbc..6296902671 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -935,6 +935,29 @@ jointly normalized data that are available here.  The data are presented in
 the form of an @code{exprSet} object.")
     (license license:artistic2.0)))
 
+(define-public r-affydata
+  (package
+    (name "r-affydata")
+    (version "1.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affydata" version 'experiment))
+       (sha256
+        (base32
+         "1l9qhmjqgbrdl9cmd74rlnvmvr6mslbmckb83n0211whp2i0b7h5"))))
+    (properties `((upstream-name . "affydata")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)))
+    (home-page "https://bioconductor.org/packages/affydata/")
+    (synopsis "Affymetrix data for demonstration purposes")
+    (description
+     "This package provides example datasets that represent 'real world
+examples' of Affymetrix data, unlike the artificial examples included in the
+package @code{affy}.")
+    (license license:gpl2+)))
+
 
 ;;; Packages
 

From 5cf940de21a454c0556c019760835f2bb9dcbe0c Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:53:14 +0200
Subject: [PATCH 303/408] gnu: Add r-affycomp.

* gnu/packages/bioconductor.scm (r-affycomp): New variable.
---
 gnu/packages/bioconductor.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 6296902671..a87bcebdef 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -981,6 +981,27 @@ package @code{affy}.")
 packages.")
     (license license:artistic2.0)))
 
+(define-public r-affycomp
+  (package
+    (name "r-affycomp")
+    (version "1.60.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affycomp" version))
+       (sha256
+        (base32
+         "1nijqljg5r3qj1y6an0i58sby76hqacj3a3nvainxic4n5wlzh0n"))))
+    (properties `((upstream-name . "affycomp")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-biobase" ,r-biobase)))
+    (home-page "https://bioconductor.org/packages/affycomp/")
+    (synopsis "Graphics toolbox for assessment of Affymetrix expression measures")
+    (description
+     "The package contains functions that can be used to compare expression
+measures for Affymetrix Oligonucleotide Arrays.")
+    (license license:gpl2+)))
+
 (define-public r-annotate
   (package
     (name "r-annotate")

From 5094aa94724fd2111dbd7520ab2f21a4218523ae Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:53:21 +0200
Subject: [PATCH 304/408] gnu: Add r-affycompatible.

* gnu/packages/bioconductor.scm (r-affycompatible): New variable.
---
 gnu/packages/bioconductor.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index a87bcebdef..83f8343524 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1002,6 +1002,34 @@ packages.")
 measures for Affymetrix Oligonucleotide Arrays.")
     (license license:gpl2+)))
 
+(define-public r-affycompatible
+  (package
+    (name "r-affycompatible")
+    (version "1.44.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "AffyCompatible" version))
+       (sha256
+        (base32
+         "1zi96qa6vkgwvvy5cn6c3p1kbfsaz74zsw2kjxarz5qs744f0xvs"))))
+    (properties
+     `((upstream-name . "AffyCompatible")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-rcurl" ,r-rcurl)
+       ("r-xml" ,r-xml)))
+    (home-page "https://bioconductor.org/packages/AffyCompatible/")
+    (synopsis "Work with Affymetrix GeneChip files")
+    (description
+     "This package provides an interface to Affymetrix chip annotation and
+sample attribute files.  The package allows an easy way for users to download
+and manage local data bases of Affynmetrix NetAffx annotation files.  It also
+provides access to @dfn{GeneChip Operating System} (GCOS) and @dfn{GeneChip
+Command Console} (AGCC)-compatible sample annotation files.")
+    (license license:artistic2.0)))
+
 (define-public r-annotate
   (package
     (name "r-annotate")

From 4ca2d6c1a6e64d7f64410d752140cec3063b9eca Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:53:27 +0200
Subject: [PATCH 305/408] gnu: Add r-affycontam.

* gnu/packages/bioconductor.scm (r-affycontam): New variable.
---
 gnu/packages/bioconductor.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 83f8343524..37a3b776e9 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1030,6 +1030,31 @@ provides access to @dfn{GeneChip Operating System} (GCOS) and @dfn{GeneChip
 Command Console} (AGCC)-compatible sample annotation files.")
     (license license:artistic2.0)))
 
+(define-public r-affycontam
+  (package
+    (name "r-affycontam")
+    (version "1.42.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affyContam" version))
+       (sha256
+        (base32
+         "0nzk1cm26rhmym753wyhn35hqnz5lvavi3i5qfgdvhxgjy3m1jgp"))))
+    (properties `((upstream-name . "affyContam")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-affydata" ,r-affydata)
+       ("r-biobase" ,r-biobase)))
+    (home-page "https://bioconductor.org/packages/affyContam/")
+    (synopsis "Structured corruption of Affymetrix CEL file data")
+    (description
+     "Microarray quality assessment is a major concern of microarray analysts.
+This package provides some simple approaches to in silico creation of quality
+problems in CEL-level data to help evaluate performance of quality metrics.")
+    (license license:artistic2.0)))
+
 (define-public r-annotate
   (package
     (name "r-annotate")

From 83b420912289b0f2b2caba9fc8d0eb22256722ad Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:57:26 +0200
Subject: [PATCH 306/408] gnu: Add r-pfam-db.

* gnu/packages/bioconductor.scm (r-pfam-db): New variable.
---
 gnu/packages/bioconductor.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 37a3b776e9..3c01e2d0d4 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -810,6 +810,28 @@ annotations.")
 Disease Ontology.")
     (license license:artistic2.0)))
 
+(define-public r-pfam-db
+  (package
+    (name "r-pfam-db")
+    (version "3.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "PFAM.db" version 'annotation))
+       (sha256
+        (base32
+         "0rn1arzzcniy3yyc4yc44vn40g0cqss37dhwnvsgxpfayqq1k59s"))))
+    (properties `((upstream-name . "PFAM.db")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)))
+    (home-page "https://bioconductor.org/packages/PFAM.db")
+    (synopsis "Set of protein ID mappings for PFAM")
+    (description
+     "This package provides a set of protein ID mappings for PFAM, assembled
+using data from public repositories.")
+    (license license:artistic2.0)))
+
 
 ;;; Experiment data
 

From 15184fb386d9b71b122e40f665d2f42bf4a13ddc Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:57:38 +0200
Subject: [PATCH 307/408] gnu: Add r-reportingtools.

* gnu/packages/bioconductor.scm (r-reportingtools): New variable.
---
 gnu/packages/bioconductor.scm | 48 +++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 3c01e2d0d4..d382ce1dfc 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1151,6 +1151,54 @@ customizable permutation tests to assess the association between genomic
 region sets and other genomic features.")
     (license license:artistic2.0)))
 
+(define-public r-reportingtools
+  (package
+    (name "r-reportingtools")
+    (version "2.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ReportingTools" version))
+       (sha256
+        (base32
+         "16ska7mlacka0xi8x2icy8v42vaxccb3a1x73szmfvcrwr592qsc"))))
+    (properties
+     `((upstream-name . "ReportingTools")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotate" ,r-annotate)
+       ("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-category" ,r-category)
+       ("r-deseq2" ,r-deseq2)
+       ("r-edger" ,r-edger)
+       ("r-ggbio" ,r-ggbio)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gostats" ,r-gostats)
+       ("r-gseabase" ,r-gseabase)
+       ("r-hwriter" ,r-hwriter)
+       ("r-iranges" ,r-iranges)
+       ("r-knitr" ,r-knitr)
+       ("r-lattice" ,r-lattice)
+       ("r-limma" ,r-limma)
+       ("r-pfam-db" ,r-pfam-db)
+       ("r-r-utils" ,r-r-utils)
+       ("r-xml" ,r-xml)))
+    (home-page "https://bioconductor.org/packages/ReportingTools/")
+    (synopsis "Tools for making reports in various formats")
+    (description
+     "The ReportingTools package enables users to easily display reports of
+analysis results generated from sources such as microarray and sequencing
+data.  The package allows users to create HTML pages that may be viewed on a
+web browser, or in other formats.  Users can generate tables with sortable and
+filterable columns, make and display plots, and link table entries to other
+data sources such as NCBI or larger plots within the HTML page.  Using the
+package, users can also produce a table of contents page to link various
+reports together for a particular project that can be viewed in a web
+browser.")
+    (license license:artistic2.0)))
+
 (define-public r-geneplotter
   (package
     (name "r-geneplotter")

From 01c7ba9982dc83d584dade304ccd921e655d0a46 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:58:06 +0200
Subject: [PATCH 308/408] gnu: Add r-oligoclasses.

* gnu/packages/bioconductor.scm (r-oligoclasses): New variable.
---
 gnu/packages/bioconductor.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index d382ce1dfc..be9f7579b6 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1224,6 +1224,41 @@ browser.")
      "This package provides functions for plotting genomic data.")
     (license license:artistic2.0)))
 
+(define-public r-oligoclasses
+  (package
+    (name "r-oligoclasses")
+    (version "1.46.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "oligoClasses" version))
+       (sha256
+        (base32
+         "0z86zrmn80kcy6fgb9i9zs82vhim73n8hlkqy7y8sbb2jwksdr72"))))
+    (properties `((upstream-name . "oligoClasses")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affyio" ,r-affyio)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-biostrings" ,r-biostrings)
+       ("r-dbi" ,r-dbi)
+       ("r-ff" ,r-ff)
+       ("r-foreach" ,r-foreach)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (home-page "https://bioconductor.org/packages/oligoClasses/")
+    (synopsis "Classes for high-throughput arrays")
+    (description
+     "This package contains class definitions, validity checks, and
+initialization methods for classes used by the @code{oligo} and @code{crlmm}
+packages.")
+    (license license:gpl2+)))
+
 (define-public r-qvalue
   (package
     (name "r-qvalue")

From 12105c6c3a900ba35533c15c71d59acf151b5627 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 20:57:32 +0200
Subject: [PATCH 309/408] gnu: Add r-affycoretools.

* gnu/packages/bioconductor.scm (r-affycoretools): New variable.
---
 gnu/packages/bioconductor.scm | 39 +++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index be9f7579b6..df50fbc547 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1077,6 +1077,45 @@ This package provides some simple approaches to in silico creation of quality
 problems in CEL-level data to help evaluate performance of quality metrics.")
     (license license:artistic2.0)))
 
+(define-public r-affycoretools
+  (package
+    (name "r-affycoretools")
+    (version "1.56.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affycoretools" version))
+       (sha256
+        (base32
+         "17dxpzhwwdwnxkdpmyjwdnacg41hw60mlc71w4nzlvs28sfsy09s"))))
+    (properties `((upstream-name . "affycoretools")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-dbi" ,r-dbi)
+       ("r-edger" ,r-edger)
+       ("r-gcrma" ,r-gcrma)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gostats" ,r-gostats)
+       ("r-gplots" ,r-gplots)
+       ("r-hwriter" ,r-hwriter)
+       ("r-lattice" ,r-lattice)
+       ("r-limma" ,r-limma)
+       ("r-oligoclasses" ,r-oligoclasses)
+       ("r-reportingtools" ,r-reportingtools)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xtable" ,r-xtable)))
+    (home-page "https://bioconductor.org/packages/affycoretools/")
+    (synopsis "Functions for analyses with Affymetrix GeneChips")
+    (description
+     "This package provides various wrapper functions that have been written
+to streamline the more common analyses that a Biostatistician might see.")
+    (license license:artistic2.0)))
+
 (define-public r-annotate
   (package
     (name "r-annotate")

From e5dfcd8e262473a12ae00f5fa1ebf2bd8a90ea89 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 21:03:54 +0200
Subject: [PATCH 310/408] gnu: Add r-seqbias.

* gnu/packages/bioconductor.scm (r-seqbias): New variable.
---
 gnu/packages/bioconductor.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index df50fbc547..ce43bfe8b9 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5701,6 +5701,34 @@ with multiple R processes supported by the package @code{parallel}.")
 @code{gdsfmt} package.")
     (license license:gpl3)))
 
+(define-public r-seqbias
+  (package
+    (name "r-seqbias")
+    (version "1.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "seqbias" version))
+       (sha256
+        (base32
+         "1pk97jsq0rxijsdm5wnmlw79mhy19skdq1h3mmfbdjh560md47lw"))))
+    (properties `((upstream-name . "seqbias")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-rhtslib" ,r-rhtslib)))
+    (inputs
+     `(("zlib" ,zlib))) ; This comes from rhtslib.
+    (home-page "https://bioconductor.org/packages/seqbias/")
+    (synopsis "Estimation of per-position bias in high-throughput sequencing data")
+    (description
+     "This package implements a model of per-position sequencing bias in
+high-throughput sequencing data using a simple Bayesian network, the structure
+and parameters of which are trained on a set of aligned reads and a reference
+genome sequence.")
+    (license license:lgpl3)))
+
 (define-public r-wavcluster
   (package
     (name "r-wavcluster")

From bb0024dc697c2a4c6f91b59b893e913b02d38e94 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 21:04:00 +0200
Subject: [PATCH 311/408] gnu: Add r-reqon.

* gnu/packages/bioconductor.scm (r-reqon): New variable.
---
 gnu/packages/bioconductor.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index ce43bfe8b9..9fce21dc00 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5729,6 +5729,31 @@ and parameters of which are trained on a set of aligned reads and a reference
 genome sequence.")
     (license license:lgpl3)))
 
+(define-public r-reqon
+  (package
+    (name "r-reqon")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ReQON" version))
+       (sha256
+        (base32
+         "04bljr8vgb9z9800d9v8w7a4rvjkwq48zd8n5divq30zj9k2na7a"))))
+    (properties `((upstream-name . "ReQON")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rjava" ,r-rjava)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-seqbias" ,r-seqbias)))
+    (home-page "https://bioconductor.org/packages/ReQON/")
+    (synopsis "Recalibrating quality of nucleotides")
+    (description
+     "This package provides an implementation of an algorithm for
+recalibrating the base quality scores for aligned sequencing data in BAM
+format.")
+    (license license:gpl2)))
+
 (define-public r-wavcluster
   (package
     (name "r-wavcluster")

From 4112ff7e74ee1d1f13c3a7f4aaa6dc9d0ca8c3eb Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 21:19:53 +0200
Subject: [PATCH 312/408] gnu: Add js-requirejs.

* gnu/packages/javascript.scm (js-requirejs): New variable.
---
 gnu/packages/javascript.scm | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 2390c23c4b..2993eb66f6 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Arun Isaac 
-;;; Copyright © 2017 Ricardo Wurmus 
+;;; Copyright © 2017, 2019 Ricardo Wurmus 
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice 
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner 
 ;;; Copyright © 2018 Nicolas Goaziou 
@@ -307,6 +307,28 @@ Javascript library, adding sorting, paging and filtering abilities to plain
 HTML tables with minimal effort.")
     (license license:expat)))
 
+(define-public js-requirejs
+  (package
+    (name "js-requirejs")
+    (version "2.3.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/requirejs/requirejs.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0cvd5y2mb3h6yil3niqn3gjqrzixdsxcz4rvc2f0hg4kzp5y0w86"))))
+    (build-system minify-build-system)
+    (arguments `(#:javascript-files '("require.js")))
+    (home-page "https://github.com/requirejs/requirejs/")
+    (synopsis "File and module loader for JavaScript")
+    (description "RequireJS loads plain JavaScript files as well as more
+defined modules.  It is optimized for in-browser use, including in a Web
+Worker, but it can be used in other JavaScript environments.")
+    (license license:expat)))
+
 (define-public js-selectize
   (package
     (name "js-selectize")

From 41b8b05c9e515e43753ddbed24b70e27b5c3be31 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:33:50 +0200
Subject: [PATCH 313/408] gnu: Add r-shinytree.

* gnu/packages/cran.scm (r-shinytree): New variable.
---
 gnu/packages/cran.scm | 78 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5398b4dca3..d33eb20a37 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -797,6 +797,84 @@ extensive prebuilt widgets make it possible to build beautiful,
 responsive, and powerful applications with minimal effort.")
     (license license:artistic2.0)))
 
+;; This package includes minified JavaScript files.  When upgrading please
+;; check that there are no new minified JavaScript files.
+(define-public r-shinytree
+  (package
+    (name "r-shinytree")
+    (version "0.2.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "shinyTree" version))
+       (sha256
+        (base32
+         "0jfx2capckv7hf2yx3fn8i4rcmhi222ah91jnmhg497x8wgz31s3"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete minified JavaScript
+           (for-each delete-file
+                     '("inst/www/jsTree-3.3.7/libs/require.js"
+                       "inst/www/jsTree-3.3.7/libs/jquery.js"
+                       "inst/www/jsTree-3.3.7/jstree.min.js"))
+           #t))))
+    (properties `((upstream-name . "shinyTree")))
+    (build-system r-build-system)
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build r-build-system)
+                  (srfi srfi-1)
+                  (ice-9 popen))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'replace-minified-javascript
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "inst/www/jsTree-3.3.7/"
+               (symlink (string-append (assoc-ref inputs "js-requirejs")
+                                       "/share/javascript/require.min.js")
+                        "libs/require.js")
+               (call-with-values
+                   (lambda ()
+                     (unzip2
+                      `((,(assoc-ref inputs "js-jquery")
+                         "libs/jquery.js")
+                        ("jstree.js"
+                         "jstree.min.js"))))
+                 (lambda (sources targets)
+                   (for-each (lambda (source target)
+                               (format #t "Processing ~a --> ~a~%"
+                                       source target)
+                               (let ((minified (open-pipe* OPEN_READ "uglify-js" source)))
+                                 (call-with-output-file target
+                                   (lambda (port)
+                                     (dump-port minified port)))))
+                             sources targets))))
+             #t)))))
+    (propagated-inputs
+     `(("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-promises" ,r-promises)
+       ("r-shiny" ,r-shiny)
+       ("r-stringr" ,r-stringr)))
+    (inputs
+     `(("js-requirejs" ,js-requirejs)))
+    (native-inputs
+     `(("uglify-js" ,uglify-js)
+       ("js-jquery"
+        ,(origin
+           (method url-fetch)
+           (uri "https://code.jquery.com/jquery-3.3.1.js")
+           (sha256
+            (base32
+             "1b8zxrp6xwzpw25apn8j4qws0f6sr7qr7h2va5h1mjyfqvn29anq"))))))
+    (home-page "https://cran.r-project.org/web/packages/shinyTree/")
+    (synopsis "jsTree bindings for Shiny")
+    (description
+     "This package exposes R bindings to jsTree, a JavaScript library that
+supports interactive trees, to enable rich, editable trees in Shiny.")
+    (license license:expat)))
+
 (define-public r-shinydashboard
   (package
     (name "r-shinydashboard")

From fc3719cc0f91644b56e7572a81669398b5fd1c8d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:40:25 +0200
Subject: [PATCH 314/408] gnu: Add r-shinythemes.

* gnu/packages/cran.scm (r-shinythemes): New variable.
---
 gnu/packages/cran.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index d33eb20a37..cb0be4aedd 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -946,6 +946,31 @@ this gives the user direct access to the file system without the need to
 well as file saving is available.")
     (license license:gpl2+)))
 
+(define-public r-shinythemes
+  (package
+    (name "r-shinythemes")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "shinythemes" version))
+       (sha256
+        (base32
+         "12miz44n2zxfswnia7p8dirxj3miw0aqn4pkx2111ikz67ax84rf"))))
+    (properties `((upstream-name . "shinythemes")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-shiny" ,r-shiny)))
+    (home-page "http://rstudio.github.io/shinythemes/")
+    (synopsis "Themes for Shiny")
+    (description
+     "This package provides themes for use with Shiny.  It includes several
+Bootstrap themes, which are packaged for use with Shiny applications.")
+    ;; The package is released under version 3 of the GPL, but it includes
+    ;; source files that are covered by the Expat license.  It also includes
+    ;; fonts under SIL or the ASL.
+    (license (list license:gpl3 license:expat
+                   license:silofl1.1 license:asl2.0))))
+
 ;; The package sources include minified variants of d3.js and non-minified
 ;; source code of d3-jetpack.
 (define-public r-d3r

From df8576e5c93e765fc4f75c47698342b1f7aa9642 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:41:03 +0200
Subject: [PATCH 315/408] gnu: Add r-variantfiltering.

* gnu/packages/bioconductor.scm (r-variantfiltering): New variable.
---
 gnu/packages/bioconductor.scm | 47 +++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 9fce21dc00..4f2d97025a 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5838,3 +5838,50 @@ course data which includes dimensionality reduction, clustering, two-sample
 differential expression testing and gene ranking techniques.  The package also
 provides methods for retrieving enriched pathways.")
     (license license:lgpl3+)))
+
+(define-public r-variantfiltering
+  (package
+    (name "r-variantfiltering")
+    (version "1.20.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "VariantFiltering" version))
+       (sha256
+        (base32
+         "0vpghxacqcbaxx2scb5gfhcmfpw1lkls7h6qnbwbnmjwy01q2p17"))))
+    (properties
+     `((upstream-name . "VariantFiltering")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-dt" ,r-dt)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-genomicscores" ,r-genomicscores)
+       ("r-graph" ,r-graph)
+       ("r-gviz" ,r-gviz)
+       ("r-iranges" ,r-iranges)
+       ("r-rbgl" ,r-rbgl)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-shiny" ,r-shiny)
+       ("r-shinyjs" ,r-shinyjs)
+       ("r-shinythemes" ,r-shinythemes)
+       ("r-shinytree" ,r-shinytree)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-variantannotation" ,r-variantannotation)
+       ("r-xvector" ,r-xvector)))
+    (home-page "https://github.com/rcastelo/VariantFiltering")
+    (synopsis "Filtering of coding and non-coding genetic variants")
+    (description
+     "Filter genetic variants using different criteria such as inheritance
+model, amino acid change consequence, minor allele frequencies across human
+populations, splice site strength, conservation, etc.")
+    (license license:artistic2.0)))

From d6a5d9b24f30d35b41f76053be2b826b8d63815d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:50:25 +0200
Subject: [PATCH 316/408] gnu: Add r-affxparser.

* gnu/packages/bioconductor.scm (r-affxparser): New variable.
---
 gnu/packages/bioconductor.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 4f2d97025a..b60c5d8ef2 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1116,6 +1116,34 @@ problems in CEL-level data to help evaluate performance of quality metrics.")
 to streamline the more common analyses that a Biostatistician might see.")
     (license license:artistic2.0)))
 
+(define-public r-affxparser
+  (package
+    (name "r-affxparser")
+    (version "1.56.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "affxparser" version))
+       (sha256
+        (base32
+         "1jv7k9pn4c7szi3ma2f2xsd58pkrkvjpk5wra73r6kc607qgrv33"))))
+    (properties `((upstream-name . "affxparser")))
+    (build-system r-build-system)
+    (home-page "https://github.com/HenrikBengtsson/affxparser")
+    (synopsis "Affymetrix File Parsing SDK")
+    (description
+     "This is a package for parsing Affymetrix files (CDF, CEL, CHP, BPMAP,
+BAR).  It provides methods for fast and memory efficient parsing of Affymetrix
+files using the Affymetrix' Fusion SDK.  Both ASCII- and binary-based files
+are supported.  Currently, there are methods for reading @dfn{chip definition
+file} (CDF) and a @dfn{cell intensity file} (CEL).  These files can be read
+either in full or in part.  For example, probe signals from a few probesets
+can be extracted very quickly from a set of CEL files into a convenient list
+structure.")
+    ;; The Fusion SDK contains files under GPLv2 and LGPLv2.1.  The R code is
+    ;; under LGPLv2+.
+    (license (list license:lgpl2.0+ license:lgpl2.1 license:gpl2))))
+
 (define-public r-annotate
   (package
     (name "r-annotate")

From 4c63eeb8a45762b9135d8ed192ce61a4469d1348 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:50:31 +0200
Subject: [PATCH 317/408] gnu: Add r-oligo.

* gnu/packages/bioconductor.scm (r-oligo): New variable.
---
 gnu/packages/bioconductor.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index b60c5d8ef2..9cb4ca36e8 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1326,6 +1326,40 @@ initialization methods for classes used by the @code{oligo} and @code{crlmm}
 packages.")
     (license license:gpl2+)))
 
+(define-public r-oligo
+  (package
+    (name "r-oligo")
+    (version "1.48.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "oligo" version))
+       (sha256
+        (base32
+         "0qkyz65zvry0syibjkvkshwijccna18jy0hlib0n5x4c8x9zs5df"))))
+    (properties `((upstream-name . "oligo")))
+    (build-system r-build-system)
+    (inputs `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-affxparser" ,r-affxparser)
+       ("r-affyio" ,r-affyio)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-dbi" ,r-dbi)
+       ("r-ff" ,r-ff)
+       ("r-oligoclasses" ,r-oligoclasses)
+       ("r-preprocesscore" ,r-preprocesscore)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-zlibbioc" ,r-zlibbioc)))
+    (home-page "https://bioconductor.org/packages/oligo/")
+    (synopsis "Preprocessing tools for oligonucleotide arrays")
+    (description
+     "This package provides a package to analyze oligonucleotide
+arrays (expression/SNP/tiling/exon) at probe-level.  It currently supports
+Affymetrix (CEL files) and NimbleGen arrays (XYS files).")
+    (license license:lgpl2.0+)))
+
 (define-public r-qvalue
   (package
     (name "r-qvalue")

From f5349b4d5a4a9c93da9eed79e32461df6606cbde Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:51:52 +0200
Subject: [PATCH 318/408] gnu: Add r-genomegraphs.

* gnu/packages/bioconductor.scm (r-genomegraphs): New variable.
---
 gnu/packages/bioconductor.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 9cb4ca36e8..807ddedc75 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5947,3 +5947,31 @@ provides methods for retrieving enriched pathways.")
 model, amino acid change consequence, minor allele frequencies across human
 populations, splice site strength, conservation, etc.")
     (license license:artistic2.0)))
+
+(define-public r-genomegraphs
+  (package
+    (name "r-genomegraphs")
+    (version "1.44.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "GenomeGraphs" version))
+       (sha256
+        (base32
+         "026skcn2cqchlzaqsnk11gb8d8aq1rz7lrnx4mmsba234mh4j7kd"))))
+    (properties `((upstream-name . "GenomeGraphs")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biomart" ,r-biomart)))
+    (home-page "https://bioconductor.org/packages/GenomeGraphs/")
+    (synopsis "Plotting genomic information from Ensembl")
+    (description
+     "Genomic data analyses requires integrated visualization of known genomic
+information and new experimental data.  GenomeGraphs uses the biomaRt package
+to perform live annotation queries to Ensembl and translates this to e.g.
+gene/transcript structures in viewports of the grid graphics package.  This
+results in genomic information plotted together with your data.  Another
+strength of GenomeGraphs is to plot different data types such as array CGH,
+gene expression, sequencing and other data, together in one plot using the
+same genome coordinate system.")
+    (license license:artistic2.0)))

From 2a360cf6acde00f96dcca8bf6dcc2f4fa1563da1 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:54:21 +0200
Subject: [PATCH 319/408] gnu: Add r-wavetiling.

* gnu/packages/bioconductor.scm (r-wavetiling): New variable.
---
 gnu/packages/bioconductor.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 807ddedc75..ec3451b704 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5975,3 +5975,34 @@ strength of GenomeGraphs is to plot different data types such as array CGH,
 gene expression, sequencing and other data, together in one plot using the
 same genome coordinate system.")
     (license license:artistic2.0)))
+
+(define-public r-wavetiling
+  (package
+    (name "r-wavetiling")
+    (version "1.26.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "waveTiling" version))
+       (sha256
+        (base32
+         "0l0saa0myabpq2rl9dq70zff8jpxr3mkanxlj65hc41f0m5xllir"))))
+    (properties `((upstream-name . "waveTiling")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-biobase" ,r-biobase)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomegraphs" ,r-genomegraphs)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-oligo" ,r-oligo)
+       ("r-oligoclasses" ,r-oligoclasses)
+       ("r-preprocesscore" ,r-preprocesscore)
+       ("r-waveslim" ,r-waveslim)))
+    (home-page "https://r-forge.r-project.org/projects/wavetiling/")
+    (synopsis "Wavelet-based models for tiling array transcriptome analysis")
+    (description
+     "This package is designed to conduct transcriptome analysis for tiling
+arrays based on fast wavelet-based functional models.")
+    (license license:gpl2+)))

From d80a15696bf07a35b523c062a592a4b210bd3fdf Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 15 Sep 2019 22:57:47 +0200
Subject: [PATCH 320/408] gnu: Add r-variancepartition.

* gnu/packages/bioconductor.scm (r-variancepartition): New variable.
---
 gnu/packages/bioconductor.scm | 41 +++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index ec3451b704..7ca6788dd8 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -6006,3 +6006,44 @@ same genome coordinate system.")
      "This package is designed to conduct transcriptome analysis for tiling
 arrays based on fast wavelet-based functional models.")
     (license license:gpl2+)))
+
+(define-public r-variancepartition
+  (package
+    (name "r-variancepartition")
+    (version "1.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "variancePartition" version))
+       (sha256
+        (base32
+         "1ycapwb2mq57xibrzzjz9zwxqz4nwz9f3n5gskhlr5vcs7irkjd6"))))
+    (properties
+     `((upstream-name . "variancePartition")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-colorramps" ,r-colorramps)
+       ("r-doparallel" ,r-doparallel)
+       ("r-foreach" ,r-foreach)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gplots" ,r-gplots)
+       ("r-iterators" ,r-iterators)
+       ("r-limma" ,r-limma)
+       ("r-lme4" ,r-lme4)
+       ("r-lmertest" ,r-lmertest)
+       ("r-mass" ,r-mass)
+       ("r-pbkrtest" ,r-pbkrtest)
+       ("r-progress" ,r-progress)
+       ("r-reshape2" ,r-reshape2)
+       ("r-scales" ,r-scales)))
+    (home-page "https://bioconductor.org/packages/variancePartition/")
+    (synopsis "Analyze variation in gene expression experiments")
+    (description
+     "This is a package providing tools to quantify and interpret multiple
+sources of biological and technical variation in gene expression experiments.
+It uses a linear mixed model to quantify variation in gene expression
+attributable to individual, tissue, time point, or technical variables.  The
+package includes dream differential expression analysis for repeated
+measures.")
+    (license license:gpl2+)))

From eca0f3d0708def490ae779e2e47151c9d0b5c82e Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Mon, 16 Sep 2019 08:20:35 +0200
Subject: [PATCH 321/408] gnu: mgba: Update to 0.7.3.

* gnu/packages/emulators.scm (mgba): Update to 0.7.3.
---
 gnu/packages/emulators.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index d3feda3f17..f59c0fe92b 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -405,7 +405,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
 (define-public mgba
   (package
     (name "mgba")
-    (version "0.7.2")
+    (version "0.7.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -414,7 +414,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0g0xa1mzvan0sl1p5c784j2g5mcw9kd2b7wiahy06gy0c1nmbcnp"))
+                "1wrmwh50rv8bd328r8cisrihq6h90kx2bfb0vmjfbsd3l1jvgrgm"))
               (modules '((guix build utils)))
               (snippet
                ;; Make sure we don't use the bundled software.

From fb6e550d6b054371bff5d27f4c368a8cd977bb40 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Mon, 16 Sep 2019 08:21:58 +0200
Subject: [PATCH 322/408] gnu: retroarch: Update to 1.7.8.4.

* gnu/packages/emulators.scm (retroarch): Update to 1.7.8.4.
---
 gnu/packages/emulators.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index f59c0fe92b..c6eda97473 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1054,7 +1054,7 @@ emulation community.  It provides highly accurate emulation.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.7.8.3")
+    (version "1.7.8.4")
     (source
      (origin
        (method git-fetch)
@@ -1063,7 +1063,7 @@ emulation community.  It provides highly accurate emulation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0lsfiljy6cin3xsxyh80d6y9a77h7h82fcm6k148cd8mndvyxcdn"))))
+        (base32 "1i3i23xwvmck8k2fpalr49np7xjzfg507243mybqrljawlnbxvph"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests

From ec36339dfd2241cd518bb86b6714fc3b340afa95 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro 
Date: Sat, 10 Aug 2019 22:52:50 +1000
Subject: [PATCH 323/408] services: certbot: Add --manual-public-ip-logging-ok
 for manual challenges
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/services/certbot.scm (certbot-command): Add
  --manual-public-ip-logging-ok flag to the certbot command when doing a
  manual challenge.

Signed-off-by: Ludovic Courtès 
---
 doc/guix.texi            | 4 +++-
 gnu/services/certbot.scm | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 39d4b865f6..55935b3794 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20302,7 +20302,9 @@ all domains will be Subject Alternative Names on the certificate.
 The challenge type that has to be run by certbot.  If @code{#f} is specified,
 default to the HTTP challenge.  If a value is specified, defaults to the
 manual plugin (see @code{authentication-hook}, @code{cleanup-hook} and
-the documentation at @url{https://certbot.eff.org/docs/using.html#hooks}).
+the documentation at @url{https://certbot.eff.org/docs/using.html#hooks}),
+and gives Let's Encrypt permission to log the public IP address of the
+requesting machine.
 
 @item @code{authentication-hook} (default: @code{#f})
 Command to be run in a shell once for each certificate challenge to be
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index ae34ad17bb..0d3be03383 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -99,6 +99,7 @@
                             "--manual"
                             (string-append "--preferred-challenges=" challenge)
                             "--cert-name" name
+                            "--manual-public-ip-logging-ok"
                             "-d" (string-join domains ","))
                       (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '())
                       (if authentication-hook

From 9bbaf2ae72ce8457702f50277fee908d2c43d13c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Fri, 13 Sep 2019 17:35:08 +0200
Subject: [PATCH 324/408] pack: Add packages in the order in which they appear
 on the command line.

* guix/scripts/pack.scm (guix-pack)[manifest-from-args](packages):
Reverse order of packages taken from OPTS.
---
 guix/scripts/pack.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index dd91a24284..055d6c95f5 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -944,7 +944,8 @@ Create a bundle of PACKAGE.\n"))
                                   (list (transform store package) output))
                                  ((? package? package)
                                   (list (transform store package) "out")))
-                               (filter-map maybe-package-argument opts)))
+                               (reverse
+                                (filter-map maybe-package-argument opts))))
            (manifest-file (assoc-ref opts 'manifest)))
       (define properties
         (if (assoc-ref opts 'save-provenance?)

From 0074844366381e3056d09492b8b437836c7adb61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Fri, 13 Sep 2019 17:32:16 +0200
Subject: [PATCH 325/408] pack: Provide a meaningful "repository name" for
 Docker.

Previously, images produced by 'guix pack -f docker' would always show
up as "profile" in the output of 'docker images'.  With this change,
'docker images' shows a name constructed from the packages found in the
image--e.g., "bash-coreutils-grep-sed".

* guix/docker.scm (canonicalize-repository-name): New procedure.
(generate-tag): Remove.
(manifest): Add optional 'tag' parameter and honor it.
(repositories): Likewise.
(build-docker-image): Add #:repository parameter and pass it to
'manifest' and 'repositories'.
* guix/scripts/pack.scm (docker-image)[build]: Compute 'tag' and pass it
as #:repository to 'build-docker-image'.
---
 guix/docker.scm       | 43 ++++++++++++++++++++++++++++++-------------
 guix/scripts/pack.scm | 13 +++++++++++++
 2 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/guix/docker.scm b/guix/docker.scm
index 757bdeb458..97ac6d982b 100644
--- a/guix/docker.scm
+++ b/guix/docker.scm
@@ -57,22 +57,36 @@
     (created . ,time)
     (container_config . #nil)))
 
-(define (generate-tag path)
-  "Generate an image tag for the given PATH."
-  (match (string-split (basename path) #\-)
-    ((hash name . rest) (string-append name ":" hash))))
+(define (canonicalize-repository-name name)
+  "\"Repository\" names are restricted to roughtl [a-z0-9_.-].
+Return a version of TAG that follows these rules."
+  (define ascii-letters
+    (string->char-set "abcdefghijklmnopqrstuvwxyz"))
 
-(define (manifest path id)
+  (define separators
+    (string->char-set "_-."))
+
+  (define repo-char-set
+    (char-set-union char-set:digit ascii-letters separators))
+
+  (string-map (lambda (chr)
+                (if (char-set-contains? repo-char-set chr)
+                    chr
+                    #\.))
+              (string-trim (string-downcase name) separators)))
+
+(define* (manifest path id #:optional (tag "guix"))
   "Generate a simple image manifest."
-  `#(((Config . "config.json")
-      (RepoTags . #(,(generate-tag path)))
-      (Layers . #(,(string-append id "/layer.tar"))))))
+  (let ((tag (canonicalize-repository-name tag)))
+    `#(((Config . "config.json")
+        (RepoTags . #(,(string-append tag ":latest")))
+        (Layers . #(,(string-append id "/layer.tar")))))))
 
 ;; According to the specifications this is required for backwards
 ;; compatibility.  It duplicates information provided by the manifest.
-(define (repositories path id)
+(define* (repositories path id #:optional (tag "guix"))
   "Generate a repositories file referencing PATH and the image ID."
-  `((,(generate-tag path) . ((latest . ,id)))))
+  `((,(canonicalize-repository-name tag) . ((latest . ,id)))))
 
 ;; See https://github.com/opencontainers/image-spec/blob/master/config.md
 (define* (config layer time arch #:key entry-point (environment '()))
@@ -112,6 +126,7 @@
 
 (define* (build-docker-image image paths prefix
                              #:key
+                             (repository "guix")
                              (extra-files '())
                              (transformations '())
                              (system (utsname:machine (uname)))
@@ -121,7 +136,9 @@
                              compressor
                              (creation-time (current-time time-utc)))
   "Write to IMAGE a Docker image archive containing the given PATHS.  PREFIX
-must be a store path that is a prefix of any store paths in PATHS.
+must be a store path that is a prefix of any store paths in PATHS.  REPOSITORY
+is a descriptive name that will show up in \"REPOSITORY\" column of the output
+of \"docker images\".
 
 When DATABASE is true, copy it to /var/guix/db in the image and create
 /var/guix/gcroots and friends.
@@ -243,10 +260,10 @@ SRFI-19 time-utc object, as the creation time in metadata."
                              #:entry-point entry-point))))
       (with-output-to-file "manifest.json"
         (lambda ()
-          (scm->json (manifest prefix id))))
+          (scm->json (manifest prefix id repository))))
       (with-output-to-file "repositories"
         (lambda ()
-          (scm->json (repositories prefix id)))))
+          (scm->json (repositories prefix id repository)))))
 
     (apply invoke "tar" "-cf" image "-C" directory
            `(,@%tar-determinism-options
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 055d6c95f5..2543f0c0b5 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -516,6 +516,18 @@ the image."
               `((directory "/tmp" ,(getuid) ,(getgid) #o1777)
                 ,@(append-map symlink->directives '#$symlinks)))
 
+            (define tag
+              ;; Compute a meaningful "repository" name, which will show up in
+              ;; the output of "docker images".
+              (let ((manifest (profile-manifest #$profile)))
+                (let loop ((names (map manifest-entry-name
+                                       (manifest-entries manifest))))
+                  (define str (string-join names "-"))
+                  (if (< (string-length str) 40)
+                      str
+                      (match names
+                        ((_) str)
+                        ((names ... _) (loop names))))))) ;drop one entry
 
             (setenv "PATH" (string-append #$archiver "/bin"))
 
@@ -524,6 +536,7 @@ the image."
                                      (call-with-input-file "profile"
                                        read-reference-graph))
                                 #$profile
+                                #:repository tag
                                 #:database #+database
                                 #:system (or #$target (utsname:machine (uname)))
                                 #:environment environment

From 7e772cb66d050b86b6dde97bc97d09e708e01714 Mon Sep 17 00:00:00 2001
From: Kyle Meyer 
Date: Sat, 14 Sep 2019 02:15:31 -0400
Subject: [PATCH 326/408] gnu: git-annex: Update license.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/haskell-apps.scm (git-annex)[license]: Update main license to
AGPLv3+ and include other licenses mentioned in the package's COPYRIGHT file.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/haskell-apps.scm | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 5cd6549c27..8c4048aa66 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -374,9 +374,16 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
 checking the file contents into Git.  It can store files in many places,
 such as local hard drives and cloud storage services.  It can also be
 used to keep a folder in sync between computers.")
-    ;; The web app is released under the AGPLv3+.
-    (license (list license:gpl3+
-                   license:agpl3+))))
+    ;; The main author has released all his changes under AGPLv3+ as of March
+    ;; 2019 (7.20190219-187-g40ecf58d4).  These are also licensed under the
+    ;; original GPLv3+ license, but going forward new changes will be under
+    ;; only AGPLv3+.  The other licenses below cover code written by others.
+    ;; See git-annex's COPYRIGHT file for details on each file.
+    (license (list license:agpl3+
+                   license:gpl3+
+                   license:bsd-2
+                   license:expat
+                   license:gpl2))))
 
 (define-public hlint
   (package

From e405912c20cdd188274e850e72d145a39c917f77 Mon Sep 17 00:00:00 2001
From: Kyle Meyer 
Date: Sat, 14 Sep 2019 02:15:32 -0400
Subject: [PATCH 327/408] gnu: Add ghc-magic.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/haskell-xyz.scm (ghc-magic): New variable.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ee26c1a25a..4313b6059e 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2019 Robert Vollmert 
 ;;; Copyright © 2019 Jacob MacDonald 
 ;;; Copyright © 2019 John Soo 
+;;; Copyright © 2019 Kyle Meyer 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5954,6 +5955,28 @@ monadic incremental interface is provided as well.")
 compression algorithm used in the @code{.xz} file format.")
     (license license:bsd-3)))
 
+(define-public ghc-magic
+  (package
+    (name "ghc-magic")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/magic/magic-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "10p0gjjjwr1dda7hahwrwn5njbfhl67arq3v3nf1jr3vymlkn75j"))))
+    (build-system haskell-build-system)
+    (home-page "http://hackage.haskell.org/package/magic")
+    (synopsis "Interface to C file/magic library")
+    (description
+     "This package provides a full-featured binding to the C libmagic library.
+With it, you can determine the type of a file by examining its contents rather
+than its name.")
+    (license license:bsd-3)))
+
 (define-public ghc-markdown-unlit
   (package
     (name "ghc-markdown-unlit")

From f2a3ff859119a81c6d302c552d404bf0462b09e3 Mon Sep 17 00:00:00 2001
From: Kyle Meyer 
Date: Sat, 14 Sep 2019 02:15:33 -0400
Subject: [PATCH 328/408] gnu: git-annex: Build with MagicMime support.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

git-annex has a mechanism for configuring whether a file is added to the annex
or stored in git.  Building with MagicMime support makes it possible to
condition the behavior on a file's MIME type.

* gnu/packages/haskell-apps.scm (git-annex)[inputs]: Add ghc-magic.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/haskell-apps.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 8c4048aa66..1341994e60 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -337,6 +337,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
        ("ghc-http-conduit" ,ghc-http-conduit)
        ("ghc-http-types" ,ghc-http-types)
        ("ghc-ifelse" ,ghc-ifelse)
+       ("ghc-magic" ,ghc-magic)
        ("ghc-memory" ,ghc-memory)
        ("ghc-monad-control" ,ghc-monad-control)
        ("ghc-monad-logger" ,ghc-monad-logger)

From 1ece099d5cfdf344e239b28b58515545931a8a60 Mon Sep 17 00:00:00 2001
From: Kyle Meyer 
Date: Sat, 14 Sep 2019 02:15:34 -0400
Subject: [PATCH 329/408] gnu: git-annex: Update to 7.20190912.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/haskell-apps.scm (git-annex): Update 7.20190912.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/haskell-apps.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 1341994e60..e09285d63a 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -245,7 +245,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "7.20190708")
+    (version "7.20190912")
     (source
      (origin
        (method url-fetch)
@@ -253,7 +253,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
         (base32
-         "18s563swrp8mx479995pdhhmn40y3xwlbm1z3w63qsnjqmj7zlij"))))
+         "1a3jvl5cx32v78s3015i10cx00jprm1391rpww4mzkk1vskzn9cv"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags

From a1a4a4071528104fe192cccbe59d64bf2ca485c3 Mon Sep 17 00:00:00 2001
From: Brian Leung 
Date: Thu, 12 Sep 2019 09:27:38 +0200
Subject: [PATCH 330/408] gnu: emacs-dumb-jump: Update to 0.5.3.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/emacs-xyz.scm (emacs-dumb-jump): Update to 0.5.3.

Signed-off-by: Ludovic Courtès 
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2452949d0f..b2f057a439 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -13669,7 +13669,7 @@ through the symbol: @command{this-fn}.")
 (define-public emacs-dumb-jump
   (package
     (name "emacs-dumb-jump")
-    (version "0.5.2")
+    (version "0.5.3")
     (source
      (origin
        (method git-fetch)
@@ -13678,7 +13678,7 @@ through the symbol: @command{this-fn}.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00ph85vp8sa3k99qrdxfz4l8zx121q9xf47vvspzg26bk9l4nwin"))))
+        (base32 "1njf60264snhxrd36m4z687lqfkis0p9mmrr7cf1c8l0lfdvawxi"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #f ; FIXME: Tests freeze when run.

From 1d25447e8b1003a4c53d656fab13a62604a755b3 Mon Sep 17 00:00:00 2001
From: Kyle Andrews 
Date: Sat, 14 Sep 2019 15:43:53 -0400
Subject: [PATCH 331/408] gnu: Add herbstluftwm.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/wm.scm (herbstluftwm): New variable.

Co-authored-by: Ludovic Courtès 
---
 gnu/packages/wm.scm | 81 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index c4b15cc755..e19c6c1438 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2019 Rutger Helling 
 ;;; Copyright © 2019 Timothy Sample 
 ;;; Copyright © 2019 Gábor Boskovits 
+;;; Copyright © 2019 Kyle Andrews 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -128,6 +129,86 @@
 the leaves of a full binary tree.")
     (license license:bsd-2)))
 
+(define-public herbstluftwm
+  (package
+    (name "herbstluftwm")
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1kc18aj9j3nfz6fj4qxg9s3gg4jvn6kzi3ii24hfm0vqdpy17xnz"))
+       (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("dzen"        ,dzen)
+       ("dmenu"       ,dmenu)
+       ("glib"        ,glib)
+       ("glibmm"      ,glibmm)
+       ("xterm"       ,xterm)
+       ("xsetroot"    ,xsetroot)
+       ("libx11"      ,libx11)
+       ("libxext"     ,libxext)
+       ("libxinerama" ,libxinerama)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file
+                   (string-append xsessions "/herbstluftwm.desktop")
+                 (lambda (port)
+                   (format port "~
+                     [Desktop Entry]~@
+                     Name=herbstluftwm~@
+                     Comment=Manual tiling window manager~@
+                     Exec=~a/bin/herbstluftwm~@
+                     Type=XSession~%" out)))
+               #t))))
+       #:tests? #f
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list "CC=gcc"
+               (string-append "PREFIX=''")
+               (string-append "DESTDIR=" out)
+               (string-append "BASHCOMPLETIONDIR=" out
+                              "/etc/bash_completion.d")))))
+    (synopsis "Tiling window manager for X11")
+    (description "herbstluftwm is a manual tiling window manager for X11 using
+Xlib and GLib.  Its main features are:
+
+@itemize
+@item
+The layout is based on splitting frames into subframes which can be split
+again or can be filled with windows (similar to i3 or musca).
+
+@item
+Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
+Each tag contains an own layout.
+
+@item
+Exactly one tag is viewed on each monitor.  The tags are monitor independent
+(similar to Xmonad).
+
+@item
+It is configured at runtime via IPC calls from @command{herbstclient}.  So the
+configuration file is just a script which is run on startup (similar to wmii
+or musca).
+
+@end itemize")
+    (home-page "https://herbstluftwm.org")
+    (license license:bsd-2)))
+
 (define-public i3status
   (package
     (name "i3status")

From 5216632a9552d0ea8c08a1b63cbb788f0e1ae0a2 Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt 
Date: Mon, 16 Sep 2019 11:58:21 +0200
Subject: [PATCH 332/408] gnu: Add s-sysdeps.

* gnu/packages/lisp.scm (sbcl-s-sysdeps, cl-s-sysdeps, ecl-s-sysdeps): New variables.
---
 gnu/packages/lisp.scm | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 65fc1a58cd..3ff946da15 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -6861,3 +6861,42 @@ extension-points via the concept of hooks.")
 
 (define-public ecl-cl-hooks
   (sbcl-package->ecl-package sbcl-cl-hooks))
+
+(define-public sbcl-s-sysdeps
+  (let ((commit "d28246b5dffef9e73a0e0e6cfbc4e878006fe34d")
+        (revision "1"))
+    (package
+      (name "sbcl-s-sysdeps")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "1" revision commit))
+      (home-page "https://github.com/svenvc/s-sysdeps")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "14b69b81yrxmjlvmm3lfxk04x5v7hqz4fql121334wh72czznfh9"))))
+      (synopsis "Common Lisp abstraction layer over platform dependent functionality")
+      (description "@code{s-sysdeps} is an abstraction layer over platform
+dependent functionality.  This simple package is used as a building block in a
+number of other open source projects.
+
+@code{s-sysdeps} abstracts:
+
+@itemize
+@item managing processes,
+@item implementing a standard TCP/IP server,
+@item opening a client TCP/IP socket stream,
+@item working with process locks.
+@end itemize\n")
+      (license license:llgpl))))
+
+(define-public cl-s-sysdeps
+  (sbcl-package->cl-source-package sbcl-s-sysdeps))
+
+(define-public ecl-s-sysdeps
+  (sbcl-package->ecl-package sbcl-s-sysdeps))

From eb2e9ef4d964177cdd161ec30e9ea3c900bec8aa Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt 
Date: Mon, 16 Sep 2019 11:58:40 +0200
Subject: [PATCH 333/408] gnu: Add cl-prevalence.

* gnu/packages/lisp.scm (cl-prevalence, sbcl-cl-prevalence, ecl-cl-prevalence): New variables.
---
 gnu/packages/lisp.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 3ff946da15..0c8ad1e2fa 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -6900,3 +6900,37 @@ number of other open source projects.
 
 (define-public ecl-s-sysdeps
   (sbcl-package->ecl-package sbcl-s-sysdeps))
+
+(define-public sbcl-cl-prevalence
+  (let ((commit "c163c227ed85d430b82cb1e3502f72d4f88e3cfa")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-prevalence")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "5" revision commit))
+      (home-page "https://github.com/40ants/cl-prevalence")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1i9zj1q2ahgwch56an21yzbgkynz0kab9fyxkq9mg8p3xrv38jjn"))))
+      (inputs
+       `(("s-sysdeps" ,sbcl-s-sysdeps)
+         ("s-xml" ,sbcl-s-xml)))
+      (synopsis "Implementation of object prevalence for Common Lisp")
+      (description "This Common Lisp library implements object prevalence (see
+@url{https://en.wikipedia.org/wiki/System_prevalence}).  It allows
+for (de)serializing to and from s-exps as well as XML.  Serialization of arbitrary
+classes and cyclic data structures are supported.")
+      (license license:llgpl))))
+
+(define-public cl-prevalence
+  (sbcl-package->cl-source-package sbcl-cl-prevalence))
+
+(define-public ecl-cl-prevalence
+  (sbcl-package->ecl-package sbcl-cl-prevalence))

From ad6e168b3f29576d92b00725dedbb38cd5f05e46 Mon Sep 17 00:00:00 2001
From: Martin Becze 
Date: Fri, 6 Sep 2019 06:35:34 -0400
Subject: [PATCH 334/408] gnu: evolution: Wrap with required path variables.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes .

* gnu/packages/gnome.scm (evolution)[arguments]: Add a ‘wrap-program’
phase.

Signed-off-by: Tobias Geerinckx-Rice 
---
 gnu/packages/gnome.scm | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5dc18b3bb5..f2edf92bd1 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -40,6 +40,7 @@
 ;;; Copyright © 2019 Jelle Licht 
 ;;; Copyright © 2019 Jonathan Frederickson 
 ;;; Copyright © 2019 Maxim Cournoyer 
+;;; Copyright © 2019 Martin Becze 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -8122,11 +8123,21 @@ generic enough to work for everyone.")
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
-       (list "-DENABLE_PST_IMPORT=OFF"    ; libpst is not packaged
-             "-DENABLE_LIBCRYPTUI=OFF"))) ; libcryptui hasn't seen a release
-                                          ; in four years and cannot be built.
+       (list "-DENABLE_PST_IMPORT=OFF"  ; libpst is not packaged
+             "-DENABLE_LIBCRYPTUI=OFF") ; libcryptui hasn't seen a release
+                                        ; in four years and cannot be built
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/evolution")
+                 `("XDG_DATA_DIRS" ":" prefix (,(getenv "XDG_DATA_DIRS")))
+                 `("GSETTINGS_SCHEMA_DIR" =
+                   (,(string-append out "/share/glib-2.0/schemas")))))
+             #t)))))
     (native-inputs
-     `(("glib" ,glib "bin")               ; glib-mkenums
+     `(("glib" ,glib "bin")             ; glib-mkenums
        ("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
        ("itstool" ,itstool)))
@@ -8134,6 +8145,7 @@ generic enough to work for everyone.")
      `(("enchant" ,enchant)
        ("evolution-data-server" ,evolution-data-server) ; must be the same version
        ("gcr" ,gcr)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("gnome-autoar" ,gnome-autoar)
        ("gnome-desktop" ,gnome-desktop)
        ("gtkspell3" ,gtkspell3)

From 76c0b608219cc1f58decbd85f4a8194337f0558d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Mon, 16 Sep 2019 11:16:40 +0200
Subject: [PATCH 335/408] import/cran: Export %bioconductor-version.

* guix/import/cran.scm (%bioconductor-version): Export it.
---
 guix/import/cran.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 35caa3e463..e47aff2b12 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -49,6 +49,7 @@
             cran-recursive-import
             %cran-updater
             %bioconductor-updater
+            %bioconductor-version
 
             cran-package?
             bioconductor-package?

From 41ca406fa54e69f61c55b11ffe5cf465192a907c Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Mon, 16 Sep 2019 11:23:57 +0200
Subject: [PATCH 336/408] build-system/r: Use %bioconductor-version.

* guix/build-system/r.scm (bioconductor-uri): Use %bioconductor-version
instead of hard-coding the version string.
---
 guix/build-system/r.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm
index dd2a9fe8de..936ad974d0 100644
--- a/guix/build-system/r.scm
+++ b/guix/build-system/r.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus 
+;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +24,7 @@
   #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
+  #:use-module ((guix import cran) #:select (%bioconductor-version))
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26)
   #:export (%r-build-system-modules
@@ -58,8 +59,8 @@ release corresponding to NAME and VERSION."
                          type-url-part
                          "/src/contrib/"
                          name "_" version ".tar.gz")
-          ;; TODO: use %bioconductor-version from (guix import cran)
-          (string-append "https://bioconductor.org/packages/3.9"
+          (string-append "https://bioconductor.org/packages/"
+                         %bioconductor-version
                          type-url-part
                          "/src/contrib/Archive/"
                          name "_" version ".tar.gz"))))

From 456da45c1ba8d28582053354f32bdb330c02e7a6 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Mon, 16 Sep 2019 12:17:59 +0200
Subject: [PATCH 337/408] gnu: libvterm: Update to 0.1.

* gnu/packages/terminals.scm (libvterm): Update to 0.1.
---
 gnu/packages/terminals.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index f0117eead3..98ed77289a 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2017 José Miguel Sánchez García 
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2017 Kei Kebreau 
-;;; Copyright © 2017, 2018 Ricardo Wurmus 
+;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus 
 ;;; Copyright © 2017 Petter 
 ;;; Copyright © 2018 Hartmut Goebel 
 ;;; Copyright © 2018 Arun Isaac 
@@ -460,7 +460,7 @@ should be thread-safe.")
 (define-public libvterm
   (package
     (name "libvterm")
-    (version "0+bzr681")
+    (version "0.1")
     (source
      (origin
        (method url-fetch)
@@ -468,12 +468,13 @@ should be thread-safe.")
                            "libvterm-" version ".tar.gz"))
        (sha256
         (base32
-         "1s56c8p1qz6frkcri0hg4qyydv2wcccj6n2xmz1dwcdqn38ldsmb"))))
+         "1pcxjhvdwhr2f3lyzf2rv1vp3l62bgkjm1ybhj82qf8yly7ca6g4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
        (list "CC=gcc"
              (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:tests? #f ; XXX: some tests fail in this release
        #:test-target "test"
        #:phases
        (modify-phases %standard-phases

From 9ad3d6798170729eb49821e587c865a457c619a5 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Mon, 16 Sep 2019 12:24:48 +0200
Subject: [PATCH 338/408] gnu: Add lua-luv.

* gnu/packages/lua.scm (lua-luv, lua5.1-luv, lua5.2-luv): New variables.
(make-lua-luv): New procedure.
---
 gnu/packages/lua.scm | 66 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 65 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index ff62d3b362..075decc61a 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014 Mark H Weaver 
 ;;; Copyright © 2014 Andreas Enge 
 ;;; Copyright © 2016, 2017 Efraim Flashner 
-;;; Copyright © 2016 Ricardo Wurmus 
+;;; Copyright © 2016, 2019 Ricardo Wurmus 
 ;;; Copyright © 2016 doncatnip 
 ;;; Copyright © 2016, 2017, 2019 Clément Lassieur 
 ;;; Copyright © 2016 José Miguel Sánchez García 
@@ -39,6 +39,7 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xorg)
@@ -450,6 +451,69 @@ Grammars (PEGs).")
 (define-public lua5.2-lpeg
   (make-lua-lpeg "lua5.2-lpeg" lua-5.2))
 
+(define (make-lua-luv name lua)
+  (package
+    (name name)
+    (version "1.30.1-0")
+    (source (origin
+              ;; The release tarball includes the sources of libuv but does
+              ;; not include the pkg-config files.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/luvit/luv.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lfzzyphpim28kw33k7zylcyxnf40ckhdg6hbqyzb5hszdf2hbka"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ; there are none
+       #:configure-flags
+       '("-DWITH_LUA_ENGINE=Lua"
+         "-DWITH_SHARED_LIBUV=On"
+         "-DBUILD_MODULE=Off"
+         "-DBUILD_SHARED_LIBS=On"
+         "-DLUA_BUILD_TYPE=System")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'copy-lua-compat
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "lua-compat")
+                               "lua-compat")
+             (setenv "CPATH"
+                     (string-append (getcwd) "/lua-compat:"
+                                    (or (getenv "CPATH") "")))
+             #t)))))
+    (inputs
+     `(("lua" ,lua)
+       ("libuv" ,libuv)))
+    (native-inputs
+     `(("lua-compat"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/keplerproject/lua-compat-5.3.git")
+                 (commit "daebe77a2f498817713df37f0bb316db1d82222f")))
+           (file-name "lua-compat-5.3-checkout")
+           (sha256
+            (base32
+             "02a14nvn7aggg1yikj9h3dcf8aqjbxlws1bfvqbpfxv9d5phnrpz"))))))
+    (home-page "https://github.com/luvit/luv/")
+    (synopsis "Libuv bindings for Lua")
+    (description
+     "This library makes libuv available to Lua scripts.")
+    (license license:asl2.0)))
+
+(define-public lua-luv
+  (make-lua-luv "lua-luv" lua))
+
+(define-public lua5.1-luv
+  (make-lua-luv "lua5.1-luv" lua-5.1))
+
+(define-public lua5.2-luv
+  (make-lua-luv "lua5.2-luv" lua-5.2))
+
 ;; Lua 5.3 is not supported.
 (define (make-lua-bitop name lua)
   (package

From 518fd3b6592203df73fec347d30016d4260ee127 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Mon, 16 Sep 2019 12:25:30 +0200
Subject: [PATCH 339/408] gnu: neovim: Update to 0.4.2.

* gnu/packages/vim.scm (neovim): Update to 0.4.2.
[arguments]: Remove "patch-tic" phase; add "lua-luv" to "set-lua-paths" phase.
[inputs]: Add lua5.1-luv.
---
 gnu/packages/vim.scm | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 8ebdbb9a35..b1f47bd010 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -735,7 +735,7 @@ are detected, the user is notified.")))
 (define-public neovim
   (package
     (name "neovim")
-    (version "0.3.7")
+    (version "0.4.2")
     (source
      (origin
        (method git-fetch)
@@ -745,7 +745,7 @@ are detected, the user is notified.")))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1j6w5jvq5v7kf7diad91qs1acr427nidnk9s24yyrz0hwdd1c2lh"))))
+         "13w446plvgl219lhj29jyimhiqvs1y1byrz4qpdmxgyddmx9xqss"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules ((srfi srfi-26)
@@ -754,13 +754,6 @@ are detected, the user is notified.")))
        #:configure-flags '("-DPREFER_LUA:BOOL=YES")
        #:phases
        (modify-phases %standard-phases
-         ;; TODO: remove 'patch-tic on update
-         ;; see: https://github.com/neovim/neovim/issues/9687
-         (add-after 'unpack 'patch-tic
-           (lambda _
-             (substitute* "src/nvim/tui/tui.c"
-               (("value != NULL") "value != NULL && value != (char *)-1"))
-             #t))
          (add-after 'unpack 'set-lua-paths
            (lambda* (#:key inputs #:allow-other-keys)
              (let* ((lua-version "5.1")
@@ -774,6 +767,7 @@ are detected, the user is notified.")))
                          (string-append path "/?.lua;" path "/?/?.lua"))))
                     (lua-inputs (map (cute assoc-ref %build-inputs <>)
                                      '("lua"
+                                       "lua-luv"
                                        "lua-lpeg"
                                        "lua-bitop"
                                        "lua-libmpack"))))
@@ -791,6 +785,7 @@ are detected, the user is notified.")))
        ("jemalloc" ,jemalloc)
        ("libiconv" ,libiconv)
        ("lua" ,lua-5.1)
+       ("lua-luv" ,lua5.1-luv)
        ("lua-lpeg" ,lua5.1-lpeg)
        ("lua-bitop" ,lua5.1-bitop)
        ("lua-libmpack" ,lua5.1-libmpack)))

From 74e7465c9b3758c1509a3e0dbe575e2014e20f0a Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Mon, 16 Sep 2019 14:34:15 +0300
Subject: [PATCH 340/408] Revert "build-system/r: Use %bioconductor-version."

This reverts commit 41ca406fa54e69f61c55b11ffe5cf465192a907c.

This commit breaks 'guix pull', as reported by Hao Chen.
---
 guix/build-system/r.scm | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm
index 936ad974d0..dd2a9fe8de 100644
--- a/guix/build-system/r.scm
+++ b/guix/build-system/r.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus 
+;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,7 +24,6 @@
   #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
-  #:use-module ((guix import cran) #:select (%bioconductor-version))
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26)
   #:export (%r-build-system-modules
@@ -59,8 +58,8 @@ release corresponding to NAME and VERSION."
                          type-url-part
                          "/src/contrib/"
                          name "_" version ".tar.gz")
-          (string-append "https://bioconductor.org/packages/"
-                         %bioconductor-version
+          ;; TODO: use %bioconductor-version from (guix import cran)
+          (string-append "https://bioconductor.org/packages/3.9"
                          type-url-part
                          "/src/contrib/Archive/"
                          name "_" version ".tar.gz"))))

From 3f19b268ea3dbd4ec266926d25f7172fbd5b9cee Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 10 Sep 2019 12:45:39 +0300
Subject: [PATCH 341/408] gnu: Add klavaro.

* gnu/packages/education.scm (klavaro): New variable.
---
 gnu/packages/education.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 240fc4acd8..0ec1de7b75 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2016 Danny Milosavljevic 
 ;;; Copyright © 2016, 2017 Ricardo Wurmus 
 ;;; Copyright © 2016 Hartmut Goebel 
-;;; Copyright © 2017, 2018 Efraim Flashner 
+;;; Copyright © 2017, 2018, 2019 Efraim Flashner 
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018, 2019 Nicolas Goaziou 
 ;;;
@@ -520,3 +520,30 @@ minutes.  For simpler timetables, it may take a shorter time, under
 difficult timetables, it may take a longer time, a matter of hours.")
     (license license:agpl3+)))
 
+(define-public klavaro
+  (package
+    (name "klavaro")
+    (version "3.09")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "mirror://sourceforge/klavaro/klavaro-"
+                            version ".tar.bz2"))
+        (sha256
+         (base32
+          "12gml7h45b1w9s318h0d5wxw92h7pgajn2kh57j0ak9saq0yb0wr"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("curl" ,curl)
+       ("gtk+" ,gtk+)
+       ("pango" ,pango)))
+    (home-page "https://klavaro.sourceforge.io/en/index.html")
+    (synopsis "Touch typing tutor")
+    (description
+     "Klavaro is a simple tutor to teach correct typing, almost independently of
+language and very flexible regarding to new or unknown keyboard layouts.")
+    (license license:gpl3+)))

From dece34332b9e4c8e1794dab7c430094f733a2d1a Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 10 Sep 2019 12:46:40 +0300
Subject: [PATCH 342/408] gnu: Add kqtquickcharts.

* gnu/packages/kde.scm (kqtquickcharts): New variable.
---
 gnu/packages/kde.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index f2261f7f98..9010bd71ba 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -602,3 +602,28 @@ communicate with each other.  Here's a few things KDE Connect can do:
 @end enumerate")
     (properties `((upstream-name . "kdeconnect-kde")))
     (license (list license:gpl2 license:gpl3)))) ; dual licensed
+
+(define-public kqtquickcharts
+  (package
+    (name "kqtquickcharts")
+    (version "19.08.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "mirror://kde/stable/applications/"
+                            version "/src/kqtquickcharts-" version ".tar.xz"))
+        (sha256
+         (base32
+          "1j3rivvh4sa94lsd0hi4xfvcikl05zrqd7634wxyaxs718ais6dg"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)))
+    (home-page "https://phabricator.kde.org/source/kqtquickcharts/")
+    (synopsis "Interactive charts for Qt Quick")
+    (description
+     "Kqtquickcharts is a QtQuick plugin to render beautiful and interactive
+charts.")
+    (license license:lgpl2.1+)))

From d2c0a7a22f5f40a2ff745752fe6675126c1ed44b Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 10 Sep 2019 12:48:22 +0300
Subject: [PATCH 343/408] gnu: Add ktouch.

* gnu/packages/education.scm (ktouch): New variable.
---
 gnu/packages/education.scm | 72 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 0ec1de7b75..3181746282 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -36,6 +36,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages javascript)
+  #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -547,3 +548,74 @@ difficult timetables, it may take a longer time, a matter of hours.")
      "Klavaro is a simple tutor to teach correct typing, almost independently of
 language and very flexible regarding to new or unknown keyboard layouts.")
     (license license:gpl3+)))
+
+(define-public ktouch
+  (package
+    (name "ktouch")
+    (version "19.08.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "mirror://kde/stable/applications/"
+                            version "/src/ktouch-" version ".tar.xz"))
+        (sha256
+         (base32
+          "19rdk94pls75hdvx11hnfk3qpm6l28p9q45q5f04sknxagrfaznr"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:modules ((guix build cmake-build-system)
+                  (guix build qt-utils)
+                  (guix build utils))
+       #:imported-modules (,@%cmake-build-system-modules
+                            (guix build qt-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-makefiles
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((qtdec (assoc-ref inputs "qtdeclarative")))
+               (substitute* '("src/CMakeFiles/ktouch_autogen.dir/build.make"
+                              "src/CMakeFiles/ktouch.dir/build.make")
+                 (("/gnu/store/.*qmlcachegen")
+                  (string-append qtdec "/bin/qmlcachegen"))))
+             #t))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-qt-program out "ktouch"))
+             #t)))))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("kdoctools" ,kdoctools)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("kcmutils" ,kcmutils)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kdeclarative" ,kdeclarative)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kitemviews" ,kitemviews)
+       ("kqtquickcharts" ,kqtquickcharts)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libxcb" ,libxcb)
+       ("libxkbfile" ,libxkbfile)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtx11extras" ,qtx11extras)
+       ("qtxmlpatterns" ,qtxmlpatterns)))
+    (home-page "https://edu.kde.org/ktouch/")
+    (synopsis "Touch typing tutor")
+    (description
+     "KTouch is an aid for learning how to type with speed and accuracy.  It
+provides a sample text to type and indicates which fingers should be used for
+each key.  A collection of lessons are included for a wide range of different
+languages and keyboard layouts, and typing statistics are used to dynamically
+adjust the level of difficulty.")
+    (license license:gpl2)))

From 30ba3d8593108c898dd6dbdb119c85932ea85a89 Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Mon, 16 Sep 2019 14:04:52 +0200
Subject: [PATCH 344/408] gnu: wireguard: Update to 0.0.20190913.

* gnu/packages/vpn.scm (wireguard): Update to 0.0.20190913.
---
 gnu/packages/vpn.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 5f78c4365a..bc875b1c99 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -452,14 +452,14 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
 (define-public wireguard
   (package
     (name "wireguard")
-    (version "0.0.20190905")
+    (version "0.0.20190913")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.zx2c4.com/WireGuard/snapshot/"
                                   "WireGuard-" version ".tar.xz"))
               (sha256
                (base32
-                "1xm8w773impgp11jj6kp3fghld0aj8nhfpqla6lflsr8npp7qxkq"))))
+                "06452jfibwar4sh7wf2k2k1a5qk5q703gxqqq5ymj6rdblc2fwwr"))))
     (build-system gnu-build-system)
     (outputs '("out" ; The WireGuard userspace tools
                "kernel-patch")) ; A patch to build Linux with WireGuard support

From 489f540b4e625324a7f5009f9fef3160bd2c42fc Mon Sep 17 00:00:00 2001
From: Rutger Helling 
Date: Mon, 16 Sep 2019 14:06:09 +0200
Subject: [PATCH 345/408] gnu: linux-libre: Update to 5.2.15.

* gnu/packages/linux.scm (linux-libre): Update to 5.2.15.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 148254e63f..c9baecfa28 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -350,10 +350,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.2-version "5.2.13")
+(define-public linux-libre-5.2-version "5.2.15")
 (define-public linux-libre-5.2-pristine-source
   (let ((version linux-libre-5.2-version)
-        (hash (base32 "12hpph3iynr22mfwz7745lp01waf2kg579hr56d4pvhx4iahzdhp")))
+        (hash (base32 "0jhc70r2rygm91qifjagg1jgbpjwyyq6m8g1n5iv81l1v84i0mpb")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.2)))

From 230e59da1b41d5a6e770e428cbe2b8f66eaf9ee4 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Mon, 16 Sep 2019 16:16:18 +0300
Subject: [PATCH 346/408] gnu: education.scm: Import (gnu packages curl).

This is a follow-up to 3f19b268ea3dbd4ec266926d25f7172fbd5b9cee.

* gnu/packages/education.scm.scm: Import (gnu packages curl) module.
---
 gnu/packages/education.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 3181746282..b03b2cba2e 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages freedesktop)

From c34671a69dcc6fc508c54822580e68095c6e719c Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Mon, 16 Sep 2019 16:18:39 +0300
Subject: [PATCH 347/408] gnu: rust-percent-encoding: Update to 2.1.0.

* gnu/packages/crates-io.scm (rust-percent-encoding): Update to 2.1.0.
---
 gnu/packages/crates-io.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e138b93e9b..906a8e66bf 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2019,7 +2019,7 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
 (define-public rust-percent-encoding
   (package
     (name "rust-percent-encoding")
-    (version "2.0.0")
+    (version "2.1.0")
     (source
       (origin
         (method url-fetch)
@@ -2027,7 +2027,7 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0m6rkp3iy11la04p6z3492rns6n693pvmx585dvfmzzlzak2hkxs"))))
+          "0bp3zrsk3kr47fbpipyczidbbx4g54lzxdm77ni1i3qws10mdzfl"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/servo/rust-url/")
     (synopsis "Percent encoding and decoding")

From 59487fc29ae4119bdf5d270f29176cbf4b300012 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Mon, 16 Sep 2019 23:28:58 +0200
Subject: [PATCH 348/408] gnu: libgtop: Don't use NAME in source URI.

* gnu/packages/gnome.scm (libgtop)[source]: Hard-code NAME.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index f2edf92bd1..0cac850eb4 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5915,9 +5915,9 @@ providing graphical log-ins and managing local and remote displays.")
     (version "2.38.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/libgtop/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "libgtop-" version ".tar.xz"))
               (sha256
                (base32
                 "04mnxgzyb26wqk6qij4iw8cxwl82r8pcsna5dg8vz2j3pdi0wv2g"))))

From 015fc036116d2275a92cccd6e878d625d8903330 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Mon, 16 Sep 2019 23:29:08 +0200
Subject: [PATCH 349/408] gnu: libgtop: Update to 2.40.0.

* gnu/packages/gnome.scm (libgtop): Update to 2.40.0.
---
 gnu/packages/gnome.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 0cac850eb4..31ff2ab972 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5912,7 +5912,7 @@ providing graphical log-ins and managing local and remote displays.")
 (define-public libgtop
   (package
     (name "libgtop")
-    (version "2.38.0")
+    (version "2.40.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgtop/"
@@ -5920,7 +5920,7 @@ providing graphical log-ins and managing local and remote displays.")
                                   "libgtop-" version ".tar.xz"))
               (sha256
                (base32
-                "04mnxgzyb26wqk6qij4iw8cxwl82r8pcsna5dg8vz2j3pdi0wv2g"))))
+                "1m6jbqk8maa52gxrf223442fr5bvvxgb7ham6v039i3r1i62gwvq"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gobject-introspection" ,gobject-introspection)

From 82c4ad9646aa65f96a809d089f318680126d8b39 Mon Sep 17 00:00:00 2001
From: Timothy Sample 
Date: Thu, 12 Sep 2019 00:50:54 -0400
Subject: [PATCH 350/408] daemon: Include 'config.h' in 'nix-daemon.cc'.

* nix/nix-daemon/nix-daemon.cc: Include 'config.h'.
---
 nix/nix-daemon/nix-daemon.cc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc
index ffac6cde34..1163a249d1 100644
--- a/nix/nix-daemon/nix-daemon.cc
+++ b/nix/nix-daemon/nix-daemon.cc
@@ -1,3 +1,4 @@
+#include "config.h"
 #include "shared.hh"
 #include "local-store.hh"
 #include "util.hh"

From 9a94ccec4c14dab78326b2b1c449cd4ccd987bcb Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Tue, 6 Aug 2019 23:43:55 +0800
Subject: [PATCH 351/408] gnu: Add zinnia.

* gnu/packages/ocr.scm (zinnia): New variable.
---
 gnu/packages/ocr.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm
index 2808359ca2..14ea7e443b 100644
--- a/gnu/packages/ocr.scm
+++ b/gnu/packages/ocr.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Ludovic Courtès 
 ;;; Copyright © 2016 Efraim Flashner 
 ;;; Copyright © 2019 Tobias Geerinckx-Rice 
+;;; Copyright © 2019 Alex Vong 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages image))
@@ -76,3 +78,56 @@ positional information and page layout analysis.  Several image formats are
 supported through the Leptonica library.  It can also detect whether text is
 monospaced or proportional.")
     (license license:asl2.0)))
+
+(define-public zinnia
+  (let* ((commit "581faa8f6f15e4a7b21964be3a5ec36265c80e5b")
+         (revision "1")
+         ;; version copied from 'configure.in'
+         (version (git-version "0.07" revision commit)))
+    (package
+      (name "zinnia")
+      (version version)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/taku910/zinnia.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "1izjy5qw6swg0rs2ym2i72zndb90mwrfbd1iv8xbpwckbm4899lg"))
+         (file-name (git-file-name name version))
+         (modules '((guix build utils)
+                    (ice-9 ftw)
+                    (srfi srfi-26)))
+         (snippet ; remove unnecessary files with potentially different license
+          '(begin
+             (for-each delete-file-recursively
+                       (scandir "."
+                                (negate (cut member <> '("zinnia"
+                                                         "." "..")))))
+             #t))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'bootstrap
+             (lambda _
+               (chdir "zinnia")
+               (for-each make-file-writable
+                         '("config.log" "config.status"))
+               #t)))))
+      (home-page "https://taku910.github.io/zinnia/")
+      (synopsis "Online hand recognition system with machine learning")
+      (description
+       "Zinnia is a simple, customizable and portable online hand recognition
+system based on Support Vector Machines.  Zinnia simply receives user pen
+strokes as a sequence of coordinate data and outputs n-best characters sorted
+by SVM confidence.  To keep portability, Zinnia doesn't have any rendering
+functionality.  In addition to recognition, Zinnia provides training module
+that allows us to create any hand-written recognition systems with low-cost.")
+      (license (list license:bsd-3 ; all files except...
+                     (license:non-copyleft ; some autotools related files
+                      "file://zinnia/aclocal.m4")
+                     license:x11 ; 'install-sh'
+                     license:public-domain))))) ; 'install-sh'

From 16dd1fd044b3d47939707e0a863cb461c7455d25 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Tue, 6 Aug 2019 23:52:41 +0800
Subject: [PATCH 352/408] gnu: Add python2-zinnia.

* gnu/packages/ocr.scm (python2-zinnia): New variable.
---
 gnu/packages/ocr.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm
index 14ea7e443b..1266e7e419 100644
--- a/gnu/packages/ocr.scm
+++ b/gnu/packages/ocr.scm
@@ -25,7 +25,9 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages image))
 
 (define-public ocrad
@@ -131,3 +133,21 @@ that allows us to create any hand-written recognition systems with low-cost.")
                       "file://zinnia/aclocal.m4")
                      license:x11 ; 'install-sh'
                      license:public-domain))))) ; 'install-sh'
+
+;;; python 2 bindings, license under the same terms as zinnia
+(define-public python2-zinnia
+  (package
+    (inherit zinnia)
+    (name "python2-zinnia")
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2 ; CObject API is used, it was removed in Python 3.2
+       #:tests? #f ; avoid circular dependency on tegaki-zinnia-japanese
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "zinnia/python")
+             #t)))))
+    (inputs
+     `(("zinnia" ,zinnia)))))

From 410387ad058f94be5e633a84642d2133b1c8f77a Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 13:42:46 +0800
Subject: [PATCH 353/408] gnu: Add python2-tegaki-wagomu.

* gnu/packages/language.scm
(python2-tegaki-wagomu, remove-pre-compiled-files-modules): New variables.
(remove-pre-compiled-files, tegaki-release-uri): New procedures.
---
 gnu/packages/language.scm | 75 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 74 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 73376feecb..cc685437c9 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015, 2016 Eric Bavier 
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice 
 ;;; Copyright © 2018 ng0 
+;;; Copyright © 2019 Alex Vong 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,12 +21,17 @@
 
 (define-module (gnu packages language)
   #:use-module (gnu packages)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages web)
   #:use-module (guix packages)
   #:use-module (guix build-system perl)
-  #:use-module ((guix licenses) #:select (gpl2 gpl3 perl-license))
+  #:use-module (guix build-system python)
+  #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3 perl-license))
   #:use-module (guix download))
 
 (define-public perl-lingua-en-findnumber
@@ -406,3 +412,70 @@ string can be easily inferred by a human just by reading the identifier.")
     (description "This module is a rather incomplete implementation of work
 done by Gudrun Putze-Meier.")
     (license perl-license)))
+
+(define* (tegaki-release-uri proj version
+                             #:optional (ext "tar.gz"))
+  (string-append "https://github.com/tegaki/tegaki/releases/download"
+                 "/v" version "/" proj "-" version "." ext))
+
+(define remove-pre-compiled-files
+  (lambda exts
+    "Return snippet for removing pre-compiled files matching one of the
+extensions in EXTS."
+    `(begin (for-each delete-file
+                      (find-files "."
+                                  (lambda (name _)
+                                    (any (cut string-suffix? <> name)
+                                         (map (cut string-append "." <>)
+                                              ',exts)))))
+            #t)))
+
+;;; modules required for the above snippet
+(define remove-pre-compiled-files-modules
+  '((guix build utils)
+    (srfi srfi-1)
+    (srfi srfi-26)))
+
+(define-public python2-tegaki-wagomu
+  (package
+    (name "python2-tegaki-wagomu")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri "tegaki-wagomu" version))
+       (sha256
+        (base32
+         "1pzdiq4zy1nyylaj9i6v2h4h0r05klahskzpafpp367p4rysi1x9"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "pyc"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2 ; only Python 2 is supported
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-recognizer
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; fix missing module and function
+             (substitute* "tegakiwagomu.py"
+               (("import Results,")
+                "import ")
+               (("def _recognize")
+                "def recognize")
+               (("Results\\(candidates\\)")
+                "candidates"))
+             #t)))))
+    (inputs
+     `(("glib" ,glib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("swig" ,swig)))
+    (home-page "https://tegaki.github.io/")
+    (synopsis
+     "Chinese and Japanese Handwriting Recognition (Recognition engine)")
+    (description
+     "Tegaki is an ongoing project which aims to develop a free and open-source
+modern implementation of handwriting recognition software, specifically
+designed for Chinese (simplified and traditional) and Japanese, and that is
+suitable for both the desktop and mobile devices.")
+    (license gpl2+))) ; all files

From c2810523102dfe4fc8153c3b02fe881bf48c6699 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 13:49:19 +0800
Subject: [PATCH 354/408] gnu: Add python2-tegaki-python.

* gnu/packages/language.scm (python2-tegaki-python): New variable.
---
 gnu/packages/language.scm | 54 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 52 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index cc685437c9..2ef4fed721 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -22,6 +22,7 @@
 (define-module (gnu packages language)
   #:use-module (gnu packages)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages ocr)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -31,8 +32,10 @@
   #:use-module (guix packages)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
-  #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3 perl-license))
-  #:use-module (guix download))
+  #:use-module ((guix licenses)
+                #:select (bsd-3 gpl2 gpl2+ gpl3 perl-license zpl2.1))
+  #:use-module (guix download)
+  #:use-module (guix utils))
 
 (define-public perl-lingua-en-findnumber
   (package
@@ -479,3 +482,50 @@ modern implementation of handwriting recognition software, specifically
 designed for Chinese (simplified and traditional) and Japanese, and that is
 suitable for both the desktop and mobile devices.")
     (license gpl2+))) ; all files
+
+(define-public python2-tegaki-python
+  (package
+    (inherit python2-tegaki-wagomu)
+    (name "python2-tegaki-python")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri "tegaki-python" version))
+       (sha256
+        (base32
+         "0x93k7pw9nh0ywd97pr8pm7jv3f94nw044i5k0zvzhdpsjqvak7p"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "pyc"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python2-tegaki-wagomu)
+       ((#:phases _)
+        `(modify-phases %standard-phases
+           (add-after 'unpack 'pre-configure
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; Always convert string to unicode to avoid the following error
+               ;; when running "tegaki-build" in python2-tegaki-tools:
+               ;;
+               ;; sqlite3.ProgrammingError: You must not use 8-bit bytestrings
+               ;; unless you use a text_factory that can interpret 8-bit
+               ;; bytestrings (like text_factory = str).
+               ;; It is highly recommended that you instead just switch your
+               ;; application to Unicode strings.
+               (substitute* "tegaki/charcol.py"
+                 (("sqlite3.OptimizedUnicode")
+                  "lambda s: unicode(s, 'utf-8')"))
+               (substitute* "tegaki/engine.py"
+                 (("/usr(/local)?")
+                  (assoc-ref inputs "python2-tegaki-wagomu")))
+               #t))))))
+    ;; override inherited inputs
+    (inputs '())
+    (native-inputs '())
+    (propagated-inputs
+     `(("python2-tegaki-wagomu" ,python2-tegaki-wagomu)
+       ("python2-zinnia" ,python2-zinnia)))
+    (synopsis
+     "Chinese and Japanese Handwriting Recognition (Base python library)")
+    (license (list gpl2+ ; all files except...
+                   bsd-3 ; dictutils.py
+                   zpl2.1)))) ; minjson.py

From 58ac928925f4593bfc45c723c2f5cd2d93ba995b Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 13:53:26 +0800
Subject: [PATCH 355/408] gnu: Add python2-tegaki-pygtk.

* gnu/packages/language.scm (python2-tegaki-pygtk): New variable.
---
 gnu/packages/language.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 2ef4fed721..bc02ff9681 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -22,6 +22,7 @@
 (define-module (gnu packages language)
   #:use-module (gnu packages)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -29,6 +30,7 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages xorg)
   #:use-module (guix packages)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
@@ -529,3 +531,39 @@ suitable for both the desktop and mobile devices.")
     (license (list gpl2+ ; all files except...
                    bsd-3 ; dictutils.py
                    zpl2.1)))) ; minjson.py
+
+(define-public python2-tegaki-pygtk
+  (package
+    (inherit python2-tegaki-wagomu)
+    (name "python2-tegaki-pygtk")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri "tegaki-pygtk" version))
+       (sha256
+        (base32
+         "1cip0azxhjdj2dg2z85cp1z3lz4qwx3w1j7z4xmcm7npapmsaqs2"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "pyc"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python2-tegaki-wagomu)
+       ((#:phases _)
+        `(modify-phases %standard-phases
+           (add-after 'unpack 'fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "tegakigtk/fakekey.py"
+                 (("libX11.so.6" so)
+                  (string-append (assoc-ref inputs "libx11") "/lib/" so))
+                 (("libXtst.so.6" so)
+                  (string-append (assoc-ref inputs "libxtst") "/lib/" so)))
+               #t))))))
+    (inputs ; required for sending key strokes
+     `(("libx11" ,libx11)
+       ("libxtst" ,libxtst)))
+    (native-inputs '()) ; override inherited inputs
+    (propagated-inputs
+     `(("python2-pygtk" ,python2-pygtk)
+       ("python2-tegaki-python" ,python2-tegaki-python)))
+    (synopsis "Chinese and Japanese Handwriting Recognition (Base UI library)")
+    (license gpl2+))) ; all files

From dd97a9c4da44d490ea440f2ad774254ee26b99ac Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 13:56:56 +0800
Subject: [PATCH 356/408] gnu: Add python2-tegaki-tools.

* gnu/packages/language.scm (python2-tegaki-tools): New variable.
---
 gnu/packages/language.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index bc02ff9681..d12ca7451e 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -35,7 +35,7 @@
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module ((guix licenses)
-                #:select (bsd-3 gpl2 gpl2+ gpl3 perl-license zpl2.1))
+                #:select (bsd-3 gpl2 gpl2+ gpl3 gpl3+ perl-license zpl2.1))
   #:use-module (guix download)
   #:use-module (guix utils))
 
@@ -567,3 +567,30 @@ suitable for both the desktop and mobile devices.")
        ("python2-tegaki-python" ,python2-tegaki-python)))
     (synopsis "Chinese and Japanese Handwriting Recognition (Base UI library)")
     (license gpl2+))) ; all files
+
+(define-public python2-tegaki-tools
+  (package
+    (inherit python2-tegaki-wagomu)
+    (name "python2-tegaki-tools")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri "tegaki-tools" version))
+       (sha256
+        (base32
+         "0xxv97ggh2jgldw3r7y59lv3fhz733r6l7mdn6nh4m0gvb0ja971"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "pyc"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python2-tegaki-wagomu)
+       ((#:phases _) '%standard-phases)))
+    (inputs
+     `(("python2-tegaki-pygtk" ,python2-tegaki-pygtk)))
+    ;; override inherited inputs
+    (native-inputs '())
+    (propagated-inputs '())
+    (synopsis "Chinese and Japanese Handwriting Recognition (Advanced tools)")
+    ;; Files in gifenc/ are licensed under gpl3+ while other files are licensed
+    ;; under gpl2+. Therefore, the combined work is licensed under gpl3+.
+    (license gpl3+)))

From e4f72a584bc23ad564b2ab2c0f4e71cc0edd41e2 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:00:36 +0800
Subject: [PATCH 357/408] gnu: Add python2-tegaki-recognize.

* gnu/packages/language.scm (python2-tegaki-recognize): New variable.
---
 gnu/packages/language.scm | 56 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index d12ca7451e..ad7cf2a4b3 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -35,8 +35,10 @@
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module ((guix licenses)
-                #:select (bsd-3 gpl2 gpl2+ gpl3 gpl3+ perl-license zpl2.1))
+                #:select
+                (bsd-3 gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 perl-license zpl2.1))
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils))
 
 (define-public perl-lingua-en-findnumber
@@ -594,3 +596,55 @@ suitable for both the desktop and mobile devices.")
     ;; Files in gifenc/ are licensed under gpl3+ while other files are licensed
     ;; under gpl2+. Therefore, the combined work is licensed under gpl3+.
     (license gpl3+)))
+
+(define-public python2-tegaki-recognize
+  (let ((commit "eceec69fe651d0733c8c8752dae569d2283d0f3c")
+        (revision "1"))
+    (package
+      (inherit python2-tegaki-tools)
+      (name "python2-tegaki-recognize")
+      ;; version copied from 
+      (version (git-version "0.3.1" revision commit))
+      (source
+       (origin
+         ;; We use GIT-FETCH because 'tegaki-recognize.desktop.in' and
+         ;; 'tegaki-recognize.in' are missing in the tarball.
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tegaki/tegaki.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "09mw2if9p885phbgah5f95q3fwy7s5b46qlmpxqyzfcnj6g7afr5"))
+         (file-name (git-file-name name version))
+         (modules `((guix build utils)
+                    (ice-9 ftw)
+                    (srfi srfi-26)
+                    ,@remove-pre-compiled-files-modules))
+         (snippet
+          `(begin
+             ;; remove unnecessary files with potentially different license
+             (for-each delete-file-recursively
+                       (scandir "."
+                                (negate (cut member <> '("tegaki-recognize"
+                                                         "." "..")))))
+             ,(remove-pre-compiled-files "pyc")
+             #t))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments python2-tegaki-tools)
+         ((#:phases _)
+          `(modify-phases %standard-phases
+             (add-after 'unpack 'chdir
+               (lambda _
+                 (chdir "tegaki-recognize")
+                 #t))
+             ;; 'setup.py' script does not support one of the Python build
+             ;; system's default flags, "--single-version-externally-managed"
+             (replace 'install
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (invoke "python" "setup.py" "install"
+                         (string-append "--prefix=" (assoc-ref outputs "out"))
+                         "--root=/")
+                 #t))))))
+      (synopsis "Chinese and Japanese Handwriting Recognition (Main program)")
+      (license gpl2+)))) ; all files

From 3ed30b88c3f0dfbfcad33fa139acdea65591e128 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:03:26 +0800
Subject: [PATCH 358/408] gnu: Add tegaki-zinnia-japanese.

* gnu/packages/language.scm (tegaki-zinnia-japanese): New variable.
---
 gnu/packages/language.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index ad7cf2a4b3..db5a7cb8d2 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xorg)
   #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module ((guix licenses)
@@ -648,3 +649,40 @@ suitable for both the desktop and mobile devices.")
                  #t))))))
       (synopsis "Chinese and Japanese Handwriting Recognition (Main program)")
       (license gpl2+)))) ; all files
+
+(define-public tegaki-zinnia-japanese
+  (package
+    (inherit python2-tegaki-wagomu)
+    (name "tegaki-zinnia-japanese")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "1nmg9acxhcqly9gwkyb9m0hpy76fll91ywk4b1q4xms0ajxip1h7"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr/local")
+                (assoc-ref outputs "out")))
+             #t)))))
+    ;; override inherited inputs
+    (inputs '())
+    (native-inputs
+     `(("python2-tegaki-tools" ,python2-tegaki-tools)))
+    (propagated-inputs '())
+    (native-search-paths
+     (list (search-path-specification
+            (variable "TEGAKI_MODEL_PATH")
+            (files '("share/tegaki/models")))))
+    (synopsis "Chinese and Japanese Handwriting Recognition (Model)")
+    (license lgpl2.1))) ; all files

From c8bbd8088505022710345ae1b7102381e281c3d3 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:14:32 +0800
Subject: [PATCH 359/408] gnu: Add tegaki-zinnia-japanese-light.

* gnu/packages/language.scm (tegaki-zinnia-japanese-light): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index db5a7cb8d2..0f834568ea 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -686,3 +686,19 @@ suitable for both the desktop and mobile devices.")
             (files '("share/tegaki/models")))))
     (synopsis "Chinese and Japanese Handwriting Recognition (Model)")
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-japanese-light
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-japanese-light")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0x0fs29ylqzxd6xvg51h7rigpbisd7q8v11df425ib2j792yfyf8"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 5fd567487294654e7b2d5e4b5d5986b842db6779 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:18:33 +0800
Subject: [PATCH 360/408] gnu: Add tegaki-zinnia-japanese-kyoiku.

* gnu/packages/language.scm (tegaki-zinnia-japanese-kyoiku): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 0f834568ea..0eef76d660 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -702,3 +702,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-japanese-kyoiku
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-japanese-kyoiku")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0am94bcpmbzplxdnwn9gk15sgaizvcfhmv13mk14jjvx3419cvvx"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 8955412be1c05138153f1500a2593557b4348832 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:22:47 +0800
Subject: [PATCH 361/408] gnu: Add tegaki-zinnia-japanese-joyo.

* gnu/packages/language.scm (tegaki-zinnia-japanese-joyo): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 0eef76d660..6be09faa99 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -718,3 +718,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-japanese-joyo
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-japanese-joyo")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "1v0j40lzdyiz01ayws0b8r7fsdy2mr32658382kz4wyk883wzx2z"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From e06794645064f43ecd25b1759dd1afcf9973987d Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:27:15 +0800
Subject: [PATCH 362/408] gnu: Add tegaki-zinnia-simplified-chinese.

* gnu/packages/language.scm (tegaki-zinnia-simplified-chinese): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 6be09faa99..9daa579366 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -734,3 +734,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-simplified-chinese
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-simplified-chinese")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "18wq0jccv7lpnrfnzspyc110d6pj2v1i21xcx4fmgzz1lnln3fs5"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From ca1f28bd35fb699aac0f1d0bd2113dd51c49193b Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:30:08 +0800
Subject: [PATCH 363/408] gnu: Add tegaki-zinnia-simplified-chinese-light.

* gnu/packages/language.scm (tegaki-zinnia-simplified-chinese-light): New
variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 9daa579366..13dcd00318 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -750,3 +750,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-simplified-chinese-light
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-simplified-chinese-light")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0v24yf0w0p03lb7fyx128a75mwzad166bigvlbrzqnad789qg1sr"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 0bfcc29ddf1ee04b33ea7e47b9a8bc5be2dc47ab Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:31:45 +0800
Subject: [PATCH 364/408] gnu: Add tegaki-zinnia-traditional-chinese.

* gnu/packages/language.scm (tegaki-zinnia-traditional-chinese): New
variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 13dcd00318..6a0273f0c1 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -766,3 +766,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-traditional-chinese
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-traditional-chinese")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "140nlp6hynrai2svs5670jjfw1za6ayflhyj2dl0bzsfgbk3447l"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From caee9806ac03371bb46120376a9d9cfc6773386b Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:33:27 +0800
Subject: [PATCH 365/408] gnu: Add tegaki-zinnia-traditional-chinese-light.

* gnu/packages/language.scm (tegaki-zinnia-traditional-chinese-light): New
variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 6a0273f0c1..75b702d24e 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -782,3 +782,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-zinnia-traditional-chinese-light
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-zinnia-traditional-chinese-light")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "1m6yk6a57vs9wg5y50qciwi1ahhmklp2mgsjysbj4mnyzv6yhcr2"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 6b32e91a4cf97fc2085fb6f815e780b74bb74045 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:34:45 +0800
Subject: [PATCH 366/408] gnu: Add tegaki-wagomu-japanese.

* gnu/packages/language.scm (tegaki-wagomu-japanese): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 75b702d24e..54e8867f1c 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -798,3 +798,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-wagomu-japanese
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-wagomu-japanese")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0flj5id8xwsn7csrrzqz9prdikswnwm2wms0as2vzdpxzph1az4k"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From ee3dc52b3ff999772d3f45765ee5ad64f5d57427 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:35:45 +0800
Subject: [PATCH 367/408] gnu: Add tegaki-wagomu-japanese-kyoiku.

* gnu/packages/language.scm (tegaki-wagomu-japanese-kyoiku): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 54e8867f1c..ab94f6cba2 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -814,3 +814,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-wagomu-japanese-kyoiku
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-wagomu-japanese-kyoiku")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0v8crfh8rdf6ndp16g52s5jlrrlwh73xp38zjn5i9dlacx8kfqg1"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 7c25904c98f5460c447c787440d5378cef52fc6a Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:37:41 +0800
Subject: [PATCH 368/408] gnu: Add tegaki-wagomu-japanese-joyo.

* gnu/packages/language.scm (tegaki-wagomu-japanese-joyo): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index ab94f6cba2..8877dbd817 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -830,3 +830,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-wagomu-japanese-joyo
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-wagomu-japanese-joyo")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0wk8shpr963zp328g991qs6abpnacq4242003m687z2d6yp7nph2"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 708c6857c1f205ac5cdef667f80fe2220ef291a3 Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Thu, 8 Aug 2019 14:40:35 +0800
Subject: [PATCH 369/408] gnu: Add tegaki-wagomu-simplified-chinese.

* gnu/packages/language.scm (tegaki-wagomu-simplified-chinese): New variable.
---
 gnu/packages/language.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 8877dbd817..81f96a3870 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -846,3 +846,19 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+(define-public tegaki-wagomu-simplified-chinese
+  (package
+    (inherit tegaki-zinnia-japanese)
+    (name "tegaki-wagomu-simplified-chinese")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (tegaki-release-uri name version "zip"))
+       (sha256
+        (base32
+         "0wqprynigqxqxv128i1smh81gxvmjj056d9qpznxa3n9f5ymlbj6"))
+       (modules remove-pre-compiled-files-modules)
+       (snippet (remove-pre-compiled-files "model"))))
+    (license lgpl2.1))) ; all files

From 0ed97e69805253656df929a6ad678016aa81f08a Mon Sep 17 00:00:00 2001
From: Alex Vong 
Date: Wed, 14 Aug 2019 16:19:25 +0800
Subject: [PATCH 370/408] gnu: Add tegaki-wagomu-traditional-chinese.

* gnu/packages/language.scm (tegaki-wagomu-traditional-chinese): New
variable.
---
 gnu/packages/language.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 81f96a3870..1ed2483615 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -862,3 +862,24 @@ suitable for both the desktop and mobile devices.")
        (modules remove-pre-compiled-files-modules)
        (snippet (remove-pre-compiled-files "model"))))
     (license lgpl2.1))) ; all files
+
+;;; Upstream does not provide the source for tegaki-wagomu-traditional-chinese.
+;;; Therefore, we use the source for tegaki-zinnia-traditional-chinese and
+;;; patch the Makefile accordingly.
+(define-public tegaki-wagomu-traditional-chinese
+  (package
+    (inherit tegaki-zinnia-traditional-chinese)
+    (name "tegaki-wagomu-traditional-chinese")
+    (arguments
+     (substitute-keyword-arguments
+         (package-arguments tegaki-zinnia-traditional-chinese)
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (replace 'configure
+             (lambda args
+               (let ((configure (assq-ref ,phases 'configure)))
+                 (apply configure args))
+               (substitute* "Makefile"
+                 (("zinnia") "wagomu"))
+               #t))))))
+    (license lgpl2.1))) ; all files

From 9e8e252026f558933bdd9cfc26a75d13954b3e8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Tue, 17 Sep 2019 10:14:27 +0200
Subject: [PATCH 371/408] gnu: guix: Update to 1h2qlbb.

Fixes .
Reported by Mikhail Kryshen .

* gnu/packages/package-management.scm (guix): Update to 1h2qlbb.
---
 gnu/packages/package-management.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 18e8a3853f..a56c738e78 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -123,8 +123,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.0.1")
-        (commit "cc98b00857e29074de96a6ed60e325cdfffaea1a")
-        (revision 5))
+        (commit "0ed97e69805253656df929a6ad678016aa81f08a")
+        (revision 6))
     (package
       (name "guix")
 
@@ -140,7 +140,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0r5v4a0lyvn97gvp1q6algpw91k77r36vlnxx8w4s0c6r767b6z3"))
+                  "1h2qlbbdqi72jslx17gp2cak5494nbm8j44rz57lnplnfcn6iwaw"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments

From ff1d80f3041bb64c8237435b81e90bd9b60079dd Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 14:00:40 +0300
Subject: [PATCH 372/408] gnu: youtube-dl: Update source uri.

* gnu/packages/video.scm (youtube-dl)[source]: Update to new upstream uri.
---
 gnu/packages/video.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 8e0362752e..422dbab57e 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1495,8 +1495,8 @@ access to mpv's powerful playback capabilities.")
     (version "2019.09.12")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
-                                  "download/" version "/youtube-dl-"
+              (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
+                                  "releases/download/" version "/youtube-dl-"
                                   version ".tar.gz"))
               (sha256
                (base32

From e905c8d6548f499bb958811d0520ce1846e9cc92 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 17 Sep 2019 16:04:15 +0200
Subject: [PATCH 373/408] gnu: fuse: Update to 2.9.9.

* gnu/packages/linux.scm (fuse): Update to 2.9.9.
---
 gnu/packages/linux.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index c9baecfa28..8bdc6bdaf6 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -2119,7 +2119,7 @@ processes currently causing I/O.")
 (define-public fuse
   (package
     (name "fuse")
-    (version "2.9.8")
+    (version "2.9.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libfuse/libfuse/releases/"
@@ -2127,7 +2127,7 @@ processes currently causing I/O.")
                                   "/fuse-" version ".tar.gz"))
               (sha256
                (base32
-                "1qxg1r1mgysfq6qakmvid2njph3lr00w0swvydsfl9ymilfzi12y"))
+                "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh"))
               (patches (search-patches "fuse-overlapping-headers.patch"))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))

From 9e8b549fe6601d31ada0771a32d0b21928acb94c Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 17 Sep 2019 13:13:01 +0200
Subject: [PATCH 374/408] gnu: perl-clone: Update to 0.43.

* gnu/packages/perl.scm (perl-clone): Update to 0.43.
---
 gnu/packages/perl.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 56a857c0f8..d104c2434c 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -1266,14 +1266,14 @@ arrays for their internal representation.")
 (define-public perl-clone
   (package
     (name "perl-clone")
-    (version "0.42")
+    (version "0.43")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/G/GA/GARU/"
+              (uri (string-append "mirror://cpan/authors/id/A/AT/ATOOMIC/"
                                   "Clone-" version ".tar.gz"))
               (sha256
                (base32
-                "1r87rdm0nilfayxwlzvylwc8r3hr5m24180x437j30qpizdk1aal"))))
+                "1npf5s4b90ds6lv8gn76b2w4bdh0z5ni5zk4skgc2db5d12560lr"))))
     (build-system perl-build-system)
     (synopsis "Recursively copy Perl datatypes")
     (description

From cadf846bea46a8e3acd26c0bfceb4f3e39c1655b Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 17 Sep 2019 15:04:40 +0200
Subject: [PATCH 375/408] gnu: elixir: Don't use unstable tarball.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/elixir.scm (elixir)[source]: Use GIT-FETCH & GIT-FILE-NAME.
[arguments]: Add ‘make-git-checkout-writable’ phase.
---
 gnu/packages/elixir.scm | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index 2a1d99452f..88ada71aea 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -24,7 +24,7 @@
 (define-module (gnu packages elixir)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
-  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (gnu packages erlang)
@@ -34,15 +34,16 @@
   (package
     (name "elixir")
     (version "1.8.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/elixir-lang/elixir"
-                                  "/archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0ddqxw24zdqlg7glzk22m7qjal8f18divzp364a6gi1bv6rg16yg"))
-	      (patches (search-patches "elixir-path-length.patch"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/elixir-lang/elixir.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n77cpcl2b773gmj3m9s24akvj9gph9byqbmj2pvlsmby4aqwckq"))
+       (patches (search-patches "elixir-path-length.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -51,7 +52,11 @@
                                          (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'replace-paths
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
+         (add-after 'make-git-checkout-writable 'replace-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* '("lib/elixir/lib/system.ex"

From 530680dfaf3b735465c2d176f231ab95616f42a9 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 17 Sep 2019 16:01:38 +0200
Subject: [PATCH 376/408] gnu: ncmpc: Update to 0.35.

* gnu/packages/mpd.scm (ncmpc): Update to 0.35.
---
 gnu/packages/mpd.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index e8b1e6e0b1..fafb61c681 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -195,7 +195,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.34")
+    (version "0.35")
     (source (origin
               (method url-fetch)
               (uri
@@ -204,7 +204,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "0mz8r6vc4zn5sa3hlq4ii74qcrkh01nbg784zcwahgz8g3fb3i8l"))))
+                "0hfjvm1p0z7x6gfn5xhl5c0jsmidvz0qfl04pq45x4chh9iiwkxx"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags

From 777db6b845e3bf7d5be07c9414f09cef78168fc8 Mon Sep 17 00:00:00 2001
From: Tobias Geerinckx-Rice 
Date: Tue, 17 Sep 2019 16:01:49 +0200
Subject: [PATCH 377/408] gnu: unbound: Update to 1.9.3.

* gnu/packages/dns.scm (unbound): Update to 1.9.3.
---
 gnu/packages/dns.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index ae2e5cf8fa..8b8622813b 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -373,14 +373,14 @@ to result in system-wide compromise.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.9.2")
+    (version "1.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.unbound.net/downloads/unbound-"
                            version ".tar.gz"))
        (sha256
-        (base32 "15bbrczibap30db8a1pmqhvjbmkxms39hwiivby7f4j5rz2wwykg"))))
+        (base32 "1ykdy62sgzv33ggkmzwx2h0ifm7hyyxyfkb4zckv7gz4f28xsm8v"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs

From 34583ec6e3995f5dd1ebf549265f0d64bbf23ab7 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Tue, 17 Sep 2019 17:00:02 +0200
Subject: [PATCH 378/408] gnu: Add festival.

* gnu/packages/speech.scm (festival): New variable.
---
 gnu/packages/speech.scm | 218 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 218 insertions(+)

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index dbdbe7ea49..10637e6b89 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 Leo Famulari 
 ;;; Copyright © 2018 Tobias Geerinckx-Rice 
 ;;; Copyright © 2016 Kei Kebreau 
+;;; Copyright © 2019 Ricardo Wurmus 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,12 +31,15 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages emacs)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils))
 
 (define-public espeak
@@ -220,3 +224,217 @@ to improve their productivity with speech engines, like eSpeak.  Sonic can also
 be used by the sighted.")
     (home-page "https://github.com/waywardgeek/sonic")
     (license license:asl2.0)))
+
+(define-public festival
+  (package
+    (name "festival")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://festvox.org/packed/festival/"
+                                  (version-major+minor version)
+                                  "/festival-" version "-release.tar.gz"))
+              (sha256
+               (base32
+                "1d5415nckiv19adxisxfm1l1xxfyw88g87ckkmcr0lhjdd10g42c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there is no test target
+       #:make-flags
+       (list (string-append "RM="
+                            (assoc-ref %build-inputs "coreutils")
+                            "/bin/rm")
+             (string-append "ECHO_N="
+                            (assoc-ref %build-inputs "coreutils")
+                            "/bin/printf \"%s\""))
+       #:parallel-build? #f ; not supported
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-and-patch-speech-tools
+           (lambda* (#:key inputs #:allow-other-keys)
+             (invoke "tar" "-C" ".."
+                     "-xf" (assoc-ref inputs "speech-tools"))
+             (with-directory-excursion "../speech_tools"
+               (substitute* '("config/rules/modules.mak"
+                              "config/rules/test_make_rules.mak"
+                              "config/make_system.mak")
+                 (("/bin/sh") (which "sh"))))
+             #t))
+         (add-after 'unpack 'patch-/bin/sh
+           (lambda _
+             (substitute* '("config/test_make_rules"
+                            "config/make_system.mak")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'build 'build-speech-tools
+           (lambda* (#:key configure-flags make-flags #:allow-other-keys)
+             (with-directory-excursion "../speech_tools"
+               (apply invoke "sh" "configure"
+                      (string-append "CONFIG_SHELL=" (which "sh"))
+                      (string-append "SHELL=" (which "sh"))
+                      configure-flags)
+               (apply invoke "make" make-flags))))
+         (add-after 'build 'build-documentation
+           (lambda _
+             (with-directory-excursion "doc"
+               (invoke "make" "festival.info"))))
+         (add-after 'unpack 'set-installation-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "config/project.mak"
+                 (("^FTLIBDIR.*")
+                  (string-append "FTLIBDIR=" out "/share/festival/lib")))
+               (substitute* "config/systems/default.mak"
+                 (("^INSTALL_PREFIX.*")
+                  (string-append "INSTALL_PREFIX=" out)))
+               #t)))
+         (add-after 'install 'actually-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Install Speech Tools first
+               (with-directory-excursion "../speech_tools"
+                 ;; Target directories
+                 (for-each (lambda (dir)
+                             (mkdir-p (string-append out dir)))
+                           '("/bin"
+                             "/lib"
+                             "/include/speech_tools/"
+                             "/include/speech_tools/instantiate"
+                             "/include/speech_tools/ling_class"
+                             "/include/speech_tools/rxp"
+                             "/include/speech_tools/sigpr"
+                             "/include/speech_tools/unix"))
+                 ;; Install binaries
+                 (for-each (lambda (file)
+                             (install-file file (string-append out "/bin")))
+                           (find-files "bin" ".*"))
+                 (for-each (lambda (file)
+                             (delete-file (string-append out "/bin/" file)))
+                           '("est_gdb" "est_examples" "est_program"))
+                 ;; Install libraries
+                 (for-each (lambda (file)
+                             (install-file file (string-append out "/lib")))
+                           (find-files "lib" "lib.*\\.so.*"))
+
+                 ;; Install headers
+                 (for-each
+                  (lambda (dir)
+                    (for-each
+                     (lambda (header)
+                       (install-file header
+                                     (string-append out "/include/speech_tools/" dir)))
+                     (find-files (string-append "include/" dir)
+                                 "\\.h$")))
+                  '("." "instantiate" "ling_class" "rxp" "sigpr" "unix")))
+
+               ;; Unpack files that will be installed together with the
+               ;; Festival libraries.
+               (invoke "tar" "--strip-components=1"
+                       "-xvf" (assoc-ref inputs "festvox-cmu"))
+               (invoke "tar" "--strip-components=1"
+                       "-xf" (assoc-ref inputs "festvox-poslex"))
+
+               ;; Install Festival
+               (let ((bin (string-append out "/bin"))
+                     (incdir (string-append out "/include/festival"))
+                     (share (string-append out "/share/festival"))
+                     (info (string-append out "/share/info")))
+                 (for-each (lambda (executable)
+                             (install-file executable bin))
+                           '("src/main/festival"
+                             "src/main/festival_client"
+                             "examples/benchmark"
+                             "examples/dumpfeats"
+                             "examples/durmeanstd"
+                             "examples/latest"
+                             "examples/make_utts"
+                             "examples/powmeanstd"
+                             "examples/run-festival-script"
+                             "examples/saytime"
+                             "examples/scfg_parse_text"
+                             "examples/text2pos"
+                             "examples/text2wave"))
+
+                 ;; Documentation
+                 (install-file "doc/info/festival.info" info)
+
+                 ;; Headers
+                 (mkdir-p incdir)
+                 (for-each (lambda (header)
+                             (install-file header
+                                           (string-append incdir "/"
+                                                          (dirname header))))
+                           (find-files "src/include" "\\.h$"))
+
+                 ;; Data
+                 (mkdir-p share)
+                 (for-each (lambda (file)
+                             (install-file file
+                                           (string-append share "/"
+                                                          (dirname file))))
+                           (find-files "lib" ".*"))
+                 (for-each delete-file
+                           (append (find-files share "Makefile")
+                                   (find-files bin "Makefile")))))
+             #t))
+         (add-after 'actually-install 'install-emacs-mode
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((emacs-dir (string-append (assoc-ref outputs "out")
+                                             "/share/emacs/site-lisp")))
+               (install-file "lib/festival.el" emacs-dir)
+               (emacs-generate-autoloads ,name emacs-dir)
+               #t)))
+         ;; Rebuild the very old configure script that is confused by extra
+         ;; arguments.
+         (add-before 'configure 'bootstrap
+           (lambda _ (invoke "autoreconf" "-vif"))))))
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("texinfo" ,texinfo)
+       ("emacs" ,emacs-minimal)
+       ("festvox-cmu"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/festlex_CMU.tar.gz"))
+           (sha256
+            (base32
+             "01vwidqhhg2zifvk1gby91mckg1z2pv2mj6lihvdaifakf8k1561"))))
+       ("festvox-poslex"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/festlex_POSLEX.tar.gz"))
+           (sha256
+            (base32
+             "18wywilxaqwy63lc47p5g5529mpxhslibh1bjij0snxx5mjf7ip7"))))
+       ("speech-tools"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/speech_tools-" version "-release.tar.gz"))
+           (sha256
+            (base32
+             "1k2xh13miyv48gh06rgsq2vj25xwj7z6vwq9ilsn8i7ig3nrgzg4"))))))
+    (home-page "http://www.cstr.ed.ac.uk/projects/festival/")
+    (synopsis "Speech synthesis system")
+    (description "Festival offers a general framework for building speech
+synthesis systems as well as including examples of various modules.  As a
+whole it offers full text to speech through a number APIs: from shell level,
+though a Scheme command interpreter, as a C++ library, from Java, and an Emacs
+interface.  Festival is multi-lingual though English is the most advanced.
+The system is written in C++ and uses the Edinburgh Speech Tools Library for
+low level architecture and has a Scheme (SIOD) based command interpreter for
+control.")
+    (license (license:non-copyleft "file://COPYING"))))

From 80e4e9dda6e87c7498dd9cc739978fa7f6311820 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 15:39:43 +0300
Subject: [PATCH 379/408] gnu: Add rust-percent-encoding-1.

* gnu/packages/crates-io.scm (rust-percent-encoding-1): New variable.
---
 gnu/packages/crates-io.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 906a8e66bf..e74457dd38 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2035,6 +2035,20 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-percent-encoding-1
+  (package
+    (inherit rust-percent-encoding)
+    (name "rust-percent-encoding")
+    (version "1.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "percent-encoding" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cgq08v1fvr6bs5fvy390cz830lq4fak8havdasdacxcw790s09i"))))))
+
 (define-public rust-permutohedron
   (package
     (name "rust-permutohedron")

From de13223a11b98e75ab54d8cc39ac52e2c9d22be7 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 15:43:35 +0300
Subject: [PATCH 380/408] gnu: Add rust-rustc-hash.

* gnu/packages/crates-io.scm (rust-rustc-hash): New variable.
---
 gnu/packages/crates-io.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e74457dd38..b78642a3cf 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2482,6 +2482,26 @@ system calls.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rustc-hash
+  (package
+    (name "rust-rustc-hash")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rustc-hash" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "114bf72466bl63i5hh8fgqfnhihs0w1m9c9jz505095agfixnvg0"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/rust-lang-nursery/rustc-hash")
+    (synopsis "Speedy, non-cryptographic hash used in rustc")
+    (description
+     "This package provides a speedy, non-cryptographic hash used in rustc.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-rustc-serialize
   (package
     (name "rust-rustc-serialize")

From 86d452f946b2e05866293bcbdb2a9b7d6533962a Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 15:47:59 +0300
Subject: [PATCH 381/408] gnu: Add rust-static-assertions.

* gnu/packages/crates-io.scm (rust-static-assertions): New variable.
---
 gnu/packages/crates-io.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index b78642a3cf..840ca6b718 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2938,6 +2938,26 @@ deeply recursive algorithms that may accidentally blow the stack.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-static-assertions
+  (package
+    (name "rust-static-assertions")
+    (version "0.3.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "static-assertions" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1lw33i89888yb3x29c6dv4mrkg3534n0rlg3r7qzh4p58xmv6gkz"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/nvzqz/static-assertions-rs")
+    (synopsis "Compile-time assertions for rust")
+    (description
+     "This package provides compile-time assertions to ensure that invariants
+are met.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-stdweb-internal-runtime
   (package
     (name "rust-stdweb-internal-runtime")

From c800a30744bee99086fc98d94be572818f2869f2 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 15:49:07 +0300
Subject: [PATCH 382/408] gnu: Add rust-strsim-0.8.

* gnu/packages/crates-io.scm (rust-strsim-0.8): New variable.
---
 gnu/packages/crates-io.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 840ca6b718..b9acda91f1 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -3045,6 +3045,20 @@ metrics.  It includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro,
 and Jaro-Winkler.")
     (license license:expat)))
 
+(define-public rust-strsim-0.8
+  (package
+    (inherit rust-strsim)
+    (name "rust-strsim")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "strsim" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))))))
+
 (define-public rust-synstructure-test-traits
   (package
     (name "rust-synstructure-test-traits")

From 56b695196feb17407b48dcb2562f89484ff69793 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 15:54:17 +0300
Subject: [PATCH 383/408] gnu: Add rust-term.

* gnu/packages/crates-io.scm (rust-term): New variable.
---
 gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index b9acda91f1..79eee6ed32 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -3164,6 +3164,30 @@ directories.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-term
+  (package
+    (name "rust-term")
+    (version "0.4.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "term" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1wbh8ngqkqr3f6wz902yplf60bd5yapnckvrkgmzp5nffi7n8qzs"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/Stebalien/term")
+    (synopsis "Terminal formatting library")
+    (description
+     "This package provides a terminal formatting library in rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-termcolor
   (package
     (name "rust-termcolor")

From 14f3a7e37314451b9b93d7b7536f3ae3dec1ed68 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:10:46 +0300
Subject: [PATCH 384/408] gnu: Add rust-clang-sys-0.26.

* gnu/packages/crates-io.scm (rust-clang-sys-0.26): New variable.
---
 gnu/packages/crates-io.scm | 54 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 79eee6ed32..8c68f036b5 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -386,6 +386,35 @@ depending on a large number of #[cfg] parameters.  Structured like an
      "This package provides Rust bindings for @code{libclang}.")
     (license license:asl2.0)))
 
+(define-public rust-clang-sys-0.26
+  (package
+    (inherit rust-clang-sys)
+    (name "rust-clang-sys")
+    (version "0.26.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clang-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r50dwy5hj5gq07dn0qf8222d07qv0970ymx0j8n9779yayc3w3f"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-glob" ,rust-glob-0.2)
+        ("rust-libc" ,rust-libc)
+        ("rust-libloading" ,rust-libloading))
+       #:cargo-development-inputs
+       (("rust-glob" ,rust-glob-0.2))
+       #: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)))))))
+
 (define-public rust-clicolors-control
   (package
     (name "rust-clicolors-control")
@@ -412,6 +441,31 @@ depending on a large number of #[cfg] parameters.  Structured like an
 colorization.")
     (license license:expat)))
 
+(define-public rust-clippy
+  (package
+    (name "rust-clippy")
+    (version "0.0.302")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clippy" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1562x3sq9mgmc8j39gd34wqm7ybrdvpmj7cc1n450gwsawayw4fr"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-term" ,rust-term))))
+    (home-page "https://github.com/rust-lang/rust-clippy")
+    (synopsis
+      "A bunch of helpful lints to avoid common pitfalls in Rust.")
+    (description
+      "This package provides a bunch of helpful lints to avoid common pitfalls in Rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-cloudabi
   (package
     (name "rust-cloudabi")

From 7617f231c0ddb66f9cb7e59af88f83f13957464d Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:13:52 +0300
Subject: [PATCH 385/408] gnu: Add rust-num-traits-0.1.

* gnu/packages/crates-io.scm (rust-num-traits-0.1): New variable.
---
 gnu/packages/crates-io.scm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8c68f036b5..e1b7db2a98 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1977,6 +1977,24 @@ implementation (which is unstable / requires nightly).")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-num-traits-0.1
+  (package
+    (inherit rust-num-traits)
+    (name "rust-num-traits")
+    (version "0.1.43")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-traits" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0c9whknf2dm74a3cqirafy6gj83a76gl56g4v3g19k6lkwz13rcj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-traits" ,rust-num-traits))))))
+
 (define-public rust-openssl-probe
   (package
     (name "rust-openssl-probe")

From 17b977ab54e28fb2da9eac4aa65fbe531fd7a84b Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:15:50 +0300
Subject: [PATCH 386/408] gnu: Add rust-dtoa-0.2.

* gnu/packages/crates-io.scm (rust-dtoa-0.2): New variable.
---
 gnu/packages/crates-io.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e1b7db2a98..33357ab0d1 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -695,6 +695,20 @@ floating-point primitives to an @code{io::Write}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-dtoa-0.2
+  (package
+    (inherit rust-dtoa)
+    (name "rust-dtoa")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "dtoa" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0g96cap6si1g6wi62hsdk2fnj3sf5vd4i97zj6163j8hhnsl3n0d"))))))
+
 (define-public rust-fallible-iterator
   (package
     (name "rust-fallible-iterator")

From c5d250d5dcc9889b1b0405a03f35292b61c5bc74 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:17:16 +0300
Subject: [PATCH 387/408] gnu: Add rust-itoa-0.1.

* gnu/packages/crates-io.scm (rust-itoa-0.1): New variable.
---
 gnu/packages/crates-io.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 33357ab0d1..56b3f88e12 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1276,6 +1276,20 @@ primitives to an @code{io::Write}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-itoa-0.1
+ (package
+   (inherit rust-itoa)
+   (name "rust-itoa")
+   (version "0.1.1")
+   (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "itoa" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18g7p2hrb3dk84z3frfgmszfc9hjb4ps9vp99qlb1kmf9gm8hc5f"))))))
+
 (define-public rust-jemalloc-sys
   (package
     (name "rust-jemalloc-sys")

From d7bec7535f67ac7432cb3f10d4b92fc21da2c8f9 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:21:31 +0300
Subject: [PATCH 388/408] gnu: Add rust-lock-api.

* gnu/packages/crates-io.scm (rust-lock-api): New variable.
---
 gnu/packages/crates-io.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 56b3f88e12..3cbdc66d3b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1488,6 +1488,31 @@ allows loading dynamic libraries (also known as shared libraries) as well as use
 functions and static variables these libraries contain.")
     (license license:isc)))
 
+(define-public rust-lock-api
+  (package
+    (name "rust-lock-api")
+    (version "0.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "lock_api" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0b24q9mh258xa52ap636q1sxz0j5vrnp0hwbbh7ddjka3wwz3sv2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-owning-ref" ,rust-owning-ref)
+        ("rust-scopeguard" ,rust-scopeguard-0.3))))
+    (home-page "https://github.com/Amanieu/parking_lot")
+    (synopsis "Wrappers to create fully-featured Mutex and RwLock types")
+    (description
+     "This package provides wrappers to create fully-featured @code{Mutex} and
+@code{RwLock} types.  It is compatible with @code{no_std}.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-log
   (package
     (name "rust-log")

From 61b10dd1bfca019c9f83e09d233852f58206f8b0 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:29:04 +0300
Subject: [PATCH 389/408] gnu: Add rust-libnghttp2-sys.

* gnu/packages/crates-io.scm (rust-libnghttp2-sys): New variable.
---
 gnu/packages/crates-io.scm | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 3cbdc66d3b..94a409a6f0 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -29,7 +29,8 @@
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages web))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
@@ -1883,6 +1884,33 @@ types as proposed in RFC 1158.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-libnghttp2-sys
+  (package
+    (name "rust-libnghttp2-sys")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libnghttp2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qr4lyh7righx9n22c7amlcpk906rn1jnb2zd6gdfpa3yi24s982"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc))))
+    (inputs
+     `(("nghttp2" ,nghttp2)))
+    (home-page "https://github.com/alexcrichton/nghttp2-rs")
+    (synopsis "FFI bindings for libnghttp2 (nghttp2)")
+    (description
+     "This package provides FFI bindings for libnghttp2 (nghttp2).")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-nodrop
   (package
     (name "rust-nodrop")

From fc4d385aba691ea2ec811116b1c6a04d8c2c1090 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:31:43 +0300
Subject: [PATCH 390/408] gnu: Add rust-libz-sys.

* gnu/packages/crates-io.scm (rust-libz-sys): New variable.
---
 gnu/packages/crates-io.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 94a409a6f0..61681b121e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1911,6 +1911,42 @@ types as proposed in RFC 1158.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-libz-sys
+  (package
+    (name "rust-libz-sys")
+    (version "1.0.25")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libz-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1gjycyl2283525abks98bhxa4r259m617xfm5z52p3p3c8ry9d9f"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-vcpkg" ,rust-vcpkg))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-vendored-zlib
+           (lambda _
+             (delete-file-recursively "src/zlib")
+             #t)))))
+    (inputs
+     `(("pkg-config" ,pkg-config)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/rust-lang/libz-sys")
+    (synopsis "Bindings to the system libz library")
+    (description
+     "This package provides bindings to the system @code{libz} library (also
+known as zlib).")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-nodrop
   (package
     (name "rust-nodrop")

From ef05c6df02becb2e5849f23fa0d456b07122fa5e Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:35:48 +0300
Subject: [PATCH 391/408] gnu: Add rust-backtrace-sys.

* gnu/packages/crates-io.scm (rust-backtrace-sys): New variable.
---
 gnu/packages/crates-io.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 61681b121e..e5ce4f1b43 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -159,6 +159,35 @@ support.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-backtrace-sys
+  (package
+    (name "rust-backtrace-sys")
+    (version "0.1.31")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "backtrace-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0as2pk77br4br04daywhivpi1ixxb8y2c7f726kj849dxys31a42"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-compiler-builtins"
+         ,rust-compiler-builtins)
+        ("rust-libc" ,rust-libc)
+        ("rust-rustc-std-workspace-core"
+         ,rust-rustc-std-workspace-core))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc))))
+    (home-page "https://github.com/rust-lang/backtrace-rs")
+    (synopsis "Bindings to the libbacktrace gcc library")
+    (description
+     "This package provides bindings to the libbacktrace gcc library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-base-x
   (package
     (name "rust-base-x")

From a7debf9d7f655493e6c22936df6ade5d20a34ec6 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:40:28 +0300
Subject: [PATCH 392/408] gnu: Add rust-dirs.

* gnu/packages/crates-io.scm (rust-dirs): New variable.
---
 gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e5ce4f1b43..7aa5289a29 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -666,6 +666,33 @@ hexadecimal, bas32, and base64.")
          (base32
           "17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
 
+(define-public rust-dirs
+  (package
+    (name "rust-dirs")
+    (version "1.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "dirs" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "02vigc566z5i6n9wr2x8sch39qp4arn89xhhrh18fhpm3jfc0ygn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/soc/dirs-rs")
+    (synopsis "Abstractions for standard locations for various platforms")
+    (description
+     "This package provides a tiny low-level library that provides
+platform-specific standard locations of directories for config, cache and other
+data on Linux, Windows, macOS and Redox by leveraging the mechanisms defined by
+the XDG base/user directory specifications on Linux, the Known Folder API on
+Windows, and the Standard Directory guidelines on macOS.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-discard
   (package
     (name "rust-discard")

From 5e9fdf91896ae03d86cb1c5c98768b8d598646db Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:51:08 +0300
Subject: [PATCH 393/408] gnu: Add rust-openssl-src.

* gnu/packages/crates-io.scm (rust-openssl-src): New variable.
---
 gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 7aa5289a29..71c69a5d66 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2189,6 +2189,28 @@ system for OpenSSL.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-openssl-src
+  (package
+    (name "rust-openssl-src")
+    (version "111.6.0+1.1.1d")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "openssl-src" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "172xh95hp7aygahah1940kg1dnx60c5m80cwj5hgi8x7x0fxmhmr"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs (("rust-cc" ,rust-cc))))
+    (home-page "https://github.com/alexcrichton/openssl-src-rs")
+    (synopsis "Source of OpenSSL for rust crates")
+    (description
+     "This package contains the source of OpenSSL and logic to build it.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-owning-ref
   (package
     (name "rust-owning-ref")

From 956e4aedeabc705411e37a5922f965fec2474c0a Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 16:54:31 +0300
Subject: [PATCH 394/408] gnu: Add rust-openssl-sys.

* gnu/packages/crates-io.scm (rust-openssl-sys): New variable.
---
 gnu/packages/crates-io.scm | 40 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 71c69a5d66..27fdaa96a7 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -30,6 +30,7 @@
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages web))
 
 ;;;
@@ -2211,6 +2212,45 @@ system for OpenSSL.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-openssl-sys
+  (package
+    (name "rust-openssl-sys")
+    (version "0.9.49")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "openssl-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1168vivyqbzaxl48bvv9r1x714c03f5c1za8pv5x8fyj9gjxkypl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg)
+        ("rust-libc" ,rust-libc))
+       #:cargo-development-inputs
+       (("rust-autocfg" ,rust-autocfg)
+        ("rust-cc" ,rust-cc)
+        ("rust-openssl-src" ,rust-openssl-src)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-vcpkg" ,rust-vcpkg))
+       #: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)))))
+    (inputs
+     `(("openssl" ,openssl)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/sfackler/rust-openssl")
+    (synopsis "FFI bindings to OpenSSL")
+    (description
+     "This package provides FFI bindings to OpenSSL for use in rust crates.")
+    (license license:expat)))
+
 (define-public rust-owning-ref
   (package
     (name "rust-owning-ref")

From e416c930084fbbed02f46f0197ce2fe2669b29b7 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 17:26:27 +0300
Subject: [PATCH 395/408] gnu: Add rust-curl-sys.

* gnu/packages/crates-io.scm (rust-curl-sys): New variable.
---
 gnu/packages/crates-io.scm | 46 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 27fdaa96a7..4194e4c134 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -25,6 +25,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages llvm)
@@ -614,6 +615,51 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-curl-sys
+  (package
+    (name "rust-curl-sys")
+    (version "0.4.20")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "curl-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "02542zmvl3fpdqf7ai4cqnamm4albx9j645dkjx5qr1myq8ax42y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-libnghttp2-sys" ,rust-libnghttp2-sys)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys)
+        ("rust-winapi" ,rust-winapi))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-openssl-src" ,rust-openssl-src)
+        ("rust-vcpkg" ,rust-vcpkg))
+        #: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)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("nghttp2" ,nghttp2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/alexcrichton/curl-rust")
+    (synopsis "Native bindings to the libcurl library")
+    (description
+     "This package provides native bindings to the @code{libcurl} library.")
+    (license license:expat)))
+
 (define-public rust-data-encoding
   (package
     (name "rust-data-encoding")

From b81e1ea589ccf807d56d03002c0b16f564dc2629 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 17:36:13 +0300
Subject: [PATCH 396/408] gnu: Add rust-libssh2-sys.

* gnu/packages/crates-io.scm (rust-libssh2-sys): New variable.
---
 gnu/packages/crates-io.scm | 47 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 4194e4c134..1fd2094043 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -31,6 +31,7 @@
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web))
 
@@ -1592,6 +1593,52 @@ allows loading dynamic libraries (also known as shared libraries) as well as use
 functions and static variables these libraries contain.")
     (license license:isc)))
 
+(define-public rust-libssh2-sys
+  (package
+    (name "rust-libssh2-sys")
+    (version "0.2.12")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libssh2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1zb6gsw795nq848nk5x2smzpfnn1s15wjlzjnvr8ihlz2l5x2549"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-openssl-src" ,rust-openssl-src)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-vcpkg" ,rust-vcpkg))
+      #: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))
+            (delete-file-recursively "libssh2")
+            (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
+            #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libssh2" ,libssh2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/alexcrichton/ssh2-rs")
+    (synopsis "Native bindings to the libssh2 library")
+    (description
+     "This package provides native rust bindings to the @code{libssh2} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+
 (define-public rust-lock-api
   (package
     (name "rust-lock-api")

From 4bf8cd217a2d6d70f9bb506bbc1491cbeec172c3 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 17:42:15 +0300
Subject: [PATCH 397/408] gnu: Add rust-libgit2-sys.

* gnu/packages/crates-io.scm (rust-libgit2-sys): New variable.
---
 gnu/packages/crates-io.scm | 46 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1fd2094043..e1a893a14d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -33,6 +33,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages web))
 
 ;;;
@@ -1566,6 +1567,51 @@ the platform that libc is compiled for.")
     (license (list license:expat
                    license:asl2.0))))
 
+(define-public rust-libgit2-sys
+  (package
+    (name "rust-libgit2-sys")
+    (version "0.8.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libgit2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0y2mibmx7wy91s2kmb2gfb29mrqlqaxpy5wcwr8s1lwws7b9w5sc")) ))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-libssh2-sys" ,rust-libssh2-sys)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config))
+      #: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))
+            (delete-file-recursively "libgit2")
+            (setenv "LIBGIT2_SYS_USE_PKG_CONFIG" "1")
+            (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
+            #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libgit2" ,libgit2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/rust-lang/git2-rs")
+    (synopsis "Native bindings to the libgit2 library")
+    (description
+     "This package provides native rust bindings to the @code{libgit2} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-libloading
   (package
     (name "rust-libloading")

From 241bc53eaddf46a7ce58b5562893230605a3541b Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 17:46:09 +0300
Subject: [PATCH 398/408] gnu: Add rust-libgit2-sys-0.7.

* gnu/packages/crates-io.scm (rust-libgit2-sys-0.7): New variable.
---
 gnu/packages/crates-io.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e1a893a14d..c0163b8e05 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1612,6 +1612,34 @@ the platform that libc is compiled for.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-libgit2-sys-0.7
+  (package
+    (inherit rust-libgit2-sys)
+    (name "rust-libgit2-sys")
+    (version "0.7.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libgit2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1wcvg2qqra2aviasvqcscl8gb2rnjnd6h998wy5dlmf2bnriqi28"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-curl-sys" ,rust-curl-sys)
+        ("rust-libc" ,rust-libc)
+        ("rust-libssh2-sys" ,rust-libssh2-sys)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config))))
+   (inputs
+    `(("curl" ,curl)
+      ,@(package-inputs rust-libgit2-sys)))))
+
 (define-public rust-libloading
   (package
     (name "rust-libloading")

From 0cb01bb99dee40a4b6e038c886cf50ad9237e83c Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 18:30:51 +0300
Subject: [PATCH 399/408] gnu: Add rust-unreachable.

* gnu/packages/crates-io.scm (rust-unreachable): New variable.
---
 gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c0163b8e05..948bb8748f 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -4118,6 +4118,28 @@ whitespace from a string.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-unreachable
+  (package
+    (name "rust-unreachable")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "unreachable" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0mps2il4xy2mjqc3appas27hhn2xmvixc3bzzhfrjj74gy3i0a1q"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-void" ,rust-void))))
+    (home-page "https://github.com/reem/rust-unreachable")
+    (synopsis "Unreachable code optimization hint in rust")
+    (description
+     "This package provides an unreachable code optimization hint in rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-unsafe-any
   (package
     (name "rust-unsafe-any")

From 03e22b2eee16a5958a112db48b2e94584ed37bf2 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 18:57:16 +0300
Subject: [PATCH 400/408] gnu: Add rust-futures-core-preview.

* gnu/packages/crates-io.scm (rust-futures-core-preview): New variable.
---
 gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 948bb8748f..1b7989e072 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1057,6 +1057,28 @@ featuring zero allocations, composability, and iterator-like interfaces.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-core-preview
+  (package
+    (name "rust-futures-core-preview")
+    (version "0.3.0-alpha.17")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-core-preview" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1xaq8m609k6cz8xydwhwp8xxyxigabcw1w9ngycfy0bnkg7iq52b"))))
+    (build-system cargo-build-system)
+    (arguments
+     '(#:tests? #f)) ; The only tests are doc tests, which fail.
+    (home-page "https://rust-lang-nursery.github.io/futures-rs/")
+    (synopsis "Core traits and types in for the @code{futures} library.")
+    (description "This crate provides the core traits and types in for the
+@code{futures} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-futures-cpupool
   (package
     (name "rust-futures-cpupool")

From 7009d20ad3590dd163ffb075ae051ae1ac932cb6 Mon Sep 17 00:00:00 2001
From: Efraim Flashner 
Date: Tue, 17 Sep 2019 19:00:45 +0300
Subject: [PATCH 401/408] gnu: Add rust-futures-sink-preview.

* gnu/packages/crates-io.scm (rust-futures-sink-preview): New variable.
---
 gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1b7989e072..e2a404b54d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1124,6 +1124,30 @@ the computation on the threads themselves.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-sink-preview
+  (package
+    (name "rust-futures-sink-preview")
+    (version "0.3.0-alpha.17")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-sink-preview" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r4d0gy73hdxkh5g1lrhl1kjnwp6mywjgcj70v0z78b921da42a3"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-futures-core-preview" ,rust-futures-core-preview))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs/")
+    (synopsis  "Asynchronous `Sink` trait for the futures-rs library")
+    (description
+     "This package provides the asynchronous @code{Sink} trait for the
+futures-rs library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-gcc
   (package
     (inherit rust-cc)

From 17bbd30d877cb361e6236ccb0e6b3166452f9214 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Tue, 17 Sep 2019 19:02:58 +0200
Subject: [PATCH 402/408] gnu: festival: Install missing info files.

Reported by reepca on the #guix IRC channel.

This is a follow-up to commit 34583ec6e3995f5dd1ebf549265f0d64bbf23ab7.

* gnu/packages/speech.scm (festival)[arguments]: Install missing info files.
---
 gnu/packages/speech.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 10637e6b89..6c62739ce8 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -361,7 +361,9 @@ be used by the sighted.")
                              "examples/text2wave"))
 
                  ;; Documentation
-                 (install-file "doc/info/festival.info" info)
+                 (for-each (lambda (file)
+                             (install-file file info))
+                           (find-files "doc/info/" "festival.info.*"))
 
                  ;; Headers
                  (mkdir-p incdir)

From 3a8d68badaca85122d91d8b7045daee87acb0aea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?=
 
Date: Tue, 17 Sep 2019 22:23:42 +0200
Subject: [PATCH 403/408] gnu: emacs-elixir-mode: Use git-fetch.

Fixes a source instability reported by Josh Holland
in 

* gnu/packages/emacs-xyz.scm (emacs-elixir-mode)[source]:
Use GIT-FETCH & GIT-FILE-NAME.
---
 gnu/packages/emacs-xyz.scm | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index b2f057a439..28443ae7fd 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -53,6 +53,7 @@
 ;;; Copyright © 2019 Jens Mølgaard 
 ;;; Copyright © 2019 Amin Bandali 
 ;;; Copyright © 2019 Jelle Licht 
+;;; Copyright © 2019 Björn Höfling 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18241,14 +18242,13 @@ Emacs that integrate with major modes like Org-mode.")
     (version "2.3.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://stable.melpa.org/packages/elixir-mode-"
-             version
-             ".tar"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/elixir-editors/emacs-elixir.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "091cizxg1aw8bkj58y048mj020ssapjflav633z9bl6gmi10dy4v"))))
+        (base32 "06bi68x49v6f7flpz279mm4jpg31ll3s274givm3pvr8slcxs6xg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-pkg-info" ,emacs-pkg-info)))

From 7026ecc122c6470b9a2fbb88d4448a74b948647e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?=
 
Date: Tue, 17 Sep 2019 23:05:18 +0200
Subject: [PATCH 404/408] gnu: emacs-olivetti: Update to 1.8.0.

* gnu/packages/emacs-xyz.scm (emacs-olivetti)[version]: Update to 1.8.0.
[source]: Use github instead of melpa.
---
 gnu/packages/emacs-xyz.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 28443ae7fd..d684426091 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -2126,15 +2126,16 @@ a command.")
 (define-public emacs-olivetti
   (package
     (name "emacs-olivetti")
-    (version "1.5.7")
+    (version "1.8.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://stable.melpa.org/packages/olivetti-"
-                    version ".el"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rnkn/olivetti.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1yj2ylg46q0pw1xzlv2b0fv9x8p56x25284s9v2smwjr4vf0nwcj"))))
+                "0ba30swqxxbpa8866chymywnahby1hk670zzkz44q49328i2wksj"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rnkn/olivetti")
     (synopsis "Emacs minor mode for a nice writing environment")

From f8ddfb505a51a2c794531e090dd7ee97022d1096 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?=
 
Date: Tue, 17 Sep 2019 23:35:03 +0200
Subject: [PATCH 405/408] gnu: emacs-base16-theme: Update to 2.2.

* gnu/packages/emacs-xyz.scm (emacs-base16-theme): Update to 2.2.
[source]: Use github instead of melpa.
---
 gnu/packages/emacs-xyz.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index d684426091..87edd4619e 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -4592,15 +4592,16 @@ board and goal value can be customized.")
 (define-public emacs-base16-theme
   (package
     (name "emacs-base16-theme")
-    (version "2.1")
+    (version "2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://stable.melpa.org/packages/base16-theme-"
-                           version ".tar"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/belak/base16-emacs.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0z6hrwz2jlz6jbr381rcqcqvx6hss5cad352klx07rark7zccacj"))))
+        (base32 "01w89g413s1da6rf94y1xnhw79cjy2bqb01yfjs58cy492cm0vr6"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/belak/base16-emacs")
     (synopsis "Base16 color themes for Emacs")

From dfcf79ac5943c68dc8013aa333add3f881e894aa Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Wed, 18 Sep 2019 09:55:04 +0200
Subject: [PATCH 406/408] gnu: festival: Include default voice.

* gnu/packages/speech.scm (festival)[arguments]: Install default voice.
[native-inputs]: Add default voice.
---
 gnu/packages/speech.scm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 6c62739ce8..220d542eda 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -337,7 +337,9 @@ be used by the sighted.")
                (invoke "tar" "--strip-components=1"
                        "-xvf" (assoc-ref inputs "festvox-cmu"))
                (invoke "tar" "--strip-components=1"
-                       "-xf" (assoc-ref inputs "festvox-poslex"))
+                       "-xvf" (assoc-ref inputs "festvox-poslex"))
+               (invoke "tar" "--strip-components=1"
+                       "-xvf" (assoc-ref inputs "default-voice"))
 
                ;; Install Festival
                (let ((bin (string-append out "/bin"))
@@ -420,6 +422,15 @@ be used by the sighted.")
            (sha256
             (base32
              "18wywilxaqwy63lc47p5g5529mpxhslibh1bjij0snxx5mjf7ip7"))))
+       ("default-voice"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/voices/festvox_kallpc16k.tar.gz"))
+           (sha256
+            (base32
+             "136hmsyiwnlg2qwa508dy0imf19mzrb5r3dmb2kg8kcyxnslm740"))))
        ("speech-tools"
         ,(origin
            (method url-fetch)

From a870b80046d532329762095683d8f9c33538eaf1 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Wed, 18 Sep 2019 10:57:12 +0200
Subject: [PATCH 407/408] gnu: festival: Fix scripts.

* gnu/packages/speech.scm (festival)[arguments]: Fix broken shebangs in
scripts.
---
 gnu/packages/speech.scm | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 220d542eda..21d6027004 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -350,17 +350,23 @@ be used by the sighted.")
                              (install-file executable bin))
                            '("src/main/festival"
                              "src/main/festival_client"
-                             "examples/benchmark"
-                             "examples/dumpfeats"
-                             "examples/durmeanstd"
-                             "examples/latest"
-                             "examples/make_utts"
-                             "examples/powmeanstd"
-                             "examples/run-festival-script"
-                             "examples/saytime"
-                             "examples/scfg_parse_text"
-                             "examples/text2pos"
-                             "examples/text2wave"))
+                             "examples/benchmark"))
+                 (let ((scripts '("examples/dumpfeats"
+                                  "examples/durmeanstd"
+                                  "examples/latest"
+                                  "examples/make_utts"
+                                  "examples/powmeanstd"
+                                  "examples/run-festival-script"
+                                  "examples/saytime"
+                                  "examples/scfg_parse_text"
+                                  "examples/text2pos"
+                                  "examples/text2wave")))
+                   (substitute* scripts
+                     (("exec /tmp/guix-build.*/bin/festival")
+                      (string-append "exec " bin "/festival")))
+                   (for-each (lambda (script)
+                               (install-file script bin))
+                             scripts))
 
                  ;; Documentation
                  (for-each (lambda (file)

From 7bc46ecc34ceb042ff890e5d306d0a2a736e891d Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Sun, 8 Sep 2019 14:35:44 +0200
Subject: [PATCH 408/408] doc: Add Guix Cookbook.

* .gitignore: Update ignore list.
* Makefile.am (assert-no-store-file-names): Exclude the cookbook.
* bootstrap: Generate po files for cookbook translations.
* doc/guix-cookbook.texi: New file.
* doc/local.mk (info_TEXINFOS): Add it; add a rule to build cookbook
translations.
* po/doc/local.mk (DOC_COOKBOOK_PO_FILES): New variable.
(EXTRA_DIST): Add cookbook pot file and po files.
(doc-po-update-cookbook-%): New target.
(doc-pot-update): Also update cookbook pot file.
(doc-po-update): Also update cookbook po files.
---
 .gitignore             |  31 +-
 Makefile.am            |   3 +-
 bootstrap              |  12 +-
 doc/guix-cookbook.texi | 821 +++++++++++++++++++++++++++++++++++++++++
 doc/local.mk           |   9 +-
 po/doc/local.mk        |  33 +-
 6 files changed, 890 insertions(+), 19 deletions(-)
 create mode 100644 doc/guix-cookbook.texi

diff --git a/.gitignore b/.gitignore
index 93d2ec9801..38cde42fca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,22 +29,23 @@
 /doc/*.1
 /doc/.dirstamp
 /doc/contributing.*.texi
-/doc/guix.*.aux
-/doc/guix.*.cp
-/doc/guix.*.cps
-/doc/guix.*.fn
-/doc/guix.*.fns
-/doc/guix.*.html
-/doc/guix.*.info
-/doc/guix.*.info-[0-9]
-/doc/guix.*.ky
-/doc/guix.*.pg
-/doc/guix.*.toc
-/doc/guix.*.t2p
-/doc/guix.*.tp
-/doc/guix.*.vr
-/doc/guix.*.vrs
+/doc/guix*.aux
+/doc/guix*.cp
+/doc/guix*.cps
+/doc/guix*.fn
+/doc/guix*.fns
+/doc/guix*.html
+/doc/guix*.info
+/doc/guix*.info-[0-9]
+/doc/guix*.ky
+/doc/guix*.pg
+/doc/guix*.toc
+/doc/guix*.t2p
+/doc/guix*.tp
+/doc/guix*.vr
+/doc/guix*.vrs
 /doc/guix.*.texi
+/doc/guix-cookbook.*.texi
 /doc/guix.aux
 /doc/guix.cp
 /doc/guix.cps
diff --git a/Makefile.am b/Makefile.am
index 7e3b5c1070..93d18d7df6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -814,7 +814,8 @@ assert-no-store-file-names:
 	$(AM_V_at)if grep -r --exclude=*.texi --exclude=*.info			\
 	     --exclude=*.info-[0-9] --exclude=*.dot				\
 	     --exclude=*.eps --exclude-dir=bootstrap				\
-		 --exclude=guix-manual.pot --exclude=guix-manual.*.po		\
+	     --exclude=guix-manual.pot --exclude=guix-manual.*.po		\
+	     --exclude=guix-cookbook.pot --exclude=guix-cookbook.*.po		\
 	     --exclude=guix-prettify.el						\
 	     --exclude=ChangeLog*						\
 	     -E "$(storedir)/[a-z0-9]{32}-" $(distdir) ;			\
diff --git a/bootstrap b/bootstrap
index c0b5af7677..c9e7a084a1 100755
--- a/bootstrap
+++ b/bootstrap
@@ -4,7 +4,7 @@
 set -e -x
 
 # Generate stubs for translations.
-langs=`find po/doc -type f -name '*.po' \
+langs=`find po/doc -type f -name 'guix-manual*.po' \
         | sed -e 's,guix-manual\.,,' \
         | xargs -n 1 -I{} basename {} .po`
 for lang in ${langs}; do
@@ -15,5 +15,15 @@ for lang in ${langs}; do
 	touch "po/doc/guix-manual.${lang}.po"
     fi
 done
+langs=`find po/doc -type f -name 'guix-cookbook*.po' \
+        | sed -e 's,guix-manual\.,,' \
+        | xargs -n 1 -I{} basename {} .po`
+for lang in ${langs}; do
+    if [ ! -e "doc/guix-cookbook.${lang}.texi" ]; then
+	echo "@setfilename guix-cookbook.${lang}.info" > "doc/guix-cookbook.${lang}.texi"
+	# Ensure .po file is newer.
+	touch "po/doc/guix-cookbook.${lang}.po"
+    fi
+done
 
 exec autoreconf -vfi
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
new file mode 100644
index 0000000000..66f94a0fe7
--- /dev/null
+++ b/doc/guix-cookbook.texi
@@ -0,0 +1,821 @@
+\input texinfo
+@c -*-texinfo-*-
+
+@c %**start of header
+@setfilename guix-cookbook.info
+@documentencoding UTF-8
+@settitle GNU Guix Cookbook
+@c %**end of header
+
+@copying
+Copyright @copyright{} 2019 Ricardo Wurmus@*
+Copyright @copyright{} 2019 Efraim Flashner@*
+Copyright @copyright{} 2019 Pierre Neidhardt@*
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
+@end copying
+
+@dircategory System administration
+@direntry
+* Guix cookbook: (guix-cookbook).    Tutorials and examples for GNU Guix.
+@end direntry
+
+@titlepage
+@title GNU Guix Cookbook
+@subtitle Tutorials and examples for using the GNU Guix Functional Package Manager
+@author The GNU Guix Developers
+
+@page
+@vskip 0pt plus 1filll
+
+@insertcopying
+@end titlepage
+
+@contents
+
+@c *********************************************************************
+@node Top
+@top GNU Guix Cookbook
+
+This document presents tutorials and detailed examples for GNU@tie{}Guix, a
+functional package management tool written for the GNU system.  Please
+@pxref{Top,,, guix, GNU Guix reference manual} for details about the system,
+its API, and related concepts.
+
+@c TRANSLATORS: You can replace the following paragraph with information on
+@c how to join your own translation team and how to report issues with the
+@c translation.
+If you would like to translate this document in your native language, consider
+joining the @uref{https://translationproject.org/domain/guix-cookbook.html,
+Translation Project}.
+
+@menu
+* Scheme tutorials::            Meet your new favorite language!
+* Packaging::                   Packaging tutorials
+* System Configuration::        Customizing the GNU System
+
+* Acknowledgments::             Thanks!
+* GNU Free Documentation License::  The license of this document.
+* Concept Index::               Concepts.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Scheme tutorials
+
+* A Scheme Crash Course::       Learn the basics of Scheme
+
+Packaging
+
+* Packaging Tutorial::          Let's add a package to Guix!
+
+System Configuration
+
+* Customizing the Kernel::      Creating and using a custom Linux kernel
+
+
+@end detailmenu
+@end menu
+
+@c *********************************************************************
+@node Scheme tutorials
+@chapter Scheme tutorials
+
+GNU@tie{}Guix is written in the general purpose programming language Scheme,
+and many of its features can be accessed and manipulated programmatically.
+You can use Scheme to generate package definitions, to modify them, to build
+them, to deploy whole operating systems, etc.
+
+Knowing the basics of how to program in Scheme will unlock many of the
+advanced features Guix provides --- and you don't even need to be an
+experienced programmer to use them!
+
+Let's get started!
+
+@node A Scheme Crash Course
+@section A Scheme Crash Course
+
+@cindex Scheme, crash course
+
+Guix uses the Guile implementation of Scheme.  To start playing with the
+language, install it with @code{guix install guile} and start a
+@uref{https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop,
+REPL} by running @code{guile} from the command line.
+
+Alternatively you can also run @code{guix environment --ad-hoc guile -- guile}
+if you'd rather not have Guile installed in your user profile.
+
+In the following examples we use the @code{>} symbol to denote the REPL
+prompt, that is, the line reserved for user input.  @xref{Using Guile
+Interactively,,, guile, GNU Guile Reference Manual}) for more details on the
+REPL.
+
+@itemize
+@item
+Scheme syntax boils down to a tree of expressions (or @emph{s-expression} in
+Lisp lingo).  An expression can be a literal such as numbers and strings, or a
+compound which is a parenthesized list of compounds and literals.  @code{#t}
+and @code{#f} stand for the booleans "true" and "false", respectively.
+
+Examples of valid expressions:
+
+@example scheme
+> "Hello World!"
+"Hello World!"
+> 17
+17
+> (display (string-append "Hello " "Guix" "\n"))
+"Hello Guix!"
+@end example
+
+@item
+This last example is a function call nested in another function call.  When a
+parenthesized expression is evaluated, the first term is the function and the
+rest are the arguments passed to the function.  Every function returns the
+last evaluated expression as its return value.
+
+@item
+Anonymous functions are declared with the @code{lambda} term:
+
+@example scheme
+> (lambda (x) (* x x))
+#:24:0 (x)>
+@end example
+
+The above procedure returns the square of its argument.  Since everything is
+an expression, the @code{lambda} expression returns an anonymous procedure,
+which can in turn be applied to an argument:
+
+@example scheme
+> ((lambda (x) (* x x)) 3)
+9
+@end example
+
+@item
+Anything can be assigned a global name with @code{define}:
+
+@example scheme
+> (define a 3)
+> (define square (lambda (x) (* x x)))
+> (square a)
+9
+@end example
+
+@item
+Procedures can be defined more concisely with the following syntax:
+
+@example scheme
+(define (square x) (* x x))
+@end example
+
+@item
+A list structure can be created with the @code{list} procedure:
+
+@example scheme
+> (list 2 a 5 7)
+(2 3 5 7)
+@end example
+
+@item
+The @emph{quote} disables evaluation of a parenthesized expression: the first
+term is not called over the other terms.  Thus it effectively returns a list
+of terms.
+
+@example scheme
+> '(display (string-append "Hello " "Guix" "\n"))
+(display (string-append "Hello " "Guix" "\n"))
+> '(2 a 5 7)
+(2 a 5 7)
+@end example
+
+@item
+The @emph{quasiquote} disables evaluation of a parenthesized expression until
+a comma re-enables it.  Thus it provides us with fine-grained control over
+what is evaluated and what is not.
+
+@example scheme
+> `(2 a 5 7 (2 ,a 5 ,(+ a 4)))
+(2 a 5 7 (2 3 5 7))
+@end example
+
+Note that the above result is a list of mixed elements: numbers, symbols (here
+@code{a}) and the last element is a list itself.
+
+@item
+Multiple variables can be named locally with @code{let}:
+
+@example scheme
+> (define x 10)
+> (let ((x 2)
+        (y 3))
+    (list x y))
+(2 3)
+> x
+10
+> y
+ERROR: In procedure module-lookup: Unbound variable: y
+@end example
+
+Use @code{let*} to allow later variable declarations to refer to earlier
+definitions.
+
+@example scheme
+> (let* ((x 2)
+         (y (* x 3)))
+    (list x y))
+(2 6)
+@end example
+
+@item
+The keyword syntax is @code{#:}; it is used to create unique identifiers.
+@pxref{Keywords,,, guile, GNU Guile Reference Manual}.
+
+@item
+The percentage @code{%} is typically used for read-only global variables in
+the build stage.  Note that it is merely a convention, like @code{_} in C.
+Scheme treats @code{%} exactly the same as any other letter.
+
+@item
+Modules are created with @code{define-module}.  For instance
+
+@example scheme
+(define-module (guix build-system ruby)
+  #:use-module (guix store)
+  #:export (ruby-build
+            ruby-build-system))
+@end example
+
+defines the module @code{guix build-system ruby} which must be located in
+@file{guix/build-system/ruby.scm} somewhere in the Guile load path.  It
+depends on the @code{(guix store)} module and it exports two variables,
+@code{ruby-build} and @code{ruby-build-system}.
+@end itemize
+
+For a more detailed introduction, check out
+@uref{http://www.troubleshooters.com/codecorn/scheme_guile/hello.htm, Scheme
+at a Glance}, by Steve Litt.
+
+One of the reference Scheme books is the seminal ``Structure and
+Interpretation of Computer Programs'', by Harold Abelson and Gerald Jay
+Sussman, with Julie Sussman.  You'll find a
+@uref{https://mitpress.mit.edu/sites/default/files/sicp/index.html, free copy
+online}, together with
+@uref{https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/,
+videos of the lectures by the authors}.  The book is available in Texinfo
+format as the @code{sicp} Guix package.  Go ahead, run @code{guix install
+sicp} and start reading with @code{info sicp} (or with the Emacs Info reader).
+An @uref{https://sarabander.github.io/sicp/, unofficial ebook is also
+available}.
+
+You'll find more books, tutorials and other resources at
+@url{https://schemers.org/}.
+
+
+@c *********************************************************************
+@node Packaging
+@chapter Packaging
+
+@cindex packaging
+
+This chapter is dedicated to teaching you how to add packages to the
+collection of packages that come with GNU Guix.  This involves writing package
+definitions in Guile Scheme, organizing them in package modules, and building
+them.
+
+@menu
+* Packaging Tutorial::         A tutorial on how to add packages to Guix.
+@end menu
+
+@node Packaging Tutorial
+@section Packaging Tutorial
+
+GNU Guix stands out as the @emph{hackable} package manager, mostly because it
+uses @uref{https://www.gnu.org/software/guile/, GNU Guile}, a powerful
+high-level programming language, one of the
+@uref{https://en.wikipedia.org/wiki/Scheme_%28programming_language%29, Scheme}
+dialects from the
+@uref{https://en.wikipedia.org/wiki/Lisp_%28programming_language%29, Lisp family}.
+
+Package definitions are also written in Scheme, which empowers Guix in some
+very unique ways, unlike most other package managers that use shell scripts or
+simple languages.
+
+@itemize
+@item
+Use functions, structures, macros and all of Scheme expressiveness for your
+package definitions.
+
+@item
+Inheritance makes it easy to customize a package by inheriting from it and
+modifying only what is needed.
+ 
+@item
+Batch processing: the whole package collection can be parsed, filtered and
+processed.  Building a headless server with all graphical interfaces stripped
+out?  It's possible.  Want to rebuild everything from source using specific
+compiler optimization flags?  Pass the @code{#:make-flags "..."} argument to
+the list of packages.  It wouldn't be a stretch to think
+@uref{https://wiki.gentoo.org/wiki/USE_flag, Gentoo USE flags} here, but this
+goes even further: the changes don't have to be thought out beforehand by the
+packager, they can be @emph{programmed} by the user!
+@end itemize
+
+The following tutorial covers all the basics around package creation with Guix.
+It does not assume much knowledge of the Guix system nor of the Lisp language.
+The reader is only expected to be familiar with the command line and to have some
+basic programming knowledge.
+
+@subsection A "Hello World" package
+
+The “Defining Packages” section of the manual introduces the basics of Guix
+packaging (@pxref{Defining Packages,,, guix, GNU Guix Reference Manual}).  In
+the following section, we will partly go over those basics again.
+
+``GNU hello'' is a dummy project that serves as an idiomatic example for
+packaging.  It uses the GNU build system (@code{./configure && make && make
+install}).  Guix already provides a package definition which is a perfect
+example to start with.  You can look up its declaration with @code{guix edit
+hello} from the command line.  Let's see how it looks:
+
+@example scheme
+(define-public hello
+  (package
+    (name "hello")
+    (version "2.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/hello/hello-" version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
+    (build-system gnu-build-system)
+    (synopsis "Hello, GNU world: An example GNU package")
+    (description
+     "GNU Hello prints the message \"Hello, world!\" and then exits.  It
+serves as an example of standard GNU coding practices.  As such, it supports
+command-line arguments, multiple languages, and so on.")
+    (home-page "https://www.gnu.org/software/hello/")
+    (license gpl3+)))
+@end example
+
+As you can see, most of it is rather straightforward.  But let's review the
+fields together:
+
+@table @samp
+@item name
+The project name.  Using Scheme conventions, we prefer to keep it
+lower case, without underscore and using dash-separated words.
+
+@item source
+This field contains a description of the source code origin.  The
+@code{origin} record contains these fields:
+
+@enumerate
+@item  The method, here @code{url-fetch} to download via HTTP/FTP, but other methods
+    exist, such as @code{git-fetch} for Git repositories.
+@item  The URI, which is typically some @code{https://} location for @code{url-fetch}.  Here
+    the special `mirror://gnu` refers to a set of well known locations, all of
+    which can be used by Guix to fetch the source, should some of them fail.
+@item  The @code{sha256} checksum of the requested file.  This is essential to ensure
+    the source is not corrupted.  Note that Guix works with base32 strings,
+    hence the call to the @code{base32} function.
+@end enumerate
+
+@item build-system
+
+This is where the power of abstraction provided by the Scheme language really
+shines: in this case, the @code{gnu-build-system} abstracts away the famous
+@code{./configure && make && make install} shell invocations.  Other build
+systems include the @code{trivial-build-system} which does not do anything and
+requires from the packager to program all the build steps, the
+@code{python-build-system}, the @code{emacs-build-system}, and many more
+(@pxref{Build Systems,,, guix, GNU Guix Reference Manual}).
+
+@item synopsis
+It should be a concise summary of what the package does.  For many packages a
+tagline from the project's home page can be used as the synopsis.
+
+@item description
+Same as for the synopsis, it's fine to re-use the project description from the
+homepage.  Note that Guix uses Texinfo syntax.
+
+@item home-page
+Use HTTPS if available.
+
+@item license
+See @code{guix/licenses.scm} in the project source for a full list of
+available licenses.
+@end table
+
+Time to build our first package!  Nothing fancy here for now: we will stick to a
+dummy "my-hello", a copy of the above declaration.
+
+As with the ritualistic "Hello World" taught with most programming languages,
+this will possibly be the most "manual" approach.  We will work out an ideal
+setup later; for now we will go the simplest route.
+
+Save the following to a file @file{my-hello.scm}.
+
+@example scheme
+(use-modules (guix packages)
+             (guix download)
+             (guix build-system gnu)
+             (guix licenses))
+
+(package
+  (name "my-hello")
+  (version "2.10")
+  (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnu/hello/hello-" version
+                                ".tar.gz"))
+            (sha256
+             (base32
+              "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
+  (build-system gnu-build-system)
+  (synopsis "Hello, Guix world: An example custom Guix package")
+  (description
+   "GNU Hello prints the message \"Hello, world!\" and then exits.  It
+serves as an example of standard GNU coding practices.  As such, it supports
+command-line arguments, multiple languages, and so on.")
+  (home-page "https://www.gnu.org/software/hello/")
+  (license gpl3+))
+@end example
+
+We will explain the extra code in a moment.
+
+Feel free to play with the different values of the various fields.  If you
+change the source, you'll need to update the checksum.  Indeed, Guix refuses to
+build anything if the given checksum does not match the computed checksum of the
+source code.  To obtain the correct checksum of the package declaration, we
+need to download the source, compute the sha256 checksum and convert it to
+base32.
+
+Thankfully, Guix can automate this task for us; all we need is to provide the
+URI:
+
+@c TRANSLATORS: This is example shell output.
+@example sh
+$ guix download mirror://gnu/hello/hello-2.10.tar.gz
+
+Starting download of /tmp/guix-file.JLYgL7
+From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz...
+following redirection to `https://mirror.ibcp.fr/pub/gnu/hello/hello-2.10.tar.gz'...
+ …10.tar.gz  709KiB                                 2.5MiB/s 00:00 [##################] 100.0%
+/gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz
+0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i
+@end example
+
+In this specific case the output tells us which mirror was chosen.
+If the result of the above command is not the same as in the above snippet,
+update your @code{my-hello} declaration accordingly.
+
+Note that GNU package tarballs come with an OpenPGP signature, so you
+should definitely check the signature of this tarball with `gpg` to
+authenticate it before going further:
+
+@c TRANSLATORS: This is example shell output.
+@example sh
+$ guix download mirror://gnu/hello/hello-2.10.tar.gz.sig
+
+Starting download of /tmp/guix-file.03tFfb
+From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz.sig...
+following redirection to `https://ftp.igh.cnrs.fr/pub/gnu/hello/hello-2.10.tar.gz.sig'...
+ ….tar.gz.sig  819B                                                                                                                       1.2MiB/s 00:00 [##################] 100.0%
+/gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig
+0q0v86n3y38z17rl146gdakw9xc4mcscpk8dscs412j22glrv9jf
+$ gpg --verify /gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig /gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz
+gpg: Signature made Sun 16 Nov 2014 01:08:37 PM CET
+gpg:                using RSA key A9553245FDE9B739
+gpg: Good signature from "Sami Kerola " [unknown]
+gpg:                 aka "Sami Kerola (http://www.iki.fi/kerolasa/) " [unknown]
+gpg: WARNING: This key is not certified with a trusted signature!
+gpg:          There is no indication that the signature belongs to the owner.
+Primary key fingerprint: 8ED3 96E3 7E38 D471 A005  30D3 A955 3245 FDE9 B739
+@end example
+
+You can then happily run
+
+@c TRANSLATORS: Do not translate this command
+@example sh
+$ guix package --install-from-file=my-hello.scm
+@end example
+
+You should now have @code{my-hello} in your profile!
+
+@c TRANSLATORS: Do not translate this command
+@example sh
+$ guix package --list-installed=my-hello
+my-hello	2.10	out
+/gnu/store/f1db2mfm8syb8qvc357c53slbvf1g9m9-my-hello-2.10
+@end example
+
+We've gone as far as we could without any knowledge of Scheme.  Before moving
+on to more complex packages, now is the right time to brush up on your Scheme
+knowledge.  @pxref{A Scheme Crash Course} to get up to speed.
+
+@c TODO: Continue the tutorial
+
+
+@c *********************************************************************
+@node System Configuration
+@chapter System Configuration
+
+Guix offers a flexible language for declaratively configuring your Guix
+System.  This flexibility can at times be overwhelming.  The purpose of this
+chapter is to demonstrate some advanced configuration concepts.
+
+@pxref{System Configuration,,, guix, GNU Guix Reference Manual} for a complete
+reference.
+
+@menu
+* Customizing the Kernel::     Creating and using a custom Linux kernel on Guix System.
+@end menu
+
+@node Customizing the Kernel
+@section Customizing the Kernel
+
+Guix is, at its core, a source based distribution with substitutes
+(@pxref{Substitutes,,, guix, GNU Guix Reference Manual}), and as such building
+packages from their source code is an expected part of regular package
+installations and upgrades.  Given this starting point, it makes sense that
+efforts are made to reduce the amount of time spent compiling packages, and
+recent changes and upgrades to the building and distribution of substitutes
+continues to be a topic of discussion within Guix.
+
+The kernel, while not requiring an overabundance of RAM to build, does take a
+rather long time on an average machine.  The official kernel configuration, as
+is the case with many GNU/Linux distributions, errs on the side of
+inclusiveness, and this is really what causes the build to take such a long
+time when the kernel is built from source.
+
+The Linux kernel, however, can also just be described as a regular old
+package, and as such can be customized just like any other package.  The
+procedure is a little bit different, although this is primarily due to the
+nature of how the package definition is written.
+
+The @code{linux-libre} kernel package definition is actually a procedure which
+creates a package.
+
+@example scheme
+(define* (make-linux-libre version hash supported-systems
+                           #:key
+                           ;; A function that takes an arch and a variant.
+                           ;; See kernel-config for an example.
+                           (extra-version #f)
+                           (configuration-file #f)
+                           (defconfig "defconfig")
+                           (extra-options %default-extra-linux-options)
+                           (patches (list %boot-logo-patch)))
+  ...)
+@end example
+
+The current @code{linux-libre} package is for the 5.1.x series, and is
+declared like this:
+
+@example scheme
+(define-public linux-libre
+  (make-linux-libre %linux-libre-version
+                    %linux-libre-hash
+                    '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
+                    #:patches %linux-libre-5.1-patches
+                    #:configuration-file kernel-config))
+@end example
+
+Any keys which are not assigned values inherit their default value from the
+@code{make-linux-libre} definition.  When comparing the two snippets above,
+you may notice that the code comment in the first doesn't actually refer to
+the @code{#:extra-version} keyword; it is actually for
+@code{#:configuration-file}.  Because of this, it is not actually easy to
+include a custom kernel configuration from the definition, but don't worry,
+there are other ways to work with what we do have.
+
+There are two ways to create a kernel with a custom kernel configuration.  The
+first is to provide a standard @file{.config} file during the build process by
+including an actual @file{.config} file as a native input to our custom
+kernel.  The following is a snippet from the custom @code{'configure} phase of
+the @code{make-linux-libre} package definition:
+
+@example scheme
+(let ((build  (assoc-ref %standard-phases 'build))
+      (config (assoc-ref (or native-inputs inputs) "kconfig")))
+
+  ;; Use a custom kernel configuration file or a default
+  ;; configuration file.
+  (if config
+      (begin
+        (copy-file config ".config")
+        (chmod ".config" #o666))
+      (invoke "make" ,defconfig))
+@end example
+
+Below is a sample kernel package.  The @code{linux-libre} package is nothing
+special and can be inherited from and have its fields overridden like any
+other package:
+
+@example scheme
+(define-public linux-libre/E2140
+  (package
+    (inherit linux-libre)
+    (native-inputs
+     `(("kconfig" ,(local-file "E2140.config"))
+      ,@@(alist-delete "kconfig"
+                      (package-native-inputs linux-libre))))))
+@end example
+
+In the same directory as the file defining @code{linux-libre-E2140} is a file
+named @file{E2140.config}, which is an actual kernel configuration file.  The
+@code{defconfig} keyword of @code{make-linux-libre} is left blank here, so the
+only kernel configuration in the package is the one which was included in the
+@code{native-inputs} field.
+
+The second way to create a custom kernel is to pass a new value to the
+@code{extra-options} keyword of the @code{make-linux-libre} procedure.  The
+@code{extra-options} keyword works with another function defined right below
+it:
+
+@example scheme
+(define %default-extra-linux-options
+  `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
+   ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t)
+   ;; Modules required for initrd:
+   ("CONFIG_NET_9P" . m)
+   ("CONFIG_NET_9P_VIRTIO" . m)
+   ("CONFIG_VIRTIO_BLK" . m)
+   ("CONFIG_VIRTIO_NET" . m)
+   ("CONFIG_VIRTIO_PCI" . m)
+   ("CONFIG_VIRTIO_BALLOON" . m)
+   ("CONFIG_VIRTIO_MMIO" . m)
+   ("CONFIG_FUSE_FS" . m)
+   ("CONFIG_CIFS" . m)
+   ("CONFIG_9P_FS" . m)))
+
+(define (config->string options)
+  (string-join (map (match-lambda
+                      ((option . 'm)
+                       (string-append option "=m"))
+                      ((option . #t)
+                       (string-append option "=y"))
+                      ((option . #f)
+                       (string-append option "=n")))
+                    options)
+               "\n"))
+@end example
+
+And in the custom configure script from the `make-linux-libre` package:
+
+@example scheme
+;; Appending works even when the option wasn't in the
+;; file.  The last one prevails if duplicated.
+(let ((port (open-file ".config" "a"))
+      (extra-configuration ,(config->string extra-options)))
+  (display extra-configuration port)
+  (close-port port))
+
+(invoke "make" "oldconfig"))))
+@end example
+
+So by not providing a configuration-file the @file{.config} starts blank, and
+then we write into it the collection of flags that we want.  Here's another
+custom kernel:
+
+@example scheme
+(define %macbook41-full-config
+  (append %macbook41-config-options
+          %filesystems
+          %efi-support
+          %emulation
+          (@@@@ (gnu packages linux) %default-extra-linux-options)))
+
+(define-public linux-libre-macbook41
+  ;; XXX: Access the internal 'make-linux-libre' procedure, which is
+  ;; private and unexported, and is liable to change in the future.
+  ((@@@@ (gnu packages linux) make-linux-libre) (@@@@ (gnu packages linux) %linux-libre-version)
+                      (@@@@ (gnu packages linux) %linux-libre-hash)
+                      '("x86_64-linux")
+                      #:extra-version "macbook41"
+                      #:patches (@@@@ (gnu packages linux) %linux-libre-5.1-patches)
+                      #:extra-options %macbook41-config-options))
+@end example
+
+In the above example @code{%filesystems} is a collection of flags enabling
+different filesystem support, @code{%efi-support} enables EFI support and
+@code{%emulation} enables a x86_64-linux machine to act in 32-bit mode also.
+@code{%default-extra-linux-options} are the ones quoted above, which had to be
+added in since they were replaced in the @code{extra-options} keyword.
+
+This all sounds like it should be doable, but how does one even know which
+modules are required for a particular system?  Two places that can be helpful
+in trying to answer this question is the
+@uref{https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel, Gentoo
+Handbook} and the
+@uref{https://www.kernel.org/doc/html/latest/admin-guide/README.html?highlight=localmodconfig,
+documentation from the kernel itself}.  From the kernel documentation, it
+seems that @code{make localmodconfig} is the command we want.
+
+In order to actually run @code{make localmodconfig} we first need to get and
+unpack the kernel source code:
+
+@example shell
+tar xf $(guix build linux-libre --source)
+@end example
+
+Once inside the directory containing the source code run @code{touch .config}
+to create an initial, empty @file{.config} to start with.  @code{make
+localmodconfig} works by seeing what you already have in @file{.config} and
+letting you know what you're missing.  If the file is blank then you're
+missing everything.  The next step is to run:
+
+@example shell
+guix environment linux-libre -- make localmodconfig
+@end example
+
+and note the output.  Do note that the @file{.config} file is still empty.
+The output generally contains two types of warnings.  The first start with
+"WARNING" and can actually be ignored in our case.  The second read:
+
+@example shell
+module pcspkr did not have configs CONFIG_INPUT_PCSPKR
+@end example
+
+For each of these lines, copy the @code{CONFIG_XXXX_XXXX} portion into the
+@file{.config} in the directory, and append @code{=m}, so in the end it looks
+like this:
+
+@example shell
+CONFIG_INPUT_PCSPKR=m
+CONFIG_VIRTIO=m
+@end example
+
+After copying all the configuration options, run @code{make localmodconfig}
+again to make sure that you don't have any output starting with "module".
+After all of these machine specific modules there are a couple more left that
+are also needed.  @code{CONFIG_MODULES} is necessary so that you can build and
+load modules separately and not have everything built into the kernel.
+@code{CONFIG_BLK_DEV_SD} is required for reading from hard drives.  It is
+possible that there are other modules which you will need.
+
+This post does not aim to be a guide to configuring your own kernel however,
+so if you do decide to build a custom kernel you'll have to seek out other
+guides to create a kernel which is just right for your needs.
+
+The second way to setup the kernel configuration makes more use of Guix's
+features and allows you to share configuration segments between different
+kernels.  For example, all machines using EFI to boot have a number of EFI
+configuration flags that they need.  It is likely that all the kernels will
+share a list of filesystems to support.  By using variables it is easier to
+see at a glance what features are enabled and to make sure you don't have
+features in one kernel but missing in another.
+
+Left undiscussed however, is Guix's initrd and its customization.  It is
+likely that you'll need to modify the initrd on a machine using a custom
+kernel, since certain modules which are expected to be built may not be
+available for inclusion into the initrd.
+
+@c *********************************************************************
+@node Acknowledgments
+@chapter Acknowledgments
+
+Guix is based on the @uref{https://nixos.org/nix/, Nix package manager},
+which was designed and
+implemented by Eelco Dolstra, with contributions from other people (see
+the @file{nix/AUTHORS} file in Guix.)  Nix pioneered functional package
+management, and promoted unprecedented features, such as transactional
+package upgrades and rollbacks, per-user profiles, and referentially
+transparent build processes.  Without this work, Guix would not exist.
+
+The Nix-based software distributions, Nixpkgs and NixOS, have also been
+an inspiration for Guix.
+
+GNU@tie{}Guix itself is a collective work with contributions from a
+number of people.  See the @file{AUTHORS} file in Guix for more
+information on these fine people.  The @file{THANKS} file lists people
+who have helped by reporting bugs, taking care of the infrastructure,
+providing artwork and themes, making suggestions, and more---thank you!
+
+This document includes adapted sections from articles that have previously
+been published on the Guix blog at @uref{https://guix.gnu.org/blog}.
+
+
+@c *********************************************************************
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@cindex license, GNU Free Documentation License
+@include fdl-1.3.texi
+
+@c *********************************************************************
+@node Concept Index
+@unnumbered Concept Index
+@printindex cp
+
+@bye
+
+@c Local Variables:
+@c ispell-local-dictionary: "american";
+@c End:
diff --git a/doc/local.mk b/doc/local.mk
index 336e961c4f..850612605b 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -26,7 +26,8 @@ info_TEXINFOS = %D%/guix.texi			\
   %D%/guix.es.texi				\
   %D%/guix.fr.texi				\
   %D%/guix.ru.texi				\
-  %D%/guix.zh_CN.texi
+  %D%/guix.zh_CN.texi				\
+  %D%/guix-cookbook.texi
 
 %C%_guix_TEXINFOS = \
   %D%/contributing.texi \
@@ -108,6 +109,12 @@ $(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.
 	-$(AM_V_POXREF)$(xref_command)
 	-mv "$@.tmp" "$@"
 
+$(srcdir)/%D%/guix-cookbook.%.texi: po/doc/guix-cookbook.%.po
+	-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix-cookbook.texi" -p "$<" -l "$@.tmp"
+	-sed -i "s|guix-cookbook\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
+	-$(AM_V_POXREF)$(xref_command)
+	-mv "$@.tmp" "$@"
+
 $(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po
 	-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp"
 	-$(AM_V_POXREF)$(xref_command)
diff --git a/po/doc/local.mk b/po/doc/local.mk
index fb3c5aee03..f1a52615c1 100644
--- a/po/doc/local.mk
+++ b/po/doc/local.mk
@@ -23,9 +23,13 @@ DOC_PO_FILES=					\
   %D%/guix-manual.ru.po				\
   %D%/guix-manual.zh_CN.po
 
+DOC_COOKBOOK_PO_FILES=
+
 EXTRA_DIST = \
   %D%/guix-manual.pot \
-  $(DOC_PO_FILES)
+  %D%/guix-cookbook.pot \
+  $(DOC_PO_FILES) \
+  $(DOC_COOKBOOK_PO_FILES)
 
 POT_OPTIONS = --package-name "guix" --package-version "$(VERSION)" \
 	          --copyright-holder "Ludovic Courtès" \
@@ -52,6 +56,27 @@ doc-po-update-%:
 	     exit 1; \
 	fi
 
+doc-po-update-cookbook-%:
+	@lang=`echo "$@" | sed -e's/^doc-po-update-//'` ; \
+	output="$(srcdir)/po/doc/guix-cookbook.$$lang.po" ; \
+	input="$(srcdir)/po/doc/guix-cookbook.pot" ; \
+	if test -f "$$output"; then \
+	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \
+	  cd $(srcdir) \
+	    && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	        '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+	          $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \
+	        *) \
+	          $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \
+	      esac; \
+	    }; \
+	  touch "$$output"; \
+	else \
+	     echo "File $$output does not exist.  If you are a translator, you can create it with 'msginit'." 1>&2; \
+	     exit 1; \
+	fi
+
 $(srcdir)/po/doc/%.pot-update: doc/%.texi
 	$(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \
 		-p "$$(echo $@ | sed 's|-update||')" $(POT_OPTIONS)
@@ -64,6 +89,7 @@ doc-pot-update:
 		$(MAKE) $(srcdir)/po/doc/guix.pot-update; \
 		$(MAKE) $(srcdir)/po/doc/contributing.pot-update; \
 	done
+	$(MAKE) $(srcdir)/po/doc/guix-cookbook.pot-update;
 	msgcat $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) > $(srcdir)/po/doc/guix-manual.pot
 	rm -f $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES))
 
@@ -72,5 +98,10 @@ doc-po-update: doc-pot-update
 	  lang="`echo "$$f" | $(SED) -es'|.*/guix-manual\.\(.*\)\.po$$|\1|g'`";	\
 	  $(MAKE) "doc-po-update-$$lang";					\
 	done
+	for f in $(DOC_COOKBOOK_PO_FILES); do						\
+	  lang="`echo "$$f" | $(SED) -es'|.*/guix-cookbook\.\(.*\)\.po$$|\1|g'`";	\
+	  $(MAKE) "doc-po-update-cookbook-$$lang";						\
+	done
+
 
 .PHONY: doc-po-update doc-pot-update