summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/linux-modules.scm28
-rw-r--r--gnu/installer.scm1
-rw-r--r--gnu/local.mk22
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/audio.scm12
-rw-r--r--gnu/packages/backup.scm4
-rw-r--r--gnu/packages/bioinformatics.scm28
-rw-r--r--gnu/packages/bootloaders.scm2
-rw-r--r--gnu/packages/c.scm14
-rw-r--r--gnu/packages/check.scm16
-rw-r--r--gnu/packages/ci.scm1
-rw-r--r--gnu/packages/clojure.scm19
-rw-r--r--gnu/packages/compression.scm35
-rw-r--r--gnu/packages/cpp.scm15
-rw-r--r--gnu/packages/cran.scm95
-rw-r--r--gnu/packages/crypto.scm28
-rw-r--r--gnu/packages/databases.scm3
-rw-r--r--gnu/packages/datastructures.scm15
-rw-r--r--gnu/packages/debug.scm21
-rw-r--r--gnu/packages/dictionaries.scm6
-rw-r--r--gnu/packages/django.scm2
-rw-r--r--gnu/packages/emacs-xyz.scm6
-rw-r--r--gnu/packages/emulators.scm21
-rw-r--r--gnu/packages/engineering.scm19
-rw-r--r--gnu/packages/games.scm243
-rw-r--r--gnu/packages/gnuzilla.scm225
-rw-r--r--gnu/packages/golang.scm16
-rw-r--r--gnu/packages/gtk.scm1
-rw-r--r--gnu/packages/guile-xyz.scm1841
-rw-r--r--gnu/packages/guile.scm1817
-rw-r--r--gnu/packages/image-processing.scm8
-rw-r--r--gnu/packages/image.scm4
-rw-r--r--gnu/packages/java.scm225
-rw-r--r--gnu/packages/kde-frameworks.scm27
-rw-r--r--gnu/packages/kde.scm6
-rw-r--r--gnu/packages/linux.scm20
-rw-r--r--gnu/packages/llvm.scm5
-rw-r--r--gnu/packages/mail.scm16
-rw-r--r--gnu/packages/man.scm6
-rw-r--r--gnu/packages/maths.scm237
-rw-r--r--gnu/packages/mpi.scm8
-rw-r--r--gnu/packages/music.scm65
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/package-management.scm10
-rw-r--r--gnu/packages/patches/combinatorial-blas-awpm.patch67
-rw-r--r--gnu/packages/patches/combinatorial-blas-io-fix.patch14
-rw-r--r--gnu/packages/patches/icecat-avoid-bundled-libraries.patch16
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch154
-rw-r--r--gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch50
-rw-r--r--gnu/packages/patches/icecat-use-system-media-libs.patch87
-rw-r--r--gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch182
-rw-r--r--gnu/packages/patches/p11-kit-jks-timestamps.patch42
-rw-r--r--gnu/packages/patches/qemu-CVE-2018-16872.patch88
-rw-r--r--gnu/packages/patches/qemu-CVE-2019-6778.patch43
-rw-r--r--gnu/packages/patches/scotch-graph-diam-64.patch27
-rw-r--r--gnu/packages/patches/scotch-graph-induce-type-64.patch19
-rw-r--r--gnu/packages/patches/scotch-integer-declarations.patch37
-rw-r--r--gnu/packages/patches/scotch-test-threading.patch22
-rw-r--r--gnu/packages/patches/superlu-dist-awpm-grid.patch36
-rw-r--r--gnu/packages/patches/x265-detect512-all-arches.patch37
-rw-r--r--gnu/packages/python-crypto.scm28
-rw-r--r--gnu/packages/python-web.scm105
-rw-r--r--gnu/packages/python-xyz.scm139
-rw-r--r--gnu/packages/qt.scm13
-rw-r--r--gnu/packages/sagemath.scm60
-rw-r--r--gnu/packages/scheme.scm7
-rw-r--r--gnu/packages/shells.scm180
-rw-r--r--gnu/packages/skribilo.scm1
-rw-r--r--gnu/packages/statistics.scm47
-rw-r--r--gnu/packages/terminals.scm17
-rw-r--r--gnu/packages/tex.scm78
-rw-r--r--gnu/packages/tls.scm5
-rw-r--r--gnu/packages/video.scm39
-rw-r--r--gnu/packages/virtualization.scm12
-rw-r--r--gnu/packages/web.scm59
-rw-r--r--gnu/packages/wm.scm4
-rw-r--r--gnu/packages/xorg.scm55
-rw-r--r--gnu/services/mcron.scm2
-rw-r--r--gnu/services/xorg.scm6
79 files changed, 4303 insertions, 2676 deletions
diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
index 2d81175041..d69bcbf5a2 100644
--- a/gnu/build/linux-modules.scm
+++ b/gnu/build/linux-modules.scm
@@ -33,6 +33,7 @@
             ensure-dot-ko
             module-aliases
             module-dependencies
+            module-soft-dependencies
             normalize-module-name
             file-name->module-name
             find-module-file
@@ -100,6 +101,33 @@ contains module names, not actual file names."
       (('depends . what)
        (string-tokenize what %not-comma)))))
 
+(define not-softdep-whitespace
+  (char-set-complement (char-set #\space #\tab)))
+
+(define (module-soft-dependencies file)
+  "Return a list of (cons section soft-dependency) of module FILE."
+  ;; TEXT: "pre: baz blubb foo post: bax bar"
+  (define (parse-softdep text)
+    (let loop ((value '())
+               (tokens (string-tokenize text not-softdep-whitespace))
+               (section #f))
+      (match tokens
+       ((token rest ...)
+        (if (string=? (string-take-right token 1) ":") ; section
+            (loop value rest (string-trim-both (string-drop-right token 1)))
+            (loop (cons (cons section token) value) rest section)))
+       (()
+        value))))
+
+  ;; Note: Multiple 'softdep sections are allowed.
+  (let ((info (modinfo-section-contents file)))
+    (concatenate
+     (filter-map (match-lambda
+                  (('softdep . value)
+                   (parse-softdep value))
+                  (_ #f))
+                 (modinfo-section-contents file)))))
+
 (define (module-aliases file)
   "Return the list of aliases of module FILE."
   (let ((info (modinfo-section-contents file)))
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 2ae139b13f..479d940b4a 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -31,6 +31,7 @@
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages disk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:autoload   (gnu packages gnupg) (guile-gcrypt)
   #:use-module (gnu packages iso-codes)
   #:use-module (gnu packages linux)
diff --git a/gnu/local.mk b/gnu/local.mk
index f339f32e73..ee8b13d2fb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1,13 +1,13 @@
 # GNU Guix --- Functional package management for GNU
 # Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-# Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Andreas Enge <andreas@enge.fr>
+# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr>
 # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-# Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 # Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
 # Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org>
 # Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
-# Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+# Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
 # Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -220,6 +220,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/gtk.scm				\
   %D%/packages/guile.scm			\
   %D%/packages/guile-wm.scm			\
+  %D%/packages/guile-xyz.scm			\
   %D%/packages/gv.scm				\
   %D%/packages/gxmessage.scm			\
   %D%/packages/hardware.scm			\
@@ -394,6 +395,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/rush.scm				\
   %D%/packages/rust.scm				\
   %D%/packages/samba.scm			\
+  %D%/packages/sagemath.scm			\
   %D%/packages/sawfish.scm			\
   %D%/packages/scanner.scm			\
   %D%/packages/scheme.scm			\
@@ -595,6 +597,7 @@ GNU_SYSTEM_MODULES +=                           \
   %D%/installer/newt/partition.scm		\
   %D%/installer/newt/services.scm		\
   %D%/installer/newt/timezone.scm		\
+  %D%/installer/newt/user.scm			\
   %D%/installer/newt/utils.scm			\
   %D%/installer/newt/welcome.scm		\
   %D%/installer/newt/wifi.scm	
@@ -691,6 +694,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/clucene-pkgconfig.patch			\
   %D%/packages/patches/clx-remove-demo.patch			\
   %D%/packages/patches/coda-use-system-libs.patch		\
+  %D%/packages/patches/combinatorial-blas-awpm.patch		\
+  %D%/packages/patches/combinatorial-blas-io-fix.patch		\
   %D%/packages/patches/cool-retro-term-dont-check-uninit-member.patch	\
   %D%/packages/patches/cool-retro-term-fix-array-size.patch	\
   %D%/packages/patches/cool-retro-term-memory-leak-1.patch	\
@@ -879,6 +884,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch        \
   %D%/packages/patches/hplip-remove-imageprocessor.patch	\
   %D%/packages/patches/hydra-disable-darcs-test.patch		\
+  %D%/packages/patches/icecat-makeicecat.patch			\
   %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
@@ -995,6 +1001,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/lierolibre-newer-libconfig.patch		\
   %D%/packages/patches/lierolibre-remove-arch-warning.patch	\
   %D%/packages/patches/lierolibre-try-building-other-arch.patch	\
+  %D%/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch	\
   %D%/packages/patches/linux-pam-no-setfsuid.patch		\
   %D%/packages/patches/lirc-localstatedir.patch			\
   %D%/packages/patches/lirc-reproducible-build.patch		\
@@ -1090,6 +1097,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/osip-CVE-2017-7853.patch			\
   %D%/packages/patches/ots-no-include-missing-file.patch	\
   %D%/packages/patches/owncloud-disable-updatecheck.patch	\
+  %D%/packages/patches/p11-kit-jks-timestamps.patch		\
   %D%/packages/patches/p7zip-CVE-2016-9296.patch		\
   %D%/packages/patches/p7zip-CVE-2017-17969.patch		\
   %D%/packages/patches/p7zip-remove-unused-code.patch		\
@@ -1174,6 +1182,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
   %D%/packages/patches/python-waitress-fix-tests.patch		\
   %D%/packages/patches/qemu-glibc-2.27.patch 			\
+  %D%/packages/patches/qemu-CVE-2018-16872.patch 		\
+  %D%/packages/patches/qemu-CVE-2019-6778.patch 		\
   %D%/packages/patches/qt4-ldflags.patch			\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
@@ -1210,10 +1220,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-reproducible-builds.patch		 \
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
-  %D%/packages/patches/scotch-test-threading.patch		\
   %D%/packages/patches/scotch-build-parallelism.patch		\
-  %D%/packages/patches/scotch-graph-diam-64.patch		\
-  %D%/packages/patches/scotch-graph-induce-type-64.patch	\
+  %D%/packages/patches/scotch-integer-declarations.patch	\
   %D%/packages/patches/scribus-poppler.patch			\
   %D%/packages/patches/sdl-libx11-1.6.patch			\
   %D%/packages/patches/seq24-rename-mutex.patch			\
@@ -1232,6 +1240,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/sssd-curl-compat.patch			\
   %D%/packages/patches/steghide-fixes.patch			\
   %D%/packages/patches/streamlink-update-test.patch		\
+  %D%/packages/patches/superlu-dist-awpm-grid.patch		\
   %D%/packages/patches/superlu-dist-scotchmetis.patch		\
   %D%/packages/patches/swig-guile-gc.patch			\
   %D%/packages/patches/swish-e-search.patch			\
@@ -1327,7 +1336,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/wpa-supplicant-fix-nonce-reuse.patch	\
   %D%/packages/patches/wpa-supplicant-krack-followups.patch	\
   %D%/packages/patches/x265-arm-flags.patch			\
-  %D%/packages/patches/x265-detect512-all-arches.patch		\
   %D%/packages/patches/xboing-CVE-2004-0149.patch		\
   %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
   %D%/packages/patches/xf86-video-geode-glibc-2.20.patch	\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 0c0ec3d4bc..dd98e087a8 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1569,9 +1569,7 @@ specified directories.")
    (source
     (origin
       (method url-fetch)
-      (uri (string-append
-            "https://pypi.python.org/packages/source/g/graphios/graphios-"
-            version ".tar.gz"))
+      (uri (pypi-uri "graphios" version))
       (sha256
        (base32
         "1h87hvc315wg6lklbf4l7csd3n5pgljwrfli1p3nasdi0izgn66i"))))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 658f23e45d..64f826b3f0 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
@@ -1805,11 +1805,7 @@ implementation of the Open Sound Control (@dfn{OSC}) protocol.")
     (source
      (origin
        (method url-fetch)
-       (uri
-        (string-append
-         "https://pypi.python.org/packages/ab/42/"
-         "b4f04721c5c5bfc196ce156b3c768998ef8c0ae3654ed29ea5020c749a6b"
-         "/PyAudio-" version ".tar.gz"))
+       (uri (pypi-uri "PyAudio" version))
        (sha256
         (base32
          "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
@@ -2213,7 +2209,7 @@ background file post-processing.")
 (define-public supercollider
   (package
     (name "supercollider")
-    (version "3.10.0")
+    (version "3.10.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2222,7 +2218,7 @@ background file post-processing.")
                     "/SuperCollider-" version "-Source-linux.tar.bz2"))
               (sha256
                (base32
-                "16j9psa32czx1p1y2vvq0qf2ib0ngrfc604vx35n2b4llyika84v"))))
+                "1yszs9j3sjk8hb8xxz30z3nd4j899ymb9mw9y1v26ikd603d1iig"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 5d9013552e..d50c7e4fdc 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -638,9 +638,7 @@ to not fully trusted targets.  Borg is a fork of Attic.")
     (version "0.16")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/A/Attic/Attic-"
-                    version ".tar.gz"))
+              (uri (pypi-uri "Attic" version))
               (sha256
                (base32
                 "0b5skd36r4c0915lwpkqg5hxm49gls9pprs1b7hc40910wlcsl36"))))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 28dbdca13b..23eba74175 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -72,6 +72,7 @@
   #:use-module (gnu packages graph)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
@@ -4503,9 +4504,7 @@ files and writing bioinformatics applications.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/W/WarpedLMM/WarpedLMM-"
-             version ".zip"))
+       (uri (pypi-uri "WarpedLMM" version ".zip"))
        (sha256
         (base32
          "1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j"))))
@@ -6021,7 +6020,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
 (define-public star
   (package
     (name "star")
-    (version "2.6.0c")
+    (version "2.7.0a")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -6030,7 +6029,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "04cj6jw8d9q6lk9c78wa4fky6jdlicf1d13plq7182h8vqiz8p59"))
+                "1yx28gra6gqdx1ps5y8mpdinsn8r0dhsc2m3gcvjfrk71i9yhd6l"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -7183,14 +7182,14 @@ checks on R packages that are to be submitted to the Bioconductor repository.")
 (define-public r-optparse
   (package
     (name "r-optparse")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "optparse" version))
        (sha256
         (base32
-         "1d7v5gl45x4amsfmzn5zyyffyqlc7a82h01szlnda22viyxids0h"))))
+         "04vyb6dhcga30mvghsg1p052jmf69xqxkvh3hzqz7dscyppy76w1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-getopt" ,r-getopt)))
@@ -7388,13 +7387,13 @@ CAGE.")
 (define-public r-variantannotation
   (package
     (name "r-variantannotation")
-    (version "1.28.8")
+    (version "1.28.10")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "VariantAnnotation" version))
               (sha256
                (base32
-                "0gf36lr9xy3zmcc4rxs5bi2ccrrc7b6wqp6p3cvnclgif4i0l66k"))))
+                "0kxf583cgkdz1shi85r0mpnfxmzi7s5f6srd1czbdl2iibvrm8jn"))))
     (properties
      `((upstream-name . "VariantAnnotation")))
     (inputs
@@ -7829,13 +7828,13 @@ as well as query and modify the browser state, such as the current viewport.")
 (define-public r-genomicfeatures
   (package
     (name "r-genomicfeatures")
-    (version "1.34.1")
+    (version "1.34.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "0slq6hv5bmc3bgrl824jzmr6db3fvaj6b7ihwmdn76pgqqbq2fq6"))))
+                "0qs94b0ywrjyc9m1jykrbch3lb07576m508dikvx18vwn304mban"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -8486,7 +8485,7 @@ throughput genetic sequencing data sets using regression methods.")
 (define-public r-qtl
  (package
   (name "r-qtl")
-  (version "1.42-8")
+  (version "1.44-9")
   (source
    (origin
     (method url-fetch)
@@ -8494,7 +8493,7 @@ throughput genetic sequencing data sets using regression methods.")
                         version ".tar.gz"))
     (sha256
      (base32
-      "1l528dwvfpdlr05imrrm4rq32axp6hld9nqm6mm43kn5n7z2f5k6"))))
+      "03lmvydln8b7666b6w46qbryhf83vsd11d4y2v95rfgvqgq66l1i"))))
   (build-system r-build-system)
   (home-page "http://rqtl.org/")
   (synopsis "R package for analyzing QTL experiments in genetics")
@@ -9131,8 +9130,7 @@ may optionally be provided to further inform the peak-calling process.")
     (version "1.0.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://pypi.python.org/packages/source/P"
-                                  "/PePr/PePr-" version ".tar.gz"))
+              (uri (pypi-uri "PePr" version))
               (sha256
                (base32
                 "0qxjfdpl1b1y53nccws2d85f6k74zwmx8y8sd9rszcqhfayx6gdx"))))
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index a4b4f64783..0fbf481893 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -516,7 +516,7 @@ board-independent tools.")))
              (lambda* (#:key outputs make-flags #:allow-other-keys)
                (let ((config-name (string-append ,board "_defconfig")))
                  (if (file-exists? (string-append "configs/" config-name))
-                     (zero? (apply system* "make" `(,@make-flags ,config-name)))
+                     (apply invoke "make" `(,@make-flags ,config-name))
                      (begin
                        (display "Invalid board name. Valid board names are:"
                                 (current-error-port))
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index c5141451f0..3b20e84a91 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,8 +38,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (srfi srfi-1))
+  #:use-module (gnu packages pkg-config))
 
 (define-public tcc
   (package
@@ -69,11 +69,15 @@
                                               "/include:{B}/include")
                                (string-append "--libpaths="
                                               (assoc-ref %build-inputs "libc")
-                                              "/lib"))
+                                              "/lib")
+                               ,@(if (string-prefix? "armhf-linux"
+                                                     (or (%current-target-system)
+                                                         (%current-system)))
+                                     `("--triplet=arm-linux-gnueabihf")
+                                     '()))
        #:test-target "test"))
     ;; Fails to build on MIPS: "Unsupported CPU"
-    (supported-systems (fold delete %supported-systems
-                             '("mips64el-linux" "aarch64-linux")))
+    (supported-systems (delete "mips64el-linux" %supported-systems))
     (synopsis "Tiny and fast C compiler")
     (description
      "TCC, also referred to as \"TinyCC\", is a small and fast C compiler
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 439a668dd7..64af7ea097 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -1133,9 +1133,7 @@ Python tests.")))
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
-             version ".tar.gz"))
+       (uri (pypi-uri "testrepository" version))
        (sha256
         (base32
          "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
@@ -1307,9 +1305,7 @@ tools for mocking system commands and recording calls to those.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/t/testlib/testlib-"
-             version ".zip"))
+       (uri (pypi-uri "testlib" version ".zip"))
        (sha256
         (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
     (build-system python-build-system)
@@ -1806,9 +1802,7 @@ especially -cover-package.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/d/discover/discover-"
-             version ".tar.gz"))
+       (uri (pypi-uri "discover" version))
        (sha256
         (base32
          "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
@@ -2039,13 +2033,13 @@ mocks, stubs and fakes.")
 (define-public python-flaky
   (package
     (name "python-flaky")
-    (version "3.4.0")
+    (version "3.5.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "flaky" version))
               (sha256
                (base32
-                "18pkmf79rfkfpy1d2rrx3v55nxj762ilyk9rvd6s6dccxw58imsa"))))
+                "1nm1kjf857z5aw7v642ffsy1vwf255c6wjvmil71kckjyd0mxg8j"))))
     (build-system python-build-system)
     (arguments
      ;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet.
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index bd4a3d3509..6533fb302d 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages mail)
   #:use-module (gnu packages package-management)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 1dba4cef87..8112b65278 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -65,15 +65,16 @@
 
     (package
       (name "clojure")
-      (version "1.9.0")
-      (source
-       (origin
-         (method url-fetch)
-         (uri
-          (string-append "https://github.com/clojure/clojure/archive/clojure-"
-                         version ".tar.gz"))
-         (sha256
-          (base32 "0xjbzcw45z32vsn9pifp7ndysjzqswp5ig0jkjpivigh2ckkdzha"))))
+      (version "1.10.0")
+      (source (let ((name+version (string-append name "-" version)))
+                (origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/clojure/clojure")
+                        (commit name+version)))
+                  (file-name (string-append name+version "-checkout"))
+                  (sha256
+                   (base32 "1kcyv2836acs27vi75hvf3r773ahv2nlh9b3j9xa9m9sdanz1h83")))))
       (build-system ant-build-system)
       (arguments
        `(#:imported-modules ((guix build clojure-utils)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 261746f08a..b6f07dfa9a 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
@@ -434,6 +434,39 @@ than gzip and 15 % smaller output than bzip2.")
    (license (list license:gpl2+ license:lgpl2.1+)) ; bits of both
    (home-page "https://tukaani.org/xz/")))
 
+(define-public lhasa
+  (package
+    (name "lhasa")
+    (version "0.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/fragglet/lhasa/releases/download/v"
+                    version "/lhasa-" version ".tar.gz"))
+              (sha256
+               (base32
+                "092zi9av18ma20c6h9448k0bapvx2plnp292741dvfd9hmgqxc1z"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-up-test-environment
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
+                                            "/share/zoneinfo"))
+             #t)))))
+    (native-inputs
+     `(("tzdata" ,tzdata)))
+    (home-page "https://fragglet.github.com/lhasa/")
+    (synopsis "LHA archive decompressor")
+    (description "Lhasa is a replacement for the Unix LHA tool, for
+decompressing .lzh (LHA / LHarc) and .lzs (LArc) archives.  The backend for the
+tool is a library, so that it can be reused for other purposes.  Lhasa aims to
+be compatible with as many types of lzh/lzs archives as possible.  It also aims
+to generate the same output as the (non-free) Unix LHA tool, so that it will
+act as a free drop-in replacement.")
+    (license license:isc)))
+
 (define-public lzo
   (package
     (name "lzo")
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index f5aa447a79..4e8f12248f 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -203,15 +203,16 @@ as ordering relation.")
   (package
     (name "json-modern-cxx")
     (version "3.1.2")
+    (home-page "https://github.com/nlohmann/json")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/nlohmann/json/archive/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference (url home-page)
+                           (commit (string-append "v" version))))
        (sha256
         (base32
-         "0m5fhdpx2qll933db2nsi30nns3cifavzvijzz6mxhdkpmngmzz8"))
-       (file-name (string-append name "-" version ".tar.gz"))
+         "1mpr781fb2dfbyscrr7nil75lkxsazg4wkm749168lcf2ksrrbfi"))
+       (file-name (git-file-name name version))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -227,13 +228,13 @@ as ordering relation.")
                (substitute* files
                  (("#include ?\"(fifo_map.hpp)\"" all fifo-map-hpp)
                   (string-append
-                   "#include <fifo_map/" fifo-map-hpp ">")))))))))
+                   "#include <fifo_map/" fifo-map-hpp ">")))))
+           #t))))
     (native-inputs
      `(("amalgamate" ,amalgamate)))
     (inputs
      `(("catch2" ,catch-framework2)
        ("fifo-map" ,fifo-map)))
-    (home-page "https://github.com/nlohmann/json")
     (build-system cmake-build-system)
     (synopsis "JSON parser and printer library for C++")
     (description "JSON for Modern C++ is a C++ JSON library that provides
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 1bd20b12d3..f6f4a08aab 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -83,6 +83,52 @@
 the system clipboards.")
     (license license:gpl3)))
 
+(define-public r-sys
+  (package
+    (name "r-sys")
+    (version "2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "sys" version))
+       (sha256
+        (base32
+         "10ml2492bdllh6cz2zl192ip0fdgjkkgayggd3ghswsj5gjv5hrh"))))
+    (build-system r-build-system)
+    (home-page "https://github.com/jeroen/sys")
+    (synopsis "Powerful and reliable tools for running system commands in R")
+    (description
+     "This package provides drop-in replacements for the base @code{system2()}
+function with fine control and consistent behavior across platforms.  It
+supports clean interruption, timeout, background tasks, and streaming STDIN /
+STDOUT / STDERR over binary or text connections.  The package also provides
+functions for evaluating expressions inside a temporary fork.  Such
+evaluations have no side effects on the main R process, and support reliable
+interrupts and timeouts.  This provides the basis for a sandboxing
+mechanism.")
+    (license license:expat)))
+
+(define-public r-askpass
+  (package
+    (name "r-askpass")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "askpass" version))
+       (sha256
+        (base32
+         "07q0ik8jzk44vpwh48rr3fnpd7dzsdhjjsl4l850rffv3dyq4h6v"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-sys" ,r-sys)))
+    (home-page "https://github.com/jeroen/askpass")
+    (synopsis "Safe password entry for R")
+    (description
+     "This package provides cross-platform utilities for prompting the user
+for credentials or a passphrase, for example to authenticate with a server or
+read a protected key.")
+    (license license:expat)))
+
 (define-public r-vegan
   (package
     (name "r-vegan")
@@ -927,14 +973,14 @@ applications.  That is, compute distances and related measures for angular
 (define-public r-ggmap
   (package
     (name "r-ggmap")
-    (version "2.6.1")
+    (version "2.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggmap" version))
        (sha256
         (base32
-         "0mssb09w818jv58h7mly9y181pzv22sgcd4a079cfpq04bs0wigw"))))
+         "144x6ycb2c3fvy5c68ww53m6gzi6kfvas7cpbn071z08n4xgb72f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -1062,13 +1108,13 @@ XML.  To learn more about the Abbyy OCR API, see @url{http://ocrsdk.com/}.")
 (define-public r-colorspace
   (package
     (name "r-colorspace")
-    (version "1.3-2")
+    (version "1.4-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "colorspace" version))
        (sha256
-        (base32 "0d1ya7hx4y58n5ivwmdmq2zgh0g2sbv7ykh13n85c1355csd57yx"))))
+        (base32 "0mpmvz2sycjp4c9y3v3qin7mdjy812hwi7cyjnblcw6xb1ckq06f"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/colorspace")
     (synopsis "Color space manipulation")
@@ -2038,14 +2084,14 @@ functions from LINPACK.")
 (define-public r-fitdistrplus
   (package
     (name "r-fitdistrplus")
-    (version "1.0-11")
+    (version "1.0-14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fitdistrplus" version))
        (sha256
         (base32
-         "12hckg3y5j3zh9q1gwxkc27q813p2r42iqp7wdfiq6nj55jrh6w6"))))
+         "10q08wsv8v3w7797jdvvv60bgrf1bi6438wf0jcqv81ays82a245"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
@@ -2809,14 +2855,14 @@ Laplace approximation and adaptive Gauss-Hermite quadrature.")
 (define-public r-jomo
   (package
     (name "r-jomo")
-    (version "2.6-5")
+    (version "2.6-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "jomo" version))
        (sha256
         (base32
-         "109q5m69clrvvialxdxznd0wdb54ajhx84nj8slx8bf909a427mj"))))
+         "1048qb12cx7fs156jcqzwkfmsjadkgnrqd0krznyxpn873zr9lq2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lme4" ,r-lme4)
@@ -3042,16 +3088,18 @@ structure.")
 (define-public r-vioplot
   (package
     (name "r-vioplot")
-    (version "0.2")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "vioplot" version))
        (sha256
         (base32
-         "16wkb26kv6qr34hv5zgqmgq6zzgysg9i78pvy2c097lr60v087v0"))))
+         "1ddmmqq7qrnvr5q518afnysrl7ccr8am9njknv3dpwaqzcdr9akn"))))
     (build-system r-build-system)
-    (propagated-inputs `(("r-sm" ,r-sm)))
+    (propagated-inputs
+     `(("r-sm" ,r-sm)
+       ("r-zoo" ,r-zoo)))
     (home-page "http://wsopuppenkiste.wiso.uni-goettingen.de/~dadler")
     (synopsis "Violin plot")
     (description
@@ -7222,13 +7270,13 @@ series.")
 (define-public r-acceptancesampling
   (package
     (name "r-acceptancesampling")
-    (version "1.0-5")
+    (version "1.0-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "AcceptanceSampling" version))
        (sha256
-        (base32 "18krmmyn8pn11aqd81kbvka68lnd36mnpdh7p3pz9r4m4vjj007x"))))
+        (base32 "1z3rmln63ki2kik9kinbwr9qhr32ggbmh4mm3xqy6di119n47ca9"))))
     (properties
      `((upstream-name . "AcceptanceSampling")))
     (build-system r-build-system)
@@ -7320,14 +7368,14 @@ cross-sectional, time series, clustered, panel, and longitudinal data.")
 (define-public r-th-data
   (package
     (name "r-th-data")
-    (version "1.0-9")
+    (version "1.0-10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TH.data" version))
        (sha256
         (base32
-         "03xfvww0krw0fn76qmmvrj7dx4shin57qafwhkrggfg25hbqlcfq"))))
+         "0mgz7aj2d9abbmdr65zgmg1ddp3fdbs3mfj83r5xadh5ldkir2k1"))))
     (properties `((upstream-name . "TH.data")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7371,14 +7419,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "1sf7gmdb7aqhdpx489vg693ivc5677n4yjx27ixv8v7pjh8mlwwx"))))
+         "0mg6y007hfmr601cq4jgxl5ncwbx79kkh7xs2i504m0rinxj8bf5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -8490,18 +8538,17 @@ Scientific.")
 (define-public r-activity
   (package
     (name "r-activity")
-    (version "1.1")
+    (version "1.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "activity" version))
        (sha256
         (base32
-         "1lqajgxfps2h6amz1791vp3f52rs9ghmanq1nqfxqd2jmk3idkrx"))))
+         "11w2bz6p9xbzdh6773dmbbh6rws0h5dj18p8m0ivzizgq932vdzs"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-circular" ,r-circular)
-       ("r-overlap" ,r-overlap)
        ("r-pbapply" ,r-pbapply)))
     (home-page "https://cran.r-project.org/web/packages/activity/")
     (synopsis "Animal activity statistics")
@@ -8697,14 +8744,14 @@ in-memory raw vectors.")
 (define-public r-waveslim
   (package
     (name "r-waveslim")
-    (version "1.7.5")
+    (version "1.7.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "waveslim" version))
        (sha256
         (base32
-         "0lqslkihgrd7rbihqhhk57m9vkbnfsznkvk8430cvbcsn7vridii"))))
+         "0mky0nb4xxp8rybp87mxw2f1q6k400wpxv01zr4injv7ja6028xk"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -9540,14 +9587,14 @@ limitations\" using the GNU Multiple Precision library.")
 (define-public r-rmpfr
   (package
     (name "r-rmpfr")
-    (version "0.7-1")
+    (version "0.7-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rmpfr" version))
        (sha256
         (base32
-         "0172px5ryi7i0gyyin9z2bzif8vnj292gk0s1w5p3c12g9hj2c4v"))))
+         "1zq3as34r27v2yc729731997wdhxb6cs5ilmak4nmsljabnac7gc"))))
     (properties `((upstream-name . "Rmpfr")))
     (build-system r-build-system)
     (inputs
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index bef8235a97..ffef4ff8e4 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -901,3 +901,29 @@ Features:
 @end itemize\n")
       (home-page "https://github.com/bitcoin-core/secp256k1")
       (license license:unlicense))))
+
+(define-public stoken
+  (package
+    (name "stoken")
+    (version "0.92")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/stoken/"
+                                  "stoken-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0npgr6y85gzwksy8jkwa4yzvqwjprwnplx3yiw3ayk4f0ldlhaxa"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("nettle" ,nettle)
+       ("libxml2" ,libxml2)))
+    (home-page "http://stoken.sf.net")
+    (synopsis "Software Token for cryptographic authentication")
+    (description
+     "@code{stoken} is a token code generator compatible with RSA SecurID
+128-bit (AES) tokens.  This package contains a standalone command-line program
+that allows for importing token seeds, generating token codes, and various
+utility/testing functions.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 079d303fca..96e84de685 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -2093,8 +2093,7 @@ Database API 2.0T.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/S/"
-                          "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
+      (uri (pypi-uri "SQLAlchemy" version))
       (sha256
        (base32
         "094mmbs4igrxplfyqd59j90jb83ixpbbzqc0w49yw81m82nnjrgg"))))
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index c3e96a0b12..27fe882043 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -25,6 +25,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 cmake)
   #:use-module (guix build-system gnu))
 
@@ -149,13 +150,14 @@ queues, stacks, and doubly-linked lists.")
     (version "2.0.2")
     (source
      (origin
-       (method url-fetch)
-       (file-name (string-append name "-" version ".tar.gz"))
-       (uri (string-append "https://github.com/troydhanson/uthash/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/troydhanson/uthash.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1la82gdlyl7m8ahdjirigwfh7zjgkc24cvydrqcri0vsvm8iv8rl"))))
+         "0kslz8k6lssh7fl7ayzwlj62p0asxs3dq03357ls5ywjad238gqg"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("perl" ,perl)))
@@ -169,8 +171,7 @@ queues, stacks, and doubly-linked lists.")
          (replace 'check
            (lambda* (#:key make-flags #:allow-other-keys)
              (with-directory-excursion "tests"
-               (zero? (apply system* "make"
-                             make-flags)))))
+               (apply invoke "make" make-flags))))
          (replace 'install
            ;; There is no top-level Makefile to do this for us.
            (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 4e63c81b64..0f4a654e62 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -194,10 +194,8 @@ tools that process C/C++ code.")
                                   (patch-dir
                                    (string-append afl-dir
                                                   "/qemu_mode/patches")))
-                             (unless (zero?
-                                      (system* "tar" "xf"
-                                               (assoc-ref inputs "afl-src")))
-                               (error "tar failed to unpack afl-src"))
+                             (invoke "tar" "xf"
+                                     (assoc-ref inputs "afl-src"))
                              (install-file (string-append patch-dir
                                                           "/afl-qemu-cpu-inl.h")
                                            ".")
@@ -210,11 +208,12 @@ tools that process C/C++ code.")
                              (substitute* (string-append patch-dir
                                                          "/cpu-exec.diff")
                                (("\\.\\./patches/") ""))
-                             (every (lambda (patch-file)
-                                      (zero? (system* "patch" "--force" "-p1"
-                                                      "--input" patch-file)))
-                                    (find-files patch-dir
-                                                "\\.diff$"))))))))))))))
+                             (for-each (lambda (patch-file)
+                                         (invoke "patch" "--force" "-p1"
+                                                 "--input" patch-file))
+                                       (find-files patch-dir
+                                                   "\\.diff$"))
+                             #t))))))))))))
       (arguments
        `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                             "CC=gcc")
@@ -291,7 +290,7 @@ down the road.")
            (modify-phases %standard-phases
              (add-after 'unpack 'unpack-make
                (lambda* (#:key inputs #:allow-other-keys)
-                 (zero? (system* "tar" "xf" (assoc-ref inputs "make-source")))))
+                 (invoke "tar" "xf" (assoc-ref inputs "make-source"))))
              (add-after 'unpack-make 'set-default-shell
                (lambda _
                  ;; Taken mostly directly from (@ (gnu packages base) gnu-make)
@@ -301,7 +300,7 @@ down the road.")
                             (which "sh"))))))
              (add-before 'configure 'repack-make
                (lambda _
-                 (zero? (system* "tar" "cJf" "./make.tar.xz" ,make-dir))))))))
+                 (invoke "tar" "cJf" "./make.tar.xz" ,make-dir)))))))
       (home-page "https://github.com/losalamos/stress-make")
       (synopsis "Expose race conditions in Makefiles")
       (description
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 9e06ac7124..8c39453650 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -176,8 +176,7 @@ work, such as sentence length and other readability measures.")
          (delete 'configure)
          (delete 'build)
          (delete 'check)
-         (replace
-             'install
+         (replace 'install
            (lambda _
              (let ((bindir (string-append
                             (assoc-ref %outputs "out") "/bin"))
@@ -209,8 +208,7 @@ work, such as sentence length and other readability measures.")
                   (string-append "DEFLIBDIR=\"" libdir "\"")))
                (install-file "ding.desktop" sharedir)
                (install-file "ding.png" sharedir)
-               (zero?
-                (system* "./install.sh"))))))))
+               (invoke "./install.sh")))))))
     (synopsis "Dictionary lookup program with a German-English dictionary")
     (description "Ding is a dictionary lookup program for the X window system.
 It comes with a German-English dictionary with approximately 270,000 entries.")
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 848b1c63cb..a2fa1db036 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -74,7 +74,7 @@
                                      (string-split (getenv "PYTHONPATH")
                                                    #\:))
                                "', ")))
-             (zero? (system* "python" "tests/runtests.py")))))))
+             (invoke "python" "tests/runtests.py"))))))
     ;; TODO: Install extras/django_bash_completion.
     (native-inputs
      `(("tzdata" ,tzdata-for-tests)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index bd084bd2d8..29b4487d05 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
-;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2015, 2016, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com>
@@ -3803,7 +3803,7 @@ automatically.")
 (define-public emacs-ivy
   (package
     (name "emacs-ivy")
-    (version "0.10.0")
+    (version "0.11.0")
     (source
      (origin
        (method git-fetch)
@@ -3813,7 +3813,7 @@ automatically.")
        (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "14vnigqb5c3yi4q9ysw1fiwdqyqwyklqpb9wnjf81chm7s2mshnr"))))
+         "009n8zjycs62cv4i1k9adbb284wz2w3r13xki2740sj34k683v13"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9a0d1e9b17..19050af1ed 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -406,15 +406,16 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
 (define-public mgba
   (package
     (name "mgba")
-    (version "0.6.3")
+    (version "0.7.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mgba-emu/mgba/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mgba-emu/mgba.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "16hgs6r5iym3lp2cjcnv9955333976yc5sgy2kkxlsi005n91j1m"))
+                "0s4dl4pi8rxqahvzxnh37xdgsfax36cn5wlh1srdcmabwsrfpb3w"))
               (modules '((guix build utils)))
               (snippet
                ;; Make sure we don't use the bundled software.
@@ -430,9 +431,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
      `(#:tests? #f                      ;no "test" target
        #:configure-flags
        (list "-DUSE_LZMA=OFF"           ;do not use bundled LZMA
-             "-DUSE_LIBZIP=OFF"         ;use "zlib" instead
-             (string-append "-DCMAKE_INSTALL_LIBDIR="
-                            (assoc-ref %outputs "out") "/lib"))))
+             "-DUSE_LIBZIP=OFF")))      ;use "zlib" instead
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("ffmpeg" ,ffmpeg)
               ("imagemagick" ,imagemagick)
