summary refs log tree commit diff
diff options
context:
space:
mode:
authorMathieu Othacehe <m.othacehe@gmail.com>2019-10-14 10:03:19 +0200
committerMathieu Othacehe <m.othacehe@gmail.com>2019-10-14 10:03:19 +0200
commitc206f1914e9299b3f9a8b8be295a02f14acc67b3 (patch)
tree7cd0441f380b53e64badd6ee063bbf7ccbdf27a5
parent4d14902b9402a83db444d8d6818d0a4f438ce8c4 (diff)
parent396b05f04ed5c5ad6141bd1b4f70f51561a97aad (diff)
downloadguix-c206f1914e9299b3f9a8b8be295a02f14acc67b3.tar.gz
Merge remote-tracking branch 'signed/master' into core-updates
-rw-r--r--doc/guix.texi8
-rw-r--r--gnu/local.mk6
-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.scm3569
-rw-r--r--gnu/packages/cpp.scm30
-rw-r--r--gnu/packages/curl.scm15
-rw-r--r--gnu/packages/debug.scm22
-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.scm587
-rw-r--r--gnu/packages/emacs.scm10
-rw-r--r--gnu/packages/enlightenment.scm8
-rw-r--r--gnu/packages/file-systems.scm1
-rw-r--r--gnu/packages/freedesktop.scm24
-rw-r--r--gnu/packages/games.scm13
-rw-r--r--gnu/packages/glib.scm4
-rw-r--r--gnu/packages/gnome.scm55
-rw-r--r--gnu/packages/gnupg.scm15
-rw-r--r--gnu/packages/haskell-apps.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.scm4
-rw-r--r--gnu/packages/mate.scm2
-rw-r--r--gnu/packages/mes.scm27
-rw-r--r--gnu/packages/mp3.scm5
-rw-r--r--gnu/packages/music.scm94
-rw-r--r--gnu/packages/networking.scm5
-rw-r--r--gnu/packages/package-management.scm2
-rw-r--r--gnu/packages/patches/emacs-helm-org-ql.patch42
-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-xyz.scm13
-rw-r--r--gnu/packages/re2c.scm6
-rw-r--r--gnu/packages/tbb.scm4
-rw-r--r--gnu/packages/tcl.scm2
-rw-r--r--gnu/packages/tls.scm22
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/web.scm19
-rw-r--r--gnu/packages/xiph.scm30
-rw-r--r--gnu/packages/xml.scm20
-rw-r--r--gnu/packages/xorg.scm6
-rw-r--r--guix/build-system/gnu.scm59
-rw-r--r--guix/build-system/scons.scm4
-rw-r--r--guix/build/scons-build-system.scm9
-rw-r--r--guix/gexp.scm2
54 files changed, 2919 insertions, 2273 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 97d797c13f..6703c2756c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6405,9 +6405,11 @@ tool.  This build system runs @code{scons} to build the package,
 the package.
 
 Additional flags to be passed to @code{scons} can be specified with the
