summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-10-13 23:04:06 +0200
committerMarius Bakke <mbakke@fastmail.com>2019-10-13 23:04:06 +0200
commit378ebc048c033744b4f1dc13e16f4f2277d7529f (patch)
tree8411f2a9348d47858b2aca849377e91ea7f90833 /gnu/packages
parentd99e7ee0f2bbe4abe08552afaa9821036da2a760 (diff)
parent64855281c18bab87a61c77a18c9001e6e222fb08 (diff)
downloadguix-378ebc048c033744b4f1dc13e16f4f2277d7529f.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/assembly.scm4
-rw-r--r--gnu/packages/audio.scm16
-rw-r--r--gnu/packages/check.scm35
-rw-r--r--gnu/packages/commencement.scm3498
-rw-r--r--gnu/packages/cpp.scm30
-rw-r--r--gnu/packages/curl.scm15
-rw-r--r--gnu/packages/disk.scm20
-rw-r--r--gnu/packages/distributed.scm14
-rw-r--r--gnu/packages/django.scm4
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm847
-rw-r--r--gnu/packages/emacs.scm10
-rw-r--r--gnu/packages/enlightenment.scm8
-rw-r--r--gnu/packages/fabric-management.scm6
-rw-r--r--gnu/packages/file-systems.scm1
-rw-r--r--gnu/packages/freedesktop.scm24
-rw-r--r--gnu/packages/games.scm32
-rw-r--r--gnu/packages/gcc.scm4
-rw-r--r--gnu/packages/glib.scm6
-rw-r--r--gnu/packages/gnome.scm71
-rw-r--r--gnu/packages/gnupg.scm15
-rw-r--r--gnu/packages/gpodder.scm4
-rw-r--r--gnu/packages/installers.scm116
-rw-r--r--gnu/packages/jupyter.scm4
-rw-r--r--gnu/packages/kodi.scm4
-rw-r--r--gnu/packages/linux.scm99
-rw-r--r--gnu/packages/machine-learning.scm22
-rw-r--r--gnu/packages/mail.scm8
-rw-r--r--gnu/packages/mate.scm4
-rw-r--r--gnu/packages/maths.scm6
-rw-r--r--gnu/packages/mes.scm27
-rw-r--r--gnu/packages/mp3.scm5
-rw-r--r--gnu/packages/mpi.scm4
-rw-r--r--gnu/packages/music.scm63
-rw-r--r--gnu/packages/networking.scm5
-rw-r--r--gnu/packages/package-management.scm132
-rw-r--r--gnu/packages/patches/id3lib-UTF16-writing-bug.patch39
-rw-r--r--gnu/packages/patches/nsis-env-passthru.patch12
-rw-r--r--gnu/packages/patches/parted-glibc-compat.patch17
-rw-r--r--gnu/packages/patches/strace-ipc-tests.patch30
-rw-r--r--gnu/packages/python-crypto.scm11
-rw-r--r--gnu/packages/python-xyz.scm32
-rw-r--r--gnu/packages/re2c.scm6
-rw-r--r--gnu/packages/speech.scm2
-rw-r--r--gnu/packages/tbb.scm4
-rw-r--r--gnu/packages/tcl.scm2
-rw-r--r--gnu/packages/terminals.scm7
-rw-r--r--gnu/packages/tls.scm22
-rw-r--r--gnu/packages/web.scm24
-rw-r--r--gnu/packages/xiph.scm30
-rw-r--r--gnu/packages/xml.scm20
51 files changed, 3125 insertions, 2300 deletions
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 527555abfc..26a6d23a8a 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -117,14 +117,14 @@ debugging information in STABS, DWARF 2, and CodeView 8 formats.")
 (define-public lightning
   (package
     (name "lightning")
-    (version "2.1.2")
+    (version "2.1.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/lightning/lightning-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0sbs2lm8b9in2m8d52zf0x9gpp40x6r7sl6sha92yq3pr78rwa4v"))))
+               "1jgxbq2cm51dzi3zhz38mmgwdcgs328mfl8iviw8dxn6dn36p1gd"))))
     (build-system gnu-build-system)
     (native-inputs `(("zlib" ,zlib)))
     (synopsis "Library for generating assembly code at runtime")
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 49ec474ffd..88f3b5eccd 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1109,7 +1109,7 @@ follower.")
 (define-public fluidsynth
   (package
     (name "fluidsynth")
-    (version "2.0.6")
+    (version "2.0.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1118,7 +1118,7 @@ follower.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nas9pp9r8rnziznxm65x2yzf1ryg98zr3946g0br3s38sjf8l3a"))))
+                "1h1dj3wmjwzny2hgr41k3p67w4kxvzn365kkqwyfd6yk0v3rahic"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; no check target
@@ -2771,22 +2771,14 @@ conversion.  It may be used, for example, to resample PCM-encoded audio.")
 (define-public twolame
   (package
     (name "twolame")
-    (version "0.3.13")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/twolame/twolame/" version
                            "/twolame-" version ".tar.gz"))
        (sha256
-        (base32 "0ahiqqng5pidwhj1wzph4vxxgxxgcfa3gl0gywipzx2ii7s35wwq"))
-       (modules '((guix build utils)))
-       ;; The tests break with Perl 5.24:
-       ;; https://github.com/njh/twolame/issues/21
-       ;; TODO: Remove this snippet when upgrading twolame.
-       (snippet
-        '(begin
-           (substitute* "tests/test.pl" (("\\(@_\\)") "($_[0])"))
-           #t))))
+        (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsndfile" ,libsndfile)))
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 18af697693..5ecf0c1ba1 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -354,6 +354,25 @@ a CxxTest testing library, it employs no advanced features of C++ (e.g. RTTI)
 and it supports a very flexible form of test discovery.")
     (license license:lgpl3+)))
 
+(define-public doctest
+  (package
+    (name "doctest")
+    (version "2.3.5")
+    (home-page "https://github.com/onqtam/doctest")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0rddlzhnv0f5036q0m0p019pismka7sx6x8cnzk65sk77b1dsbhg"))))
+    (build-system cmake-build-system)
+    (synopsis "C++ test framework")
+    (description
+     "doctest is a single-header testing framework for C++11 and later.  It
+has been designed to be fast, light and unintrusive.")
+    (license license:expat)))
+
 (define-public go-gopkg.in-check.v1
   (let ((commit "788fd78401277ebd861206a03c884797c6ec5541")
         (revision "1"))
@@ -816,6 +835,22 @@ supports coverage of subprocesses.")
 (define-public python2-pytest-runner
   (package-with-python2 python-pytest-runner))
 
+;; python-bleach 3.1.0 requires this ancient version of pytest-runner.
+;; Remove once no longer needed.
+(define-public python-pytest-runner-2
+  (package/inherit
+   python-pytest-runner
+   (version "2.12.2")
+   (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "pytest-runner" version))
+             (sha256
+              (base32
+               "11ivjj9hfphkv4yfb2g74av4yy86y8gcbf7gbif0p1hcdfnxg3w6"))))))
+
+(define-public python2-pytest-runner-2
+  (package-with-python2 python-pytest-runner-2))
+
 (define-public python-pytest-mock
   (package
     (name "python-pytest-mock")
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index fd98c80dc3..d113acaba8 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -85,80 +85,80 @@
 ;;; Code:
 
 (define mes-boot
-  (package-with-bootstrap-guile
-   (package
-     (inherit mes)
-     (name "mes-boot")
-     (version "0.19")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/mes/"
-                                   "mes-" version ".tar.gz"))
-               (sha256
-                (base32
-                 "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0"))))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs
-      `(("mescc-tools" ,%bootstrap-mescc-tools)
-        ("nyacc-source" ,(package-source nyacc-0.86))
-
-        ("coreutils" , %bootstrap-coreutils&co)
-        ("bootstrap-mes" ,%bootstrap-mes)))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:strip-binaries? #f   ; binutil's strip b0rkes MesCC/M1/hex2 binaries
-        #:phases
-        (modify-phases %standard-phases
-          (add-after 'unpack 'unpack-seeds
-            (lambda _
-              (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source"))
-                    (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes")))
-                (with-directory-excursion ".."
-                  (mkdir-p "nyacc-source")
-                  (invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source)
-                  (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed"))
-                #t)))
-          (replace 'configure
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref %outputs "out")))
-                (setenv "GUILE" "mes")
-                (setenv "GUILE_EFFECTIVE_VERSION" "2.2")
-                (setenv "GUILE_LOAD_PATH" "nyacc")
-                (symlink (string-append "../nyacc-source/module") "nyacc")
-                (invoke "bash" "configure.sh"
-                        (string-append "--prefix=" out)))))
-          (replace 'build
-            (lambda _
-              (let ((mes (assoc-ref %build-inputs "bootstrap-mes")))
-                (setenv "MES_PREFIX" (string-append mes "/share/mes"))
-                (setenv "MES_ARENA" "100000000")
-                (setenv "MES_MAX_ARENA" "100000000")
-                (setenv "MES_STACK" "10000000")
-                (invoke "sh" "bootstrap.sh"))))
-          (replace 'check
-            (lambda _
-              (setenv "DIFF" "sh scripts/diff.scm")
-              ;; fail fast tests
-              ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
-              ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell")
-              (invoke "sh" "check.sh")))
-          (replace 'install
-            (lambda _
-              (invoke "sh" "install.sh"))))))
-     (native-search-paths
-      ;; Use the language-specific variables rather than 'CPATH' because they
-      ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
-      ;; The intent is to allow headers that are in the search path to be
-      ;; treated as "system headers" (headers exempt from warnings) just like
-      ;; the typical /usr/include headers on an FHS system.
-      (list (search-path-specification
-             (variable "C_INCLUDE_PATH")
-             (files '("share/mes/include")))
-            (search-path-specification
-             (variable "LIBRARY_PATH")
-             (files '("share/mes/lib"))))))))
+  (package
+    (inherit mes)
+    (name "mes-boot")
+    (version "0.19")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/mes/"
+                                  "mes-" version ".tar.gz"))
+              (sha256
+               (base32
+                "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0"))))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs
+     `(("mescc-tools" ,%bootstrap-mescc-tools)
+       ("nyacc-source" ,(bootstrap-origin
+                         (package-source nyacc-0.86)))
+
+       ("coreutils" , %bootstrap-coreutils&co)
+       ("bootstrap-mes" ,%bootstrap-mes)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:strip-binaries? #f    ; binutil's strip b0rkes MesCC/M1/hex2 binaries
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-seeds
+           (lambda _
+             (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source"))
+                   (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes")))
+               (with-directory-excursion ".."
+                 (mkdir-p "nyacc-source")
+                 (invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source)
+                 (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed"))
+               #t)))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref %outputs "out")))
+               (setenv "GUILE" "mes")
+               (setenv "GUILE_EFFECTIVE_VERSION" "2.2")
+               (setenv "GUILE_LOAD_PATH" "nyacc")
+               (symlink (string-append "../nyacc-source/module") "nyacc")
+               (invoke "bash" "configure.sh"
+                       (string-append "--prefix=" out)))))
+         (replace 'build
+           (lambda _
+             (let ((mes (assoc-ref %build-inputs "bootstrap-mes")))
+               (setenv "MES_PREFIX" (string-append mes "/share/mes"))
+               (setenv "MES_ARENA" "100000000")
+               (setenv "MES_MAX_ARENA" "100000000")
+               (setenv "MES_STACK" "10000000")
+               (invoke "sh" "bootstrap.sh"))))
+         (replace 'check
+           (lambda _
+             (setenv "DIFF" "sh scripts/diff.scm")
+             ;; fail fast tests
+             ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t")
+             ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell")
+             (invoke "sh" "check.sh")))
+         (replace 'install
+           (lambda _
+             (invoke "sh" "install.sh"))))))
+    (native-search-paths
+     ;; Use the language-specific variables rather than 'CPATH' because they
+     ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
+     ;; The intent is to allow headers that are in the search path to be
+     ;; treated as "system headers" (headers exempt from warnings) just like
+     ;; the typical /usr/include headers on an FHS system.
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("share/mes/include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("share/mes/lib")))))))
 
 (define tcc-boot0
   ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11
@@ -170,348 +170,349 @@
   (let ((version "0.9.26")
         (revision "6")
         (commit "c004e9a34fb026bb44d211ab98bb768e79900eef"))
-    (package-with-bootstrap-guile
-     (package
-       (inherit tcc)
-       (name "tcc-boot0")
-       (version (string-append version "-" revision "." (string-take commit 7)))
-       (source (origin
-                 (method url-fetch)
-                 (uri (string-append "https://gitlab.com/janneke/tinycc"
-                                     "/-/archive/" commit
-                                     "/tinycc-" commit ".tar.gz"))
-                 (sha256
-                  (base32
-                   "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b"))))
-       (build-system gnu-build-system)
-       (supported-systems '("i686-linux" "x86_64-linux"))
-       (inputs '())
-       (propagated-inputs '())
-       (native-inputs
-        `(("mes" ,mes-boot)
-          ("mescc-tools" ,%bootstrap-mescc-tools)
-          ("nyacc-source" ,(package-source nyacc-0.86))
-
-          ("coreutils" , %bootstrap-coreutils&co)
-          ("bootstrap-mes" ,%bootstrap-mes)))
-       (arguments
-        `(#:implicit-inputs? #f
-          #:guile ,%bootstrap-guile
-          #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries
-          #:phases
-          (modify-phases %standard-phases
-            (add-after 'unpack 'unpack-seeds
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
-                       (nyacc-source (assoc-ref %build-inputs "nyacc-source"))
-                       (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes")))
-                  (setenv "PATH" (string-append
-                                  coreutils "/bin"))
-                  (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
-                  (with-directory-excursion ".."
-                    (mkdir-p "nyacc-source")
-                    (invoke "tar" "--strip=1" "-C" "nyacc-source"
-                            "-xvf" nyacc-source)
-                    (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed"))
-                  #t)))
-            (replace 'configure
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let* ((out (assoc-ref %outputs "out"))
-                       (dir (with-directory-excursion ".." (getcwd)))
-                       (coreutils (assoc-ref %build-inputs "coreutils"))
-                       (mes (assoc-ref %build-inputs "mes"))
-                       (mescc-tools (assoc-ref %build-inputs "mescc-tools"))
-                       (libc (assoc-ref %build-inputs "libc"))
-                       (interpreter (if libc
-                                        ;; also for x86_64-linux, we are still on i686-linux
-                                        (string-append libc ,(glibc-dynamic-linker "i686-linux"))
-                                        (string-append mes "/lib/mes-loader"))))
-                  (setenv "PATH" (string-append
-                                  coreutils "/bin"
-                                  ":" mes "/bin"
-                                  ":" mescc-tools "/bin"))
-                  (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
-
-                  (setenv "PREFIX" out)
-                  (symlink (string-append mes "/share/mes") "mes")
-                  (symlink (string-append "../nyacc-source/module") "nyacc")
-                  (setenv "MES_PREFIX" "mes")
-                  (setenv "MES_ARENA" "100000000")
-                  (setenv "MES_MAX_ARENA" "100000000")
-                  (setenv "MES_STACK" "10000000")
-                  (setenv "MES" "mes")
-                  (setenv "GUILE_LOAD_PATH" "nyacc")
-                  (invoke "sh" "configure"
-                          "--prefix=$PREFIX"
-                          (string-append "--elfinterp=" interpreter)
-                          "--crtprefix=."
-                          "--tccdir=."))))
-            (replace 'build
-              (lambda _
-                (substitute* "bootstrap.sh"
-                  (("^    cmp") "#    cmp"))
-                (invoke "sh" "bootstrap.sh")))
-            (replace 'check
-              (lambda _
-                (setenv "DIFF" "diff.scm")
-                (setenv "OBJDUMP" "true")
-                ;; fail fast tests
-                ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen")
-                ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment")
-                (setenv "TCC" "./tcc")
-                (invoke "sh" "check.sh")))
-            (replace 'install
-              (lambda _
-                (invoke "sh" "install.sh"))))))
-       (native-search-paths
-        ;; Use the language-specific variables rather than 'CPATH' because they
-        ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
-        ;; The intent is to allow headers that are in the search path to be
-        ;; treated as "system headers" (headers exempt from warnings) just like
-        ;; the typical /usr/include headers on an FHS system.
-        (list (search-path-specification
-               (variable "C_INCLUDE_PATH")
-               (files '("include")))
-              (search-path-specification
-               (variable "LIBRARY_PATH")
-               (files '("lib")))))))))
+    (package
+      (inherit tcc)
+      (name "tcc-boot0")
+      (version (string-append version "-" revision "." (string-take commit 7)))
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "https://gitlab.com/janneke/tinycc"
+                                    "/-/archive/" commit
+                                    "/tinycc-" commit ".tar.gz"))
+                (sha256
+                 (base32
+                  "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b"))))
+      (build-system gnu-build-system)
+      (supported-systems '("i686-linux" "x86_64-linux"))
+      (inputs '())
+      (propagated-inputs '())
+      (native-inputs
+       `(("mes" ,mes-boot)
+         ("mescc-tools" ,%bootstrap-mescc-tools)
+         ("nyacc-source" ,(bootstrap-origin
+                           (package-source nyacc-0.86)))
+
+         ("coreutils" , %bootstrap-coreutils&co)
+         ("bootstrap-mes" ,%bootstrap-mes)))
+      (arguments
+       `(#:implicit-inputs? #f
+         #:guile ,%bootstrap-guile
+         #:strip-binaries? #f  ; binutil's strip b0rkes MesCC/M1/hex2 binaries
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'unpack-seeds
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
+                      (nyacc-source (assoc-ref %build-inputs "nyacc-source"))
+                      (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes")))
+                 (setenv "PATH" (string-append
+                                 coreutils "/bin"))
+                 (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+                 (with-directory-excursion ".."
+                   (mkdir-p "nyacc-source")
+                   (invoke "tar" "--strip=1" "-C" "nyacc-source"
+                           "-xvf" nyacc-source)
+                   (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed"))
+                 #t)))
+           (replace 'configure
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref %outputs "out"))
+                      (dir (with-directory-excursion ".." (getcwd)))
+                      (coreutils (assoc-ref %build-inputs "coreutils"))
+                      (mes (assoc-ref %build-inputs "mes"))
+                      (mescc-tools (assoc-ref %build-inputs "mescc-tools"))
+                      (libc (assoc-ref %build-inputs "libc"))
+                      (interpreter (if libc
+                                       ;; also for x86_64-linux, we are still on i686-linux
+                                       (string-append libc ,(glibc-dynamic-linker "i686-linux"))
+                                       (string-append mes "/lib/mes-loader"))))
+                 (setenv "PATH" (string-append
+                                 coreutils "/bin"
+                                 ":" mes "/bin"
+                                 ":" mescc-tools "/bin"))
+                 (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+
+                 (setenv "PREFIX" out)
+                 (symlink (string-append mes "/share/mes") "mes")
+                 (symlink (string-append "../nyacc-source/module") "nyacc")
+                 (setenv "MES_PREFIX" "mes")
+                 (setenv "MES_ARENA" "100000000")
+                 (setenv "MES_MAX_ARENA" "100000000")
+                 (setenv "MES_STACK" "10000000")
+                 (setenv "MES" "mes")
+                 (setenv "GUILE_LOAD_PATH" "nyacc")
+                 (invoke "sh" "configure"
+                         "--prefix=$PREFIX"
+                         (string-append "--elfinterp=" interpreter)
+                         "--crtprefix=."
+                         "--tccdir=."))))
+           (replace 'build
+             (lambda _
+               (substitute* "bootstrap.sh"
+                 (("^    cmp") "#    cmp"))
+               (invoke "sh" "bootstrap.sh")))
+           (replace 'check
+             (lambda _
+               (setenv "DIFF" "diff.scm")
+               (setenv "OBJDUMP" "true")
+               ;; fail fast tests
+               ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen")
+               ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment")
+               (setenv "TCC" "./tcc")
+               (invoke "sh" "check.sh")))
+           (replace 'install
+             (lambda _
+               (invoke "sh" "install.sh"))))))
+      (native-search-paths
+       ;; Use the language-specific variables rather than 'CPATH' because they
+       ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
+       ;; The intent is to allow headers that are in the search path to be
+       ;; treated as "system headers" (headers exempt from warnings) just like
+       ;; the typical /usr/include headers on an FHS system.
+       (list (search-path-specification
+              (variable "C_INCLUDE_PATH")
+              (files '("include")))
+             (search-path-specification
+              (variable "LIBRARY_PATH")
+              (files '("lib"))))))))
 
 (define tcc-boot
-  (package-with-bootstrap-guile
-   (package
-     (inherit tcc-boot0)
-     (name "tcc-boot")
-     (version "0.9.27")
-     (source (origin
+  (package
+    (inherit tcc-boot0)
+    (name "tcc-boot")
+    (version "0.9.27")
+    (source (bootstrap-origin
+             (origin
                (inherit (package-source tcc))
-               (patches (search-patches "tcc-boot-0.9.27.patch"))))
-     (build-system gnu-build-system)
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs
-      `(("mes" ,mes-boot)
-        ("tcc" ,tcc-boot0)
-
-        ("coreutils" , %bootstrap-coreutils&co)))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:strip-binaries? #f            ; binutil's strip b0rkes MesCC/M1/hex2
-                                        ; binaries, tcc-boot also comes with
-                                        ; MesCC/M1/hex2-built binaries
-        #:phases
-        (modify-phases %standard-phases
-          (replace 'configure
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref %outputs "out"))
-                     (coreutils (assoc-ref %build-inputs "coreutils"))
-                     (mes (assoc-ref %build-inputs "mes"))
-                     (tcc (assoc-ref %build-inputs "tcc"))
-                     (libc (assoc-ref %build-inputs "libc"))
-                     (interpreter (if libc
-                                      ;; also for x86_64-linux, we are still on i686-linux
-                                      (string-append libc ,(glibc-dynamic-linker "i686-linux"))
-                                      (string-append mes "/lib/mes-loader"))))
-                ;; unpack
-                (setenv "PATH" (string-append
-                                coreutils "/bin"
-                                ":" tcc "/bin"))
-                (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
-                (invoke "sh" "configure"
-                        (string-append "--cc=tcc")
-                        (string-append "--cpu=i386")
-                        (string-append "--prefix=" out)
-                        (string-append "--elfinterp=" interpreter)
-                        (string-append "--crtprefix=" tcc "/lib")
-                        (string-append "--sysincludepaths=" tcc "/include")
-                        (string-append "--libpaths=" tcc "/lib")))))
-          (replace 'build
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref %outputs "out"))
-                     (mes (assoc-ref %build-inputs "mes"))
-                     (tcc (assoc-ref %build-inputs "tcc"))
-                     (libc (assoc-ref %build-inputs "libc"))
-                     (interpreter (if libc
-                                      ;; also for x86_64-linux, we are still on i686-linux
-                                      (string-append libc ,(glibc-dynamic-linker "i686-linux"))
-                                      (string-append mes "/lib/mes-loader"))))
-                (invoke "tcc"
-                        "-vvv"
-                        "-D" "BOOTSTRAP=1"
-                        "-D" "ONE_SOURCE=1"
-                        "-D" "TCC_TARGET_I386=1"
-                        "-D" "CONFIG_TCC_STATIC=1"
-                        "-D" "CONFIG_USE_LIBGCC=1"
-                        "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"")
-                        "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"")
-                        "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"")
-                        "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"")
-                        "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"")
-                        "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"")
-                        "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"")
-                        "-o" "tcc"
-                        "tcc.c"))))
-          (replace 'check
-            (lambda _
-              ;; FIXME: add sensible check target (without depending on make)
-              ;; ./check.sh ?
-              (= 1 (status:exit-val (system* "./tcc" "--help")))))
-          (replace 'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref %outputs "out"))
-                    (tcc (assoc-ref %build-inputs "tcc")))
-                (mkdir-p (string-append out "/bin"))
-                (copy-file "tcc" (string-append out "/bin/tcc"))
-                (mkdir-p (string-append out "/lib/tcc"))
-                (copy-recursively (string-append tcc "/include")
-                                  (string-append out "/include"))
-                (copy-recursively (string-append tcc "/lib")
-                                  (string-append out "/lib"))
-                (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c")
-                (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o")
-                (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a"))
-                (delete-file (string-append out "/lib/tcc/libtcc1.a"))
-                (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a"))
-                #t)))))))))
+               (patches (search-patches "tcc-boot-0.9.27.patch")))))
+    (build-system gnu-build-system)
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs
+     `(("mes" ,mes-boot)
+       ("tcc" ,tcc-boot0)
+
+       ("coreutils" , %bootstrap-coreutils&co)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+
+       ;; Binutils' 'strip' b0rkes MesCC/M1/hex2 binaries, tcc-boot also comes
+       ;; with MesCC/M1/hex2-built binaries.
+       #:strip-binaries? #f
+
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref %outputs "out"))
+                    (coreutils (assoc-ref %build-inputs "coreutils"))
+                    (mes (assoc-ref %build-inputs "mes"))
+                    (tcc (assoc-ref %build-inputs "tcc"))
+                    (libc (assoc-ref %build-inputs "libc"))
+                    (interpreter (if libc
+                                     ;; also for x86_64-linux, we are still on i686-linux
+                                     (string-append libc ,(glibc-dynamic-linker "i686-linux"))
+                                     (string-append mes "/lib/mes-loader"))))
+               ;; unpack
+               (setenv "PATH" (string-append
+                               coreutils "/bin"
+                               ":" tcc "/bin"))
+               (format (current-error-port) "PATH=~s\n" (getenv "PATH"))
+               (invoke "sh" "configure"
+                       (string-append "--cc=tcc")
+                       (string-append "--cpu=i386")
+                       (string-append "--prefix=" out)
+                       (string-append "--elfinterp=" interpreter)
+                       (string-append "--crtprefix=" tcc "/lib")
+                       (string-append "--sysincludepaths=" tcc "/include")
+                       (string-append "--libpaths=" tcc "/lib")))))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref %outputs "out"))
+                    (mes (assoc-ref %build-inputs "mes"))
+                    (tcc (assoc-ref %build-inputs "tcc"))
+                    (libc (assoc-ref %build-inputs "libc"))
+                    (interpreter (if libc
+                                     ;; also for x86_64-linux, we are still on i686-linux
+                                     (string-append libc ,(glibc-dynamic-linker "i686-linux"))
+                                     (string-append mes "/lib/mes-loader"))))
+               (invoke "tcc"
+                       "-vvv"
+                       "-D" "BOOTSTRAP=1"
+                       "-D" "ONE_SOURCE=1"
+                       "-D" "TCC_TARGET_I386=1"
+                       "-D" "CONFIG_TCC_STATIC=1"
+                       "-D" "CONFIG_USE_LIBGCC=1"
+                       "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"")
+                       "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"")
+                       "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out
+                                           "/lib:{B}/lib:.\"")
+                       "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"")
+                       "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"")
+                       "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"")
+                       "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"")
+                       "-o" "tcc"
+                       "tcc.c"))))
+         (replace 'check
+           (lambda _
+             ;; FIXME: add sensible check target (without depending on make)
+             ;; ./check.sh ?
+             (= 1 (status:exit-val (system* "./tcc" "--help")))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref %outputs "out"))
+                   (tcc (assoc-ref %build-inputs "tcc")))
+               (mkdir-p (string-append out "/bin"))
+               (copy-file "tcc" (string-append out "/bin/tcc"))
+               (mkdir-p (string-append out "/lib/tcc"))
+               (copy-recursively (string-append tcc "/include")
+                                 (string-append out "/include"))
+               (copy-recursively (string-append tcc "/lib")
+                                 (string-append out "/lib"))
+               (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c")
+               (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o")
+               (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a"))
+               (delete-file (string-append out "/lib/tcc/libtcc1.a"))
+               (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a"))
+               #t))))))))
 
 (define make-mesboot0
-  (package-with-bootstrap-guile
-   (package
-     (inherit gnu-make)
-     (name "make-mesboot0")
-     (version "3.80")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/make/make-"
-                                   version ".tar.gz"))
-               (sha256
-                (base32
-                 "1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4"))))
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs `(("tcc" ,tcc-boot)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:tests? #f                     ; check depends on perl
-        #:guile ,%bootstrap-guile
-        #:configure-flags `("CC=tcc -DO_RDONLY=0"
-                            "LD=tcc"
-                            "--disable-nls")
-        #:phases
-        (modify-phases %standard-phases
-          (add-after 'configure 'configure-fixup
-            (lambda _
-              (substitute* "build.sh"
-                (("^REMOTE=.*") "REMOTE=stub\n")
-                (("^extras=.*") "extras=getloadavg.c\n"))
-              (substitute* "make.h"
-                (("^extern long int lseek.*" all) (string-append "// " all)))
-              #t))
-          (delete 'patch-generated-file-shebangs) ; no perl
-          (replace 'build
-            (lambda _
-              (invoke "sh" "./build.sh")))
-          (replace 'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bin (string-append out "/bin")))
-                (install-file "make" bin)
-                #t)))))))))
+  (package
+    (inherit gnu-make)
+    (name "make-mesboot0")
+    (version "3.80")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/make/make-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4"))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs `(("tcc" ,tcc-boot)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:tests? #f                                ; check depends on perl
+       #:guile ,%bootstrap-guile
+       #:configure-flags `("CC=tcc -DO_RDONLY=0"
+                           "LD=tcc"
+                           "--disable-nls")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'configure-fixup
+           (lambda _
+             (substitute* "build.sh"
+               (("^REMOTE=.*") "REMOTE=stub\n")
+               (("^extras=.*") "extras=getloadavg.c\n"))
+             (substitute* "make.h"
+               (("^extern long int lseek.*" all) (string-append "// " all)))
+             #t))
+         (delete 'patch-generated-file-shebangs)  ; no perl
+         (replace 'build
+           (lambda _
+             (invoke "sh" "./build.sh")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (install-file "make" bin)
+               #t))))))))
 
 (define diffutils-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit diffutils)
-     (name "diffutils-mesboot")
-     (version "2.7")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/diffutils/diffutils-"
-                                   version ".tar.gz"))
-               (sha256
-                (base32
-                 "1mirn5i825bn5w7rh6mgn0r8aj9xqanav95dwcl1b8sn82f4iwnm"))))
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs `(("mes" ,mes-boot)
-                      ("tcc" ,tcc-boot)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("make" ,make-mesboot0)))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:parallel-build? #f
-        #:tests? #f           ; check is naive, also checks non-built PROGRAMS
-        #:strip-binaries? #f  ; no strip yet
-        #:phases
-        (modify-phases %standard-phases
-          ;; diffutils-2.7 needs more traditional configure
-          (replace 'configure
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out"))
-                    (bash (assoc-ref %build-inputs "bash")))
-                (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                (setenv "CC" "tcc")
-                (setenv "LD" "tcc")
-                (invoke "./configure" (string-append "--prefix=" out)))))
-          (add-before 'configure 'remove-diff3-sdiff
-            (lambda* (#:key outputs #:allow-other-keys)
-              (substitute* "Makefile.in"
-                (("PROGRAMS = .*" all) "PROGRAMS = cmp diff"))
-              #t))))))))
+  (package
+    (inherit diffutils)
+    (name "diffutils-mesboot")
+    (version "2.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/diffutils/diffutils-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1mirn5i825bn5w7rh6mgn0r8aj9xqanav95dwcl1b8sn82f4iwnm"))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs `(("mes" ,mes-boot)
+                     ("tcc" ,tcc-boot)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("make" ,make-mesboot0)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:parallel-build? #f
+       #:tests? #f            ; check is naive, also checks non-built PROGRAMS
+       #:strip-binaries? #f   ; no strip yet
+       #:phases
+       (modify-phases %standard-phases
+         ;; diffutils-2.7 needs more traditional configure
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (bash (assoc-ref %build-inputs "bash")))
+               (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+               (setenv "CC" "tcc")
+               (setenv "LD" "tcc")
+               (invoke "./configure" (string-append "--prefix=" out)))))
+         (add-before 'configure 'remove-diff3-sdiff
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile.in"
+               (("PROGRAMS = .*" all) "PROGRAMS = cmp diff"))
+             #t)))))))
 
 (define binutils-mesboot0
-  (package-with-bootstrap-guile
-   (package
-     (inherit binutils)
-     (name "binutils-mesboot0")
-     (version "2.20.1a")
-     (source (origin
+  (package
+    (inherit binutils)
+    (name "binutils-mesboot0")
+    (version "2.20.1a")
+    (source (bootstrap-origin
+             (origin
                (method url-fetch)
                (uri (string-append "mirror://gnu/binutils/binutils-"
                                    version ".tar.bz2"))
                (patches (search-patches "binutils-boot-2.20.1a.patch"))
                (sha256
                 (base32
-                 "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs `(("tcc" ,tcc-boot)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("make" ,make-mesboot0)))
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:tests? #f                     ; runtest: command not found
-        #:parallel-build? #f
-        #:strip-binaries? #f            ; no strip yet
-        #:configure-flags
-        (let ((cppflags (string-append " -D __GLIBC_MINOR__=6"
-                                       " -D MES_BOOTSTRAP=1"))
-              (bash (assoc-ref %build-inputs "bash")))
-          `(,(string-append "CONFIG_SHELL=" bash "/bin/sh")
-            ,(string-append "CPPFLAGS=" cppflags)
-            "AR=tcc -ar"
-            "CXX=false"
-            "RANLIB=true"
-            ,(string-append "CC=tcc" cppflags)
-            "--disable-nls"
-            "--disable-shared"
-            "--disable-werror"
-            "--build=i686-unknown-linux-gnu"
-            "--host=i686-unknown-linux-gnu"
-            "--with-sysroot=/")))))))
+                 "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi")))))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs `(("tcc" ,tcc-boot)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("make" ,make-mesboot0)))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:tests? #f                                ; runtest: command not found
+       #:parallel-build? #f
+       #:strip-binaries? #f                       ; no strip yet
+       #:configure-flags
+       (let ((cppflags (string-append " -D __GLIBC_MINOR__=6"
+                                      " -D MES_BOOTSTRAP=1"))
+             (bash (assoc-ref %build-inputs "bash")))
+         `(,(string-append "CONFIG_SHELL=" bash "/bin/sh")
+           ,(string-append "CPPFLAGS=" cppflags)
+           "AR=tcc -ar"
+           "CXX=false"
+           "RANLIB=true"
+           ,(string-append "CC=tcc" cppflags)
+           "--disable-nls"
+           "--disable-shared"
+           "--disable-werror"
+           "--build=i686-unknown-linux-gnu"
+           "--host=i686-unknown-linux-gnu"
+           "--with-sysroot=/"))))))
 
 (define gcc-core-mesboot
   ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C
@@ -519,12 +520,12 @@
   ;; library, such as dir.h/struct DIR/readdir, locales, signals...  Also,
   ;; with gcc-2.95.3, binutils-boot-2.20.1a and glibc-2.2.5 we found a GNU
   ;; toolchain triplet "that works".
-  (package-with-bootstrap-guile
-   (package
-     (inherit gcc)
-     (name "gcc-core-mesboot")
-     (version "2.95.3")
-     (source (origin
+  (package
+    (inherit gcc)
+    (name "gcc-core-mesboot")
+    (version "2.95.3")
+    (source (bootstrap-origin
+             (origin
                (method url-fetch)
                (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-"
                                    version
@@ -532,162 +533,161 @@
                (patches (search-patches "gcc-boot-2.95.3.patch"))
                (sha256
                 (base32
-                 "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an"))))
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs `(("binutils" ,binutils-mesboot0)
-                      ("tcc" ,tcc-boot)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("make" ,make-mesboot0)))
-     (outputs '("out"))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:tests? #f
-        #:parallel-build? #f
-        #:strip-binaries? #f
-        #:configure-flags
-        (let ((out (assoc-ref %outputs "out")))
-          `("--enable-static"
-            "--disable-shared"
-            "--disable-werror"
-            "--build=i686-unknown-linux-gnu"
-            "--host=i686-unknown-linux-gnu"
-            ,(string-append "--prefix=" out)))
-        #:make-flags (list
-                      "CC=tcc -static -D __GLIBC_MINOR__=6"
-                      "OLDCC=tcc -static -D __GLIBC_MINOR__=6"
-                      "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6"
-                      "AR=ar"
-                      "RANLIB=ranlib"
-                      (string-append "LIBGCC2_INCLUDES=-I "
-                                     (assoc-ref %build-inputs "tcc")
-                                     "/include")
-                      "LANGUAGES=c"
-                      (string-append "BOOT_LDFLAGS="
-                                     " -B" (assoc-ref %build-inputs "tcc")
-                                     "/lib/"))
-        #:modules ((guix build gnu-build-system)
-                   (guix build utils)
-                   (srfi srfi-1))
-        #:phases
-        (modify-phases %standard-phases
-          ;; gcc-2.95.3 needs more traditional configure
-          (add-before 'configure 'setenv
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out"))
-                    (bash (assoc-ref %build-inputs "bash"))
-                    (tcc (assoc-ref %build-inputs "tcc"))
-                    (cppflags " -D __GLIBC_MINOR__=6"))
-                (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                (setenv "CPPFLAGS" cppflags)
-                (setenv "CC" (string-append "tcc" cppflags))
-                (setenv "CC_FOR_BUILD" (string-append "tcc" cppflags))
-                (setenv "CPP" (string-append "tcc -E" cppflags))
-                (with-output-to-file "config.cache"
-                  (lambda _
-                    (display "
+                 "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an")))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs `(("binutils" ,binutils-mesboot0)
+                     ("tcc" ,tcc-boot)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("make" ,make-mesboot0)))
+    (outputs '("out"))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:tests? #f
+       #:parallel-build? #f
+       #:strip-binaries? #f
+       #:configure-flags
+       (let ((out (assoc-ref %outputs "out")))
+         `("--enable-static"
+           "--disable-shared"
+           "--disable-werror"
+           "--build=i686-unknown-linux-gnu"
+           "--host=i686-unknown-linux-gnu"
+           ,(string-append "--prefix=" out)))
+       #:make-flags (list
+                     "CC=tcc -static -D __GLIBC_MINOR__=6"
+                     "OLDCC=tcc -static -D __GLIBC_MINOR__=6"
+                     "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6"
+                     "AR=ar"
+                     "RANLIB=ranlib"
+                     (string-append "LIBGCC2_INCLUDES=-I "
+                                    (assoc-ref %build-inputs "tcc")
+                                    "/include")
+                     "LANGUAGES=c"
+                     (string-append "BOOT_LDFLAGS="
+                                    " -B" (assoc-ref %build-inputs "tcc")
+                                    "/lib/"))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-1))
+       #:phases
+       (modify-phases %standard-phases
+         ;; gcc-2.95.3 needs more traditional configure
+         (add-before 'configure 'setenv
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (bash (assoc-ref %build-inputs "bash"))
+                   (tcc (assoc-ref %build-inputs "tcc"))
+                   (cppflags " -D __GLIBC_MINOR__=6"))
+               (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+               (setenv "CPPFLAGS" cppflags)
+               (setenv "CC" (string-append "tcc" cppflags))
+               (setenv "CC_FOR_BUILD" (string-append "tcc" cppflags))
+               (setenv "CPP" (string-append "tcc -E" cppflags))
+               (with-output-to-file "config.cache"
+                 (lambda _
+                   (display "
 ac_cv_c_float_format='IEEE (little-endian)'
 ")))
-                #t)))
-          (replace 'configure
-            (lambda* (#:key configure-flags  #:allow-other-keys)
-              (format (current-error-port)
-                      "running ./configure ~a\n" (string-join configure-flags))
-              (apply invoke "./configure" configure-flags)))
-          (add-after 'configure 'remove-info
-            (lambda _
-              ;; no info at this stage
-              (delete-file-recursively "texinfo")
-              (invoke "touch" "gcc/cpp.info" "gcc/gcc.info")))
-          (add-after 'install 'install2
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((tcc (assoc-ref %build-inputs "tcc"))
-                     (tcc-lib (string-append tcc "/lib/x86-mes-gcc"))
-                     (out (assoc-ref outputs "out"))
-                     (gcc-dir (string-append
-                               out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3")))
-                (mkdir-p "tmp")
-                (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a")))
-                (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o")))
-                (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a"))
-                (copy-file (string-append tcc "/lib/libtcc1.a")
-                           (string-append out "/lib/libtcc1.a"))
-                (invoke "ar" "r" (string-append gcc-dir "/libc.a")
-                        (string-append tcc-lib "/libc+gnu.o")
-                        (string-append tcc-lib "/libtcc1.o"))
-                (invoke "ar" "r" (string-append out "/lib/libc.a")
-                        (string-append tcc-lib "/libc+gnu.o")
-                        (string-append tcc-lib "/libtcc1.o"))
-                (invoke "ls" "-ltrF" gcc-dir)
-                (copy-recursively (string-append tcc "/include")
-                                  (string-append out "/include"))
-                #t))))))
-     (native-search-paths
-      ;; Use the language-specific variables rather than 'CPATH' because they
-      ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
-      ;; The intent is to allow headers that are in the search path to be
-      ;; treated as "system headers" (headers exempt from warnings) just like
-      ;; the typical /usr/include headers on an FHS system.
-      (list (search-path-specification
-             (variable "C_INCLUDE_PATH")
-             (files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include")))
-            (search-path-specification
-             (variable "LIBRARY_PATH")
-             (files '("lib"))))))))
+               #t)))
+         (replace 'configure
+           (lambda* (#:key configure-flags  #:allow-other-keys)
+             (format (current-error-port)
+                     "running ./configure ~a\n" (string-join configure-flags))
+             (apply invoke "./configure" configure-flags)))
+         (add-after 'configure 'remove-info
+           (lambda _
+             ;; no info at this stage
+             (delete-file-recursively "texinfo")
+             (invoke "touch" "gcc/cpp.info" "gcc/gcc.info")))
+         (add-after 'install 'install2
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((tcc (assoc-ref %build-inputs "tcc"))
+                    (tcc-lib (string-append tcc "/lib/x86-mes-gcc"))
+                    (out (assoc-ref outputs "out"))
+                    (gcc-dir (string-append
+                              out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3")))
+               (mkdir-p "tmp")
+               (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a")))
+               (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o")))
+               (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a"))
+               (copy-file (string-append tcc "/lib/libtcc1.a")
+                          (string-append out "/lib/libtcc1.a"))
+               (invoke "ar" "r" (string-append gcc-dir "/libc.a")
+                       (string-append tcc-lib "/libc+gnu.o")
+                       (string-append tcc-lib "/libtcc1.o"))
+               (invoke "ar" "r" (string-append out "/lib/libc.a")
+                       (string-append tcc-lib "/libc+gnu.o")
+                       (string-append tcc-lib "/libtcc1.o"))
+               (invoke "ls" "-ltrF" gcc-dir)
+               (copy-recursively (string-append tcc "/include")
+                                 (string-append out "/include"))
+               #t))))))
+    (native-search-paths
+     ;; Use the language-specific variables rather than 'CPATH' because they
+     ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
+     ;; The intent is to allow headers that are in the search path to be
+     ;; treated as "system headers" (headers exempt from warnings) just like
+     ;; the typical /usr/include headers on an FHS system.
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("lib")))))))
 
 (define mesboot-headers
-  (package-with-bootstrap-guile
-   (package
-     (inherit mes-boot)
-     (name "mesboot-headers")
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs `(("coreutils" ,%bootstrap-coreutils&co)
-                      ("headers" ,%bootstrap-linux-libre-headers)))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:tests? #f
-        #:strip-binaries? #f
-        #:phases
-        (modify-phases %standard-phases
-          (delete 'configure)
-          (delete 'build)
-          (replace 'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (include (string-append out "/include"))
-                     (headers (assoc-ref %build-inputs "headers" )))
-                (mkdir-p include)
-                (copy-recursively "include" out)
-                (copy-recursively headers out)
-                #t))))))
-     (native-search-paths
-      ;; Use the language-specific variables rather than 'CPATH' because they
-      ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
-      ;; The intent is to allow headers that are in the search path to be
-      ;; treated as "system headers" (headers exempt from warnings) just like
-      ;; the typical /usr/include headers on an FHS system.
-      (list (search-path-specification
-             (variable "C_INCLUDE_PATH")
-             (files '("include"))))))))
+  (package
+    (inherit mes-boot)
+    (name "mesboot-headers")
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs `(("coreutils" ,%bootstrap-coreutils&co)
+                     ("headers" ,%bootstrap-linux-libre-headers)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:tests? #f
+       #:strip-binaries? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (include (string-append out "/include"))
+                    (headers (assoc-ref %build-inputs "headers" )))
+               (mkdir-p include)
+               (copy-recursively "include" out)
+               (copy-recursively headers out)
+               #t))))))
+    (native-search-paths
+     ;; Use the language-specific variables rather than 'CPATH' because they
+     ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
+     ;; The intent is to allow headers that are in the search path to be
+     ;; treated as "system headers" (headers exempt from warnings) just like
+     ;; the typical /usr/include headers on an FHS system.
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("include")))))))
 
 (define glibc-mesboot0
   ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build
   ;; using gcc-2.95.3.  Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer
   ;; gcc.
-  (package-with-bootstrap-guile
-   (package
-     (inherit glibc)
-     (name "glibc-mesboot0")
-     (version "2.2.5")
-     (source (origin
+  (package
+    (inherit glibc)
+    (name "glibc-mesboot0")
+    (version "2.2.5")
+    (source (bootstrap-origin
+             (origin
                (method url-fetch)
                (uri (string-append "mirror://gnu/glibc/glibc-"
                                    version
@@ -695,211 +695,208 @@ ac_cv_c_float_format='IEEE (little-endian)'
                (patches (search-patches "glibc-boot-2.2.5.patch"))
                (sha256
                 (base32
-                 "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q"))))
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (inputs '())
-     (propagated-inputs '())
-     (native-inputs `(("binutils" ,binutils-mesboot0)
-                      ("gcc" ,gcc-core-mesboot)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("headers" ,mesboot-headers)
-                      ("make" ,make-mesboot0)))
-     (outputs '("out"))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:tests? #f
-        #:strip-binaries? #f
-        #:parallel-build? #f    ; gcc-2.95.3 ICEs on massively parallel builds
-        #:make-flags (list (string-append
-                            "SHELL="
-                            (assoc-ref %build-inputs "bash")
-                            "/bin/sh"))
-        #:configure-flags
-        (let ((out (assoc-ref %outputs "out"))
-              (headers (assoc-ref %build-inputs "headers")))
-          (list
-           "--disable-shared"
-           "--enable-static"
-           "--disable-sanity-checks"
-           "--build=i686-unknown-linux-gnu"
-           "--host=i686-unknown-linux-gnu"
-           (string-append "--with-headers=" headers "/include")
-           "--enable-static-nss"
-           "--without-__thread"
-           "--without-cvs"
-           "--without-gd"
-           "--without-tls"
-           (string-append "--prefix=" out)))
-        #:phases
-        (modify-phases %standard-phases
-          (add-before 'configure 'setenv
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bash (assoc-ref %build-inputs "bash"))
-                     (gcc (assoc-ref %build-inputs "gcc"))
-                     (headers (assoc-ref %build-inputs "headers"))
-                     (cppflags (string-append
-                                ;;" -D __STDC__=1"
-                                " -D MES_BOOTSTRAP=1"
-                                " -D BOOTSTRAP_GLIBC=1"))
-                     (cflags (string-append " -L " (getcwd))))
-                (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                (setenv "SHELL" (getenv "CONFIG_SHELL"))
-                (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
-                (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))
-                #t)))
-          ;; glibc-2.2.5 needs a more classic invocation of configure
-          ;; configure: warning: CONFIG_SHELL=/gnu/store/…-bash-minimal-4.4.12/bin/bash: invalid host type
-          (replace 'configure
-            (lambda* (#:key configure-flags #:allow-other-keys)
-              (format (current-error-port)
-                      "running ./configure ~a\n" (string-join configure-flags))
-              (apply invoke "./configure" configure-flags))))))
-     (native-search-paths
-      ;; Use the language-specific variables rather than 'CPATH' because they
-      ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
-      ;; The intent is to allow headers that are in the search path to be
-      ;; treated as "system headers" (headers exempt from warnings) just like
-      ;; the typical /usr/include headers on an FHS system.
-      (list (search-path-specification
-             (variable "C_INCLUDE_PATH")
-             (files '("include")))
-            (search-path-specification
-             (variable "CPLUS_INCLUDE_PATH")
-             (files '("include")))
-            (search-path-specification
-             (variable "LIBRARY_PATH")
-             (files '("lib"))))))))
+                 "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q")))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (inputs '())
+    (propagated-inputs '())
+    (native-inputs `(("binutils" ,binutils-mesboot0)
+                     ("gcc" ,gcc-core-mesboot)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("headers" ,mesboot-headers)
+                     ("make" ,make-mesboot0)))
+    (outputs '("out"))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:tests? #f
+       #:strip-binaries? #f
+       #:parallel-build? #f     ; gcc-2.95.3 ICEs on massively parallel builds
+       #:make-flags (list (string-append
+                           "SHELL="
+                           (assoc-ref %build-inputs "bash")
+                           "/bin/sh"))
+       #:configure-flags
+       (let ((out (assoc-ref %outputs "out"))
+             (headers (assoc-ref %build-inputs "headers")))
+         (list
+          "--disable-shared"
+          "--enable-static"
+          "--disable-sanity-checks"
+          "--build=i686-unknown-linux-gnu"
+          "--host=i686-unknown-linux-gnu"
+          (string-append "--with-headers=" headers "/include")
+          "--enable-static-nss"
+          "--without-__thread"
+          "--without-cvs"
+          "--without-gd"
+          "--without-tls"
+          (string-append "--prefix=" out)))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'setenv
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bash (assoc-ref %build-inputs "bash"))
+                    (gcc (assoc-ref %build-inputs "gcc"))
+                    (headers (assoc-ref %build-inputs "headers"))
+                    (cppflags (string-append
+                               ;;" -D __STDC__=1"
+                               " -D MES_BOOTSTRAP=1"
+                               " -D BOOTSTRAP_GLIBC=1"))
+                    (cflags (string-append " -L " (getcwd))))
+               (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+               (setenv "SHELL" (getenv "CONFIG_SHELL"))
+               (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
+               (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))
+               #t)))
+         ;; glibc-2.2.5 needs a more classic invocation of configure
+         ;; configure: warning: CONFIG_SHELL=/gnu/store/…-bash-minimal-4.4.12/bin/bash: invalid host type
+         (replace 'configure
+           (lambda* (#:key configure-flags #:allow-other-keys)
+             (format (current-error-port)
+                     "running ./configure ~a\n" (string-join configure-flags))
+             (apply invoke "./configure" configure-flags))))))
+    (native-search-paths
+     ;; Use the language-specific variables rather than 'CPATH' because they
+     ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
+     ;; The intent is to allow headers that are in the search path to be
+     ;; treated as "system headers" (headers exempt from warnings) just like
+     ;; the typical /usr/include headers on an FHS system.
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "CPLUS_INCLUDE_PATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("lib")))))))
 
 (define gcc-mesboot0
-  (package-with-bootstrap-guile
-   (package
-     (inherit gcc-core-mesboot)
-     (name "gcc-mesboot0")
-     (native-inputs `(("binutils" ,binutils-mesboot0)
-                      ("gcc" ,gcc-core-mesboot)
-                      ("libc" ,glibc-mesboot0)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)
-                      ("make" ,make-mesboot0)))
-     (arguments
-      (substitute-keyword-arguments (package-arguments gcc-core-mesboot)
-        ((#:phases phases)
-         `(modify-phases ,phases
-            (replace 'setenv
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((out (assoc-ref outputs "out"))
-                      (bash (assoc-ref %build-inputs "bash"))
-                      (gcc (assoc-ref %build-inputs "gcc"))
-                      (glibc (assoc-ref %build-inputs "libc"))
-                      (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
-                  (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                  (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
-                  (setenv "C_INCLUDE_PATH" (string-append
-                                            gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
-                                            ":" kernel-headers "/include"
-                                            ":" glibc "/include"))
-                  (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
-                  (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
-                  ;; FIXME: add glibc dirs to paths manually
-                  (setenv "LIBRARY_PATH" (string-join
-                                          (list (string-append glibc "/lib")
-                                                (getenv "LIBRARY_PATH"))
-                                          ":"))
-                  (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
-                  (with-output-to-file "config.cache"
-                    (lambda _
-                      (display "
+  (package
+    (inherit gcc-core-mesboot)
+    (name "gcc-mesboot0")
+    (native-inputs `(("binutils" ,binutils-mesboot0)
+                     ("gcc" ,gcc-core-mesboot)
+                     ("libc" ,glibc-mesboot0)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)
+                     ("make" ,make-mesboot0)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments gcc-core-mesboot)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'setenv
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (bash (assoc-ref %build-inputs "bash"))
+                     (gcc (assoc-ref %build-inputs "gcc"))
+                     (glibc (assoc-ref %build-inputs "libc"))
+                     (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
+                 (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+                 (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
+                 (setenv "C_INCLUDE_PATH" (string-append
+                                           gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
+                                           ":" kernel-headers "/include"
+                                           ":" glibc "/include"))
+                 (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
+                 (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
+                 ;; FIXME: add glibc dirs to paths manually
+                 (setenv "LIBRARY_PATH" (string-join
+                                         (list (string-append glibc "/lib")
+                                               (getenv "LIBRARY_PATH"))
+                                         ":"))
+                 (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
+                 (with-output-to-file "config.cache"
+                   (lambda _
+                     (display "
 ac_cv_c_float_format='IEEE (little-endian)'
 ")))
-                  #t)))
-            (replace 'install2
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let* ((out (assoc-ref outputs "out"))
-                       (gcc-dir (string-append
-                                 out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3")))
-                  (mkdir-p "tmp")
-                  (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a")))
-                  (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o")))
-                  (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a"))
-                  #t)))))
-        ((#:configure-flags configure-flags)
-         `(let ((out (assoc-ref %outputs "out")))
-            `("--disable-shared"
-              "--disable-werror"
-              "--build=i686-unknown-linux-gnu"
-              "--host=i686-unknown-linux-gnu"
-              ,(string-append "--prefix=" out))))
-        ((#:make-flags make-flags)
-         `(let ((gcc (assoc-ref %build-inputs "gcc")))
-            `("RANLIB=true"
-              ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include")
-              "LANGUAGES=c"))))))))
+                 #t)))
+           (replace 'install2
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (gcc-dir (string-append
+                                out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3")))
+                 (mkdir-p "tmp")
+                 (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a")))
+                 (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o")))
+                 (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a"))
+                 #t)))))
+       ((#:configure-flags configure-flags)
+        `(let ((out (assoc-ref %outputs "out")))
+           `("--disable-shared"
+             "--disable-werror"
+             "--build=i686-unknown-linux-gnu"
+             "--host=i686-unknown-linux-gnu"
+             ,(string-append "--prefix=" out))))
+       ((#:make-flags make-flags)
+        `(let ((gcc (assoc-ref %build-inputs "gcc")))
+           `("RANLIB=true"
+             ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include")
+             "LANGUAGES=c")))))))
 
 (define binutils-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit binutils-mesboot0)
-     (name "binutils-mesboot")
-     (native-inputs `(("binutils" ,binutils-mesboot0)
-                      ("libc" ,glibc-mesboot0)
-                      ("gcc" ,gcc-mesboot0)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)
-                      ("make" ,make-mesboot0)))
-     (arguments
-      (substitute-keyword-arguments (package-arguments binutils-mesboot0)
-        ((#:configure-flags configure-flags)
-         '(list "--disable-nls"
-                "--disable-shared"
-                "--disable-werror"
-                "--build=i686-unknown-linux-gnu"
-                "--host=i686-unknown-linux-gnu"
-                "--with-sysroot=/")))))))
+  (package
+    (inherit binutils-mesboot0)
+    (name "binutils-mesboot")
+    (native-inputs `(("binutils" ,binutils-mesboot0)
+                     ("libc" ,glibc-mesboot0)
+                     ("gcc" ,gcc-mesboot0)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)
+                     ("make" ,make-mesboot0)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments binutils-mesboot0)
+       ((#:configure-flags configure-flags)
+        '(list "--disable-nls"
+               "--disable-shared"
+               "--disable-werror"
+               "--build=i686-unknown-linux-gnu"
+               "--host=i686-unknown-linux-gnu"
+               "--with-sysroot=/"))))))
 
 (define make-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit make-mesboot0)
-     (name "make-mesboot")
-     (version "3.82")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/make/make-"
-                                   version ".tar.gz"))
-               (sha256
-                (base32
-                 "1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x"))))
-     (native-inputs `(("binutils" ,binutils-mesboot0)
-                      ("libc" ,glibc-mesboot0)
-                      ("gcc" ,gcc-mesboot0)
-                      ("make" ,make-mesboot0)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)))
-     (arguments
-      (substitute-keyword-arguments (package-arguments make-mesboot0)
-        ((#:configure-flags configure-flags)
-         `(let ((out (assoc-ref %outputs "out")))
-            `(,(string-append "--prefix=" out))))
-        ((#:phases phases)
-         `(modify-phases ,phases
-            (delete 'configure-fixup)
-            (add-before 'configure 'setenv
-              (lambda _
-                (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv")
-                #t)))))))))
+  (package
+    (inherit make-mesboot0)
+    (name "make-mesboot")
+    (version "3.82")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/make/make-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x"))))
+    (native-inputs `(("binutils" ,binutils-mesboot0)
+                     ("libc" ,glibc-mesboot0)
+                     ("gcc" ,gcc-mesboot0)
+                     ("make" ,make-mesboot0)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments make-mesboot0)
+       ((#:configure-flags configure-flags)
+        `(let ((out (assoc-ref %outputs "out")))
+           `(,(string-append "--prefix=" out))))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (delete 'configure-fixup)
+           (add-before 'configure 'setenv
+             (lambda _
+               (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv")
+               #t))))))))
 
 (define gmp-boot
   (package
@@ -936,158 +933,157 @@ ac_cv_c_float_format='IEEE (little-endian)'
                 "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1"))))))
 
 (define gcc-mesboot1
-  (package-with-bootstrap-guile
-   (package
-     (inherit gcc-mesboot0)
-     (name "gcc-mesboot1")
-     (version "4.7.4")
-     (source (origin (inherit (package-source gcc-4.7))
-                     (patches (search-patches "gcc-boot-4.7.4.patch"))))
-     (inputs `(("gmp-source" ,(package-source gmp-boot))
-               ("mpfr-source" ,(package-source mpfr-boot))
-               ("mpc-source" ,(package-source mpc-boot))))
-     (native-inputs `(("binutils" ,binutils-mesboot)
-                      ("gcc" ,gcc-mesboot0)
-                      ("libc" ,glibc-mesboot0)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)
-                      ("make" ,make-mesboot)))
-     (arguments
-      (substitute-keyword-arguments (package-arguments gcc-core-mesboot)
-        ((#:make-flags make-flags)
-         `(let* ((libc (assoc-ref %build-inputs "libc"))
-                 (ldflags (string-append
-                           "-B" libc "/lib "
-                           "-Wl,-dynamic-linker "
-                           "-Wl," libc
-                           ,(glibc-dynamic-linker "i686-linux"))))
-            (list (string-append "LDFLAGS=" ldflags)
-                  (string-append "LDFLAGS_FOR_TARGET=" ldflags))))
-        ((#:phases phases)
-         `(modify-phases ,phases
-            ;; c&p from commencement.scm:gcc-boot0
-            (add-after 'unpack 'unpack-gmp&co
-              (lambda* (#:key inputs #:allow-other-keys)
-                (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
-                      (mpfr (assoc-ref %build-inputs "mpfr-source"))
-                      (mpc  (assoc-ref %build-inputs "mpc-source")))
-
-                  ;; To reduce the set of pre-built bootstrap inputs, build
-                  ;; GMP & co. from GCC.
-                  (for-each (lambda (source)
-                              (or (invoke "tar" "xvf" source)
-                                  (error "failed to unpack tarball"
-                                         source)))
-                            (list gmp mpfr mpc))
-
-                  ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
-                  ,@(map (lambda (lib)
-                           ;; Drop trailing letters, as gmp-6.0.0a unpacks
-                           ;; into gmp-6.0.0.
-                           `(symlink ,(string-trim-right
-                                       (package-full-name lib "-")
-                                       char-set:letter)
-                                     ,(package-name lib)))
-                         (list gmp-boot mpfr-boot mpc-boot))
-                  #t)))
-            (delete 'remove-info)
-            (replace 'setenv
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let* ((out (assoc-ref outputs "out"))
-                       (binutils (assoc-ref %build-inputs "binutils"))
-                       (bash (assoc-ref %build-inputs "bash"))
-                       (gcc (assoc-ref %build-inputs "gcc"))
-                       (glibc (assoc-ref %build-inputs "libc"))
-                       (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
-                  (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                  (setenv "C_INCLUDE_PATH" (string-append
-                                            gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
-                                            ":" kernel-headers "/include"
-                                            ":" glibc "/include"
-                                            ":" (getcwd) "/mpfr/src"))
-                  (setenv "LIBRARY_PATH" (string-append glibc "/lib"
-                                                        ":" gcc "/lib"))
-                  (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
-                  (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
-                  #t)))
-            (delete 'install2)))
-        ((#:configure-flags configure-flags)
-         `(let ((out (assoc-ref %outputs "out"))
-                (glibc (assoc-ref %build-inputs "libc")))
-            (list (string-append "--prefix=" out)
-                  "--build=i686-unknown-linux-gnu"
-                  "--host=i686-unknown-linux-gnu"
-
-                  (string-append "--with-native-system-header-dir=" glibc "/include")
-                  (string-append "--with-build-sysroot=" glibc "/include")
-
-                  "--disable-bootstrap"
-                  "--disable-decimal-float"
-                  "--disable-libatomic"
-                  "--disable-libcilkrts"
-                  "--disable-libgomp"
-                  "--disable-libitm"
-                  "--disable-libmudflap"
-                  "--disable-libquadmath"
-                  "--disable-libsanitizer"
-                  "--disable-libssp"
-                  "--disable-libvtv"
-                  "--disable-lto"
-                  "--disable-lto-plugin"
-                  "--disable-multilib"
-                  "--disable-plugin"
-                  "--disable-threads"
-                  "--enable-languages=c,c++"
-
-                  "--enable-static"
-                  ;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH ()
-                  "--disable-shared"
-                  "--enable-threads=single"
-
-                  ;; No pre-compiled libstdc++ headers, to save space.
-                  "--disable-libstdcxx-pch"
-
-                  ;; for libcpp ...
-                  "--disable-build-with-cxx"))))))))
+  (package
+    (inherit gcc-mesboot0)
+    (name "gcc-mesboot1")
+    (version "4.7.4")
+    (source (bootstrap-origin
+             (origin (inherit (package-source gcc-4.7))
+                     (patches (search-patches "gcc-boot-4.7.4.patch")))))
+    (inputs `(("gmp-source" ,(package-source gmp-boot))
+              ("mpfr-source" ,(package-source mpfr-boot))
+              ("mpc-source" ,(package-source mpc-boot))))
+    (native-inputs `(("binutils" ,binutils-mesboot)
+                     ("gcc" ,gcc-mesboot0)
+                     ("libc" ,glibc-mesboot0)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)
+                     ("make" ,make-mesboot)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments gcc-core-mesboot)
+       ((#:make-flags make-flags)
+        `(let* ((libc (assoc-ref %build-inputs "libc"))
+                (ldflags (string-append
+                          "-B" libc "/lib "
+                          "-Wl,-dynamic-linker "
+                          "-Wl," libc
+                          ,(glibc-dynamic-linker "i686-linux"))))
+           (list (string-append "LDFLAGS=" ldflags)
+                 (string-append "LDFLAGS_FOR_TARGET=" ldflags))))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; c&p from commencement.scm:gcc-boot0
+           (add-after 'unpack 'unpack-gmp&co
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
+                     (mpfr (assoc-ref %build-inputs "mpfr-source"))
+                     (mpc  (assoc-ref %build-inputs "mpc-source")))
+
+                 ;; To reduce the set of pre-built bootstrap inputs, build
+                 ;; GMP & co. from GCC.
+                 (for-each (lambda (source)
+                             (or (invoke "tar" "xvf" source)
+                                 (error "failed to unpack tarball"
+                                        source)))
+                           (list gmp mpfr mpc))
+
+                 ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
+                 ,@(map (lambda (lib)
+                          ;; Drop trailing letters, as gmp-6.0.0a unpacks
+                          ;; into gmp-6.0.0.
+                          `(symlink ,(string-trim-right
+                                      (package-full-name lib "-")
+                                      char-set:letter)
+                                    ,(package-name lib)))
+                        (list gmp-boot mpfr-boot mpc-boot))
+                 #t)))
+           (delete 'remove-info)
+           (replace 'setenv
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (binutils (assoc-ref %build-inputs "binutils"))
+                      (bash (assoc-ref %build-inputs "bash"))
+                      (gcc (assoc-ref %build-inputs "gcc"))
+                      (glibc (assoc-ref %build-inputs "libc"))
+                      (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
+                 (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+                 (setenv "C_INCLUDE_PATH" (string-append
+                                           gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"
+                                           ":" kernel-headers "/include"
+                                           ":" glibc "/include"
+                                           ":" (getcwd) "/mpfr/src"))
+                 (setenv "LIBRARY_PATH" (string-append glibc "/lib"
+                                                       ":" gcc "/lib"))
+                 (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
+                 (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
+                 #t)))
+           (delete 'install2)))
+       ((#:configure-flags configure-flags)
+        `(let ((out (assoc-ref %outputs "out"))
+               (glibc (assoc-ref %build-inputs "libc")))
+           (list (string-append "--prefix=" out)
+                 "--build=i686-unknown-linux-gnu"
+                 "--host=i686-unknown-linux-gnu"
+
+                 (string-append "--with-native-system-header-dir=" glibc "/include")
+                 (string-append "--with-build-sysroot=" glibc "/include")
+
+                 "--disable-bootstrap"
+                 "--disable-decimal-float"
+                 "--disable-libatomic"
+                 "--disable-libcilkrts"
+                 "--disable-libgomp"
+                 "--disable-libitm"
+                 "--disable-libmudflap"
+                 "--disable-libquadmath"
+                 "--disable-libsanitizer"
+                 "--disable-libssp"
+                 "--disable-libvtv"
+                 "--disable-lto"
+                 "--disable-lto-plugin"
+                 "--disable-multilib"
+                 "--disable-plugin"
+                 "--disable-threads"
+                 "--enable-languages=c,c++"
+
+                 "--enable-static"
+                 ;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH ()
+                 "--disable-shared"
+                 "--enable-threads=single"
+
+                 ;; No pre-compiled libstdc++ headers, to save space.
+                 "--disable-libstdcxx-pch"
+
+                 ;; for libcpp ...
+                 "--disable-build-with-cxx")))))))
 
 (define gcc-mesboot1-wrapper
   ;; We need this so gcc-mesboot1 can be used to create shared binaries that
   ;; have the correct interpreter, otherwise configuring gcc-mesboot using
   ;; --enable-shared will fail.
-  (package-with-bootstrap-guile
-   (package
-     (inherit gcc-mesboot1)
-     (name "gcc-mesboot1-wrapper")
-     (source #f)
-     (inputs '())
-     (native-inputs `(("bash" ,%bootstrap-coreutils&co)
-                      ("libc" ,glibc-mesboot)
-                      ("gcc" ,gcc-mesboot1)))
-     (arguments
-      `(#:implicit-inputs? #f
-        #:guile ,%bootstrap-guile
-        #:phases
-        (modify-phases %standard-phases
-          (delete 'unpack)
-          (delete 'configure)
-          (delete 'install)
-          (replace 'build
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bash (assoc-ref %build-inputs "bash"))
-                     (libc (assoc-ref %build-inputs "libc"))
-                     (gcc (assoc-ref %build-inputs "gcc"))
-                     (bin (string-append out "/bin")))
-                (mkdir-p bin)
-                (for-each
-                 (lambda (program)
-                   (let ((wrapper (string-append bin "/" program)))
-                     (with-output-to-file wrapper
-                       (lambda _
-                         (display (string-append "#! " bash "/bin/bash
+  (package
+    (inherit gcc-mesboot1)
+    (name "gcc-mesboot1-wrapper")
+    (source #f)
+    (inputs '())
+    (native-inputs `(("bash" ,%bootstrap-coreutils&co)
+                     ("libc" ,glibc-mesboot)
+                     ("gcc" ,gcc-mesboot1)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'unpack)
+         (delete 'configure)
+         (delete 'install)
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bash (assoc-ref %build-inputs "bash"))
+                    (libc (assoc-ref %build-inputs "libc"))
+                    (gcc (assoc-ref %build-inputs "gcc"))
+                    (bin (string-append out "/bin")))
+               (mkdir-p bin)
+               (for-each
+                (lambda (program)
+                  (let ((wrapper (string-append bin "/" program)))
+                    (with-output-to-file wrapper
+                      (lambda _
+                        (display (string-append "#! " bash "/bin/bash
 exec " gcc "/bin/" program
 " -Wl,--dynamic-linker"
 ;; also for x86_64-linux, we are still on i686-linux
@@ -1096,28 +1092,28 @@ exec " gcc "/bin/" program
 " -Wl," libc "/lib"
 " \"$@\"
 "))
-                         (chmod wrapper #o555)))))
-                 '(
-                   "gcc"
-                   "g++"
-                   "i686-unknown-linux-gnu-gcc"
-                   "i686-unknown-linux-gnu-g++"
-                   ))
-                #t)))
-          (replace 'check
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bin (string-append out "/bin"))
-                     (program (string-append bin "/gcc")))
-                (invoke program "--help"))))))))))
+                        (chmod wrapper #o555)))))
+                '(
+                  "gcc"
+                  "g++"
+                  "i686-unknown-linux-gnu-gcc"
+                  "i686-unknown-linux-gnu-g++"
+                  ))
+               #t)))
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (program (string-append bin "/gcc")))
+               (invoke program "--help")))))))))
 
 (define glibc-headers-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit glibc-mesboot0)
-     (name "glibc-headers-mesboot")
-     (version "2.16.0")
-     (source (origin
+  (package
+    (inherit glibc-mesboot0)
+    (name "glibc-headers-mesboot")
+    (version "2.16.0")
+    (source (bootstrap-origin
+             (origin
                (method url-fetch)
                (uri (string-append "mirror://gnu/glibc/glibc-"
                                    version
@@ -1126,273 +1122,269 @@ exec " gcc "/bin/" program
                                         "glibc-bootstrap-system-2.16.0.patch"))
                (sha256
                 (base32
-                 "0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7"))))
-     (native-inputs `(("binutils" ,binutils-mesboot)
-                      ("libc" ,glibc-mesboot0)
-                      ("gcc" ,gcc-mesboot1)
-                      ("headers" ,mesboot-headers)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)
-                      ("make" ,make-mesboot)))
-
-     (arguments
-      (substitute-keyword-arguments (package-arguments glibc-mesboot0)
-        ((#:configure-flags configure-flags)
-         `(let ((out (assoc-ref %outputs "out"))
-                (headers (assoc-ref %build-inputs "headers")))
-            (list
-             (string-append "--prefix=" out)
-             "--disable-obsolete-rpc"
-             "--host=i686-unknown-linux-gnu"
-             (string-append "--with-headers=" headers "/include")
-             "--enable-static-nss"
-             "--with-pthread"
-             "--without-cvs"
-             "--without-gd"
-             "--enable-add-ons=nptl")))
-        ((#:make-flags make-flags)
-         `(let ((bash (assoc-ref %build-inputs "bash")))
-            (list (string-append "SHELL=" bash "/bin/sh")
-                  "install-bootstrap-headers=yes" "install-headers")))
-        ((#:phases phases)
-         `(modify-phases ,phases
-            (replace 'setenv
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let* ((out (assoc-ref outputs "out"))
-                       (headers (assoc-ref %build-inputs "headers"))
-                       (bash (assoc-ref %build-inputs "bash"))
-                       (coreutils (assoc-ref %build-inputs "coreutils"))
-                       (libc (assoc-ref %build-inputs "libc"))
-                       (gcc (assoc-ref %build-inputs "gcc"))
-                       (cppflags (string-append
-                                  " -I " (getcwd) "/nptl/sysdeps/pthread/bits"
-                                  " -D BOOTSTRAP_GLIBC=1"))
-                       (cflags (string-append " -L " (getcwd)
-                                              " -L " libc "/lib")))
-                  (setenv "libc_cv_friendly_stddef" "yes")
-                  (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                  (setenv "SHELL" (getenv "CONFIG_SHELL"))
-                  (format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL"))
-
-                  (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
-                  (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))
-
-                  ;; avoid -fstack-protector
-                  (setenv "libc_cv_ssp" "false")
-                  (substitute* "configure"
-                    (("/bin/pwd") (string-append coreutils "/bin/pwd")))
-                  (setenv "C_INCLUDE_PATH" (string-append libc "/include"
-                                                          headers "/include"))
-                  (setenv "LIBRARY_PATH" (string-append libc "/lib"))
-                  #t)))
-            (replace 'install
-              (lambda* (#:key outputs make-flags #:allow-other-keys)
-                (let ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
-                      (out (assoc-ref outputs "out")))
-                  (apply invoke "make" make-flags)
-                  (copy-recursively kernel-headers out)
-                  #t)))
-            (replace 'configure
-              (lambda* (#:key configure-flags #:allow-other-keys)
-                (format (current-error-port) "running ../configure ~a\n" (string-join configure-flags))
-                (mkdir-p "build")
-                (chdir "build")
-                (apply invoke "../configure" configure-flags)))
-            (add-after 'configure 'remove-sunrpc
-              (lambda _
-                (invoke "make" (string-append (getcwd) "/sysd-sorted" )
-                        (string-append "SHELL=" (getenv "CONFIG_SHELL")))
-                (substitute* "sysd-sorted"
-                  ((" sunrpc") " ")
-                  ((" nis") " "))
-                ;; 'rpcgen' needs native libc headers to be built.
-                (substitute* "../Makefile"
-                  (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))
-                (substitute* "../Makeconfig"
-                  (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))
-                (substitute* "../elf/Makefile"
-                  (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))))))))))))
+                 "0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7")))))
+    (native-inputs `(("binutils" ,binutils-mesboot)
+                     ("libc" ,glibc-mesboot0)
+                     ("gcc" ,gcc-mesboot1)
+                     ("headers" ,mesboot-headers)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)
+                     ("make" ,make-mesboot)))
+
+    (arguments
+     (substitute-keyword-arguments (package-arguments glibc-mesboot0)
+       ((#:configure-flags configure-flags)
+        `(let ((out (assoc-ref %outputs "out"))
+               (headers (assoc-ref %build-inputs "headers")))
+           (list
+            (string-append "--prefix=" out)
+            "--disable-obsolete-rpc"
+            "--host=i686-unknown-linux-gnu"
+            (string-append "--with-headers=" headers "/include")
+            "--enable-static-nss"
+            "--with-pthread"
+            "--without-cvs"
+            "--without-gd"
+            "--enable-add-ons=nptl")))
+       ((#:make-flags make-flags)
+        `(let ((bash (assoc-ref %build-inputs "bash")))
+           (list (string-append "SHELL=" bash "/bin/sh")
+                 "install-bootstrap-headers=yes" "install-headers")))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'setenv
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (headers (assoc-ref %build-inputs "headers"))
+                      (bash (assoc-ref %build-inputs "bash"))
+                      (coreutils (assoc-ref %build-inputs "coreutils"))
+                      (libc (assoc-ref %build-inputs "libc"))
+                      (gcc (assoc-ref %build-inputs "gcc"))
+                      (cppflags (string-append
+                                 " -I " (getcwd) "/nptl/sysdeps/pthread/bits"
+                                 " -D BOOTSTRAP_GLIBC=1"))
+                      (cflags (string-append " -L " (getcwd)
+                                             " -L " libc "/lib")))
+                 (setenv "libc_cv_friendly_stddef" "yes")
+                 (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+                 (setenv "SHELL" (getenv "CONFIG_SHELL"))
+                 (format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL"))
+
+                 (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags))
+                 (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))
+
+                 ;; avoid -fstack-protector
+                 (setenv "libc_cv_ssp" "false")
+                 (substitute* "configure"
+                   (("/bin/pwd") (string-append coreutils "/bin/pwd")))
+                 (setenv "C_INCLUDE_PATH" (string-append libc "/include"
+                                                         headers "/include"))
+                 (setenv "LIBRARY_PATH" (string-append libc "/lib"))
+                 #t)))
+           (replace 'install
+             (lambda* (#:key outputs make-flags #:allow-other-keys)
+               (let ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
+                     (out (assoc-ref outputs "out")))
+                 (apply invoke "make" make-flags)
+                 (copy-recursively kernel-headers out)
+                 #t)))
+           (replace 'configure
+             (lambda* (#:key configure-flags #:allow-other-keys)
+               (format (current-error-port) "running ../configure ~a\n" (string-join configure-flags))
+               (mkdir-p "build")
+               (chdir "build")
+               (apply invoke "../configure" configure-flags)))
+           (add-after 'configure 'remove-sunrpc
+             (lambda _
+               (invoke "make" (string-append (getcwd) "/sysd-sorted" )
+                       (string-append "SHELL=" (getenv "CONFIG_SHELL")))
+               (substitute* "sysd-sorted"
+                 ((" sunrpc") " ")
+                 ((" nis") " "))
+               ;; 'rpcgen' needs native libc headers to be built.
+               (substitute* "../Makefile"
+                 (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))
+               (substitute* "../Makeconfig"
+                 (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))
+               (substitute* "../elf/Makefile"
+                 (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))))))))))
 
 (define glibc-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit glibc-headers-mesboot)
-     (name "glibc-mesboot")
-     (native-inputs `(("binutils" ,binutils-mesboot)
-                      ("libc" ,glibc-mesboot0)
-                      ("headers" ,glibc-headers-mesboot)
-                      ("gcc" ,gcc-mesboot1)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)
-                      ("make" ,make-mesboot)))
-
-     (arguments
-      `(#:validate-runpath? #f ; fails when using --enable-shared
-        ,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot)
-            ((#:make-flags make-flags)
-             `(let ((bash (assoc-ref %build-inputs "bash")))
-                (list (string-append "SHELL=" bash "/bin/sh"))))
-            ((#:phases phases)
-             `(modify-phases ,phases
-                (replace 'install
-                  (lambda* (#:key outputs make-flags #:allow-other-keys)
-                    (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
-                           (out (assoc-ref outputs "out"))
-                           (install-flags (cons "install" make-flags)))
-                      (apply invoke "make" install-flags)
-                      (copy-recursively kernel-headers out)
-                      #t))))))))
-     (native-search-paths ;; FIXME: move to glibc-mesboot0
-      ;; Use the language-specific variables rather than 'CPATH' because they
-      ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
-      ;; The intent is to allow headers that are in the search path to be
-      ;; treated as "system headers" (headers exempt from warnings) just like
-      ;; the typical /usr/include headers on an FHS system.
-      (list (search-path-specification
-             (variable "C_INCLUDE_PATH")
-             (files '("include")))
-            (search-path-specification
-             (variable "CPLUS_INCLUDE_PATH")
-             (files '("include")))
-            (search-path-specification
-             (variable "LIBRARY_PATH")
-             (files '("lib"))))))))
+  (package
+    (inherit glibc-headers-mesboot)
+    (name "glibc-mesboot")
+    (native-inputs `(("binutils" ,binutils-mesboot)
+                     ("libc" ,glibc-mesboot0)
+                     ("headers" ,glibc-headers-mesboot)
+                     ("gcc" ,gcc-mesboot1)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)
+                     ("make" ,make-mesboot)))
+
+    (arguments
+     `(#:validate-runpath? #f               ; fails when using --enable-shared
+       ,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot)
+           ((#:make-flags make-flags)
+            `(let ((bash (assoc-ref %build-inputs "bash")))
+               (list (string-append "SHELL=" bash "/bin/sh"))))
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (replace 'install
+                 (lambda* (#:key outputs make-flags #:allow-other-keys)
+                   (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
+                          (out (assoc-ref outputs "out"))
+                          (install-flags (cons "install" make-flags)))
+                     (apply invoke "make" install-flags)
+                     (copy-recursively kernel-headers out)
+                     #t))))))))
+    (native-search-paths ;; FIXME: move to glibc-mesboot0
+     ;; Use the language-specific variables rather than 'CPATH' because they
+     ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
+     ;; The intent is to allow headers that are in the search path to be
+     ;; treated as "system headers" (headers exempt from warnings) just like
+     ;; the typical /usr/include headers on an FHS system.
+     (list (search-path-specification
+            (variable "C_INCLUDE_PATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "CPLUS_INCLUDE_PATH")
+            (files '("include")))
+           (search-path-specification
+            (variable "LIBRARY_PATH")
+            (files '("lib")))))))
 
 (define gcc-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit gcc-mesboot1)
-     (name "gcc-mesboot")
-     (version "4.9.4")
-     (source (package-source gcc-4.9))
-     (native-inputs `(("binutils" ,binutils-mesboot)
-                      ("gcc-wrapper" ,gcc-mesboot1-wrapper)
-                      ("gcc" ,gcc-mesboot1)
-                      ("libc" ,glibc-mesboot)
-
-                      ("bash" ,%bootstrap-coreutils&co)
-                      ("coreutils" ,%bootstrap-coreutils&co)
-                      ("diffutils" ,diffutils-mesboot)
-                      ("kernel-headers" ,%bootstrap-linux-libre-headers)
-                      ("make" ,make-mesboot)))
-     (arguments
-      `(#:validate-runpath? #f
-        ,@(substitute-keyword-arguments (package-arguments gcc-mesboot1)
-            ((#:configure-flags configure-flags)
-             `(let ((out (assoc-ref %outputs "out"))
-                    (glibc (assoc-ref %build-inputs "libc")))
-                (list (string-append "--prefix=" out)
-                      "--build=i686-unknown-linux-gnu"
-                      "--host=i686-unknown-linux-gnu"
-
-                      "--with-host-libstdcxx=-lsupc++"
-
-                      (string-append "--with-native-system-header-dir=" glibc "/include")
-                      (string-append "--with-build-sysroot=" glibc "/include")
-
-                      "--disable-bootstrap"
-                      "--disable-decimal-float"
-                      "--disable-libatomic"
-                      "--disable-libcilkrts"
-                      "--disable-libgomp"
-                      "--disable-libitm"
-                      "--disable-libmudflap"
-                      "--disable-libquadmath"
-                      "--disable-libsanitizer"
-                      "--disable-libssp"
-                      "--disable-libvtv"
-                      "--disable-lto"
-                      "--disable-lto-plugin"
-                      "--disable-multilib"
-                      "--disable-plugin"
-                      "--disable-threads"
-                      "--enable-languages=c,c++"
-
-                      "--enable-static"
-                      "--enable-shared"
-                      "--enable-threads=single"
-
-                      ;; No pre-compiled libstdc++ headers, to save space.
-                      "--disable-libstdcxx-pch"
-
-                      ;; for libcpp ...
-                      "--disable-build-with-cxx")))
-            ((#:phases phases)
-             `(modify-phases ,phases
-                (replace 'setenv
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out (assoc-ref outputs "out"))
-                           (binutils (assoc-ref %build-inputs "binutils"))
-                           (bash (assoc-ref %build-inputs "bash"))
-                           (gcc (assoc-ref %build-inputs "gcc"))
-                           (glibc (assoc-ref %build-inputs "libc"))
-                           (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
-                      (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
-                      (setenv "C_INCLUDE_PATH" (string-append
-                                                gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include"
-                                                ":" kernel-headers "/include"
-                                                ":" glibc "/include"
-                                                ":" (getcwd) "/mpfr/src"))
-                      (setenv "CPLUS_INCLUDE_PATH" (string-append
-                                                    gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include"
-                                                    ":" kernel-headers "/include"
-                                                    ":" glibc "/include"
-                                                    ":" (getcwd) "/mpfr/src"))
-                      (setenv "LIBRARY_PATH" (string-append glibc "/lib"
-                                                            ":" gcc "/lib"))
-                      (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
-                      (format (current-error-port) "CPLUS_INCLUDE_PATH=~a\n" (getenv "CPLUS_INCLUDE_PATH"))
-                      (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
-                      #t)))))))))))
+  (package
+    (inherit gcc-mesboot1)
+    (name "gcc-mesboot")
+    (version "4.9.4")
+    (source (bootstrap-origin (package-source gcc-4.9)))
+    (native-inputs `(("binutils" ,binutils-mesboot)
+                     ("gcc-wrapper" ,gcc-mesboot1-wrapper)
+                     ("gcc" ,gcc-mesboot1)
+                     ("libc" ,glibc-mesboot)
+
+                     ("bash" ,%bootstrap-coreutils&co)
+                     ("coreutils" ,%bootstrap-coreutils&co)
+                     ("diffutils" ,diffutils-mesboot)
+                     ("kernel-headers" ,%bootstrap-linux-libre-headers)
+                     ("make" ,make-mesboot)))
+    (arguments
+     `(#:validate-runpath? #f
+       ,@(substitute-keyword-arguments (package-arguments gcc-mesboot1)
+           ((#:configure-flags configure-flags)
+            `(let ((out (assoc-ref %outputs "out"))
+                   (glibc (assoc-ref %build-inputs "libc")))
+               (list (string-append "--prefix=" out)
+                     "--build=i686-unknown-linux-gnu"
+                     "--host=i686-unknown-linux-gnu"
+
+                     "--with-host-libstdcxx=-lsupc++"
+
+                     (string-append "--with-native-system-header-dir=" glibc "/include")
+                     (string-append "--with-build-sysroot=" glibc "/include")
+
+                     "--disable-bootstrap"
+                     "--disable-decimal-float"
+                     "--disable-libatomic"
+                     "--disable-libcilkrts"
+                     "--disable-libgomp"
+                     "--disable-libitm"
+                     "--disable-libmudflap"
+                     "--disable-libquadmath"
+                     "--disable-libsanitizer"
+                     "--disable-libssp"
+                     "--disable-libvtv"
+                     "--disable-lto"
+                     "--disable-lto-plugin"
+                     "--disable-multilib"
+                     "--disable-plugin"
+                     "--disable-threads"
+                     "--enable-languages=c,c++"
+
+                     "--enable-static"
+                     "--enable-shared"
+                     "--enable-threads=single"
+
+                     ;; No pre-compiled libstdc++ headers, to save space.
+                     "--disable-libstdcxx-pch"
+
+                     ;; for libcpp ...
+                     "--disable-build-with-cxx")))
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (replace 'setenv
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (binutils (assoc-ref %build-inputs "binutils"))
+                          (bash (assoc-ref %build-inputs "bash"))
+                          (gcc (assoc-ref %build-inputs "gcc"))
+                          (glibc (assoc-ref %build-inputs "libc"))
+                          (kernel-headers (assoc-ref %build-inputs "kernel-headers")))
+                     (setenv "CONFIG_SHELL" (string-append bash "/bin/sh"))
+                     (setenv "C_INCLUDE_PATH" (string-append
+                                               gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include"
+                                               ":" kernel-headers "/include"
+                                               ":" glibc "/include"
+                                               ":" (getcwd) "/mpfr/src"))
+                     (setenv "CPLUS_INCLUDE_PATH" (string-append
+                                                   gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include"
+                                                   ":" kernel-headers "/include"
+                                                   ":" glibc "/include"
+                                                   ":" (getcwd) "/mpfr/src"))
+                     (setenv "LIBRARY_PATH" (string-append glibc "/lib"
+                                                           ":" gcc "/lib"))
+                     (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH"))
+                     (format (current-error-port) "CPLUS_INCLUDE_PATH=~a\n" (getenv "CPLUS_INCLUDE_PATH"))
+                     (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH"))
+                     #t))))))))))
 
 (define gcc-mesboot-wrapper
   ;; We need this so gcc-mesboot can be used to create shared binaries that
   ;; have the correct interpreter and runpath to libc.
-  (package-with-bootstrap-guile
-   (package
-     (inherit gcc-mesboot1-wrapper)
-     (name "gcc-mesboot-wrapper")
-     (version (package-version gcc-mesboot))
-     (source #f)
-     (inputs '())
-     (native-inputs `(("bash" ,%bootstrap-coreutils&co)
-                      ("libc" ,glibc-mesboot)
-                      ("gcc" ,gcc-mesboot))))))
+  (package
+    (inherit gcc-mesboot1-wrapper)
+    (name "gcc-mesboot-wrapper")
+    (version (package-version gcc-mesboot))
+    (source #f)
+    (inputs '())
+    (native-inputs `(("bash" ,%bootstrap-coreutils&co)
+                     ("libc" ,glibc-mesboot)
+                     ("gcc" ,gcc-mesboot)))))
 
 (define m4-mesboot
-  (package-with-bootstrap-guile
-   (package
-     (inherit m4)
-     (name "m4-mesboot")
-     (version "1.4")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/m4/m4-"
-                                   version ".tar.gz"))
-               (sha256
-                (base32
-                 "1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw"))))
-     (supported-systems '("i686-linux" "x86_64-linux"))
-     (native-inputs `(("mes" ,mes-boot)
-                      ("tcc" ,tcc-boot)))
-     (arguments
-      `(#:phases
-        (modify-phases %standard-phases
-          (replace 'configure
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out")))
-                (setenv "CONFIG_SHELL" (string-append
-                                        (assoc-ref %build-inputs "bash")
-                                        "/bin/sh"))
-                (setenv "CC" "tcc -static")
-                (setenv "CPP" "tcc -E")
-                (invoke "./configure" (string-append "--prefix=" out)))))))))))
+  (package
+    (inherit m4)
+    (name "m4-mesboot")
+    (version "1.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/m4/m4-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw"))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (native-inputs `(("mes" ,mes-boot)
+                     ("tcc" ,tcc-boot)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "CONFIG_SHELL" (string-append
+                                       (assoc-ref %build-inputs "bash")
+                                       "/bin/sh"))
+               (setenv "CC" "tcc -static")
+               (setenv "CPP" "tcc -E")
+               (invoke "./configure" (string-append "--prefix=" out))))))))))
 
 (define (%bootstrap-inputs+toolchain)
   ;; The traditional bootstrap-inputs.  For the i686-linux Reduced Binary Seed
@@ -1409,66 +1401,70 @@ exec " gcc "/bin/" program
      (%bootstrap-inputs))))
 
 (define gnu-make-boot0
-  (package-with-bootstrap-guile
-   (package (inherit gnu-make)
-     (name "make-boot0")
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-        #:tests? #f                  ; cannot run "make check"
-        ,@(substitute-keyword-arguments (package-arguments gnu-make)
-            ((#:phases phases)
-             `(modify-phases ,phases
-                (replace 'build
-                  (lambda _
-                    (invoke "./build.sh")))
-                (replace 'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out (assoc-ref outputs "out"))
-                           (bin (string-append out "/bin")))
-                      (install-file "make" bin)
-                      #t))))))))
-     (native-inputs '())                          ; no need for 'pkg-config'
-     (inputs (%bootstrap-inputs+toolchain)))))
+  (package
+    (inherit gnu-make)
+    (source (bootstrap-origin (package-source gnu-make)))
+    (name "make-boot0")
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+       #:tests? #f                                ; cannot run "make check"
+       ,@(substitute-keyword-arguments (package-arguments gnu-make)
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (replace 'build
+                 (lambda _
+                   (invoke "./build.sh")))
+               (replace 'install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (bin (string-append out "/bin")))
+                     (install-file "make" bin)
+                     #t))))))))
+    (native-inputs '())                           ; no need for 'pkg-config'
+    (inputs (%bootstrap-inputs+toolchain))))
 
 (define diffutils-boot0
-  (package-with-bootstrap-guile
-   (let ((p (package-with-explicit-inputs diffutils
-                                          (lambda _
-                                            `(("make" ,gnu-make-boot0)
-                                              ,@(%bootstrap-inputs+toolchain)))
-                                          #:guile %bootstrap-guile)))
-     (package (inherit p)
-       (name "diffutils-boot0")
-       (native-inputs `())
-       (arguments `(#:tests? #f         ; the test suite needs diffutils
-                    ,@(package-arguments p)))))))
+  (package
+    (inherit diffutils)
+    (name "diffutils-boot0")
+    (native-inputs `())
+    (inputs
+     `(("make" ,gnu-make-boot0)
+       ,@(%bootstrap-inputs+toolchain)))
+    (arguments
+     `(#:tests? #f                            ; the test suite needs diffutils
+       #:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+       ,@(package-arguments diffutils)))))
 
 (define findutils-boot0
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs (package
-                                   (inherit findutils)
-                                   (name "findutils-boot0"))
-                                 (lambda _
-                                   `(("make" ,gnu-make-boot0)
-                                     ("diffutils" ,diffutils-boot0) ; for tests
-                                     ,@(%bootstrap-inputs+toolchain)))
-                                 (current-source-location)
-                                 #:guile %bootstrap-guile)))
+  (package
+    (inherit findutils)
+    (name "findutils-boot0")
+    (source (bootstrap-origin (package-source findutils)))
+    (inputs
+     `(("make" ,gnu-make-boot0)
+       ("diffutils" ,diffutils-boot0) ; for tests
+       ,@(%bootstrap-inputs+toolchain)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       ,@(package-arguments findutils)))))
 
 (define file-boot0
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs (package
-                                   (inherit file)
-                                   (name "file-boot0")
-                                   (arguments
-                                    '(#:strip-binaries? #f
-                                      #:validate-runpath? #f)))
-                                 (lambda _
-                                   `(("make" ,gnu-make-boot0)
-                                     ,@(%bootstrap-inputs+toolchain)))
-                                 (current-source-location)
-                                 #:guile %bootstrap-guile)))
+  (package
+    (inherit file)
+    (source (bootstrap-origin (package-source file)))
+    (name "file-boot0")
+    (inputs
+     `(("make" ,gnu-make-boot0)
+       ,@(%bootstrap-inputs+toolchain)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:strip-binaries? #f
+       #:validate-runpath? #f))))
 
 (define (%boot0-inputs)
   `(("make" ,gnu-make-boot0)
@@ -1489,47 +1485,49 @@ exec " gcc "/bin/" program
 ;; reference to the target libc.
 
 (define binutils-boot0
-  (package-with-bootstrap-guile
-   (package (inherit binutils)
-     (name "binutils-cross-boot0")
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-
-        #:modules ((guix build gnu-build-system)
-                   (guix build utils)
-                   (ice-9 ftw))                    ; for 'scandir'
-        #:phases (modify-phases %standard-phases
-                   (add-after 'install 'add-symlinks
-                     (lambda* (#:key outputs #:allow-other-keys)
-                       ;; The cross-gcc invokes 'as', 'ld', etc, without the
-                       ;; triplet prefix, so add symlinks.
-                       (let ((out (assoc-ref outputs "out"))
-                             (triplet-prefix (string-append ,(boot-triplet) "-")))
-                         (define (has-triplet-prefix? name)
-                           (string-prefix? triplet-prefix name))
-                         (define (remove-triplet-prefix name)
-                           (substring name (string-length triplet-prefix)))
-                         (with-directory-excursion (string-append out "/bin")
-                           (for-each (lambda (name)
-                                       (symlink name (remove-triplet-prefix name)))
-                                     (scandir "." has-triplet-prefix?)))
-                         #t))))
-
-        ,@(substitute-keyword-arguments (package-arguments binutils)
-            ((#:configure-flags cf)
-             `(cons ,(string-append "--target=" (boot-triplet))
-                    ,cf)))))
-     (inputs (%boot0-inputs)))))
+  (package
+    (inherit binutils)
+    (source (bootstrap-origin (package-source binutils)))
+    (name "binutils-cross-boot0")
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw))                    ; for 'scandir'
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'add-symlinks
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; The cross-gcc invokes 'as', 'ld', etc, without the
+                      ;; triplet prefix, so add symlinks.
+                      (let ((out (assoc-ref outputs "out"))
+                            (triplet-prefix (string-append ,(boot-triplet) "-")))
+                        (define (has-triplet-prefix? name)
+                          (string-prefix? triplet-prefix name))
+                        (define (remove-triplet-prefix name)
+                          (substring name (string-length triplet-prefix)))
+                        (with-directory-excursion (string-append out "/bin")
+                          (for-each (lambda (name)
+                                      (symlink name (remove-triplet-prefix name)))
+                                    (scandir "." has-triplet-prefix?)))
+                        #t))))
+
+       ,@(substitute-keyword-arguments (package-arguments binutils)
+           ((#:configure-flags cf)
+            `(cons ,(string-append "--target=" (boot-triplet))
+                   ,cf)))))
+    (inputs (%boot0-inputs))))
 
 (define libstdc++-boot0
   ;; GCC's libcc1 is always built as a shared library (the top-level
   ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer
   ;; to libstdc++.so.  We cannot build libstdc++-5.3 because it relies on
   ;; C++14 features missing in some of our bootstrap compilers.
-  (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9))))
+  (let ((lib (make-libstdc++ gcc-4.9)))
     (package
       (inherit lib)
+      (source (bootstrap-origin (package-source lib)))
       (name "libstdc++-boot0")
       (arguments
        `(#:guile ,%bootstrap-guile
@@ -1555,86 +1553,87 @@ exec " gcc "/bin/" program
       (native-inputs '()))))
 
 (define gcc-boot0
-  (package-with-bootstrap-guile
-   (package (inherit gcc)
-     (name "gcc-cross-boot0")
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-        #:modules ((guix build gnu-build-system)
-                   (guix build utils)
-                   (ice-9 regex)
-                   (srfi srfi-1)
-                   (srfi srfi-26))
-        ,@(substitute-keyword-arguments (package-arguments gcc)
-            ((#:configure-flags flags)
-             `(append (list ,(string-append "--target=" (boot-triplet))
-
-                            ;; No libc yet.
-                            "--without-headers"
-
-                            ;; Disable features not needed at this stage.
-                            "--disable-shared"
-                            "--enable-languages=c,c++"
-
-                            ;; libstdc++ cannot be built at this stage
-                            ;; ("Link tests are not allowed after
-                            ;; GCC_NO_EXECUTABLES.").
-                            "--disable-libstdc++-v3"
-
-                            "--disable-threads"
-                            "--disable-libmudflap"
-                            "--disable-libatomic"
-                            "--disable-libsanitizer"
-                            "--disable-libitm"
-                            "--disable-libgomp"
-                            "--disable-libmpx"
-                            "--disable-libcilkrts"
-                            "--disable-libvtv"
-                            "--disable-libssp"
-                            "--disable-libquadmath"
-                            "--disable-decimal-float")
-                      (remove (cut string-match
-                                "--(with-system-zlib|enable-languages.*)" <>)
-                              ,flags)))
-            ((#:make-flags flags)
-             `(let* ((libc        (assoc-ref %build-inputs "libc"))
-                     (libc-native (or (assoc-ref %build-inputs "libc-native")
-                                      libc)))
-                `(,(string-append "LDFLAGS="
-                                  "-Wl,-rpath=" libc-native "/lib "
-                                  "-Wl,-dynamic-linker "
-                                  "-Wl," libc-native ,(glibc-dynamic-linker
-                                                       (match (%current-system)
-                                                         ("x86_64-linux" "i686-linux")
-                                                         (_ (%current-system))))))))
-            ((#:phases phases)
-             `(modify-phases ,phases
-                (add-after 'unpack 'unpack-gmp&co
-                  (lambda* (#:key inputs #:allow-other-keys)
-                    (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
-                          (mpfr (assoc-ref %build-inputs "mpfr-source"))
-                          (mpc  (assoc-ref %build-inputs "mpc-source")))
-
-                      ;; To reduce the set of pre-built bootstrap inputs, build
-                      ;; GMP & co. from GCC.
-                      (for-each (lambda (source)
-                                  (invoke "tar" "xvf" source))
-                                (list gmp mpfr mpc))
-
-                      ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
-                      ,@(map (lambda (lib)
-                               ;; Drop trailing letters, as gmp-6.0.0a unpacks
-                               ;; into gmp-6.0.0.
-                               `(symlink ,(string-trim-right
-                                           (package-full-name lib "-")
-                                           char-set:letter)
-                                         ,(package-name lib)))
-                             (list gmp-6.0 mpfr mpc))
-                      #t)))
-                ,(match (%current-system)
-                   ((or "i686-linux" "x86_64-linux")
-                    '(add-before 'configure 'fix-libcc1
+  (package
+    (inherit gcc)
+    (name "gcc-cross-boot0")
+    (source (bootstrap-origin (package-source gcc)))
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 regex)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+       ,@(substitute-keyword-arguments (package-arguments gcc)
+           ((#:configure-flags flags)
+            `(append (list ,(string-append "--target=" (boot-triplet))
+
+                           ;; No libc yet.
+                           "--without-headers"
+
+                           ;; Disable features not needed at this stage.
+                           "--disable-shared"
+                           "--enable-languages=c,c++"
+
+                           ;; libstdc++ cannot be built at this stage
+                           ;; ("Link tests are not allowed after
+                           ;; GCC_NO_EXECUTABLES.").
+                           "--disable-libstdc++-v3"
+
+                           "--disable-threads"
+                           "--disable-libmudflap"
+                           "--disable-libatomic"
+                           "--disable-libsanitizer"
+                           "--disable-libitm"
+                           "--disable-libgomp"
+                           "--disable-libmpx"
+                           "--disable-libcilkrts"
+                           "--disable-libvtv"
+                           "--disable-libssp"
+                           "--disable-libquadmath"
+                           "--disable-decimal-float")
+                     (remove (cut string-match
+                               "--(with-system-zlib|enable-languages.*)" <>)
+                             ,flags)))
+           ((#:make-flags flags)
+            `(let* ((libc        (assoc-ref %build-inputs "libc"))
+                    (libc-native (or (assoc-ref %build-inputs "libc-native")
+                                     libc)))
+               `(,(string-append "LDFLAGS="
+                                 "-Wl,-rpath=" libc-native "/lib "
+                                 "-Wl,-dynamic-linker "
+                                 "-Wl," libc-native ,(glibc-dynamic-linker
+                                                      (match (%current-system)
+                                                        ("x86_64-linux" "i686-linux")
+                                                        (_ (%current-system))))))))
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (add-after 'unpack 'unpack-gmp&co
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (let ((gmp  (assoc-ref %build-inputs "gmp-source"))
+                         (mpfr (assoc-ref %build-inputs "mpfr-source"))
+                         (mpc  (assoc-ref %build-inputs "mpc-source")))
+
+                     ;; To reduce the set of pre-built bootstrap inputs, build
+                     ;; GMP & co. from GCC.
+                     (for-each (lambda (source)
+                                 (invoke "tar" "xvf" source))
+                               (list gmp mpfr mpc))
+
+                     ;; Create symlinks like `gmp' -> `gmp-x.y.z'.
+                     ,@(map (lambda (lib)
+                              ;; Drop trailing letters, as gmp-6.0.0a unpacks
+                              ;; into gmp-6.0.0.
+                              `(symlink ,(string-trim-right
+                                          (package-full-name lib "-")
+                                          char-set:letter)
+                                        ,(package-name lib)))
+                            (list gmp-6.0 mpfr mpc))
+                     #t)))
+               ,(match (%current-system)
+                  ((or "i686-linux" "x86_64-linux")
+                   '(add-before 'configure 'fix-libcc1
                       (lambda* (#:key inputs #:allow-other-keys)
                         ;; libcc1.so NEEDs libgcc_s.so, so provide one here
                         ;; to placate the 'validate-runpath' phase.
@@ -1646,127 +1645,137 @@ exec " gcc "/bin/" program
                         (substitute* "libcc1/configure"
                           (("g\\+\\+ -v") "true"))
                         #t)))
-                   (_ '(add-before 'configure 'return-true
-                         (lambda _ #t))))
-                (add-after 'install 'symlink-libgcc_eh
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((out (assoc-ref outputs "lib")))
-                      ;; Glibc wants to link against libgcc_eh, so provide
-                      ;; it.
-                      (with-directory-excursion
-                          (string-append out "/lib/gcc/"
-                                         ,(boot-triplet)
-                                         "/" ,(package-version gcc))
-                        (symlink "libgcc.a" "libgcc_eh.a"))
-                      #t))))))))
+                  (_ '(add-before 'configure 'return-true
+                        (lambda _ #t))))
+               (add-after 'install 'symlink-libgcc_eh
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "lib")))
+                     ;; Glibc wants to link against libgcc_eh, so provide
+                     ;; it.
+                     (with-directory-excursion
+                         (string-append out "/lib/gcc/"
+                                        ,(boot-triplet)
+                                        "/" ,(package-version gcc))
+                       (symlink "libgcc.a" "libgcc_eh.a"))
+                     #t))))))))
 
-     (inputs `(("gmp-source" ,(package-source gmp-6.0))
-               ("mpfr-source" ,(package-source mpfr))
-               ("mpc-source" ,(package-source mpc))
-               ("binutils-cross" ,binutils-boot0)
+    (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0)))
+              ("mpfr-source" ,(bootstrap-origin (package-source mpfr)))
+              ("mpc-source" ,(bootstrap-origin (package-source mpc)))
+              ("binutils-cross" ,binutils-boot0)
 
-               ;; The libstdc++ that libcc1 links against.
-               ("libstdc++" ,libstdc++-boot0)
+              ;; The libstdc++ that libcc1 links against.
+              ("libstdc++" ,libstdc++-boot0)
 
-               ;; Call it differently so that the builder can check whether
-               ;; the "libc" input is #f.
-               ("libc-native" ,@(assoc-ref (%boot0-inputs) "libc"))
-               ,@(alist-delete "libc" (%boot0-inputs))))
+              ;; Call it differently so that the builder can check whether
+              ;; the "libc" input is #f.
+              ("libc-native" ,@(assoc-ref (%boot0-inputs) "libc"))
+              ,@(alist-delete "libc" (%boot0-inputs))))
 
-     ;; No need for the native-inputs to build the documentation at this stage.
-     (native-inputs `()))))
+    ;; No need for the native-inputs to build the documentation at this stage.
+    (native-inputs `())))
 
 (define perl-boot0
-  (let ((perl (package
-                (inherit perl)
-                (name "perl-boot0")
-                (arguments
-                 ;; At the very least, this must not depend on GCC & co.
-                 (let ((args `(#:validate-runpath? #f
-                               #:disallowed-references
-                               ,(list %bootstrap-binutils))))
-                   `(,@args
-                     ,@(substitute-keyword-arguments (package-arguments perl)
-                         ((#:phases phases)
-                          `(modify-phases ,phases
-                             ;; Pthread support is missing in the bootstrap compiler
-                             ;; (broken spec file), so disable it.
-                             (add-before 'configure 'disable-pthreads
-                               (lambda _
-                                 (substitute* "Configure"
-                                   (("^libswanted=(.*)pthread" _ before)
-                                    (string-append "libswanted=" before)))
-                                 #t))))
-                         ;; Do not configure with '-Dusethreads' since pthread
-                         ;; support is missing.
-                         ((#:configure-flags configure-flags)
-                          `(delete "-Dusethreads" ,configure-flags)))))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs perl
-                                   %boot0-inputs
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+  (package
+    (inherit perl)
+    (name "perl-boot0")
+    (source (bootstrap-origin (package-source perl)))
+    (inputs (%boot0-inputs))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:validate-runpath? #f
+
+       ;; At the very least, this must not depend on GCC & co.
+       #:disallowed-references ,(list %bootstrap-binutils)
+
+       ,@(substitute-keyword-arguments (package-arguments perl)
+           ((#:phases phases)
+            `(modify-phases ,phases
+               ;; Pthread support is missing in the bootstrap compiler
+               ;; (broken spec file), so disable it.
+               (add-before 'configure 'disable-pthreads
+                 (lambda _
+                   (substitute* "Configure"
+                     (("^libswanted=(.*)pthread" _ before)
+                      (string-append "libswanted=" before)))
+                   #t))))
+           ;; Do not configure with '-Dusethreads' since pthread
+           ;; support is missing.
+           ((#:configure-flags configure-flags)
+            `(delete "-Dusethreads" ,configure-flags)))))))
 
 (define m4-boot0
-  (package-with-bootstrap-guile
-   (package
-     (inherit m4)
-     (name "m4-boot0")
-     (inputs (%boot0-inputs))
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-        ,@(package-arguments m4))))))
+  (package
+    (inherit m4)
+    (name "m4-boot0")
+    (source (bootstrap-origin (package-source m4)))
+    (inputs (%boot0-inputs))
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+       ,@(package-arguments m4)))))
+
+(define m4-boot0*
+  (package
+    ;; TODO: On the next rebuild cycle, use M4-BOOT0 as is.
+    (inherit m4-boot0)
+    (name "m4")))
 
 (define bison-boot0
   ;; This Bison is needed to build MiG so we need it early in the process.
   ;; Recent versions of Linux-Libre headers also depend on this.
-  (let* ((bison (package (inherit bison)
-                  (propagated-inputs `(("m4" ,m4)))
-                  (inputs '())                    ;remove Flex...
-                  (arguments
-                   `(#:tests? #f                  ;... and thus disable tests
-
-                     ;; XXX: These flags should be unconditional, but for now
-                     ;; we just add them on x86 to avoid a full rebuild.
-                     ;; TODO: On the next core-updates, use
-                     ;; 'substitute-keyword-arguments' to inherit them from
-                     ;; BISON.
-                     ,@(if (member (%current-system)
-                                   '("x86_64-linux" "i686-linux"))
-                           '(#:parallel-build? #f
-                             #:parallel-tests? #f)
-                           '())
-
-                     ;; Zero timestamps in liby.a; this must be done
-                     ;; explicitly here because the bootstrap Binutils don't
-                     ;; do that (default is "cru".)
-                     #:make-flags `("ARFLAGS=crD"
-                                    ,,(match (%current-system)
-                                        ;; ranlib: '-D': No such file
-                                        ((or "i686-linux" "x86_64-linux")
-                                         "RANLIB=ranlib")
-                                        (_
-                                         "RANLIB=ranlib -D"))
-                                    "V=1"))))))
-    (package
-      (inherit (package-with-bootstrap-guile
-                (package-with-explicit-inputs bison %boot0-inputs
-                                              (current-source-location)
-                                              #:guile %bootstrap-guile)))
-      (native-inputs `(("perl" ,perl-boot0))))))
+  (package
+    (inherit bison)
+    ;; TODO: On the next build cycle, do:
+    ;;(name "bison-boot0")
+    (propagated-inputs `(("m4" ,m4-boot0*)))
+    (native-inputs `(("perl" ,perl-boot0)))
+    (inputs (%boot0-inputs))                      ;remove Flex...
+    (arguments
+     `(#:tests? #f                                ;... and thus disable tests
+       #:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+
+       ;; XXX: These flags should be unconditional, but for now
+       ;; we just add them on x86 to avoid a full rebuild.
+       ;; TODO: On the next core-updates, use
+       ;; 'substitute-keyword-arguments' to inherit them from
+       ;; BISON.
+       ,@(if (member (%current-system)
+                     '("x86_64-linux" "i686-linux"))
+             '(#:parallel-build? #f
+               #:parallel-tests? #f)
+             '())
+
+       ;; Zero timestamps in liby.a; this must be done
+       ;; explicitly here because the bootstrap Binutils don't
+       ;; do that (default is "cru".)
+       #:make-flags `("ARFLAGS=crD"
+                      ,,(match (%current-system)
+                          ;; ranlib: '-D': No such file
+                          ((or "i686-linux" "x86_64-linux")
+                           "RANLIB=ranlib")
+                          (_
+                           "RANLIB=ranlib -D"))
+                      "V=1")))))
 
 (define flex-boot0
   ;; This Flex is needed to build MiG as well as Linux-Libre headers.
-  (let* ((flex (package (inherit flex)
-                 (native-inputs `(("bison" ,bison-boot0)))
-                 (propagated-inputs `(("m4" ,m4)))
-                 (inputs '())
-                 (arguments '(#:tests? #f)))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs flex %boot0-inputs
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+  (package
+    (inherit flex)
+    (native-inputs `(("bison" ,bison-boot0)))
+    (propagated-inputs
+     ;; XXX: Here we use an 'm4-boot0' package that's not eq? so that it
+     ;; appears twice in '%build-inputs', like when we were using
+     ;; 'package-with-explicit-inputs'.
+     ;; TODO: Remove this hack on the next rebuild cycle.
+     `(("m4" ,(package (inherit m4-boot0*)))))
+    (inputs (%boot0-inputs))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:tests? #f))))
 
 (define linux-libre-headers-boot0
   (mlambda ()
@@ -1775,18 +1784,19 @@ exec " gcc "/bin/" program
     ;; between (gnu packages linux) and this module.  Additionally, memoize
     ;; the result to play well with further memoization and code that relies
     ;; on pointer identity; see <https://bugs.gnu.org/30155>.
-    (package-with-bootstrap-guile
-     (package (inherit linux-libre-headers)
-              (arguments `(#:guile ,%bootstrap-guile
-                           #:implicit-inputs? #f
-                           ,@(package-arguments linux-libre-headers)))
-              (native-inputs
-               `(("perl" ,perl-boot0)
-
-                 ;; Flex and Bison are required since version 4.16.
-                 ("flex" ,flex-boot0)
-                 ("bison" ,bison-boot0)
-                 ,@(%boot0-inputs)))))))
+    (package
+      (inherit linux-libre-headers)
+      (arguments
+       `(#:guile ,%bootstrap-guile
+         #:implicit-inputs? #f
+         ,@(package-arguments linux-libre-headers)))
+      (native-inputs
+       `(("perl" ,perl-boot0)
+
+         ;; Flex and Bison are required since version 4.16.
+         ("flex" ,flex-boot0)
+         ("bison" ,bison-boot0)
+         ,@(%boot0-inputs))))))
 
 (define gnumach-headers-boot0
   (package-with-bootstrap-guile
@@ -1851,91 +1861,97 @@ the bootstrap environment."
   ;; We build without ncurses because it fails to build at this stage, and
   ;; because we don't need the stand-alone Info reader.
   ;; Also, use (%BOOT0-INPUTS) to avoid building Perl once more.
-  (let ((texinfo (package (inherit texinfo)
-                   (native-inputs '())
-                   (inputs `(("perl" ,perl-boot0)))
-
-                   ;; Some of Texinfo 6.1's tests would fail with "Couldn't
-                   ;; set UTF-8 character type in locale" but we don't have a
-                   ;; UTF-8 locale at this stage, so skip them.
-                   (arguments '(#:tests? #f)))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs texinfo %boot0-inputs
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+  (package
+    (inherit texinfo)
+    (native-inputs '())
+    (inputs `(,@(%boot0-inputs)
+              ("perl" ,perl-boot0)))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+
+       ;; Some of Texinfo 6.1's tests would fail with "Couldn't set UTF-8
+       ;; character type in locale" but we don't have a UTF-8 locale at this
+       ;; stage, so skip them.
+       #:tests? #f))))
 
 (define expat-sans-tests
   (package
     (inherit expat)
+    (inputs (%boot0-inputs))
     (arguments
      ;; XXX: Linking 'runtestscpp' fails with things like:
      ;;
      ;;   ld: Dwarf Error: found dwarf version '3789', this reader only handles version 2 and 3 information.
      ;;
      ;; Skip tests altogether.
-     (substitute-keyword-arguments (package-arguments expat)
-       ((#:configure-flags flags ''())
-        ;; Since we're not passing the right -Wl,-rpath flags, build the
-        ;; static library to avoid RUNPATH validation failure.
-        `(cons "--disable-shared" ,flags))
-       ((#:tests? _ #f) #f)))))
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
 
-(define python-boot0
-  (let ((python (package
-                  (inherit python-minimal)
-                  ;; We cannot use Python 3.7 and later here, because they require
-                  ;; pthreads, which is missing on non-x86 platforms at this stage.
-                  ;; Python 3.6 technically supports being built without threading
-                  ;; support, but requires additional patches.
-                  (version "3.5.7")
-                  (source (origin
-                            (inherit (package-source python))
-                            (uri (string-append "https://www.python.org/ftp/python/"
-                                                version "/Python-" version ".tar.xz"))
-                            (patches '())
-                            (sha256
-                             (base32
-                              "1p67pnp2ca5przx2s45r8m55dcn6f5hsm0l4s1zp7mglkf4r4n18"))))
-                  (inputs
-                   `(("expat" ,expat-sans-tests))) ;remove OpenSSL, zlib, etc.
-                  (native-inputs '())              ;and pkg-config
-                  (arguments
-                   (substitute-keyword-arguments (package-arguments
-                                                  python-minimal)
-                     ;; Disable features that cannot be built at this stage.
-                     ((#:configure-flags _ ''())
-                      `(list "--without-ensurepip"
-                             "--without-threads"))
-                     ;; Clear #:make-flags, such that changes to the regular
-                     ;; Python package won't interfere with this one.
-                     ((#:make-flags _ ''()) ''())
-                     ((#:phases phases)
-                      `(modify-phases ,phases
-                         (add-before 'configure 'disable-modules
-                           (lambda _
-                             (substitute* "setup.py"
-                               ;; Disable ctypes, since it requires libffi.
-                               (("extensions\\.append\\(ctypes\\)") "")
-                               ;; Prevent the 'ossaudiodev' extension from being
-                               ;; built, since it requires Linux headers.
-                               (("'linux', ") ""))
-                             #t))
-                         (delete 'set-TZDIR)))
-                     ((#:tests? _ #f) #f))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs python %boot0-inputs
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+       ,@(substitute-keyword-arguments (package-arguments expat)
+           ((#:configure-flags flags ''())
+            ;; Since we're not passing the right -Wl,-rpath flags, build the
+            ;; static library to avoid RUNPATH validation failure.
+            `(cons "--disable-shared" ,flags))
+           ((#:tests? _ #f) #f))))))
 
-(define (ld-wrapper-boot0)
-  ;; We need this so binaries on Hurd will have libmachuser and libhurduser
-  ;; in their RUNPATH, otherwise validate-runpath will fail.
-  (make-ld-wrapper "ld-wrapper-boot0"
-                   #:target boot-triplet
-                   #:binutils binutils-boot0
-                   #:guile %bootstrap-guile
-                   #:bash (car (assoc-ref (%boot0-inputs) "bash"))
-                   #:guile-for-build %bootstrap-guile))
+(define python-boot0
+  (package
+    (inherit python-minimal)
+    ;; We cannot use Python 3.7 and later here, because they require
+    ;; pthreads, which is missing on non-x86 platforms at this stage.
+    ;; Python 3.6 technically supports being built without threading
+    ;; support, but requires additional patches.
+    (version "3.5.7")
+    (source (bootstrap-origin
+             (origin
+               (inherit (package-source python))
+               (uri (string-append "https://www.python.org/ftp/python/"
+                                   version "/Python-" version ".tar.xz"))
+               (patches '())
+               (sha256
+                (base32
+                 "1p67pnp2ca5przx2s45r8m55dcn6f5hsm0l4s1zp7mglkf4r4n18")))))
+    (inputs
+     `(,@(%boot0-inputs)
+       ("expat" ,expat-sans-tests)))              ;remove OpenSSL, zlib, etc.
+    (native-inputs '())                           ;and pkg-config
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+
+       ,@(substitute-keyword-arguments (package-arguments python-minimal)
+           ;; Disable features that cannot be built at this stage.
+           ((#:configure-flags _ ''())
+            `(list "--without-ensurepip"
+                   "--without-threads"))
+           ;; Clear #:make-flags, such that changes to the regular
+           ;; Python package won't interfere with this one.
+           ((#:make-flags _ ''()) ''())
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (add-before 'configure 'disable-modules
+                 (lambda _
+                   (substitute* "setup.py"
+                     ;; Disable ctypes, since it requires libffi.
+                     (("extensions\\.append\\(ctypes\\)") "")
+                     ;; Prevent the 'ossaudiodev' extension from being
+                     ;; built, since it requires Linux headers.
+                     (("'linux', ") ""))
+                   #t))
+               (delete 'set-TZDIR)))
+           ((#:tests? _ #f) #f))))))
+
+(define ld-wrapper-boot0
+  (mlambda ()
+    ;; We need this so binaries on Hurd will have libmachuser and libhurduser
+    ;; in their RUNPATH, otherwise validate-runpath will fail.
+    (make-ld-wrapper "ld-wrapper-boot0"
+                     #:target boot-triplet
+                     #:binutils binutils-boot0
+                     #:guile %bootstrap-guile
+                     #:bash (car (assoc-ref (%boot0-inputs) "bash"))
+                     #:guile-for-build %bootstrap-guile)))
 
 (define (%boot1-inputs)
   ;; 2nd stage inputs.
@@ -1949,65 +1965,66 @@ the bootstrap environment."
   ;; store path has no dependencies.  Actually, the really-final libc is
   ;; built just below; the only difference is that this one uses the
   ;; bootstrap Bash.
-  (package-with-bootstrap-guile
-   (package (inherit glibc)
-     (name "glibc-intermediate")
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-
-        ,@(substitute-keyword-arguments (package-arguments glibc)
-            ((#:configure-flags flags)
-             `(append (list ,(string-append "--host=" (boot-triplet))
-                            ,(string-append "--build="
-                                            (nix-system->gnu-triplet)))
-                      ,flags))
-            ((#:phases phases)
-             `(modify-phases ,phases
-                (add-before 'configure 'pre-configure
-                  (lambda* (#:key inputs #:allow-other-keys)
-                    ;; Don't clobber CPATH with the bootstrap libc.
-                    (setenv "NATIVE_CPATH" (getenv "CPATH"))
-                    (unsetenv "CPATH")
-
-                    ;; Tell 'libpthread' where to find 'libihash' on Hurd systems.
-                    ,@(if (hurd-triplet? (%current-system))
-                          `((substitute* "libpthread/Makefile"
-                              (("LDLIBS-pthread.so =.*")
-                               (string-append "LDLIBS-pthread.so = "
-                                              (assoc-ref %build-inputs "kernel-headers")
-                                              "/lib/libihash.a\n"))))
-                          '())
-
-                    ;; 'rpcgen' needs native libc headers to be built.
-                    (substitute* "sunrpc/Makefile"
-                      (("sunrpc-CPPFLAGS =.*" all)
-                       (string-append "CPATH = $(NATIVE_CPATH)\n"
-                                      "export CPATH\n"
-                                      all "\n")))
-                    #t)))))))
-     (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0))))
-     (native-inputs
-      `(("bison" ,bison-boot0)
-        ("texinfo" ,texinfo-boot0)
-        ("perl" ,perl-boot0)
-        ("python" ,python-boot0)))
-     (inputs
-      `(;; The boot inputs.  That includes the bootstrap libc.  We don't want
-        ;; it in $CPATH, hence the 'pre-configure' phase above.
-        ,@(%boot1-inputs)
-
-        ;; A native MiG is needed to build Glibc on Hurd.
-        ,@(if (hurd-triplet? (%current-system))
-              `(("mig" ,mig-boot0))
-              '())
-
-        ;; A native GCC is needed to build `cross-rpcgen'.
-        ("native-gcc" ,@(assoc-ref (%boot0-inputs) "gcc"))
-
-        ;; Here, we use the bootstrap Bash, which is not satisfactory
-        ;; because we don't want to depend on bootstrap tools.
-        ("static-bash" ,@(assoc-ref (%boot0-inputs) "bash")))))))
+  (package
+    (inherit glibc)
+    (name "glibc-intermediate")
+    (source (bootstrap-origin (package-source glibc)))
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+
+       ,@(substitute-keyword-arguments (package-arguments glibc)
+           ((#:configure-flags flags)
+            `(append (list ,(string-append "--host=" (boot-triplet))
+                           ,(string-append "--build="
+                                           (nix-system->gnu-triplet)))
+                     ,flags))
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (add-before 'configure 'pre-configure
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; Don't clobber CPATH with the bootstrap libc.
+                   (setenv "NATIVE_CPATH" (getenv "CPATH"))
+                   (unsetenv "CPATH")
+
+                   ;; Tell 'libpthread' where to find 'libihash' on Hurd systems.
+                   ,@(if (hurd-triplet? (%current-system))
+                         `((substitute* "libpthread/Makefile"
+                             (("LDLIBS-pthread.so =.*")
+                              (string-append "LDLIBS-pthread.so = "
+                                             (assoc-ref %build-inputs "kernel-headers")
+                                             "/lib/libihash.a\n"))))
+                         '())
+
+                   ;; 'rpcgen' needs native libc headers to be built.
+                   (substitute* "sunrpc/Makefile"
+                     (("sunrpc-CPPFLAGS =.*" all)
+                      (string-append "CPATH = $(NATIVE_CPATH)\n"
+                                     "export CPATH\n"
+                                     all "\n")))
+                   #t)))))))
+    (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0))))
+    (native-inputs
+     `(("bison" ,bison-boot0)
+       ("texinfo" ,texinfo-boot0)
+       ("perl" ,perl-boot0)
+       ("python" ,python-boot0)))
+    (inputs
+     `( ;; The boot inputs.  That includes the bootstrap libc.  We don't want
+       ;; it in $CPATH, hence the 'pre-configure' phase above.
+       ,@(%boot1-inputs)
+
+       ;; A native MiG is needed to build Glibc on Hurd.
+       ,@(if (hurd-triplet? (%current-system))
+             `(("mig" ,mig-boot0))
+             '())
+
+       ;; A native GCC is needed to build `cross-rpcgen'.
+       ("native-gcc" ,@(assoc-ref (%boot0-inputs) "gcc"))
+
+       ;; Here, we use the bootstrap Bash, which is not satisfactory
+       ;; because we don't want to depend on bootstrap tools.
+       ("static-bash" ,@(assoc-ref (%boot0-inputs) "bash"))))))
 
 (define (cross-gcc-wrapper gcc binutils glibc bash)
   "Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC
@@ -2071,99 +2088,92 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 
 (define static-bash-for-glibc
   ;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co.
-  (let ((bash (package
-                (inherit static-bash)
-                (arguments
-                 (substitute-keyword-arguments
-                     (package-arguments static-bash)
-                   ((#:guile _ #f)
-                    '%bootstrap-guile)
-                   ((#:configure-flags flags '())
-                    ;; Add a '-L' flag so that the pseudo-cross-ld of
-                    ;; BINUTILS-BOOT0 can find libc.a.
-                    `(append ,flags
-                             (list (string-append "LDFLAGS=-static -L"
-                                                  (assoc-ref %build-inputs
-                                                             "libc:static")
-                                                  "/lib")))))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs
-      bash
-      (lambda _
-        `(("gcc" ,(gcc-boot0-intermediate-wrapped))
-          ("libc" ,glibc-final-with-bootstrap-bash)
-          ("libc:static" ,glibc-final-with-bootstrap-bash "static")
-          ,@(fold alist-delete (%boot1-inputs)
-                  '("gcc" "libc"))))
-      (current-source-location)
-      #:guile %bootstrap-guile))))
+  (package
+    (inherit static-bash)
+    (source (bootstrap-origin (package-source static-bash)))
+    (inputs `(("gcc" ,(gcc-boot0-intermediate-wrapped))
+              ("libc" ,glibc-final-with-bootstrap-bash)
+              ("libc:static" ,glibc-final-with-bootstrap-bash "static")
+              ,@(fold alist-delete (%boot1-inputs)
+                      '("gcc" "libc"))))
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+
+       ,@(substitute-keyword-arguments (package-arguments static-bash)
+           ((#:configure-flags flags '())
+            ;; Add a '-L' flag so that the pseudo-cross-ld of
+            ;; BINUTILS-BOOT0 can find libc.a.
+            `(append ,flags
+                     (list (string-append "LDFLAGS=-static -L"
+                                          (assoc-ref %build-inputs
+                                                     "libc:static")
+                                          "/lib")))))))))
 
 (define gettext-boot0
   ;; A minimal gettext used during bootstrap.
-  (let ((gettext-minimal
-         (package (inherit gettext-minimal)
-           (name "gettext-boot0")
-           ;; Newer versions of GNU gettext depends on libxml2 and ncurses.  To
-           ;; simplify the dependency chain, we stick to this version here.
-           (version "0.19.8.1")
-           (source (origin
-                     (method url-fetch)
-                     (uri (string-append "mirror://gnu/gettext/gettext-"
-                                         version ".tar.gz"))
-                     (sha256
-                      (base32
-                       "0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z"))))
-           (inputs '())                           ;zero dependencies
-           (arguments
-            `(#:tests? #f
-              #:phases (modify-phases %standard-phases
-                         ;; Build only the tools.
-                         (add-after 'unpack 'chdir
-                           (lambda _
-                             (chdir "gettext-tools")
-                             #t))
-
-                         ;; Some test programs require pthreads, which we don't have.
-                         (add-before 'configure 'no-test-programs
-                           (lambda _
-                             (substitute* "tests/Makefile.in"
-                               (("^PROGRAMS =.*$")
-                                "PROGRAMS =\n"))
-                             #t))))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs gettext-minimal
-                                   %boot1-inputs
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+  (package
+    (inherit gettext-minimal)
+    (name "gettext-boot0")
+    ;; Newer versions of GNU gettext depends on libxml2 and ncurses.  To
+    ;; simplify the dependency chain, we stick to this version here.
+    (version "0.19.8.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gettext/gettext-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z"))))
+    (inputs (%boot1-inputs))                      ;zero dependencies
+    (arguments
+     `(#:implicit-inputs? #f
+       #:guile ,%bootstrap-guile
+       #:tests? #f
+       #:phases (modify-phases %standard-phases
+                  ;; Build only the tools.
+                  (add-after 'unpack 'chdir
+                    (lambda _
+                      (chdir "gettext-tools")
+                      #t))
+
+                  ;; Some test programs require pthreads, which we don't have.
+                  (add-before 'configure 'no-test-programs
+                    (lambda _
+                      (substitute* "tests/Makefile.in"
+                        (("^PROGRAMS =.*$")
+                         "PROGRAMS =\n"))
+                      #t)))))))
 
 (define glibc-final
   ;; The final glibc, which embeds the statically-linked Bash built above.
   ;; Use 'package/inherit' so we get the 'replacement' of 'glibc', if any.
-  (let ((glibc (package-with-bootstrap-guile glibc)))
-    (package/inherit glibc
-      (name "glibc")
-      (inputs `(("static-bash" ,static-bash-for-glibc)
-                ,@(alist-delete
-                   "static-bash"
-                   (package-inputs glibc-final-with-bootstrap-bash))))
-
-      ;; This time we need 'msgfmt' to install all the libc.mo files.
-      (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash)
-                       ("gettext" ,gettext-boot0)))
-
-      (propagated-inputs
-       (package-propagated-inputs glibc-final-with-bootstrap-bash))
-
-      ;; The final libc only refers to itself, but the 'debug' output contains
-      ;; references to GCC-BOOT0 and to the Linux headers.  XXX: Would be great
-      ;; if 'allowed-references' were per-output.
-      (arguments
-       `(#:allowed-references
-         ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0)
-                 static-bash-for-glibc
-                 (package-outputs glibc-final-with-bootstrap-bash))
-
-         ,@(package-arguments glibc-final-with-bootstrap-bash))))))
+  (package/inherit
+   glibc
+   (name "glibc")
+   (source (bootstrap-origin (package-source glibc)))
+   (inputs `(("static-bash" ,static-bash-for-glibc)
+             ,@(alist-delete
+                "static-bash"
+                (package-inputs glibc-final-with-bootstrap-bash))))
+
+   ;; This time we need 'msgfmt' to install all the libc.mo files.
+   (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash)
+                    ("gettext" ,gettext-boot0)))
+
+   (propagated-inputs
+    (package-propagated-inputs glibc-final-with-bootstrap-bash))
+
+   ;; The final libc only refers to itself, but the 'debug' output contains
+   ;; references to GCC-BOOT0 and to the Linux headers.  XXX: Would be great
+   ;; if 'allowed-references' were per-output.
+   (arguments
+    `(#:allowed-references
+      ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0)
+              static-bash-for-glibc
+              (package-outputs glibc-final-with-bootstrap-bash))
+
+      ,@(package-arguments glibc-final-with-bootstrap-bash)))))
 
 (define (gcc-boot0-wrapped)
   ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the
@@ -2179,21 +2189,23 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     ,@(fold alist-delete (%boot1-inputs) '("libc" "gcc" "linux-libre-headers"))))
 
 (define binutils-final
-  (package-with-bootstrap-guile
-   (package (inherit binutils)
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-        #:allowed-references ("out" ,glibc-final)
-        ,@(package-arguments binutils)))
-     (inputs (%boot2-inputs)))))
+  (package
+    (inherit binutils)
+    (source (bootstrap-origin (package-source binutils)))
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+       #:allowed-references ("out" ,glibc-final)
+       ,@(package-arguments binutils)))
+    (inputs (%boot2-inputs))))
 
 (define libstdc++
   ;; Intermediate libstdc++ that will allow us to build the final GCC
   ;; (remember that GCC-BOOT0 cannot build libstdc++.)
-  (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc))))
+  (let ((lib (make-libstdc++ gcc)))
     (package
       (inherit lib)
+      (source (bootstrap-origin (package-source lib)))
       (arguments
        `(#:guile ,%bootstrap-guile
          #:implicit-inputs? #f
@@ -2218,23 +2230,23 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 
 (define zlib-final
   ;; Zlib used by GCC-FINAL.
-  (package-with-bootstrap-guile
-   (package
-     (inherit zlib)
-     (arguments
-      `(#:guile ,%bootstrap-guile
-        #:implicit-inputs? #f
-        #:allowed-references ("out" ,glibc-final)
-        ,@(package-arguments zlib)))
-     (inputs (%boot2-inputs)))))
-
-(define (ld-wrapper-boot3)
-  ;; A linker wrapper that uses the bootstrap Guile.
-  (make-ld-wrapper "ld-wrapper-boot3"
-                   #:binutils binutils-final
-                   #:guile %bootstrap-guile
-                   #:bash (car (assoc-ref (%boot2-inputs) "bash"))
-                   #:guile-for-build %bootstrap-guile))
+  (package
+    (inherit zlib)
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:implicit-inputs? #f
+       #:allowed-references ("out" ,glibc-final)
+       ,@(package-arguments zlib)))
+    (inputs (%boot2-inputs))))
+
+(define ld-wrapper-boot3
+  (mlambda ()
+    ;; A linker wrapper that uses the bootstrap Guile.
+    (make-ld-wrapper "ld-wrapper-boot3"
+                     #:binutils binutils-final
+                     #:guile %bootstrap-guile
+                     #:bash (car (assoc-ref (%boot2-inputs) "bash"))
+                     #:guile-for-build %bootstrap-guile)))
 
 (define gcc-final
   ;; The final GCC.
@@ -2335,17 +2347,18 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   ;; Link with `-static-libgcc' to make sure we don't retain a reference
   ;; to the bootstrap GCC.  Use "bash-minimal" to avoid an extra dependency
   ;; on Readline and ncurses.
-  (let ((bash (package
-                (inherit bash-minimal)
-                (arguments
-                 `(#:disallowed-references
-                   ,(assoc-ref (%boot3-inputs) "coreutils&co")
-                   ,@(package-arguments bash-minimal))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs (static-libgcc-package bash)
-                                   %boot3-inputs
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+  (let ((bash (static-libgcc-package bash-minimal)))
+    (package
+      (inherit bash)
+      (source (bootstrap-origin (package-source bash)))
+      (inputs (%boot3-inputs))
+      (arguments
+       `(#:implicit-inputs? #f
+         #:guile ,%bootstrap-guile
+
+         #:disallowed-references ,(assoc-ref (%boot3-inputs) "coreutils&co")
+
+         ,@(package-arguments bash))))))
 
 (define (%boot4-inputs)
   ;; Now use the final Bash.
@@ -2392,34 +2405,33 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 
 (define gnu-make-final
   ;; The final GNU Make, which uses the final Guile.
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs gnu-make
-                                 (lambda _
-                                   `(("guile" ,guile-final)
-                                     ,@(%boot5-inputs)))
-                                 (current-source-location))))
+  (package-with-explicit-inputs (package-with-bootstrap-guile gnu-make)
+                                (lambda _
+                                  `(("guile" ,guile-final)
+                                    ,@(%boot5-inputs)))
+                                (current-source-location)))
 
 (define coreutils-final
   ;; The final Coreutils.  Treat them specially because some packages, such as
   ;; Findutils, keep a reference to the Coreutils they were built with.
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs coreutils
-                                 %boot5-inputs
-                                 (current-source-location)
+  (package-with-explicit-inputs (package-with-bootstrap-guile coreutils)
+                                %boot5-inputs
+                                (current-source-location)
 
-                                 ;; Use the final Guile, linked against the
-                                 ;; final libc with working iconv, so that
-                                 ;; 'substitute*' works well when touching
-                                 ;; test files in Gettext.
-                                 #:guile guile-final)))
+                                ;; Use the final Guile, linked against the
+                                ;; final libc with working iconv, so that
+                                ;; 'substitute*' works well when touching
+                                ;; test files in Gettext.
+                                #:guile guile-final))
 
 (define grep-final
   ;; The final grep.  Gzip holds a reference to it (via zgrep), so it must be
   ;; built before gzip.
-  (let ((grep (package-with-bootstrap-guile
-               (package-with-explicit-inputs grep %boot5-inputs
-                                             (current-source-location)
-                                             #:guile guile-final))))
+  (let ((grep (package-with-explicit-inputs
+               (package-with-bootstrap-guile grep)
+               %boot5-inputs
+               (current-source-location)
+               #:guile guile-final)))
     (package/inherit grep
                      (inputs (alist-delete "pcre" (package-inputs grep)))
                      (native-inputs `(("perl" ,perl-boot0))))))
@@ -2432,10 +2444,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 
 (define sed-final
   ;; The final sed.
-  (let ((sed (package-with-bootstrap-guile
-              (package-with-explicit-inputs sed %boot6-inputs
-                                            (current-source-location)
-                                            #:guile guile-final))))
+  (let ((sed (package-with-explicit-inputs (package-with-bootstrap-guile sed)
+                                           %boot6-inputs
+                                           (current-source-location)
+                                           #:guile guile-final)))
     (package/inherit sed (native-inputs `(("perl" ,perl-boot0))))))
 
 (define-public %final-inputs
@@ -2443,12 +2455,12 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   ;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are
   ;; used for origins that have patches, thereby avoiding circular
   ;; dependencies.
-  (let ((finalize (compose package-with-bootstrap-guile
-                           (cut package-with-explicit-inputs <> %boot6-inputs
-                                (current-source-location)))))
+  (let ((finalize (compose (cut package-with-explicit-inputs <> %boot6-inputs
+                                (current-source-location))
+                           package-with-bootstrap-guile)))
     `(,@(map (match-lambda
-              ((name package)
-               (list name (finalize package))))
+               ((name package)
+                (list name (finalize package))))
              `(("tar" ,tar)
                ("gzip" ,gzip)
                ("bzip2" ,bzip2)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 1c98e381ab..6aac60d284 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -206,7 +206,7 @@ as ordering relation.")
 (define-public json-modern-cxx
   (package
     (name "json-modern-cxx")
-    (version "3.1.2")
+    (version "3.7.0")
     (home-page "https://github.com/nlohmann/json")
     (source
      (origin
@@ -215,30 +215,34 @@ as ordering relation.")
                            (commit (string-append "v" version))))
        (sha256
         (base32
-         "1mpr781fb2dfbyscrr7nil75lkxsazg4wkm749168lcf2ksrrbfi"))
+         "0v7xih4zjixxxfvkfbs7a8j9qcvpwlsv4vrkbyns3hc7b44nb8ap"))
        (file-name (git-file-name name version))
        (modules '((guix build utils)))
        (snippet
         '(begin
-           (delete-file-recursively "./third_party")
-           (delete-file-recursively "./test/thirdparty")
-           (delete-file-recursively "./benchmarks/thirdparty")
-           ;; Splits catch and fifo_map
+           ;; Delete bundled software.  Preserve doctest_compatibility.h, which
+           ;; is a wrapper library added by this package.
+           (install-file "./test/thirdparty/doctest/doctest_compatibility.h" "/tmp")
+           (for-each delete-file-recursively
+                     '("./third_party" "./test/thirdparty" "./benchmarks/thirdparty"))
+           (install-file "/tmp/doctest_compatibility.h" "./test/thirdparty/doctest")
+
+           ;; Adjust for the unbundled fifo_map and doctest.
+           (substitute* "./test/thirdparty/doctest/doctest_compatibility.h"
+             (("#include \"doctest\\.h\"")
+              "#include <doctest/doctest.h>"))
            (with-directory-excursion "test/src"
-             (let ((files (find-files "." ".*\\.cpp")))
-               (substitute* files
-                 (("#include ?\"(catch.hpp)\"" all catch-hpp)
-                  (string-append "#include <catch/" catch-hpp ">")))
+             (let ((files (find-files "." "\\.cpp$")))
                (substitute* files
                  (("#include ?\"(fifo_map.hpp)\"" all fifo-map-hpp)
                   (string-append
                    "#include <fifo_map/" fifo-map-hpp ">")))))
            #t))))
     (native-inputs
-     `(("amalgamate" ,amalgamate)))
+     `(("amalgamate" ,amalgamate)
+       ("doctest" ,doctest)))
     (inputs
-     `(("catch2" ,catch-framework2)
-       ("fifo-map" ,fifo-map)))
+     `(("fifo-map" ,fifo-map)))
     (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/curl.scm b/gnu/packages/curl.scm
index 5e1e7eb400..aa5d24c401 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
@@ -51,6 +51,7 @@
   (package
    (name "curl")
    (version "7.65.3")
+   (replacement curl-7.66.0)
    (source (origin
             (method url-fetch)
             (uri (string-append "https://curl.haxx.se/download/curl-"
@@ -142,6 +143,18 @@ tunneling, and so on.")
                                   "See COPYING in the distribution."))
    (home-page "https://curl.haxx.se/")))
 
+(define curl-7.66.0
+  (package
+    (inherit curl)
+    (version "7.66.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://curl.haxx.se/download/curl-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1hcqxpibhknhjy56wcxz5vd6m9ggx3ykwp3wp5wx05ih36481d6v"))))))
+
 (define-public kurly
   (package
     (name "kurly")
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 4de0745190..8421682924 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -78,26 +78,25 @@
 (define-public parted
   (package
     (name "parted")
-    (version "3.2")
+    (version "3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/parted/parted-"
                                   version ".tar.xz"))
-              (patches (search-patches "parted-glibc-compat.patch"))
               (sha256
                (base32
-                "1r3qpg3bhz37mgvp9chsaa3k0csby3vayfvz8ggsqz194af5i2w5"))))
+                "0i1xp367wpqw75b20c3jnism3dg3yqj4a7a22p2jb1h1hyyv9qjp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after
-          'unpack 'fix-locales-and-python
-          (lambda* (#:key inputs #:allow-other-keys)
-            (substitute* "tests/t0251-gpt-unicode.sh"
-              (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales
-            (substitute* "tests/msdos-overlap"
-              (("/usr/bin/python") (which "python"))))))))
+         (add-after 'unpack 'fix-locales-and-python
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "tests/t0251-gpt-unicode.sh"
+               (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales
+             (substitute* "tests/msdos-overlap"
+               (("/usr/bin/python") (which "python")))
+             #t)))))
     (inputs
      `(("lvm2" ,lvm2)
        ("readline" ,readline)
@@ -105,6 +104,7 @@
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ;; For the tests.
+       ("e2fsprogs" ,e2fsprogs)
        ("perl" ,perl)
        ("python" ,python-2)))
     (home-page "https://www.gnu.org/software/parted/")
diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm
index 0eaa1d8b83..4e1acc4b67 100644
--- a/gnu/packages/distributed.scm
+++ b/gnu/packages/distributed.scm
@@ -18,6 +18,7 @@
 
 (define-module (gnu packages distributed)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
@@ -47,8 +48,9 @@
               (uri (git-reference
                     (url "https://github.com/boinc/boinc.git")
                     (commit (string-append "client_release/"
-                                           "7.16/"
-                                           version))))
+                                           (version-major+minor version)
+                                           "/" version))))
+              (file-name (git-file-name "boinc" version))
               (sha256
                (base32
                 "0w2qimcwyjhapk3z7zyq7jkls23hsnmm35iw7m4s4if04fp70dx0"))))
@@ -72,12 +74,10 @@
     (description "BOINC is a platform for high-throughput computing on a large
 scale (thousands or millions of computers).  It can be used for volunteer
 computing (using consumer devices) or grid computing (using organizational
-resources).  It supports virtualized, parallel, and GPU-based applications.
-
-BOINC is distributed under the LGPL open source license.  It can be used for
-commercial purposes, and applications need not be open source.")
+resources).  It supports virtualized, parallel, and GPU-based applications.")
     (home-page "https://boinc.berkeley.edu/")
-    (license license:gpl3+)))
+    ;; BOINC is distributed as LGPL3+, with some individual modules under GPL3+.
+    (license (list license:lgpl3+ license:gpl3+))))
 
 (define-public boinc-server
   (package (inherit boinc-client)
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index dcef7370bd..8e43447921 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -41,13 +41,13 @@
 (define-public python-django
   (package
     (name "python-django")
-    (version "1.11.21")
+    (version "1.11.25")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "0adhcw8sx2mgwk9y2j760y96pqbip1ni3sf2v2ls5zxc9x93wwms"))))
+                "0rpgx212n8gh61nwizkyldvskna808xpcvawmavk5mc5c9cfh52k"))))
     (build-system python-build-system)
     (arguments
      '(#:modules ((srfi srfi-1)
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 5f3686347d..5167cf8379 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -578,14 +578,14 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "2.8.2")
+    (version "2.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://secure.nic.cz/files/knot-dns/"
                            "knot-" version ".tar.xz"))
        (sha256
-        (base32 "0dx1lp4w33rpa54nns41k4vfdfin6naaskwh132r4qs0l9hl7lh0"))
+        (base32 "18i1kdyaqaskjyhmq888wml4d2p4ic1sbjynlb6ggfxsxzm38x6z"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0dfff8146b..9c3596db28 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -265,21 +265,28 @@ on stdout instead of using a socket as the Emacsclient does.")
     (license license:gpl3+)))
 
 (define-public emacs-magit
-  ;; Version 2.90.1 has trouble loading the transient library,
-  ;; so we use a more recent commit that fixes it.
-  (let ((commit "b4aec016b5577afa8d889f258b499814d1bb1d94"))
+  ;; `magit-setup-buffer' macro introduced in c761d28d and required in
+  ;; `emacs-forge'.
+  (let ((commit "c761d28d49e5238037512b898db0ec9b40d85770"))
     (package
       (name "emacs-magit")
-      (version (git-version "2.90.1" "1" commit))
+      (version (git-version "2.90.1" "2" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/magit/magit")
+                      (url "https://github.com/magit/magit.git")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0zl7v6z0y50pcgqsf2r8c1k3r5nwjad9ba7r6sgrnf4rc62br7jv"))))
+                  "16qx0404l05q1m6w7y5j8ck1z5nfmpinm00w0p2yh1hn5zzwy6dd"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    ;; Fix syntax error
+                    (substitute* "lisp/magit-extras.el"
+                      (("rev\\)\\)\\)\\)\\)\\)") "rev)))))"))
+                    #t))))
       (build-system gnu-build-system)
       (native-inputs `(("texinfo" ,texinfo)
                        ("emacs" ,emacs-minimal)))
@@ -318,6 +325,39 @@ on stdout instead of using a socket as the Emacsclient does.")
 
          #:phases
          (modify-phases %standard-phases
+           (add-after 'unpack 'patch
+             (lambda _
+               (chmod "lisp/magit-extras.el" #o644)
+               (emacs-batch-edit-file "lisp/magit-extras.el"
+                 `(progn (progn
+                          (goto-char (point-min))
+                          (re-search-forward "(defun magit-copy-buffer-revision ()")
+                          (forward-sexp 2)
+                          (kill-sexp)
+                          (insert ,(format #f "~S"
+                                           '(if (use-region-p)
+                                                (copy-region-as-kill nil nil 'region)
+                                                (when-let ((rev (cl-case major-mode
+                                                                         ((magit-cherry-mode
+                                                                           magit-log-select-mode
+                                                                           magit-reflog-mode
+                                                                           magit-refs-mode
+                                                                           magit-revision-mode
+                                                                           magit-stash-mode
+                                                                           magit-stashes-mode)
+                                                                          (car magit-refresh-args))
+                                                                         ((magit-diff-mode magit-log-mode)
+                                                                          (let ((r (caar magit-refresh-args)))
+                                                                            (if (string-match "\\.\\.\\.?\\(.+\\)" r)
+                                                                                (match-string 1 r)
+                                                                                r)))
+                                                                         (magit-status-mode "HEAD"))))
+                                                          (when (magit-commit-p rev)
+                                                            (setq rev (magit-rev-parse rev))
+                                                            (push (list rev default-directory) magit-revision-stack)
+                                                            (kill-new (message "%s" rev))))))))
+                         (basic-save-buffer)))
+               #t))
            (delete 'configure)
            (add-before
                'build 'patch-exec-paths
@@ -524,39 +564,41 @@ deliver data to mobile and web apps.")
    (license license:gpl3+)))
 
 (define-public emacs-ghub
-  (package
-    (name "emacs-ghub")
-    (version "3.2.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/magit/ghub")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0lp52qygyavddl1lrgsyb6mq7hcf9h89dy2pzya3mb2va49f0vvl"))))
-    (build-system emacs-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'make-info
-           (lambda _
-             (invoke "make" "info"))))))
-    (native-inputs
-     `(("texinfo" ,texinfo)))
-    (propagated-inputs
-     `(("dash" ,emacs-dash)
-       ("graphql" ,emacs-graphql)
-       ("treepy" ,emacs-treepy)))
-    (home-page "https://github.com/magit/ghub")
-    (synopsis "Emacs client libraries for the APIs of various Git forges")
-    (description
-     "Ghub provides basic support for using the APIs of various Git forges from
+  ;; We need a newer commit to avoid problems in emacs-forge.
+  (let ((commit "cf0b13aeba4df3798e49c205cac2d8fefd53a137")
+        (revision "1"))
+    (package
+      (name "emacs-ghub")
+      (version (git-version "3.2.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/ghub")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0fzayvcysk80vv4q332axcjf80x6gsnpcbl0svmpb017ii6wxhid"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'install 'make-info
+             (lambda _
+               (invoke "make" "info"))))))
+      (native-inputs
+       `(("texinfo" ,texinfo)))
+      (propagated-inputs
+       `(("dash" ,emacs-dash)
+         ("treepy" ,emacs-treepy)))
+      (home-page "https://github.com/magit/ghub")
+      (synopsis "Emacs client libraries for the APIs of various Git forges")
+      (description
+       "Ghub provides basic support for using the APIs of various Git forges from
 Emacs packages.  It supports the REST APIs of Github, Github GraphQL, Gitlab,
 Gitea, Gogs and Bitbucket.  It abstracts access to API resources using only a
 handful of functions that are not resource-specific.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-scribble-mode
   (let ((commit "217945d54de5e4bb207033f2116baa28f5c5ecf2")
@@ -741,8 +783,8 @@ programs.")
   (deprecated-package "haskell-mode" emacs-haskell-mode))
 
 (define-public emacs-dante
-  (let ((commit "a25ae9e5b5425cffdd88d498777e90ea8655fa37")
-        (revision "2"))
+  (let ((commit "38b589417294c7ea44bf65b73b8046d950f9531b")
+        (revision "3"))
     (package
       (name "emacs-dante")
       (version (git-version "1.5" revision commit))
@@ -753,7 +795,7 @@ programs.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "1ziw3snbs2z2cg8a3jbyjd48qkgrkzs4bh8lrbs0h2c87nzldvhd"))
+                  "1mnmn635552zlwd4zr68jbvdjipl6gi4mi6wiyck28fsmq8kw96h"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
@@ -2946,29 +2988,35 @@ completing keywords and smart indentation.")
       (license license:gpl3+))))
 
 (define-public emacs-rspec
-  (package
-    (name "emacs-rspec")
-    (version "1.11")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/pezra/rspec-mode.git")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0hrn5n7aaymwimk511kjij44vqaxbmhly1gwmlmsrnbvvma7f2mp"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/pezra/rspec-mode")
-    (synopsis "Provides a rspec mode for working with RSpec")
-    (description
-     "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to
+  (let ((commit "66ea7cc9699d6edc6115daa024818adbd85efc20")
+        (revision "1"))
+    (package
+      (name "emacs-rspec")
+      (version (git-version "1.11" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pezra/rspec-mode.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0b11s8r0pi7ah54km4yg4fqff8wkk409d25qnlwm1l94pdwjd1c8"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:include (cons "^snippets\\/rspec-mode\\/" %default-include)
+         #:tests? #t
+         #:test-command '("make" "test")))
+      (home-page "https://github.com/pezra/rspec-mode")
+      (synopsis "Provides a rspec mode for working with RSpec")
+      (description
+       "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to
 verify the spec associated with the current buffer, or entire project, as well
 as moving between the spec files, and corresponding code files.
 
 Also included are keybindings for spec files and Dired buffers, as well as
 snippets for yasnippet.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-smart-mode-line
   (package
@@ -4453,36 +4501,34 @@ started with 20 minutes.  All values are customizable.")
       (license license:gpl3+))))
 
 (define-public emacs-org-sidebar
-  (let ((commit "b2a5a69b1ebbab63b55e7d1a9453f385624a642c")
-        (revision "2"))
-    (package
-      (name "emacs-org-sidebar")
-      (version (git-version "0.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/alphapapa/org-sidebar.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0dajwg92kj7998xl0x35dlqwdhgwjcwxa726kf4f3wgv1azpyff6"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-dash" ,emacs-dash)
-         ("emacs-org-super-agenda" ,emacs-org-super-agenda)
-         ("emacs-org" ,emacs-org)
-         ("emacs-org-ql" ,emacs-org-ql)
-         ("emacs-s" ,emacs-s)))
-      (home-page "https://github.com/alphapapa/org-sidebar")
-      (synopsis "Helpful sidebar for Org buffers")
-      (description "This package provides a sidebar for Org buffers.  At the
+  (package
+    (name "emacs-org-sidebar")
+    (version "0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alphapapa/org-sidebar.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "106h06vjfbqfj761vbxwymd6612ds8c6fk053yzgbrqzm3hn2c03"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-org-super-agenda" ,emacs-org-super-agenda)
+       ("emacs-org" ,emacs-org)
+       ("emacs-org-ql" ,emacs-org-ql)
+       ("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/alphapapa/org-sidebar")
+    (synopsis "Helpful sidebar for Org buffers")
+    (description "This package provides a sidebar for Org buffers.  At the
 top is a chronological list of scheduled and deadlined tasks in the current
 buffer (similar to the Org agenda ,but without all its features), and below
 that is a list of all other non-done to-do items.  If the buffer is narrowed,
 the sidebar only shows items in the narrowed portion; this allows seeing an
 overview of tasks in a subtree.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-org-trello
   (package
@@ -6597,26 +6643,29 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
     (license license:gpl3+)))
 
 (define-public emacs-wgrep
-  (package
-    (name "emacs-wgrep")
-    (version "2.3.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/mhayashi1120/Emacs-wgrep")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
-    (synopsis "Edit a grep buffer and apply those changes to the files")
-    (description
-     "Emacs wgrep allows you to edit a grep buffer and apply those changes
+  ;; Tag is missing, so we use the commit directly.
+  ;; https://github.com/mhayashi1120/Emacs-wgrep/issues/64
+  (let ((commit "379afd89ebd76f63842c8589127d66096a8bb595"))
+    (package
+      (name "emacs-wgrep")
+      (version "2.3.1")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/mhayashi1120/Emacs-wgrep")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
+      (synopsis "Edit a grep buffer and apply those changes to the files")
+      (description
+       "Emacs wgrep allows you to edit a grep buffer and apply those changes
 to the file buffer.  Several backends are supported beside the classic grep:
 ack, ag, helm and pt.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-helm
   (package
@@ -6891,14 +6940,14 @@ are pretty much the same (and SLIME served as the principle inspiration for
 CIDER).")
     (license license:gpl3+)))
 
-;; There hasn't been a tag or release since 2015, so we take the latest
+;; There hasn't been a tag or release since 2016, so we take the latest
 ;; commit.
 (define-public emacs-sly
-  (let ((commit "486bfbe95612bcdc0960c490207970a188e0fbb9")
-        (revision "1"))
+  (let ((commit "29dccc0735283897a6dbd97e0b6828a45c2985e2")
+        (revision "2"))
     (package
       (name "emacs-sly")
-      (version (string-append "1.0.0-" revision "." (string-take commit 9)))
+      (version (git-version "1.0.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -6908,14 +6957,45 @@ CIDER).")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0ib4q4k3h3qn88pymyjjmlmnpizdn1mfg5gpk5a715nqsgxlg09l"))))
+           "0d0skgyqn422130xn8lrdp04m5cjk3sl18w6lf2wrmrndc1crqxk"))))
       (build-system emacs-build-system)
+      (native-inputs
+       `(("texinfo" ,texinfo)))
       (arguments
-       `(#:include (cons "^lib\\/" %default-include)
+       `(#:include (cons* "^contrib\\/" "^lib\\/" "^slynk\\/" %default-include)
          #:phases
          ;; The package provides autoloads.
          (modify-phases %standard-phases
-           (delete 'make-autoloads))))
+           (delete 'make-autoloads)
+           (add-before 'install 'install-doc
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (info-dir (string-append out "/share/info"))
+                      (doc-dir (string-append out "/share/doc/"
+                                              ,name "-" ,version))
+                      (doc-files '(;; "doc/sly-refcard.pdf" ; See sly-refcard.pdf below.
+                                   "README.md" "NEWS.md" "PROBLEMS.md"
+                                   "CONTRIBUTING.md")))
+                 (with-directory-excursion "doc"
+                   (substitute* "Makefile"
+                     (("infodir=/usr/local/info")
+                      (string-append "infodir=" info-dir))
+                     ;; Don't rebuild contributors.texi since we are not in
+                     ;; the git repo.
+                     (("contributors.texi: Makefile texinfo-tabulate.awk")
+                      "contributors.texi:"))
+                   (invoke "make" "html/index.html")
+                   (invoke "make" "sly.info")
+                   ;; TODO: We need minimal texlive with "preprint" package
+                   ;; (for fullpage.sty).  (invoke "make" "sly-refcard.pdf")
+                   (install-file "sly.info" info-dir)
+                   (copy-recursively "html" (string-append doc-dir "/html")))
+                 (for-each (lambda (f)
+                             (install-file f doc-dir)
+                             (delete-file f))
+                           doc-files)
+                 (delete-file-recursively "doc")
+                 #t))))))
       (home-page "https://github.com/joaotavora/sly")
       (synopsis "Sylvester the Cat's Common Lisp IDE")
       (description
@@ -6924,13 +7004,13 @@ contains the following improvements over it:
 
 @enumerate
 @item Completely redesigned REPL based on Emacs's own full-featured
-  @code{comint.el}
-@item Live code annotations via a new @code{sly-stickers} contrib
+  @code{comint.el}.
+@item Live code annotations via a new @code{sly-stickers} contrib.
 @item Consistent interactive button interface.  Everything can be copied to
   the REPL.
-@item Multiple inspectors with independent history
-@item Regexp-capable @code{M-x sly-apropos}
-@item Contribs are first class SLY citizens and enabled by default
+@item Multiple inspectors with independent history.
+@item Regexp-capable @code{M-x sly-apropos}.
+@item Contribs are first class SLY citizens and enabled by default.
 @item Use ASDF to loads contribs on demand.
 @end enumerate
 
@@ -6938,6 +7018,75 @@ SLY tracks SLIME's bugfixes and all its familiar features (debugger, inspector,
 xref, etc...) are still available, but with better integration.")
       (license license:gpl3+))))
 
+(define-public emacs-sly-quicklisp
+  (let ((commit "01ebe3976a244309f2e277c09206831135a0b66c")
+        (revision "1"))
+    (package
+      (name "emacs-sly-quicklisp")
+      (version (git-version "0.0.0" revision commit))
+      (home-page "https://github.com/joaotavora/sly-quicklisp")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1vfqmvayf35g6y3ljsm3rlzv5jm50qikhh4lv2zkkswj6gkkb1cv"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-sly" ,emacs-sly)))
+      (arguments
+       `(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)
+         #:phases
+         ;; The package provides autoloads.
+         (modify-phases %standard-phases
+           (delete 'make-autoloads))))
+      (synopsis "Quicklisp support for SLY")
+      (description
+       "@command{sly-quicklisp} is an external contrib for SLY that provides a
+sly-quickload command that prompts the user for a package to install. ")
+      (license license:gpl3+))))
+
+(define-public emacs-sly-asdf
+  (let ((commit "355739e42c91b9b2339f84453292b938b6d17b0d")
+        (revision "1"))
+    (package
+      (name "emacs-sly-asdf")
+      (version (git-version "0.1.0" revision commit))
+      (home-page "https://github.com/mmgeorge/sly-asdf")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1plkqh4dj35c3cf8ykan8fcvqmxcdqragh4j6xg0sls27mjjz1bq"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-sly" ,emacs-sly)))
+      (arguments
+       `(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-autoload
+             ;; TODO: Reported upstream: https://github.com/mmgeorge/sly-asdf/pull/11
+             (lambda _
+               (substitute* "sly-asdf.el"
+                 (("\\(add-to-list 'sly-contribs 'sly-asdf 'append\\)")
+                  "(with-eval-after-load 'sly
+ (add-to-list 'sly-contribs 'sly-asdf 'append))")))))))
+      (synopsis "ASDF contrib for SLY")
+      (description
+       "@command{sly-asdf} is an external contrib for SLY that provides
+additional support for working with ASDF projects.")
+      (license license:gpl3+))))
+
 (define-public emacs-lua-mode
   (let ((commit "95c64bb5634035630e8c59d10d4a1d1003265743")
         (revision "2"))
@@ -7009,11 +7158,11 @@ extensions.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-collection
-  (let ((commit "986ca7eb0b75eccd843bdad2f7fdb48f4ca6ac22")
-        (revision "10"))
+  (let ((commit "bf4200a57c81c2302a3bf5b2058d74c6f90a3e6c")
+        (revision "11"))
     (package
       (name "emacs-evil-collection")
-      (version (git-version "0.0.2" revision commit))
+      (version (git-version "0.0.3" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -7022,10 +7171,13 @@ extensions.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "172sx5w50x5wrs5w0sb6rkbj3q22s7mmsnk4c6pwknhbz3vwlvwz"))))
+                  "01xw0m5gj14ly42y8ikvldpab5my28sylf6l9gvwd5cf909bd445"))))
       (build-system emacs-build-system)
       (propagated-inputs
-       `(("emacs-evil" ,emacs-evil)))
+       `(("emacs-evil" ,emacs-evil)
+         ("emacs-annalist" ,emacs-annalist)))
+      (arguments
+       `(#:include (cons* "^modes\\/" %default-include)))
       (home-page "https://github.com/emacs-evil/evil-collection")
       (synopsis "Collection of Evil bindings for many major and minor modes")
       (description "This is a collection of Evil bindings for the parts of
@@ -9996,25 +10148,32 @@ It supports dired buffers and opens them in tree mode at destination.")
     (license license:gpl3+)))
 
 (define-public emacs-tiny
-  (package
-    (name "emacs-tiny")
-    (version "0.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/tiny-" version ".tar"))
-       (sha256
-        (base32
-         "1cr73a8gba549ja55x0c2s554f3zywf69zbnd7v82jz5q1k9wd2v"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/abo-abo/tiny")
-    (synopsis "Quickly generate linear ranges in Emacs")
-    (description
-     "The main command of the @code{tiny} extension for Emacs is @code{tiny-expand}.
+  (let ((commit "fd8a6b0b0c564d8242259e20e557ee6041f40908")
+        (revision "1"))
+    (package
+      (name "emacs-tiny")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/abo-abo/tiny.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "1498j392ap2mk4zmsm2id16pfgvj78r428da9vw7hdrzzibai2cx"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:tests? #t
+         #:test-command '("make" "test")))
+      (home-page "https://github.com/abo-abo/tiny")
+      (synopsis "Quickly generate linear ranges in Emacs")
+      (description
+       "The main command of the @code{tiny} extension for Emacs is @code{tiny-expand}.
 It is meant to quickly generate linear ranges, e.g. 5, 6, 7, 8.  Some elisp
 proficiency is an advantage, since you can transform your numeric range with
 an elisp expression.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-emojify
   (package
@@ -10652,20 +10811,22 @@ navigation with the grails mode.")
   (deprecated-package "groovy-emacs-modes" emacs-groovy-modes))
 
 (define-public emacs-org-tree-slide
-  (let ((commit "dff8f1a4a64c8dd0a1fde0b0131e2fe186747134")
-        (revision "0"))
+  (let ((commit "036a36eec1cf712d3db155572aed325daa372eb5")
+        (revision "2"))
     (package
       (name "emacs-org-tree-slide")
-      (version (git-version "0.1" revision commit))
-      (home-page "https://github.com/takaxp/org-tree-slide")
+      (version (git-version "2.8.4" revision commit))
       (source (origin
                 (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
+                (uri (git-reference
+                      (url "https://github.com/takaxp/org-tree-slide.git")
+                      (commit commit)))
                 (sha256
                  (base32
-                  "153bg0x7ypla11pq51jmsgzfjklwwnrq56xgpbfhk1j16xwz9hyf"))
+                  "1r8ncx25xmxicgciyv5przp68y8qgy40fm10ba55awvql4xcm0yk"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
+      (home-page "https://github.com/takaxp/org-tree-slide")
       (synopsis "Presentation tool for org-mode")
       (description
        "Org-tree-slide provides a slideshow mode to view org-mode files.  Use
@@ -11007,12 +11168,13 @@ to with quicklink-style selections.")
     (version "0.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://stable.melpa.org/packages/deft-"
-                           version ".el"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jrblevin/deft.git")
+             (commit (string-append "v" version))))
        (sha256
         (base32
-         "1vb9cjxskc7c0yyf9pvxy1fzypg1vrcgwnjz0m3hslinsgdyig58"))))
+         "0z7cilgiz6krvl5h2z72hkch43qxmypb0k6p5vxn5lx1p6v0mrf2"))))
     (build-system emacs-build-system)
     (home-page "https://jblevins.org/projects/deft/")
     (synopsis "Quickly browse, filter, and edit plain text notes")
@@ -11065,25 +11227,27 @@ region of the buffer, while the latter works on rectangular selections.")
     (license license:gpl3+)))
 
 (define-public emacs-emmet-mode
-  (package
-    (name "emacs-emmet-mode")
-    (version "1.0.8")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/smihica/emmet-mode.git")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1dsa85bk33j90h1ypaz1ylqh9yp2xvlga237h3kwa5y3sb0d5ydi"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/smihica/emmet-mode")
-    (synopsis "Unofficial Emmet's support for Emacs")
-    (description
-     "Unfold CSS-selector-like expressions to markup.  It is intended to be
+  (let ((commit "1acb821e0142136344ccf40c1e5fb664d7db2e70")
+        (revision "1"))
+    (package
+      (name "emacs-emmet-mode")
+      (version (git-version "1.0.8" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/smihica/emmet-mode.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1p25h191bm0h5b3w5apg7wks51k7pb7h4dlww4jbl9ri4d33fzcl"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/smihica/emmet-mode")
+      (synopsis "Unofficial Emmet's support for Emacs")
+      (description
+       "Unfold CSS-selector-like expressions to markup.  It is intended to be
 used with SGML-like languages: XML, HTML, XHTML, XSL, etc.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-ergoemacs-mode
   (let ((commit "3ce23bba3cb50562693860f87f3528c471d603ba")
@@ -11340,31 +11504,33 @@ object @code{nil} corresponds 1:1 with @code{NULL} in the database.")
     (license license:gpl3+)))
 
 (define-public emacs-closql
-  (package
-    (name "emacs-closql")
-    (version "1.0.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/emacscollective/closql.git")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1xhpfjjkjqfc1k2rj77cscclz5r7gpvv3hi202x178vdcpipjwar"))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-emacsql" ,emacs-emacsql)))
-    (home-page "https://github.com/emacscollective/closql")
-    (synopsis "Store EIEIO objects using EmacSQL")
-    (description
-     "This package allows to store uniform EIEIO objects in an EmacSQL
+  ;; Take a commit newer than 1.0.0 release because of Emacs upgrade to 26.3.
+  (let ((commit "70b98dbae53611d10a461d9b4a6f71086910dcef"))
+    (package
+      (name "emacs-closql")
+      (version (git-version "1.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacscollective/closql.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1wvhrihg663f61yzc7f0vha2abjdnlwbk0gjcwakdfk1bhwf5ikh"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-emacsql" ,emacs-emacsql)))
+      (home-page "https://github.com/emacscollective/closql")
+      (synopsis "Store EIEIO objects using EmacSQL")
+      (description
+       "This package allows to store uniform EIEIO objects in an EmacSQL
 database.  SQLite is used as backend.  This library imposes some restrictions
 on what kind of objects can be stored; it isn't intended to store arbitrary
 objects.  All objects have to share a common superclass and subclasses cannot
 add any additional instance slots.")
-    (license license:gpl3)))
+      (license license:gpl3))))
 
 (define-public emacs-epkg
   ;; The release version is to old for the current database scheme.
@@ -11602,8 +11768,8 @@ as well as functions for navigating between these headings.")
 
 (define-public emacs-org-super-agenda
   ;; emacs-org-sidebar depends on a newer commit than the latest release version.
-  (let ((commit "f0ee7ed9766d352d16a787707d35695b48cbf153")
-        (revision "2"))
+  (let ((commit "a87ca11fbbe72ab6c1c4c3b55ae9e1e93ebfb8ba")
+        (revision "3"))
     (package
       (name "emacs-org-super-agenda")
       (version (git-version "1.1.1" revision commit))
@@ -11615,7 +11781,7 @@ as well as functions for navigating between these headings.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1b1qi96x83acv2frl94i4frx46i82vipaa8mfwpzyj2gyq2bq5zf"))))
+                  "08b7babdaqblb6jff57an4kbcxk6fkhf668620fipfjgbsnqv3ff"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-org" ,emacs-org)
@@ -11737,34 +11903,50 @@ according to a parsing expression grammar.")
     (license license:gpl3+)))
 
 (define-public emacs-org-ql
-  (package
-    (name "emacs-org-ql")
-    (version "0.2.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/alphapapa/org-ql")
-                    (commit version)))
-              (sha256
-               (base32
-                "1xyabg9fhpip6426za6wjrn0msnaf10c5fzzaawwagk7zmjf9b48"))
-              (file-name (git-file-name name version))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-s" ,emacs-s)
-       ("emacs-ts" ,emacs-ts)
-       ("emacs-org" ,emacs-org)
-       ("emacs-dash" ,emacs-dash)))
-    (native-inputs
-     `(("emacs-buttercup" ,emacs-buttercup)))
-    (arguments
-     `(#:tests? #t
-       #:test-command '("buttercup" "-L" ".")))
-    (home-page "https://github.com/alphapapa/org-ql/")
-    (synopsis "Query language for Org buffers")
-    (description "This package provides a Lispy query language for Org
+  (let ((commit "949a06c3ab50482b749fd2d4350837a197660d96")
+        (revision "3"))
+    (package
+      (name "emacs-org-ql")
+      (version (git-version "0.3.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alphapapa/org-ql")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0apcg63xm0242mjgsgw0jrcda4p4iqj7fy3sgh0p7khi4hrs5ch0"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)
+         ("emacs-f" ,emacs-f)
+         ("emacs-ov" ,emacs-ov)
+         ("emacs-peg" ,emacs-peg)
+         ("emacs-org-super-agenda" ,emacs-org-super-agenda)
+         ("emacs-ts" ,emacs-ts)
+         ("emacs-org" ,emacs-org)
+         ("emacs-helm" ,emacs-helm)
+         ("emacs-helm-org" ,emacs-helm-org)
+         ("emacs-dash" ,emacs-dash)))
+      (native-inputs
+       `(("emacs-buttercup" ,emacs-buttercup)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'require-helm
+             (lambda _
+               (substitute* "helm-org-ql.el"
+                 (("^;;;; Requirements")
+                  ";;;; Requirements\n(require 'helm)\n(require 'helm-org)"))
+               #t)))
+         #:tests? #t
+         #:test-command '("buttercup" "-L" ".")))
+      (home-page "https://github.com/alphapapa/org-ql/")
+      (synopsis "Query language for Org buffers")
+      (description "This package provides a Lispy query language for Org
 files, allowing for actions to be performed based on search criteria.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-org-auto-expand
   (let ((commit "4938d5f6460e2f8f051ba9ac000b291bfa43ef62")
@@ -13508,8 +13690,8 @@ perform regression test for packages that provide font-lock rules.")
       (license license:gpl3+))))
 
 (define-public emacs-racket-mode
-  (let ((commit "5300aa004f08535c3fac99f1af78462f129aca81")
-        (revision "3"))
+  (let ((commit "2a9a102a097d04fbcd2a443fec84078036c2e277")
+        (revision "4"))
     (package
       (name "emacs-racket-mode")
       (version (git-version "0.0.2" revision commit))
@@ -13522,7 +13704,7 @@ perform regression test for packages that provide font-lock rules.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1gkpm4fl1ybsm9qqgrkwyjbd9znddy438x266k27fs90lkxrfray"))))
+           "1n71dxxh62jixq20b5haapv651dxc0zyrxpl1d0yqsg8ncp726bl"))))
       (build-system emacs-build-system)
       (arguments
        `(#:include '("\\.el$" "\\.rkt$")))
@@ -14599,45 +14781,46 @@ try completing.  See @code{fish-completion-fallback-on-bash-p}.")
     (license license:gpl3+)))
 
 (define-public emacs-gif-screencast
-  (let ((commit "12b25442b97b84abae74ecb5190a9d14ff7cfe5a"))
+  (let ((commit "248d1e158405e6cba2c65ecaed40e2c59b089cd8")
+        (revision "2"))
     (package
       (name "emacs-gif-screencast")
-      (version (git-version "20180616" "1" commit))
+      (version (git-version "1.0" revision commit))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://gitlab.com/Ambrevar/emacs-gif-screencast/"
-               "repository/archive.tar.gz?ref="
-               commit))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/Ambrevar/emacs-gif-screencast.git")
+               (commit commit)))
          (sha256
           (base32
-           "0lc457i78xjkn5idr2aaiadkh76zcsksj84z0qh80a9y775syrgh"))))
+           "19xqi5mgalnnhb4hw0fh7py2s2dllldx1xxbhwhknkdpifai8hl8"))))
       (build-system emacs-build-system)
       (inputs
        `(("scrot" ,scrot)
          ("imagemagick" ,imagemagick)
          ("gifsicle" ,gifsicle)))
-     (arguments
-      `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((scrot (assoc-ref inputs "scrot"))
-                   (imagemagick (assoc-ref inputs "imagemagick"))
-                   (gifsicle (assoc-ref inputs "gifsicle")))
-               ;; Specify the absolute file names of the various
-               ;; programs so that everything works out-of-the-box.
-               (emacs-substitute-variables
-                   "gif-screencast.el"
-                 ("gif-screencast-program"
-                  (string-append scrot "/bin/scrot"))
-                 ("gif-screencast-convert-program"
-                  (string-append imagemagick "/bin/convert"))
-                 ("gif-screencast-cropping-program"
-                  (string-append imagemagick "/bin/mogrify"))
-                 ("gif-screencast-optimize-program"
-                  (string-append gifsicle "/bin/gifsicle")))))))))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((scrot (assoc-ref inputs "scrot"))
+                     (imagemagick (assoc-ref inputs "imagemagick"))
+                     (gifsicle (assoc-ref inputs "gifsicle")))
+                 (make-file-writable "gif-screencast.el")
+                 ;; Specify the absolute file names of the various
+                 ;; programs so that everything works out-of-the-box.
+                 (emacs-substitute-variables
+                     "gif-screencast.el"
+                   ("gif-screencast-program"
+                    (string-append scrot "/bin/scrot"))
+                   ("gif-screencast-convert-program"
+                    (string-append imagemagick "/bin/convert"))
+                   ("gif-screencast-cropping-program"
+                    (string-append imagemagick "/bin/mogrify"))
+                   ("gif-screencast-optimize-program"
+                    (string-append gifsicle "/bin/gifsicle")))))))))
       (home-page
        "https://gitlab.com/Ambrevar/emacs-gif-screencast")
       (synopsis "One-frame-per-action GIF recording")
@@ -15203,8 +15386,8 @@ Pandoc, the document-conversion tool.")
     (license license:bsd-3)))
 
 (define-public emacs-ccls
-  (let ((commit "9061ebbf9d5ec3ee7e88dbd226c77017cf0447b1")
-        (revision "2"))
+  (let ((commit "b1acc336f27d8a3bbc750c2dc3be915a4ac1afea")
+        (revision "3"))
     (package
       (name "emacs-ccls")
       (version (git-version "0.1" revision commit))
@@ -15217,7 +15400,7 @@ Pandoc, the document-conversion tool.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "106jh25ivq0ydiz37p51agk5zbpai7fv91pwn6dpqzsq5g281ls7"))))
+           "1qgfxc5d1hb32ks1fxpx7agpw7dvnkz99wydlflc9fqq75g8v142"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -15546,11 +15729,11 @@ few (like NOTE).")
 
 (define-public emacs-git-annex
   ;; Unreleased version has a fontification fix.
-  (let ((commit "ebdb44aef1883f1b2b8058e05d30fb9315b03707")
-        (revision "1"))
+  (let ((commit "1324d3f23c534fe79391a2c256bb8803054e383b")
+        (revision "2"))
     (package
       (name "emacs-git-annex")
-      (version (string-append "1.1-" revision "." (string-take commit 8)))
+      (version (git-version "1.1" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -15560,7 +15743,7 @@ few (like NOTE).")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1mzv40gj7k10h7h5s43my8msgzjpj680qprqa9pp8nbyhl49v3wh"))))
+           "1lfky2nsrlndlbvk6vwbswnvbvkz1sxgg0n3r5q6xykdkjym0lrh"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/jwiegley/git-annex-el")
       (synopsis "Emacs integration for git-annex")
@@ -16196,9 +16379,45 @@ other frame parameters.")
       (home-page "https://github.com/bookest/arduino-mode")
       (license license:gpl3+))))
 
+(define-public emacs-annalist
+  (let ((commit "e0601539c9ac0171a684ea3ff6266d215d1d08e6")
+        (revision "1"))
+    (package
+      (name "emacs-annalist")
+      (version (git-version "1.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/noctuid/annalist.el.git")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "10bmimdzpi6cql4sb2hbgdvrza83xbac50bi9qng4z662pfnlaam"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (native-inputs
+       `(("emacs-buttercup" ,emacs-buttercup)
+         ("emacs-lispy" ,emacs-lispy)
+         ("emacs-evil" ,emacs-evil)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'fix-makefile
+             (lambda _
+               (substitute* "Makefile"
+                 (("cask exec ") ""))
+               #t)))
+         #:tests? #t
+         #:test-command '("make" "test")))
+      (home-page "https://github.com/noctuid/annalist.el")
+      (synopsis "Record and display information with Org headings and tables")
+      (description "This package allows for keybindings, settings, hooks, and
+advice to be recorded and displayed.")
+      (license license:gpl3+))))
+
 (define-public emacs-general
-  (let ((commit "f032c3a77079487d0ea563b17ee3e5b2fb084611")
-        (revision "2"))
+  (let ((commit "f38fb2294bd29261374b772f765730f2fa168b3e")
+        (revision "3"))
     (package
       (name "emacs-general")
       (version (git-version "0" revision commit))
@@ -16209,9 +16428,24 @@ other frame parameters.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0lgh5z17ag5wvvnqwagvam29cp1n1vd50amn6df02xln80bsbllx"))
+                  "1aqi5axkwfng6rm52sblf738c7rffp10sqs69dvkh2fv3ps8q28i"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
+      (native-inputs
+       `(("emacs-buttercup" ,emacs-buttercup)
+         ("emacs-evil" ,emacs-evil)
+         ("emacs-which-key" ,emacs-which-key)
+         ("emacs-use-package" ,emacs-use-package)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'fix-makefile
+             (lambda _
+               (substitute* "Makefile"
+                 (("cask exec ") ""))
+               #t)))
+         #:tests? #t
+         #:test-command '("make" "test")))
       (home-page "https://github.com/noctuid/general.el")
       (synopsis "More convenient key definitions in emacs")
       (description "@code{general.el} provides a more convenient method for
@@ -17062,6 +17296,85 @@ command\", but because it always involves at least two commands (a prefix and
 a suffix) we prefer to call it just a \"transient\".")
       (license license:gpl3+))))
 
+(define-public emacs-forge
+  (let ((commit "a6721c071226ae8da6852e9330f2bdcba92a4577"))
+    (package
+      (name "emacs-forge")
+      (version (git-version "0.1.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/magit/forge.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1gzr1di29a9szkzm6kjznq7c8md71cm5761pznf08nmmk63dl3zm"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("texinfo" ,texinfo)
+         ("emacs" ,emacs-minimal)))
+      (propagated-inputs
+       `(("emacs-closql" ,emacs-closql)
+         ("emacs-dash" ,emacs-dash)
+         ("emacs-emacsql-sqlite" ,emacs-emacsql)
+         ("emacs-ghub" ,emacs-ghub)
+         ("emacs-let-alist" ,emacs-let-alist)
+         ("emacs-magit" ,emacs-magit)
+         ("emacs-markdown-mode" ,emacs-markdown-mode)
+         ("emacs-transient" ,emacs-transient)))
+      (arguments
+       `(#:tests? #f ;no tests
+         #:modules ((srfi srfi-26)
+                    (guix build gnu-build-system)
+                    ((guix build emacs-build-system) #:prefix emacs:)
+                    (guix build utils)
+                    (guix build emacs-utils))
+         #:imported-modules (,@%gnu-build-system-modules
+                             (guix build emacs-build-system)
+                             (guix build emacs-utils))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'install)
+           (add-after 'unpack 'delete-doc-targets
+             (lambda _
+               (substitute* "./Makefile"
+                 (("lisp docs") "lisp"))))
+           (add-after 'delete-doc-targets 'emacs-set-emacs-load-path
+             (assoc-ref emacs:%standard-phases 'set-emacs-load-path))
+           (add-after 'emacs-set-emacs-load-path 'chdir-lisp
+             (lambda _
+               (chdir "lisp")))
+           (add-after 'chdir-lisp 'emacs-install
+             (assoc-ref emacs:%standard-phases 'install))
+           (add-after 'emacs-install 'emacs-make-autoloads
+             (assoc-ref emacs:%standard-phases 'make-autoloads))
+           (add-after 'build 'install-elc
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (el-dir (string-append
+                               out "/share/emacs/site-lisp/guix.d/forge-"
+                               ,version)))
+                 (for-each (cut install-file <> el-dir)
+                           (find-files "." "\\.elc"))
+                 #t)))
+           (add-after 'install-elc 'install-doc
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (info (string-append out "/share/info")))
+                 (with-directory-excursion "../docs"
+                   (invoke "makeinfo" "forge.texi")
+                   (install-file "forge.info" info)
+                   #t)))))))
+      (home-page "https://github.com/magit/ghub/")
+      (synopsis "Access Git forges from Magit")
+      (description
+       "Work with Git forges, such as Github and Gitlab, from the comfort of
+Magit and the rest of Emacs.")
+      (license license:gpl3+))))
+
 (define-public emacs-matcha
   (let ((commit "c7df5cf5cdac9ae369e241342389ccda0205eab9"))
     (package
@@ -18742,6 +19055,34 @@ JIRA issue servers.")
 keybindings for skipping from host section to host section.")
       (license license:gpl3+))))
 
+(define-public emacs-ssh-agency
+  (package
+    (name "emacs-ssh-agency")
+    (version "0.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/magit/ssh-agency.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0895n7bss4wdydic1gflr03f2cwdyqywl16gvb599lpn288jhwvz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("dash" ,emacs-dash)))
+    (home-page "https://github.com/magit/ssh-agency")
+    (synopsis "Manage @code{ssh-agent} from Emacs")
+    (description
+     "This package provides functions to startup @code{ssh-agent}, set the
+needed environment variables in Emacs, and prompt for passphrases from within
+Emacs so that pushes and pulls from @code{magit} will not require entering any
+passphrase.
+
+It can also be useful on Unix-like platforms to delay having to enter your
+passphrase until the first time you push to a remote.")
+    (license license:gpl3+)))
+
 (define-public emacs-tao-theme
   (let ((commit "c5107fbe7e752f4e58c2d2147ff18a1ebb12937c")
         (revision "0"))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 5a3577350d..6c6f0e4567 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Jesse John Gildersleve <jessejohngildersleve@zohomail.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -49,12 +50,13 @@
   #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages gnome) ; for librsvg
+  #:use-module (gnu packages gnome)     ; for librsvg
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages linux) ; alsa-lib
+  #:use-module (gnu packages linux)     ; alsa-lib
+  #:use-module (gnu packages mail)      ; for mailutils
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages texinfo)
@@ -146,6 +148,10 @@
      `(("gnutls" ,gnutls)
        ("ncurses" ,ncurses)
 
+       ;; Avoid Emacs's limited movemail substitute that retrieves POP3 email
+       ;; only via insecure channels.  This is not needed for (modern) IMAP.
+       ("mailutils" ,mailutils)
+
        ;; TODO: Add the optional dependencies.
        ("libx11" ,libx11)
        ("gtk+" ,gtk+)
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 8384f4c0ed..1da6d2aea2 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -67,7 +67,7 @@
 (define-public efl
   (package
     (name "efl")
-    (version "1.23.0")
+    (version "1.23.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -75,7 +75,7 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "1iawq5k1ggas41h3vrwc0y98hf83vr0vh3phfgw22iij3cb2b5nd"))))
+                "0q9g4j7k10s1a8rv2ca9v9lydh7ml3zsrqvgncc4qhvdl76208nn"))))
     (build-system meson-build-system)
     (native-inputs
      `(("check" ,check)
@@ -365,7 +365,7 @@ embedded systems.")
 (define-public python-efl
   (package
     (name "python-efl")
-    (version "1.22.0")
+    (version "1.23.0")
     (source
       (origin
         (method url-fetch)
@@ -373,7 +373,7 @@ embedded systems.")
                             "python/python-efl-" version ".tar.xz"))
         (sha256
          (base32
-          "1qhy63c3fs2bxkx2np5z14hyxbr12ii030crsjnhpbyw3mic0s63"))
+          "16yn6a1b9167nfmryyi44ma40m20ansfpwgrvqzfvwix7qaz9pib"))
         (modules '((guix build utils)))
         ;; Remove files generated by Cython
         (snippet
diff --git a/gnu/packages/fabric-management.scm b/gnu/packages/fabric-management.scm
index 33e43a9e55..83520f1a74 100644
--- a/gnu/packages/fabric-management.scm
+++ b/gnu/packages/fabric-management.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Dave Love <fx@gnu.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -43,7 +43,7 @@
 (define-public opensm
   (package
     (name "opensm")
-    (version "3.3.21")
+    (version "3.3.22")
     (source
      (origin
        (method url-fetch)
@@ -51,7 +51,7 @@
         (string-append "https://github.com/linux-rdma/opensm/releases/download/"
                        version "/opensm-" version ".tar.gz"))
        (sha256
-        (base32 "0j4vp118w1l47vs4had46ynybklyacxjlya0r15jg0y01l4j9l2h"))))
+        (base32 "19scwwpwqhqsyq4hbr5cflcmypss828lalxxd36yby7mbimca38y"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 3a7e3284a9..85bfd8dd38 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -316,7 +316,6 @@ network.  LIBNFS offers three different APIs, for different use :
                  (install-file "apfs-dump-quick" bin)
                  (install-file "apfs-fuse" bin)
                  (install-file "libapfs.a" lib)
-                 (install-file "../source/LICENSE" doc)
                  #t))))))
       (inputs
        `(("bzip2" ,bzip2)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index ab3d028214..3aa88337c8 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
+;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1414,3 +1415,26 @@ This package also contains two related utilities:
 their MIME type.
 @end itemize")
     (license license:perl-license)))
+
+(define-public uchardet
+  (package
+    (name "uchardet")
+    (version "0.0.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://www.freedesktop.org/software/"
+                            name "/releases/" name "-" version ".tar.xz"))
+        (sha256
+          (base32 "0q9c02b6nmw41yfsiqsnphgc3f0yg3fj31wkccp47cmwvy634lc3"))))
+    (build-system cmake-build-system)
+    (home-page "https://www.freedesktop.org/wiki/Software/uchardet/")
+    (synopsis "Encoding detector library")
+    (description "uchardet is an encoding detector library, which takes a
+sequence of bytes in an unknown character encoding without any additional
+information, and attempts to determine the encoding of the text.  Returned
+encoding names are iconv-compatible.")
+
+    ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
+    ;; combination is GPL 2.0+.
+    (license license:gpl2+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index d68f6aa451..2ed505bbc4 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2435,7 +2435,7 @@ falling, themeable graphics and sounds, and replays.")
 (define-public wesnoth
   (package
     (name "wesnoth")
-    (version "1.14.7")
+    (version "1.14.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -2444,10 +2444,23 @@ falling, themeable graphics and sounds, and replays.")
                                   "wesnoth-" version ".tar.bz2"))
               (sha256
                (base32
-                "0j2yvkcggj5k0r2cqk8ndnj77m37a00srfd9qg7pdpqffbinqpj7"))))
+                "1mhdrlflxxyknf54lwdbvs7fazlc1scf7z6vxxa3j746fks533ga"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f))                    ; no check target
+     `(#:tests? #f                      ;no check target
+       #:phases (modify-phases %standard-phases
+                  (add-before 'configure 'treat-boost-as-system-header
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((boost (assoc-ref inputs "boost")))
+                        ;; Ensure Boost is treated as "system headers" to
+                        ;; pacify compiler warnings induced by Boost headers.
+                        (for-each (lambda (variable)
+                                    (setenv variable
+                                            (string-append boost "/include:"
+                                                           (or (getenv variable)
+                                                               ""))))
+                                  '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
+                        #t))))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)))
@@ -6815,13 +6828,12 @@ game field is extended to 4D space, which has to filled up by the gamer with
        ("innoextract" ,innoextract)))
     (home-page "https://arx-libertatis.org/")
     (synopsis "Port of Arx Fatalis, a first-person role-playing game")
-    (description "Arx Libertatis is a cross-platform, open source port of Arx
-Fatalis, a 2002 first-person role-playing game / dungeon crawler developed by
-Arkane Studios.  This port however does not include the game data, so you need
-to obtain a copy of the original Arx Fatalis or its demo to play Arx
-Libertatis.  Arx Fatalis features crafting, melee and ranged combat, as well
-as a unique casting system where the player draws runes in real time to effect
-the desired spell.")
+    (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
+first-person role-playing game / dungeon crawler developed by Arkane Studios.
+This port however does not include the game data, so you need to obtain a copy
+of the original Arx Fatalis or its demo to play Arx Libertatis.  Arx Fatalis
+features crafting, melee and ranged combat, as well as a unique casting system
+where the player draws runes in real time to effect the desired spell.")
     (license license:gpl3+)))
 
 (define-public edgar
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 41d66fc130..2bcf05e41b 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -523,14 +523,14 @@ It also includes runtime support libraries for these languages.")))
 (define-public gcc-9
   (package
    (inherit gcc-8)
-   (version "9.1.0")
+   (version "9.2.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gcc/gcc-"
                                 version "/gcc-" version ".tar.xz"))
             (sha256
              (base32
-              "1817nc2bqdc251k0lpc51cimna7v68xjrnvqzvc50q3ax4s6i9kr"))
+              "01mj3yk7z49i49168hg2cg7qs4bsccrrnv7pjmbdlf8j2a7z0vpa"))
             (patches (search-patches "gcc-9-strmov-store-file-names.patch"
                                      "gcc-9-asan-fix-limits-include.patch"
                                      "gcc-5.0-libvtv-runpath.patch"))))))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 3c2f346837..c558d9fcb6 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -550,7 +550,7 @@ by GDBus included in Glib.")
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("m4" ,m4)))
-    (home-page "http://libsigc.sourceforge.net/")
+    (home-page "https://libsigcplusplus.github.io/libsigcplusplus/")
     (synopsis "Type-safe callback system for standard C++")
     (description
      "Libsigc++ implements a type-safe callback system for standard C++.  It
@@ -839,7 +839,7 @@ programming language.  It also contains the utility
 (define-public appstream-glib
   (package
     (name "appstream-glib")
-    (version "0.7.15")
+    (version "0.7.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://people.freedesktop.org/~hughsient/"
@@ -847,7 +847,7 @@ programming language.  It also contains the utility
                                   "appstream-glib-" version ".tar.xz"))
               (sha256
                (base32
-                "17ram4j3cvs78si0gi1labarr91pw68zn8kam41cqbvlwdyr89vy"))))
+                "14jr1psx5kxywdprgbqn79w309yz8lrqlsq7288hfrf87gbr1wh4"))))
     (build-system meson-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d8b73e25d9..7f16b17499 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -1397,7 +1397,7 @@ library.")
 (define-public librsvg-next
   (package
     (name "librsvg")
-    (version "2.44.12")
+    (version "2.46.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1405,7 +1405,7 @@ library.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1h3qnqhr0l7pd2bxg69ki6ckl4srdwgr471dpp4jq9i4784hp0v6"))))
+                "1la3az2af2ccm6rp86b6wh0kq7kxzl4n8pli5qxhyic1rd91xj4n"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1423,6 +1423,7 @@ library.")
            (lambda _
              (for-each patch-shebang '("tap-driver.sh" "tap-test"))
              (patch-/usr/bin/file "configure")
+             (patch-makefile-SHELL "po/Makefile.in.in")
              #t))
          (add-before 'configure 'pre-configure
            (lambda* (#:key inputs #:allow-other-keys)
@@ -1460,9 +1461,9 @@ library.")
              #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ;; This is the minimum supported Rust version in Librsvg 2.44.
-       ("rust" ,rust-1.27)
-       ("cargo" ,rust-1.27 "cargo")
+       ;; This is the minimum supported Rust version in Librsvg 2.46.
+       ("rust" ,rust-1.34)
+       ("cargo" ,rust-1.34 "cargo")
        ("vala" ,vala)
        ("glib" ,glib "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
@@ -2428,7 +2429,10 @@ selection and URL hints.")))
                 "10jya3jyrm18nbw3v410gbkc7677bqamax44pzgd3j15randn76d"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     '(#:phases
+     ;; Disable -Werror and such, to avoid build failures on compilation
+     ;; warnings.
+     '(#:configure-flags '("--enable-compile-warnings=minimum")
+       #:phases
        (modify-phases %standard-phases
          (add-before 'install 'skip-gtk-update-icon-cache
            (lambda _
@@ -2687,7 +2691,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.66.2")
+    (version "2.68.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2695,7 +2699,7 @@ libxml to ease remote use of the RESTful API.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "0amfw1yvy1kjrg41rfh2vvrw5gkwnyckqbw1fab50hm6xc1acbmx"))))
+                "0crr9qprmacr626fx83cx81ggk85zsgxr4mn577kpzj6m40k1bai"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -2703,7 +2707,7 @@ libxml to ease remote use of the RESTful API.")
                   (guix build meson-build-system)
                   (ice-9 popen))
 
-       #:configure-flags '("-Ddoc=true")
+       #:configure-flags '("-Dgtk_doc=true")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'adjust-tests
@@ -2713,6 +2717,16 @@ libxml to ease remote use of the RESTful API.")
              (substitute* "tests/socket-test.c"
                ((".*/sockets/unconnected.*") ""))
 
+             ;; These fail because "subdomain.localhost" does not resolve in
+             ;; the build environment.
+             (substitute* "tests/hsts-test.c"
+               ((".*/hsts/basic.*") "")
+               ((".*/hsts/subdomains.*") "")
+               ((".*/hsts/superdomain.*") "")
+               ((".*/hsts/utf8-address.*") ""))
+             (substitute* "tests/hsts-db-test.c"
+               ((".*/hsts-db/subdomains.*") ""))
+
              ;; Generate a self-signed certificate that has "localhost" as its
              ;; 'dnsName'.  Failing to do that, and starting with GnuTLS
              ;; 3.5.12, tests such as "ssl-tests" fail:
@@ -2781,10 +2795,12 @@ libxml to ease remote use of the RESTful API.")
        ("httpd" ,httpd)))
     (propagated-inputs
      ;; libsoup-2.4.pc refers to all these.
-     `(("glib" ,glib)
+     `(("brotli" ,google-brotli)
+       ("glib" ,glib)
        ("libpsl" ,libpsl)
        ("libxml2" ,libxml2)
-       ("sqlite" ,sqlite)))
+       ("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
     (inputs
      `(("glib-networking" ,glib-networking)
        ("mit-krb5" ,mit-krb5)))
@@ -3392,21 +3408,21 @@ which are easy to play with the aid of a mouse.")
 (define-public amtk
   (package
     (name "amtk")
-    (version "5.0.0")
+    (version "5.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/amtk/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "amtk-" version ".tar.xz"))
               (sha256
                (base32
-                "1zriix7bdwcg0868mfc7jy6zbwjwdmjwbh0ah6dbddrhiabrda8j"))))
+                "09yy95w1s83c43mh9vha1jbb780yighf5pd2j0ygjmc68sjg871d"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-gtk-doc")))
     (native-inputs
      `(("gobject-introspection" ,gobject-introspection)
-       ("glib:bin" ,glib "bin") ; for glib-mkenums
+       ("glib:bin" ,glib "bin")         ; for glib-mkenums
        ("gtk-doc" ,gtk-doc)
        ("pkg-config" ,pkg-config)))
     (inputs
@@ -4131,7 +4147,7 @@ supports image conversion, rotation, and slideshows.")
   ;; 'XDG_DATA_DIRS' appropriately set.
   (package
     (name "eog-plugins")
-    (version "3.26.3")
+    (version "3.26.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/eog-plugins/"
@@ -4139,7 +4155,7 @@ supports image conversion, rotation, and slideshows.")
                                   "eog-plugins-" version ".tar.xz"))
               (sha256
                (base32
-                "06fnjs2p18ad5vk07z685cx26sc7d3azywss00w9xvz794b2i1g3"))))
+                "0pd7fqa4ciy5844k5s1c6rlsqkk8pxd8cchxjcjhxlsngm9lynnx"))))
     (build-system gnu-build-system)
     (home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins")
     (synopsis "Extensions for the Eye of GNOME image viewer")
@@ -4623,6 +4639,17 @@ lifting is done by packages like yelp-xsl and itstool.  This package just
 wraps things up in a developer-friendly way.")
     (license license:gpl2+)))
 
+(define-public yelp-tools/fixed
+  ;; This variant fixes a python-libxml2 crash when processing UTF-8
+  ;; sequences: <https://bugs.gnu.org/37468>.  TODO: Remove this in
+  ;; the next rebuild cycle.
+  (hidden-package
+   (package/inherit
+    yelp-tools
+    (propagated-inputs
+     `(("itstool" ,itstool/fixed)
+       ,@(alist-delete "itstool" (package-propagated-inputs yelp-tools)))))))
+
 (define-public libgee
   (package
     (name "libgee")
@@ -4695,15 +4722,15 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.30.4")
+    (version "0.30.7")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/shotwell/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "shotwell-" version ".tar.xz"))
               (sha256
                (base32
-                "1yiz3j0y2yg6985y3alb3hpkfbv68n8ibys5gpwcjdhmhf3czg5p"))))
+                "1m9i8r4gyd2hzlxjjwfyck4kz7gdg2vz2k6l6d0ga9hdfq2l4p9l"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t))
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 4ee7ed6634..06e5f6782f 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -111,6 +111,7 @@ Daemon and possibly more in the future.")
   (package
     (name "libgcrypt")
     (version "1.8.4")
+    (replacement libgcrypt-1.8.5)
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
@@ -143,6 +144,18 @@ generation.")
     (properties '((ftp-server . "ftp.gnupg.org")
                   (ftp-directory . "/gcrypt/libgcrypt")))))
 
+(define-public libgcrypt-1.8.5
+  (package
+    (inherit libgcrypt)
+    (version "1.8.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1hvsazms1bfd769q0ngl0r9g5i4m9mpz9jmvvrdzyzk3rfa2ljiv"))))))
+
 (define-public libassuan
   (package
     (name "libassuan")
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
index f896ddae35..040793b4f6 100644
--- a/gnu/packages/gpodder.scm
+++ b/gnu/packages/gpodder.scm
@@ -37,7 +37,7 @@
 (define-public gpodder
   (package
     (name "gpodder")
-    (version "3.10.10")
+    (version "3.10.11")
     (source
      (origin
        (method git-fetch)
@@ -46,7 +46,7 @@
              (commit version)))
        (sha256
         (base32
-         "1phgd3xly6ddrxpx5glgfs1ya4xq2qbcx5d9l3d6i4dlhji1dmja"))
+         "15f5z3cnch9lpzbz73l4wjykv9n74y8djz5db53la2ql4ihaxfz9"))
        (file-name (git-file-name name version))))
     (build-system python-build-system)
     (native-inputs
diff --git a/gnu/packages/installers.scm b/gnu/packages/installers.scm
new file mode 100644
index 0000000000..c987254d61
--- /dev/null
+++ b/gnu/packages/installers.scm
@@ -0,0 +1,116 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Carl Dong <contact@carldong.me>
+;;;
+;;; 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 installers)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system scons)
+  #:use-module (guix utils))
+
+(define (make-nsis machine target-arch nsis-target-type)
+  (let ((triplet (string-append machine "-" "w64-mingw32")))
+    (package
+      (name (string-append "nsis-" machine))
+      (version "3.04")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "http://prdownloads.sourceforge.net/nsis/nsis-"
+                                    version "-src.tar.bz2"))
+                (sha256
+                 (base32
+                  "1xgllk2mk36ll2509hd31mfq6blgncmdzmwxj3ymrwshdh23d5b0"))
+                (patches (search-patches "nsis-env-passthru.patch"))))
+      (build-system scons-build-system)
+      (native-inputs `(("xgcc" ,(cross-gcc triplet #:libc (cross-libc triplet)))
+                       ("xbinutils" ,(cross-binutils triplet))
+                       ("mingw-w64" ,(cross-libc triplet))))
+      (inputs `(("zlib" ,zlib)))
+      (arguments
+       `(#:scons ,scons-python2
+         #:modules ((srfi srfi-1)
+                    (guix build utils)
+                    (guix build scons-build-system))
+         #:tests? #f
+         #:scons-flags `("UNICODE=yes"
+                         "SKIPUTILS=MakeLangId,Makensisw,NSIS Menu,SubStart,zip2exe"
+                         "SKIPDOC=COPYING"
+                         "STRIP_CP=no"
+                         ,(string-append "PREFIX=" %output)
+                         ,(string-append "TARGET_ARCH=" ,target-arch)
+                         ,(string-append "XGCC_W32_PREFIX=" ,triplet "-")
+                         ,(string-append "PREFIX_PLUGINAPI_INC=" (assoc-ref %build-inputs "mingw-w64") "/include/")
+                         ,(string-append "PREFIX_PLUGINAPI_LIB=" (assoc-ref %build-inputs "mingw-w64") "/lib/"))
+         #:build-targets '("makensis"
+                           "stubs"
+                           "plugins"
+                           "utils")
+         #:install-targets '("install-stubs"
+                             "install-plugins"
+                             "install-data"
+                             "install-utils"
+                             "install-compiler"
+                             "install-conf")
+         #:phases (modify-phases %standard-phases
+                    (add-before 'build 'fix-env
+                      (lambda _
+                        (define* (filter-delimited-string delimited-string predicate #:optional (delimiter #\:))
+                          ;; Given a DELIMITED-STRING delimited by DELIMITER,
+                          ;; only keep items that satisfy PREDICATE
+                          (string-join
+                           (filter predicate (string-split delimited-string delimiter))
+                           (string delimiter)))
+                        (define (mingw-path? path)
+                          (string-prefix? (assoc-ref %build-inputs "mingw-w64") path))
+                        (for-each
+                         (lambda (env-name)
+                           (let ((env-val (getenv env-name)))
+                             ;; Remove all mingw-w64 paths from env vars meant
+                             ;; for native toolchain
+                             (setenv env-name
+                                     (filter-delimited-string env-val (negate mingw-path?)))
+                             ;; Add the removed paths back into
+                             ;; CROSS_-prefixed version of env vars
+                             (setenv (string-append "CROSS_" env-name)
+                                     (filter-delimited-string env-val mingw-path?))))
+                         '("CPLUS_INCLUDE_PATH" "LIBRARY_PATH" "C_INCLUDE_PATH"))))
+                    (add-before 'build 'fix-target-detection
+                      (lambda _
+                        ;; NSIS target detection is screwed up, manually
+                        ;; change it ourselves
+                        (substitute* "Source/build.cpp" (("m_target_type=TARGET_X86ANSI")
+                                                         (string-append "m_target_type=" ,nsis-target-type))))))))
+      (home-page "http://nsis.sourceforge.net/")
+      (synopsis "A professional open source system to create Windows installers")
+      (description
+       "NSIS (Nullsoft Scriptable Install System) is a professional open
+source system to create Windows installers. It is designed to be as small and
+flexible as possible and is therefore very suitable for internet
+distribution.")
+      (license (license:non-copyleft "file://COPYING"
+                                     "See COPYING in the distribution.")))))
+
+(define-public nsis-x86_64
+  (make-nsis "x86_64" "amd64" "TARGET_AMD64"))
+
+(define-public nsis-i686
+  (make-nsis "i686" "x86" "TARGET_X86UNICODE"))
diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm
index 7ec987b2a4..fbb4367ea5 100644
--- a/gnu/packages/jupyter.scm
+++ b/gnu/packages/jupyter.scm
@@ -118,9 +118,7 @@ launching and using Jupyter kernels.")
                   (replace 'install
                     (lambda* (#:key inputs outputs #:allow-other-keys)
                       (let* ((out (assoc-ref outputs "out"))
-                             (version ((@@ (guix build python-build-system)
-                                           get-python-version)
-                                       (assoc-ref inputs "python")))
+                             (version (python-version (assoc-ref inputs "python")))
                              (pydir (string-append out "/lib/python"
                                                    version "/site-packages/"
                                                    "jupyter_kernel_test")))
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index fbb153b1f2..d1a313187e 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -271,7 +271,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
 (define-public kodi
   (package
     (name "kodi")
-    (version "18.3")
+    (version "18.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -280,7 +280,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld"))
+                "1m0295czxabdcqyqf5m94av9d88pzhnzjvyfs1q07xqq82h313p7"))
               (patches (search-patches "kodi-skip-test-449.patch"
                                        "kodi-set-libcurl-ssl-parameters.patch"))
               (snippet
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 1d293c8239..fdd6ca661e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1090,7 +1090,7 @@ providing the system administrator with some help in common tasks.")
                   #t))))
     (build-system gnu-build-system)
     (outputs '("out"
-               "static"))      ; >2 MiB of static .a libraries
+               "static"))               ;>2 MiB of static .a libraries
     (arguments
      `(#:configure-flags (list "--disable-use-tty-group"
                                "--enable-fs-paths-default=/run/current-system/profile/sbin"
@@ -1102,45 +1102,42 @@ providing the system administrator with some help in common tasks.")
                                               (assoc-ref %outputs "out")
                                               "/etc/bash_completion.d"))
        #:phases (modify-phases %standard-phases
-                  (add-before
-                   'build 'set-umount-file-name
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Tell 'eject' the right file name of 'umount'.
-                     (let ((out (assoc-ref outputs "out")))
-                       (substitute* "sys-utils/eject.c"
-                         (("\"/bin/umount\"")
-                          (string-append "\"" out "/bin/umount\"")))
-                       #t)))
-                  (add-before
-                   'check 'pre-check
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
-                     (let ((out (assoc-ref outputs "out"))
-                           (net (assoc-ref inputs "net-base")))
-                       ;; Change the test to refer to the right file.
-                       (substitute* "tests/ts/misc/mcookie"
-                         (("/etc/services")
-                          (string-append net "/etc/services")))
-                       #t)))
-                  (add-after
-                   'install 'move-static-libraries
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     (let ((out    (assoc-ref outputs "out"))
-                           (static (assoc-ref outputs "static")))
-                       (mkdir-p (string-append static "/lib"))
-                       (with-directory-excursion out
-                         (for-each (lambda (file)
-                                     (rename-file file
-                                                  (string-append static "/"
-                                                                 file)))
-                                   (find-files "lib" "\\.a$"))
-
-                         ;; Remove references to the static library from the '.la'
-                         ;; files so that Libtool does the right thing when both
-                         ;; the shared and static library is available.
-                         (substitute* (find-files "lib" "\\.la$")
-                           (("old_library=.*") "old_library=''\n")))
-
-                       #t))))))
+                  (add-before 'build 'set-umount-file-name
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Tell 'eject' the right file name of 'umount'.
+                      (let ((out (assoc-ref outputs "out")))
+                        (substitute* "sys-utils/eject.c"
+                          (("\"/bin/umount\"")
+                           (string-append "\"" out "/bin/umount\"")))
+                        #t)))
+                  (add-before 'check 'pre-check
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out"))
+                            (net (assoc-ref inputs "net-base")))
+                        ;; Change the test to refer to the right file.
+                        (substitute* "tests/ts/misc/mcookie"
+                          (("/etc/services")
+                           (string-append net "/etc/services")))
+                        #t)))
+                  (add-after 'install 'move-static-libraries
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out    (assoc-ref outputs "out"))
+                            (static (assoc-ref outputs "static")))
+                        (mkdir-p (string-append static "/lib"))
+                        (with-directory-excursion out
+                          (for-each (lambda (file)
+                                      (rename-file file
+                                                   (string-append static "/"
+                                                                  file)))
+                                    (find-files "lib" "\\.a$"))
+
+                          ;; Remove references to the static library from the '.la'
+                          ;; files so that Libtool does the right thing when both
+                          ;; the shared and static library is available.
+                          (substitute* (find-files "lib" "\\.la$")
+                            (("old_library=.*") "old_library=''\n")))
+
+                        #t))))))
     (inputs `(("zlib" ,zlib)
               ("ncurses" ,ncurses)
 
@@ -1150,7 +1147,7 @@ providing the system administrator with some help in common tasks.")
                     '())))
     (native-inputs
      `(("perl" ,perl)
-       ("net-base" ,net-base)))                   ;for tests
+       ("net-base" ,net-base)))         ;for tests
     (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
     (synopsis "Collection of utilities for the Linux kernel")
     (description "Util-linux is a diverse collection of Linux kernel
@@ -1279,7 +1276,7 @@ slabtop, and skill.")
 (define-public e2fsprogs
   (package
     (name "e2fsprogs")
-    (version "1.45.2")
+    (version "1.45.4")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1288,7 +1285,7 @@ slabtop, and skill.")
                    name "-" version ".tar.xz"))
              (sha256
               (base32
-               "02g0cm72sgz709s9pkg4mvj56m7bgs7rwnyc2cp7cvg3j6pcjlj9"))))
+               "00nwl1ppjalxbnx40dsm895r3q793p8nni6n81saj7faj2szdyk5"))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))
     (native-inputs `(("pkg-config" ,pkg-config)
@@ -1459,18 +1456,15 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
 (define-public strace
   (package
     (name "strace")
-    (version "5.2")
+    (version "5.3")
     (home-page "https://strace.io")
     (source (origin
              (method url-fetch)
              (uri (string-append home-page "/files/" version
                                  "/strace-" version ".tar.xz"))
-             ;; XXX Remove the 'regenerate-tests' phase below when
-             ;; "strace-ipc-tests.patch" is no longer applied.
-             (patches (search-patches "strace-ipc-tests.patch"))
              (sha256
               (base32
-               "1li49i75wrdw91hchyyd8spnzfcmxcfyfb5g9zbaza89aq4bq4ym"))))
+               "0ix06z4vnc49mv76f22kixz8dsh7daqv9mpgwcgl0mlnfjc124vc"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1479,14 +1473,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
            (lambda _
              (substitute* "strace.c"
                (("/bin/sh") (which "sh")))
-             #t))
-         (add-before 'configure 'regenerate-tests
-           ;; XXX Remove this phase when "strace-ipc-tests.patch" is no longer
-           ;; applied in the 'source' field above.  This phase is needed to
-           ;; regenerate many other files from tests/gen_tests.in, which is
-           ;; modified by the aforementioned patch.
-           (lambda _
-             (invoke "tests/gen_tests.sh"))))
+             #t)))
        ;; Don't fail if the architecture doesn't support different personalities.
        #:configure-flags '("--enable-mpers=check")
        ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32459>.
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index b1fd2a451c..254ee59c4a 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -109,9 +109,9 @@
       (home-page "http://leenissen.dk/fann/wp/")
       (synopsis "Fast Artificial Neural Network")
       (description
-       "FANN is a free open source neural network library, which implements
-multilayer artificial neural networks in C with support for both fully
-connected and sparsely connected networks.")
+       "FANN is a neural network library, which implements multilayer
+artificial neural networks in C with support for both fully connected and
+sparsely connected networks.")
       (license license:lgpl2.1))))
 
 (define-public libsvm
@@ -794,7 +794,7 @@ computing environments.")
 (define-public python-scikit-learn
   (package
     (name "python-scikit-learn")
-    (version "0.20.3")
+    (version "0.20.4")
     (source
      (origin
        (method git-fetch)
@@ -804,7 +804,7 @@ computing environments.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08aaby5zphfxy83mggg35bwyka7wk91l2qijh8kk0bl08dikq8dl"))))
+         "08zbzi8yx5wdlxfx9jap61vg1malc9ajf576w7a0liv6jvvrxlpj"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1306,12 +1306,12 @@ Python.")
        ("python" ,python-wrapper)))
     (home-page "https://grpc.io")
     (synopsis "High performance universal RPC framework")
-    (description "gRPC is a modern open source high performance @dfn{Remote
-Procedure Call} (RPC) framework that can run in any environment.  It can
-efficiently connect services in and across data centers with pluggable support
-for load balancing, tracing, health checking and authentication.  It is also
-applicable in last mile of distributed computing to connect devices, mobile
-applications and browsers to backend services.")
+    (description "gRPC is a modern high performance @dfn{Remote Procedure Call}
+(RPC) framework that can run in any environment.  It can efficiently connect
+services in and across data centers with pluggable support for load balancing,
+tracing, health checking and authentication.  It is also applicable in last
+mile of distributed computing to connect devices, mobile applications and
+browsers to backend services.")
     (license license:asl2.0)))
 
 ;; Note that Tensorflow includes a "third_party" directory, which seems to not
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 9f25356192..a994e4d344 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -140,14 +140,14 @@
 (define-public mailutils
   (package
     (name "mailutils")
-    (version "3.6")
+    (version "3.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/mailutils/mailutils-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "07phzpwrnkdclx6jvirljk9zcavl8wh02kpx3mfba9msr99kpqj6"))))
+               "1gwajsl39f1dkzrjld0dm9px8hrj7l7rwzazz00h5rwghk9mhwhq"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1919,7 +1919,7 @@ Authentication-Results header seen in the wild.")
 (define-public perl-mail-dkim
   (package
     (name "perl-mail-dkim")
-    (version "0.55")
+    (version "0.57")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1928,7 +1928,7 @@ Authentication-Results header seen in the wild.")
                      ".tar.gz"))
               (sha256
                (base32
-                "18nsh1ff6fkns4xk3y2ixmzmadgggydj11qkzj6nlnq2hzqxsafz"))))
+                "0fmfhwn4sh98w62rc8j584l23vlhr7vii8glm2njx14f81a56lvb"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-crypt-openssl-rsa" ,perl-crypt-openssl-rsa)
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index ba90ccec73..d55d1b4461 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -565,7 +565,7 @@ assorted menu related utility programs.")
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
        ("libxslt" ,libxslt)
-       ("yelp-tools" ,yelp-tools)
+       ("yelp-tools" ,yelp-tools/fixed)
        ("scrollkeeper" ,scrollkeeper)
        ("gettext" ,gettext-minimal)
        ("docbook-xml" ,docbook-xml)
@@ -1279,7 +1279,7 @@ can be used as backgrounds in the MATE Desktop environment.")
        ("pkg-config" ,pkg-config)
        ("scrollkeeper" ,scrollkeeper)
        ("xorgproto" ,xorgproto)
-       ("yelp-tools" ,yelp-tools)))
+       ("yelp-tools" ,yelp-tools/fixed)))
     (inputs
      `(("atk" ,atk)
        ("cairo" ,cairo)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c8df21fcde..bff334bad6 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4305,9 +4305,9 @@ reduction.")
     (version "201908.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.mcrl2.org/download/devel/mcrl2-"
-                                  version
-                                  ".tar.gz"))
+              (uri (string-append
+                    "https://www.mcrl2.org/download/release/mcrl2-"
+                    version ".tar.gz"))
               (sha256
                (base32
                 "1i4xgl2d5fgiz1mwi50cyfkrrcpm8nxfayfjgmhq7chs58wlhfsz"))))
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 1b5bb331f5..3174c0c115 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -159,16 +159,16 @@ Guile.")
         (version "0.5.2"))
     (package
       (name "mescc-tools")
-      (version (string-append version "-" revision "." (string-take commit 7)))
+      (version (git-version version revision commit))
       (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
-                      name "-" commit
-                      ".tar.gz"))
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.nongnu.org/r/mescc-tools.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1h6j57wyf91i42b26f8msbv6451cw3nm4nmpl1fckp9c7vi8mwkh"))))
+                  "1nc6rnax66vmhqsjg0kgx23pihdcxmww6v325ywf59vsq1jqjvff"))))
       (build-system gnu-build-system)
       (supported-systems '("i686-linux" "x86_64-linux"))
       (arguments
@@ -191,15 +191,14 @@ get_machine.")
     (name "mescc-tools")
     (version "0.6.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
-                    name "-Release_" version
-                    ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.savannah.nongnu.org/r/mescc-tools.git")
+                    (commit (string-append "Release_" version))))
+              (file-name (string-append "mescc-tools-" version "-checkout"))
               (sha256
                (base32
-                "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n"))))
+                "1cgxcdza6ws725x84i31la7jxmlk5a3nsij5shz1zljg0i36kj99"))))
     (arguments
      (substitute-keyword-arguments (package-arguments mescc-tools-0.5.2)
        ((#:make-flags _)
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index a218071edb..9a1cf60c2e 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2017, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -123,7 +123,8 @@ versions of ID3v2.")
             (modules '((guix build utils)))
             ;; Don't use bundled zlib
             (snippet '(begin (delete-file-recursively "zlib") #t))
-            (patches (search-patches "id3lib-CVE-2007-4460.patch"))))
+            (patches (search-patches "id3lib-CVE-2007-4460.patch"
+                                     "id3lib-UTF16-writing-bug.patch"))))
    (build-system gnu-build-system)
    (inputs `(("zlib" ,zlib)))
    (arguments
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index c02e1d2e2b..079ac34dbf 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -161,7 +161,7 @@ bind processes, and much more.")
 (define-public openmpi
   (package
     (name "openmpi")
-    (version "4.0.1")
+    (version "4.0.2")
     (source
      (origin
       (method url-fetch)
@@ -169,7 +169,7 @@ bind processes, and much more.")
                           (version-major+minor version)
                           "/downloads/openmpi-" version ".tar.bz2"))
       (sha256
-       (base32 "02cpzcp113gj5hb0j2xc0cqma2fn04i2i0bzf80r71120p9bdryc"))))
+       (base32 "0ms0zvyxyy3pnx9qwib6zaljyp2b3ixny64xvq3czv3jpr8zf2wh"))))
     (build-system gnu-build-system)
     (inputs
      `(("hwloc" ,hwloc "lib")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index ac4333168c..66ff861dc3 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
@@ -11,7 +11,7 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
 ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2017, 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 nee <nee.git@hidamari.blue>
@@ -593,12 +593,17 @@ enable professional yet simple and intuitive pattern-based drum programming.")
                      "prefix=~@*~a~@
                       libdir=${prefix}/lib~@
                       includedir=${prefix}/include~@
+
+                      Name: libid3tag~@
+                      Description:~@
+                      Version:~@
                       Libs: -L${libdir} -lid3tag -lz~@
                       Cflags: -I${includedir}~%"
                      libid3tag)))
                (setenv "PKG_CONFIG_PATH"
                  (string-append (getenv "PKG_CONFIG_PATH")
-                   ":" (getcwd) "/pkgconfig")))))
+                   ":" (getcwd) "/pkgconfig"))
+               #t)))
          (add-after 'unpack 'patch-makefile
            (lambda _
              (substitute* "Makefile.in"
@@ -606,7 +611,8 @@ enable professional yet simple and intuitive pattern-based drum programming.")
                ;; script with /bin/sh hard-coded.
                (("/bin/sh") (which "sh"))
                ;; Don't create 'icon-theme.cache'.
-               (("gtk-update-icon-cache") "true")))))))
+               (("gtk-update-icon-cache") "true"))
+             #t)))))
     (home-page "https://wiki.gnome.org/Apps/EasyTAG")
     (synopsis "Simple application for viewing and editing tags in audio files")
     (description
@@ -4622,3 +4628,52 @@ easier to perform.  Features include:
 @item Adjust tempo; Playback speed of loops can be adjusted on the fly.
 @end itemize\n")
       (license license:gpl2))))
+
+(define-public pragha
+  (package
+    (name "pragha")
+    (version "1.3.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/pragha-music-player/pragha/"
+                                  "releases/download/v" version "/pragha-" version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5"))))
+    (build-system glib-or-gtk-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("grilo" ,grilo)
+       ("gstreamer" ,gstreamer)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gst-plugins-good" ,gst-plugins-good)
+       ("gtk+" ,gtk+)
+       ("libcddb" ,libcddb)
+       ("libcdio" ,libcdio)
+       ("libcdio-paranoia" ,libcdio-paranoia)
+       ("libgudev" ,libgudev)
+       ("libnotify" ,libnotify)
+       ("libpeas" ,libpeas)
+       ("libsoup" ,libsoup)
+       ("sqlite" ,sqlite)
+       ("taglib" ,taglib)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
+               (wrap-program (string-append out "/bin/pragha")
+                 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
+               #t))))))
+    (home-page "https://pragha-music-player.github.io")
+    (synopsis "Music player")
+    (description "Pragha is a lightweight music player based on Gtk and
+sqlite.  It is constructed to be fast, light, and simultaneously tries to be
+complete without obstructing your daily work.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 753e73d9d1..c0597c7e45 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -551,14 +551,15 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.5.1")
+    (version "5.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://debian/pool/main/w/whois/"
                            "whois_" version ".tar.xz"))
        (sha256
-        (base32 "10mc7iqhdnvd1kk8gnnhihd5ga2rw3sz69n3nd6x8fb65qpq13gf"))))
+        (base32
+         "1h55zs3cj4w9b0hq0x3z7s2mn46v0jyc39gz320ra4hwr0xlsnf0"))))
     (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 c72950e2b0..3b7d4b18dd 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -110,8 +110,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.0.1")
-        (commit "0ed97e69805253656df929a6ad678016aa81f08a")
-        (revision 6))
+        (commit "fc1fe722a05318ac05a71a0b127f231631e2843f")
+        (revision 7))
     (package
       (name "guix")
 
@@ -127,7 +127,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1h2qlbbdqi72jslx17gp2cak5494nbm8j44rz57lnplnfcn6iwaw"))
+                  "0yx19hxvmkr6ar65ym87xd83n6hz02mr7ibwis7i8wah85ypfq26"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -175,23 +175,32 @@
                       (lambda* (#:key system inputs #:allow-other-keys)
                         ;; Copy the bootstrap guile tarball in the store used
                         ;; by the test suite.
-                        (define (intern tarball)
-                          (let ((base (strip-store-file-name tarball)))
-                            (copy-file tarball base)
-                            (invoke "./test-env" "guix" "download"
-                                    (string-append "file://" (getcwd)
-                                                   "/" base))
-                            (delete-file base)))
+                        (define (intern file recursive?)
+                          (let ((base (strip-store-file-name file)))
+                            ;; Note: don't use 'guix download' here because we
+                            ;; need to set the 'recursive?' argument.
+                            (invoke "./test-env" "guile" "-c"
+                                    (object->string
+                                     `(begin
+                                        (use-modules (guix))
+                                        (with-store store
+                                          (add-to-store store ,base ,recursive?
+                                                        "sha256" ,file)))))))
 
-
-                        (intern (assoc-ref inputs "boot-guile"))
+                        (intern (assoc-ref inputs "boot-guile") #f)
 
                         ;; On x86_64 some tests need the i686 Guile.
                         ,@(if (and (not (%current-target-system))
                                    (string=? (%current-system)
                                              "x86_64-linux"))
-                              '((intern (assoc-ref inputs "boot-guile/i686")))
+                              '((intern (assoc-ref inputs "boot-guile/i686") #f))
                               '())
+
+                        ;; Copy the bootstrap executables.
+                        (for-each (lambda (input)
+                                    (intern (assoc-ref inputs input) #t))
+                                  '("bootstrap/bash" "bootstrap/mkdir"
+                                    "bootstrap/tar" "bootstrap/xz"))
                         #t))
                     (add-after 'unpack 'disable-failing-tests
                       ;; XXX FIXME: These tests fail within the build container.
@@ -270,7 +279,7 @@
       (inputs
        `(("bzip2" ,bzip2)
          ("gzip" ,gzip)
-         ("zlib" ,zlib)                           ;for 'guix publish'
+         ("zlib" ,zlib)              ;for 'guix publish'
          ("lzlib" ,lzlib)            ;for 'guix publish' and 'guix substitute'
 
          ("sqlite" ,sqlite)
@@ -278,16 +287,23 @@
 
          ("guile" ,guile-2.2)
 
+         ;; Some of the tests use "unshare" when it is available.
+         ("util-linux" ,util-linux)
+
          ;; Many tests rely on the 'guile-bootstrap' package, which is why we
          ;; have it here.
          ("boot-guile" ,(bootstrap-guile-origin (%current-system)))
-         ;; Some of the tests use "unshare" when it is available.
-         ("util-linux" ,util-linux)
          ,@(if (and (not (%current-target-system))
                     (string=? (%current-system) "x86_64-linux"))
                `(("boot-guile/i686" ,(bootstrap-guile-origin "i686-linux")))
                '())
 
+         ;; Tests also rely on these bootstrap executables.
+         ("bootstrap/bash" ,(bootstrap-executable "bash" (%current-system)))
+         ("bootstrap/mkdir" ,(bootstrap-executable "mkdir" (%current-system)))
+         ("bootstrap/tar" ,(bootstrap-executable "tar" (%current-system)))
+         ("bootstrap/xz" ,(bootstrap-executable "xz" (%current-system)))
+
          ("glibc-utf8-locales" ,glibc-utf8-locales)))
       (propagated-inputs
        `(("gnutls" ,gnutls)
@@ -770,6 +786,90 @@ on top of GNU Guix.")
     ;; and the fonts included in this package are licensed OFL1.1.
     (license (list license:gpl3+ license:agpl3+ license:silofl1.1))))
 
+(define-public guix-jupyter
+  (package
+    (name "guix-jupyter")
+    (version "0.1.0")
+    (home-page "https://gitlab.inria.fr/guix-hpc/guix-kernel")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "01z7jjkc7r7lj6637rcgpz40v8xqqyfp6871h94yvcnwm7zy9h1n"))
+              (file-name (string-append "guix-jupyter-" version "-checkout"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((srfi srfi-26)
+                  (ice-9 match)
+                  (ice-9 popen)
+                  (ice-9 rdelim)
+                  (guix build utils)
+                  (guix build gnu-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'sed-kernel-json
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (guix  (assoc-ref inputs  "guix"))
+                    (guile (assoc-ref inputs  "guile"))
+                    (json  (assoc-ref inputs  "guile-json"))
+                    (git   (assoc-ref inputs  "guile-git"))
+                    (bs    (assoc-ref inputs  "guile-bytestructures"))
+                    (s-zmq (assoc-ref inputs  "guile-simple-zmq"))
+                    (gcrypt (assoc-ref inputs  "guile-gcrypt"))
+                    (deps  (list out s-zmq guix json git bs gcrypt))
+                    (effective
+                     (read-line
+                      (open-pipe* OPEN_READ
+                                  (string-append guile "/bin/guile")
+                                  "-c" "(display (effective-version))")))
+                    (path (map (cut string-append "-L\", \"" <>
+                                    "/share/guile/site/"
+                                    effective)
+                               deps))
+                    (gopath (map (cut string-append "-C\", \"" <>
+                                      "/lib/guile/" effective
+                                      "/site-ccache")
+                                 deps))
+                    (kernel-dir (string-append out "/share/jupyter/kernels/guix/")))
+               (substitute* (string-append kernel-dir "kernel.json")
+                 (("-s")
+                  (string-join
+                   (list (string-join path "\",\n\t\t\"")
+                         (string-join gopath "\",\n\t\t\"")
+                         "-s")
+                   "\",\n\t\t\""))
+                 (("guix-jupyter-kernel.scm")
+                  (string-append out "/share/guile/site/2.2/"
+                                 "guix-jupyter-kernel.scm")))
+               #t))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+
+       ;; For testing.
+       ("jupyter" ,jupyter)
+       ("python-ipython" ,python-ipython)
+       ("python-ipykernel" ,python-ipykernel)))
+    (inputs
+     `(("guix" ,guix)
+       ("guile" ,guile-2.2)))
+    (propagated-inputs
+     `(("guile-json" ,guile-json-3)
+       ("guile-simple-zmq" ,guile-simple-zmq)
+       ("guile-gcrypt" ,guile-gcrypt)))
+    (synopsis "Guix kernel for Jupyter")
+    (description
+     "Guix-Jupyter is a Jupyter kernel.  It allows you to annotate notebooks
+with information about their software dependencies, such that code is executed
+in the right software environment.  Guix-Jupyter spawns the actual kernels
+such as @code{python-ipykernel} on behalf of the notebook user and runs them
+in an isolated environment, in separate namespaces.")
+    (license license:gpl3+)))
+
 (define-public gcab
   (package
     (name "gcab")
diff --git a/gnu/packages/patches/id3lib-UTF16-writing-bug.patch b/gnu/packages/patches/id3lib-UTF16-writing-bug.patch
new file mode 100644
index 0000000000..4a8f69b321
--- /dev/null
+++ b/gnu/packages/patches/id3lib-UTF16-writing-bug.patch
@@ -0,0 +1,39 @@
+diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog
+--- id3lib-3.8.3.orig/ChangeLog	2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/ChangeLog	2006-02-22 00:33:59.946214472 +0100
+@@ -1,3 +1,8 @@
++2006-02-17  Jerome Couderc
++
++    * Patch from Spoon to fix UTF-16 writing bug
++      http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++
+ 2003-03-02 Sunday 17:38   Thijmen Klok <thijmen@id3lib.org>
+
+ 	* THANKS (1.20): added more people
+diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp
+--- id3lib-3.8.3.orig/src/io_helpers.cpp	2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/src/io_helpers.cpp	2006-02-22 00:35:02.926639992 +0100
+@@ -363,11 +363,22 @@
+     // Write the BOM: 0xFEFF
+     unicode_t BOM = 0xFEFF;
+     writer.writeChars((const unsigned char*) &BOM, 2);
++    // Patch from Spoon : 2004-08-25 14:17
++    //   http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++    // Wrong code
++    //for (size_t i = 0; i < size; i += 2)
++    //{
++    //  unicode_t ch = (data[i] << 8) | data[i+1];
++    //  writer.writeChars((const unsigned char*) &ch, 2);
++    //}
++    // Right code
++    unsigned char *pdata = (unsigned char *) data.c_str();
+     for (size_t i = 0; i < size; i += 2)
+     {
+-      unicode_t ch = (data[i] << 8) | data[i+1];
++      unicode_t ch = (pdata[i] << 8) | pdata[i+1];
+       writer.writeChars((const unsigned char*) &ch, 2);
+     }
++    // End patch
+   }
+   return writer.getCur() - beg;
+ }
diff --git a/gnu/packages/patches/nsis-env-passthru.patch b/gnu/packages/patches/nsis-env-passthru.patch
new file mode 100644
index 0000000000..36b4092230
--- /dev/null
+++ b/gnu/packages/patches/nsis-env-passthru.patch
@@ -0,0 +1,12 @@
+--- nsis-3.04-src/SConstruct	2019-05-30 14:53:30.276775332 -0400
++++ nsis-3.04-src/SConstruct	2019-05-30 14:54:17.901232914 -0400
+@@ -77,6 +77,9 @@
+ if not toolset and not path:
+ 	defenv = Environment(TARGET_ARCH = arch)
+ 
++import os;
++defenv['ENV'] = os.environ
++
+ Export('defenv')
+ 
+ ######################################################################
diff --git a/gnu/packages/patches/parted-glibc-compat.patch b/gnu/packages/patches/parted-glibc-compat.patch
deleted file mode 100644
index edf4afb0d1..0000000000
--- a/gnu/packages/patches/parted-glibc-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Include <sys/sysmacros.h> for "major" and "minor".
-
-Taken from upstream:
-https://git.savannah.gnu.org/cgit/parted.git/commit/?id=ba5e0451b51c983e40afd123b6e0d3eddb55e610
-
-diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
-index 31b98ab..7e86b51 100644
---- a/libparted/arch/linux.c
-+++ b/libparted/arch/linux.c
-@@ -41,6 +41,7 @@
- #include <sys/utsname.h>        /* for uname() */
- #include <scsi/scsi.h>
- #include <assert.h>
-+#include <sys/sysmacros.h>
- #ifdef ENABLE_DEVICE_MAPPER
- #include <libdevmapper.h>
- #endif
diff --git a/gnu/packages/patches/strace-ipc-tests.patch b/gnu/packages/patches/strace-ipc-tests.patch
deleted file mode 100644
index 49341765ca..0000000000
--- a/gnu/packages/patches/strace-ipc-tests.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Fix a test failure on some systems.
-
-Taken from upstream:
-https://github.com/strace/strace/commit/4377e3a1535a0ec3a42da8a1366ad6943f4efa0e
-
-diff --git a/tests/gen_tests.in b/tests/gen_tests.in
-index 4a506b94c..4fdf4722c 100644
---- a/tests/gen_tests.in
-+++ b/tests/gen_tests.in
-@@ -168,16 +168,16 @@ ipc_msg-Xabbrev	+ipc.sh -Xabbrev -a26
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a22
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
- ipc_sem-Xraw	+ipc.sh -Xraw -a19
- ipc_sem-Xverbose	+ipc.sh -Xverbose -a36
--ipc_shm	+ipc.sh -a29
--ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a29
-+ipc_shm	+ipc.sh -a26
-+ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a26
- ipc_shm-Xraw	+ipc.sh -Xraw -a19
--ipc_shm-Xverbose	+ipc.sh -Xverbose -a36
-+ipc_shm-Xverbose	+ipc.sh -Xverbose -a34
- kcmp	-a22
- kcmp-y	-a22 -y -e trace=kcmp
- kern_features -a16
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index b83721946c..f05c01060f 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -232,21 +232,18 @@ Python interface around SSH networking concepts.")
 (define-public python-ecdsa
   (package
     (name "python-ecdsa")
-    (version "0.13")
+    (version "0.13.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ecdsa" version))
        (sha256
-        (base32
-         "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
+        (base32 "0k9xxklf865g6x43gkfarwb25ffrkmpvkzkh71rylqx7cjq80g0n"))))
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
-    (home-page
-     "https://github.com/warner/python-ecdsa")
-    (synopsis
-     "ECDSA cryptographic signature library (pure python)")
+    (home-page "https://github.com/warner/python-ecdsa")
+    (synopsis "ECDSA cryptographic signature library (pure python)")
     (description
      "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
 Curve Digital Signature Algorithm), implemented purely in Python.  With this
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1ae83dfa87..daef86b03f 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -2197,14 +2197,14 @@ somewhat intelligible.")
 (define-public python-pyjwt
   (package
     (name "python-pyjwt")
-    (version "1.5.3")
+    (version "1.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyJWT" version))
        (sha256
         (base32
-         "1rxsg14i33vm2i6lz0my628108c81k43v10n4h3p0gx62xdyf2sh"))
+         "15hflax5qkw1v6nssk1r0wkj83jgghskcmn875m3wgvpzdvajncd"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -7742,20 +7742,21 @@ Jupyter Notebook format and Python APIs for working with notebooks.")
 (define-public python-bleach
   (package
     (name "python-bleach")
-    (version "1.4.3")
+    (version "3.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bleach" version))
        (sha256
         (base32
-         "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
+         "1yhrgrhkln8bd6gn3imj69g1h4xqah9gaz9q26crqr6gmmvpzprz"))))
     (build-system python-build-system)
     (propagated-inputs
-     `(("python-html5lib" ,python-html5lib-0.9)
+     `(("python-webencodings" ,python-webencodings)
        ("python-six" ,python-six)))
     (native-inputs
-     `(("python-nose" ,python-nose)))
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner-2)))
     (home-page "https://github.com/jsocol/bleach")
     (synopsis "Whitelist-based HTML-sanitizing tool")
     (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
@@ -10972,6 +10973,16 @@ hardware-accelerated multitouch applications.")
                (base32
                 "0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tests
+           (lambda _
+             ;; TypeError: binary() got an unexpected keyword argument
+             ;; 'average_size'.
+             (substitute* "tests/test_check.py"
+              (("average_size=512") ""))
+             #t)))))
     (propagated-inputs
      `(("python-chardet" ,python-chardet)
        ("python-hypothesis" ,python-hypothesis)))
@@ -13746,10 +13757,15 @@ ignoring formatting changes.")
       "Make loops show a progress bar on the console by just wrapping any
 iterable with @code{|tqdm(iterable)|}.  Offers many options to define
 design and layout.")
-    (license (list license:mpl2.0 license:expat))))
+    (license (list license:mpl2.0 license:expat))
+    (properties `((python2-variant . ,(delay python2-tqdm))))))
 
 (define-public python2-tqdm
-  (package-with-python2 python-tqdm))
+  (let ((tqdm (package-with-python2
+                (strip-python2-variant python-tqdm))))
+    (package (inherit tqdm)
+      (native-inputs `(("python2-functools32" ,python2-functools32)
+                        ,@(package-native-inputs tqdm))))))
 
 (define-public python-pkginfo
   (package
diff --git a/gnu/packages/re2c.scm b/gnu/packages/re2c.scm
index e9668cba26..f81d4f67f7 100644
--- a/gnu/packages/re2c.scm
+++ b/gnu/packages/re2c.scm
@@ -26,15 +26,15 @@
 (define-public re2c
   (package
     (name "re2c")
-    (version "1.1.1")
+    (version "1.2.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/skvadrik/" name
                                  "/releases/download/" version "/"
-                                 name "-" version ".tar.gz"))
+                                 name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1ksifjn18v6nra935dpqllmvkqgcdsggfjgmj77282x0gqrrfrc5"))))
+               "05xq0571mkgr20v827jm63nhsirr8arghg4fszzswrmrnl3dfk0s"))))
     (build-system gnu-build-system)
     (home-page "http://re2c.org/")
     (synopsis "Lexer generator for C/C++")
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 21d6027004..38ae8ae6f8 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -69,6 +69,8 @@
                           (string-append "LDFLAGS=-Wl,-rpath="
                                          (assoc-ref %outputs "out")
                                          "/lib")
+                          ;; The package fails to build with newer C++ standards.
+                          "CXXFLAGS=-std=c++98"
                           "AUDIO=pulseaudio")
        #:tests? #f ; no check target
        #:phases
diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index f6d7e9b8b4..926e1caca1 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -28,7 +28,7 @@
 (define-public tbb
   (package
     (name "tbb")
-    (version "2019_U8")
+    (version "2019_U9")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -37,7 +37,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0z0kh1a5g28gckcxlv3x7qqskh5fsl8knf2ypbbvk7z9ln9k3wfq"))
+                "1a39nflw7b2n51jfp3fdprnkpgzaspzww1dckfvaigflfli9s8rj"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 21ca185066..1e4aa13cc9 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -81,7 +81,7 @@
        ;; likely related to name resolution), but that doesn't cause
        ;; `make' to fail.
        #:test-target "test"))
-    (home-page "http://www.tcl.tk/")
+    (home-page "https://www.tcl.tk/")
     (synopsis "The Tcl scripting language")
     (description "The Tcl (Tool Command Language) scripting language.")
     (license license:tcl/tk)))
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index d9a5f1db9a..98e964fa44 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -665,15 +666,15 @@ eye-candy, customizable, and reasonably lightweight.")
 (define-public sakura
   (package
     (name "sakura")
-    (version "3.6.0")
+    (version "3.7.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://launchpad.net/" name "/trunk/"
                                   version "/+download/" name "-" version
-                                  ".tar.bz2"))
+                                  ".tar.gz"))
               (sha256
                (base32
-                "1q463qm41ym7jb3kbzjz7b6x549vmgkb70arpkhsf86yxly1y5m1"))))
+                "15gskj5yv5qs3cj4ps43735kfx2nzjlhq4dk9ghirl8lvhhxsm5m"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no check phase
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index c45767c1b3..2def6ee703 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -392,6 +392,7 @@ required structures.")
     (inherit openssl)
     (name "openssl")
     (version "1.0.2s")
+    (replacement openssl-1.0.2t)
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -473,6 +474,27 @@ required structures.")
                                                          ,version "/misc"))
                  #t)))))))))
 
+(define openssl-1.0.2t
+  (package
+    (inherit openssl)
+    (version "1.0.2t")
+    (source (origin
+              (inherit (package-source openssl-1.0))
+              (uri (list (string-append "https://www.openssl.org/source/openssl-"
+                                        version ".tar.gz")
+                         (string-append "ftp://ftp.openssl.org/source/"
+                                        "openssl-" version ".tar.gz")
+                         (string-append "ftp://ftp.openssl.org/source/old/"
+                                        (string-trim-right version char-set:letter)
+                                        "/openssl-" version ".tar.gz")))
+              (sha256
+               (base32
+                "1g67ra0ph7gpz6fgvv1i96d792jmd6ymci5kk53vbikszr74djql"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments openssl-1.0)
+       ;; Parallel build is not supported in 1.0.x.
+       ((#:parallel-build? _ #f) #f)))))
+
 (define-public libressl
   (package
     (name "libressl")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index fbf72b078a..2fb0564003 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -439,7 +439,15 @@ APIs.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests included
-       #:make-flags (list "CC=gcc")))
+       #:make-flags (list "CC=gcc")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-CFLAGS
+           ;; Remove broken options unconditionally added to CFLAGS.
+           (lambda _
+             (substitute* "configure.ac"
+               ((" -Werror") ""))
+             #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -6553,6 +6561,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
   (package
     (name "nghttp2")
     (version "1.39.1")
+    (replacement nghttp2-1.39.2)
     (source
      (origin
        (method url-fetch)
@@ -6630,6 +6639,19 @@ compressed JSON header blocks.
 @end itemize\n")
     (license license:expat)))
 
+(define nghttp2-1.39.2
+  (package
+    (inherit nghttp2)
+    (version "1.39.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/nghttp2/nghttp2/"
+                                  "releases/download/v" version "/"
+                                  "nghttp2-" version ".tar.xz"))
+              (sha256
+               (base32
+                "12yfsjghbaypp4w964d45ih9vs38g6anih80wbsflaxx192idlm2"))))))
+
 (define-public hpcguix-web
   (let ((commit "f39c90b35e99e4122b0866ec4337020d61c81508")
         (revision "4"))
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index e40e8e427c..be02106f9a 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015, 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;;
@@ -27,6 +27,7 @@
 
 (define-module (gnu packages xiph)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
@@ -41,6 +42,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:export (libogg
             libvorbis
@@ -185,15 +187,17 @@ work from the @code{speex} codec.")
 (define ao
   (package
     (name "ao")
-    (version "1.2.0")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "https://downloads.xiph.org/releases/ao/libao-"
-                          version ".tar.gz"))
-      (sha256
-       (base32
-        "1bwwv1g9lchaq6qmhvj1pp3hnyqr64ydd4j38x94pmprs4d27b83"))))
+    ;; We need a few commits on top of 1.2.2 to fix CVE-2017-11548.
+    (version "1.2.2-5-g20dc8ed")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.xiph.org/libao.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1d1b3g2a7jd43c32242yq6nfysqsmp7rjslhvbrmpgk119l5fnbj"))))
     (build-system gnu-build-system)
     ;; FIXME: Add further backends, see the summary printed after configure.
     ;; XXX: Should back-ends be pushed to different outputs?  For instance,
@@ -203,7 +207,10 @@ work from the @code{speex} codec.")
      `(("alsa-lib" ,alsa-lib)
        ("pulseaudio" ,pulseaudio)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
     (synopsis "Cross platform audio library")
     (description
      "Libao is a cross-platform audio library that allows programs to
@@ -230,6 +237,7 @@ It currently supports:
 @end enumerate
 ")
     (license license:gpl2+)
+    (properties '((cpe-name . "libao")))
     (home-page "https://www.xiph.org/ao/")))
 
 (define flac
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 54dc92f3f2..59f30116a3 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
@@ -67,6 +67,7 @@
   (package
     (name "expat")
     (version "2.2.7")
+    (replacement expat-2.2.9)
     (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
               (origin
                 (method url-fetch)
@@ -88,6 +89,23 @@ stream-oriented parser in which an application registers handlers for
 things the parser might find in the XML document (like start tags).")
     (license license:expat)))
 
+(define expat-2.2.9
+  (package
+    (inherit expat)
+    (version "2.2.9")
+    (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
+              (origin
+                (method url-fetch)
+                (uri (list (string-append "mirror://sourceforge/expat/expat/"
+                                          version "/expat-" version ".tar.xz")
+                           (string-append
+                            "https://github.com/libexpat/libexpat/releases/download/R_"
+                            (string-map dot->underscore version)
+                            "/expat-" version ".tar.xz")))
+                (sha256
+                 (base32
+                  "1960mmgbb4cm64n1p0nz3hrs1pw03hkrfcw8prmnn4622mdrd9hy")))))))
+
 (define-public libebml
   (package
     (name "libebml")