@@ -1184,7 +1183,7 @@ play them on systems for which they were never designed!")
 (define-public mame
   (package
     (name "mame")
-    (version "0.205")
+    (version "0.206")
     (source
      (origin
        (method git-fetch)
@@ -1194,7 +1193,7 @@ play them on systems for which they were never designed!")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1q5z18rlmas598fxga8jr2d6xdngdzjab49xfy4hffdmlq624lw7"))
+         "0i01h5ars1yd96ndmzhk47931hf261m8frqz1ha7s2gy52f0q86y"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 9501e772fd..ea5dd885d1 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -420,7 +420,7 @@ featuring various improvements and bug fixes.")))
      ;; FIXME: with texlive-tiny citation references are rendered as question
      ;; marks.  During the build warnings like these are printed:
      ;; LaTeX Warning: Citation `nabors91' on page 2 undefined on input line 3.
-     `(("texlive" ,texlive-tiny)
+     `(("texlive" ,(texlive-union (list texlive-fonts-amsfonts)))
        ("ghostscript" ,ghostscript)))
     (arguments
      `(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
@@ -432,8 +432,7 @@ featuring various improvements and bug fixes.")))
        (modify-phases %standard-phases
          (add-after 'build 'make-doc
            (lambda _
-             (zero? (system* "make" "CC=gcc" "RM=rm" "SHELL=sh"
-                             "manual"))))
+             (invoke "make" "CC=gcc" "RM=rm" "SHELL=sh" "manual")))
          (add-before 'make-doc 'fix-doc
            (lambda _
              (substitute* "doc/Makefile" (("/bin/rm") (which "rm")))
@@ -474,13 +473,13 @@ featuring various improvements and bug fixes.")))
              (setenv "HOME" "/tmp")     ; FIXME: for texlive font cache
              (with-directory-excursion "doc"
                (and
-                (every (lambda (file)
-                         (zero? (system* "dvips" file "-o")))
-                       (find-files "." "\\.dvi"))
-                (every (lambda (file)
-                         (zero? (system* "ps2pdf" file)))
-                       '("mtt.ps" "ug.ps" "tcad.ps"))
-                (zero? (system* "make" "clean"))))))
+                (for-each (lambda (file)
+                            (invoke "dvips" file "-o"))
+                          (find-files "." "\\.dvi"))
+                (for-each (lambda (file)
+                            (invoke "ps2pdf" file))
+                          '("mtt.ps" "ug.ps" "tcad.ps"))
+                (invoke "make" "clean")))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 3fb284618b..07f36bba4e 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -70,6 +70,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
@@ -155,7 +156,9 @@
   #:use-module (guix build-system scons)
   #:use-module (guix build-system python)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system trivial))
+  #:use-module (guix build-system trivial)
+  #:use-module ((srfi srfi-1) #:hide (zip))
+  #:use-module (srfi srfi-26))
 
 (define-public armagetronad
   (package
@@ -337,14 +340,14 @@ and against the others like yourself, that want what you have.")
          (delete 'build)                ; nothing to be built
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
-             (zero? (system* "sh" "install.sh"
-                             (assoc-ref outputs "out")))))
+             (invoke "sh" "install.sh"
+                     (assoc-ref outputs "out"))))
          (delete 'check)
          (add-after 'install 'check
            (lambda* (#:key outputs #:allow-other-keys)
-             (zero? (system* (string-append (assoc-ref outputs "out")
-                                            "/bin/cowsay")
-                             "We're done!")))))))
+             (invoke (string-append (assoc-ref outputs "out")
+                                    "/bin/cowsay")
+                     "We're done!"))))))
     (inputs
      `(("perl" ,perl)))
     (home-page (string-append "https://web.archive.org/web/20071026043648/"
@@ -1364,9 +1367,8 @@ a C library, so they can easily be integrated into other programs.")
              ;; variables passed as arguments.
              (let ((out (assoc-ref outputs "out")))
                (setenv "CONFIG_SHELL" (which "bash"))
-               (zero?
-                (system* "./configure"
-                         (string-append "--prefix=" out)))))))))
+               (invoke "./configure"
+                       (string-append "--prefix=" out))))))))
     (inputs `(("ncurses" ,ncurses)))
     (home-page "http://www.asty.org/cmatrix")
     (synopsis "Simulate the display from \"The Matrix\"")
@@ -1535,61 +1537,6 @@ fully interactive graphical interface and it can load and save games in the
 Portable Game Notation.")
     (license license:gpl3+)))
 