-@code{#:scons-flags} parameter.  The version of Python used to run SCons
-can be specified by selecting the appropriate SCons package with the
-@code{#:scons} parameter.
+@code{#:scons-flags} parameter.  The default build and install targets
+can be overridden with @code{#:build-targets} and
+@code{#:install-targets} respectively.  The version of Python used to
+run SCons can be specified by selecting the appropriate SCons package
+with the @code{#:scons} parameter.
 @end defvr
 
 @defvr {Scheme Variable} haskell-build-system
diff --git a/gnu/local.mk b/gnu/local.mk
index 9f5bce3d2b..e46d74be64 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -261,6 +261,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/imagemagick.scm			\
   %D%/packages/inklingreader.scm		\
   %D%/packages/inkscape.scm			\
+  %D%/packages/installers.scm			\
   %D%/packages/ipfs.scm			\
   %D%/packages/irc.scm  			\
   %D%/packages/iso-codes.scm			\
@@ -793,7 +794,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch   \
   %D%/packages/patches/emacs-exec-path.patch			\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
-  %D%/packages/patches/emacs-helm-org-ql.patch	                \
   %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
@@ -977,6 +977,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch  \
   %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch  \
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
+  %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
   %D%/packages/patches/ilmbase-fix-tests.patch			\
   %D%/packages/patches/ilmbase-openexr-pkg-config.patch		\
   %D%/packages/patches/inkscape-poppler-0.76.patch		\
@@ -1148,6 +1149,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/nfs-utils-missing-headers.patch		\
   %D%/packages/patches/ngircd-handle-zombies.patch		\
   %D%/packages/patches/nm-plugin-path.patch			\
+  %D%/packages/patches/nsis-env-passthru.patch			\
   %D%/packages/patches/nss-freebl-stubs.patch			\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-pkgconfig.patch			\
@@ -1188,7 +1190,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/p7zip-CVE-2016-9296.patch		\
   %D%/packages/patches/p7zip-CVE-2017-17969.patch		\
   %D%/packages/patches/p7zip-remove-unused-code.patch		\
-  %D%/packages/patches/parted-glibc-compat.patch		\
   %D%/packages/patches/patchelf-page-size.patch			\
   %D%/packages/patches/patchelf-rework-for-arm.patch		\
   %D%/packages/patches/patchutils-test-perms.patch		\
@@ -1330,7 +1331,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
   %D%/packages/patches/soundconverter-remove-gconf-dependency.patch	\
   %D%/packages/patches/steghide-fixes.patch			\
-  %D%/packages/patches/strace-ipc-tests.patch			\
   %D%/packages/patches/streamlink-update-test.patch		\
   %D%/packages/patches/stumpwm-fix-broken-read-one-line.patch	\
   %D%/packages/patches/supercollider-boost-1.70-build-fix.patch	\
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 dab0bd39c3..6a48c08064 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..54746151ce 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,28 +1784,30 @@ 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 with-boot0
+  (package-with-explicit-inputs %boot0-inputs
+                                %bootstrap-guile))
 
 (define gnumach-headers-boot0
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs gnumach-headers
-                                 (%boot0-inputs)
-                                 (current-source-location)
-                                 #:guile %bootstrap-guile)))
+  (with-boot0 (package-with-bootstrap-guile gnumach-headers)))
 
 (define mig-boot0
-  (let* ((mig (package (inherit mig)
+  (let* ((mig (package
+                 (inherit (package-with-bootstrap-guile mig))
                  (native-inputs `(("bison" ,bison-boot0)
                                   ("flex" ,flex-boot0)))
                  (inputs `(("flex" ,flex-boot0)))
@@ -1804,42 +1815,32 @@ exec " gcc "/bin/" program
                   `(#:configure-flags
                     `(,(string-append "LDFLAGS=-Wl,-rpath="
                                       (assoc-ref %build-inputs "flex") "/lib/")))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs mig (%boot0-inputs)
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+    (with-boot0 mig)))
 
 (define hurd-headers-boot0
   (let ((hurd-headers (package (inherit hurd-headers)
                         (native-inputs `(("mig" ,mig-boot0)))
                         (inputs '()))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs hurd-headers (%boot0-inputs)
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+    (with-boot0 (package-with-bootstrap-guile hurd-headers))))
 
 (define hurd-minimal-boot0
   (let ((hurd-minimal (package (inherit hurd-minimal)
                         (native-inputs `(("mig" ,mig-boot0)))
                         (inputs '()))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs hurd-minimal (%boot0-inputs)
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+    (with-boot0 (package-with-bootstrap-guile hurd-minimal))))
 
 (define hurd-core-headers-boot0
   (mlambda ()
     "Return the Hurd and Mach headers as well as initial Hurd libraries for
 the bootstrap environment."
-    (package-with-bootstrap-guile
-     (package (inherit hurd-core-headers)
-              (arguments `(#:guile ,%bootstrap-guile
-                           ,@(package-arguments hurd-core-headers)))
-              (inputs
-               `(("gnumach-headers" ,gnumach-headers-boot0)
-                 ("hurd-headers" ,hurd-headers-boot0)
-                 ("hurd-minimal" ,hurd-minimal-boot0)
-                 ,@(%boot0-inputs)))))))
+    (package (inherit (package-with-bootstrap-guile hurd-core-headers))
+             (arguments `(#:guile ,%bootstrap-guile
+                          ,@(package-arguments hurd-core-headers)))
+             (inputs
+              `(("gnumach-headers" ,gnumach-headers-boot0)
+                ("hurd-headers" ,hurd-headers-boot0)
+                ("hurd-minimal" ,hurd-minimal-boot0)
+                ,@(%boot0-inputs))))))
 
 (define* (kernel-headers-boot0 #:optional (system (%current-system)))
   (match system
@@ -1851,91 +1852,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
+
+       ,@(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 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))))
-
-(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))
+  (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 +1956,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 +2079,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 +2180,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 +2221,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,31 +2338,32 @@ 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.
   `(("bash" ,bash-final)
     ,@(alist-delete "bash" (%boot3-inputs))))
 
+(define with-boot4
+  (package-with-explicit-inputs %boot4-inputs %bootstrap-guile))
+
 (define-public guile-final
   ;; This package must be public because other modules refer to it.  However,
   ;; mark it as hidden so that 'fold-packages' ignores it.
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs (hidden-package guile-2.2/fixed)
-                                 %boot4-inputs
-                                 (current-source-location)
-                                 #:guile %bootstrap-guile)))
+  (with-boot4 (hidden-package
+               (package-with-bootstrap-guile guile-2.2/fixed))))
 
 (define glibc-utf8-locales-final
   ;; Now that we have GUILE-FINAL, build the UTF-8 locales.  They are needed
@@ -2371,10 +2375,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     (inherit glibc-utf8-locales)
     (native-inputs
      `(("glibc" ,glibc-final)
-       ("gzip"
-        ,(package-with-explicit-inputs gzip %boot4-inputs
-                                       (current-source-location)
-                                       #:guile %bootstrap-guile))))))
+       ("gzip" ,(with-boot4 gzip))))))
 
 (define-public ld-wrapper
   ;; The final 'ld' wrapper, which uses the final Guile and Binutils.
@@ -2390,36 +2391,45 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   `(("locales" ,glibc-utf8-locales-final)
     ,@(%boot4-inputs)))
 
+(define with-boot5
+  (package-with-explicit-inputs %boot5-inputs))
+
 (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))))
+  ;; FIXME: This is a mistake: we shouldn't be propagating GUILE-FINAL to
+  ;; PKG-CONFIG.
+  ;; TODO: Fix that on the next rebuild cycle.
+  (let ((pkg-config (package
+                      (inherit pkg-config)
+                      (inputs `(("guile" ,guile-final)
+                                ,@(%boot5-inputs)))
+                      (arguments
+                       `(#:implicit-inputs? #f
+                         ,@(package-arguments pkg-config))))))
+    (package
+      (inherit (package-with-bootstrap-guile gnu-make))
+      (inputs `(("guile" ,guile-final)
+                ,@(%boot5-inputs)))
+      (native-inputs `(("pkg-config" ,pkg-config)))
+      (arguments
+       `(#:implicit-inputs? #f
+         ,@(package-arguments gnu-make))))))
+
 
 (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)
-
-                                 ;; 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)))
+  (with-boot5 (package-with-bootstrap-guile coreutils)
+              ;; Use the final Guile, linked against the
+              ;; final libc with working iconv, so that
+              ;; 'substitute*' works well when touching
+              ;; test files in Gettext.
+              ))
 
 (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 (with-boot5 (package-with-bootstrap-guile grep))))
     (package/inherit grep
                      (inputs (alist-delete "pcre" (package-inputs grep)))
                      (native-inputs `(("perl" ,perl-boot0))))))
@@ -2430,12 +2440,12 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     ("grep" ,grep-final)
     ,@(%boot5-inputs)))
 
+(define with-boot6
+  (package-with-explicit-inputs %boot6-inputs))
+
 (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 (with-boot6 (package-with-bootstrap-guile sed))))
     (package/inherit sed (native-inputs `(("perl" ,perl-boot0))))))
 
 (define-public %final-inputs
@@ -2443,12 +2453,11 @@ 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 with-boot6
+                           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/debug.scm b/gnu/packages/debug.scm
index 82631deef6..3372fc89e1 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -264,21 +264,21 @@ down the road.")
       (license asl2.0))))
 
 (define-public stress-make
-  (let ((commit "506e6cfd98d165f22bee91c408b7c20117a682c4")
-        (revision "0"))                 ;No official source distribution
+  (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100")
+        (revision "1"))                 ;No official source distribution
     (package
       (name "stress-make")
-      (version (string-append "1.0-" revision "." (string-take commit 7)))
+      (version (git-version "1.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/losalamos/stress-make.git")
+               (url "https://github.com/lanl/stress-make.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
-           "1j330yqhc7plwin04qxbh8afpg5nfnw1xvnmh8rk6mmqg9w6ik70"))))
+           "1z1yiwnqyzv3v6152fnjbfh2lr8q8fi5xxfdclnr8l8sd4c1rasp"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -308,8 +308,12 @@ down the road.")
                             (which "sh"))))))
              (add-before 'configure 'repack-make
                (lambda _
-                 (invoke "tar" "cJf" "./make.tar.xz" ,make-dir)))))))
-      (home-page "https://github.com/losalamos/stress-make")
+                 (invoke "tar" "cJf" "./make.tar.xz" ,make-dir)))
+             (add-before 'build 'setup-go
+               ;; The Go cache is required starting in Go 1.12, and it needs
+               ;; to be writable.
+               (lambda _ (setenv "GOCACHE" "/tmp/go-cache") #t))))))
+      (home-page "https://github.com/lanl/stress-make")
       (synopsis "Expose race conditions in Makefiles")
       (description
        "Stress Make is a customized GNU Make that explicitly manages the order
@@ -320,7 +324,7 @@ Stress Make, then it is likely that the @code{Makefile} contains no race
 conditions.")
       ;; stress-make wrapper is under BSD-3-modifications-must-be-indicated,
       ;; and patched GNU Make is under its own license.
-      (license (list (non-copyleft "COPYING.md")
+      (license (list (non-copyleft "LICENSE.md")
                      (package-license gnu-make))))))
 
 (define-public zzuf
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 e6cf4bd1eb..bbafd548b1 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")
@@ -610,8 +652,8 @@ from within Emacs.")
     (license license:gpl3+)))
 
 (define-public emacs-unpackaged-el
-  (let ((commit "c0d58cf81e531b2b6fa1bd5dd612dc1b93d4d186")
-        (revision "2"))
+  (let ((commit "746801a677ada6cd6fa076e423aa0953779f3fad")
+        (revision "3"))
     (package
       (name "emacs-unpackaged-el")
       (version (git-version "0" revision commit))
@@ -624,7 +666,7 @@ from within Emacs.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0y3sgvd51l4pb3acps92bazfk49da6nim1f1hyxzy1ravg4kbw83"))))
+           "0jvb2ci0h0lj368qhbff3pzkxj3nhlligpbkjzi525k9rkjgm7l8"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -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
@@ -3306,14 +3354,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.19")
+    (version "0.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "0cpby8f088cqb5mpd756a2mb706x763k15cg2xdmmsxl415k3yw4"))))
+                "03mmb1zvbqlsznl5agq8k3xrlcz310vnsa2zn0y8myanm4ra51zm"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -4978,15 +5026,14 @@ test tags.  It supports both interactive and non-interactive use.")
 (define-public emacs-load-relative
   (package
     (name "emacs-load-relative")
-    (version "1.3")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/load-relative-"
                            version ".el"))
        (sha256
-        (base32
-         "1hfxb2436jdsi9wfmsv47lkkpa5galjf5q81bqabbsv79rv59dps"))))
+        (base32 "1m37scr82lqqy954fchjxrmdh4lngrl4d1yzxhp3yfjhsydizhrj"))))
     (build-system emacs-build-system)
     (home-page "http://github.com/rocky/emacs-load-relative")
     (synopsis "Emacs Lisp relative file loading related functions")
@@ -5266,12 +5313,11 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
 (define-public emacs-ivy-rich
   ;; The latest release version has a small mistake that has since been fixed,
   ;; so we use a more recent commit.
-  (let ((commit "f6bfa293c6df0b43cc411876b665816ec3f03d08")
-        (version "0.1.4")
-        (revision "1"))
+  (let ((commit "7a667b135983a1f3ad33d6db8514638e2a3bdfb3")
+        (revision "2"))
     (package
       (name "emacs-ivy-rich")
-      (version (git-version version revision commit))
+      (version (git-version "0.1.4" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -5280,7 +5326,7 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1s8nwwb1z6lkc58g02pi8w99qms948k8d02lw8k8cq47dw87i219"))))
+          (base32 "1v5j6pak2j1wjw19y7rx9rhxif0bj2h47xyl2knfcl6fi4qiqm9y"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-ivy" ,emacs-ivy)))
@@ -6595,26 +6641,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
@@ -6889,14 +6938,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)
@@ -6906,14 +6955,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
@@ -6922,13 +7002,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
 
@@ -6936,6 +7016,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"))
@@ -7007,11 +7156,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
@@ -7020,10 +7169,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
@@ -10349,20 +10501,17 @@ let users kill or mark things easily.")
 (define-public emacs-csv-mode
   (package
     (name "emacs-csv-mode")
-    (version "1.7")
+    (version "1.9")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/csv-mode-"
+       (uri (string-append "https://elpa.gnu.org/packages/csv-mode-"
                            version ".el"))
        (sha256
-        (base32
-         "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6"))))
+        (base32 "0sdnyi9in904k49yy5imapypnmk75lv14k9c1yyjhjpalvvh6br1"))))
     (build-system emacs-build-system)
-    (home-page
-     "http://elpa.gnu.org/packages/csv-mode.html")
-    (synopsis
-     "Major mode for editing comma/char separated values")
+    (home-page "https://elpa.gnu.org/packages/csv-mode.html")
+    (synopsis "Major mode for editing comma/char separated values")
     (description
      "This Emacs package implements CSV mode, a major mode for editing records
 in a generalized CSV (character-separated values) format.")
@@ -10657,20 +10806,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
@@ -11347,31 +11498,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.
@@ -11745,7 +11898,7 @@ according to a parsing expression grammar.")
 
 (define-public emacs-org-ql
   (let ((commit "949a06c3ab50482b749fd2d4350837a197660d96")
-        (revision "2"))
+        (revision "3"))
     (package
       (name "emacs-org-ql")
       (version (git-version "0.3.1" revision commit))
@@ -11757,9 +11910,6 @@ according to a parsing expression grammar.")
                 (sha256
                  (base32
                   "0apcg63xm0242mjgsgw0jrcda4p4iqj7fy3sgh0p7khi4hrs5ch0"))
-                (patches
-                 (search-patches
-                  "emacs-helm-org-ql.patch"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
@@ -11776,7 +11926,15 @@ according to a parsing expression grammar.")
       (native-inputs
        `(("emacs-buttercup" ,emacs-buttercup)))
       (arguments
-       `(#:tests? #t
+       `(#: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")
@@ -12424,15 +12582,14 @@ for operating over the contents of Emacs buffers.")
 (define-public emacs-let-alist
   (package
     (name "emacs-let-alist")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://elpa.gnu.org/packages/let-alist-" version ".el"))
        (sha256
-        (base32
-         "0r7b9jni50la1m79kklml11syg8d2fmdlr83pv005sv1wh02jszw"))))
+        (base32 "0szj7vnjzz4zci5fvz7xqgcpi4pzdyyf4qi2s8xar2hi7v3yaawr"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/let-alist.html")
     (synopsis "Easily let-bind values of an assoc-list by their names")
@@ -13389,14 +13546,14 @@ It s customizable: it's easy to add or redefine what exactly consitutes a
 (define-public emacs-darkroom
   (package
     (name "emacs-darkroom")
-    (version "0.1")
+    (version "0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/darkroom-"
                                   version ".el"))
               (sha256
                (base32
-                "0fif8fm1h7x7g16949shfnaik5f5488clsvkf8bi5izpqp3vi6ak"))))
+                "1a528brhz4vckhp77n2c1phkyqdliykpj9kzk3f834f4rwnb5mp0"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/darkroom.html")
     (synopsis "Remove visual distractions and focus on writing")
@@ -13526,8 +13683,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))
@@ -13540,7 +13697,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$")))
@@ -15565,11 +15722,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)
@@ -15579,7 +15736,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")
@@ -16215,6 +16372,42 @@ 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 "f38fb2294bd29261374b772f765730f2fa168b3e")
         (revision "3"))
@@ -17096,6 +17289,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
@@ -18054,7 +18326,7 @@ as:
 (define-public emacs-nhexl-mode
   (package
     (name "emacs-nhexl-mode")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method url-fetch)
@@ -18062,10 +18334,9 @@ as:
              "https://elpa.gnu.org/packages/nhexl-mode-"
              version ".el"))
        (sha256
-        (base32
-         "031h22p564qdvr9khs05qcba06pmsk68cr7zyc7c04hfr3y3ziaf"))))
+        (base32 "1fcy4ybr12dvswmzaqkv4798snb1x1y7ldxwrsgjv5sx7bb5j60z"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/nhexl-mode.html")
+    (home-page "https://elpa.gnu.org/packages/nhexl-mode.html")
     (synopsis "Minor mode to edit files via hex-dump format")
     (description
      "This package implements NHexl mode, a minor mode for editing files
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/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 8a302ba5bc..4339f14f35 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 1b6849a9aa..2ed505bbc4 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -6828,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/glib.scm b/gnu/packages/glib.scm
index c3dadbdfd3..c558d9fcb6 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -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 2a664e3db7..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.
@@ -2690,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/"
@@ -2698,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
@@ -2706,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
@@ -2716,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:
@@ -2784,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)))
@@ -3395,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
@@ -4134,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/"
@@ -4142,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")
@@ -4709,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 e0c11cb0a1..f97f687d36 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.
@@ -136,6 +136,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-"
@@ -168,6 +169,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/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index e09285d63a..13d228b856 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -245,7 +245,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "7.20190912")
+    (version "7.20191009")
     (source
      (origin
        (method url-fetch)
@@ -253,7 +253,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
         (base32
-         "1a3jvl5cx32v78s3015i10cx00jprm1391rpww4mzkk1vskzn9cv"))))
+         "10ycvjl9b3aa81zdz239ngjbbambfjrzds1a23wdlbjkn12nsg4g"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
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 a9b5b85a47..0e032d05db 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 a8aa72da19..ccde9d172d 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
@@ -1285,7 +1282,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
@@ -1294,7 +1291,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)
@@ -1465,18 +1462,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
@@ -1485,14 +1479,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 f937f50d6d..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
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index fb3c5ab6df..d55d1b4461 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -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/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/music.scm b/gnu/packages/music.scm
index ac4333168c..250f3136bb 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>
@@ -23,6 +23,7 @@
 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
 ;;; Copyright © 2019 raingloom <raingloom@protonmail.com>
+;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -593,12 +594,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 +612,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 +4629,82 @@ 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+)))
+
+(define-public playerctl
+  (package
+    (name "playerctl")
+    (version "2.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/altdesktop/playerctl.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
+    (inputs `(("python-pygobject" ,python-pygobject)))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Control MPRIS-supporting media player applications")
+    (description
+     "Playerctl is a command-line utility and library for controlling media
+players that implement the MPRIS D-Bus Interface Specification.  Playerctl
+makes it easy to bind player actions, such as play and pause, to media keys.
+You can also get metadata about the playing track such as the artist and title
+for integration into status line generators or other command-line tools.")
+    (home-page "https://github.com/altdesktop/playerctl")
+    (license license:lgpl3+)))
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 40fcb5a66c..3b7d4b18dd 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -127,7 +127,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1j2d9anxgybv86pxcn1zdv121hb4nmjjp5ngx365fnd0mcg8q1iw"))
+                  "0yx19hxvmkr6ar65ym87xd83n6hz02mr7ibwis7i8wah85ypfq26"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/patches/emacs-helm-org-ql.patch b/gnu/packages/patches/emacs-helm-org-ql.patch
deleted file mode 100644
index 362e3d7d15..0000000000
--- a/gnu/packages/patches/emacs-helm-org-ql.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 3918944856834ef4a7ed613243a1612424d2daba Mon Sep 17 00:00:00 2001
-From: Brian Leung <leungbk@mailfence.com>
-Date: Thu, 10 Oct 2019 06:54:33 +0200
-Subject: [PATCH] Use require statements.
-
----
- helm-org-ql.el | 19 ++-----------------
- 1 file changed, 2 insertions(+), 17 deletions(-)
-
-diff --git a/helm-org-ql.el b/helm-org-ql.el
-index 26beab9..113b7f2 100644
---- a/helm-org-ql.el
-+++ b/helm-org-ql.el
-@@ -35,23 +35,8 @@
- (require 'org-ql)
- (require 'org-ql-search)
- 
--;; (require 'helm)
--;; (require 'helm-org)
--
--;;;; Compatibility
--
--;; Declare Helm functions since Helm may not be installed.
--(declare-function helm "ext:helm")
--(declare-function helm-run-after-exit "ext:helm")
--(declare-function helm-window "ext:helm-lib")
--(declare-function helm-buffer-get "ext:helm-lib")
--(declare-function helm-make-source "ext:helm-source")
--(declare-function helm-org-goto-marker "ext:helm-org")
--
--;; Silence byte-compiler about variables.
--(defvar helm-map)
--(defvar helm-pattern)
--(defvar helm-input-idle-delay)
-+(require 'helm)
-+(require 'helm-org)
- 
- ;;;; Variables
- 
--- 
-2.23.0
-
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-xyz.scm b/gnu/packages/python-xyz.scm
index 10fe5ee553..8137d665fd 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.")
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/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 9ef95b42ed..31f9ae848e 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -88,7 +88,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/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/video.scm b/gnu/packages/video.scm
index dcd586c97a..8f4019b9c0 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2637,14 +2637,14 @@ supported players in addition to this package.")
 (define-public handbrake
   (package
     (name "handbrake")
-    (version "1.2.0")
+    (version "1.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.handbrake.fr/releases/"
                                   version "/HandBrake-" version "-source.tar.bz2"))
               (sha256
                (base32
-                "03clkknaq3mz84p85cvr21gsy9b8vv2g4vvyfz44hz8la253jfqi"))
+                "0k2yaqy7zi06k8mkp9az2mn9dlgj3a1339vacakfh2nn2zsics6z"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove "contrib" and source not necessary for
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index fc7626df38..5088aa07e0 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -466,15 +466,14 @@ servers that may need it).")
 (define-public starman
   (package
     (name "starman")
-    (version "0.4014")
+    (version "0.4015")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
                            "Starman-" version ".tar.gz"))
        (sha256
-        (base32
-         "1sbb5rb3vs82rlh1fjkgkcmj5pj62b4y9si4ihh45sl9m8c2qxx5"))))
+        (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-libwww" ,perl-libwww)
@@ -6544,6 +6543,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)
@@ -6622,6 +6622,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 bac6ac0d4d..51719a2b4f 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 5686a960e0..7af0d55750 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")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 5225c06a17..8c409eaebb 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -4394,14 +4394,14 @@ file.  This file can then be read by various other X utilities for
 redisplay, printing, editing, formatting, archiving, image processing,
 etc.  The target window is selected by clicking the pointer in the
 desired window.  The keyboard bell is rung once at the beginning of the
-dump and twice whenthe dump is completed.")
+dump and twice when the dump is completed.")
     (license license:x11)))
 
 
 (define-public xwininfo
   (package
     (name "xwininfo")
-    (version "1.1.4")
+    (version "1.1.5")
     (source
       (origin
         (method url-fetch)
@@ -4411,7 +4411,7 @@ dump and twice whenthe dump is completed.")
                ".tar.bz2"))
         (sha256
           (base32
-            "00avrpw4h5mr1klp41lv2j4dmq465v6l5kb5bhm4k5ml8sm9i543"))))
+            "03h8clirhw5ki1xxp18xbf5vynm7r0dwspsgfin6cxn4vx0m8h3s"))))
     (build-system gnu-build-system)
     (inputs
       `(("libx11" ,libx11)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index c9140074b7..3cc89f8852 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,12 +57,16 @@
   '((guix build gnu-build-system)
     (guix build utils)))
 
-(define* (package-with-explicit-inputs p inputs
-                                       #:optional
-                                       (loc (current-source-location))
-                                       #:key (native-inputs '())
-                                       guile)
-  "Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and
+(define* (package-with-explicit-inputs/deprecated p inputs
+                                                  #:optional
+                                                  (loc (current-source-location))
+                                                  #:key (native-inputs '())
+                                                  guile)
+  "This variant is deprecated because it is inefficient: it memoizes only
+temporarily instead of memoizing across all transformations where INPUTS is
+the same.
+
+Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and
 NATIVE-INPUTS as explicit inputs instead of the implicit default, and return
 it.  INPUTS and NATIVE-INPUTS can be either input lists or thunks; in the
 latter case, they will be called in a context where the `%current-system' and
@@ -124,6 +128,47 @@ builder, or the distro's final Guile when GUILE is #f."
            ,@(map rewritten-input
                   (filtered (package-inputs p)))))))))
 
+(define* (package-with-explicit-inputs* inputs #:optional guile)
+  "Return a procedure that rewrites the given package and all its dependencies
+so that they use INPUTS (a thunk) instead of implicit inputs."
+  (define (duplicate-filter package-inputs)
+    (let ((names (match (inputs)
+                   (((name _ ...) ...)
+                    name))))
+      (fold alist-delete package-inputs names)))
+
+  (define (add-explicit-inputs p)
+    (if (and (eq? (package-build-system p) gnu-build-system)
+             (not (memq #:implicit-inputs? (package-arguments p))))
+        (package
+          (inherit p)
+          (inputs (append (inputs)
+                          (duplicate-filter (package-inputs p))))
+          (arguments
+           (ensure-keyword-arguments (package-arguments p)
+                                     `(#:implicit-inputs? #f
+                                       #:guile ,guile))))
+        p))
+
+  (define (cut? p)
+    (and (eq? (package-build-system p) gnu-build-system)
+         (memq #:implicit-inputs? (package-arguments p))))
+
+  (package-mapping add-explicit-inputs cut?))
+
+(define package-with-explicit-inputs
+  (case-lambda*
+   ((inputs #:optional guile)
+    (package-with-explicit-inputs* inputs guile))
+   ((p inputs #:optional (loc (current-source-location))
+       #:key (native-inputs '()) guile)
+    ;; deprecated
+    (package-with-explicit-inputs/deprecated p inputs
+                                             loc
+                                             #:native-inputs
+                                             native-inputs
+                                             #:guile guile))))
+
 (define (package-with-extra-configure-variable p variable value)
   "Return a version of P with VARIABLE=VALUE specified as an extra `configure'
 flag, recursively.  An example is LDFLAGS=-static.  If P already has configure
diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm
index 5e76d64180..aad455c419 100644
--- a/guix/build-system/scons.scm
+++ b/guix/build-system/scons.scm
@@ -76,7 +76,9 @@
                       #:key
                       (tests? #t)
                       (scons-flags ''())
+                      (build-targets ''())
                       (test-target "test")
+                      (install-targets ''("install"))
                       (phases '(@ (guix build scons-build-system)
                                   %standard-phases))
                       (outputs '("out"))
@@ -101,8 +103,10 @@ provides a 'SConstruct' file as its build system."
                                  source))
                     #:scons-flags ,scons-flags
                     #:system ,system
+                    #:build-targets ,build-targets
                     #:test-target ,test-target
                     #:tests? ,tests?
+                    #:install-targets ,install-targets
                     #:phases ,phases
                     #:outputs %outputs
                     #:search-paths ',(map search-path-specification->sexp
diff --git a/guix/build/scons-build-system.scm b/guix/build/scons-build-system.scm
index eb013f03b6..17a0b7b877 100644
--- a/guix/build/scons-build-system.scm
+++ b/guix/build/scons-build-system.scm
@@ -29,7 +29,7 @@
 ;;
 ;; Code:
 
-(define* (build #:key outputs (scons-flags '()) (parallel-build? #t) #:allow-other-keys)
+(define* (build #:key outputs (build-targets '()) (scons-flags '()) (parallel-build? #t) #:allow-other-keys)
   (let ((out (assoc-ref outputs "out")))
     (mkdir-p out)
     (apply invoke "scons"
@@ -37,7 +37,8 @@
                        (list "-j" (number->string
                                    (parallel-job-count)))
                        (list))
-                   scons-flags))))
+                   scons-flags
+                   build-targets))))
 
 (define* (check #:key tests? test-target (scons-flags '()) #:allow-other-keys)
   "Run the test suite of a given SCons application."
@@ -46,9 +47,9 @@
       (format #t "test suite not run~%"))
   #t)
 
-(define* (install #:key outputs (scons-flags '()) #:allow-other-keys)
+(define* (install #:key outputs (install-targets '("install")) (scons-flags '()) #:allow-other-keys)
   "Install a given SCons application."
-  (apply invoke "scons" "install" scons-flags))
+  (apply invoke "scons" (append scons-flags install-targets)))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 600750e846..7323277511 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1508,7 +1508,7 @@ are searched for in PATH.  Return #f when MODULES and EXTENSIONS are empty."
          (gexp (eval-when (expand load eval)
                  ;; Augment the load paths and delete duplicates.  Do that
                  ;; without loading (srfi srfi-1) or anything.
-                 (let ((extensions '((ungexp-native-splicing extensions)))
+                 (let ((extensions '((ungexp-splicing extensions)))
                        (prepend (lambda (items lst)
                                   ;; This is O(N²) but N is typically small.
                                   (let loop ((items items)