-
-(define-public xboing
-  (package
-    (name "xboing")
-    (version "2.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://www.techrescue.org/xboing/xboing"
-                           version ".tar.gz"))
-       (sha256
-        (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))
-       (patches (search-patches "xboing-CVE-2004-0149.patch"))))
-    (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-
-             (substitute* "Imakefile"
-               (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
-                (string-append "XPMINCLUDE = -I"
-                               (assoc-ref %build-inputs "libxpm")
-                               "/include/X11")))
-
-             (substitute* "Imakefile"
-               (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
-
-             ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
-
-             (zero? (system* "xmkmf" "-a"
-                             (string-append "-DProjectRoot="
-                                            (assoc-ref outputs "out"))))))
-        (replace 'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (and
-             (zero? (system* "make" "install.man"))
-             (zero? (system* "make" "install"))))))))
-    (inputs `(("libx11" ,libx11)
-              ("libxext" ,libxext)
-              ("libxpm" ,libxpm)))
-    (native-inputs `(("imake" ,imake)
-                     ("inetutils" ,inetutils)
-                     ("makedepend" ,makedepend)))
-    (build-system gnu-build-system)
-    (home-page "http://www.techrescue.org/xboing")
-    (synopsis "Ball and paddle game")
-    (description "XBoing is a blockout type game where you have a paddle which
-you control to bounce a ball around the game zone destroying blocks with a
-proton ball.  Each block carries a different point value.  The more blocks you
-destroy, the better your score.  The person with the highest score wins.")
-    (license (license:x11-style "file://COPYING"
-                                "Very similar to the X11 licence."))))
-
 (define-public gtypist
   (package
     (name "gtypist")
@@ -2358,15 +2305,14 @@ world}, @uref{http://evolonline.org, Evol Online} and
                      #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
                    (lzo (assoc-ref inputs "lzo")))
-               (zero?
-                (apply system* "./configure"
-                       (string-append "--prefix=" out)
-                       ;; Provide the "lzo" path.
-                       (string-append "--with-liblzo2="
-                                      lzo "/lib/liblzo2.a")
-                       ;; Put the binary in 'bin' instead of 'games'.
-                       "--binary-dir=bin"
-                       configure-flags))))))))
+               (apply invoke "./configure"
+                      (string-append "--prefix=" out)
+                      ;; Provide the "lzo" path.
+                      (string-append "--with-liblzo2="
+                                     lzo "/lib/liblzo2.a")
+                      ;; Put the binary in 'bin' instead of 'games'.
+                      "--binary-dir=bin"
+                      configure-flags)))))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs
      `(("allegro" ,allegro)
@@ -4125,7 +4071,7 @@ over 100 user-created campaigns.")
          (add-before 'build 'build-kodilib
            (lambda* (#:key make-flags #:allow-other-keys)
              (with-directory-excursion "kodilib/linux"
-               (zero? (apply system* "make" make-flags)))))
+               (apply invoke "make" make-flags))))
          (add-after 'build-kodilib 'chdir
            (lambda _ (chdir "linux") #t))
          (replace 'install
@@ -4417,10 +4363,10 @@ shapes are arranged in a series of increasingly complex patterns, forming
              (let ((data (string-append (assoc-ref outputs "out")
                                         "/share/games/fillets-ng")))
                (mkdir-p data)
-               (zero? (system* "tar" "-xvf"
-                               (assoc-ref inputs "fillets-ng-data")
-                               "--strip-components=1"
-                               "-C" data))))))))
+               (invoke "tar" "-xvf"
+                       (assoc-ref inputs "fillets-ng-data")
+                       "--strip-components=1"
+                       "-C" data)))))))
     (inputs
      `(("sdl-union" ,(sdl-union (list sdl
                                       sdl-mixer
@@ -4502,10 +4448,10 @@ fish.  The whole game is accompanied by quiet, comforting music.")
              (setenv "HOME" (getcwd))
              ;; Fake a terminal for the test cases.
              (setenv "TERM" "xterm-256color")
-             (zero? (apply system* "make" "debug" "test"
-                           (format #f "-j~d" (parallel-job-count))
-                           ;; Force command line build for test cases.
-                           (append make-flags '("GAME=crawl" "TILES=")))))))))
+             (apply invoke "make" "debug" "test"
+                    (format #f "-j~d" (parallel-job-count))
+                    ;; Force command line build for test cases.
+                    (append make-flags '("GAME=crawl" "TILES="))))))))
     (synopsis "Roguelike dungeon crawler game")
     (description "Dungeon Crawl Stone Soup is a roguelike adventure through
 dungeons filled with dangerous monsters in a quest to find the mystifyingly
@@ -6021,3 +5967,136 @@ civilized than your own.")
                    license:cc-by-sa3.0
                    license:cc-by-sa4.0
                    license:public-domain))))
+
+(define-public stepmania
+  (package
+    (name "stepmania")
+    (version "5.1.0-b2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stepmania/stepmania.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove song files, which are licensed under a non-commercial
+           ;; clause, and a course pointing to them.
+           (for-each delete-file-recursively
+                     '("Songs/StepMania 5/Goin' Under"
+                       "Songs/StepMania 5/MechaTribe Assault"
+                       "Songs/StepMania 5/Springtime"))
+           (for-each delete-file '("Courses/Default/Jupiter.crs"
+                                   "Courses/Default/Jupiter.png"))
+           ;; Unbundle libpng.
+           (substitute* "extern/CMakeLists.txt"
+             (("include\\(CMakeProject-png.cmake\\)") ""))
+           (delete-file-recursively "extern/libpng")
+           #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;FIXME: couldn't find how to run tests
+       #:build-type "Release"
+       #:out-of-source? #f              ;for the 'install-desktop' phase
+       #:configure-flags
+       (list "-DWITH_SYSTEM_FFMPEG=1"
+             ;; SSE instructions are available on Intel systems only.
+             ,@(if (any (cute string-prefix? <> (or (%current-target-system)
+                                                    (%current-system)))
+                        '("x64_64" "i686"))
+                   '()
+                   '("-DWITH_SSE2=NO"))
+             ;; Configuration cannot find GTK2 without the two following
+             ;; flags.
+             (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
+                            (assoc-ref %build-inputs "gtk+")
+                            "/lib/gtk-2.0/include")
+             (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
+                            (assoc-ref %build-inputs "glib")
+                            "/lib/glib-2.0/include"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-install-subdir
+           ;; Installation would be done in "%out/stepmania-X.Y", but we
+           ;; prefer the more common layout "%out/share/stepmania".
+           (lambda _
+             (substitute* "src/CMakeLists.txt"
+               (("\"stepmania-.*?\"") "\"share/stepmania\""))
+             #t))
+         (add-after 'unpack 'unbundle-libpng
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/CMakeLists.txt"
+               (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
+                (string-append (assoc-ref inputs "libpng") "/include")))
+             #t))
+         (add-after 'install 'install-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (exe (string-append out "/share/stepmania/stepmania")))
+               (mkdir-p bin)
+               (symlink exe (string-append bin "/stepmania"))
+               #t)))
+         (add-after 'install-executable 'install-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (applications (string-append share "/applications"))
+                    (icons (string-append share "/icons")))
+               (install-file "stepmania.desktop" applications)
+               (mkdir-p icons)
+               (copy-recursively "icons" icons)
+               #t)))
+         ;; Move documentation in a more usual place, i.e.,
+         ;; "%out/share/doc/stepmania/".
+         (add-after 'install-desktop 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share")))
+               (with-directory-excursion share
+                 (mkdir-p "doc")
+                 (symlink "../stepmania/Docs" "doc/stepmania"))
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ;; Per upstream, StepMania is only guaranteed to work with a very
+       ;; specific FFmpeg version, which is included in the repository as
+       ;; a Git submodule.  This particular version requirement usually
+       ;; changes every few years.
+       ("ffmpeg" ,ffmpeg-for-stepmania)
+       ("glib" ,glib)
+       ("glew" ,glew)
+       ("gtk+" ,gtk+-2)
+       ("jsoncpp" ,jsoncpp)
+       ("libpng" ,libpng)
+       ("libjpeg" ,libjpeg-8)
+       ("libmad" ,libmad)
+       ("libogg" ,libogg)
+       ("libva" ,libva)
+       ("libvorbis" ,libvorbis)
+       ("libxinerama" ,libxinerama)
+       ("libxrandr" ,libxrandr)
+       ("mesa" ,mesa)
+       ("pcre" ,pcre)
+       ("pulseaudio" ,pulseaudio)
+       ("sdl" ,sdl2)
+       ("udev" ,eudev)
+       ("zlib" ,zlib)))
+    (synopsis "Advanced rhythm game designed for both home and arcade use")
+    (description "StepMania is a dance and rhythm game.  It features 3D
+graphics, keyboard and dance pad support, and an editor for creating your own
+steps.
+
+This package provides the core application, but no song is shipped.  You need
+to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
+    (home-page "https://www.stepmania.com")
+    (license license:expat)))
+
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index e3ba7c1bff..ef88510a2a 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
@@ -33,12 +33,17 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:use-module (guix monads)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cargo)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages glib)
@@ -559,56 +564,184 @@ security standards.")
     (sha256 (base32 hash))
     (file-name file-name)))
 
+(define* (computed-origin-method gexp-promise hash-algo hash
+                                 #:optional (name "source")
+                                 #:key (system (%current-system))
+                                 (guile (default-guile)))
+  "Return a derivation that executes the G-expression that results
+from forcing GEXP-PROMISE."
+  (mlet %store-monad ((guile (package->derivation guile system)))
+    (gexp->derivation (or name "computed-origin")
+                      (force gexp-promise)
+                      #:system system
+                      #:guile-for-build guile)))
+
+(define %icecat-version "60.5.0-guix1")
+
+;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
+;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
+;; script from the upstream IceCat project.
+(define icecat-source
+  (let* ((base-version (first (string-split %icecat-version #\-)))
+
+         (major-version (first  (string-split base-version #\.)))
+         (minor-version (second (string-split base-version #\.)))
+         (sub-version   (third  (string-split base-version #\.)))
+
+         (upstream-firefox-version (string-append base-version "esr"))
+         (upstream-firefox-source
+          (origin
+            (method url-fetch)
+            (uri (string-append
+                  "https://ftp.mozilla.org/pub/firefox/releases/"
+                  upstream-firefox-version "/source/"
+                  "firefox-" upstream-firefox-version ".source.tar.xz"))
+            (sha256
+             (base32
+              "09a0kk250r03984n1hdwr2rg1vmhi2jkyzzgbbvkf9h9hzp6j7qs"))))
+
+         (upstream-icecat-base-version "60.3.0") ; maybe older than base-version
+         (upstream-icecat-gnu-version "1")
+         (upstream-icecat-version (string-append upstream-icecat-base-version
+                                                 "-gnu"
+                                                 upstream-icecat-gnu-version))
+         (upstream-icecat-source
+          (origin
+            (method url-fetch)
+            (uri (string-append
+                  "mirror://gnu/gnuzilla/" upstream-icecat-base-version
+                  "/icecat-" upstream-icecat-version ".tar.bz2"))
+            (sha256
+             (base32
+              "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1"))))
+
+         (gnuzilla-commit (string-append "v" upstream-icecat-base-version))
+         (gnuzilla-source
+          (origin
+            (method git-fetch)
+            (uri (git-reference
+                  (url "git://git.savannah.gnu.org/gnuzilla.git")
+                  (commit gnuzilla-commit)))
+            (file-name (git-file-name "gnuzilla" upstream-icecat-base-version))
+            (sha256
+             (base32
+              "19wal7hkbb4wvk40hs6d7a5paal2bfday08hwssm02srcbv48fj0"))))
+
+         (makeicecat-patch
+          (local-file (search-patch "icecat-makeicecat.patch"))))
+
+    (origin
+      (method computed-origin-method)
+      (file-name (string-append "icecat-" %icecat-version ".tar.xz"))
+      (sha256 #f)
+      (uri
+       (delay
+        (with-imported-modules '((guix build utils))
+          #~(begin
+              (use-modules (guix build utils))
+              (let ((firefox-dir
+                     (string-append "firefox-" #$base-version))
+                    (icecat-dir
+                     (string-append "icecat-" #$%icecat-version))
+                    (old-icecat-dir
+                     (string-append "icecat-" #$upstream-icecat-base-version)))
+
+                (mkdir "/tmp/bin")
+                (set-path-environment-variable
+                 "PATH" '("bin")
+                 (list "/tmp"
+                       #+(canonical-package bash)
+                       #+(canonical-package coreutils)
+                       #+(canonical-package findutils)
+                       #+(canonical-package patch)
+                       #+(canonical-package xz)
+                       #+(canonical-package sed)
+                       #+(canonical-package grep)
+                       #+(canonical-package bzip2)
+                       #+(canonical-package gzip)
+                       #+(canonical-package tar)
+                       #+rename))
+
+                (symlink #+(file-append rename "/bin/rename")
+                         "/tmp/bin/prename")
+
+                ;; We copy the gnuzilla source directory because it is
+                ;; read-only in 'gnuzilla-source', and the makeicecat script
+                ;; uses "cp -a" to copy parts of it and assumes that the
+                ;; copies will be writable.
+                (copy-recursively #+gnuzilla-source "/tmp/gnuzilla"
+                                  #:log (%make-void-port "w"))
+
+                (with-directory-excursion "/tmp/gnuzilla"
+                  (make-file-writable "makeicecat")
+                  (invoke "patch" "--force" "--no-backup-if-mismatch"
+                          "-p1" "--input" #+makeicecat-patch)
+                  (patch-shebang "makeicecat")
+                  (substitute* "makeicecat"
+                    (("^FFMAJOR=.*")
+                     (string-append "FFMAJOR=" #$major-version "\n"))
+                    (("^FFMINOR=.*")
+                     (string-append "FFMINOR=" #$minor-version "\n"))
+                    (("^FFSUB=.*")
+                     (string-append "FFSUB=" #$sub-version "\n"))
+                    (("^GNUVERSION=.*")
+                     (string-append "GNUVERSION="
+                                    #$upstream-icecat-gnu-version "\n"))
+                    (("^DATA=.*")
+                     "DATA=/tmp/gnuzilla/data\n")
+                    (("^sed .* debian/" all)
+                     (string-append "echo warning: skipped: " all))
+                    (("^debian/rules " all)
+                     (string-append "echo warning: skipped: " all))
+                    (("^find extensions/gnu/ ")
+                     "find extensions/gnu/ | sort ")
+                    (("/bin/sed")
+                     #+(file-append (canonical-package sed) "/bin/sed"))))
+
+                (format #t "Unpacking upstream firefox tarball...~%")
+                (force-output)
+                (invoke "tar" "xf" #+upstream-firefox-source)
+                (rename-file firefox-dir icecat-dir)
+
+                (with-directory-excursion icecat-dir
+                  (for-each mkdir-p '("l10n" "debian/config"))
+                  (call-with-output-file "debian/control" (const #t))
+                  (format #t "Running makeicecat script...~%")
+                  (force-output)
+                  (invoke "bash" "/tmp/gnuzilla/makeicecat")
+                  (for-each delete-file-recursively '("l10n" "debian")))
+
+                (format #t (string-append "Unpacking l10n/* and debian/* from"
+                                          " upstream IceCat tarball...~%"))
+                (force-output)
+                (unless (string=? icecat-dir old-icecat-dir)
+                  (symlink icecat-dir old-icecat-dir))
+                (invoke "tar" "xf" #+upstream-icecat-source
+                        (string-append old-icecat-dir "/l10n")
+                        (string-append old-icecat-dir "/debian"))
+
+                (format #t (string-append "Packing new IceCat tarball...~%"))
+                (force-output)
+                (invoke "tar" "cfa" #$output
+                        ;; avoid non-determinism in the archive
+                        "--mtime=@0"
+                        "--owner=root:0"
+                        "--group=root:0"
+                        "--sort=name"
+                        icecat-dir)
+
+                #t))))))))
+
 (define-public icecat
   (package
     (name "icecat")
-    (version "60.3.0-gnu1")
+    (version %icecat-version)
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnu/gnuzilla/"
-                          (first (string-split version #\-))
-                          "/" name "-" version ".tar.bz2"))
-      (sha256
-       (base32
-        "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1"))
-      (patches
-       (list
-        (search-patch  "icecat-avoid-bundled-libraries.patch")
-        (search-patch  "icecat-use-system-graphite2+harfbuzz.patch")
-        (search-patch  "icecat-use-system-media-libs.patch")
-        (mozilla-patch "icecat-bug-1464061.patch"         "d28761dbff18" "1f58rzwx4s1af66fdwn9lgkcd1ksmq8kn8imvf78p90jqi24h7b4")
-        (mozilla-patch "icecat-bug-1479853.patch"         "4faeb696dd06" "12891xx9c15s6kby6d3zk64v5nqgaq7sw597zv1fkd3a6x69hlva")
-        (mozilla-patch "icecat-CVE-2018-17466.patch"      "12ba39f69876" "1piyq44f0xa0a9z2748aqwpaziaxwp61d86gyhalbyag8lcxfb3p")
-        (mozilla-patch "icecat-CVE-2018-18498.patch"      "a0adabeedf26" "0f5wazha3zxzhy2j8f93hx62l9p02b1p40vi07qah3ar67h4ccj9")
-        (mozilla-patch "icecat-CVE-2018-12405-pt01.patch" "19604eb26230" "1wqxgph4z14ijhk2j2m4av5p6gx72d02lzz83q6yy0k065kw8psb")
-        (mozilla-patch "icecat-CVE-2018-18492.patch"      "98737ab09270" "0fyl6wv0jxcxpkfpsff46y93k49n8lrw0k7c1p45g8da015dx27a")
-        (mozilla-patch "icecat-CVE-2018-18493.patch"      "1cf7d80355d5" "19jp4x32vyxam54d1r9fm7jwf6krhhf3xazfqmxb9aw4iwdil7dl")
-        (mozilla-patch "icecat-CVE-2018-12405-pt02.patch" "c264774b8913" "1hxyi131x8jwawrq90cgkph833iv9ixrdrgzl1r978gbzwq10xz2")
-        (mozilla-patch "icecat-bug-1477773.patch"         "ec13fda7c9b0" "0zj7aylgw55g0y7plaafn5gq8jwcsdr1bpdxacs0hq914nm8zy9z")
-        (mozilla-patch "icecat-CVE-2018-12405-pt03.patch" "5e1a9644aeef" "1qimrpgyrd8zkiri7w57j0aymk20y9b34am5w7rvr6qj1lhrbfla")
-        (mozilla-patch "icecat-bug-1485655.patch"         "9055726e2d89" "1pppxr94zqh6zmi2mn1ih21qap09vk5ivbhnwxqr8iszvygjg44g")
-        (mozilla-patch "icecat-bug-1410214.patch"         "9e641345e2ef" "0542xss2jdb8drh4g50cfy32l300x69dyywgx3dqs03vgr3qplxy")
-        (mozilla-patch "icecat-CVE-2018-12405-pt04.patch" "6398541ec302" "1c2yi7mkg3d5afxsgj9fp3zq8yhkmphrll5d60d5xsdv88kqqiyf")
-        (mozilla-patch "icecat-bug-1496736.patch"         "3bed863ee656" "038k7jk3yp16410crwfdvhyb2vis49c6bplrfr83v51885cqldar")
-        (mozilla-patch "icecat-bug-1498765.patch"         "a08c8493ba19" "0bwg4vg03j962lb9q8ihpiy4rmygykf1q9ij8x7h34q7hg43yjya")
-        (mozilla-patch "icecat-CVE-2018-12405-pt05.patch" "ee204e26690e" "1scs45xhlr1mwv6x2q6n22363f42by8cjmifqwzlikggs21f5mcq")
-        (mozilla-patch "icecat-bug-1507035.patch"         "cec8b58ab3fe" "1f131ibpkrhsa44l822hnm5qgvapbs3i9pj25iimdwvr933winz8")
-        (mozilla-patch "icecat-bug-1501680.patch"         "282c6bb81562" "1zgw7l5zmni8468y3f6cip1nlw63cfdd9vv9b00cbrgy96d1q2cp")
-        (mozilla-patch "icecat-bug-1500310.patch"         "b3a439a26186" "0mrjxcmrlv04fyl36dwxk97dw08g2hlikvw2hfa1l0y8zsc4bgw8")
-        (mozilla-patch "icecat-bug-1500366.patch"         "abd59256c4e3" "1jgwh2v4kwb6kf2h7mwf128w1k1jj119bfhlgqpmn9ami35wpzf3")
-        (mozilla-patch "icecat-bug-1493080.patch"         "a7cabf306d05" "1n7wv67rcaz8wj31jc77ssjdj3kb61gdg7pigj828c5z2cgns1k5")
-        (mozilla-patch "icecat-CVE-2018-12405-pt06.patch" "8bbf80948b50" "1nvc69zgz9nvbw1pwxkil1fx4cxxpr6bsjrpp6l2kv7jhgax1bqk")
-        (mozilla-patch "icecat-bug-1507564.patch"         "60619cc47b10" "09fanqr08kqgraw4xp7y2az4jc7ia8nn200rqjfj20vmkyjz97j3")
-        (mozilla-patch "icecat-bug-1507730.patch"         "dd0f01818b9c" "14ziq1bm72n58xrvsgzpjj5z6ifpvi70r5jfhbkbj69mf4y4cx2z")
-        (mozilla-patch "icecat-CVE-2018-12405-pt07.patch" "a73a46ddc848" "1bvvyav3xyn6rgn6haicinxn0dasl9dyc1i37fyb7wr5wcpahybs")
-        (mozilla-patch "icecat-CVE-2018-18494.patch"      "a72ec8e21577" "095zghmwdcbaid5426p9vpl757d8sfbsvgn201bjm7nhm03m4z7i")
-        (mozilla-patch "icecat-CVE-2018-12405-pt08.patch" "b6d0fc61fd0b" "0059avawxi4s4747plybjsjq8j2h4z7amw05p28xyg95a2njwnaa")
-        (mozilla-patch "icecat-bug-1499028.patch"         "a62ede2dd3bc" "0ikmnibni8bdvpr9p42wskyyic08vzqdz5qr028bqzyg5119gily")
-        (mozilla-patch "icecat-bug-1426574.patch"         "0db86656655b" "0kmccb4ccdzbzncwklx7w1bg7r61zwl2wnfp67vl27hm9xykbck7")
-        (mozilla-patch "icecat-CVE-2018-12405-pt09.patch" "20e31905de62" "0b5a441645wy3q4asaygvdq0inrxmxrh33cpgdp6ngflq9p2i6h0")
-        (mozilla-patch "icecat-CVE-2018-12405-pt10.patch" "c2832f98fe51" "0b4jfjfdyrihwjdfavd54hn9kdg2f017lmfr7mj2llp71flxwwj7")
-        (mozilla-patch "icecat-bug-1511495.patch"         "d428d2b8f585" "1f9xs0bjhbphvkv60cnvz34sr2rv38jzvi47wh3nablg41yjpdrk")))
+      (inherit icecat-source)
+      (patches (search-patches "icecat-avoid-bundled-libraries.patch"
+                               "icecat-use-system-graphite2+harfbuzz.patch"
+                               "icecat-use-system-media-libs.patch"))
       (modules '((guix build utils)))
       (snippet
        '(begin
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a571477ef2..e6269f526f 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -406,7 +406,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
   (package
     (inherit go-1.9)
     (name "go")
-    (version "1.11.4")
+    (version "1.11.5")
     (source
      (origin
        (method url-fetch)
@@ -414,11 +414,23 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                            name version ".src.tar.gz"))
        (sha256
         (base32
-         "05fvp8dq0yffsrvdyii4wgl756dn0xkgm5a80al7j7kb19r45zac"))))
+         "0gllmbjvp12iszwils8id78mvjxwviwf98lh2gdkb236n4mz07mw"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.9)
        ((#:phases phases)
         `(modify-phases ,phases
+           ;; XXX Work around the Go 1.11.5 tarbomb.
+           ;; <https://github.com/golang/go/issues/29906>
+           (add-after 'unpack 'tarbomb-workaround
+             (lambda _
+               (chdir "..")
+               (delete-file-recursively "gocache")
+               (delete-file-recursively "tmp")
+               #t))
+           (replace 'chdir
+             (lambda _
+               (chdir "go/src")
+               #t))
            (replace 'prebuild
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 5561e0d0df..b8377ff514 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -74,6 +74,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages cups)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
new file mode 100644
index 0000000000..5c6a6c7e0b
--- /dev/null
+++ b/gnu/packages/guile-xyz.scm
@@ -0,0 +1,1841 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
+;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
+;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
+;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
+;;; Copyright © 2017 David Thompson <davet@gnu.org>
+;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
+;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages guile-xyz)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages aspell)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages disk)
+  #:use-module (gnu packages ed)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages gperf)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages hurd)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages libunistring)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages man)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages slang)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system guile)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
+  #:use-module ((srfi srfi-1) #:select (alist-delete)))
+
+(define-public artanis
+  (let ((release "0.3.1")
+	(revision 0))
+    (package
+      (name "artanis")
+      (version (if (zero? revision)
+                   release
+                   (string-append release "-"
+                                  (number->string revision))))
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "mirror://gnu/artanis/artanis-"
+                                    release ".tar.gz"))
+                (file-name (string-append name "-" version ".tar.gz"))
+                (sha256
+                 (base32
+                  "0hqr5m3mb558bdhkc2sadmd9cbrhp3y525wx7cwirgy6i0zmay68"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    ;; Unbundle guile-redis and guile-json
+                    (delete-file-recursively "artanis/third-party/json.scm")
+                    (delete-file-recursively "artanis/third-party/json")
+                    (delete-file-recursively "artanis/third-party/redis.scm")
+                    (delete-file-recursively "artanis/third-party/redis")
+                    (substitute* '("artanis/artanis.scm"
+                                   "artanis/lpc.scm"
+                                   "artanis/oht.scm")
+                      (("(#:use-module \\()artanis third-party (json\\))" _
+                        use-module json)
+                       (string-append use-module json)))
+                    (substitute* '("artanis/lpc.scm"
+                                   "artanis/session.scm")
+                      (("(#:use-module \\()artanis third-party (redis\\))" _
+                        use-module redis)
+                       (string-append use-module redis)))
+                    (substitute* "artanis/oht.scm"
+                      (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
+                        _ pre json-string post)
+                       (string-append pre
+                                      "scm" json-string
+                                      post)))
+                    (substitute* "artanis/artanis.scm"
+                      (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
+                       ""))
+                    #t))))
+      (build-system gnu-build-system)
+      ;; FIXME the bundled csv contains one more exported procedure
+      ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
+      ;; projects.
+      ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
+      (inputs `(("guile" ,guile-2.2)
+                ("guile-json" ,guile-json)
+                ("guile-redis" ,guile-redis)))
+      (native-inputs `(("bash"       ,bash)         ;for the `source' builtin
+                       ("pkgconfig"  ,pkg-config)
+                       ("util-linux" ,util-linux))) ;for the `script' command
+      (arguments
+       '(#:make-flags
+         ;; TODO: The documentation must be built with the `docs' target.
+         (let* ((out (assoc-ref %outputs "out"))
+                (scm (string-append out "/share/guile/site/2.2"))
+                (go  (string-append out "/lib/guile/2.2/site-ccache")))
+           ;; Don't use (%site-dir) for site paths.
+           (list (string-append "MOD_PATH=" scm)
+                 (string-append "MOD_COMPILED_PATH=" go)))
+         #:test-target "test"
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'install 'substitute-root-dir
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out  (assoc-ref outputs "out")))
+                 (substitute* "Makefile"   ;ignore the execution of bash.bashrc
+                   ((" /etc/bash.bashrc") " /dev/null"))
+                 (substitute* "Makefile"   ;set the root of config files to OUT
+                   ((" /etc") (string-append " " out "/etc")))
+                 (mkdir-p (string-append out "/bin")) ;for the `art' executable
+                 #t)))
+           (add-after 'install 'wrap-art
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (scm (string-append out "/share/guile/site/2.2"))
+                      (go  (string-append out "/lib/guile/2.2/site-ccache")))
+                 (wrap-program (string-append bin "/art")
+                   `("GUILE_LOAD_PATH" ":" prefix (,scm))
+                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))
+                 #t))))))
+      (synopsis "Web application framework written in Guile")
+      (description "GNU Artanis is a web application framework written in Guile
+Scheme.  A web application framework (WAF) is a software framework that is
+designed to support the development of dynamic websites, web applications, web
+services and web resources.  The framework aims to alleviate the overhead
+associated with common activities performed in web development.  Artanis
+provides several tools for web development: database access, templating
+frameworks, session management, URL-remapping for RESTful, page caching, and
+more.")
+      (home-page "https://www.gnu.org/software/artanis/")
+      (license (list license:gpl3+ license:lgpl3+))))) ;dual license
+
+;; There has not been any release yet.
+(define-public guildhall
+  (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
+        (revision "1"))
+    (package
+      (name "guildhall")
+      (version (string-append "0-" revision "." (string-take commit 9)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ijp/guildhall.git")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           ;; Tests fail without this fix because they try to load the bash
+           ;; executable as a Scheme file.  See bug report at
+           ;; https://github.com/ijp/guildhall/issues/22
+           (add-after 'unpack 'fix-bug-22
+             (lambda _
+               (substitute* "Makefile.am"
+                 (("TESTS_ENVIRONMENT=.*")
+                  "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
+TEST_EXTENSIONS = .scm
+SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
+AM_SCM_LOG_FLAGS =  --no-auto-compile -s")
+                 ;; FIXME: one of the database tests fails for unknown
+                 ;; reasons.  It does not fail when run outside of Guix.
+                 (("tests/database.scm") ""))
+               #t)))))
+      (inputs
+       `(("guile" ,guile-2.0)))
+      (native-inputs
+       `(("zip" ,zip) ; for tests
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("texinfo" ,texinfo)))
+      (synopsis "Package manager for Guile")
+      (description
+       "Guildhall is a package manager written for Guile Scheme.  A guild is
+an association of independent craftspeople.  A guildhall is where they meet.
+This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
+to share code.
+
+On a practical level, Guildhall lets you share Scheme modules and programs
+over the internet, and install code that has been shared by others.  Guildhall
+can handle dependencies, so when a program requires several libraries, and
+each of those has further dependencies, all of the prerequisites for the
+program can be installed in one go.")
+      (home-page "https://github.com/ijp/guildhall")
+      (license license:gpl3+))))
+
+(define-public guile-aspell
+  (package
+    (name "guile-aspell")
+    (version "0.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://lonelycactus.com/tarball/guile_aspell-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'set-guilesitedir
+                    (lambda _
+                      (substitute* "Makefile.in"
+                        (("^guilesitedir =.*$")
+                         "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+                      #t))
+                  (add-before 'build 'set-libaspell-file-name
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((aspell (assoc-ref inputs "aspell")))
+                        (substitute* "aspell.scm"
+                          (("\"libaspell\\.so\"")
+                           (string-append "\"" aspell
+                                          "/lib/libaspell\"")))
+                        #t))))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("guile" ,guile-2.2)
+              ("aspell" ,aspell)))
+    (home-page "https://github.com/spk121/guile-aspell")
+    (synopsis "Spell-checking from Guile")
+    (description
+     "guile-aspell is a Guile Scheme library for comparing a string against a
+dictionary and suggesting spelling corrections.")
+    (license license:gpl3+)))
+
+(define-public guile-bash
+  ;; This project is currently retired.  It was initially announced here:
+  ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
+  (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
+        (revision "0"))
+    (package
+      (name "guile-bash")
+      (version (string-append "0.1.6-" revision "." (string-take commit 7)))
+      (home-page
+       "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (commit commit)
+                      (url home-page)))
+                (sha256
+                 (base32
+                  "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
+                (file-name (string-append name "-" version "-checkout"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:configure-flags
+         ;; Add -I to match 'bash.pc' of Bash 4.4.
+         (list (string-append "CPPFLAGS=-I"
+                              (assoc-ref %build-inputs "bash:include")
+                              "/include/bash/include")
+
+               ;; The '.a' file is useless.
+               "--disable-static"
+
+               ;; Install 'lib/bash' as Bash 4.4 expects.
+               (string-append "--libdir=" (assoc-ref %outputs "out")
+                              "/lib/bash"))))
+      (native-inputs `(("pkg-config" ,pkg-config)
+                       ("autoconf" ,autoconf-wrapper)
+                       ("automake" ,automake)
+                       ("libtool" ,libtool)
+                       ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
+                       ("gettext" ,gettext-minimal)
+
+                       ;; Bash with loadable module support, for the test
+                       ;; suite.
+                       ("bash-full" ,bash)))
+      (inputs `(("guile" ,guile-2.0)
+                ("bash:include" ,bash "include")))
+      (synopsis "Extend Bash using Guile")
+      (description
+       "Guile-Bash provides a shared library and set of Guile modules,
+allowing you to extend Bash in Scheme.  Scheme interfaces allow you to access
+the following aspects of Bash:
+
+@itemize
+@item aliases;
+@item setting and getting Bash variables;
+@item creating dynamic variables;
+@item creating Bash functions with a Scheme implementation;
+@item reader macro for output capturing;
+@item reader macro for evaluating raw Bash commands.
+@end itemize
+
+To enable it, run:
+
+@example
+enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
+@end example
+
+and then run @command{scm example.scm}.")
+      (license license:gpl3+))))
+
+(define-public guile-8sync
+  (package
+    (name "guile-8sync")
+    (version "0.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/8sync/8sync-" version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("guile" ,guile-2.2)
+                     ("pkg-config" ,pkg-config)
+                     ("texinfo" ,texinfo)))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'setenv
+                    (lambda _
+                      ;; quiet warnings
+                      (setenv "GUILE_AUTO_COMPILE" "0")
+                      #t)))))
+    (home-page "https://gnu.org/s/8sync/")
+    (synopsis "Asynchronous actor model library for Guile")
+    (description
+     "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
+library for GNU Guile based on the actor model.
+
+Note that 8sync is only available for Guile 2.2.")
+    (license license:lgpl3+)))
+
+(define-public guile-daemon
+  (package
+    (name "guile-daemon")
+    (version "0.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/alezost/" name
+                                  "/releases/download/v" version
+                                  "/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "https://github.com/alezost/guile-daemon")
+    (synopsis "Evaluate code in a running Guile process")
+    (description
+     "Guile-Daemon is a small Guile program that loads your initial
+configuration file, and then reads and evaluates Guile expressions that
+you send to a FIFO file.")
+    (license license:gpl3+)))
+
+(define-public guile-dsv
+  (package
+    (name "guile-dsv")
+    (version "0.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/artyom-poptsov/guile-dsv")
+                    (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d")))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)))
+    (inputs `(("guile" ,guile-2.2)))
+    (propagated-inputs `(("guile-lib" ,guile-lib)))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'set-guilesitedir
+                    (lambda _
+                      (substitute* "Makefile.in"
+                        (("^guilesitedir =.*$")
+                         "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+                      (substitute* "modules/Makefile.in"
+                        (("^guilesitedir =.*$")
+                         "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+                      (substitute* "modules/dsv/Makefile.in"
+                        (("^guilesitedir =.*$")
+                         "guilesitedir = \
+$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+                      #t)))))
+    (home-page "https://github.com/artyom-poptsov/guile-dsv")
+    (synopsis "DSV module for Guile")
+    (description
+     "Guile-DSV is a GNU Guile module for working with the
+delimiter-separated values (DSV) data format.  Guile-DSV supports the
+Unix-style DSV format and RFC 4180 format.")
+    (license license:gpl3+)))
+
+(define-public guile-fibers
+  (package
+    (name "guile-fibers")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'install 'mode-guile-objects
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; .go files are installed to "lib/guile/X.Y/cache".
+                      ;; This phase moves them to "…/site-ccache".
+                      (let* ((out (assoc-ref outputs "out"))
+                             (lib (string-append out "/lib/guile"))
+                             (old (car (find-files lib "^ccache$"
+                                                   #:directories? #t)))
+                             (new (string-append (dirname old)
+                                                 "/site-ccache")))
+                        (rename-file old new)
+                        #t))))))
+    (native-inputs
+     `(("texinfo" ,texinfo)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (synopsis "Lightweight concurrency facility for Guile")
+    (description
+     "Fibers is a Guile library that implements a a lightweight concurrency
+facility, inspired by systems like Concurrent ML, Go, and Erlang.  A fiber is
+like a \"goroutine\" from the Go language: a lightweight thread-like
+abstraction.  Systems built with Fibers can scale up to millions of concurrent
+fibers, tens of thousands of concurrent socket connections, and many parallel
+cores.  The Fibers library also provides Concurrent ML-like channels for
+communication between fibers.
+
+Note that Fibers makes use of some Guile 2.1/2.2-specific features and
+is not available for Guile 2.0.")
+    (home-page "https://github.com/wingo/fibers")
+    (license license:lgpl3+)))
+
+(define-public guile-syntax-highlight
+  (package
+    (name "guile-syntax-highlight")
+    (version "0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://files.dthompson.us/"
+                                  "guile-syntax-highlight/"
+                                  "guile-syntax-highlight-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (synopsis "General-purpose syntax highlighter for GNU Guile")
+    (description "Guile-syntax-highlight is a general-purpose syntax
+highlighting library for GNU Guile.  It can parse code written in various
+programming languages into a simple s-expression that can be converted to
+HTML (via SXML) or any other format for rendering.")
+    (home-page "http://dthompson.us/projects/guile-syntax-highlight.html")
+    (license license:lgpl3+)))
+
+(define-public guile-sjson
+  (package
+    (name "guile-sjson")
+    (version "0.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://dustycloud.org/misc/sjson-" version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "https://gitlab.com/dustyweb/guile-sjson")
+    (synopsis "S-expression based json reader/writer for Guile")
+    (description "guile-sjson is a json reader/writer for Guile.
+It has a nice, simple s-expression based syntax.")
+    (license license:lgpl3+)))
+
+(define-public guile-colorized
+  (package
+    (name "guile-colorized")
+    (version "0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/NalaGinrut/guile-colorized/"
+                                  "archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p"))))
+    (build-system guile-build-system)
+    (native-inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "https://github.com/NalaGinrut/guile-colorized")
+    (synopsis "Colorized REPL for Guile")
+    (description
+     "Guile-colorized provides you with a colorized REPL for GNU Guile.")
+    (license license:gpl3+)))
+
+(define-public guile-pfds
+  (package
+    (name "guile-pfds")
+    (version "0.3")
+    (home-page "https://github.com/ijp/pfds")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
+              (file-name (string-append name "-" version "-checkout"))))
+    (build-system guile-build-system)
+    (arguments
+     '(#:source-directory "src"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'move-files-around
+                    (lambda _
+                      ;; Move files under a pfds/ directory to reflect the
+                      ;; module hierarchy.
+                      (mkdir-p "src/pfds")
+                      (for-each (lambda (file)
+                                  (rename-file file
+                                               (string-append "src/pfds/"
+                                                              file)))
+                                '("bbtrees.sls"
+                                  "deques"
+                                  "deques.sls"
+                                  "dlists.sls"
+                                  "fingertrees.sls"
+                                  "hamts.sls"
+                                  "heaps.sls"
+                                  "private"
+                                  "psqs.sls"
+                                  "queues"
+                                  "queues.sls"
+                                  "sequences.sls"
+                                  "sets.sls"))
+
+                      ;; In Guile <= 2.2.4, there's no way to tell 'guild
+                      ;; compile' to accept the ".sls" extension.  So...
+                      (for-each (lambda (file)
+                                  (rename-file file
+                                               (string-append
+                                                (string-drop-right file 4)
+                                                ".scm")))
+                                (find-files "." "\\.sls$"))
+                      #t)))))
+    (native-inputs
+     `(("guile" ,guile-2.2)))
+    (synopsis "Purely functional data structures for Guile")
+    (description
+     "This package provides purely functional data structures written in R6RS
+Scheme and compiled for Guile.  It has been tested with Racket, Guile 2,
+Vicare Scheme and IronScheme.  Right now it contains:
+
+@itemize
+@item queues
+@item deques
+@item bbtrees
+@item sets
+@item dlists
+@item priority search queues (PSQs)
+@item finger trees
+@item sequences
+@item heaps
+@item hash array mapped tries (HAMTs).
+@end itemize\n")
+    (license license:bsd-3)))
+
+(define-public guile-aa-tree
+  (package
+    (name "guile-aa-tree")
+    (version "3.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
+    (build-system guile-build-system)
+    (native-inputs `(("guile" ,guile-2.2)))
+    ;; https://savannah.nongnu.org/projects/guile-aa-tree
+    (home-page "https://qlfiles.net/guile-aa-tree/")
+    (synopsis "AA tree data structure for Guile")
+    (description
+     "This package provides an implementation of @dfn{AA trees}, a
+self-balancing binary tree data structure, for Guile.  It ensure @math{O(log
+n)} worst case performance for core operations.  The module provides
+non-mutating insert, delete, and search operations, with support for
+convenient nested tree operations.")
+    (license license:gpl3+)))
+
+(define-public guile-simple-zmq
+  (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
+        (revision "3"))
+    (package
+      (name "guile-simple-zmq")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jerry40/guile-simple-zmq")
+               (commit commit)))
+         (sha256
+          (base32
+           "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
+         (file-name (git-file-name name version))))
+      (build-system guile-build-system)
+      (arguments
+       `(#:source-directory "src"
+         #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'set-libzmq-file-name
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "src/simple-zmq.scm"
+                          (("\\(dynamic-link \"libzmq\"\\)")
+                           (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
+                                   (assoc-ref inputs "zeromq"))))
+                        #t)))))
+      (native-inputs
+       `(("guile" ,guile-2.2)))
+      (inputs
+       `(("zeromq" ,zeromq)))
+      (home-page "https://github.com/jerry40/guile-simple-zmq")
+      (synopsis "Guile wrapper over ZeroMQ library")
+      (description
+       "This package provides a Guile programming interface to the ZeroMQ
+messaging library.")
+      (license license:gpl3+))))
+
+(define-public jupyter-guile-kernel
+  (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
+        (revision "1"))
+    (package
+      (name "jupyter-guile-kernel")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jerry40/guile-kernel")
+               (commit commit)))
+         (sha256
+          (base32
+           "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
+      (build-system guile-build-system)
+      (arguments
+       '(#:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'set-openssl-file-name
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        ;; Record the absolute file name of the 'openssl'
+                        ;; command.
+                        (substitute* "src/hmac.scm"
+                          (("openssl")
+                           (string-append (assoc-ref inputs "openssl")
+                                          "/bin/openssl")))
+                        #t))
+
+                    ;; XXX: The code uses 'include' to include its own source
+                    ;; files, and "-L src" isn't enough in this case.
+                    (add-before 'build 'chdir
+                      (lambda _ (chdir "src") #t))
+                    (add-after 'build 'chdir-back
+                      (lambda _ (chdir "..") #t))
+
+                    (add-after 'install 'install-kernel
+                      (lambda* (#:key inputs outputs #:allow-other-keys)
+                        (let* ((out   (assoc-ref outputs "out"))
+                               (json  (assoc-ref inputs "guile-json"))
+                               (zmq   (assoc-ref inputs "guile-simple-zmq"))
+                               (deps  (list json zmq))
+                               (dir   (string-append
+                                       out "/share/jupyter/kernels/guile"))
+                               (effective (target-guile-effective-version)))
+                          ;; Install kernel.
+                          (install-file "src/kernel.json" dir)
+
+                          ;; Fix hard-coded file name in the kernel.
+                          (substitute* (string-append dir "/kernel.json")
+                            (("/home/.*/guile-jupyter-kernel.scm")
+                             (string-append out "/share/guile/site/"
+                                            (target-guile-effective-version)
+                                            "/guile-jupyter-kernel.scm"))
+                            (("\"guile\"")
+                             (string-append "\"" (assoc-ref inputs "guile")
+                                            "/bin/guile\""))
+                            (("-s")
+                             ;; Add '-L' and '-C' flags so that the kernel
+                             ;; finds its dependencies.
+                             (let ((-L (map (lambda (item)
+                                              (string-append "\"" item
+                                                             "/share/guile/site/"
+                                                             effective "\""))
+                                            deps))
+                                   (-C (map (lambda (item)
+                                              (string-append "\"" item
+                                                             "/lib/guile/"
+                                                             effective
+                                                             "/site-ccache\""))
+                                            deps)))
+                              (string-append "--no-auto-compile\""
+                                             (string-join -L ", \"-L\", "
+                                                          'prefix)
+                                             (string-join -C ", \"-C\", "
+                                                          'prefix)
+                                             ", \"-s"))))
+                          #t))))))
+      (inputs
+       `(("openssl" ,openssl)
+         ("guile" ,guile-2.2)
+         ("guile-json" ,guile-json)
+         ("guile-simple-zmq" ,guile-simple-zmq)))
+      (synopsis "Guile kernel for the Jupyter Notebook")
+      (description
+       "This package provides a Guile 2.x kernel for the Jupyter Notebook.  It
+allows users to interact with the Guile REPL through Jupyter.")
+      (home-page "https://github.com/jerry40/guile-kernel")
+      (license license:gpl3+))))
+
+(define-public guile-sparql
+  (package
+   (name "guile-sparql")
+   (version "0.0.7")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append
+                  "https://github.com/roelj/guile-sparql/releases/download/"
+                  version "/guile-sparql-" version ".tar.gz"))
+            (sha256
+             (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
+   (build-system gnu-build-system)
+   (arguments `(#:tests? #f)) ; There are no tests.
+   (native-inputs
+    `(("pkg-config" ,pkg-config)))
+   (inputs
+    `(("guile" ,guile-2.2)))
+   (home-page "https://github.com/roelj/guile-sparql")
+   (synopsis "SPARQL module for Guile")
+   (description "This package provides the functionality to query a SPARQL
+endpoint.  Additionally, it provides an interface to write SPARQL queries
+using S-expressions.")
+   (license license:gpl3+)))
+
+(define-public guile-debbugs
+  (package
+    (name "guile-debbugs")
+    (version "0.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "16l8910p57im6s3j93xhdaqvgfy6ms5n97177mrch3y961z5hy0i"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile.in"
+                  (("^godir = (.*)/ccache" _ prefix)
+                   (string-append "godir = " prefix "/site-ccache"))))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("guile" ,guile-2.2)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
+    (synopsis "Guile interface to the Debbugs bug tracking service")
+    (description
+     "This package provides a Guile library to communicate with a Debbugs bug
+tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
+    (license license:gpl3+)))
+
+(define-public guile-email
+  (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
+        (revision "1"))
+    (package
+      (name "guile-email")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.systemreboot.net/guile-email")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)))
+      (inputs
+       `(("guile" ,guile-2.2)))
+      (home-page "https://git.systemreboot.net/guile-email")
+      (synopsis "Guile email parser")
+      (description "This package provides an email parser written in pure
+Guile.")
+      (license license:agpl3+))))
+
+(define-public guile-debbugs-next
+  (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
+        (revision "1"))
+    (package (inherit guile-debbugs)
+      (name "guile-debbugs")
+      (version (git-version "0.0.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.gnu.org/git/guile-debbugs.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("texinfo" ,texinfo)))
+      (inputs
+       `(("guile" ,guile-2.2)
+         ("guile-email" ,guile-email))))))
+
+;; There has not been any release yet.
+(define-public guile-newt
+  (let ((commit "80c1e9e71945f833386d1632b52573e59325804f")
+        (revision "4"))
+    (package
+      (name "guile-newt")
+      (version (string-append "0-" revision "." (string-take commit 9)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/mothacehe/guile-newt")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:make-flags
+         '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+      (inputs
+       `(("guile" ,guile-2.2)
+         ("newt" ,newt)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)))
+      (synopsis "Guile bindings to Newt")
+      (description
+       "This package provides bindings for Newt, a programming library for
+color text mode, widget based user interfaces.  The bindings are written in pure
+Scheme by using Guile’s foreign function interface.")
+      (home-page "https://gitlab.com/mothacehe/guile-newt")
+      (license license:gpl3+))))
+
+(define-public guile-mastodon
+  (package
+    (name "guile-mastodon")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://framagit.org/prouby/guile-mastodon.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)
+       ("gnutls" ,gnutls)
+       ("guile-json" ,guile-json)))
+    (home-page "https://framagit.org/prouby/guile-mastodon")
+    (synopsis "Guile Mastodon REST API module")
+    (description "This package provides Guile modules to access the
+@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
+microblogging service.")
+    (license license:gpl3+)))
+
+;; There has not been any release yet.
+(define-public guile-parted
+  (let ((commit "ea3f1a1f6844775fc59d3078d2a09c62ffb341b8")
+        (revision "0"))
+    (package
+      (name "guile-parted")
+      (version (string-append "0-" revision "." (string-take commit 9)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/mothacehe/guile-parted")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:make-flags
+         '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+      (inputs
+       `(("guile" ,guile-2.2)
+         ("parted" ,parted)))
+      (propagated-inputs
+       `(("guile-bytestructures" ,guile-bytestructures)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)))
+      (synopsis "Guile bindings to GNU Parted")
+      (description
+       "This package provides bindings for GNU Parted library, a C library
+allowing disk partition tables creation and manipulation. The bindings are
+written in pure Scheme by using Guile's foreign function interface.")
+      (home-page "https://gitlab.com/mothacehe/guile-parted")
+      (license license:gpl3+))))
+
+(define-public guile-xosd
+  (package
+    (name "guile-xosd")
+    (version "0.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/alezost/" name
+                                  "/releases/download/v" version
+                                  "/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxinerama" ,libxinerama)
+       ("xosd" ,xosd)))
+    (home-page "https://github.com/alezost/guile-xosd")
+    (synopsis "XOSD bindings for Guile")
+    (description
+     "Guile-XOSD provides Guile bindings for @code{libxosd},
+@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
+library}.")
+    (license license:gpl3+)))
+
+(define-public guile-dbi
+  (package
+    (name "guile-dbi")
+    (version "2.1.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://download.gna.org/guile-dbi/guile-dbi-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list (string-append
+              "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
+       #:make-flags
+       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib:"
+                            (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'patch-extension-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out     (assoc-ref outputs "out"))
+                    (dbi.scm (string-append
+                              out "/share/guile/site/2.2/dbi/dbi.scm"))
+                    (ext     (string-append out "/lib/libguile-dbi")))
+               (substitute* dbi.scm (("libguile-dbi") ext))
+               #t))))))
+    (inputs
+     `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files
+    (propagated-inputs
+     `(("guile" ,guile-2.2)))
+    (synopsis "Guile database abstraction layer")
+    (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
+    (description
+     "guile-dbi is a library for Guile that provides a convenient interface to
+SQL databases.  Database programming with guile-dbi is generic in that the same
+programming interface is presented regardless of which database system is used.
+It currently supports MySQL, Postgres and SQLite3.")
+    (license license:gpl2+)))
+
+(define guile-dbi-bootstrap
+  (package
+    (inherit guile-dbi)
+    (name "guile-dbi-bootstrap")
+    (inputs '())
+    (arguments
+     (substitute-keyword-arguments (package-arguments guile-dbi)
+       ((#:make-flags _) '(list))))))
+
+(define-public guile-dbd-sqlite3
+  (package
+    (name "guile-dbd-sqlite3")
+    (version "2.1.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("zlib" ,(@ (gnu packages compression) zlib))))
+    (synopsis "Guile DBI driver for SQLite")
+    (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
+    (description
+     "guile-dbi is a library for Guile that provides a convenient interface to
+SQL databases.  This package implements the interface for SQLite.")
+    (license license:gpl2+)))
+
+(define-public guile-config
+  (package
+    (name "guile-config")
+    (version "0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/a-sassmannshausen/guile-config")
+             (commit "ce12de3f438c6b2b59c43ee21bcd58251835fdf3")))
+       (file-name "guile-config-0.3-checkout")
+       (sha256 (base32 "02zbpin0r9m2vxmr7mv68v3xdn247dcck56kbzjn0gj4c2rhih85"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)))
+    (inputs `(("guile" ,guile-2.2)))
+    (synopsis
+     "Guile application configuration parsing library.")
+    (description
+     "Guile Config is a library providing a declarative approach to
+application configuration specification.  The library provides clean
+configuration declaration forms, and processors that take care of:
+configuration file creation; configuration file parsing; command-line
+parameter parsing using getopt-long; basic GNU command-line parameter
+generation (--help, --usage, --version); automatic output generation for the
+above command-line parameters.")
+    (home-page
+     "https://gitlab.com/a-sassmannshausen/guile-config")
+    (license license:gpl3+)))
+
+(define-public guile-hall
+  (package
+    (name "guile-hall")
+    (version "0.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/a-sassmannshausen/guile-hall")
+             (commit "7d1094a12fe917209ce5b76c681cc8c862d4c65b")))
+       (file-name "guile-hall-0.1.1-checkout")
+       (sha256
+        (base32
+         "03kb09cjca98hlbx9mj12mqinzsnnvp6ci6i975n88pjhaxigyp1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules
+       ((ice-9 match)
+        (ice-9 ftw)
+        ,@%gnu-build-system-modules)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'hall-wrap-binaries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (bin  (string-append out "/bin/"))
+                    (site (string-append out "/share/guile/site"))
+                    (config (assoc-ref inputs "guile-config")))
+               (match (scandir site)
+                 (("." ".." version)
+                  (let ((modules (string-append site "/" version))
+                        (compiled-modules (string-append
+                                           out "/lib/guile/" version
+                                           "/site-ccache")))
+                    (wrap-program (string-append bin "hall")
+                      `("GUILE_LOAD_PATH" ":" prefix
+                        (,modules
+                         ,(string-append config
+                                         "/share/guile/site/"
+                                         version)))
+                      `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                        (,compiled-modules
+                         ,(string-append config "/lib/guile/"
+                                         version
+                                         "/site-ccache"))))
+                    #t)))))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)))
+    (inputs `(("guile" ,guile-2.2)))
+    (propagated-inputs
+     `(("guile-config" ,guile-config)))
+    (synopsis "Guile project tooling")
+    (description
+     "Hall is a command-line application and a set of Guile libraries that
+allow you to quickly create and publish Guile projects.  It allows you to
+transparently support the GNU build system, manage a project hierarchy &
+provides tight coupling to Guix.")
+    (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
+    (license license:gpl3+)))
+
+(define-public guile-ics
+  (package
+    (name "guile-ics")
+    (version "0.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/artyom-poptsov/guile-ics")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf-wrapper)
+       ("automake" ,automake)
+       ("texinfo" ,texinfo)
+       ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
+       ("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)))
+    (inputs `(("guile" ,guile-2.2) ("which" ,which)))
+    (propagated-inputs `(("guile-lib" ,guile-lib)))
+    (home-page "https://github.com/artyom-poptsov/guile-ics")
+    (synopsis "Guile parser library for the iCalendar format")
+    (description
+     "Guile-ICS is an iCalendar (RFC5545) format parser library written in
+pure Scheme.  The library can be used to read and write iCalendar data.
+
+The library is shipped with documentation in Info format and usage examples.")
+    (license license:gpl3+)))
+
+(define-public guile-wisp
+  (package
+    (name "guile-wisp")
+    (version "0.9.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://bitbucket.org/ArneBab/"
+                                  "wisp/downloads/wisp-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1xa0f0fvcrimqap50azv5872bfx8jbhc6baxa1prpbwcksbh8gdz"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 rdelim)
+                  (ice-9 popen))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-/usr/bin/env
+           (lambda _
+             (substitute* "Makefile.in"
+               (("/usr/bin/env bash") (which "bash"))
+               (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
+                "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
+             #t))
+         ;; auto compilation breaks, but if we set HOME to /tmp,
+         ;; that works ok
+         (add-before 'check 'auto-compile-hacky-workaround
+           (lambda _ (setenv "HOME" "/tmp") #t))
+         (add-after 'install 'install-go-files
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (effective (read-line
+                                (open-pipe* OPEN_READ
+                                            "guile" "-c"
+                                            "(display (effective-version))")))
+                    (module-dir (string-append out "/share/guile/site/"
+                                               effective))
+                    (object-dir (string-append out "/lib/guile/" effective
+                                               "/site-ccache"))
+                    (prefix     (string-length module-dir)))
+               ;; compile to the destination
+               (for-each (lambda (file)
+                           (let* ((base (string-drop (string-drop-right file 4)
+                                                     prefix))
+                                  (go   (string-append object-dir base ".go")))
+                             (invoke "guild" "compile" "-L" module-dir
+                                     file "-o" go)))
+                         (find-files module-dir "\\.scm$"))
+               #t))))))
+    (home-page "https://draketo.de/english/wisp")
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (native-inputs
+     `(("python" ,python)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Whitespace to lisp syntax for Guile")
+    (description "Wisp is a syntax for Guile which provides a Python-like
+whitespace-significant language.  It may be easier on the eyes for some
+users and in some situations.")
+    (license license:gpl3+)))
+
+(define-public guile-sly
+  (package
+    (name "guile-sly")
+    (version "0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://files.dthompson.us/sly/sly-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (substitute* "configure"
+                    (("_guile_required_version=\"2.0.11\"")
+                     "_guile_required_version=\"2\"")
+                    (("ac_subst_vars='")
+                     "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
+                  (substitute* (find-files "." "Makefile.in")
+                    (("moddir = .*$")
+                     (string-append
+                      "moddir = "
+                      "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
+                    (("godir = .*$")
+                     (string-append
+                      "godir = "
+                      "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
+                  #t))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list (string-append "--with-libfreeimage-prefix="
+                            (assoc-ref %build-inputs "freeimage"))
+             (string-append "--with-libgslcblas-prefix="
+                            (assoc-ref %build-inputs "gsl")))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("guile-sdl" ,guile-sdl)
+       ("guile-opengl" ,guile-opengl)))
+    (inputs
+     `(("guile" ,guile-2.2)
+       ("gsl" ,gsl)
+       ("freeimage" ,freeimage)
+       ("mesa" ,mesa)))
+    (synopsis "2D/3D game engine for GNU Guile")
+    (description "Sly is a 2D/3D game engine written in Guile Scheme.  Sly
+features a functional reactive programming interface and live coding
+capabilities.")
+    (home-page "https://dthompson.us/projects/sly.html")
+    (license license:gpl3+)))
+
+(define-public g-wrap
+  (package
+    (name "g-wrap")
+    (version "1.9.15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("guile" ,guile-2.2)
+       ("guile-lib" ,guile-lib)))
+    (inputs
+     `(("libffi" ,libffi)))
+    (arguments
+     `(#:configure-flags '("--disable-Werror")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* (find-files "." "^Makefile.in$")
+                 (("guilemoduledir =.*guile/site" all)
+                  (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
+               #t))))))
+    (synopsis "Generate C bindings for Guile")
+    (description "G-Wrap is a tool and Guile library for generating function
+wrappers for inter-language calls.  It currently only supports generating Guile
+wrappers for C functions.  Given a definition of the types and prototypes for
+a given C interface, G-Wrap will automatically generate the C code that
+provides access to that interface and its types from the Scheme level.")
+    (home-page "https://www.nongnu.org/g-wrap/index.html")
+    (license license:lgpl2.1+)))
+
+(define-public guile-miniadapton
+  (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
+        (revision "1"))
+    (package
+      (name "guile-miniadapton")
+      (version (string-append "0-" revision "." (string-take commit 9)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/fisherdj/miniAdapton.git")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
+      (build-system guile-build-system)
+      (native-inputs
+       `(("guile" ,guile-2.2)))
+      (home-page "https://github.com/fisherdj/miniAdapton")
+      (synopsis "Minimal implementation of incremental computation in Guile
+Scheme")
+      (description "This package provides a complete Scheme implementation of
+miniAdapton, which implements the core functionality of the Adapton system for
+incremental computation (also known as self-adjusting computation).  Like
+Adapton, miniAdapton allows programmers to safely combine mutation and
+memoization.  miniAdapton is built on top of an even simpler system,
+microAdapton.  Both miniAdapton and microAdapton are designed to be easy to
+understand, extend, and port to host languages other than Scheme.")
+      (license license:expat))))
+
+(define-public guile-reader
+  (package
+    (name "guile-reader")
+    (version "0.6.2")
+    (source  (origin
+               (method url-fetch)
+               (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
+                                   version ".tar.gz"))
+               (sha256
+                (base32
+                 "0592s2s8ampqmqwilc4fvcild6rb9gy79di6vxv5kcdmv23abkgx"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkgconfig" ,pkg-config)
+                     ("gperf" ,gperf-3.0)))
+    (inputs `(("guile" ,guile-2.2)))
+    (synopsis "Framework for building readers for GNU Guile")
+    (description
+     "Guile-Reader is a simple framework for building readers for GNU Guile.
+
+The idea is to make it easy to build procedures that extend Guile’s read
+procedure.  Readers supporting various syntax variants can easily be written,
+possibly by re-using existing “token readers” of a standard Scheme
+readers.  For example, it is used to implement Skribilo’s R5RS-derived
+document syntax.
+
+Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
+hopefully more powerful and flexible (for instance, one may instantiate as
+many readers as needed).")
+    (home-page "https://www.nongnu.org/guile-reader/")
+    (license license:gpl3+)))
+
+(define-public guile2.2-reader
+  (deprecated-package "guile2.2-reader" guile-reader))
+
+(define-public guile-ncurses
+  (package
+    (name "guile-ncurses")
+    (version "2.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
+                                 version ".tar.gz"))
+             (sha256
+              (base32
+               "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f"))))
+    (build-system gnu-build-system)
+    (inputs `(("ncurses" ,ncurses)
+              ("guile" ,guile-2.2)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (arguments
+     '(#:configure-flags (list "--with-ncursesw"  ; Unicode support
+                               "--with-gnu-filesystem-hierarchy")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-libguile-ncurses-file-name
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "make" "install"
+                     "-C" "src/ncurses"
+                     "-j" (number->string
+                           (parallel-job-count)))
+             (let* ((out   (assoc-ref outputs "out"))
+                    (dir   "src/ncurses")
+                    (files (find-files dir ".scm")))
+               (substitute* files
+                 (("\"libguile-ncurses\"")
+                  (format #f "\"~a/lib/guile/2.2/libguile-ncurses\""
+                          out)))
+               #t))))))
+    (home-page "https://www.gnu.org/software/guile-ncurses/")
+    (synopsis "Guile bindings to ncurses")
+    (description
+     "guile-ncurses provides Guile language bindings for the ncurses
+library.")
+    (license license:lgpl3+)))
+
+(define-public guile-ncurses/gpm
+  (package
+    (inherit guile-ncurses)
+    (name "guile-ncurses-with-gpm")
+    (inputs `(("ncurses" ,ncurses/gpm)
+              ("guile" ,guile-2.2)))))
+
+(define-public guile-lib
+  (package
+    (name "guile-lib")
+    (version "0.2.6.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags
+       '("GUILE_AUTO_COMPILE=0")        ; to prevent guild errors
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-module-dir
+           (lambda _
+             (substitute* "src/Makefile.in"
+               (("^moddir = ([[:graph:]]+)")
+                "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
+               (("^godir = ([[:graph:]]+)")
+                "godir = \
+$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
+             #t)))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("guile" ,guile-2.2)))
+    (home-page "https://www.nongnu.org/guile-lib/")
+    (synopsis "Collection of useful Guile Scheme modules")
+    (description
+     "Guile-Lib is intended as an accumulation place for pure-scheme Guile
+modules, allowing for people to cooperate integrating their generic Guile
+modules into a coherent library.  Think \"a down-scaled, limited-scope CPAN
+for Guile\".")
+
+    ;; The whole is under GPLv3+, but some modules are under laxer
+    ;; distribution terms such as LGPL and public domain.  See `COPYING' for
+    ;; details.
+    (license license:gpl3+)))
+
+(define-public guile2.0-lib
+  (package
+    (inherit guile-lib)
+    (name "guile2.0-lib")
+    (inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-lib
+  (deprecated-package "guile2.2-lib" guile-lib))
+
+(define-public guile-minikanren
+  (package
+    (name "guile-minikanren")
+    (version "20150424.e844d85")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ijp/minikanren.git")
+                    (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
+    (build-system guile-build-system)
+    (native-inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "https://github.com/ijp/minikanren")
+    (synopsis "MiniKanren declarative logic system, packaged for Guile")
+    (description
+     "MiniKanren is a relational programming extension to the Scheme
+programming Language, written as a smaller version of Kanren suitable for
+pedagogical purposes.  It is featured in the book, The Reasoned Schemer,
+written by Dan Friedman, William Byrd, and Oleg Kiselyov.
+
+This is Ian Price's r6rs packaged version of miniKanren, which deviates
+slightly from miniKanren mainline.
+
+See http://minikanren.org/ for more on miniKanren generally.")
+    (license license:expat)))
+
+(define-public guile2.0-minikanren
+  (package
+    (inherit guile-minikanren)
+    (name "guile2.0-minikanren")
+    (native-inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-minikanren
+  (deprecated-package "guile2.2-minikanren" guile-minikanren))
+
+(define-public guile-irregex
+  (package
+    (name "guile-irregex")
+    (version "0.9.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://synthcode.com/scheme/irregex/irregex-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
+    (build-system guile-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'move-files-around
+                    (lambda _
+                      ;; Move the relevant source files to src/ and create the
+                      ;; rx/ directory to match the expected module hierarchy.
+                      (mkdir-p "src/rx/source")
+                      (rename-file "irregex-guile.scm"
+                                   "src/rx/irregex.scm")
+                      (rename-file "irregex.scm"
+                                   "src/rx/source/irregex.scm")
+                      ;; Not really reachable via guile's packaging system,
+                      ;; but nice to have around.
+                      (rename-file "irregex-utils.scm"
+                                   "src/rx/source/irregex-utils.scm")
+                      #t)))
+       #:source-directory "src"))
+    (native-inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "http://synthcode.com/scheme/irregex")
+    (synopsis "S-expression based regular expressions")
+    (description
+     "Irregex is an s-expression based alternative to your classic
+string-based regular expressions.  It implements SRFI 115 and is deeply
+inspired by the SCSH regular expression system.")
+    (license license:bsd-3)))
+
+(define-public guile2.0-irregex
+  (package
+    (inherit guile-irregex)
+    (name "guile2.0-irregex")
+    (native-inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-irregex
+  (deprecated-package "guile2.2-irregex" guile-irregex))
+
+(define-public haunt
+  (package
+    (name "haunt")
+    (version "0.2.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://files.dthompson.us/haunt/haunt-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((ice-9 match) (ice-9 ftw)
+                  ,@%gnu-build-system-modules)
+       #:tests? #f ; test suite is non-deterministic :(
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'wrap-haunt
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      ;; Wrap the 'haunt' command to refer to the right
+                      ;; modules.
+                      (let* ((out  (assoc-ref outputs "out"))
+                             (bin  (string-append out "/bin"))
+                             (site (string-append
+                                    out "/share/guile/site"))
+                             (deps (list (assoc-ref inputs "guile-reader")
+                                         (assoc-ref inputs "guile-commonmark"))))
+                        (match (scandir site)
+                          (("." ".." version)
+                           (let ((modules (string-append site "/" version))
+                                 (compiled-modules (string-append
+                                                    out "/lib/guile/" version
+                                                    "/site-ccache")))
+                             (wrap-program (string-append bin "/haunt")
+                               `("GUILE_LOAD_PATH" ":" prefix
+                                 (,modules
+                                  ,@(map (lambda (dep)
+                                           (string-append dep
+                                                          "/share/guile/site/"
+                                                          version))
+                                         deps)))
+                               `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                                 (,compiled-modules
+                                  ,@(map (lambda (dep)
+                                           (string-append dep "/lib/guile/"
+                                                          version
+                                                          "/site-ccache"))
+                                         deps))))
+                             #t)))))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (propagated-inputs
+     `(("guile-reader" ,guile-reader)
+       ("guile-commonmark" ,guile-commonmark)))
+    (synopsis "Functional static site generator")
+    (description "Haunt is a static site generator written in Guile
+Scheme.  Haunt features a functional build system and an extensible
+interface for reading articles in any format.")
+    (home-page "http://haunt.dthompson.us")
+    (license license:gpl3+)))
+
+(define-public guile2.0-haunt
+  (package
+    (inherit haunt)
+    (name "guile2.0-haunt")
+    (inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-haunt
+  (deprecated-package "guile2.2-haunt" haunt))
+
+(define-public guile-redis
+  (package
+    (name "guile-redis")
+    (version "1.0.0")
+    (home-page "https://github.com/aconchillo/guile-redis")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "/archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "1dp5fmqvma59pvp1nfpq6hqgbmjici8sd1y8llahl87fynw1dvr9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("guile" ,guile-2.2)))
+    (synopsis "Redis client library for Guile")
+    (description "Guile-redis provides a Scheme interface to the Redis
+key-value cache and store.")
+    (license license:lgpl3+)))
+
+(define-public guile2.0-redis
+  (package
+    (inherit guile-redis)
+    (name "guile2.0-redis")
+    (native-inputs `(("guile" ,guile-2.0)
+                     ,@(alist-delete "guile"
+                                     (package-native-inputs guile-redis))))))
+
+(define-public guile2.2-redis
+  (deprecated-package "guile2.2-redis" guile-redis))
+
+(define-public guile-commonmark
+  (package
+    (name "guile-commonmark")
+    (version "0.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/OrangeShark/" name
+                                  "/releases/download/v" version
+                                  "/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "CommonMark parser for Guile")
+    (description
+     "guile-commonmark is a library for parsing CommonMark, a fully specified
+variant of Markdown.  The library is written in Guile Scheme and is designed
+to transform a CommonMark document to SXML.  guile-commonmark tries to closely
+follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
+is no support for parsing block and inline level HTML.")
+    (home-page "https://github.com/OrangeShark/guile-commonmark")
+    (license license:lgpl3+)))
+
+(define-public guile2.0-commonmark
+  (package
+    (inherit guile-commonmark)
+    (name "guile2.0-commonmark")
+    (inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-commonmark
+  (deprecated-package "guile2.2-commonmark" guile-commonmark))
+
+(define-public mcron
+  (package
+    (name "mcron")
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/mcron/mcron-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4"))))
+    (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):
+                      ;; <https://lists.gnu.org/archive/html/bug-mcron/2018-04/msg00005.html>.
+                      (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"
+                        ;; (getpw) fails with "entry not found" in the build
+                        ;; environment, so pass an argument.
+                        (("\\(getpw\\)")
+                         "(getpwnam (getuid))")
+                        ;; The build environment lacks an entry for root in
+                        ;; /etc/passwd.
+                        (("\\(getpw 0\\)")
+                         "(getpwnam \"nobody\")")
+
+                        ;; FIXME: Skip the 4 faulty tests (see above).
+                        (("\\(test-equal \"next-year\"" all)
+                         (string-append "(test-skip 4)\n" all)))
+                      #t)))))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("tzdata" ,tzdata-for-tests)))
+    (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
+    (home-page "https://www.gnu.org/software/mcron/")
+    (synopsis "Run jobs at scheduled times")
+    (description
+     "GNU Mcron is a complete replacement for Vixie cron.  It is used to run
+tasks on a schedule, such as every hour or every Monday.  Mcron is written in
+Guile, so its configuration can be written in Scheme; the original cron
+format is also supported.")
+    (license license:gpl3+)))
+
+(define-public mcron2
+  ;; This was mthl's mcron development branch, and it became mcron 1.1.
+  (deprecated-package "mcron2" mcron))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 98221a83eb..eb32e596d3 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1,25 +1,20 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
+;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
-;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
-;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
-;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2017 David Thompson <davet@gnu.org>
-;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Amirouche <amirouche@hypermove.net>
+;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2019 Taylan Kammer <taylan.kammer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,48 +34,31 @@
 (define-module (gnu packages guile)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
-  #:use-module (gnu packages aspell)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages dbm)
-  #:use-module (gnu packages disk)
-  #:use-module (gnu packages ed)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages gl)
-  #:use-module (gnu packages gperf)
   #:use-module (gnu packages hurd)
-  #:use-module (gnu packages image)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libunistring)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages m4)
-  #:use-module (gnu packages man)
-  #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
-  #:use-module (gnu packages sdl)
-  #:use-module (gnu packages slang)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages xorg)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system guile)
-  #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (ice-9 match)
   #:use-module ((srfi srfi-1) #:prefix srfi-1:))
@@ -410,15 +388,10 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
                                     (string-length "guile-")))
         name)))
 
-(define package-for-guile-2.2
-  ;; A procedure that rewrites the dependency tree of the given package to use
-  ;; GUILE-2.2 instead of GUILE-2.0.
-  (package-input-rewriting `((,guile-2.0 . ,guile-2.2))
-                           (guile-variant-package-name "guile2.2")))
-
 (define package-for-guile-2.0
-  ;; Likewise, but the other way around.  :-)
-  (package-input-rewriting `((,guile-2.2 . ,guile-2.0))
+  ;; A procedure that rewrites the dependency tree of the given package to use
+  ;; GUILE-2.0 instead of GUILE-2.2.
+  (package-input-rewriting (delay `((,guile-2.2 . ,guile-2.0)))
                            (guile-variant-package-name "guile2.0")))
 
 (define-public guile-for-guile-emacs
@@ -435,20 +408,10 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
                (base32
                 "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0"))))
     (arguments
-     (substitute-keyword-arguments `(;; Tests aren't passing for now.
-                                     ;; Obviously we should re-enable this!
-                                     #:tests? #f
-                                     ,@(package-arguments guile-2.2))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'autogen
-                      (lambda _
-                        (zero? (system* "sh" "autogen.sh"))))
-           (add-before 'autogen 'patch-/bin/sh
-                       (lambda _
-                         (substitute* "build-aux/git-version-gen"
-                           (("#!/bin/sh") (string-append "#!" (which "sh"))))
-                         #t))))))
+     `(;; Tests aren't passing for now.
+       ;; Obviously we should re-enable this!
+       #:tests? #f
+       ,@(package-arguments guile-2.2)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -467,445 +430,11 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
             (files '("lib/guile/2.0/site-ccache"
                      "share/guile/site/2.0")))))))
 
-;; There has not been any release yet.
-(define-public guildhall
-  (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
-        (revision "1"))
-    (package
-      (name "guildhall")
-      (version (string-append "0-" revision "." (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/ijp/guildhall.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           ;; Tests fail without this fix because they try to load the bash
-           ;; executable as a Scheme file.  See bug report at
-           ;; https://github.com/ijp/guildhall/issues/22
-           (add-after 'unpack 'fix-bug-22
-             (lambda _
-               (substitute* "Makefile.am"
-                 (("TESTS_ENVIRONMENT=.*")
-                  "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
-TEST_EXTENSIONS = .scm
-SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
-AM_SCM_LOG_FLAGS =  --no-auto-compile -s")
-                 ;; FIXME: one of the database tests fails for unknown
-                 ;; reasons.  It does not fail when run outside of Guix.
-                 (("tests/database.scm") ""))
-               #t)))))
-      (inputs
-       `(("guile" ,guile-2.0)))
-      (native-inputs
-       `(("zip" ,zip) ; for tests
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("texinfo" ,texinfo)))
-      (synopsis "Package manager for Guile")
-      (description
-       "Guildhall is a package manager written for Guile Scheme.  A guild is
-an association of independent craftspeople.  A guildhall is where they meet.
-This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
-to share code.
-
-On a practical level, Guildhall lets you share Scheme modules and programs
-over the internet, and install code that has been shared by others.  Guildhall
-can handle dependencies, so when a program requires several libraries, and
-each of those has further dependencies, all of the prerequisites for the
-program can be installed in one go.")
-      (home-page "https://github.com/ijp/guildhall")
-      (license license:gpl3+))))
-
 
 ;;;
 ;;; Extensions.
 ;;;
 
-(define-public artanis
-  (let ((release "0.2.1")
-	(revision 3))
-    (package
-      (name "artanis")
-      (version (if (zero? revision)
-                   release
-                   (string-append release "-"
-                                  (number->string revision))))
-      (source (origin
-                (method url-fetch)
-                (uri (string-append "mirror://gnu/artanis/artanis-"
-                                    release ".tar.gz"))
-                (file-name (string-append name "-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "041ajcg2pz918kd9iqcj4inpzddc3impvz3r2nhlpbv8zrz011hn"))
-                (modules '((guix build utils)))
-                (snippet
-                 '(begin
-                    (delete-file-recursively "artanis/third-party/json.scm")
-                    (delete-file-recursively "artanis/third-party/json")
-                    (substitute* '("artanis/artanis.scm"
-                                   "artanis/oht.scm")
-                      (("(#:use-module \\()artanis third-party (json\\))" _
-                        use-module json)
-                       (string-append use-module json)))
-                    (substitute* "artanis/oht.scm"
-                      (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
-                        _ pre json-string post)
-                       (string-append pre
-                                      "scm" json-string
-                                      post)))
-                    (substitute* "artanis/artanis.scm"
-                      (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
-                       ""))
-                    #t))))
-      (build-system gnu-build-system)
-      ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
-      (inputs `(("guile" ,guile-2.2)
-                ("guile-json" ,guile-json)))
-      (native-inputs `(("bash"       ,bash)         ;for the `source' builtin
-                       ("pkgconfig"  ,pkg-config)
-                       ("util-linux" ,util-linux))) ;for the `script' command
-      (arguments
-       '(#:make-flags
-         ;; TODO: The documentation must be built with the `docs' target.
-         (let* ((out (assoc-ref %outputs "out"))
-                (scm (string-append out "/share/guile/site/2.2"))
-                (go  (string-append out "/lib/guile/2.2/site-ccache")))
-           ;; Don't use (%site-dir) for site paths.
-           (list (string-append "MOD_PATH=" scm)
-                 (string-append "MOD_COMPILED_PATH=" go)))
-         #:test-target "test"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'install 'substitute-root-dir
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out  (assoc-ref outputs "out")))
-                 (substitute* "Makefile"   ;ignore the execution of bash.bashrc
-                   ((" /etc/bash.bashrc") " /dev/null"))
-                 (substitute* "Makefile"   ;set the root of config files to OUT
-                   ((" /etc") (string-append " " out "/etc")))
-                 (mkdir-p (string-append out "/bin")) ;for the `art' executable
-                 #t)))
-           (add-after 'install 'wrap-art
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin"))
-                      (scm (string-append out "/share/guile/site/2.2"))
-                      (go  (string-append out "/lib/guile/2.2/site-ccache")))
-                 (wrap-program (string-append bin "/art")
-                   `("GUILE_LOAD_PATH" ":" prefix (,scm))
-                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))
-                 #t))))))
-      (synopsis "Web application framework written in Guile")
-      (description "GNU Artanis is a web application framework written in Guile
-Scheme.  A web application framework (WAF) is a software framework that is
-designed to support the development of dynamic websites, web applications, web
-services and web resources.  The framework aims to alleviate the overhead
-associated with common activities performed in web development.  Artanis
-provides several tools for web development: database access, templating
-frameworks, session management, URL-remapping for RESTful, page caching, and
-more.")
-      (home-page "https://www.gnu.org/software/artanis/")
-      (license (list license:gpl3+ license:lgpl3+))))) ;dual license
-
-(define-public guile-reader
-  (package
-    (name "guile-reader")
-    (version "0.6.2")
-    (source  (origin
-               (method url-fetch)
-               (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
-                                   version ".tar.gz"))
-               (sha256
-                (base32
-                 "0592s2s8ampqmqwilc4fvcild6rb9gy79di6vxv5kcdmv23abkgx"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("pkgconfig" ,pkg-config)
-                     ("gperf" ,gperf-3.0)))
-    (inputs `(("guile" ,guile-2.2)))
-    (synopsis "Framework for building readers for GNU Guile")
-    (description
-     "Guile-Reader is a simple framework for building readers for GNU Guile.
-
-The idea is to make it easy to build procedures that extend Guile’s read
-procedure.  Readers supporting various syntax variants can easily be written,
-possibly by re-using existing “token readers” of a standard Scheme
-readers.  For example, it is used to implement Skribilo’s R5RS-derived
-document syntax.
-
-Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
-hopefully more powerful and flexible (for instance, one may instantiate as
-many readers as needed).")
-    (home-page "https://www.nongnu.org/guile-reader/")
-    (license license:gpl3+)))
-
-(define-public guile2.0-reader
-  (package-for-guile-2.0 guile-reader))
-(define-public guile2.2-reader
-  (deprecated-package "guile2.2-reader" guile-reader))
-
-(define-public guile-ncurses
-  (package
-    (name "guile-ncurses")
-    (version "2.2")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f"))))
-    (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)
-              ("guile" ,guile-2.2)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (arguments
-     '(#:configure-flags (list "--with-ncursesw"  ; Unicode support
-                               "--with-gnu-filesystem-hierarchy")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'fix-libguile-ncurses-file-name
-           (lambda* (#:key outputs #:allow-other-keys)
-             (and (zero? (system* "make" "install"
-                                  "-C" "src/ncurses"
-                                  "-j" (number->string
-                                        (parallel-job-count))))
-                  (let* ((out   (assoc-ref outputs "out"))
-                         (dir   "src/ncurses")
-                         (files (find-files dir ".scm")))
-                    (substitute* files
-                      (("\"libguile-ncurses\"")
-                       (format #f "\"~a/lib/guile/2.2/libguile-ncurses\""
-                               out)))
-                    #t)))))))
-    (home-page "https://www.gnu.org/software/guile-ncurses/")
-    (synopsis "Guile bindings to ncurses")
-    (description
-     "guile-ncurses provides Guile language bindings for the ncurses
-library.")
-    (license license:lgpl3+)))
-
-(define-public guile-ncurses/gpm
-  (package
-    (inherit guile-ncurses)
-    (name "guile-ncurses-with-gpm")
-    (inputs `(("ncurses" ,ncurses/gpm)
-              ("guile" ,guile-2.2)))))
-
-(define-public mcron
-  (package
-    (name "mcron")
-    (version "1.1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/mcron/mcron-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4"))))
-    (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):
-                      ;; <https://lists.gnu.org/archive/html/bug-mcron/2018-04/msg00005.html>.
-                      (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"
-                        ;; (getpw) fails with "entry not found" in the build
-                        ;; environment, so pass an argument.
-                        (("\\(getpw\\)")
-                         "(getpwnam (getuid))")
-                        ;; The build environment lacks an entry for root in
-                        ;; /etc/passwd.
-                        (("\\(getpw 0\\)")
-                         "(getpwnam \"nobody\")")
-
-                        ;; FIXME: Skip the 4 faulty tests (see above).
-                        (("\\(test-equal \"next-year\"" all)
-                         (string-append "(test-skip 4)\n" all)))
-                      #t)))))
-    (native-inputs `(("pkg-config" ,pkg-config)
-                     ("tzdata" ,tzdata-for-tests)))
-    (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
-    (home-page "https://www.gnu.org/software/mcron/")
-    (synopsis "Run jobs at scheduled times")
-    (description
-     "GNU Mcron is a complete replacement for Vixie cron.  It is used to run
-tasks on a schedule, such as every hour or every Monday.  Mcron is written in
-Guile, so its configuration can be written in Scheme; the original cron
-format is also supported.")
-    (license license:gpl3+)))
-
-(define-public mcron2
-  ;; This was mthl's mcron development branch, and it became mcron 1.1.
-  (deprecated-package "mcron2" mcron))
-
-(define-public guile-hall
-  (package
-    (name "guile-hall")
-    (version "0.1.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/a-sassmannshausen/guile-hall")
-             (commit "7d1094a12fe917209ce5b76c681cc8c862d4c65b")))
-       (file-name "guile-hall-0.1.1-checkout")
-       (sha256
-        (base32
-         "03kb09cjca98hlbx9mj12mqinzsnnvp6ci6i975n88pjhaxigyp1"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules
-       ((ice-9 match)
-        (ice-9 ftw)
-        ,@%gnu-build-system-modules)
-       #:phases
-       (modify-phases
-           %standard-phases
-         (add-after
-             'install
-             'hall-wrap-binaries
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/"))
-                    (site (string-append out "/share/guile/site")))
-               (match (scandir site)
-                 (("." ".." version)
-                  (let ((modules (string-append site "/" version))
-                        (compiled-modules
-                         (string-append
-                          out
-                          "/lib/guile/"
-                          version
-                          "/site-ccache")))
-                    (for-each
-                     (lambda (file)
-                       (wrap-program
-                           (string-append bin file)
-                         `("GUILE_LOAD_PATH" ":" prefix (,modules))
-                         `("GUILE_LOAD_COMPILED_PATH"
-                           ":"
-                           prefix
-                           (,compiled-modules))))
-                     ,(list 'list "hall"))
-                    #t)))))))))
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)))
-    (inputs `(("guile" ,guile-2.2)))
-    (propagated-inputs
-     `(("guile-config" ,guile-config)))
-    (synopsis "Guile project tooling")
-    (description
-     "Hall is a command-line application and a set of Guile libraries that
-allow you to quickly create and publish Guile projects.  It allows you to
-transparently support the GNU build system, manage a project hierarchy &
-provides tight coupling to Guix.")
-    (home-page
-     "https://gitlab.com/a-sassmannshausen/guile-hall")
-    (license license:gpl3+)))
-
-(define-public guile-ics
-  (package
-    (name "guile-ics")
-    (version "0.2.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/artyom-poptsov/guile-ics")
-                    (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
-       ("automake" ,automake)
-       ("texinfo" ,texinfo)
-       ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
-       ("gettext" ,gettext-minimal)
-       ("pkg-config" ,pkg-config)))
-    (inputs `(("guile" ,guile-2.2) ("which" ,which)))
-    (propagated-inputs `(("guile-lib" ,guile-lib)))
-    (home-page "https://github.com/artyom-poptsov/guile-ics")
-    (synopsis "Guile parser library for the iCalendar format")
-    (description
-     "Guile-ICS is an iCalendar (RFC5545) format parser library written in
-pure Scheme.  The library can be used to read and write iCalendar data.
-
-The library is shipped with documentation in Info format and usage examples.")
-    (license license:gpl3+)))
-
-(define-public guile-lib
-  (package
-    (name "guile-lib")
-    (version "0.2.6.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:make-flags
-       '("GUILE_AUTO_COMPILE=0")        ; to prevent guild errors
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-module-dir
-           (lambda _
-             (substitute* "src/Makefile.in"
-               (("^moddir = ([[:graph:]]+)")
-                "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
-               (("^godir = ([[:graph:]]+)")
-                "godir = \
-$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
-             #t)))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("guile" ,guile-2.2)))
-    (home-page "https://www.nongnu.org/guile-lib/")
-    (synopsis "Collection of useful Guile Scheme modules")
-    (description
-     "Guile-Lib is intended as an accumulation place for pure-scheme Guile
-modules, allowing for people to cooperate integrating their generic Guile
-modules into a coherent library.  Think \"a down-scaled, limited-scope CPAN
-for Guile\".")
-
-    ;; The whole is under GPLv3+, but some modules are under laxer
-    ;; distribution terms such as LGPL and public domain.  See `COPYING' for
-    ;; details.
-    (license license:gpl3+)))
-
-(define-public guile2.0-lib
-  (package-for-guile-2.0 guile-lib))
-
-(define-public guile2.2-lib
-  (deprecated-package "guile2.2-lib" guile-lib))
-
 (define-public guile-json
   (package
     (name "guile-json")
@@ -957,118 +486,6 @@ specification.  These are the main features:
                (base32
                 "1yfqscz74i4vxylabd3s9l0wbdp8bg9qxnv1ixdm3b1l7zdx00z3"))))))
 
-(define-public guile-minikanren
-  (package
-    (name "guile-minikanren")
-    (version "20150424.e844d85")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/ijp/minikanren.git")
-                    (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
-    (build-system guile-build-system)
-    (native-inputs
-     `(("guile" ,guile-2.2)))
-    (home-page "https://github.com/ijp/minikanren")
-    (synopsis "MiniKanren declarative logic system, packaged for Guile")
-    (description
-     "MiniKanren is a relational programming extension to the Scheme
-programming Language, written as a smaller version of Kanren suitable for
-pedagogical purposes.  It is featured in the book, The Reasoned Schemer,
-written by Dan Friedman, William Byrd, and Oleg Kiselyov.
-
-This is Ian Price's r6rs packaged version of miniKanren, which deviates
-slightly from miniKanren mainline.
-
-See http://minikanren.org/ for more on miniKanren generally.")
-    (license license:expat)))
-
-(define-public guile2.0-minikanren
-  (package-for-guile-2.0 guile-minikanren))
-
-(define-public guile2.2-minikanren
-  (deprecated-package "guile2.2-minikanren" guile-minikanren))
-
-(define-public guile-miniadapton
-  (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
-        (revision "1"))
-    (package
-      (name "guile-miniadapton")
-      (version (string-append "0-" revision "." (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/fisherdj/miniAdapton.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
-      (build-system guile-build-system)
-      (native-inputs
-       `(("guile" ,guile-2.2)))
-      (home-page "https://github.com/fisherdj/miniAdapton")
-      (synopsis "Minimal implementation of incremental computation in Guile
-Scheme")
-      (description "This package provides a complete Scheme implementation of
-miniAdapton, which implements the core functionality of the Adapton system for
-incremental computation (also known as self-adjusting computation).  Like
-Adapton, miniAdapton allows programmers to safely combine mutation and
-memoization.  miniAdapton is built on top of an even simpler system,
-microAdapton.  Both miniAdapton and microAdapton are designed to be easy to
-understand, extend, and port to host languages other than Scheme.")
-      (license license:expat))))
-
-(define-public guile-irregex
-  (package
-    (name "guile-irregex")
-    (version "0.9.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://synthcode.com/scheme/irregex/irregex-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
-    (build-system guile-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'move-files-around
-                    (lambda _
-                      ;; Move the relevant source files to src/ and create the
-                      ;; rx/ directory to match the expected module hierarchy.
-                      (mkdir-p "src/rx/source")
-                      (rename-file "irregex-guile.scm"
-                                   "src/rx/irregex.scm")
-                      (rename-file "irregex.scm"
-                                   "src/rx/source/irregex.scm")
-                      ;; Not really reachable via guile's packaging system,
-                      ;; but nice to have around.
-                      (rename-file "irregex-utils.scm"
-                                   "src/rx/source/irregex-utils.scm")
-                      #t)))
-       #:source-directory "src"))
-    (native-inputs
-     `(("guile" ,guile-2.2)))
-    (home-page "http://synthcode.com/scheme/irregex")
-    (synopsis "S-expression based regular expressions")
-    (description
-     "Irregex is an s-expression based alternative to your classic
-string-based regular expressions.  It implements SRFI 115 and is deeply
-inspired by the SCSH regular expression system.")
-    (license license:bsd-3)))
-
-(define-public guile2.0-irregex
-  (package-for-guile-2.0 guile-irregex))
-
-(define-public guile2.2-irregex
-  (deprecated-package "guile2.2-irregex" guile-irregex))
-
 ;; There are two guile-gdbm packages, one using the FFI and one with
 ;; direct C bindings, hence the verbose name.
 
@@ -1154,512 +571,6 @@ Guile's foreign function interface.")
 (define-public guile2.0-sqlite3
   (package-for-guile-2.0 guile-sqlite3))
 
-(define-public haunt
-  (package
-    (name "haunt")
-    (version "0.2.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://files.dthompson.us/haunt/haunt-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules ((ice-9 match) (ice-9 ftw)
-                  ,@%gnu-build-system-modules)
-       #:tests? #f ; test suite is non-deterministic :(
-       #:phases (modify-phases %standard-phases
-                  (add-after 'install 'wrap-haunt
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Wrap the 'haunt' command to refer to the right
-                      ;; modules.
-                      (let* ((out  (assoc-ref outputs "out"))
-                             (bin  (string-append out "/bin"))
-                             (site (string-append
-                                    out "/share/guile/site"))
-                             (deps (list (assoc-ref inputs "guile-reader")
-                                         (assoc-ref inputs "guile-commonmark"))))
-                        (match (scandir site)
-                          (("." ".." version)
-                           (let ((modules (string-append site "/" version))
-                                 (compiled-modules (string-append
-                                                    out "/lib/guile/" version
-                                                    "/site-ccache")))
-                             (wrap-program (string-append bin "/haunt")
-                               `("GUILE_LOAD_PATH" ":" prefix
-                                 (,modules
-                                  ,@(map (lambda (dep)
-                                           (string-append dep
-                                                          "/share/guile/site/"
-                                                          version))
-                                         deps)))
-                               `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                                 (,compiled-modules
-                                  ,@(map (lambda (dep)
-                                           (string-append dep "/lib/guile/"
-                                                          version
-                                                          "/site-ccache"))
-                                         deps))))
-                             #t)))))))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)))
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (propagated-inputs
-     `(("guile-reader" ,guile-reader)
-       ("guile-commonmark" ,guile-commonmark)))
-    (synopsis "Functional static site generator")
-    (description "Haunt is a static site generator written in Guile
-Scheme.  Haunt features a functional build system and an extensible
-interface for reading articles in any format.")
-    (home-page "http://haunt.dthompson.us")
-    (license license:gpl3+)))
-
-(define-public guile2.0-haunt
-  (package-for-guile-2.0
-   (package (inherit haunt) (name "guile2.0-haunt"))))
-(define-public guile2.2-haunt
-  (deprecated-package "guile2.2-haunt" haunt))
-
-(define-public guile-config
-  (package
-    (name "guile-config")
-    (version "0.3")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/a-sassmannshausen/guile-config")
-             (commit "ce12de3f438c6b2b59c43ee21bcd58251835fdf3")))
-       (file-name "guile-config-0.3-checkout")
-       (sha256 (base32 "02zbpin0r9m2vxmr7mv68v3xdn247dcck56kbzjn0gj4c2rhih85"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)))
-    (inputs `(("guile" ,guile-2.2)))
-    (synopsis
-     "Guile application configuration parsing library.")
-    (description
-     "Guile Config is a library providing a declarative approach to
-application configuration specification.  The library provides clean
-configuration declaration forms, and processors that take care of:
-configuration file creation; configuration file parsing; command-line
-parameter parsing using getopt-long; basic GNU command-line parameter
-generation (--help, --usage, --version); automatic output generation for the
-above command-line parameters.")
-    (home-page
-     "https://gitlab.com/a-sassmannshausen/guile-config")
-    (license license:gpl3+)))
-
-(define-public guile-redis
-  (package
-    (name "guile-redis")
-    (version "1.0.0")
-    (home-page "https://github.com/aconchillo/guile-redis")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append home-page "/archive/" version ".tar.gz"))
-              (sha256
-               (base32
-                "1dp5fmqvma59pvp1nfpq6hqgbmjici8sd1y8llahl87fynw1dvr9"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("guile" ,guile-2.2)))
-    (synopsis "Redis client library for Guile")
-    (description "Guile-redis provides a Scheme interface to the Redis
-key-value cache and store.")
-    (license license:lgpl3+)))
-
-(define-public guile2.0-redis
-  (package-for-guile-2.0 guile-redis))
-
-(define-public guile2.2-redis
-  (deprecated-package "guile2.2-redis" guile-redis))
-
-(define-public guile-wisp
-  (package
-    (name "guile-wisp")
-    (version "0.9.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://bitbucket.org/ArneBab/"
-                                  "wisp/downloads/wisp-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1xa0f0fvcrimqap50azv5872bfx8jbhc6baxa1prpbwcksbh8gdz"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 rdelim)
-                  (ice-9 popen))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-/usr/bin/env
-           (lambda _
-             (substitute* "Makefile.in"
-               (("/usr/bin/env bash") (which "bash"))
-               (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
-                "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
-             #t))
-         ;; auto compilation breaks, but if we set HOME to /tmp,
-         ;; that works ok
-         (add-before 'check 'auto-compile-hacky-workaround
-           (lambda _ (setenv "HOME" "/tmp") #t))
-         (add-after 'install 'install-go-files
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (effective (read-line
-                                (open-pipe* OPEN_READ
-                                            "guile" "-c"
-                                            "(display (effective-version))")))
-                    (module-dir (string-append out "/share/guile/site/"
-                                               effective))
-                    (object-dir (string-append out "/lib/guile/" effective
-                                               "/site-ccache"))
-                    (prefix     (string-length module-dir)))
-               ;; compile to the destination
-               (for-each (lambda (file)
-                           (let* ((base (string-drop (string-drop-right file 4)
-                                                     prefix))
-                                  (go   (string-append object-dir base ".go")))
-                             (invoke "guild" "compile" "-L" module-dir
-                                     file "-o" go)))
-                         (find-files module-dir "\\.scm$"))
-               #t))))))
-    (home-page "https://draketo.de/english/wisp")
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (native-inputs
-     `(("python" ,python)
-       ("pkg-config" ,pkg-config)))
-    (synopsis "Whitespace to lisp syntax for Guile")
-    (description "Wisp is a syntax for Guile which provides a Python-like
-whitespace-significant language.  It may be easier on the eyes for some
-users and in some situations.")
-    (license license:gpl3+)))
-
-(define-public guile-sly
-  (package
-    (name "guile-sly")
-    (version "0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://files.dthompson.us/sly/sly-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (substitute* "configure"
-                    (("_guile_required_version=\"2.0.11\"")
-                     "_guile_required_version=\"2\"")
-                    (("ac_subst_vars='")
-                     "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
-                  (substitute* (find-files "." "Makefile.in")
-                    (("moddir = .*$")
-                     (string-append
-                      "moddir = "
-                      "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
-                    (("godir = .*$")
-                     (string-append
-                      "godir = "
-                      "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
-                  #t))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags
-       (list (string-append "--with-libfreeimage-prefix="
-                            (assoc-ref %build-inputs "freeimage"))
-             (string-append "--with-libgslcblas-prefix="
-                            (assoc-ref %build-inputs "gsl")))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (propagated-inputs
-     `(("guile-sdl" ,guile-sdl)
-       ("guile-opengl" ,guile-opengl)))
-    (inputs
-     `(("guile" ,guile-2.2)
-       ("gsl" ,gsl)
-       ("freeimage" ,freeimage)
-       ("mesa" ,mesa)))
-    (synopsis "2D/3D game engine for GNU Guile")
-    (description "Sly is a 2D/3D game engine written in Guile Scheme.  Sly
-features a functional reactive programming interface and live coding
-capabilities.")
-    (home-page "https://dthompson.us/projects/sly.html")
-    (license license:gpl3+)))
-
-(define-public g-wrap
-  (package
-    (name "g-wrap")
-    (version "1.9.15")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (propagated-inputs
-     `(("guile" ,guile-2.2)
-       ("guile-lib" ,guile-lib)))
-    (inputs
-     `(("libffi" ,libffi)))
-    (arguments
-     `(#:configure-flags '("--disable-Werror")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'pre-configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* (find-files "." "^Makefile.in$")
-                 (("guilemoduledir =.*guile/site" all)
-                  (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
-               #t))))))
-    (synopsis "Generate C bindings for Guile")
-    (description "G-Wrap is a tool and Guile library for generating function
-wrappers for inter-language calls.  It currently only supports generating Guile
-wrappers for C functions.  Given a definition of the types and prototypes for
-a given C interface, G-Wrap will automatically generate the C code that
-provides access to that interface and its types from the Scheme level.")
-    (home-page "https://www.nongnu.org/g-wrap/index.html")
-    (license license:lgpl2.1+)))
-
-(define-public guile-dbi
-  (package
-    (name "guile-dbi")
-    (version "2.1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://download.gna.org/guile-dbi/guile-dbi-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags
-       (list (string-append
-              "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
-       #:make-flags
-       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib:"
-                            (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'patch-extension-path
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (dbi.scm (string-append
-                              out "/share/guile/site/2.2/dbi/dbi.scm"))
-                    (ext     (string-append out "/lib/libguile-dbi")))
-               (substitute* dbi.scm (("libguile-dbi") ext))
-               #t))))))
-    (inputs
-     `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files
-    (propagated-inputs
-     `(("guile" ,guile-2.2)))
-    (synopsis "Guile database abstraction layer")
-    (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
-    (description
-     "guile-dbi is a library for Guile that provides a convenient interface to
-SQL databases.  Database programming with guile-dbi is generic in that the same
-programming interface is presented regardless of which database system is used.
-It currently supports MySQL, Postgres and SQLite3.")
-    (license license:gpl2+)))
-
-(define guile-dbi-bootstrap
-  (package
-    (inherit guile-dbi)
-    (name "guile-dbi-bootstrap")
-    (inputs '())
-    (arguments
-     (substitute-keyword-arguments (package-arguments guile-dbi)
-       ((#:make-flags _) '(list))))))
-
-(define-public guile-dbd-sqlite3
-  (package
-    (name "guile-dbd-sqlite3")
-    (version "2.1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
-    (inputs
-     `(("sqlite" ,sqlite)
-       ("zlib" ,(@ (gnu packages compression) zlib))))
-    (synopsis "Guile DBI driver for SQLite")
-    (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
-    (description
-     "guile-dbi is a library for Guile that provides a convenient interface to
-SQL databases.  This package implements the interface for SQLite.")
-    (license license:gpl2+)))
-
-(define-public guile-dsv
-  (package
-    (name "guile-dsv")
-    (version "0.2.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/artyom-poptsov/guile-dsv")
-                    (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)))
-    (inputs `(("guile" ,guile-2.2)))
-    (propagated-inputs `(("guile-lib" ,guile-lib)))
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'set-guilesitedir
-                    (lambda _
-                      (substitute* "Makefile.in"
-                        (("^guilesitedir =.*$")
-                         "guilesitedir = \
-$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
-                      (substitute* "modules/Makefile.in"
-                        (("^guilesitedir =.*$")
-                         "guilesitedir = \
-$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
-                      (substitute* "modules/dsv/Makefile.in"
-                        (("^guilesitedir =.*$")
-                         "guilesitedir = \
-$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
-                      #t)))))
-    (home-page "https://github.com/artyom-poptsov/guile-dsv")
-    (synopsis "DSV module for Guile")
-    (description
-     "Guile-DSV is a GNU Guile module for working with the
-delimiter-separated values (DSV) data format.  Guile-DSV supports the
-Unix-style DSV format and RFC 4180 format.")
-    (license license:gpl3+)))
-
-(define-public guile-xosd
-  (package
-    (name "guile-xosd")
-    (version "0.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/alezost/" name
-                                  "/releases/download/v" version
-                                  "/" name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("guile" ,guile-2.2)
-       ("libx11" ,libx11)
-       ("libxext" ,libxext)
-       ("libxinerama" ,libxinerama)
-       ("xosd" ,xosd)))
-    (home-page "https://github.com/alezost/guile-xosd")
-    (synopsis "XOSD bindings for Guile")
-    (description
-     "Guile-XOSD provides Guile bindings for @code{libxosd},
-@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
-library}.")
-    (license license:gpl3+)))
-
-(define-public guile-daemon
-  (package
-    (name "guile-daemon")
-    (version "0.1.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/alezost/" name
-                                  "/releases/download/v" version
-                                  "/" name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (home-page "https://github.com/alezost/guile-daemon")
-    (synopsis "Evaluate code in a running Guile process")
-    (description
-     "Guile-Daemon is a small Guile program that loads your initial
-configuration file, and then reads and evaluates Guile expressions that
-you send to a FIFO file.")
-    (license license:gpl3+)))
-
-(define-public guile-commonmark
-  (package
-    (name "guile-commonmark")
-    (version "0.1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/OrangeShark/" name
-                                  "/releases/download/v" version
-                                  "/" name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0kzclwkfijj8xka3g9kfj53y67c34ndfy84swdbw3j7y962ndxq6"))
-              (modules '((guix build utils)))
-              (snippet
-               ;; Install .scm files in the right place (see
-               ;; <https://github.com/OrangeShark/guile-commonmark/issues/12>.)
-               '(begin
-                  (substitute* "Makefile.in"
-                    (("^moddir = \\$\\(datadir\\)/share")
-                     "moddir = $(datadir)"))
-                  #t))))
-    (build-system gnu-build-system)
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (synopsis "CommonMark parser for Guile")
-    (description
-     "guile-commonmark is a library for parsing CommonMark, a fully specified
-variant of Markdown.  The library is written in Guile Scheme and is designed
-to transform a CommonMark document to SXML.  guile-commonmark tries to closely
-follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
-is no support for parsing block and inline level HTML.")
-    (home-page "https://github.com/OrangeShark/guile-commonmark")
-    (license license:lgpl3+)))
-
-(define-public guile2.0-commonmark
-  (package-for-guile-2.0 guile-commonmark))
-(define-public guile2.2-commonmark
-  (deprecated-package "guile2.2-commonmark" guile-commonmark))
-
 (define-public guile-bytestructures
   (package
     (name "guile-bytestructures")
@@ -1690,198 +601,10 @@ type system, elevating types to first-class status.")
 (define-public guile2.0-bytestructures
   (package-for-guile-2.0 guile-bytestructures))
 
-(define-public guile-aspell
-  (package
-    (name "guile-aspell")
-    (version "0.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://lonelycactus.com/tarball/guile_aspell-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'set-guilesitedir
-                    (lambda _
-                      (substitute* "Makefile.in"
-                        (("^guilesitedir =.*$")
-                         "guilesitedir = \
-$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
-                      #t))
-                  (add-before 'build 'set-libaspell-file-name
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (let ((aspell (assoc-ref inputs "aspell")))
-                        (substitute* "aspell.scm"
-                          (("\"libaspell\\.so\"")
-                           (string-append "\"" aspell
-                                          "/lib/libaspell\"")))
-                        #t))))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("guile" ,guile-2.2)
-              ("aspell" ,aspell)))
-    (home-page "https://github.com/spk121/guile-aspell")
-    (synopsis "Spell-checking from Guile")
-    (description
-     "guile-aspell is a Guile Scheme library for comparing a string against a
-dictionary and suggesting spelling corrections.")
-    (license license:gpl3+)))
-
-(define-public guile-bash
-  ;; This project is currently retired.  It was initially announced here:
-  ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
-  (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
-        (revision "0"))
-    (package
-      (name "guile-bash")
-      (version (string-append "0.1.6-" revision "." (string-take commit 7)))
-      (home-page
-       "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (commit commit)
-                      (url home-page)))
-                (sha256
-                 (base32
-                  "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
-                (file-name (string-append name "-" version "-checkout"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:configure-flags
-         ;; Add -I to match 'bash.pc' of Bash 4.4.
-         (list (string-append "CPPFLAGS=-I"
-                              (assoc-ref %build-inputs "bash:include")
-                              "/include/bash/include")
-
-               ;; The '.a' file is useless.
-               "--disable-static"
-
-               ;; Install 'lib/bash' as Bash 4.4 expects.
-               (string-append "--libdir=" (assoc-ref %outputs "out")
-                              "/lib/bash"))))
-      (native-inputs `(("pkg-config" ,pkg-config)
-                       ("autoconf" ,autoconf-wrapper)
-                       ("automake" ,automake)
-                       ("libtool" ,libtool)
-                       ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
-                       ("gettext" ,gettext-minimal)
-
-                       ;; Bash with loadable module support, for the test
-                       ;; suite.
-                       ("bash-full" ,bash)))
-      (inputs `(("guile" ,guile-2.0)
-                ("bash:include" ,bash "include")))
-      (synopsis "Extend Bash using Guile")
-      (description
-       "Guile-Bash provides a shared library and set of Guile modules,
-allowing you to extend Bash in Scheme.  Scheme interfaces allow you to access
-the following aspects of Bash:
-
-@itemize
-@item aliases;
-@item setting and getting Bash variables;
-@item creating dynamic variables;
-@item creating Bash functions with a Scheme implementation;
-@item reader macro for output capturing;
-@item reader macro for evaluating raw Bash commands.
-@end itemize
-
-To enable it, run:
-
-@example
-enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
-@end example
-
-and then run @command{scm example.scm}.")
-      (license license:gpl3+))))
-
-(define-public guile-8sync
-  (package
-    (name "guile-8sync")
-    (version "0.4.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/8sync/8sync-" version
-                                  ".tar.gz"))
-              (sha256
-               (base32
-                "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("autoconf" ,autoconf)
-                     ("automake" ,automake)
-                     ("guile" ,guile-2.2)
-                     ("pkg-config" ,pkg-config)
-                     ("texinfo" ,texinfo)))
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'setenv
-                    (lambda _
-                      ;; quiet warnings
-                      (setenv "GUILE_AUTO_COMPILE" "0")
-                      #t)))))
-    (home-page "https://gnu.org/s/8sync/")
-    (synopsis "Asynchronous actor model library for Guile")
-    (description
-     "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
-library for GNU Guile based on the actor model.
-
-Note that 8sync is only available for Guile 2.2.")
-    (license license:lgpl3+)))
-
-(define-public guile-fibers
-  (package
-    (name "guile-fibers")
-    (version "1.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-after 'install 'mode-guile-objects
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; .go files are installed to "lib/guile/X.Y/cache".
-                      ;; This phase moves them to "…/site-ccache".
-                      (let* ((out (assoc-ref outputs "out"))
-                             (lib (string-append out "/lib/guile"))
-                             (old (car (find-files lib "^ccache$"
-                                                   #:directories? #t)))
-                             (new (string-append (dirname old)
-                                                 "/site-ccache")))
-                        (rename-file old new)
-                        #t))))))
-    (native-inputs
-     `(("texinfo" ,texinfo)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (synopsis "Lightweight concurrency facility for Guile")
-    (description
-     "Fibers is a Guile library that implements a a lightweight concurrency
-facility, inspired by systems like Concurrent ML, Go, and Erlang.  A fiber is
-like a \"goroutine\" from the Go language: a lightweight thread-like
-abstraction.  Systems built with Fibers can scale up to millions of concurrent
-fibers, tens of thousands of concurrent socket connections, and many parallel
-cores.  The Fibers library also provides Concurrent ML-like channels for
-communication between fibers.
-
-Note that Fibers makes use of some Guile 2.1/2.2-specific features and
-is not available for Guile 2.0.")
-    (home-page "https://github.com/wingo/fibers")
-    (license license:lgpl3+)))
-
 (define-public guile-git
   (package
     (name "guile-git")
-    (version "0.1.0")
+    (version "0.2.0")
     (home-page "https://gitlab.com/guile-git/guile-git.git")
     (source (origin
               (method git-fetch)
@@ -1889,7 +612,7 @@ is not available for Guile 2.0.")
                                   (commit (string-append "v" version))))
               (sha256
                (base32
-                "1z3awa3i5il08dl2swbnli2j7cawdpray11zx4844j27bxqddcs2"))
+                "018hmfsh0rjwfvr4h7y10jc6k8a2k9xsirngghy3pjasin4nd2yz"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
@@ -1911,505 +634,5 @@ manipulate repositories of the Git version control system.")
 (define-public guile2.0-git
   (package-for-guile-2.0 guile-git))
 
-(define-public guile-syntax-highlight
-  (package
-    (name "guile-syntax-highlight")
-    (version "0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://files.dthompson.us/"
-                                  "guile-syntax-highlight/"
-                                  "guile-syntax-highlight-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (synopsis "General-purpose syntax highlighter for GNU Guile")
-    (description "Guile-syntax-highlight is a general-purpose syntax
-highlighting library for GNU Guile.  It can parse code written in various
-programming languages into a simple s-expression that can be converted to
-HTML (via SXML) or any other format for rendering.")
-    (home-page "http://dthompson.us/projects/guile-syntax-highlight.html")
-    (license license:lgpl3+)))
-
-(define-public guile-sjson
-  (package
-    (name "guile-sjson")
-    (version "0.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://dustycloud.org/misc/sjson-" version
-                                  ".tar.gz"))
-              (sha256
-               (base32
-                "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("guile" ,guile-2.2)))
-    (home-page "https://gitlab.com/dustyweb/guile-sjson")
-    (synopsis "S-expression based json reader/writer for Guile")
-    (description "guile-sjson is a json reader/writer for Guile.
-It has a nice, simple s-expression based syntax.")
-    (license license:lgpl3+)))
-
-(define-public guile-colorized
-  (package
-    (name "guile-colorized")
-    (version "0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/NalaGinrut/guile-colorized/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p"))))
-    (build-system guile-build-system)
-    (native-inputs
-     `(("guile" ,guile-2.2)))
-    (home-page "https://github.com/NalaGinrut/guile-colorized")
-    (synopsis "Colorized REPL for Guile")
-    (description
-     "Guile-colorized provides you with a colorized REPL for GNU Guile.")
-    (license license:gpl3+)))
-
-(define-public guile-pfds
-  (package
-    (name "guile-pfds")
-    (version "0.3")
-    (home-page "https://github.com/ijp/pfds")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url home-page)
-                    (commit (string-append "v" version))))
-              (sha256
-               (base32
-                "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
-              (file-name (string-append name "-" version "-checkout"))))
-    (build-system guile-build-system)
-    (arguments
-     '(#:source-directory "src"
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'move-files-around
-                    (lambda _
-                      ;; Move files under a pfds/ directory to reflect the
-                      ;; module hierarchy.
-                      (mkdir-p "src/pfds")
-                      (for-each (lambda (file)
-                                  (rename-file file
-                                               (string-append "src/pfds/"
-                                                              file)))
-                                '("bbtrees.sls"
-                                  "deques"
-                                  "deques.sls"
-                                  "dlists.sls"
-                                  "fingertrees.sls"
-                                  "hamts.sls"
-                                  "heaps.sls"
-                                  "private"
-                                  "psqs.sls"
-                                  "queues"
-                                  "queues.sls"
-                                  "sequences.sls"
-                                  "sets.sls"))
-
-                      ;; In Guile <= 2.2.4, there's no way to tell 'guild
-                      ;; compile' to accept the ".sls" extension.  So...
-                      (for-each (lambda (file)
-                                  (rename-file file
-                                               (string-append
-                                                (string-drop-right file 4)
-                                                ".scm")))
-                                (find-files "." "\\.sls$"))
-                      #t)))))
-    (native-inputs
-     `(("guile" ,guile-2.2)))
-    (synopsis "Purely functional data structures for Guile")
-    (description
-     "This package provides purely functional data structures written in R6RS
-Scheme and compiled for Guile.  It has been tested with Racket, Guile 2,
-Vicare Scheme and IronScheme.  Right now it contains:
-
-@itemize
-@item queues
-@item deques
-@item bbtrees
-@item sets
-@item dlists
-@item priority search queues (PSQs)
-@item finger trees
-@item sequences
-@item heaps
-@item hash array mapped tries (HAMTs).
-@end itemize\n")
-    (license license:bsd-3)))
-
-(define-public guile-aa-tree
-  (package
-    (name "guile-aa-tree")
-    (version "3.1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
-    (build-system guile-build-system)
-    (native-inputs `(("guile" ,guile-2.2)))
-    ;; https://savannah.nongnu.org/projects/guile-aa-tree
-    (home-page "https://qlfiles.net/guile-aa-tree/")
-    (synopsis "AA tree data structure for Guile")
-    (description
-     "This package provides an implementation of @dfn{AA trees}, a
-self-balancing binary tree data structure, for Guile.  It ensure @math{O(log
-n)} worst case performance for core operations.  The module provides
-non-mutating insert, delete, and search operations, with support for
-convenient nested tree operations.")
-    (license license:gpl3+)))
-
-(define-public guile-simple-zmq
-  (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
-        (revision "3"))
-    (package
-      (name "guile-simple-zmq")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/jerry40/guile-simple-zmq")
-               (commit commit)))
-         (sha256
-          (base32
-           "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
-         (file-name (git-file-name name version))))
-      (build-system guile-build-system)
-      (arguments
-       `(#:source-directory "src"
-         #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'set-libzmq-file-name
-                      (lambda* (#:key inputs #:allow-other-keys)
-                        (substitute* "src/simple-zmq.scm"
-                          (("\\(dynamic-link \"libzmq\"\\)")
-                           (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
-                                   (assoc-ref inputs "zeromq"))))
-                        #t)))))
-      (native-inputs
-       `(("guile" ,guile-2.2)))
-      (inputs
-       `(("zeromq" ,zeromq)))
-      (home-page "https://github.com/jerry40/guile-simple-zmq")
-      (synopsis "Guile wrapper over ZeroMQ library")
-      (description
-       "This package provides a Guile programming interface to the ZeroMQ
-messaging library.")
-      (license license:gpl3+))))
-
-(define-public jupyter-guile-kernel
-  (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
-        (revision "1"))
-    (package
-      (name "jupyter-guile-kernel")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/jerry40/guile-kernel")
-               (commit commit)))
-         (sha256
-          (base32
-           "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
-      (build-system guile-build-system)
-      (arguments
-       '(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'set-openssl-file-name
-                      (lambda* (#:key inputs #:allow-other-keys)
-                        ;; Record the absolute file name of the 'openssl'
-                        ;; command.
-                        (substitute* "src/hmac.scm"
-                          (("openssl")
-                           (string-append (assoc-ref inputs "openssl")
-                                          "/bin/openssl")))
-                        #t))
-
-                    ;; XXX: The code uses 'include' to include its own source
-                    ;; files, and "-L src" isn't enough in this case.
-                    (add-before 'build 'chdir
-                      (lambda _ (chdir "src") #t))
-                    (add-after 'build 'chdir-back
-                      (lambda _ (chdir "..") #t))
-
-                    (add-after 'install 'install-kernel
-                      (lambda* (#:key inputs outputs #:allow-other-keys)
-                        (let* ((out   (assoc-ref outputs "out"))
-                               (json  (assoc-ref inputs "guile-json"))
-                               (zmq   (assoc-ref inputs "guile-simple-zmq"))
-                               (deps  (list json zmq))
-                               (dir   (string-append
-                                       out "/share/jupyter/kernels/guile"))
-                               (effective (target-guile-effective-version)))
-                          ;; Install kernel.
-                          (install-file "src/kernel.json" dir)
-
-                          ;; Fix hard-coded file name in the kernel.
-                          (substitute* (string-append dir "/kernel.json")
-                            (("/home/.*/guile-jupyter-kernel.scm")
-                             (string-append out "/share/guile/site/"
-                                            (target-guile-effective-version)
-                                            "/guile-jupyter-kernel.scm"))
-                            (("\"guile\"")
-                             (string-append "\"" (assoc-ref inputs "guile")
-                                            "/bin/guile\""))
-                            (("-s")
-                             ;; Add '-L' and '-C' flags so that the kernel
-                             ;; finds its dependencies.
-                             (let ((-L (map (lambda (item)
-                                              (string-append "\"" item
-                                                             "/share/guile/site/"
-                                                             effective "\""))
-                                            deps))
-                                   (-C (map (lambda (item)
-                                              (string-append "\"" item
-                                                             "/lib/guile/"
-                                                             effective
-                                                             "/site-ccache\""))
-                                            deps)))
-                              (string-append "--no-auto-compile\""
-                                             (string-join -L ", \"-L\", "
-                                                          'prefix)
-                                             (string-join -C ", \"-C\", "
-                                                          'prefix)
-                                             ", \"-s"))))
-                          #t))))))
-      (inputs
-       `(("openssl" ,openssl)
-         ("guile" ,guile-2.2)
-         ("guile-json" ,guile-json)
-         ("guile-simple-zmq" ,guile-simple-zmq)))
-      (synopsis "Guile kernel for the Jupyter Notebook")
-      (description
-       "This package provides a Guile 2.x kernel for the Jupyter Notebook.  It
-allows users to interact with the Guile REPL through Jupyter.")
-      (home-page "https://github.com/jerry40/guile-kernel")
-      (license license:gpl3+))))
-
-(define-public guile-sparql
-  (package
-   (name "guile-sparql")
-   (version "0.0.7")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append
-                  "https://github.com/roelj/guile-sparql/releases/download/"
-                  version "/guile-sparql-" version ".tar.gz"))
-            (sha256
-             (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
-   (build-system gnu-build-system)
-   (arguments `(#:tests? #f)) ; There are no tests.
-   (native-inputs
-    `(("pkg-config" ,pkg-config)))
-   (inputs
-    `(("guile" ,guile-2.2)))
-   (home-page "https://github.com/roelj/guile-sparql")
-   (synopsis "SPARQL module for Guile")
-   (description "This package provides the functionality to query a SPARQL
-endpoint.  Additionally, it provides an interface to write SPARQL queries
-using S-expressions.")
-   (license license:gpl3+)))
-
-(define-public guile-debbugs
-  (package
-    (name "guile-debbugs")
-    (version "0.0.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "16l8910p57im6s3j93xhdaqvgfy6ms5n97177mrch3y961z5hy0i"))
-              (modules '((guix build utils)))
-              (snippet
-               '(substitute* "Makefile.in"
-                  (("^godir = (.*)/ccache" _ prefix)
-                   (string-append "godir = " prefix "/site-ccache"))))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("guile" ,guile-2.2)
-       ("pkg-config" ,pkg-config)))
-    (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
-    (synopsis "Guile interface to the Debbugs bug tracking service")
-    (description
-     "This package provides a Guile library to communicate with a Debbugs bug
-tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
-    (license license:gpl3+)))
-
-(define-public guile-email
-  (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
-        (revision "1"))
-    (package
-      (name "guile-email")
-      (version (git-version "0.1.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://git.systemreboot.net/guile-email")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)))
-      (inputs
-       `(("guile" ,guile-2.2)))
-      (home-page "https://git.systemreboot.net/guile-email")
-      (synopsis "Guile email parser")
-      (description "This package provides an email parser written in pure
-Guile.")
-      (license license:agpl3+))))
-
-(define-public guile-debbugs-next
-  (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
-        (revision "1"))
-    (package (inherit guile-debbugs)
-      (name "guile-debbugs")
-      (version (git-version "0.0.3" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://git.savannah.gnu.org/git/guile-debbugs.git")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("texinfo" ,texinfo)))
-      (inputs
-       `(("guile" ,guile-2.2)
-         ("guile-email" ,guile-email))))))
-
-;; There has not been any release yet.
-(define-public guile-newt
-  (let ((commit "80c1e9e71945f833386d1632b52573e59325804f")
-        (revision "4"))
-    (package
-      (name "guile-newt")
-      (version (string-append "0-" revision "." (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/mothacehe/guile-newt")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:make-flags
-         '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
-      (inputs
-       `(("guile" ,guile-2.2)
-         ("newt" ,newt)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)))
-      (synopsis "Guile bindings to Newt")
-      (description
-       "This package provides bindings for Newt, a programming library for
-color text mode, widget based user interfaces.  The bindings are written in pure
-Scheme by using Guile’s foreign function interface.")
-      (home-page "https://gitlab.com/mothacehe/guile-newt")
-      (license license:gpl3+))))
-
-(define-public guile-mastodon
-  (package
-    (name "guile-mastodon")
-    (version "0.0.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://framagit.org/prouby/guile-mastodon.git")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("guile" ,guile-2.2)
-       ("gnutls" ,gnutls)
-       ("guile-json" ,guile-json)))
-    (home-page "https://framagit.org/prouby/guile-mastodon")
-    (synopsis "Guile Mastodon REST API module")
-    (description "This package provides Guile modules to access the
-@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
-microblogging service.")
-    (license license:gpl3+)))
-
-;; There has not been any release yet.
-(define-public guile-parted
-  (let ((commit "ea3f1a1f6844775fc59d3078d2a09c62ffb341b8")
-        (revision "0"))
-    (package
-      (name "guile-parted")
-      (version (string-append "0-" revision "." (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/mothacehe/guile-parted")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:make-flags
-         '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
-      (inputs
-       `(("guile" ,guile-2.2)
-         ("parted" ,parted)))
-      (propagated-inputs
-       `(("guile-bytestructures" ,guile-bytestructures)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)))
-      (synopsis "Guile bindings to GNU Parted")
-      (description
-       "This package provides bindings for GNU Parted library, a C library
-allowing disk partition tables creation and manipulation. The bindings are
-written in pure Scheme by using Guile's foreign function interface.")
-      (home-page "https://gitlab.com/mothacehe/guile-parted")
-      (license license:gpl3+))))
-
 ;;; guile.scm ends here
 
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 673c472a85..233fea85af 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -155,15 +155,15 @@ of external libraries that provide additional functionality.")
 (define-public vtk
   (package
     (name "vtk")
-    (version "7.1.0")
+    (version "8.2.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.vtk.org/files/release/"
+              (uri (string-append "https://vtk.org/files/release/"
                                   (version-major+minor version)
                                   "/VTK-" version ".tar.gz"))
               (sha256
                (base32
-                "0yj96z58haan77gzilnqp7xpf8hg5jk11a3jx55p2ksd400s0gjz"))))
+                "1fspgp8k0myr6p2a6wkc21ldcswb4bvmb484m12mxgk1a9vxrhrl"))))
     (build-system cmake-build-system)
     (arguments
      '(#:build-type "Release"           ;Build without '-g' to save space.
@@ -196,7 +196,7 @@ of external libraries that provide additional functionality.")
        ("png" ,libpng)
        ("tiff" ,libtiff)
        ("zlib" ,zlib)))
-    (home-page "http://www.vtk.org/")
+    (home-page "https://vtk.org/")
     (synopsis "Libraries for 3D computer graphics")
     (description
      "The Visualization Toolkit (VTK) is a C++ library for 3D computer graphics,
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index c27147baef..6457127520 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -957,7 +957,7 @@ language bindings to VIGRA.")
 (define-public libwebp
   (package
     (name "libwebp")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        ;; No tarballs are provided for >0.6.1.
@@ -968,7 +968,7 @@ language bindings to VIGRA.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "09l4pq4k2acglkmwr96arn79rssl54sv7vrdrgsxqlg7v8c882zh"))))
+         "1ay0sai7f74dyk2gi975qfllmq534vnsx456npf16583mqb6ib2q"))))
     (build-system gnu-build-system)
     (inputs
      `(("freeglut" ,freeglut)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 163c296278..a314dc9953 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1860,6 +1860,231 @@ new Date();"))
        ("which" ,which)
        ("zip" ,zip)))))
 
+(define-public openjdk11
+  (package
+    (name "openjdk")
+    (version "11.28")
+    (source (origin
+              (method url-fetch)
+              (uri "http://hg.openjdk.java.net/jdk/jdk/archive/76072a077ee1.tar.bz2")
+              (file-name (string-append name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0v705w1s9lrqalzahir78pk397rkk9gfvzq821yv8h3xha0bqi6w"))
+              (modules '((guix build utils)))
+              (snippet
+                `(begin
+                   (for-each delete-file (find-files "." ".*.bin$"))
+                   (for-each delete-file (find-files "." ".*.exe$"))
+                   (for-each delete-file (find-files "." ".*.jar$"))
+                   #t))))
+    (build-system gnu-build-system)
+    (outputs '("out" "jdk" "doc"))
+    (arguments
+     `(#:imported-modules
+       ((guix build syscalls)
+        (ice-9 binary-ports)
+        (rnrs bytevectors)
+        ,@%gnu-build-system-modules)
+       #:tests? #f; requires jtreg
+       ;; TODO package jtreg
+       ;; disable parallel builds, as the openjdk build system does not like -j
+       #:parallel-build? #f
+       #:parallel-tests? #f
+       ;; reenable parallel builds and tests by adding the flags manually
+       #:make-flags (list (string-append "JOBS=" (number->string (parallel-job-count))))
+       #:configure-flags
+       `("--disable-option-checking" ; --enable-fast-install default flag errors otherwise
+         "--disable-warnings-as-errors"
+         ;; make validate-runpath pass, see: http://issues.guix.info/issue/32894
+         "--with-native-debug-symbols=zipped"
+         ;; do not use the bundled libraries
+         "--with-giflib=system"
+         "--with-lcms=system"
+         "--with-libjpeg=system"
+         "--with-libpng=system"
+         ;; allow the build system to locate the system freetype
+         ,(string-append "--with-freetype-include="
+                         (assoc-ref %build-inputs "freetype") "/include")
+         ,(string-append "--with-freetype-lib="
+                         (assoc-ref %build-inputs "freetype") "/lib"))
+       ;; TODO
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'fix-java-shebangs
+           (lambda _
+             ;; This file was "fixed" by patch-source-shebangs, but it requires
+             ;; this exact first line.
+             (substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
+               (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
+             #t))
+         (replace 'build
+           (lambda _
+             (with-output-to-file ".src-rev"
+               (lambda _
+                 (display ,version)))
+             (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes")
+             (invoke "make" "all")
+             #t))
+         ;; jdk 11 does not build jre by default any more
+         ;; building it anyways
+         ;; for further information see:
+         ;; https://github.com/AdoptOpenJDK/openjdk-build/issues/356
+         (add-after 'build 'build-jre
+           (lambda _
+             (invoke "make" "legacy-jre-image")
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (jdk (assoc-ref outputs "jdk"))
+                   (doc (assoc-ref outputs "doc"))
+                   (images (car (find-files "build" ".*-server-release"
+                                            #:directories? #t))))
+               (copy-recursively (string-append images "/images/jdk") jdk)
+               (copy-recursively (string-append images "/images/jre") out)
+               (copy-recursively (string-append images "/images/docs") doc))
+             #t))
+         ;; Some of the libraries in the lib/ folder link to libjvm.so.
+         ;; But that shared object is located in the server/ folder, so it
+         ;; cannot be found.  This phase creates a symbolic link in the
+         ;; lib/ folder so that the other libraries can find it.
+         ;;
+         ;; See:
+         ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
+         ;;
+         ;; FIXME: Find the bug in the build system, so that this symlink is
+         ;; not needed.
+         (add-after 'install 'install-libjvm
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((lib-out (string-append (assoc-ref outputs "out")
+                                             "/lib"))
+                    (lib-jdk (string-append (assoc-ref outputs "jdk")
+                                             "/lib")))
+               (symlink (string-append lib-jdk "/server/libjvm.so")
+                        (string-append lib-jdk "/libjvm.so"))
+               (symlink (string-append lib-out "/server/libjvm.so")
+                        (string-append lib-out "/libjvm.so")))
+             #t))
+         (add-after 'install 'strip-character-data-timestamps
+           (lambda* (#:key outputs #:allow-other-keys)
+             (use-modules (guix build syscalls))
+             (let ((archive (string-append
+                             (assoc-ref outputs "jdk") "/lib/src.zip"))
+                   (dir (mkdtemp! "zip-contents.XXXXXX")))
+               (with-directory-excursion dir
+                 (invoke "unzip" archive))
+               (delete-file archive)
+               (with-directory-excursion dir
+                 (let ((char-data-files (find-files "." "CharacterData.*")))
+                   (for-each (lambda (file)
+                               (substitute* file
+                                 (((string-append "This file was generated "
+                                                 "AUTOMATICALLY from a template "
+                                                 "file.*"))
+                                  (string-append "This file was generated "
+                                                 "AUTOMATICALLY from a template "
+                                                 "file"))))
+                             char-data-files)))
+               (with-directory-excursion dir
+                 (let ((files (find-files "." ".*" #:directories? #t)))
+                   (apply invoke "zip" "-0" "-X" archive files))))))
+         (add-after 'strip-character-data-timestamps 'strip-archive-timestamps
+           (lambda* (#:key outputs #:allow-other-keys)
+             (use-modules (guix build syscalls)
+                          (ice-9 binary-ports)
+                          (rnrs bytevectors))
+             (letrec ((repack-archive
+                    (lambda (archive)
+                      (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
+                        (with-directory-excursion dir
+                          (invoke "unzip" archive))
+                        (delete-file archive)
+                        (for-each (compose repack-archive canonicalize-path)
+                                  (find-files dir "(ct.sym|.*.jar)$"))
+                        (let ((reset-file-timestamp
+                               (lambda (file)
+                                 (let ((s (lstat file)))
+                                   (unless (eq? (stat:type s) 'symlink)
+                                     (format #t "reset ~a~%" file)
+                                     (utime file 0 0 0 0))))))
+                          (for-each reset-file-timestamp
+                                    (find-files dir #:directories? #t)))
+                        (with-directory-excursion dir
+                          (let ((files (find-files "." ".*" #:directories? #t)))
+                            (apply invoke "zip" "-0" "-X" archive files)))))))
+               (for-each repack-archive
+                         (find-files (assoc-ref outputs "doc") ".*.zip$"))
+               (for-each repack-archive
+                         (find-files (assoc-ref outputs "jdk")
+                                     ".*.(zip|jar|diz)$"))
+               (repack-archive (string-append (assoc-ref outputs "jdk") "/lib/ct.sym"))
+               (let ((repack-jmod
+                      (lambda (file-name)
+                        (call-with-input-file file-name
+                          (lambda (file)
+                            (let ((header #vu8(#x4a #x4d #x01 #x00)))
+                              (if (equal? (get-bytevector-n
+                                           file (bytevector-length header))
+                                          header)
+                                  (let* ((header-length (bytevector-length header))
+                                         (temp-file (mkstemp!
+                                                     (string-copy
+                                                      "temp-file.XXXXXX")))
+                                         (temp-filename (port-filename temp-file))
+                                         (content-length
+                                          (- (stat:size (stat file))
+                                             header-length)))
+                             (sendfile temp-file file content-length header-length)
+                             (delete-file file-name)
+                             (close-port temp-file)
+                             (repack-archive (canonicalize-path temp-filename))
+                             (call-with-output-file file-name
+                               (lambda (file)
+                                 (put-bytevector file header)
+                                 (call-with-input-file temp-filename
+                                   (lambda (temp-file)
+                                     (sendfile
+                                      file temp-file
+                                      (stat:size (stat temp-file)) 0)))))))))))))
+                 (for-each repack-jmod
+                           (find-files (assoc-ref outputs "jdk") ".*.jmod$")))
+             #t)))
+         (add-after 'install 'remove-timestamp-from-api-summary
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* (string-append (assoc-ref outputs "doc")
+                                         "/api/overview-summary.html")
+               (("Generated by javadoc \\(11-internal\\).*$")
+                "Generated by javadoc (11-internal) -->\n"))
+             #t)))))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("cups" ,cups)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("giflib" ,giflib)
+       ("lcms" ,lcms)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxrender" ,libxrender)
+       ("libxt" ,libxt)
+       ("libxtst" ,libxtst)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("openjdk10" ,openjdk10)
+       ("openjdk10:jdk" ,openjdk10 "jdk")
+       ("pkg-config" ,pkg-config)
+       ("unzip" ,unzip)
+       ("which" ,which)
+       ("zip" ,zip)))
+    (home-page "https://openjdk.java.net/projects/jdk/11/")
+    (synopsis "Java development kit")
+    (description
+     "This package provides the Java development kit OpenJDK.")
+    (license license:gpl2+)))
+
 (define-public icedtea icedtea-8)
 
 
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 3865bc1b2e..5068de22bb 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -573,11 +573,14 @@ propagate their changes to their respective configuration files.")
        (modify-phases %standard-phases
          (add-before 'check 'blacklist-failing-test
            (lambda _
-             ;; Blacklist a failing test-function. FIXME: Make it pass.
-             ;; Test failure caused by stout/stderr being interleaved.
+             ;; Blacklist failing tests.
              (with-output-to-file "autotests/BLACKLIST"
                (lambda _
-                 (display "[test_channels]\n*\n")))
+                 ;; FIXME: Make it pass.  Test failure caused by stout/stderr
+                 ;; being interleaved.
+                 (display "[test_channels]\n*\n")
+                 ;; This fails with ENOSPC because of too many inotify watches.
+                 (display "[benchNotifyWatcher]\n*\n")))
              #t))
          ;; See upstream commit ee424e9b62368485bba4193053cabb553a1d268e
          (add-after 'unpack 'fix-broken-test
@@ -636,7 +639,7 @@ many more.")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Convenience classes for DBus")
     (description "KDBusAddons provides convenience classes on top of QtDBus,
@@ -1175,7 +1178,7 @@ lower level classes for interaction with the X Windowing System.")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt wrapper for ModemManager DBus API")
     (description "ModemManagerQt provides access to all ModemManager features
@@ -1214,7 +1217,7 @@ messages.")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt wrapper for NetworkManager DBus API")
     (description "NetworkManagerQt provides access to all NetworkManager
@@ -1327,7 +1330,7 @@ feel.")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (native-inputs
      `(("bison" ,bison)
        ("dbus" ,dbus)
@@ -1497,7 +1500,7 @@ with other frameworks.")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Execute actions as privileged user")
     (description "KAuth provides a convenient, system-integrated way to offload
@@ -1806,7 +1809,7 @@ asynchronous jobs.")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Desktop notifications")
     (description "KNotification is used to notify the user of an event.  It
@@ -2011,7 +2014,7 @@ gallons).")
          (replace 'check
            (lambda _
              (setenv "DBUS_FATAL_WARNINGS" "0")
-             (zero? (system* "dbus-launch" "ctest" ".")))))))
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "File searching and indexing")
     (description "Baloo provides file searching and indexing.  It does so by
@@ -3534,8 +3537,8 @@ workspace.")
                (lambda _
                  (display "[testSmb]\n*\n")))
              ;; kuniqueapptest hangs. FIXME: Make this test pass.
-             (zero? (system* "dbus-launch" "ctest" "."
-                             "-E" "kstandarddirstest|kuniqueapptest")))))))
+             (invoke "dbus-launch" "ctest" "."
+                     "-E" "kstandarddirstest|kuniqueapptest"))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "KDE Frameworks 5 porting aid from KDELibs4")
     (description "This framework provides code and utilities to ease the
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 24144797b8..5946ba0b52 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -318,7 +318,7 @@ plugins, as well as code to create plugins, or complete applications.")
 (define-public krita
   (package
     (name "krita")
-    (version "4.1.5")
+    (version "4.1.7.101")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -327,7 +327,7 @@ plugins, as well as code to create plugins, or complete applications.")
                     "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1by8p8ifdp03f05bhg8ygdd1j036anfpjjnzbx63l2fbmy9k6q10"))))
+                "0pvghb17vj3y19wa1n1zfg3yl5206ir3y45znrgdgdw076m5pjav"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
@@ -571,7 +571,7 @@ basic needs and easy to configure for those who want special setups.")
          (replace 'check
            (lambda _
              ;; TODO: Fix this failing test-case
-             (zero? (system* "ctest" "-E" "processtest")))))))
+             (invoke "ctest" "-E" "processtest"))))))
     (home-page "https://www.kde.org/info/plasma-5.13.4.php")
     (synopsis "Network enabled task and system monitoring")
     (description "KSysGuard can obtain information on system load and
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 7a7bb9cf0c..78bfadca26 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -413,8 +413,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 It has been modified to remove all non-free binary blobs.")
     (license license:gpl2)))
 
-(define %linux-libre-version "4.20.4")
-(define %linux-libre-hash "1p7ixkqvnr0mzyivyby8hfix44np7w1nvyxghz8wa1h2nhsszvzv")
+(define %linux-libre-version "4.20.5")
+(define %linux-libre-hash "1fis4izy97d35wb5626av235agn22ww8dfmmcdlbiay37ihwwm98")
 
 (define %linux-libre-4.20-patches
   (list %boot-logo-patch
@@ -427,8 +427,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-4.20-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.19-version "4.19.17")
-(define %linux-libre-4.19-hash "0friqd9wyhddjli4m41wd994ygnwng40a95ry14478rkadfv7iwh")
+(define %linux-libre-4.19-version "4.19.18")
+(define %linux-libre-4.19-hash "1m3qbd09zd7llq0fjsccyjr070n6szl5dj10qrlpd54bnvry22fc")
 
 (define %linux-libre-4.19-patches
   (list %boot-logo-patch
@@ -441,8 +441,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-4.19-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.95")
-(define %linux-libre-4.14-hash "07bxbwb5fan96aws6g91vxkrvl80a53wjbl8xkh4q3c6iah8wkvf")
+(define %linux-libre-4.14-version "4.14.96")
+(define %linux-libre-4.14-hash "03g28n9n4ci8y2qs59vili7dkqag7fmhr9q6ah8l66qn37d375k9")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -451,14 +451,14 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.152"
-                    "0qssksykzbcy58aqvmxk9h1xpaqvfwp31xvxfmwxdh7z4n3yn60y"
+  (make-linux-libre "4.9.153"
+                    "1ks910wk4nggp7ygai2pnr5b61ix2j3gxk95rv9wkd5za15sgbqa"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.171"
-                    "01jd2672fq633xw5vdmifvd6dy93pif28xkvymah82jm9xj1lbqh"
+  (make-linux-libre "4.4.172"
+                    "000bz3jfg0li3rwlf2c80df6682lhi59hj1kwm4hw7whgg69xi7b"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index a435ab661e..13223fbb66 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2016, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
@@ -400,7 +400,8 @@ code analysis tools.")
   (clang-runtime-from-llvm
    llvm-3.5
    "1hsdnzzdr5kglz6fnv3lcsjs222zjsy14y8ax9dy6zqysanplbal"
-   '("clang-runtime-asan-build-fixes.patch")))
+   '("clang-runtime-asan-build-fixes.patch"
+     "clang-3.5-libsanitizer-ustat-fix.patch")))
 
 (define-public clang-3.5
   (clang-from-llvm llvm-3.5 clang-runtime-3.5
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 5777374582..c5e422fbd5 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -76,6 +77,7 @@
   #:use-module (gnu packages gsasl)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libcanberra)
@@ -259,14 +261,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.11.0")
+    (version "1.11.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "1qqhkhlzvjj0iih8vm0wfagv4fzqqy1wnsb4sqsfv7w06ccjdjcj"))
+               "08w7lbhj5ba2zkjcd0cxkgfiy9y82yhg731xjg9i9292kz1x8p6s"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -1071,7 +1073,7 @@ which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.1")
+    (version "1.8.2")
     (source
      (origin
        (method url-fetch)
@@ -1079,7 +1081,7 @@ which can add many functionalities to the base client.")
                            "/msmtp-" version ".tar.xz"))
        (sha256
         (base32
-         "1nm4vizrnrrnknc4mc8nr7grz9q76m1vraa0hsl5rfm34gnsg8ph"))))
+         "14w7lmw1jxlganfk089b0ib23y5917mxbg3xqpid007dd4cmq66i"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsecret" ,libsecret)
@@ -2651,8 +2653,8 @@ replacement for the @code{urlview} program.")
     (license gpl2+)))
 
 (define-public mumi
-  (let ((commit "bfd96ce76b4600ae232e6548b26c9365095fd174")
-        (revision "2"))
+  (let ((commit "ea5a738010148284aed211da953ad670003aefea")
+        (revision "3"))
     (package
       (name "mumi")
       (version (git-version "0.0.0" revision commit))
@@ -2664,7 +2666,7 @@ replacement for the @code{urlview} program.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "05miwfi1bh0v9x2gvn15bwkb3gn4xy53z506ysjzns2y497zkc5h"))))
+                  "0ci5x8dqjmp74w33q2dbs5csxp4ilfmc1xxaa8q2jnh52d7597hl"))))
       (build-system gnu-build-system)
       (arguments
        `(#:phases
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index fbc5ca27ef..7a81caf19f 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -241,7 +241,7 @@ automatically.")
 (define-public scdoc
   (package
    (name "scdoc")
-   (version "1.6.0")
+   (version "1.8.1")
    (source
     (origin
      (method url-fetch)
@@ -250,7 +250,7 @@ automatically.")
      (file-name (string-append name "-" version ".tar.gz"))
      (sha256
       (base32
-       "1ca3js4arkg28gg2iszxxyrq7kgsrz482d1szv5dfd471h3vr5m3"))))
+       "1f3qrnbjr9ikbdvpsyx726nyiz4f7ka38rimy9fvbl7kmi62w1v7"))))
    (build-system gnu-build-system)
    (arguments
     `(#:make-flags '("CC=gcc")
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index cccc3636a4..871b4a5a3f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -48,6 +48,7 @@
 
 (define-module (gnu packages maths)
   #:use-module (ice-9 regex)
+  #:use-module (ice-9 match)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -2297,20 +2298,18 @@ also provides threshold-based ILU factorization preconditioners.")
 (define-public superlu-dist
   (package
     (name "superlu-dist")
-    (version "5.3.0")
+    (version "6.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/"
                            "superlu_dist_" version ".tar.gz"))
        (sha256
-        (base32 "0ja5ihqivkda1wd58y4lmzvmwssm9g91f70c5q0fzwhng6580h6y"))
+        (base32 "0pqgcgh1yxhfzs99fas3mggajzd5wca3nbyp878rziy74gfk03dl"))
        (modules '((guix build utils)))
        (snippet
         ;; Replace the non-free implementation of MC64 with a stub
         '(begin
-           (use-modules (ice-9 regex)
-                        (ice-9 rdelim))
            (call-with-output-file "SRC/mc64ad_dist.c"
              (lambda (port)
                (display "
@@ -2326,92 +2325,57 @@ void mc64ad_dist (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
   abort ();
 }\n" port)))
            (substitute* "SRC/util.c"    ;adjust default algorithm
-             (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag")
-              "RowPerm = NOROWPERM"))
+             (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag_MC64;")
+              ;; TODO: set to "LargeDiag_AWPM" once combinatorial-blas has
+              ;; general (i.e. non-square) processor-grid support.
+              "RowPerm = NOROWPERM;"))
            #t))
-       (patches (search-patches "superlu-dist-scotchmetis.patch"))))
-    (build-system gnu-build-system)
+       (patches (search-patches "superlu-dist-scotchmetis.patch"
+                                "superlu-dist-awpm-grid.patch"))))
+    (build-system cmake-build-system)
     (native-inputs
      `(("tcsh" ,tcsh)))
     (inputs
-     `(("gfortran" ,gfortran)))
+     `(("gfortran" ,gfortran)
+       ("blas" ,openblas)
+       ("lapack" ,lapack)
+       ("combblas" ,combinatorial-blas)))
     (propagated-inputs
-     `(("openmpi" ,openmpi)             ;headers include MPI heades
-       ("lapack" ,lapack)               ;required to link with output library
-       ("pt-scotch" ,pt-scotch)))       ;same
+     `(("mpi" ,openmpi)                 ;headers include MPI heades
+       ("parmetis" ,pt-scotch32 "metis")
+       ("pt-scotch" ,pt-scotch32)))
     (arguments
-     `(#:parallel-build? #f             ;race conditions using ar
+     `(#:parallel-tests? #f             ;tests use MPI and OpenMP
+       #:configure-flags (list "-DBUILD_SHARED_LIBS:BOOL=YES"
+                               "-DTPL_ENABLE_COMBBLASLIB=YES"
+                               "-DTPL_BLAS_LIBRARIES=-lopenblas"
+                               "-DTPL_LAPACK_LIBRARIES=-llapack"
+                               (string-append "-DTPL_PARMETIS_LIBRARIES="
+                                              (string-join
+                                               '("ptscotchparmetis" "ptscotch" "ptscotcherr"
+                                                 "scotchmetis" "scotch" "scotcherr")
+                                               ";"))
+                               (string-append "-DTPL_PARMETIS_INCLUDE_DIRS="
+                                              (assoc-ref %build-inputs "parmetis")
+                                              "/include")
+                               "-DTPL_ENABLE_COMBBLASLIB=ON"
+                               (string-append "-DTPL_COMBBLAS_INCLUDE_DIRS="
+                                              (assoc-ref %build-inputs "combblas")
+                                              "/include/CombBLAS;"
+                                              (assoc-ref %build-inputs "combblas")
+                                              "/include/BipartiteMatchings")
+                               "-DTPL_COMBBLAS_LIBRARIES=CombBLAS")
        #:phases
        (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (call-with-output-file "make.inc"
-               (lambda (port)
-                 (format port "
-PLAT        =
-DSuperLUroot = ~a
-DSUPERLULIB  = ~a/lib/libsuperlu_dist.a
-BLASDEF     = -DUSE_VENDOR_BLAS
-BLASLIB     = -L~a/lib -lblas
-PARMETISLIB = -L~a/lib \
-              -lptscotchparmetis -lptscotch -lptscotcherr -lptscotcherrexit \
-              -lscotch -lscotcherr -lscotcherrexit
-METISLIB    = -L~:*~a/lib \
-              -lscotchmetis -lscotch -lscotcherr -lscotcherrexit
-LIBS        = $(DSUPERLULIB) $(PARMETISLIB) $(METISLIB) $(BLASLIB)
-ARCH        = ar
-ARCHFLAGS   = cr
-RANLIB      = ranlib
-CC          = mpicc
-PIC         = -fPIC
-CFLAGS      = -O3 -g -DPRNTlevel=0 $(PIC)
-NOOPTS      = -O0 -g $(PIC)
-FORTRAN     = mpifort
-FFLAGS      = -O2 -g $(PIC)
-LOADER      = $(CC)
-CDEFS       = -DAdd_"
-                         (getcwd)
-                         (assoc-ref outputs "out")
-                         (assoc-ref inputs "lapack")
-                         (assoc-ref inputs "pt-scotch"))))
-             #t))
-         (add-after 'unpack 'remove-broken-symlinks
+         (add-before 'configure 'set-c++-standard
            (lambda _
-             (for-each delete-file
-                       (find-files "MAKE_INC" "\\.#make\\..*"))
-             #t))
-         (add-before 'build 'create-install-directories
-           (lambda* (#:key outputs #:allow-other-keys)
-             (for-each
-              (lambda (dir)
-                (mkdir-p (string-append (assoc-ref outputs "out")
-                                        "/" dir)))
-              '("lib" "include"))
-             #t))
+             (substitute* "CMakeLists.txt"
+               ;; AWPM headers require C++14
+               (("CMAKE_CXX_STANDARD 11") "CMAKE_CXX_STANDARD 14"))))
 	 (add-before 'check 'mpi-setup
 	   ,%openmpi-setup)
-         (replace 'check
-           (lambda _
-             (with-directory-excursion "EXAMPLE"
-               (invoke "mpirun" "-n" "2"
-                       "./pddrive" "-r" "1" "-c" "2" "g20.rua")
-               (invoke "mpirun" "-n" "2"
-                       "./pzdrive" "-r" "1" "-c" "2" "cg20.cua"))
-             #t))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Library is placed in lib during the build phase.  Copy over
-             ;; headers to include.
-             (let* ((out    (assoc-ref outputs "out"))
-                    (incdir (string-append out "/include")))
-               (for-each (lambda (file)
-                           (let ((base (basename file)))
-                             (format #t "installing `~a' to `~a'~%"
-                                     base incdir)
-                             (copy-file file
-                                        (string-append incdir "/" base))))
-                         (find-files "SRC" ".*\\.h$")))
-             #t)))))
+         (add-before 'check 'omp-setup
+           (lambda _ (setenv "OMP_NUM_THREADS" "1") #t)))))
     (home-page (package-home-page superlu))
     (synopsis "Parallel supernodal direct solver")
     (description
@@ -2423,25 +2387,25 @@ implemented in ANSI C, and MPI for communications.")
 (define-public scotch
   (package
     (name "scotch")
-    (version "6.0.5a")
+    (version "6.0.6")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "https://gforge.inria.fr/frs/download.php/"
                           "latestfile/298/scotch_" version ".tar.gz"))
       (sha256
-       (base32 "0vsmgjz8qv80di3ljmc7hbdsizxxxwy2b9rgd2fl1mdc6dgbj8av"))
-      (patches (search-patches "scotch-test-threading.patch"
-                               "scotch-build-parallelism.patch"
-                               "scotch-graph-induce-type-64.patch"
-                               "scotch-graph-diam-64.patch"))))
+       (base32 "1ky4k9r6jvajhqaqnnx6h8fkmds2yxgp70dpr1qzwcyhi2nhqvv8"))
+      (patches (search-patches "scotch-build-parallelism.patch"
+                               "scotch-integer-declarations.patch"))))
     (build-system gnu-build-system)
     (inputs
      `(("zlib" ,zlib)
        ("flex" ,flex)
        ("bison" ,bison)))
+    (outputs '("out" "metis"))
     (arguments
-     `(#:phases
+     `(#:make-flags (list (string-append "prefix=" %output))
+       #:phases
        (modify-phases %standard-phases
          (add-after
           'unpack 'chdir-to-src
@@ -2476,7 +2440,7 @@ YACC = bison -pscotchyy -y -b y
                         '("COMMON_FILE_COMPRESS_GZ"
                           "COMMON_PTHREAD"
                           "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE64"             ;use 'long' instead of 'int'
+                          "INTSIZE64"             ;use 'int64_t'
                           ;; Prevents symbolc clashes with libesmumps
                           "SCOTCH_RENAME"
                           ;; XXX: Causes invalid frees in superlu-dist tests
@@ -2489,22 +2453,21 @@ YACC = bison -pscotchyy -y -b y
             (invoke "make"
                     (format #f "-j~a" (parallel-job-count))
                     "esmumps")))
-         (replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              (mkdir out)
-              (invoke "make"
-                      (string-append "prefix=" out)
-                      "install")
-              ;; esmumps files are not installed with the above
-              (for-each (lambda (f)
-                          (copy-file f (string-append out "/include/" f)))
-                        (find-files "../include" ".*esmumps.h$"))
-              (for-each (lambda (f)
-                          (copy-file f (string-append out "/lib/" f)))
-                        (find-files "../lib" "^lib.*esmumps.*"))
-              #t))))))
+         (add-before 'install 'make-install-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (mkdir (assoc-ref outputs "out"))))
+         (add-after 'install 'install-metis
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "metis")))
+               (mkdir out)
+               ;; metis files are not installed with 'make install'
+               (for-each (lambda (f)
+                           (install-file f (string-append out "/include")))
+                         (find-files "../include/" ".*metis\\.h"))
+               (for-each (lambda (f)
+                           (install-file f (string-append out "/lib")))
+                         (find-files "../lib/" ".*metis\\..*"))
+               #t))))))
     (home-page "http://www.labri.fr/perso/pelegrin/scotch/")
     (synopsis "Programs and libraries for graph algorithms")
     (description "SCOTCH is a set of programs and libraries which implement
@@ -2742,6 +2705,7 @@ to BMP, JPEG or PNG image formats.")
     (inputs
      `(("gcl" ,gcl)
        ("gnuplot" ,gnuplot)                       ;for plots
+       ("sed" ,sed)
        ("tk" ,tk)))                               ;Tcl/Tk is used by 'xmaxima'
     (native-inputs
      `(("texinfo" ,texinfo)
@@ -2764,6 +2728,17 @@ to BMP, JPEG or PNG image formats.")
        #:make-flags (list "TMPDIR=/tmp")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((sed (string-append (assoc-ref inputs "sed") "/bin/sed"))
+                    (coreutils (assoc-ref inputs "coreutils"))
+                    (dirname (string-append coreutils "/bin/dirname"))
+                    (head (string-append coreutils "/bin/head")))
+               (substitute* "src/maxima.in"
+                 (("sed ") (string-append sed " "))
+                 (("dirname") dirname)
+                 (("head") head))
+               #t)))
          (add-before 'check 'pre-check
            (lambda _
              (chmod "src/maxima" #o555)
@@ -3531,7 +3506,11 @@ in finite element programs.")
         ``("-DMPI_C_COMPILER=mpicc"
            "-DMPI_CXX_COMPILER=mpicxx"
            "-DMPI_Fortran_COMPILER=mpifort"
-           ,@,cf))))
+           ,@,cf))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (add-before 'check 'mpi-setup
+             ,%openmpi-setup)))))
     (synopsis "Finite element library (with MPI support)")))
 
 (define-public flann
@@ -4215,3 +4194,53 @@ easily be incorporated into existing simulation codes.")
            (add-before 'check 'mpi-setup
 	     ,%openmpi-setup)))))
     (synopsis "SUNDIALS with OpenMPI support")))
+
+(define-public combinatorial-blas
+  (package
+    (name "combinatorial-blas")
+    (version "1.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://eecs.berkeley.edu/~aydin/CombBLAS_FILES/"
+                           "CombBLAS_beta_"
+                           (match (string-split version #\.)
+                            ((major minor patch)
+                             (string-append major minor "_" patch))) ;e.g. "16_2"
+                           ".tgz"))
+       (sha256
+        (base32
+         "1a9wbgdqyy1whhfc0yl0yqkax3amnqa6iihhq48d063gc0jwfd9a"))
+       (patches (search-patches "combinatorial-blas-awpm.patch"
+                                "combinatorial-blas-io-fix.patch"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("mpi" ,openmpi)
+       ("test-data" ,(origin
+                       (method url-fetch)
+                       (uri (string-append "https://people.eecs.berkeley.edu/~aydin/"
+                                           "CombBLAS_FILES/testdata_combblas1.6.1.tgz"))
+                       (sha256
+                        (base32
+                         "01y2781cy3fww7znmidrp85mf8zx0c905w5vzvk1mgrmhhynim87"))))))
+    (arguments
+     `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"
+                           "-DCMAKE_CXX_FLAGS=-DUSE_FUNNEL")
+       #:parallel-tests? #f             ;tests use 'mpiexec -n4'
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup)
+         (add-before 'check 'test-setup
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "OMP_NUM_THREADS" "2")
+             (invoke "tar" "xf" (assoc-ref inputs "test-data")))))))
+    (home-page "https://people.eecs.berkeley.edu/~aydin/CombBLAS/html/")
+    (synopsis "Linear algebra primitives for graph analytics")
+    (description "The Combinatorial BLAS (CombBLAS) is an extensible
+distributed-memory parallel graph library offering a small but powerful set of
+linear algebra primitives specifically targeting graph analytics.")
+    (license (list
+              license:gpl2+             ;include/psort/(funnel|sort)*.h
+              license:x11               ;usort and psort
+              license:bsd-3))))         ;CombBLAS and MersenneTwister.h
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index f08a7f5f88..6e56142bd1 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -50,7 +50,7 @@
   ;; to migrate to 2.0.
   (package
     (name "hwloc")
-    (version "1.11.10")
+    (version "1.11.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.open-mpi.org/software/hwloc/v"
@@ -58,7 +58,7 @@
                                   "/downloads/hwloc-" version ".tar.bz2"))
               (sha256
                (base32
-                "1ryibcng40xcq22lsj85fn2vcvrksdx9rr3wwxpq8dw37lw0is1b"))))
+                "0za1b9lvrm3rhn0lrxja5f64r0aq1qs4m0pxn1ji2mbi8ndppyyx"))))
     (build-system gnu-build-system)
     (outputs '("out"           ;'lstopo' & co., depends on Cairo, libx11, etc.
                "lib"           ;small closure
@@ -128,7 +128,7 @@ bind processes, and much more.")
   ;; Note: 2.0 isn't the default yet, see above.
   (package
     (inherit hwloc)
-    (version "2.0.2")
+    (version "2.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.open-mpi.org/software/hwloc/v"
@@ -136,7 +136,7 @@ bind processes, and much more.")
                                   "/downloads/hwloc-" version ".tar.bz2"))
               (sha256
                (base32
-                "1phc863d5b2fvwpyyq4mlh4rkjdslh6h0h197zmyk3prwrq7si8l"))))
+                "09f7ajak8wv5issr0hw72vs3jkldc7crcc7z5fd34sspkvrsm4z3"))))
 
     ;; libnuma is no longer needed.
     (inputs (alist-delete "numactl" (package-inputs hwloc)))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index f4f96079b9..4fe352fe96 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
-;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -19,6 +19,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2577,6 +2578,28 @@ MusicBrainz database.")
 (define-public python2-musicbrainzngs
   (package-with-python2 python-musicbrainzngs))
 
+(define-public python-isrcsubmit
+  (package
+    (name "python-isrcsubmit")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "isrcsubmit" version))
+       (sha256
+        (base32
+         "0jh4cni8qhri6dh83cmp0i0m0384vv0vznlygv49wj9xzh1d99qv"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-discid" ,python-discid)
+       ("python-musicbrainzngs" ,python-musicbrainzngs)))
+    (home-page "https://github.com/JonnyJD/musicbrainz-isrcsubmit")
+    (synopsis "Submit ISRCs from CDs to MusicBrainz")
+    (description "@code{isrcsubmit} is a tool to extract @dfn{International
+Standard Recording Code} (ISRCs) from audio CDs and submit them to
+@url{https://musicbrainz.org/, MusicBrainz}.")
+    (license license:gpl3+)))
+
 (define-public python2-pyechonest
   (package
     (name "python2-pyechonest")
@@ -3613,7 +3636,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
 (define-public musescore
   (package
     (name "musescore")
-    (version "3.0")
+    (version "3.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3622,7 +3645,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0g8n8xpw5d6wh8bwbvy12sinl9i0ir009sr28i4izr28lr4x8v50"))
+                "085qwfv3fsgry1pnx531w83lnyvf7kbaklipdf8zqa9shi6d3x9i"))
               (modules '((guix build utils)))
               (snippet
                ;; Un-bundle OpenSSL and remove unused libraries.
@@ -4076,6 +4099,42 @@ it provides a submission URL for adding the disc ID to the database and gathers
 ISRCs and the MCN (=UPC/EAN) from disc.")
     (license license:lgpl2.1+)))
 
+(define-public python-discid
+  (package
+    (name "python-discid")
+    (version "1.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "discid" version))
+       (sha256
+        (base32
+         "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
+    (build-system python-build-system)
+    (inputs
+     `(("libdiscid" ,libdiscid)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-libdiscid
+           ;; Set path of libdiscid
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((discid (assoc-ref inputs "libdiscid")))
+               (substitute* "discid/libdiscid.py"
+                 (("lib_name = (.*)$" all name)
+                  (string-append "lib_name = \"" discid
+                                 "/lib/libdiscid.so.0\"\n")))
+               #t))))))
+    (home-page "https://python-discid.readthedocs.io/")
+    (synopsis "Python bindings for Libdiscid")
+    (description
+     "This package provides Python bindings for the Libdiscid library.  The
+main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
+Disc IDs} for use with the MusicBrainz database.  Additionally the disc
+@dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
+Recording Code} (ISRC) can be extracted.}")
+    (license license:lgpl3+)))
+
 (define-public libmusicbrainz
   (package
     (name "libmusicbrainz")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index df0630219f..6ba544ecd9 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -547,7 +547,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.4.0")
+    (version "5.4.1")
     (source
      (origin
        (method url-fetch)
@@ -555,7 +555,7 @@ and up to 1 Mbit/s downstream.")
                            name "_" version ".tar.xz"))
        (sha256
         (base32
-         "0y73b3z1akni620s1hlrijwdrk95ca1c8csjds48vpd6z86awx9p"))))
+         "0l7chmlvsl22r5cfm6fpm999z2n3sjrnx3ha8f8kf42cn4gmkriy"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 66712da08c..ef38a6f61a 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -52,6 +52,7 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages man)
@@ -106,8 +107,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.16.0")
-        (commit "7ba2b27467a39956f10e2e11061d9569e4b7d632")
-        (revision 8))
+        (commit "4bddd12ad540d45a33a5f9f129b896843dca603f")
+        (revision 9))
     (package
       (name "guix")
 
@@ -123,7 +124,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "14srgkl0vyr6q7azv76nncp63gngmm71y18ybyj9f6l6s4shbcm4"))
+                  "1abn4ghb25kn0cmr9dbb3q3fxdcc0g2fnnmbrykxv111s6ahdmlw"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -301,9 +302,6 @@ the Nix package manager.")
       (license license:gpl3+)
       (properties '((ftp-server . "alpha.gnu.org"))))))
 
-;; Alias for backward compatibility.
-(define-public guix-devel guix)
-
 (define-public guix-daemon
   ;; This package is for internal consumption: it allows us to quickly build
   ;; the 'guix-daemon' program and use that in (guix self), used by 'guix
diff --git a/gnu/packages/patches/combinatorial-blas-awpm.patch b/gnu/packages/patches/combinatorial-blas-awpm.patch
new file mode 100644
index 0000000000..86d4ab2dcf
--- /dev/null
+++ b/gnu/packages/patches/combinatorial-blas-awpm.patch
@@ -0,0 +1,67 @@
+Install BipartiteMatchings headers for SuperLU_DIST.
+
+--- a/BipartiteMatchings/ApproxWeightPerfectMatching.h
++++ b/BipartiteMatchings/ApproxWeightPerfectMatching.h
+@@ -9,7 +9,7 @@
+ #ifndef ApproxWeightPerfectMatching_h
+ #define ApproxWeightPerfectMatching_h
+ 
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include "BPMaximalMatching.h"
+ #include "BPMaximumMatching.h"
+ #include <parallel/algorithm>
+--- a/BipartiteMatchings/BPMaximalMatching.h
++++ b/BipartiteMatchings/BPMaximalMatching.h
+@@ -1,7 +1,7 @@
+ #ifndef BP_MAXIMAL_MATCHING_H
+ #define BP_MAXIMAL_MATCHING_H
+ 
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include <iostream>
+ #include <functional>
+ #include <algorithm>
+--- a/BipartiteMatchings/BPMaximumMatching.h
++++ b/BipartiteMatchings/BPMaximumMatching.h
+@@ -1,7 +1,7 @@
+ #ifndef BP_MAXIMUM_MATCHING_H
+ #define BP_MAXIMUM_MATCHING_H
+ 
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include <mpi.h>
+ #include <sys/time.h>
+ #include <iostream>
+--- a/BipartiteMatchings/MatchingDefs.h
++++ b/BipartiteMatchings/MatchingDefs.h
+@@ -9,7 +9,7 @@
+ #ifndef MatchingDefs_h
+ #define MatchingDefs_h
+ 
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ #include <iostream>
+ 
+ namespace combblas {
+--- a/BipartiteMatchings/Utility.h
++++ b/BipartiteMatchings/Utility.h
+@@ -1,7 +1,7 @@
+ #ifndef BP_UTILITY_H
+ #define BP_UTILITY_H
+ 
+-#include "../CombBLAS.h"
++#include "CombBLAS.h"
+ 
+ namespace combblas {
+ 
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -68,6 +68,7 @@ set_property(TARGET CombBLAS PROPERTY VERSION ${CombBLAS_VERSION})
+ # installation
+ install(DIRECTORY include/ DESTINATION include)
+ install(DIRECTORY psort-1.0/include/ DESTINATION include)
++install(DIRECTORY BipartiteMatchings DESTINATION include FILES_MATCHING PATTERN "*.h")
+ install(TARGETS CombBLAS EXPORT CombBLASTargets
+   LIBRARY DESTINATION lib
+   ARCHIVE DESTINATION lib
diff --git a/gnu/packages/patches/combinatorial-blas-io-fix.patch b/gnu/packages/patches/combinatorial-blas-io-fix.patch
new file mode 100644
index 0000000000..0ad28e5e0b
--- /dev/null
+++ b/gnu/packages/patches/combinatorial-blas-io-fix.patch
@@ -0,0 +1,14 @@
+IO not appropriate in the context of a sorting routine, and in any case the
+proper headers are not included, so gcc emits an undefined symbol error.
+Remove the "printf" statement.
+
+--- CombBLAS_beta_16_2/usort/include/usort/seqUtils.tcc
++++ CombBLAS_beta_16_2/usort/include/usort/seqUtils.tcc
+@@ -142,7 +142,6 @@
+       }
+         if ( (a[nmax]==a[nmin]) && (ctr==0) )
+         {
+-          printf("All the numbers are identical, the list is sorted\n");
+           return;
+         }
+ 
diff --git a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch
index 33203b1a33..d9a7dfe550 100644
--- a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch
+++ b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch
@@ -1,7 +1,7 @@
 Fixes needed when avoiding bundled libraries.
 
---- icecat-60.2.0/xpcom/build/moz.build.orig	2018-09-13 17:46:49.000000000 -0400
-+++ icecat-60.2.0/xpcom/build/moz.build	2018-09-22 04:26:50.659564554 -0400
+--- icecat-60.5.0/xpcom/build/moz.build.orig	2018-09-13 17:46:49.000000000 -0400
++++ icecat-60.5.0/xpcom/build/moz.build	2018-09-22 04:26:50.659564554 -0400
 @@ -99,10 +99,5 @@
      '/docshell/base',
  ]
@@ -13,8 +13,8 @@ Fixes needed when avoiding bundled libraries.
 -
  if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
      CXXFLAGS += CONFIG['TK_CFLAGS']
---- icecat-60.2.0/storage/moz.build.orig	2018-09-13 17:51:11.000000000 -0400
-+++ icecat-60.2.0/storage/moz.build	2018-09-22 04:26:50.659564554 -0400
+--- icecat-60.5.0/storage/moz.build.orig	2018-09-13 17:51:11.000000000 -0400
++++ icecat-60.5.0/storage/moz.build	2018-09-22 04:26:50.659564554 -0400
 @@ -117,7 +117,6 @@
      DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True
  
@@ -23,8 +23,8 @@ Fixes needed when avoiding bundled libraries.
      '/dom/base',
  ]
  
---- icecat-60.2.0/dom/indexedDB/moz.build.orig	2018-09-13 17:49:42.000000000 -0400
-+++ icecat-60.2.0/dom/indexedDB/moz.build	2018-09-22 04:26:50.663564574 -0400
+--- icecat-60.5.0/dom/indexedDB/moz.build.orig	2018-09-13 17:49:42.000000000 -0400
++++ icecat-60.5.0/dom/indexedDB/moz.build	2018-09-22 04:26:50.663564574 -0400
 @@ -102,7 +102,6 @@
      CXXFLAGS += ['-Wno-error=shadow']
  
@@ -33,8 +33,8 @@ Fixes needed when avoiding bundled libraries.
      '/dom/base',
      '/dom/storage',
      '/ipc/glue',
---- icecat-60.2.0/media/webrtc/trunk/webrtc/base/rtc_task_queue_gn/moz.build.orig	2018-09-13 17:40:54.000000000 -0400
-+++ icecat-60.2.0/media/webrtc/trunk/webrtc/base/rtc_task_queue_gn/moz.build	2018-09-23 21:33:12.319975105 -0400
+--- icecat-60.5.0/media/webrtc/trunk/webrtc/base/rtc_task_queue_gn/moz.build.orig	2018-09-13 17:40:54.000000000 -0400
++++ icecat-60.5.0/media/webrtc/trunk/webrtc/base/rtc_task_queue_gn/moz.build	2018-09-23 21:33:12.319975105 -0400
 @@ -130,11 +130,6 @@
      DEFINES["WEBRTC_POSIX"] = True
      DEFINES["_FILE_OFFSET_BITS"] = "64"
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
new file mode 100644
index 0000000000..2a11bf0b70
--- /dev/null
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -0,0 +1,154 @@
+Make some of the changes needed to the 'makeicecat' script, to allow it to run
+in a snippet without network access.  After this patch is applied, some
+additional changes will be made using 'substitute*'.
+
+diff --git a/makeicecat b/makeicecat
+index aa46b94..db27a86 100644
+--- a/makeicecat
++++ b/makeicecat
+@@ -36,75 +36,75 @@ export DEBFULLNAME="Ruben Rodriguez"
+ 
+ DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
+ 
+-mkdir output
+-cd output
++# mkdir output
++# cd output
+ 
+ ###############################################################################
+ # Retrieve FF source code
+ ###############################################################################
+ 
+-rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
+-
+-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
+-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
+-gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355
+-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
+-
+-echo Extracting Firefox tarball
+-tar -xf firefox-${FFVERSION}esr.source.tar.xz
+-
+-mv firefox-${FFVERSION} $SOURCEDIR
++# rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
++# 
++# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
++# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
++# gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355
++# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
++# 
++# echo Extracting Firefox tarball
++# tar -xf firefox-${FFVERSION}esr.source.tar.xz
++# 
++# mv firefox-${FFVERSION} $SOURCEDIR
+ 
+ ###############################################################################
+ # Retrieve /debian from Ubuntu
+ ###############################################################################
+ 
+-rm -rf firefox.$CODENAME
+-bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME
+-cd firefox.$CODENAME
+-bzr revert -r$REVISION
+-echo '3.0 (native)' > debian/source/format
+-
+-for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch
+-do
+-  rm debian/patches/$PATCH
+-  sed "/$PATCH/d" -i debian/patches/series
+-done
+-sed "/test-/d" -i debian/patches/series
+-cd ..
+-
+-mv firefox.$CODENAME/debian $SOURCEDIR
+-rm -rf firefox.$CODENAME
++# rm -rf firefox.$CODENAME
++# bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME
++# cd firefox.$CODENAME
++# bzr revert -r$REVISION
++# echo '3.0 (native)' > debian/source/format
++# 
++# for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch
++# do
++#   rm debian/patches/$PATCH
++#   sed "/$PATCH/d" -i debian/patches/series
++# done
++# sed "/test-/d" -i debian/patches/series
++# cd ..
++# 
++# mv firefox.$CODENAME/debian $SOURCEDIR
++# rm -rf firefox.$CODENAME
+ 
+ ###############################################################################
+ # Retrieve l10n
+ ###############################################################################
+ 
+-mkdir l10n
+-cd l10n
+-while read line;do
+-    line=$(echo $line |cut -d' ' -f1)
+-    #[ $line = "es-ES" ] || continue # To speed up testing
+-    [ $line = "en-US" ] && continue
+-    hg clone https://hg.mozilla.org/l10n-central/$line
+-    mkdir -p $line/browser/chrome/browser/preferences
+-    touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
+-    rm -rf $line/.hg*
+-done < ../$SOURCEDIR/browser/locales/shipped-locales
+-cd ..
+-
+-mv l10n $SOURCEDIR
+-
+-hg clone http://hg.mozilla.org/l10n/compare-locales/
+-cd compare-locales/
+-hg checkout RELEASE_3_3_0
+-cd ..
+-rm compare-locales/.hg* compare-locales/.git* -rf
+-mv compare-locales $SOURCEDIR/l10n
++# mkdir l10n
++# cd l10n
++# while read line;do
++#     line=$(echo $line |cut -d' ' -f1)
++#     #[ $line = "es-ES" ] || continue # To speed up testing
++#     [ $line = "en-US" ] && continue
++#     hg clone https://hg.mozilla.org/l10n-central/$line
++#     mkdir -p $line/browser/chrome/browser/preferences
++#     touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
++#     rm -rf $line/.hg*
++# done < ../$SOURCEDIR/browser/locales/shipped-locales
++# cd ..
++# 
++# mv l10n $SOURCEDIR
++# 
++# hg clone http://hg.mozilla.org/l10n/compare-locales/
++# cd compare-locales/
++# hg checkout RELEASE_3_3_0
++# cd ..
++# rm compare-locales/.hg* compare-locales/.git* -rf
++# mv compare-locales $SOURCEDIR/l10n
+ 
+ #######################################################
+ 
+-cd $SOURCEDIR
++# cd $SOURCEDIR
+ 
+ #for patch in $DATA/patches/*; do
+ #    echo Patching with file: $patch
+@@ -720,7 +720,7 @@ debian/rules debian/control
+ touch -d "yesterday" debian/control
+ debian/rules debian/control
+ 
+-echo | dch -b -D stable -v "$ICECATVERSION"  "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)"
++# echo | dch -b -D stable -v "$ICECATVERSION"  "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)"
+ sed "1s/firefox/icecat/" -i debian/changelog
+ 
+ touch configure js/src/configure
+@@ -734,6 +734,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
+ /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
+ 
+ 
+-cd ..
+-echo Packaging tarball
+-tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
++# cd ..
++# echo Packaging tarball
++# tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
diff --git a/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch b/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch
index 94c211b797..776b5f3d9a 100644
--- a/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch
+++ b/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch
@@ -4,8 +4,8 @@ Based on:
   https://svnweb.freebsd.org/ports/head/www/firefox-esr/files/patch-bug847568?revision=472833&view=co
 Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
 
---- icecat-60.2.0/config/system-headers.mozbuild
-+++ icecat-60.2.0/config/system-headers.mozbuild
+--- icecat-60.5.0/config/system-headers.mozbuild
++++ icecat-60.5.0/config/system-headers.mozbuild
 @@ -1311,6 +1311,19 @@
          'pixman.h',
      ]
@@ -26,8 +26,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  if CONFIG['MOZ_SYSTEM_LIBVPX']:
      system_headers += [
          'vpx_mem/vpx_mem.h',
---- icecat-60.2.0/dom/base/moz.build
-+++ icecat-60.2.0/dom/base/moz.build
+--- icecat-60.5.0/dom/base/moz.build
++++ icecat-60.5.0/dom/base/moz.build
 @@ -474,6 +474,9 @@
  if CONFIG['MOZ_X11']:
      CXXFLAGS += CONFIG['TK_CFLAGS']
@@ -38,8 +38,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  GENERATED_FILES += [
      'PropertyUseCounterMap.inc',
      'UseCounterList.h',
---- icecat-60.2.0/gfx/graphite2/moz-gr-update.sh
-+++ icecat-60.2.0/gfx/graphite2/moz-gr-update.sh
+--- icecat-60.5.0/gfx/graphite2/moz-gr-update.sh
++++ icecat-60.5.0/gfx/graphite2/moz-gr-update.sh
 @@ -1,6 +1,7 @@
  #!/bin/bash
  
@@ -66,8 +66,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  
  echo
  echo If gfx/graphite2/src/files.mk has changed, please make corresponding
---- icecat-60.2.0/gfx/moz.build
-+++ icecat-60.2.0/gfx/moz.build
+--- icecat-60.5.0/gfx/moz.build
++++ icecat-60.5.0/gfx/moz.build
 @@ -10,6 +10,12 @@ with Files('**'):
  if CONFIG['MOZ_TREE_CAIRO']:
      DIRS += ['cairo']
@@ -90,8 +90,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
      'ots/src',
      'thebes',
      'ipc',
---- icecat-60.2.0/gfx/skia/generate_mozbuild.py
-+++ icecat-60.2.0/gfx/skia/generate_mozbuild.py
+--- icecat-60.5.0/gfx/skia/generate_mozbuild.py
++++ icecat-60.5.0/gfx/skia/generate_mozbuild.py
 @@ -148,6 +148,9 @@
          '-Wno-unused-private-field',
      ]
@@ -102,8 +102,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'):
      CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
      CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
---- icecat-60.2.0/gfx/skia/moz.build
-+++ icecat-60.2.0/gfx/skia/moz.build
+--- icecat-60.5.0/gfx/skia/moz.build
++++ icecat-60.5.0/gfx/skia/moz.build
 @@ -822,6 +822,9 @@
          '-Wno-unused-private-field',
      ]
@@ -114,8 +114,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'):
      CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
      CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
---- icecat-60.2.0/gfx/thebes/moz.build
-+++ icecat-60.2.0/gfx/thebes/moz.build
+--- icecat-60.5.0/gfx/thebes/moz.build
++++ icecat-60.5.0/gfx/thebes/moz.build
 @@ -272,7 +272,13 @@
  
  LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
@@ -131,8 +131,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  
  if CONFIG['CC_TYPE'] == 'clang':
      # Suppress warnings from Skia header files.
---- icecat-60.2.0/intl/unicharutil/util/moz.build
-+++ icecat-60.2.0/intl/unicharutil/util/moz.build
+--- icecat-60.5.0/intl/unicharutil/util/moz.build
++++ icecat-60.5.0/intl/unicharutil/util/moz.build
 @@ -25,4 +25,7 @@ UNIFIED_SOURCES += [
      'nsUnicodeProperties.cpp',
  ]
@@ -141,8 +141,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
 +
  FINAL_LIBRARY = 'xul'
---- icecat-60.2.0/netwerk/dns/moz.build
-+++ icecat-60.2.0/netwerk/dns/moz.build
+--- icecat-60.5.0/netwerk/dns/moz.build
++++ icecat-60.5.0/netwerk/dns/moz.build
 @@ -76,3 +76,6 @@
  
  if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
@@ -150,9 +150,9 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
 +
 +if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
 +    CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
---- icecat-60.2.0/old-configure.in
-+++ icecat-60.2.0/old-configure.in
-@@ -3995,6 +3995,27 @@
+--- icecat-60.5.0/old-configure.in
++++ icecat-60.5.0/old-configure.in
+@@ -3971,6 +3971,27 @@
  AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
  
  dnl ========================================================
@@ -180,8 +180,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  dnl Check for pixman and cairo
  dnl ========================================================
  
---- icecat-60.2.0/toolkit/library/moz.build
-+++ icecat-60.2.0/toolkit/library/moz.build
+--- icecat-60.5.0/toolkit/library/moz.build
++++ icecat-60.5.0/toolkit/library/moz.build
 @@ -235,6 +235,12 @@
  if CONFIG['MOZ_SYSTEM_PNG']:
      OS_LIBS += CONFIG['MOZ_PNG_LIBS']
@@ -195,8 +195,8 @@ Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
  if CONFIG['MOZ_SYSTEM_HUNSPELL']:
      OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
  
---- icecat-60.2.0/toolkit/moz.configure
-+++ icecat-60.2.0/toolkit/moz.configure
+--- icecat-60.5.0/toolkit/moz.configure
++++ icecat-60.5.0/toolkit/moz.configure
 @@ -1051,6 +1051,26 @@
  add_old_configure_assignment('FT2_CFLAGS',
                               ft2_info.cflags)
diff --git a/gnu/packages/patches/icecat-use-system-media-libs.patch b/gnu/packages/patches/icecat-use-system-media-libs.patch
index 648585a6f0..00c95fb82e 100644
--- a/gnu/packages/patches/icecat-use-system-media-libs.patch
+++ b/gnu/packages/patches/icecat-use-system-media-libs.patch
@@ -8,8 +8,8 @@ Changes to files within the bundled libraries are omitted, since those files
 are removed from Guix sources.  Modified for use with patch -p1, and to apply
 cleanly to GNU IceCat.
 
---- icecat-60.2.0/build/moz.configure/old.configure
-+++ icecat-60.2.0/build/moz.configure/old.configure
+--- icecat-60.5.0/build/moz.configure/old.configure
++++ icecat-60.5.0/build/moz.configure/old.configure
 @@ -273,7 +273,12 @@
      '--with-system-libvpx',
      '--with-system-nspr',
@@ -23,8 +23,8 @@ cleanly to GNU IceCat.
      '--with-system-zlib',
      '--with-thumb',
      '--with-thumb-interwork',
---- icecat-60.2.0/config/external/moz.build
-+++ icecat-60.2.0/config/external/moz.build
+--- icecat-60.5.0/config/external/moz.build
++++ icecat-60.5.0/config/external/moz.build
 @@ -23,12 +23,21 @@
  
  external_dirs += ['modules/xz-embedded']
@@ -61,8 +61,8 @@ cleanly to GNU IceCat.
      'media/mp4parse-rust',
      'media/psshparser'
  ]
---- icecat-60.2.0/config/system-headers.mozbuild
-+++ icecat-60.2.0/config/system-headers.mozbuild
+--- icecat-60.5.0/config/system-headers.mozbuild
++++ icecat-60.5.0/config/system-headers.mozbuild
 @@ -1324,6 +1324,28 @@
          'harfbuzz/hb.h',
      ]
@@ -92,19 +92,19 @@ cleanly to GNU IceCat.
  if CONFIG['MOZ_SYSTEM_LIBVPX']:
      system_headers += [
          'vpx_mem/vpx_mem.h',
---- icecat-60.2.0/dom/media/AudioStream.cpp
-+++ icecat-60.2.0/dom/media/AudioStream.cpp
-@@ -121,7 +121,9 @@
-   : mMonitor("AudioStream")
-   , mChannels(0)
-   , mOutChannels(0)
+--- icecat-60.5.0/dom/media/AudioStream.cpp
++++ icecat-60.5.0/dom/media/AudioStream.cpp
+@@ -128,7 +128,9 @@
+     : mMonitor("AudioStream"),
+       mChannels(0),
+       mOutChannels(0),
 +#ifndef MOZ_SYSTEM_SOUNDTOUCH
-   , mTimeStretcher(nullptr)
+       mTimeStretcher(nullptr),
 +#endif
-   , mDumpFile(nullptr)
-   , mState(INITIALIZED)
-   , mDataSource(aSource)
-@@ -142,9 +144,11 @@
+       mDumpFile(nullptr),
+       mState(INITIALIZED),
+       mDataSource(aSource),
+@@ -147,9 +149,11 @@
    if (mDumpFile) {
      fclose(mDumpFile);
    }
@@ -116,8 +116,8 @@ cleanly to GNU IceCat.
  #if defined(XP_WIN)
    if (XRE_IsContentProcess()) {
      audio::AudioNotificationReceiver::Unregister(this);
-@@ -168,7 +172,11 @@
- {
+@@ -170,7 +174,11 @@
+ nsresult AudioStream::EnsureTimeStretcherInitializedUnlocked() {
    mMonitor.AssertCurrentThreadOwns();
    if (!mTimeStretcher) {
 +#ifdef MOZ_SYSTEM_SOUNDTOUCH
@@ -128,8 +128,8 @@ cleanly to GNU IceCat.
      mTimeStretcher->setSampleRate(mAudioClock.GetInputRate());
      mTimeStretcher->setChannels(mOutChannels);
      mTimeStretcher->setPitch(1.0);
---- icecat-60.2.0/dom/media/AudioStream.h
-+++ icecat-60.2.0/dom/media/AudioStream.h
+--- icecat-60.5.0/dom/media/AudioStream.h
++++ icecat-60.5.0/dom/media/AudioStream.h
 @@ -15,7 +15,11 @@
  #include "mozilla/TimeStamp.h"
  #include "mozilla/UniquePtr.h"
@@ -142,7 +142,7 @@ cleanly to GNU IceCat.
  
  #if defined(XP_WIN)
  #include "mozilla/audio/AudioNotificationReceiver.h"
-@@ -297,7 +301,11 @@
+@@ -293,7 +297,11 @@
    uint32_t mChannels;
    uint32_t mOutChannels;
    AudioClock mAudioClock;
@@ -154,8 +154,8 @@ cleanly to GNU IceCat.
  
    // Output file for dumping audio
    FILE* mDumpFile;
---- icecat-60.2.0/dom/media/moz.build
-+++ icecat-60.2.0/dom/media/moz.build
+--- icecat-60.5.0/dom/media/moz.build
++++ icecat-60.5.0/dom/media/moz.build
 @@ -327,6 +327,21 @@
  
  DEFINES['MOZILLA_INTERNAL_API'] = True
@@ -178,8 +178,8 @@ cleanly to GNU IceCat.
  if CONFIG['MOZ_ANDROID_HLS_SUPPORT']:
      DEFINES['MOZ_ANDROID_HLS_SUPPORT'] = True
  
---- icecat-60.2.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
-+++ icecat-60.2.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
+--- icecat-60.5.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
++++ icecat-60.5.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
 @@ -15,9 +15,13 @@
  #include <windows.h>
  #endif
@@ -194,7 +194,7 @@ cleanly to GNU IceCat.
  
  namespace mozilla {
  
-@@ -64,6 +68,12 @@
+@@ -60,6 +64,12 @@
  
    sLinkStatus = LinkStatus_FAILED;
  
@@ -207,17 +207,17 @@ cleanly to GNU IceCat.
    // We retrieve the path of the lgpllibs library as this is where mozavcodec
    // and mozavutil libs are located.
    PathString lgpllibsname = GetLibraryName(nullptr, "lgpllibs");
-@@ -73,6 +83,7 @@
-   PathString path =
-     GetLibraryFilePathname(lgpllibsname.get(),
-                            (PRFuncPtr)&soundtouch::SoundTouch::getVersionId);
+@@ -68,6 +78,7 @@
+   }
+   PathString path = GetLibraryFilePathname(
+       lgpllibsname.get(), (PRFuncPtr)&soundtouch::SoundTouch::getVersionId);
 +#endif
    if (path.IsEmpty()) {
      return false;
    }
---- icecat-60.2.0/old-configure.in
-+++ icecat-60.2.0/old-configure.in
-@@ -2451,6 +2451,111 @@
+--- icecat-60.5.0/old-configure.in
++++ icecat-60.5.0/old-configure.in
+@@ -2417,6 +2417,111 @@
  fi
  fi # COMPILE_ENVIRONMENT
  
@@ -329,8 +329,8 @@ cleanly to GNU IceCat.
  dnl system libvpx Support
  dnl ========================================================
  MOZ_ARG_WITH_BOOL(system-libvpx,
---- icecat-60.2.0/toolkit/library/moz.build
-+++ icecat-60.2.0/toolkit/library/moz.build
+--- icecat-60.5.0/toolkit/library/moz.build
++++ icecat-60.5.0/toolkit/library/moz.build
 @@ -244,6 +244,21 @@
  if CONFIG['MOZ_SYSTEM_HUNSPELL']:
      OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
@@ -353,9 +353,9 @@ cleanly to GNU IceCat.
  if CONFIG['MOZ_SYSTEM_LIBEVENT']:
      OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
  
---- icecat-60.2.0/xpcom/build/XPCOMInit.cpp
-+++ icecat-60.2.0/xpcom/build/XPCOMInit.cpp
-@@ -138,7 +138,9 @@
+--- icecat-60.5.0/xpcom/build/XPCOMInit.cpp
++++ icecat-60.5.0/xpcom/build/XPCOMInit.cpp
+@@ -139,7 +139,9 @@
  
  #include "mozilla/ipc/GeckoChildProcessHost.h"
  
@@ -365,16 +365,15 @@ cleanly to GNU IceCat.
  #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
  #if defined(HAVE_STDINT_H)
  // mozilla-config.h defines HAVE_STDINT_H, and then it's defined *again* in
-@@ -639,11 +641,13 @@
+@@ -635,10 +637,12 @@
    // this oddness.
    mozilla::SetICUMemoryFunctions();
  
 +#ifndef MOZ_OGG_NO_MEM_REPORTING
    // Do the same for libogg.
-   ogg_set_mem_functions(OggReporter::CountingMalloc,
-                         OggReporter::CountingCalloc,
-                         OggReporter::CountingRealloc,
-                         OggReporter::CountingFree);
+   ogg_set_mem_functions(
+       OggReporter::CountingMalloc, OggReporter::CountingCalloc,
+       OggReporter::CountingRealloc, OggReporter::CountingFree);
 +#endif
  
  #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
diff --git a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch b/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
new file mode 100644
index 0000000000..f3e488cec2
--- /dev/null
+++ b/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
@@ -0,0 +1,182 @@
+From f24c88a0732024028fffe0372039a847e91722ea Mon Sep 17 00:00:00 2001
+From: Christopher Baines <mail@cbaines.net>
+Date: Tue, 1 Jan 2019 22:36:29 +0000
+Subject: [PATCH] Mark more tests that require the network
+
+I believe all these tests require the network, at least they seem to
+fail if it's I run them without connecting my computer to the web.
+
+I'm looking at this as part of packaging linkchecker for GNU Guix,
+where the package is build and the tests are run in a isolated
+environment, intentionally without network access, to avoid issues
+with non-reproducible package builds.
+---
+ tests/checker/test_http.py          | 2 ++
+ tests/checker/test_http_misc.py     | 2 ++
+ tests/checker/test_http_redirect.py | 2 ++
+ tests/checker/test_httpbin.py       | 5 +++++
+ tests/checker/test_misc.py          | 4 ++++
+ tests/checker/test_whitespace.py    | 3 +++
+ 6 files changed, 18 insertions(+)
+
+diff --git a/tests/checker/test_http.py b/tests/checker/test_http.py
+index e4c1e097..8a8af567 100644
+--- a/tests/checker/test_http.py
++++ b/tests/checker/test_http.py
+@@ -20,6 +20,7 @@
+ 
+ import pytest
+ 
++from tests import need_network
+ from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler
+ 
+ class TestHttp (HttpServerTest):
+@@ -29,6 +30,7 @@ def __init__(self, methodName='runTest'):
+         super(TestHttp, self).__init__(methodName=methodName)
+         self.handler = CookieRedirectHttpRequestHandler
+ 
++    @need_network
+     def test_html (self):
+         confargs = dict(recursionlevel=1)
+         self.file_test("http.html", confargs=confargs)
+diff --git a/tests/checker/test_http_misc.py b/tests/checker/test_http_misc.py
+index 9922d85f..c6b6afdb 100644
+--- a/tests/checker/test_http_misc.py
++++ b/tests/checker/test_http_misc.py
+@@ -20,11 +20,13 @@
+ import os
+ import sys
+ from .httpserver import HttpServerTest
++from tests import need_network
+ from linkcheck.network import iputil
+ 
+ class TestHttpMisc (HttpServerTest):
+     """Test http:// misc link checking."""
+ 
++    @need_network
+     def test_html (self):
+         self.swf_test()
+         self.obfuscate_test()
+diff --git a/tests/checker/test_http_redirect.py b/tests/checker/test_http_redirect.py
+index f212d98e..2253a70d 100644
+--- a/tests/checker/test_http_redirect.py
++++ b/tests/checker/test_http_redirect.py
+@@ -17,6 +17,7 @@
+ """
+ Test http checking.
+ """
++from tests import need_network
+ from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler
+ 
+ class TestHttpRedirect (HttpServerTest):
+@@ -26,6 +27,7 @@ def __init__(self, methodName='runTest'):
+         super(TestHttpRedirect, self).__init__(methodName=methodName)
+         self.handler = CookieRedirectHttpRequestHandler
+ 
++    @need_network
+     def test_redirect (self):
+         self.redirect1()
+         self.redirect2()
+diff --git a/tests/checker/test_httpbin.py b/tests/checker/test_httpbin.py
+index 0319c2f6..4c8fa846 100644
+--- a/tests/checker/test_httpbin.py
++++ b/tests/checker/test_httpbin.py
+@@ -18,6 +18,7 @@
+ Test http stuff with httpbin.org.
+ """
+ import re
++from tests import need_network
+ from . import LinkCheckTest
+ 
+ 
+@@ -30,6 +31,7 @@ def get_httpbin_url(path):
+ class TestHttpbin(LinkCheckTest):
+     """Test http:// link redirection checking."""
+ 
++    @need_network
+     def test_http_link(self):
+         linkurl = u"http://www.example.com"
+         nlinkurl = self.norm(linkurl)
+@@ -48,6 +50,7 @@ def test_http_link(self):
+         ]
+         self.direct(url, resultlines, recursionlevel=1)
+ 
++    @need_network
+     def test_basic_auth(self):
+         user = u"testuser"
+         password = u"testpassword"
+@@ -67,6 +70,7 @@ def test_basic_auth(self):
+         ]
+         self.direct(url, resultlines, confargs=confargs)
+ 
++    @need_network
+     def test_http_refresh_header(self):
+         linkurl = u"http://www.example.com"
+         nlinkurl = self.norm(linkurl)
+@@ -85,6 +89,7 @@ def test_http_refresh_header(self):
+         ]
+         self.direct(url, resultlines, recursionlevel=1)
+ 
++    @need_network
+     def test_http_content_location_header(self):
+         linkurl = u"http://www.example.com"
+         nlinkurl = self.norm(linkurl)
+diff --git a/tests/checker/test_misc.py b/tests/checker/test_misc.py
+index 2e4cfd07..f9591f9d 100644
+--- a/tests/checker/test_misc.py
++++ b/tests/checker/test_misc.py
+@@ -17,6 +17,7 @@
+ """
+ Test miscellaneous html tag parsing and URL types
+ """
++from tests import need_network
+ from . import LinkCheckTest
+ 
+ 
+@@ -25,15 +26,18 @@ class TestMisc (LinkCheckTest):
+     Test misc link types.
+     """
+ 
++    @need_network
+     def test_misc (self):
+         self.file_test("misc.html")
+ 
+     def test_html5 (self):
+         self.file_test("html5.html")
+ 
++    @need_network
+     def test_archive (self):
+         self.file_test("archive.html")
+ 
++    @need_network
+     def test_itms_services(self):
+         url = u"itms-services:?action=download-manifest&url=http://www.example.com/"
+         resultlines = [
+diff --git a/tests/checker/test_whitespace.py b/tests/checker/test_whitespace.py
+index 609c108a..fc2727d6 100644
+--- a/tests/checker/test_whitespace.py
++++ b/tests/checker/test_whitespace.py
+@@ -17,6 +17,7 @@
+ """
+ Test whitespace handling.
+ """
++from tests import need_network
+ from . import LinkCheckTest
+ 
+ 
+@@ -25,6 +26,7 @@ class TestWhitespace (LinkCheckTest):
+     Test whitespace in URLs.
+     """
+ 
++    @need_network
+     def test_leading_whitespace (self):
+         # Leading whitespace
+         url = u" http://www.example.org/"
+@@ -50,6 +52,7 @@ def test_leading_whitespace (self):
+         ]
+         self.direct(url, resultlines)
+ 
++    @need_network
+     def test_trailing_whitespace (self):
+         # Trailing whitespace
+         url = u"http://www.example.org/ "
diff --git a/gnu/packages/patches/p11-kit-jks-timestamps.patch b/gnu/packages/patches/p11-kit-jks-timestamps.patch
new file mode 100644
index 0000000000..8cb8ed8684
--- /dev/null
+++ b/gnu/packages/patches/p11-kit-jks-timestamps.patch
@@ -0,0 +1,42 @@
+Fix test failures induced by setting the SOURCE_DATE_EPOCH variable.
+
+Taken from upstream: <https://github.com/p11-glue/p11-kit/pull/213>.
+
+From 2a474e1fe8f4bd8b4ed7622e5cf3b2718a202562 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <dueno@redhat.com>
+Date: Mon, 28 Jan 2019 13:03:15 +0100
+Subject: [PATCH] extract-jks: Prefer _p11_extract_jks_timestamp to
+ SOURCE_DATE_EPOCH
+
+Give _p11_extract_jks_timestamp precedence over SOURCE_DATE_EPOCH so
+that the test results are not affected by the envvar settings.
+---
+ trust/extract-jks.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/trust/extract-jks.c b/trust/extract-jks.c
+index ad8dc35..a6f855f 100644
+--- a/trust/extract-jks.c
++++ b/trust/extract-jks.c
+@@ -250,7 +250,9 @@ prepare_jks_buffer (p11_enumerate *ex,
+ 	 * when this was this certificate was added to the keystore, however
+ 	 * we don't have that information. Java uses time in milliseconds
+ 	 */
+-	{
++	if (_p11_extract_jks_timestamp)
++		now = _p11_extract_jks_timestamp;
++	else {
+ 		char *source_date_epoch;
+ 		source_date_epoch = secure_getenv ("SOURCE_DATE_EPOCH");
+ 		if (source_date_epoch) {
+@@ -276,9 +278,7 @@ prepare_jks_buffer (p11_enumerate *ex,
+ 				return false;
+ 			}
+ 			now = epoch;
+-		} else if (_p11_extract_jks_timestamp)
+-			now = _p11_extract_jks_timestamp;
+-		else
++		} else
+ 			now = time (NULL);
+ 	}
+ 
diff --git a/gnu/packages/patches/qemu-CVE-2018-16872.patch b/gnu/packages/patches/qemu-CVE-2018-16872.patch
new file mode 100644
index 0000000000..094e823ee4
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2018-16872.patch
@@ -0,0 +1,88 @@
+Fixes CVE-2018-16872:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16872
+
+Patch copied from upstream source repository:
+
+https://git.qemu.org/?p=qemu.git;a=commitdiff;h=bab9df35ce73d1c8e19a37e2737717ea1c984dc1
+
+From bab9df35ce73d1c8e19a37e2737717ea1c984dc1 Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Thu, 13 Dec 2018 13:25:11 +0100
+Subject: [PATCH] usb-mtp: use O_NOFOLLOW and O_CLOEXEC.
+
+Open files and directories with O_NOFOLLOW to avoid symlinks attacks.
+While being at it also add O_CLOEXEC.
+
+usb-mtp only handles regular files and directories and ignores
+everything else, so users should not see a difference.
+
+Because qemu ignores symlinks, carrying out a successful symlink attack
+requires swapping an existing file or directory below rootdir for a
+symlink and winning the race against the inotify notification to qemu.
+
+Fixes: CVE-2018-16872
+Cc: Prasad J Pandit <ppandit@redhat.com>
+Cc: Bandan Das <bsd@redhat.com>
+Reported-by: Michael Hanselmann <public@hansmi.ch>
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Reviewed-by: Michael Hanselmann <public@hansmi.ch>
+Message-id: 20181213122511.13853-1-kraxel@redhat.com
+---
+ hw/usb/dev-mtp.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
+index 100b7171f4..36c43b8c20 100644
+--- a/hw/usb/dev-mtp.c
++++ b/hw/usb/dev-mtp.c
+@@ -653,13 +653,18 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)
+ {
+     struct dirent *entry;
+     DIR *dir;
++    int fd;
+ 
+     if (o->have_children) {
+         return;
+     }
+     o->have_children = true;
+ 
+-    dir = opendir(o->path);
++    fd = open(o->path, O_DIRECTORY | O_CLOEXEC | O_NOFOLLOW);
++    if (fd < 0) {
++        return;
++    }
++    dir = fdopendir(fd);
+     if (!dir) {
+         return;
+     }
+@@ -1007,7 +1012,7 @@ static MTPData *usb_mtp_get_object(MTPState *s, MTPControl *c,
+ 
+     trace_usb_mtp_op_get_object(s->dev.addr, o->handle, o->path);
+ 
+-    d->fd = open(o->path, O_RDONLY);
++    d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW);
+     if (d->fd == -1) {
+         usb_mtp_data_free(d);
+         return NULL;
+@@ -1031,7 +1036,7 @@ static MTPData *usb_mtp_get_partial_object(MTPState *s, MTPControl *c,
+                                         c->argv[1], c->argv[2]);
+ 
+     d = usb_mtp_data_alloc(c);
+-    d->fd = open(o->path, O_RDONLY);
++    d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW);
+     if (d->fd == -1) {
+         usb_mtp_data_free(d);
+         return NULL;
+@@ -1658,7 +1663,7 @@ static void usb_mtp_write_data(MTPState *s)
+                                  0, 0, 0, 0);
+             goto done;
+         }
+-        d->fd = open(path, O_CREAT | O_WRONLY, mask);
++        d->fd = open(path, O_CREAT | O_WRONLY | O_CLOEXEC | O_NOFOLLOW, mask);
+         if (d->fd == -1) {
+             usb_mtp_queue_result(s, RES_STORE_FULL, d->trans,
+                                  0, 0, 0, 0);
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/qemu-CVE-2019-6778.patch b/gnu/packages/patches/qemu-CVE-2019-6778.patch
new file mode 100644
index 0000000000..315f2922da
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2019-6778.patch
@@ -0,0 +1,43 @@
+Fixes CVE-2019-6778:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6778
+
+Patch copied from upstream source repository:
+
+https://git.qemu.org/?p=qemu.git;a=commitdiff;h=a7104eda7dab99d0cdbd3595c211864cba415905
+
+From a7104eda7dab99d0cdbd3595c211864cba415905 Mon Sep 17 00:00:00 2001
+From: Prasad J Pandit <pjp@fedoraproject.org>
+Date: Sun, 13 Jan 2019 23:29:48 +0530
+Subject: [PATCH] slirp: check data length while emulating ident function
+
+While emulating identification protocol, tcp_emu() does not check
+available space in the 'sc_rcv->sb_data' buffer. It could lead to
+heap buffer overflow issue. Add check to avoid it.
+
+Reported-by: Kira <864786842@qq.com>
+Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
+Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+---
+ slirp/tcp_subr.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
+index 4a9a5b5edc..23a841f26e 100644
+--- a/slirp/tcp_subr.c
++++ b/slirp/tcp_subr.c
+@@ -634,6 +634,11 @@ tcp_emu(struct socket *so, struct mbuf *m)
+ 			socklen_t addrlen = sizeof(struct sockaddr_in);
+ 			struct sbuf *so_rcv = &so->so_rcv;
+ 
++			if (m->m_len > so_rcv->sb_datalen
++					- (so_rcv->sb_wptr - so_rcv->sb_data)) {
++			    return 1;
++			}
++
+ 			memcpy(so_rcv->sb_wptr, m->m_data, m->m_len);
+ 			so_rcv->sb_wptr += m->m_len;
+ 			so_rcv->sb_rptr += m->m_len;
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/scotch-graph-diam-64.patch b/gnu/packages/patches/scotch-graph-diam-64.patch
deleted file mode 100644
index 2ae31e3c3b..0000000000
--- a/gnu/packages/patches/scotch-graph-diam-64.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Fixes test_scotch_graph_diam test with -DINTSIZE64.
-
-Reported upstream at
-https://gforge.inria.fr/tracker/index.php?func=detail&aid=21650&group_id=248&atid=1081
-
---- scotch-6.0.5a/src/libscotch/library.h
-+++ scotch-6.0.5a/src/libscotch/library.h
-@@ -187,6 +187,7 @@ SCOTCH_Num                  SCOTCH_graphBase    (SCOTCH_Graph * const, const SCO
- int                         SCOTCH_graphCheck   (const SCOTCH_Graph * const);
- void                        SCOTCH_graphSize    (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const);
- void                        SCOTCH_graphData    (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const);
-+SCOTCH_Num                  SCOTCH_graphDiamPV  (SCOTCH_Graph * const);
- void                        SCOTCH_graphStat    (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const);
- int                         SCOTCH_graphCoarsen (const SCOTCH_Graph * const, const SCOTCH_Num, const double, const SCOTCH_Num, SCOTCH_Graph * const, SCOTCH_Num * const);
- int                         SCOTCH_graphCoarsenMatch (const SCOTCH_Graph * const, SCOTCH_Num * const, const double, const SCOTCH_Num, SCOTCH_Num * const);
---- scotch-6.0.5a/src/libscotch/library_graph_diam.c
-+++ scotch-6.0.5a/src/libscotch/library_graph_diam.c
-@@ -72,8 +72,7 @@
- 
- SCOTCH_Num
- SCOTCH_graphDiamPV (
--SCOTCH_Graph * const        grafptr,
--const SCOTCH_Num            baseval)
-+SCOTCH_Graph * const        grafptr)
- {
-   return ((SCOTCH_Num) graphDiamPV ((Graph * const) grafptr));
- }
diff --git a/gnu/packages/patches/scotch-graph-induce-type-64.patch b/gnu/packages/patches/scotch-graph-induce-type-64.patch
deleted file mode 100644
index d2eee52a7b..0000000000
--- a/gnu/packages/patches/scotch-graph-induce-type-64.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fixes return type of SCOTCH_graphInduceList and SCOTCH_graphInducePart
-so that the definition matches with -DINTSIZE64.
-
-Reported upstream at
-https://gforge.inria.fr/tracker/index.php?func=detail&aid=21608&group_id=248&atid=1081
-
---- scotch_6.0.5a/src/libscotch/library.h.orig	2018-02-11 10:52:38.000000000 -0600
-+++ scotch_6.0.5a/src/libscotch/library.h	2018-02-23 16:56:41.000000000 -0600
-@@ -199,8 +199,8 @@
- int                         SCOTCH_graphGeomSaveChac (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
- int                         SCOTCH_graphGeomSaveMmkt (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
- int                         SCOTCH_graphGeomSaveScot (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
--int                         SCOTCH_graphInduceList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Graph * const);
--int                         SCOTCH_graphInducePart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_GraphPart2 * const, const SCOTCH_GraphPart2, SCOTCH_Graph * const);
-+SCOTCH_Num                  SCOTCH_graphInduceList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Graph * const);
-+SCOTCH_Num                  SCOTCH_graphInducePart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_GraphPart2 * const, const SCOTCH_GraphPart2, SCOTCH_Graph * const);
- 
- int                         SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const);
- void                        SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const);
diff --git a/gnu/packages/patches/scotch-integer-declarations.patch b/gnu/packages/patches/scotch-integer-declarations.patch
new file mode 100644
index 0000000000..978625c1c0
--- /dev/null
+++ b/gnu/packages/patches/scotch-integer-declarations.patch
@@ -0,0 +1,37 @@
+diff --git a/src/libscotch/library.h b/src/libscotch/library.h
+index 1891c19..ecc0533 100644
+--- a/src/libscotch/library.h
++++ b/src/libscotch/library.h
+@@ -67,6 +67,8 @@
+ 
+ /*+ Integer type. +*/
+ 
++#include <stdint.h>
++
+ typedef DUMMYIDX SCOTCH_Idx;
+ 
+ typedef DUMMYINT SCOTCH_Num;
+diff --git a/src/libscotchmetis/library_metis.h b/src/libscotchmetis/library_metis.h
+index e6767e1..04e71c3 100644
+--- a/src/libscotchmetis/library_metis.h
++++ b/src/libscotchmetis/library_metis.h
+@@ -99,6 +99,7 @@ typedef enum {
+ */
+ 
+ #ifndef SCOTCH_H                                  /* In case "scotch.h" not included before */
++#include <stdint.h>
+ typedef DUMMYINT SCOTCH_Num;
+ #endif /* SCOTCH_H */
+ 
+diff --git a/src/libscotchmetis/library_parmetis.h b/src/libscotchmetis/library_parmetis.h
+index 6d2f0b0..3c803fc 100644
+--- a/src/libscotchmetis/library_parmetis.h
++++ b/src/libscotchmetis/library_parmetis.h
+@@ -106,6 +106,7 @@ typedef enum {
+ */
+ 
+ #ifndef SCOTCH_H                                  /* In case "scotch.h" not included before */
++#include <stdint.h>
+ typedef DUMMYINT SCOTCH_Num;
+ #endif /* SCOTCH_H */
+ 
diff --git a/gnu/packages/patches/scotch-test-threading.patch b/gnu/packages/patches/scotch-test-threading.patch
deleted file mode 100644
index de8cc49c41..0000000000
--- a/gnu/packages/patches/scotch-test-threading.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Fix this test so that it succeeds when the library is not compiled with
-SCOTCH_PTHREAD.
-
---- scotch_6.0.4/src/check/test_common_thread.c	2014-09-28 11:39:59.000000000 -0500
-+++ scotch_6.0.4/src/check/test_common_thread.c	2015-01-10 00:52:00.076229542 -0600
-@@ -175,14 +175,14 @@
- char *              argv[])
- {
-   TestThreadGroup       groudat;
--#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
-+#if ((defined COMMON_PTHREAD) && (defined SCOTCH_PTHREAD))
-   TestThread * restrict thrdtab;
-   int                   thrdnbr;
- #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
- 
-   SCOTCH_errorProg (argv[0]);
- 
--#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
-+#if ((defined COMMON_PTHREAD) && (defined SCOTCH_PTHREAD))
-   thrdnbr = SCOTCH_PTHREAD_NUMBER;
- 
-   groudat.redusum = COMPVAL (thrdnbr);
diff --git a/gnu/packages/patches/superlu-dist-awpm-grid.patch b/gnu/packages/patches/superlu-dist-awpm-grid.patch
new file mode 100644
index 0000000000..d6cb8e521d
--- /dev/null
+++ b/gnu/packages/patches/superlu-dist-awpm-grid.patch
@@ -0,0 +1,36 @@
+Create the CombBLAS::SpParMat with the MPI_Comm from the input 'gridinfo_t'.
+This prevents a warning/error from CombBLAS about using MPI_COMM_WORLD.
+
+--- a/SRC/AWPM_CombBLAS.hpp
++++ b/SRC/AWPM_CombBLAS.hpp
+@@ -52,7 +52,7 @@
+     {
+         printf("AWPM only supports square process grid. Retuning without a permutation.\n");
+     }
+-    combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc;
++    combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc(grid->comm);
+     std::vector< std::vector < std::tuple<int_t,int_t,double> > > data(procs);
+     
+     /* ------------------------------------------------------------
+@@ -100,11 +100,10 @@
+     combblas::AWPM(Adcsc, mateRow2Col, mateCol2Row,true);
+     
+     // now gather the matching vector
+-    MPI_Comm World = mateRow2Col.getcommgrid()->GetWorld();
+     int * rdispls = new int[procs];
+     int sendcnt = mateRow2Col.LocArrSize();
+     int * recvcnt = new int[procs];
+-    MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, World);
++    MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, grid->comm);
+     rdispls[0] = 0;
+     for(int i=0; i<procs-1; ++i)
+     {
+@@ -112,7 +111,7 @@
+     }
+     int_t *senddata = (int_t *)mateRow2Col.GetLocArr();
+     
+-    MPI_Allgatherv(senddata, sendcnt, combblas::MPIType<int_t>(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType<int_t>(), World);
++    MPI_Allgatherv(senddata, sendcnt, combblas::MPIType<int_t>(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType<int_t>(), grid->comm);
+     
+     delete[] rdispls;
+     delete[] recvcnt;
diff --git a/gnu/packages/patches/x265-detect512-all-arches.patch b/gnu/packages/patches/x265-detect512-all-arches.patch
deleted file mode 100644
index 4d39d868fd..0000000000
--- a/gnu/packages/patches/x265-detect512-all-arches.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-https://sources.debian.org/data/main/x/x265/2.9-3/debian/patches/0003-detect512-is-needed-on-all-architectures.patch
-
-From: Adam Sampson <unknown@bitbucket>
-Date: Sun, 14 Oct 2018 14:04:18 +0200
-Subject: detect512 is needed on all architectures
-
----
- source/common/cpu.cpp | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/source/common/cpu.cpp b/source/common/cpu.cpp
-index 0681ff5..fa687da 100644
---- a/source/common/cpu.cpp
-+++ b/source/common/cpu.cpp
-@@ -110,6 +110,11 @@ const cpu_name_t cpu_names[] =
-     { "", 0 },
- };
- 
-+bool detect512()
-+{
-+    return(enable512);
-+}
-+
- #if X265_ARCH_X86
- 
- extern "C" {
-@@ -123,10 +128,6 @@ uint64_t PFX(cpu_xgetbv)(int xcr);
- #pragma warning(disable: 4309) // truncation of constant value
- #endif
- 
--bool detect512()
--{
--    return(enable512);
--}
- uint32_t cpu_detect(bool benableavx512 )
- {
- 
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 377ec53d26..077330e54a 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -77,14 +77,14 @@ with what is used by the Bitcoin network.")
 (define-public python-bcrypt
   (package
     (name "python-bcrypt")
-    (version "3.1.4")
+    (version "3.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bcrypt" version))
        (sha256
         (base32
-         "13cyrnqwkhc70rs6dg65z4yrrr3dc42fhk11804fqmci9hvimvb7"))))
+         "1sh2xh0iragdq8dhssc1cdd02nppjq7b5kmv0qladfi2s9cnfqs4"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pycparser" ,python-pycparser)
@@ -148,10 +148,7 @@ to providing full-strength password hashing for multi-user application.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
-             version
-             ".tar.gz"))
+       (uri (pypi-uri "py-bcrypt" version))
        (sha256
         (base32
          "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
@@ -240,10 +237,7 @@ Python interface around SSH networking concepts.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
-             version
-             ".tar.gz"))
+       (uri (pypi-uri "ecdsa" version))
        (sha256
         (base32
          "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
@@ -322,11 +316,11 @@ etc.).  The package is structured to make adding new modules easy.")
         "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
     (build-system python-build-system)
     (native-inputs
-     `(("python-setuptools-scm" ,python-setuptools-scm)))
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)
+       ("python-setuptools-scm" ,python-setuptools-scm)))
     (propagated-inputs
      `(("python-pycrypto" ,python-pycrypto)))
-    (arguments
-     `(#:tests? #f))                      ;TODO: tests require pytest
     (home-page "https://github.com/jaraco/keyring")
     (synopsis "Store and access your passwords safely")
     (description
@@ -363,14 +357,14 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python-cryptography-vectors
   (package
     (name "python-cryptography-vectors")
-    (version "2.4.2")
+    (version "2.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography_vectors" version))
        (sha256
         (base32
-         "013qx2hz0jv79yzfzpn0r2kk33i5qy3sdnzgwiv5779d18snblwi"))))
+         "15qfl3pnw2f11r0z0zhwl56f6pb60ysav8fxmpnz5p80cfwljdik"))))
     (build-system python-build-system)
     (home-page "https://github.com/pyca/cryptography")
     (synopsis "Test vectors for the cryptography package")
@@ -385,14 +379,14 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python-cryptography
   (package
     (name "python-cryptography")
-    (version "2.4.2")
+    (version "2.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography" version))
        (sha256
         (base32
-         "1pc60dksi9w9mshl6cvn7gdjazbp3pmydy3qp9wgy5wzd8n0b9h5"))))
+         "00c4d7gvsymlaw0r13zrm32dcnarmpayjyrh65yymlmr6mrbcij9"))))
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index cee4973086..97b1f06611 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -665,13 +665,14 @@ teams extension for python-openid.")
 (define-public python-tornado
   (package
     (name "python-tornado")
-    (version "4.5.1")
+    (version "5.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tornado" version))
        (sha256
-        (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
+        (base32
+         "02clqk2116jbnq8lnaqmdw3p52nqrd9ib59r4xz2ll43fpcmhlaf"))))
     (build-system python-build-system)
     (arguments
      '(;; FIXME: Two tests error out with:
@@ -682,14 +683,12 @@ teams extension for python-openid.")
        ;;     (lambda _
        ;;       ;; 'setup.py test' hits an AssertionError on BSD-specific
        ;;       ;; "tornado/platform/kqueue.py". This is the supported method:
-       ;;       (invoke- "python" "-m" "tornado.test")
+       ;;       (invoke "python" "-m" "tornado.test.runtests")
        ;;       #t)))
        #:tests? #f))
     (native-inputs
      `(("python-certifi" ,python-certifi)))
-    (propagated-inputs
-     `(("python-backports-abc" ,python-backports-abc)))
-    (home-page "http://www.tornadoweb.org/")
+    (home-page "https://www.tornadoweb.org/")
     (synopsis "Python web framework and asynchronous networking library")
     (description
      "Tornado is a Python web framework and asynchronous networking library,
@@ -706,6 +705,7 @@ connection to each user.")
       (propagated-inputs
        `(("python2-backport-ssl-match-hostname"
           ,python2-backport-ssl-match-hostname)
+         ("python2-backports-abc" ,python2-backports-abc)
          ("python2-singledispatch" ,python2-singledispatch)
           ,@(package-propagated-inputs tornado))))))
 
@@ -775,10 +775,7 @@ term.js Javascript terminal emulator library.")
     (version "1.2.2")
     (source (origin
              (method url-fetch)
-             (uri (string-append
-                    "https://pypi.python.org/packages/"
-                    "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
-                    "wsgi_intercept-" version ".tar.gz"))
+             (uri (pypi-uri "wsgi_intercept" version))
              (sha256
               (base32
                "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
@@ -832,8 +829,7 @@ object to help create WSGI responses.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.event/zope.event-" version ".tar.gz"))
+       (uri (pypi-uri "zope.event" version))
        (sha256
         (base32
          "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
@@ -856,8 +852,7 @@ dispatching systems can be built.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.interface/zope.interface-" version ".tar.gz"))
+       (uri (pypi-uri "zope.interface" version))
        (sha256
         (base32
          "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
@@ -882,9 +877,7 @@ conforming to a given API or contract.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.exceptions/zope.exceptions-"
-                           version ".tar.gz"))
+       (uri (pypi-uri "zope.exceptions" version))
        (sha256
         (base32
          "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
@@ -936,9 +929,7 @@ forms, HTTP servers, regular expressions, and more.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.testrunner/zope.testrunner-"
-                           version ".zip"))
+       (uri (pypi-uri "zope.testrunner" version ".zip"))
        (sha256
         (base32
          "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
@@ -975,10 +966,7 @@ tests.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/z"
-             "/zope.i18nmessageid/zope.i18nmessageid-"
-             version ".tar.gz"))
+       (uri (pypi-uri "zope.i18nmessageid" version))
        (sha256
         (base32
          "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
@@ -999,8 +987,7 @@ internationalized messages within program source text.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.schema/zope.schema-" version ".tar.gz"))
+       (uri (pypi-uri "zope.schema" version))
        (sha256
         (base32
          "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
@@ -1030,9 +1017,7 @@ defining data schemas.")
     (version "4.0.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://pypi.python.org/packages/source/z"
-                                  "/zope.configuration/zope.configuration-"
-                                  version ".tar.gz"))
+              (uri (pypi-uri "zope.configuration" version))
               (sha256
                (base32
                 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
@@ -1058,8 +1043,7 @@ Markup Language.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.proxy/zope.proxy-" version ".tar.gz"))
+       (uri (pypi-uri "zope.proxy" version))
        (sha256
         (base32
          "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
@@ -1087,8 +1071,7 @@ brokering, etc.) for which the proxy is responsible.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.location/zope.location-" version ".tar.gz"))
+       (uri (pypi-uri "zope.location" version))
        (sha256
         (base32
          "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
@@ -1114,8 +1097,7 @@ Zope3, which are are special objects that have a structural location.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/z"
-                           "/zope.security/zope.security-" version ".tar.gz"))
+       (uri (pypi-uri "zope.security" version))
        (sha256
         (base32
          "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
@@ -1416,29 +1398,30 @@ authenticated session objects providing things like keep-alive.")
 (define-public python-urllib3
   (package
     (name "python-urllib3")
-    (version "1.23")
+    (version "1.24.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "urllib3" version))
         (sha256
          (base32
-          "1bvbd35q3zdcd7gsv38fwpizy7p06dr0154g5gfybrvnbvhwb2m6"))))
+          "08lwd9f3hqznyf32vnzwvp87pchx062nkbgyrf67rwlkgj0jk5fy"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f))
     (native-inputs
      `(;; some packages for tests
-       ("python-nose" ,python-nose)
        ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
        ("python-tornado" ,python-tornado)))
     (propagated-inputs
      `(;; These 5 inputs are used to build urrlib3[secure]
        ("python-certifi" ,python-certifi)
-       ("python-cryptography" ,python-cryptography) ;
+       ("python-cryptography" ,python-cryptography)
        ("python-idna" ,python-idna)
        ("python-ipaddress" ,python-ipaddress)
-       ("python-pyopenssl" ,python-pyopenssl)))
-    (home-page "https://urllib3.readthedocs.org/")
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-pysocks" ,python-pysocks)))
+    (home-page "https://urllib3.readthedocs.io/")
     (synopsis "HTTP library with thread-safe connection pooling")
     (description
      "Urllib3 supports features left out of urllib and urllib2 libraries.  It
@@ -1583,20 +1566,28 @@ minimum of WSGI.")
 (define-public python-flask
   (package
     (name "python-flask")
-    (version "0.11.1")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
-              (uri (pypi-uri "Flask" version))
+              (uri (pypi-uri "flask" version))
               (sha256
                (base32
-                "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
+                "0j6f4a9rpfh25k1gp7azqhnni4mb4fgy50jammgjgddw1l3w0w92"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "python" "-m" "pytest"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
     (propagated-inputs
      `(("python-itsdangerous" ,python-itsdangerous)
        ("python-jinja2" ,python-jinja2)
        ("python-click" ,python-click)
        ("python-werkzeug" ,python-werkzeug)))
-    (home-page "https://github.com/mitsuhiko/flask/")
+    (home-page "https://www.palletsprojects.com/p/flask/")
     (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
     (description "Flask is a micro web framework based on the Werkzeug toolkit
 and Jinja2 template engine.  It is called a micro framework because it does not
@@ -2025,14 +2016,14 @@ pretty printer and a tree visitor.")
 (define-public python-flask-restful
   (package
     (name "python-flask-restful")
-    (version "0.3.5")
+    (version "0.3.7")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "Flask-RESTful" version))
         (sha256
-          (base32
-            "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
+         (base32
+          "1a9cbwkr6krryyzq4sd3f415nkkc6dyfls5i3pgyibs94g0hw97q"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-aniso8601" ,python-aniso8601)
@@ -2603,18 +2594,28 @@ List.  Forked from and using the same API as the publicsuffix package.")
 (define-public python-werkzeug
   (package
     (name "python-werkzeug")
-    (version "0.11.15")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "Werkzeug" version))
+       (uri (pypi-uri "werkzeug" version))
        (sha256
         (base32
-         "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
+         "0z2m4snn1vc9518r2vzgdj1nc90kcgi60wijvd29yvcp85ypmzf3"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python" "-m" "pytest"))))))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
-    (home-page "http://werkzeug.pocoo.org/")
+    (home-page "https://www.palletsprojects.org/p/werkzeug/")
     (synopsis "Utilities for WSGI applications")
     (description "One of the most advanced WSGI utility modules.  It includes a
 powerful debugger, full-featured request and response objects, HTTP utilities to
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2294b59f33..992a750911 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -321,10 +321,7 @@ etc. ")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append
-            "https://pypi.python.org/packages/source/b/"
-            "backports.ssl_match_hostname/backports.ssl_match_hostname-"
-            version ".tar.gz"))
+      (uri (pypi-uri "backports.ssl_match_hostname" version))
       (sha256
        (base32
         "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
@@ -531,8 +528,7 @@ to users of that module.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
-                           "lockfile-" version ".tar.gz"))
+       (uri (pypi-uri "lockfile" version))
        (sha256
         (base32
          "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
@@ -1002,8 +998,7 @@ doing practical, real world data analysis in Python.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
-                          version ".tar.gz"))
+      (uri (pypi-uri "mechanize" version))
       (sha256
        (base32
         "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
@@ -1342,18 +1337,30 @@ existing ones.")
 (define-public scons
   (package
     (name "scons")
-    (version "3.0.1")
+    (version "3.0.3")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://sourceforge/scons/scons/" version
-                                 "/scons-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/SCons/scons.git")
+                   (commit version)))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "0wzid419mlwqw9llrg8gsx4nkzhqy16m4m40r0xnh6cwscw5wir4"))))
+               "1xizkjgrvydkjhpv7i5rx0mdkp3618sis7jsckjh57nxcynlk5dc"))))
     (build-system python-build-system)
     (arguments
      `(#:use-setuptools? #f                ; still relies on distutils
-       #:tests? #f))                       ; no 'python setup.py test' command
+       #:tests? #f                         ; no 'python setup.py test' command
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'bootstrap
+           (lambda _
+             (substitute* "src/engine/SCons/compat/__init__.py"
+               (("sys.modules\\[new\\] = imp.load_module\\(old, \\*imp.find_module\\(old\\)\\)")
+                "sys.modules[new] = __import__(old)"))
+             (invoke "python" "bootstrap.py" "build/scons" "DEVELOPER=guix")
+             (chdir "build/scons")
+             #t)))))
     (home-page "http://scons.org/")
     (synopsis "Software construction tool written in Python")
     (description
@@ -1400,9 +1407,7 @@ software.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
-             version ".tar.gz"))
+       (uri (pypi-uri "python-mimeparse" version))
        (sha256
         (base32
          "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n"))))
@@ -1638,20 +1643,17 @@ files.")
 (define-public python-click
   (package
     (name "python-click")
-    (version "6.7")
+    (version "7.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "click" version))
        (sha256
         (base32
-         "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
+         "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v"))))
     (build-system python-build-system)
     (arguments
-     `(;; The tests are fragile, depending on a specific version of pytest:
-       ;; <https://github.com/pallets/click/issues/823>
-       #:tests? #f
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-paths
            (lambda* (#:key inputs #:allow-other-keys)
@@ -1660,10 +1662,13 @@ files.")
                (substitute* "click/_unicodefun.py"
                  (("'locale'")
                   (string-append "'" glibc "/bin/locale'"))))
-             #t)))))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "python" "-m" "pytest"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
-    (home-page "http://click.pocoo.org")
+    (home-page "https://palletsprojects.com/p/click/")
     (synopsis "Command line library for Python")
     (description
      "Click is a Python package for creating command line interfaces in a
@@ -1738,10 +1743,7 @@ version numbers.")
     (version "2.6.0")
     (source (origin
              (method url-fetch)
-             (uri
-              (string-append
-               "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
-               version ".tar.gz"))
+             (uri (pypi-uri "jsonschema" version))
              (sha256
               (base32
                "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"))))
@@ -1961,18 +1963,16 @@ visualisation and class tracker statistics.")
 (define-public python-itsdangerous
   (package
     (name "python-itsdangerous")
-    (version "0.24")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
-             version ".tar.gz"))
+       (uri (pypi-uri "itsdangerous" version))
        (sha256
         (base32
-         "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
+         "068zpbksq5q2z4dckh2k1zbcq43ay74ylqn77rni797j0wyh66rj"))))
     (build-system python-build-system)
-    (home-page "https://github.com/mitsuhiko/itsdangerous")
+    (home-page "https://palletsprojects.com/p/itsdangerous/")
     (synopsis "Python library for passing data to/from untrusted environments")
     (description
      "Itsdangerous provides various helpers to pass trusted data to untrusted
@@ -2074,9 +2074,7 @@ e.g. filters, callbacks and errbacks can all be promises.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
-             version ".tar.gz"))
+       (uri (pypi-uri "MarkupSafe" version))
        (sha256
         (base32
          "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6"))))
@@ -4326,8 +4324,7 @@ common operations on files to be invoked on those path objects directly.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/s/"
-                           "simplegeneric/simplegeneric-" version ".zip"))
+       (uri (pypi-uri "simplegeneric" version ".zip"))
        (sha256
         (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
     (build-system python-build-system)
@@ -4355,9 +4352,7 @@ standard library.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/i/"
-                          "ipython_genutils/ipython_genutils-"
-                          version ".tar.gz"))
+      (uri (pypi-uri "ipython_genutils" version))
       (sha256
        (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
     (build-system python-build-system)
@@ -5537,15 +5532,12 @@ complexity of Python source code.")
   (package (inherit python-pep8)
     (version "1.5.7")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://pypi.python.org/packages/source/p/pep8/pep8-"
-               version
-               ".tar.gz"))
-        (sha256
-          (base32
-           "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pep8" version))
+       (sha256
+        (base32
+         "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
     (arguments
      ;; XXX Tests not compatible with Python 3.5.
      '(#:tests? #f))))
@@ -5559,15 +5551,12 @@ complexity of Python source code.")
   (package (inherit python-pyflakes)
     (version "0.8.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
-               version
-               ".tar.gz"))
-        (sha256
-          (base32
-           "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pyflakes" version))
+       (sha256
+        (base32
+         "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
     (arguments
      ;; XXX Tests not compatible with Python 3.5.
      '(#:tests? #f))))
@@ -6149,9 +6138,7 @@ Unicode-aware.  It is not intended as an end-user tool.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/P/PrettyTable/"
-             "prettytable-" version ".tar.bz2"))
+       (uri (pypi-uri "prettytable" version ".tar.bz2"))
        (sha256
         (base32
          "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
@@ -6383,8 +6370,7 @@ domains support.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/p/"
-                           "pretend/pretend-" version ".tar.gz"))
+       (uri (pypi-uri "pretend" version))
        (sha256
         (base32
          "040vm94lcbscg5p81g1icmwwwa2jm7wrd1ybmxnv1sz8rl8bh3n9"))))
@@ -6657,16 +6643,14 @@ Jupyter Notebook format and Python APIs for working with notebooks.")
 (define-public python-entrypoints
   (package
     (name "python-entrypoints")
-    (version "0.2.3")
+    (version "0.3")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (pypi-uri "entrypoints" version))
        (sha256
         (base32
-         "1pdvgfr5bxyvnfvxbsd3zi0dh3il71pc4k6rinx6zpps91b84a56"))))
+         "0lc4si3xb7hza424414rdqdc3vng3kcrph8jbvjqb32spqddf3f7"))))
     (build-system python-build-system)
     ;; The package does not come with a setup.py file, so we have to generate
     ;; one ourselves.
@@ -7134,9 +7118,7 @@ This allows one to make simple text-mode user interfaces on Unix-like systems")
     (version "5.0.6")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/c/configobj/"
-                    "configobj-" version ".tar.gz"))
+              (uri (pypi-uri "configobj" version))
               (sha256
                (base32
                 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
@@ -9245,10 +9227,7 @@ programming errors.")
     (version "2.4.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                     "https://pypi.python.org/packages/8b/3e/"
-                     "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
-                     "pykafka-" version ".tar.gz"))
+              (uri (pypi-uri "pykafka" version))
               (sha256
                (base32
                 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
@@ -9301,9 +9280,7 @@ specified in POSIX.1-2001 and POSIX.1-2008.")
     (version "0.1.7")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/j/jsonrpclib/"
-                    "jsonrpclib-" version ".tar.gz"))
+              (uri (pypi-uri "jsonrpclib" version))
               (sha256
                (base32
                 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 9c61d3c9ef..2e8f2d1135 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -79,12 +79,13 @@
     (version "5.1.0")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/steveire/grantlee/archive/v"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/steveire/grantlee.git")
+              (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
         (sha256
-         (base32 "1lf9rkv0i0kd7fvpgg5l8jb87zw8dzcwd1liv6hji7g4wlpmfdiq"))))
+         (base32 "1dmah2gd6zd4fgz2f4ir11dazqg067hjz8xshhywhfsmavchi626"))))
     (native-inputs
      ;; Optional: lcov and cccc, both are for code coverage
      `(("doxygen" ,doxygen)))
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
new file mode 100644
index 0000000000..dd8c062d31
--- /dev/null
+++ b/gnu/packages/sagemath.scm
@@ -0,0 +1,60 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages sagemath)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz))
+
+
+(define-public python-cypari2
+ (package
+   (name "python-cypari2")
+   (version "2.0.3")
+   (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "cypari2" version))
+       (sha256
+         (base32
+           "0mghbmilmy34xp1d50xdx76sijqxmpkm2bcgx2v1mdji2ff7n0yc"))))
+   (build-system python-build-system)
+   (native-inputs
+     `(("python-cython" ,python-cython)))
+   (propagated-inputs
+     `(("python-cysignals" ,python-cysignals)))
+   (inputs
+     `(("gmp" ,gmp)
+       ("pari-gp", pari-gp)))
+   (home-page "https://cypari2.readthedocs.io/")
+   (synopsis
+     "Python interface to the number theory library libpari")
+   (description
+     "Cypari2 provides a Python interface to the number theory library
+PARI/GP.  It has been spun off from the SageMath mathematics software system,
+but it can be used independently.")
+   (license license:gpl2+)))
+
+(define-public python2-cypari2
+  (package-with-python2 python-cypari2))
+
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index b836447668..bcaccb452c 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -1147,6 +1147,7 @@ generation.")
          #:test-target "test"
          #:phases
          (modify-phases %standard-phases
+           (delete 'bootstrap)
            (delete 'configure) ; No configure script
            (replace 'install ; Makefile has no 'install phase
             (lambda* (#:key outputs #:allow-other-keys)
@@ -1160,9 +1161,9 @@ generation.")
              (lambda* (#:key outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
                      (bin (string-append out "/bin")))
-                (and
-                 (zero? (system* "./bootstrap.sh"))
-                 (install-file "flisp.boot" bin))))))))
+                (invoke "./bootstrap.sh")
+                (install-file "flisp.boot" bin)
+                #t))))))
       (synopsis "Scheme-like lisp implementation")
       (description
        "@code{femtolisp} is a scheme-like lisp implementation with a
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index edf747de40..d0561559e9 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2017, 2018 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,9 +28,9 @@
 
 (define-module (gnu packages shells)
   #:use-module (gnu packages)
-  #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages groff)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages scheme)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system trivial)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix licenses)
@@ -89,51 +91,105 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
 (define-public fish
   (package
     (name "fish")
-    (version "2.7.1")
-    (source (origin
-              (method url-fetch)
-              (uri
-               (list
-                (string-append "https://fishshell.com/files/"
-                               version "/fish-" version ".tar.gz")
-                (string-append "https://github.com/fish-shell/fish-shell/"
-                               "releases/download/" version "/"
-                               name "-" version ".tar.gz")))
-              (sha256
-               (base32
-                "0nhc3yc5lnnan7zmxqqxm07rdpwjww5ijy45ll2njdc6fnfb2az4"))
-              (modules '((guix build utils)))
-              ;; Don't try to install /etc/fish/config.fish.
-              (snippet '(begin
-                          (substitute* "Makefile.in"
-                            ((".*INSTALL.*sysconfdir.*fish.*") ""))
-                          #t))))
+    (version "3.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/fish-shell/fish-shell/"
+                           "releases/download/" version "/"
+                           name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1kzjd0n0sfslkd36lzrvvvgy3qwkd9y466bkrqlnhd5h9dhx77ga"))))
     (build-system gnu-build-system)
-    (native-inputs
-     `(("doxygen" ,doxygen)))
     (inputs
-     `(("bc" ,bc)
+     `(("fish-foreign-env" ,fish-foreign-env)
+       ("groff" ,groff)                 ; for 'fish --help'
        ("ncurses" ,ncurses)
-       ("groff" ,groff)               ;for 'fish --help'
-       ("pcre2" ,pcre2)               ;don't use the bundled PCRE2
-       ("python" ,python-wrapper)))   ;for fish_config and manpage completions
+       ("pcre2" ,pcre2)      ; don't use the bundled PCRE2
+       ("python" ,python)))  ; for fish_config and manpage completions
+    (native-inputs
+     `(("doxygen" ,doxygen)))
     (arguments
-     '(#:tests? #f ; no check target
-       #:configure-flags '("--sysconfdir=/etc")
+     '(#:tests? #f                      ; no check target
        #:phases
        (modify-phases %standard-phases
-         ;; Embed absolute paths to store items.
-         (add-after 'unpack 'embed-store-paths
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (substitute* '("share/functions/math.fish"
-                            "share/functions/seq.fish")
-               (("\\| bc")
-                (string-append "| " (assoc-ref %build-inputs "bc")
-                               "/bin/bc")))
-             (substitute* "share/functions/fish_update_completions.fish"
-               (("python") (which "python")))
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* '("build_tools/build_commands_hdr.sh"
+                            "build_tools/build_user_doc.sh")
+               (("/usr/bin/env") "env"))
+             #t))
+         ;; Embed absolute paths.
+         (add-before 'install 'embed-absolute-paths
+           (lambda _
+             (substitute* '("share/functions/__fish_config_interactive.fish"
+                            "share/functions/fish_config.fish"
+                            "share/functions/fish_update_completions.fish")
+               (("python3") (which "python3")))
              (substitute* "share/functions/__fish_print_help.fish"
                (("nroff") (which "nroff")))
+             #t))
+         ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish.
+         (add-before 'install 'patch-fish-config
+           (lambda _
+             (let ((port (open-file "etc/config.fish" "a")))
+               (display (string-append
+                         "\n\n"
+                         "# Patched by Guix.\n"
+                         "# Source /etc/fish/config.fish.\n"
+                         "if test -f /etc/fish/config.fish\n"
+                         "    source /etc/fish/config.fish\n"
+                         "end\n")
+                        port)
+               (close-port port))
+             #t))
+         ;; Enable completions, functions and configurations in user's and
+         ;; system's guix profiles by adding them to __extra_* variables.
+         (add-before 'install 'patch-fish-extra-paths
+           (lambda _
+             (let ((port (open-file "share/__fish_build_paths.fish" "a")))
+               (display
+                (string-append
+                 "\n\n"
+                 "# Patched by Guix.\n"
+                 "# Enable completions, functions and configurations in user's"
+                 " and system's guix profiles by adding them to __extra_*"
+                 " variables.\n"
+                 "set -l __guix_profile_paths ~/.guix-profile"
+                 " /run/current-system/profile\n"
+                 "set __extra_completionsdir"
+                 " $__guix_profile_paths\"/etc/fish/completions\""
+                 " $__guix_profile_paths\"/share/fish/vendor_completions.d\""
+                 " $__extra_completionsdir\n"
+                 "set __extra_functionsdir"
+                 " $__guix_profile_paths\"/etc/fish/functions\""
+                 " $__guix_profile_paths\"/share/fish/vendor_functions.d\""
+                 " $__extra_functionsdir\n"
+                 "set __extra_confdir"
+                 " $__guix_profile_paths\"/etc/fish/conf.d\""
+                 " $__guix_profile_paths\"/share/fish/vendor_conf.d\""
+                 " $__extra_confdir\n")
+                port)
+               (close-port port))
+             #t))
+         ;; Use fish-foreign-env to source /etc/profile.
+         (add-before 'install 'source-etc-profile
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((port (open-file "share/__fish_build_paths.fish" "a")))
+               (display
+                (string-append
+                 "\n\n"
+                 "# Patched by Guix.\n"
+                 "# Use fish-foreign-env to source /etc/profile.\n"
+                 "if status is-login\n"
+                 "    set fish_function_path "
+                 (assoc-ref inputs "fish-foreign-env") "/share/fish/functions"
+                 " $__fish_datadir/functions\n"
+                 "    fenv source /etc/profile\n"
+                 "    set -e fish_function_path\n"
+                 "end\n")
+                port)
+               (close-port port))
              #t)))))
     (synopsis "The friendly interactive shell")
     (description
@@ -148,6 +204,54 @@ and syntax highlighting.")
     (home-page "https://fishshell.com/")
     (license gpl2)))
 
+(define-public fish-foreign-env
+  (package
+    (name "fish-foreign-env")
+    (version "0.20190116")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oh-my-fish/plugin-foreign-env.git")
+             (commit "dddd9213272a0ab848d474d0cbde12ad034e65bc")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs"))))
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((source (assoc-ref %build-inputs "source"))
+                (out (assoc-ref %outputs "out"))
+                (func-path (string-append out "/share/fish/functions")))
+           (mkdir-p func-path)
+           (copy-recursively (string-append source "/functions")
+                             func-path)
+
+           ;; Embed absolute paths.
+           (substitute* `(,(string-append func-path "/fenv.fish")
+                          ,(string-append func-path "/fenv.apply.fish")
+                          ,(string-append func-path "/fenv.main.fish"))
+             (("bash")
+              (string-append (assoc-ref %build-inputs "bash") "/bin/bash"))
+             (("sed")
+              (string-append (assoc-ref %build-inputs "sed") "/bin/sed"))
+             ((" tr ")
+              (string-append " " (assoc-ref %build-inputs "coreutils")
+                             "/bin/tr ")))))))
+    (inputs
+     `(("bash" ,bash)
+       ("coreutils" ,coreutils)
+       ("sed" ,sed)))
+    (home-page "https://github.com/oh-my-fish/plugin-foreign-env")
+    (synopsis "Foreign environment interface for fish shell")
+    (description "@code{fish-foreign-env} wraps bash script execution in a way
+that environment variables that are exported or modified get imported back
+into fish.")
+    (license expat)))
+
 (define-public rc
   (package
     (name "rc")
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index 12bdd1a2fa..a01633c4b8 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -22,6 +22,7 @@
   #:use-module (guix licenses)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages lout)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages plotutils)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index ecfecdad40..04b49def54 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -1808,13 +1808,13 @@ times.")
 (define-public r-data-table
   (package
     (name "r-data-table")
-    (version "1.11.8")
+    (version "1.12.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "data.table" version))
               (sha256
                (base32
-                "1nb6wngrk1a30m984524gf26fa1nwgyf4y4an94dibcwb5jp8hnw"))))
+                "1xz388khklqqc39r1cmjvqm65azambgzqw0743aypm6v4chi26v1"))))
     (build-system r-build-system)
     (home-page "https://github.com/Rdatatable/data.table/wiki")
     (synopsis "Enhanced version of data.frame R object")
@@ -2100,14 +2100,14 @@ R version.")
 (define-public r-checkmate
   (package
     (name "r-checkmate")
-    (version "1.9.0")
+    (version "1.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "checkmate" version))
        (sha256
         (base32
-         "00bjlc910y4paddvpz68pl3qyvjxlwqgyh39wpfkq43p99gvnj37"))))
+         "1y4ylzn55kpyfpzcx9rxb9413d3ck6hair36ldl0ak61ia5kc75p"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)))
@@ -2297,17 +2297,21 @@ collation, and NAMESPACE files.")
 (define-public r-openssl
   (package
     (name "r-openssl")
-    (version "1.1")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "openssl" version))
        (sha256
         (base32
-         "0ldxgcr33lawwr8wp14kdk2678gpkvqkzv6g333bhck1hn6qspzv"))))
+         "0ypa41qr58jgipzkqn3wjqdsjyi7qk57i46s5wy88xy3j8jl9jkv"))))
     (build-system r-build-system)
     (inputs
      `(("libressl" ,libressl)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("r-askpass" ,r-askpass)))
     (home-page "https://github.com/jeroenooms/openssl")
     (synopsis "Toolkit for encryption, signatures and certificates")
     (description
@@ -2557,13 +2561,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.200.5.0")
+    (version "0.9.200.7.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "09041jnalh7352kj6lv4d0xr9c0mvf8p860q5c8m13mp214x5x7k"))))
+                "11m04yvdh6086567dzzxchbf68fl5hxf2y32acf3f43bjqgwbv2p"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     (native-inputs
@@ -3320,14 +3324,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
 (define-public r-e1071
   (package
     (name "r-e1071")
-    (version "1.7-0")
+    (version "1.7-0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "e1071" version))
        (sha256
         (base32
-         "0fk4pw67cw1663d0n9rf1qfdqzz8k5nqkjgp3hi5jr422qp9lsck"))))
+         "11fqm4shmksalkazcwvzfknp3amigw7fr8wdwanqa5v5kx7ihyq9"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)))
@@ -3755,18 +3759,17 @@ It uses and relies on grid graphics and formal (S4) classes and methods.")
 (define-public r-purrr
   (package
     (name "r-purrr")
-    (version "0.2.5")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "purrr" version))
        (sha256
         (base32
-         "0dc53zzan3km2l9lzxjixcv6yn7dhw2ppmz8qf2awhak7x2qm9m4"))))
+         "0mzbf9ca8qdrqkrh9x7yzqxiab9bk10ql46qr1wl2bgbflminzda"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-tibble" ,r-tibble)
-       ("r-magrittr" ,r-magrittr)
+     `(("r-magrittr" ,r-magrittr)
        ("r-rlang" ,r-rlang)))
     (home-page "https://github.com/hadley/purrr")
     (synopsis "Functional programming tools")
@@ -3981,14 +3984,14 @@ package instead.")
 (define-public r-hmisc
   (package
     (name "r-hmisc")
-    (version "4.1-1")
+    (version "4.2-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Hmisc" version))
        (sha256
         (base32
-         "160l50ppjs69ipcaya1mlcz29zbn5rmqg91r09dvzzvkvwfb47cr"))))
+         "1n8i2jhc308hd6bvys9cd7nrz7pwjszs03r5bwlh1pc869ki95ly"))))
     (properties `((upstream-name . "Hmisc")))
     (build-system r-build-system)
     (native-inputs
@@ -4200,14 +4203,14 @@ including:
 (define-public r-gplots
   (package
     (name "r-gplots")
-    (version "3.0.1")
+    (version "3.0.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gplots" version))
        (sha256
         (base32
-         "02nb8n3s7c1zxq2s7ycaq2ys72y7mzirxrwj954h6gdc4x1zhg9l"))))
+         "033plcfs9w8pmn84n24mdhiixdirc2a7pz6dvm61fpd20gwh7cbx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-catools" ,r-catools)
@@ -4727,14 +4730,14 @@ and resampling-based inference.")
 (define-public r-prabclus
   (package
     (name "r-prabclus")
-    (version "2.2-6")
+    (version "2.2-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "prabclus" version))
        (sha256
         (base32
-         "0qjsxrx6yv338bxm4ki0w9h8hind1l98abdrz828588bwj02jya1"))))
+         "0h2nml8ri27mhfs2p6ngb6kfd6lyq30sc6813yybpskkrb6gs1pb"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
@@ -5404,14 +5407,14 @@ diagnostic tools (@code{ctlcurves} and @code{DiscrFact}).")
 (define-public r-ranger
   (package
     (name "r-ranger")
-    (version "0.10.1")
+    (version "0.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ranger" version))
        (sha256
         (base32
-         "12z67xkgdmr5cflpd6cln0mn5xxajanqbfwlckv6cfma0gvf2z1j"))))
+         "1yyg1nppq76jngzffd44brppqrlxqdhv92pyy0gn09rfc0ab37wr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 236923a2d6..7f52c6efd4 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
+;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -910,7 +911,7 @@ tmux.")
 (define-public kitty
   (package
     (name "kitty")
-    (version "0.13.1")
+    (version "0.13.3")
     (home-page "https://sw.kovidgoyal.net/kitty/")
     (source
      (origin
@@ -921,7 +922,7 @@ tmux.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1j24zjasdh48z7majfpqr71n1wn5a9688wsmmqn26v8kfb68pqs4"))
+         "1y0vd75j8g61jdj8miml79w5ri3pqli5rv9iq6zdrxvzfa4b2rmb"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -943,7 +944,8 @@ tmux.")
        ("libpng" ,libpng)
        ("freetype" ,freetype)
        ("fontconfig" ,fontconfig)
-       ("pygments" ,python2-pygments)))
+       ("pygments" ,python-pygments)
+       ("wayland" ,wayland)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libxrandr" ,libxrandr)
@@ -959,6 +961,15 @@ tmux.")
     (arguments
      '(#:phases (modify-phases %standard-phases
                   (delete 'configure)
+                  ;; Wayland backend requires EGL, which isn't found
+                  ;; out-of-the-box for some reason. Hard-code it instead.
+                  (add-after 'unpack 'hard-code-libegl
+                    (lambda _
+                      (let* ((mesa (assoc-ref %build-inputs "libgl1-mesa"))
+                             (libegl (string-append mesa "/lib/libEGL.so.1")))
+                        (substitute* "glfw/egl_context.c"
+                                     (("libEGL.so.1") libegl)))
+                      #t))
                   (replace 'build
                     (lambda _
                       (invoke "python3" "setup.py" "linux-package")))
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 2852b37676..5f294dc84c 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -2770,8 +2770,17 @@ re-processing.")
               (sha256
                (base32
                 "0y4i651b75y6006n03x8n86bsqvjsailvvz9bhzy51dzsznqidq0"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/seminar"))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((target (string-append (assoc-ref %outputs "out")
+                                      "/share/texmf-dist/tex/latex/seminar")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
     (home-page "https://www.ctan.org/pkg/seminar")
     (synopsis "Make overhead slides")
     ;; TODO: This package may need fancybox and xcomment at runtime.
@@ -5806,3 +5815,68 @@ for use with LaTeX is available in @code{freenfss}, part of
 supports advanced interactive documents.  See the ConTeXt garden for a wealth
 of support information.")
     (license license:gpl2+)))
+
+(define-public texlive-latex-beamer
+  (package
+    (name "texlive-latex-beamer")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (svn-reference
+                    (url (string-append "svn://www.tug.org/texlive/tags/"
+                                        %texlive-tag "/Master/texmf-dist/"
+                                        "/tex/latex/beamer"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "09y3qwbj0nckshvg9afgwcv9v3zdif1d7bnpzrggsa1fbr80mgk2"))))
+    (build-system trivial-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((target (string-append (assoc-ref %outputs "out")
+                                      "/share/texmf-dist/tex/latex/beamer"))
+               (docs   (string-append (assoc-ref %outputs "doc")
+                                      "/share/texmf-dist/doc/latex/beamer/")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+
+           (mkdir-p docs)
+           (copy-recursively (assoc-ref %build-inputs "docs") docs)
+           #t))))
+    (propagated-inputs
+     `(("texlive-latex-hyperref" ,texlive-latex-hyperref)
+       ("texlive-latex-oberdiek" ,texlive-latex-oberdiek)
+       ("texlive-latex-etoolbox" ,texlive-latex-etoolbox)
+       ("texlive-latex-pgf" ,texlive-latex-pgf)))
+    (native-inputs
+     `(("docs"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/doc/latex/beamer"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-" version "-checkout"))
+           (sha256
+            (base32
+             "102b18b9nw9dicqqgjwx0srh1mav8vh9wdvwayn741niza9hac23"))))))
+    (home-page "https://www.ctan.org/pkg/beamer")
+    (synopsis "LaTeX class for producing presentations and slides")
+    (description "The beamer LaTeX class can be used for producing slides.
+The class works in both PostScript and direct PDF output modes, using the
+@code{pgf} graphics system for visual effects.  Content is created in the
+@code{frame} environment, and each frame can be made up of a number of slides
+using a simple notation for specifying material to appear on each slide within
+a frame.  Short versions of title, authors, institute can also be specified as
+optional parameters.  Whole frame graphics are supported by plain frames.  The
+class supports @code{figure} and @code{table} environments, transparency
+effects, varying slide transitions and animations.")
+    ;; Code is dual licensed under GPLv2+ or LPPL1.3c+; documentation is
+    ;; dual-licensed under either FDLv1.3+ or LPPL1.3c+.
+    (license (list license:lppl1.3c+ license:gpl2+ license:fdl1.3+))))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9d8ecbd339..4fb46c7303 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -123,15 +123,16 @@ in intelligent transportation networks.")
 (define-public p11-kit
   (package
     (name "p11-kit")
-    (version "0.23.14")
+    (version "0.23.15")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
                           "download/" version "/p11-kit-" version ".tar.gz"))
+      (patches (search-patches "p11-kit-jks-timestamps.patch"))
       (sha256
        (base32
-        "0w0dkq9388grbbn4bv2p55vy1j51f7nd9hzlc9gz4fbm4dnzmf8w"))))
+        "166pwj00cffv4qq4dvx0k53zka0b0r1fa0whc49007vsqyh3khgp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4121832f12..8f0884db09 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -399,7 +399,7 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
 (define-public x265
   (package
     (name "x265")
-    (version "2.9")
+    (version "3.0")
     (outputs '("out" "static"))
     (source
       (origin
@@ -408,9 +408,8 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
                             "x265_" version ".tar.gz"))
         (sha256
          (base32
-          "090hp4216isis8q5gb7bwzia8rfyzni54z21jnwm97x3hiy6ibpb"))
-        (patches (search-patches "x265-arm-flags.patch"
-                                 "x265-detect512-all-arches.patch"))
+          "0qh65wdpasrspkm1y0dlfa123myax568yi0sas0lmg5b1hkgrff5"))
+        (patches (search-patches "x265-arm-flags.patch"))
         (modules '((guix build utils)))
         (snippet '(begin
                     (delete-file-recursively "source/compat/getopt")
@@ -871,6 +870,34 @@ audio/video codec library.")
               (base32
                "0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l"))))))
 
+(define-public ffmpeg-for-stepmania
+  (hidden-package
+   (package
+     (inherit ffmpeg)
+     (version "2.1.3")
+     (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/stepmania/ffmpeg.git")
+              (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
+        (sha256
+         (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
+        (file-name (git-file-name "ffmpeg" version))))
+     (arguments
+      (substitute-keyword-arguments (package-arguments ffmpeg)
+        ((#:configure-flags flags)
+         '(list "--disable-programs"
+                "--disable-doc"
+                "--disable-debug"
+                "--disable-avdevice"
+                "--disable-swresample"
+                "--disable-postproc"
+                "--disable-avfilter"
+                "--disable-shared"
+                "--enable-static"))))
+     (inputs '()))))
+
 (define-public ffmpegthumbnailer
   (package
     (name "ffmpegthumbnailer")
@@ -1314,7 +1341,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.01.17")
+    (version "2019.01.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1322,7 +1349,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0fxajwv81b0bjw9qlwmxd4r93yp5nnqll79vhic0vy72ii0093r7"))))
+                "0z4x4lwpd6qd2r9xgp8cx4j1vl5vd76kzs74jp0hh3w2g31s51z8"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index d178a08413..26855b8007 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -110,6 +110,8 @@
              (method url-fetch)
              (uri (string-append "https://download.qemu.org/qemu-"
                                  version ".tar.xz"))
+             (patches (search-patches "qemu-CVE-2018-16872.patch"
+                                      "qemu-CVE-2019-6778.patch"))
              (sha256
               (base32
                "1z5bd5nfyjvhfi1s95labc82y4hjdjjkdabw931362ls0zghh1ba"))))
@@ -799,13 +801,13 @@ Machine Protocol.")
    (version "a12")
    (source
     (origin
-     (method url-fetch)
-     (uri (string-append "https://github.com/gnif/LookingGlass/archive/"
-                         version ".tar.gz"))
-     (file-name (string-append name "-" version))
+     (method git-fetch)
+     (uri (git-reference (url "https://github.com/gnif/LookingGlass")
+                         (commit version)))
+     (file-name (git-file-name name version))
      (sha256
       (base32
-       "0x57chx83f8pq56d9sfxmc9p4qjm9nqvdyamj41bmy145mxw5w3m"))))
+       "0r6bvl9q94039r6ff4f2bg8si95axx9w8bf1h1qr5730d2kv5yxq"))))
    (build-system cmake-build-system)
    (inputs `(("fontconfig" ,fontconfig)
              ("glu" ,glu)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 8d51af40e5..57346518a3 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -88,6 +88,7 @@
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages java)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages image)
@@ -123,14 +124,14 @@
 (define-public httpd
   (package
     (name "httpd")
-    (version "2.4.37")
+    (version "2.4.38")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/httpd/httpd-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "09npb7vlz5sizgj0nvl0bqxj9zig29ipkp07fgmw5ykjcxfdr61l"))))
+               "0jiriyyf3pm6axf4mrz6c2z08yhs21hb4d23viq87jclm5bmiikx"))))
     (build-system gnu-build-system)
     (native-inputs `(("pcre" ,pcre "bin")))       ;for 'pcre-config'
     (inputs `(("apr" ,apr)
@@ -5278,20 +5279,18 @@ snippets on @url{https://commandlinefu.com}.")
 (define-public rss-bridge
   (package
     (name "rss-bridge")
-    (version "2018-11-10")
+    (version "2019-01-13")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/RSS-Bridge/rss-bridge/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/RSS-Bridge/rss-bridge")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1l9a82smh6k37bjvzbmkdlssxywlmr40ig4cykgsns1iiszwv4ia"))))
+         "1m0dq491954f0d7k4508ddlywk09whcz9j21rc4yk3lbwpf0nd4c"))))
     (build-system trivial-build-system)
-    (native-inputs
-     `(("gzip" ,gzip)
-       ("tar" ,tar)))
     (arguments
      '(#:modules ((guix build utils))
        #:builder
@@ -5300,12 +5299,9 @@ snippets on @url{https://commandlinefu.com}.")
                       (ice-9 match))
          (let* ((out (assoc-ref %outputs "out"))
                 (share-rss-bridge (string-append out "/share/rss-bridge")))
-           (set-path-environment-variable
-            "PATH" '("bin") (map (match-lambda ((_ . input) input))
-                                 %build-inputs))
            (mkdir-p share-rss-bridge)
-           (invoke "tar" "xvf" (assoc-ref %build-inputs "source")
-                   "--strip-components" "1" "-C" share-rss-bridge)))))
+           (copy-recursively (assoc-ref %build-inputs "source") share-rss-bridge)
+           #t))))
     (home-page "https://github.com/RSS-Bridge/rss-bridge")
     (synopsis "Generate Atom feeds for social networking websites")
     (description "rss-bridge generates Atom feeds for social networking
@@ -5324,6 +5320,9 @@ Instagram and YouTube.")
        (uri (git-reference
              (url "https://github.com/linkchecker/linkchecker")
              (commit (string-append "v" version))))
+       (patches
+        (search-patches
+         "linkchecker-mark-more-tests-that-require-the-network.patch"))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -5333,8 +5332,32 @@ Instagram and YouTube.")
      `(("python2-dnspython" ,python2-dnspython)
        ("python2-pyxdg" ,python2-pyxdg)
        ("python2-requests" ,python2-requests)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("python2-pytest" ,python2-pytest)
+       ("python2-miniboa" ,python2-miniboa)
+       ("python2-parameterized" ,python2-parameterized)))
     (arguments
-     `(#:python ,python-2))
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         ;; Move the 'check phase to after 'install, so that the installed
+         ;; library can be used
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Set PYTHONPATH so that the installed linkchecker is used
+               (setenv "PYTHONPATH"
+                       (string-append out "/lib/python2.7/site-packages"
+                                      ":"
+                                      (getenv "PYTHONPATH")))
+               ;; Remove this directory to avoid it being used when running
+               ;; the tests
+               (delete-file-recursively "linkcheck")
+
+               (invoke "py.test" "tests"))
+             #t)))))
     (home-page "https://linkcheck.github.io/linkchecker")
     (synopsis "Check websites for broken links")
     (description "LinkChecker is a website validator.  It checks for broken
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 7bf634759a..fa0e467f31 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -181,14 +181,14 @@ commands would.")
 (define-public i3-wm
   (package
     (name "i3-wm")
-    (version "4.16")
+    (version "4.16.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://i3wm.org/downloads/i3-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1d2mnryn7m9c6d69awd7lwzadliapd0ahi5n8d0ppqy533ssaq6c"))))
+                "0xl56y196vxv001gvx35xwfr25zah8m3xwizp9ycdgdc0rfc4rdb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 7e3c1aad1c..bf7a4050a3 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
 ;;; Copyright © 2019 nee <nee@cock.li>
+;;; Copyright © 2019 Yoshinori Arai <kumagusu08@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2623,6 +2624,29 @@ as USB mice.")
      "xf86-input-void is a null input driver for the Xorg X server.")
     (license license:x11)))
 
+(define-public xf86-video-amdgpu
+  (package
+    (name "xf86-video-amdgpu")
+    (version "18.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "mirror://xorg/individual/driver/xf86-video-amdgpu-"
+               version
+               ".tar.bz2"))
+        (sha256
+          (base32
+           "0wlnb929l3yqj4hdkzyxyhbaph13ac4villajgmbh66pa6xja7z1"))))
+    (build-system gnu-build-system)
+    (inputs `(("xorg-server" ,xorg-server)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (home-page "https://www.x.org/wiki/")
+    (synopsis "AMD Radeon video driver for X server")
+    (description
+     "xf86-video-amdgpu is an AMD Radeon video driver for the Xorg
+X server.")
+    (license license:x11)))
 
 (define-public xf86-video-ark
   (package
@@ -5701,6 +5725,37 @@ user-friendly mechanism to start the X server.")
 Intrinsics (Xt) Library.")
     (license license:x11)))
 
+(define-public xclock
+  (package
+    (name "xclock")
+    (version "1.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.x.org/releases/individual/app/"
+                           name "-" version ".tar.bz2"))
+       (sha256
+        (base32 "1l3xv4bsca6bwxx73jyjz0blav86i7vwffkhdb1ac81y9slyrki3"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-appdefaultdir="
+                            %output ,%app-defaults-dir))))
+    (inputs
+     `(("libxmu" ,libxmu)
+       ("libx11" ,libx11)
+       ("libxaw" ,libxaw)
+       ("libxrender" ,libxrender)
+       ("libxft" ,libxft)
+       ("libxkbfile" ,libxkbfile)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://www.x.org/")
+    (synopsis "Analog / digital clock for X")
+    (description "The xclock program displays the time in analog or digital
+form.")
+    (license (license:x11-style "file://COPYING" "See COPYING for details."))))
+
 (define-public xmag
   (package
     (name "xmag")
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index e4b652b3d4..1b232b6cba 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -20,7 +20,7 @@
   #:use-module (gnu services)
   #:use-module (gnu services base)
   #:use-module (gnu services shepherd)
-  #:autoload   (gnu packages guile) (mcron)
+  #:autoload   (gnu packages guile-xyz) (mcron)
   #:use-module (guix deprecation)
   #:use-module (guix records)
   #:use-module (guix gexp)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 2f91619219..d66254c03d 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -87,11 +87,11 @@
 ;;; Code:
 
 (define %default-xorg-modules
-  ;; Default list of modules loaded by the server.  Note that the order
-  ;; matters since it determines which driver is going to be used when there's
-  ;; a choice.
+  ;; Default list of modules loaded by the server.  When multiple drivers
+  ;; match, the first one in the list is loaded.
   (list xf86-video-vesa
         xf86-video-fbdev
+        xf86-video-amdgpu
         xf86-video-ati
         xf86-video-cirrus
         xf86-video-intel