summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am3
-rw-r--r--doc/guix.texi128
-rw-r--r--doc/images/gcc-mesboot-bag-graph.dot123
-rw-r--r--doc/local.mk1
-rw-r--r--etc/news.scm62
-rw-r--r--gnu/build/bootloader.scm62
-rw-r--r--gnu/build/cross-toolchain.scm8
-rw-r--r--gnu/local.mk102
-rw-r--r--gnu/packages.scm25
-rw-r--r--gnu/packages/acl.scm24
-rw-r--r--gnu/packages/adns.scm47
-rw-r--r--gnu/packages/android.scm6
-rw-r--r--gnu/packages/aspell.scm3
-rw-r--r--gnu/packages/assembly.scm4
-rw-r--r--gnu/packages/attr.scm19
-rw-r--r--gnu/packages/audio.scm60
-rw-r--r--gnu/packages/authentication.scm15
-rw-r--r--gnu/packages/avr.scm14
-rw-r--r--gnu/packages/backup.scm65
-rw-r--r--gnu/packages/base.scm174
-rw-r--r--gnu/packages/bash.scm47
-rw-r--r--gnu/packages/bdw-gc.scm23
-rw-r--r--gnu/packages/bioinformatics.scm39
-rw-r--r--gnu/packages/bison.scm14
-rw-r--r--gnu/packages/bittorrent.scm3
-rw-r--r--gnu/packages/boost.scm11
-rw-r--r--gnu/packages/bootstrap.scm455
-rwxr-xr-xgnu/packages/bootstrap/aarch64-linux/bashbin1162056 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/aarch64-linux/mkdirbin558216 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/aarch64-linux/tarbin1085128 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/aarch64-linux/xzbin738576 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/armhf-linux/bashbin802224 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/armhf-linux/mkdirbin401544 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/armhf-linux/tarbin755356 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/armhf-linux/xzbin502884 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/bashbin1351732 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/mkdirbin714316 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/tarbin1285420 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/i686-linux/xzbin861836 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/mips64el-linux/bashbin1409080 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/mips64el-linux/mkdirbin698500 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/mips64el-linux/tarbin1283708 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/mips64el-linux/xzbin851736 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/bashbin1425560 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/mkdirbin792448 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/tarbin1369912 -> 0 bytes
-rwxr-xr-xgnu/packages/bootstrap/x86_64-linux/xzbin927264 -> 0 bytes
-rw-r--r--gnu/packages/build-tools.scm4
-rw-r--r--gnu/packages/check.scm125
-rw-r--r--gnu/packages/chromium.scm6
-rw-r--r--gnu/packages/cmake.scm107
-rw-r--r--gnu/packages/code.scm21
-rw-r--r--gnu/packages/commencement.scm1838
-rw-r--r--gnu/packages/compression.scm80
-rw-r--r--gnu/packages/cpp.scm35
-rw-r--r--gnu/packages/cross-base.scm68
-rw-r--r--gnu/packages/crypto.scm8
-rw-r--r--gnu/packages/curl.scm36
-rw-r--r--gnu/packages/databases.scm4
-rw-r--r--gnu/packages/dbm.scm87
-rw-r--r--gnu/packages/documentation.scm6
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/ed.scm6
-rw-r--r--gnu/packages/education.scm3
-rw-r--r--gnu/packages/emacs-xyz.scm2
-rw-r--r--gnu/packages/embedded.scm3
-rw-r--r--gnu/packages/emulators.scm6
-rw-r--r--gnu/packages/file.scm9
-rw-r--r--gnu/packages/finance.scm13
-rw-r--r--gnu/packages/firmware.scm3
-rw-r--r--gnu/packages/flex.scm13
-rw-r--r--gnu/packages/fonts.scm12
-rw-r--r--gnu/packages/fontutils.scm44
-rw-r--r--gnu/packages/freedesktop.scm7
-rw-r--r--gnu/packages/games.scm51
-rw-r--r--gnu/packages/gawk.scm4
-rw-r--r--gnu/packages/gcc.scm18
-rw-r--r--gnu/packages/gd.scm13
-rw-r--r--gnu/packages/geo.scm41
-rw-r--r--gnu/packages/gettext.scm67
-rw-r--r--gnu/packages/ghostscript.scm22
-rw-r--r--gnu/packages/gl.scm24
-rw-r--r--gnu/packages/glib.scm196
-rw-r--r--gnu/packages/gnome.scm733
-rw-r--r--gnu/packages/gnupg.scm20
-rw-r--r--gnu/packages/gnuzilla.scm3
-rw-r--r--gnu/packages/golang.scm16
-rw-r--r--gnu/packages/gps.scm6
-rw-r--r--gnu/packages/graphics.scm3
-rw-r--r--gnu/packages/groff.scm67
-rw-r--r--gnu/packages/gsasl.scm4
-rw-r--r--gnu/packages/gstreamer.scm17
-rw-r--r--gnu/packages/gtk.scm35
-rw-r--r--gnu/packages/guile.scm49
-rw-r--r--gnu/packages/ibus.scm6
-rw-r--r--gnu/packages/icu4c.scm68
-rw-r--r--gnu/packages/image.scm89
-rw-r--r--gnu/packages/inkscape.scm8
-rw-r--r--gnu/packages/java.scm33
-rw-r--r--gnu/packages/jemalloc.scm4
-rw-r--r--gnu/packages/kde.scm6
-rw-r--r--gnu/packages/kerberos.scm25
-rw-r--r--gnu/packages/libevent.scm26
-rw-r--r--gnu/packages/libffi.scm30
-rw-r--r--gnu/packages/libidn.scm4
-rw-r--r--gnu/packages/libreoffice.scm8
-rw-r--r--gnu/packages/libusb.scm2
-rw-r--r--gnu/packages/linux.scm52
-rw-r--r--gnu/packages/machine-learning.scm19
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/make-bootstrap.scm87
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/mate.scm2
-rw-r--r--gnu/packages/maths.scm22
-rw-r--r--gnu/packages/mes.scm52
-rw-r--r--gnu/packages/mpd.scm33
-rw-r--r--gnu/packages/mpi.scm6
-rw-r--r--gnu/packages/multiprecision.scm4
-rw-r--r--gnu/packages/music.scm23
-rw-r--r--gnu/packages/ncurses.scm23
-rw-r--r--gnu/packages/nettle.scm4
-rw-r--r--gnu/packages/networking.scm51
-rw-r--r--gnu/packages/ninja.scm2
-rw-r--r--gnu/packages/node.scm33
-rw-r--r--gnu/packages/onc-rpc.scm33
-rw-r--r--gnu/packages/openldap.scm17
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/password-utils.scm2
-rw-r--r--gnu/packages/patches/acl-fix-perl-regex.patch22
-rw-r--r--gnu/packages/patches/acl-hurd-path-max.patch80
-rw-r--r--gnu/packages/patches/aspell-gcc-compat.patch31
-rw-r--r--gnu/packages/patches/binutils-boot-2.20.1a.patch157
-rw-r--r--gnu/packages/patches/boost-fix-icu-build.patch53
-rw-r--r--gnu/packages/patches/dbus-CVE-2019-12749.patch116
-rw-r--r--gnu/packages/patches/dbus-c++-gcc-compat.patch14
-rw-r--r--gnu/packages/patches/dbus-c++-threading-mutex.patch37
-rw-r--r--gnu/packages/patches/diffutils-getopt.patch44
-rw-r--r--gnu/packages/patches/evolution-data-server-locales.patch33
-rw-r--r--gnu/packages/patches/expat-CVE-2018-20843.patch21
-rw-r--r--gnu/packages/patches/gcc-7-cross-mingw.patch24
-rw-r--r--gnu/packages/patches/gcc-boot-2.95.3.patch137
-rw-r--r--gnu/packages/patches/gcc-boot-4.7.4.patch68
-rw-r--r--gnu/packages/patches/gdm-CVE-2018-14424.patch172
-rw-r--r--gnu/packages/patches/glib-networking-connection.patch51
-rw-r--r--gnu/packages/patches/glibc-2.27-supported-locales.patch33
-rw-r--r--gnu/packages/patches/glibc-2.28-supported-locales.patch33
-rw-r--r--gnu/packages/patches/glibc-2.29-git-updates.patch742
-rw-r--r--gnu/packages/patches/glibc-CVE-2019-7309.patch76
-rw-r--r--gnu/packages/patches/glibc-CVE-2019-9169.patch22
-rw-r--r--gnu/packages/patches/glibc-boot-2.16.0.patch352
-rw-r--r--gnu/packages/patches/glibc-boot-2.2.5.patch251
-rw-r--r--gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch30
-rw-r--r--gnu/packages/patches/glibc-bootstrap-system.patch34
-rw-r--r--gnu/packages/patches/glibc-locales-2.28.patch31
-rw-r--r--gnu/packages/patches/glibc-locales.patch17
-rw-r--r--gnu/packages/patches/glibc-supported-locales.patch33
-rw-r--r--gnu/packages/patches/gnome-control-center-udisks.patch221
-rw-r--r--gnu/packages/patches/go-skip-gc-test.patch17
-rw-r--r--gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch144
-rw-r--r--gnu/packages/patches/gobject-introspection-cc.patch11
-rw-r--r--gnu/packages/patches/groff-source-date-epoch.patch299
-rw-r--r--gnu/packages/patches/guile-2.2-default-utf8.patch36
-rw-r--r--gnu/packages/patches/guile-2.2-skip-oom-test.patch25
-rw-r--r--gnu/packages/patches/guile-relocatable.patch18
-rw-r--r--gnu/packages/patches/handbrake-opt-in-nvenc.patch14
-rw-r--r--gnu/packages/patches/hdf4-tirpc.patch33
-rw-r--r--gnu/packages/patches/inkscape-poppler-0.76.patch36
-rw-r--r--gnu/packages/patches/libarchive-CVE-2017-14166.patch45
-rw-r--r--gnu/packages/patches/libarchive-CVE-2017-14502.patch40
-rw-r--r--gnu/packages/patches/libarchive-CVE-2018-1000877.patch45
-rw-r--r--gnu/packages/patches/libarchive-CVE-2018-1000878.patch86
-rw-r--r--gnu/packages/patches/libarchive-CVE-2018-1000880.patch51
-rw-r--r--gnu/packages/patches/libcroco-CVE-2017-7960.patch66
-rw-r--r--gnu/packages/patches/libcroco-CVE-2017-7961.patch50
-rw-r--r--gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch32
-rw-r--r--gnu/packages/patches/libgdata-fix-tests.patch325
-rw-r--r--gnu/packages/patches/libgdata-glib-duplicate-tests.patch16
-rw-r--r--gnu/packages/patches/libgpg-error-gawk-compat.patch155
-rw-r--r--gnu/packages/patches/libmp4v2-c++11.patch14
-rw-r--r--gnu/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch33
-rw-r--r--gnu/packages/patches/libxt-guix-search-paths.patch42
-rw-r--r--gnu/packages/patches/mescc-tools-boot.patch222
-rw-r--r--gnu/packages/patches/perl-no-sys-dirs.patch23
-rw-r--r--gnu/packages/patches/python-2.7-search-paths.patch4
-rw-r--r--gnu/packages/patches/python-3-deterministic-build-info.patch4
-rw-r--r--gnu/packages/patches/python-3-fix-tests.patch368
-rw-r--r--gnu/packages/patches/python-3-search-paths.patch8
-rw-r--r--gnu/packages/patches/python-fix-tests.patch147
-rw-r--r--gnu/packages/patches/python-keras-integration-test.patch19
-rw-r--r--gnu/packages/patches/python-libxml2-utf8.patch40
-rw-r--r--gnu/packages/patches/python-pep8-stdlib-tokenize-compat.patch35
-rw-r--r--gnu/packages/patches/python2-CVE-2018-1000802.patch47
-rw-r--r--gnu/packages/patches/python2-CVE-2018-14647.patch61
-rw-r--r--gnu/packages/patches/qemu-CVE-2018-16872.patch88
-rw-r--r--gnu/packages/patches/qemu-CVE-2019-6778.patch43
-rw-r--r--gnu/packages/patches/rapidjson-gcc-compat.patch18
-rw-r--r--gnu/packages/patches/sssd-curl-compat.patch18
-rw-r--r--gnu/packages/patches/supercollider-boost-1.70-build-fix.patch28
-rw-r--r--gnu/packages/patches/supertux-fix-build-with-gcc5.patch75
-rw-r--r--gnu/packages/patches/tcc-boot-0.9.27.patch26
-rw-r--r--gnu/packages/patches/texinfo-perl-compat.patch51
-rw-r--r--gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch341
-rw-r--r--gnu/packages/patches/util-linux-tests.patch13
-rw-r--r--gnu/packages/pcre.scm4
-rw-r--r--gnu/packages/pdf.scm10
-rw-r--r--gnu/packages/perl.scm4
-rw-r--r--gnu/packages/polkit.scm3
-rw-r--r--gnu/packages/pulseaudio.scm2
-rw-r--r--gnu/packages/python-web.scm4
-rw-r--r--gnu/packages/python-xyz.scm305
-rw-r--r--gnu/packages/python.scm153
-rw-r--r--gnu/packages/qt.scm13
-rw-r--r--gnu/packages/readline.scm28
-rw-r--r--gnu/packages/ruby.scm4
-rw-r--r--gnu/packages/rust.scm9
-rw-r--r--gnu/packages/samba.scm2
-rw-r--r--gnu/packages/scribus.scm1
-rw-r--r--gnu/packages/sdl.scm10
-rw-r--r--gnu/packages/selinux.scm3
-rw-r--r--gnu/packages/serialization.scm23
-rw-r--r--gnu/packages/simulation.scm2
-rw-r--r--gnu/packages/sqlite.scm35
-rw-r--r--gnu/packages/squirrel.scm2
-rw-r--r--gnu/packages/ssh.scm32
-rw-r--r--gnu/packages/sssd.scm9
-rw-r--r--gnu/packages/stb.scm10
-rw-r--r--gnu/packages/storage.scm23
-rw-r--r--gnu/packages/swig.scm10
-rw-r--r--gnu/packages/synergy.scm3
-rw-r--r--gnu/packages/tcl.scm11
-rw-r--r--gnu/packages/tex.scm26
-rw-r--r--gnu/packages/texinfo.scm5
-rw-r--r--gnu/packages/time.scm22
-rw-r--r--gnu/packages/tls.scm268
-rw-r--r--gnu/packages/version-control.scm13
-rw-r--r--gnu/packages/video.scm17
-rw-r--r--gnu/packages/virtualization.scm42
-rw-r--r--gnu/packages/vulkan.scm13
-rw-r--r--gnu/packages/web-browsers.scm10
-rw-r--r--gnu/packages/web.scm30
-rw-r--r--gnu/packages/webkit.scm52
-rw-r--r--gnu/packages/wm.scm18
-rw-r--r--gnu/packages/xdisorg.scm4
-rw-r--r--gnu/packages/xml.scm46
-rw-r--r--gnu/packages/xorg.scm68
-rw-r--r--gnu/system.scm4
-rw-r--r--guix/build-system/cmake.scm2
-rw-r--r--guix/build-system/meson.scm2
-rw-r--r--guix/build/gnu-build-system.scm130
-rw-r--r--guix/build/go-build-system.scm2
-rw-r--r--guix/build/meson-build-system.scm1
-rw-r--r--guix/build/python-build-system.scm33
-rw-r--r--guix/build/syscalls.scm16
-rw-r--r--guix/build/utils.scm230
-rw-r--r--guix/download.scm28
-rw-r--r--guix/gexp.scm75
-rw-r--r--guix/packages.scm51
-rw-r--r--guix/scripts/environment.scm10
-rw-r--r--guix/scripts/pack.scm6
-rw-r--r--guix/self.scm1
-rw-r--r--guix/tests.scm68
-rw-r--r--po/doc/guix-manual.de.po2
-rw-r--r--po/guix/POTFILES.in4
-rw-r--r--tests/build-utils.scm104
-rw-r--r--tests/builders.scm40
-rw-r--r--tests/derivations.scm1
-rw-r--r--tests/grafts.scm1
-rw-r--r--tests/graph.scm4
-rw-r--r--tests/guix-daemon.sh4
-rw-r--r--tests/guix-environment.sh27
-rw-r--r--tests/guix-package-net.sh2
-rw-r--r--tests/packages.scm57
-rw-r--r--tests/profiles.scm7
-rw-r--r--tests/search-paths.scm8
-rw-r--r--tests/union.scm8
276 files changed, 9225 insertions, 5562 deletions
diff --git a/.gitignore b/.gitignore
index 38cde42fca..df59a9176e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -150,3 +150,4 @@ tmp
 /etc/indent-code.el
 /.version
 /doc/stamp-[0-9]
+/gnu/packages/bootstrap
diff --git a/Makefile.am b/Makefile.am
index 6a4cfcd4a1..2b78091af3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -609,7 +609,7 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
 # The above trick doesn't work for 'config.go' because both 'config.scm' and
 # 'config.go' are listed in $(nobase_nodist_guileobject_DATA).  Thus, give it
 # special treatment.
-install-data-hook: set-bootstrap-executable-permissions
+install-data-hook:
 	touch "$(DESTDIR)$(guileobjectdir)/guix/config.go"
 
 # Assuming Guix is already installed and the daemon is up and running, this
@@ -825,6 +825,7 @@ assert-no-store-file-names:
 	     --exclude=guix-cookbook.pot --exclude=guix-cookbook.*.po		\
 	     --exclude=guix-prettify.el						\
 	     --exclude=ChangeLog*						\
+	     --exclude=binutils-boot-2.20*.patch				\
 	     -E "$(storedir)/[a-z0-9]{32}-" $(distdir) ;			\
 	then									\
 	  echo "error: store file names embedded in the distribution" >&2 ;	\
diff --git a/doc/guix.texi b/doc/guix.texi
index 14c4514b31..6b637ddfe9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -26969,7 +26969,80 @@ Binutils, libc, and the other packages mentioned above---the
 These bootstrap binaries are ``taken for granted'', though we can also
 re-create them if needed (more on that later).
 
-@unnumberedsec Preparing to Use the Bootstrap Binaries
+For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
+more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
+
+@menu
+* Reduced Binary Seed Bootstrap::  A Bootstrap worthy of GNU.
+* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
+@end menu
+
+@node Reduced Binary Seed Bootstrap
+@section The Reduced Binary Seed Bootstrap
+
+Guix---like other GNU/Linux distributions---is traditionally bootstrapped from
+a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU
+Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
+GNU C Library (@pxref{Bootstrapping}).  Usually, these bootstrap binaries are
+``taken for granted.''
+
+Taking these binaries for granted means that we consider them to be a correct
+and trustworthy `seed' for building the complete system.  Therein lies a
+problem: the current combined size of these bootstrap binaries is about 250MB
+(@pxref{Bootstrappable Builds,,, mes, GNU Mes}).  Auditing or even inspecting
+these is next to impossible.
+
+For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
+Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
+Bootstrap'' and while we are working towards that goal it would be hyperbole
+to use that term for what we do now.}.
+
+The Reduced Binary Seed bootstrap removes the most critical tools---from a
+trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
+Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and
+linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler
+written in Scheme and the Mes C Library, built for TinyCC and for GCC).  Using
+these new binary seeds and a new set of
+@c
+packages@footnote{@c
+nyacc-boot,
+mes-boot,
+tcc-boot0,
+tcc-boot,
+make-mesboot0,
+diffutils-mesboot,
+binutils-mesboot0,
+gcc-core-mesboot,
+mesboot-headers,
+glibc-mesboot0,
+gcc-mesboot0,
+binutils-mesboot,
+make-mesboot,
+gcc-mesboot1,
+gcc-mesboot1-wrapper,
+glibc-headers-mesboot,
+glibc-mesboot,
+gcc-mesboot,
+and
+gcc-mesboot-wrapper.
+}
+@c
+the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
+From here on the more traditional bootstrap process resumes.  This approach
+has reduced the bootstrap binaries in size to about 130MB.  Work is ongoing to
+reduce this further.  If you are interested, join us on @code{#bootstrappable}
+on the Freenode IRC network.
+
+@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
+@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
+
+Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
+compiler used to build the rest of GuixSD.
+
+@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
+
+@node Preparing to Use the Bootstrap Binaries
+@section Preparing to Use the Bootstrap Binaries
 
 @c As of Emacs 24.3, Info-mode displays the image, but since it's a
 @c large image, it's hard to scroll.  Oh well.
@@ -26983,7 +27056,15 @@ packages bootstrap)} module.  A similar figure can be generated with
 @example
 guix graph -t derivation \
   -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \
-  | dot -Tps > t.ps
+  | dot -Tps > gcc.ps
+@end example
+
+or, for the Reduced Binary Seed bootstrap
+
+@example
+guix graph -t derivation \
+  -e '(@@@@ (gnu packages bootstrap) %bootstrap-mes)' \
+  | dot -Tps > mes.ps
 @end example
 
 At this level of detail, things are
@@ -27015,10 +27096,10 @@ write them in an output directory with the right layout.  This
 corresponds to the @code{#:modules} argument of
 @code{build-expression->derivation} (@pxref{Derivations}).
 
-Finally, the various tarballs are unpacked by the
-derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv},
-etc., at which point we have a working C tool chain.
-
+Finally, the various tarballs are unpacked by the derivations
+@code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, or
+@code{bootstrap-mes-0.drv} and @code{bootstrap-mescc-tools-0.drv}, at which
+point we have a working C tool chain.
 
 @unnumberedsec Building the Build Tools
 
@@ -27083,9 +27164,11 @@ those rarely need to be updated.  Nevertheless, it is useful to have an
 automated way to produce them, should an update occur, and this is what
 the @code{(gnu packages make-bootstrap)} module provides.
 
-The following command builds the tarballs containing the bootstrap
-binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture
-of Coreutils and other basic command-line tools):
+The following command builds the tarballs containing the bootstrap binaries
+(Binutils, GCC, glibc, for the traditional bootstrap and linux-libre-headers,
+bootstrap-mescc-tools, bootstrap-mes for the Reduced Binary Seed bootstrap,
+and Guile, and a tarball containing a mixture of Coreutils and other basic
+command-line tools):
 
 @example
 guix build bootstrap-tarballs
@@ -27103,12 +27186,12 @@ know.
 
 @unnumberedsec Reducing the Set of Bootstrap Binaries
 
-Our bootstrap binaries currently include GCC, Guile, etc.  That's a lot
-of binary code!  Why is that a problem?  It's a problem because these
-big chunks of binary code are practically non-auditable, which makes it
-hard to establish what source code produced them.  Every unauditable
-binary also leaves us vulnerable to compiler backdoors as described by
-Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}.
+Our traditional bootstrap includes GCC, GNU Libc, Guile, etc.  That's a lot of
+binary code!  Why is that a problem?  It's a problem because these big chunks
+of binary code are practically non-auditable, which makes it hard to establish
+what source code produced them.  Every unauditable binary also leaves us
+vulnerable to compiler backdoors as described by Ken Thompson in the 1984
+paper @emph{Reflections on Trusting Trust}.
 
 This is mitigated by the fact that our bootstrap binaries were generated
 from an earlier Guix revision.  Nevertheless it lacks the level of
@@ -27120,8 +27203,19 @@ The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists
 on-going projects to do that.  One of these is about replacing the
 bootstrap GCC with a sequence of assemblers, interpreters, and compilers
 of increasing complexity, which could be built from source starting from
-a simple and auditable assembler.  Your help is welcome!
-
+a simple and auditable assembler.
+
+Our first major achievement is the replacement of of GCC, the GNU C Library
+and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes
+(@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a Scheme interpreter
+and C compiler in Scheme).  Neither MesCC-Tools nor Mes can be fully
+bootstrapped yet and thus we inject them as binary seeds.  We call this the
+Reduced Binary Seed bootstrap, as it has halved the size of our bootstrap
+binaries!  Also, it has eliminated the C compiler binary; i686-linux and
+x86_64-linux Guix packages are now bootstrapped without any binary C compiler.
+
+Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are
+also looking at any other bootstrap binaries.  Your help is welcome!
 
 @node Porting
 @chapter Porting to a New Platform
diff --git a/doc/images/gcc-mesboot-bag-graph.dot b/doc/images/gcc-mesboot-bag-graph.dot
new file mode 100644
index 0000000000..74d1896fb1
--- /dev/null
+++ b/doc/images/gcc-mesboot-bag-graph.dot
@@ -0,0 +1,123 @@
+digraph "Guix bag" {
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkviolet];
+  "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkviolet];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = dimgrey];
+  "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey];
+  "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
+  "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4];
+  "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
+  "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
+  "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = peachpuff4];
+  "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4];
+  "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
+  "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = cyan3];
+  "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = cyan3];
+  "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
+  "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [label = "mes-boot@0.18", shape = box, fontname = Helvetica];
+  "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkviolet];
+  "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet];
+  "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = darkviolet];
+  "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
+  "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
+  "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
+  "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica];
+  "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = dimgrey];
+  "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
+  "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
+  "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = dimgrey];
+  "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
+  "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = peachpuff4];
+  "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4];
+  "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
+  "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
+  "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4];
+  "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
+  "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = darkgoldenrod];
+  "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
+  "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = darkseagreen];
+  "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = dimgrey];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey];
+  "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey];
+  "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [label = "mesboot-headers@0.18", shape = box, fontname = Helvetica];
+  "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
+  "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
+  "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
+  "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen];
+  "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica];
+  "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = red];
+  "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = blue];
+  "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = blue];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = red];
+  "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = red];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
+  "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkseagreen];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = magenta];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = magenta];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = magenta];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = magenta];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta];
+  "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = magenta];
+
+}
diff --git a/doc/local.mk b/doc/local.mk
index 850612605b..a361f2388e 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -38,6 +38,7 @@ DOT_FILES =					\
   %D%/images/bootstrap-packages.dot		\
   %D%/images/coreutils-graph.dot		\
   %D%/images/coreutils-bag-graph.dot		\
+  %D%/images/gcc-mesboot-bag-graph.dot		\
   %D%/images/service-graph.dot			\
   %D%/images/shepherd-graph.dot
 
diff --git a/etc/news.scm b/etc/news.scm
index 736e8b5516..890f30af76 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -8,6 +8,68 @@
 
 (channel-news
  (version 0)
+
+ (entry (commit "5f3f70391809f8791c55c05bd1646bc58508fa2c")
+        (title (en "GNU C Library upgraded")
+	       (fr "Mise à jour de la bibliothèque C de GNU"))
+        (body
+         (en "The GNU C Library (glibc) has been upgraded to version 2.29.  To
+run previously-installed programs linked against glibc 2.28, you need to
+install locale data for version 2.28 in addition to locale data for 2.29:
+
+@example
+guix install glibc-locales glibc-locales-2.28
+@end example
+
+On Guix System, you can adjust the @code{locale-libcs} field of your
+@code{operating-system} form.  Run @code{info \"(guix) Locales\"}, for more
+info.")
+         (de "Die GNU-C-Bibliothek (glibc) wurde auf Version 2.29
+aktualisiert. Um zuvor installierte Programme, die an glibc 2.28 gebunden
+worden sind, weiter benutzen zu können, müssen Sie Locale-Daten für Version
+2.28 zusätzlich zu den Locale-Daten für 2.29 installieren:
+
+@example
+guix install glibc-locales glibc-locales-2.28
+@end example
+
+Auf Guix System genügt es, das @code{locale-libcs}-Feld Ihrer
+@code{operating-system}-Form anzupassen. Führen Sie @code{info \"(guix.de)
+Locales\"} aus, um weitere Informationen dazu zu erhalten.")
+         (fr "La bibliothèque C de GNU (glibc) a été mise à jour en version
+2.29.  Pour pouvoir lancer tes programmes déjà installés et liés à glibc 2.28,
+tu dois installer les données pour la version 2.28 en plus des données de
+régionalisation pour la version 2.29 :
+
+@example
+guix install glibc-locales glibc-locales-2.28
+@end example
+
+Sur le système Guix, tu peux ajuster le champ @code{locale-libcs} de ta forme
+@code{operating-system}.  Lance @code{info \"(guix.fr) Régionalisation\"} pour
+plus de détails.")))
+ (entry (commit "cdd3bcf03883d129581a79e6d6611b2afd3b277b")
+        (title (en "New reduced binary seed bootstrap")
+	       (fr "Nouvel ensemble de binaires de bootstrap réduit"))
+        (body
+         (en "The package graph on x86_64 and i686 is now rooted in a
+@dfn{reduced set of binary seeds}.  The initial set of binaries from which
+packages are built now weighs in at approximately 130 MiB, half of what it
+used to be.  Run @code{info \"(guix) Bootstrapping\"} to learn more, or watch
+the talk at @uref{https://archive.fosdem.org/2019/schedule/event/gnumes/}.")
+         (de "Der Paketgraph auf x86_64 und i686 hat jetzt eine @dfn{kleinere
+Menge an binären Seeds}. Das heißt, die ursprüngliche Menge an Binärdateien,
+aus denen heraus Pakete erstellt werden, machen nun ungefähr 130 MiB aus, halb
+so viel wie früher. Führen Sie @code{info \"(guix.de) Bootstrapping\"} aus, um
+mehr zu erfahren, oder schauen Sie sich den Vortrag auf
+@uref{https://archive.fosdem.org/2019/schedule/event/gnumes/} an.")
+         (fr "Le graphe des paquets sur x86_64 et i686 prend maintenant sa
+source dans un @dfn{ensemble réduit de binaires}.  L'ensemble initial des
+binaires à partir desquels les paquets sont construits pèse maintenant environ
+130 Mio, soit la moitié par rapport à l'ensemble précédent.  Tu peux lancer
+@code{info \"(guix) Bootstrapping\"} pour plus de détails, ou regarder la
+présentation sur @uref{https://archive.fosdem.org/2019/schedule/event/gnumes/}.")))
+
  (entry (commit "dcc90d15581189dbc30e201db2b807273d6484f0")
         (title (en "New channel news mechanism")
                (de "Neuer Mechanismus, um Neuigkeiten über Kanäle anzuzeigen.")
diff --git a/gnu/build/bootloader.scm b/gnu/build/bootloader.scm
index c5febcde1e..9570d6dd18 100644
--- a/gnu/build/bootloader.scm
+++ b/gnu/build/bootloader.scm
@@ -18,15 +18,8 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu build bootloader)
-  #:use-module (srfi srfi-34)
-  #:use-module (srfi srfi-35)
   #:use-module (ice-9 binary-ports)
-  #:use-module (ice-9 popen)
-  #:use-module (ice-9 match)
-  #:use-module (ice-9 rdelim)
-  #:use-module (ice-9 format)
-  #:export (write-file-on-device
-            invoke/quiet))
+  #:export (write-file-on-device))
 
 
 ;;;
@@ -43,56 +36,3 @@
             (seek output offset SEEK_SET)
             (put-bytevector output bv))
           #:binary #t)))))
-
-(define-syntax-rule (G_ str) str)                 ;for xgettext
-
-(define (open-pipe-with-stderr program . args)
-  "Run PROGRAM with ARGS in an input pipe, but, unlike 'open-pipe*', redirect
-both its standard output and standard error to the pipe.  Return two value:
-the pipe to read PROGRAM's data from, and the PID of the child process running
-PROGRAM."
-  ;; 'open-pipe*' doesn't attempt to capture stderr in any way, which is why
-  ;; we need to roll our own.
-  (match (pipe)
-    ((input .  output)
-     (match (primitive-fork)
-       (0
-        (dynamic-wind
-          (const #t)
-          (lambda ()
-            (close-port input)
-            (dup2 (fileno output) 1)
-            (dup2 (fileno output) 2)
-            (apply execlp program program args))
-          (lambda ()
-            (primitive-exit 127))))
-       (pid
-        (close-port output)
-        (values input pid))))))
-
-;; TODO: Move to (guix build utils) on the next rebuild cycle.
-(define (invoke/quiet program . args)
-  "Invoke PROGRAM with ARGS and capture PROGRAM's standard output and standard
-error.  If PROGRAM succeeds, print nothing and return the unspecified value;
-otherwise, raise a '&message' error condition that includes the status code
-and the output of PROGRAM."
-  (define-values (pipe pid)
-    (apply open-pipe-with-stderr program args))
-
-  (let loop ((lines '()))
-    (match (read-line pipe)
-      ((? eof-object?)
-       (close-port pipe)
-       (match (waitpid pid)
-         ((_ . status)
-          (unless (zero? status)
-            (raise (condition
-                    (&message
-                     (message (format #f (G_ "'~a~{ ~a~}' exited with status ~a; \
-output follows:~%~%~{  ~a~%~}")
-                                      program args
-                                      (or (status:exit-val status)
-                                          status)
-                                      (reverse lines))))))))))
-      (line
-       (loop (cons line lines))))))
diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm
index 7ab0a355b0..6bdbdd5411 100644
--- a/gnu/build/cross-toolchain.scm
+++ b/gnu/build/cross-toolchain.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Carl Dong <contact@carldong.me>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -37,11 +38,8 @@
 
 (define %gcc-include-paths
   ;; Environment variables for header search paths.
-  ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'.
-  '("C_INCLUDE_PATH"
-    "CPLUS_INCLUDE_PATH"
-    "OBJC_INCLUDE_PATH"
-    "OBJCPLUS_INCLUDE_PATH"))
+  ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co.
+  '("CPATH"))
 
 (define %gcc-cross-include-paths
   ;; Search path for target headers when cross-compiling.
diff --git a/gnu/local.mk b/gnu/local.mk
index a6fe439904..9bd1e8882b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -676,8 +676,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/a2ps-CVE-2015-8107.patch	\
   %D%/packages/patches/abiword-explictly-cast-bools.patch	\
   %D%/packages/patches/abiword-black-drawing-with-gtk322.patch	\
-  %D%/packages/patches/acl-fix-perl-regex.patch		\
-  %D%/packages/patches/acl-hurd-path-max.patch			\
   %D%/packages/patches/adb-add-libraries.patch			\
   %D%/packages/patches/aegis-constness-error.patch         	\
   %D%/packages/patches/aegis-perl-tempdir1.patch           	\
@@ -695,6 +693,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/apr-skip-getservbyname-test.patch	\
   %D%/packages/patches/aria2-CVE-2019-3500.patch		\
   %D%/packages/patches/aspell-default-dict-dir.patch		\
+  %D%/packages/patches/aspell-gcc-compat.patch			\
   %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
   %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\
@@ -714,10 +713,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/beignet-correct-file-names.patch		\
   %D%/packages/patches/benchmark-unbundle-googletest.patch	\
   %D%/packages/patches/biber-fix-encoding-write.patch		\
+  %D%/packages/patches/binutils-boot-2.20.1a.patch		\
   %D%/packages/patches/binutils-loongson-workaround.patch	\
   %D%/packages/patches/blender-2.79-newer-ffmpeg.patch		\
   %D%/packages/patches/blender-2.79-python-3.7-fix.patch	\
-  %D%/packages/patches/boost-fix-icu-build.patch		\
   %D%/packages/patches/byobu-writable-status.patch		\
   %D%/packages/patches/calibre-no-updates-dialog.patch		\
   %D%/packages/patches/calibre-remove-test-bs4.patch		\
@@ -763,14 +762,14 @@ dist_patch_DATA =						\
   %D%/packages/patches/cvs-CVE-2017-12836.patch		\
   %D%/packages/patches/darkice-workaround-fpermissive-error.patch	\
   %D%/packages/patches/dbus-helper-search-path.patch		\
-  %D%/packages/patches/dbus-CVE-2019-12749.patch		\
+  %D%/packages/patches/dbus-c++-gcc-compat.patch		\
+  %D%/packages/patches/dbus-c++-threading-mutex.patch		\
   %D%/packages/patches/dealii-mpi-deprecations.patch		\
   %D%/packages/patches/debops-constants-for-external-program-names.patch \
   %D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
   %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch	\
   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
   %D%/packages/patches/diffutils-gets-undeclared.patch		\
-  %D%/packages/patches/diffutils-getopt.patch			\
   %D%/packages/patches/dkimproxy-add-ipv6-support.patch		\
   %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch	\
   %D%/packages/patches/doc++-include-directives.patch		\
@@ -804,9 +803,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/eudev-rules-directory.patch		\
   %D%/packages/patches/evilwm-lost-focus-bug.patch		\
+  %D%/packages/patches/evolution-data-server-locales.patch	\
   %D%/packages/patches/exiv2-CVE-2017-14860.patch		\
   %D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch	\
-  %D%/packages/patches/expat-CVE-2018-20843.patch		\
   %D%/packages/patches/extundelete-e2fsprogs-1.44.patch		\
   %D%/packages/patches/fastcap-mulGlobal.patch			\
   %D%/packages/patches/fastcap-mulSetup.patch			\
@@ -835,6 +834,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-arm-bug-71399.patch			\
   %D%/packages/patches/gcc-arm-link-spec-fix.patch		\
   %D%/packages/patches/gcc-asan-missing-include.patch		\
+  %D%/packages/patches/gcc-boot-2.95.3.patch			\
+  %D%/packages/patches/gcc-boot-4.7.4.patch			\
   %D%/packages/patches/gcc-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-fix-texi2pod.patch			\
   %D%/packages/patches/gcc-4.8-libsanitizer-fix.patch		\
@@ -853,6 +854,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-6-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-6-source-date-epoch-1.patch		\
   %D%/packages/patches/gcc-6-source-date-epoch-2.patch		\
+  %D%/packages/patches/gcc-7-cross-mingw.patch			\
   %D%/packages/patches/gcc-8-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-8-strmov-store-file-names.patch	\
   %D%/packages/patches/gcc-9-asan-fix-limits-include.patch	\
@@ -863,7 +865,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gd-CVE-2019-6978.patch			\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
   %D%/packages/patches/gd-freetype-test-failure.patch		\
-  %D%/packages/patches/gdm-CVE-2018-14424.patch			\
   %D%/packages/patches/geoclue-config.patch			\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
   %D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch	\
@@ -873,7 +874,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/ghostscript-no-header-creationdate.patch \
   %D%/packages/patches/giflib-make-reallocarray-private.patch	\
   %D%/packages/patches/glib-tests-timer.patch			\
-  %D%/packages/patches/glib-networking-connection.patch	\
   %D%/packages/patches/glibc-CVE-2015-5180.patch		\
   %D%/packages/patches/glibc-CVE-2015-7547.patch		\
   %D%/packages/patches/glibc-CVE-2016-3075.patch		\
@@ -884,39 +884,51 @@ dist_patch_DATA =						\
   %D%/packages/patches/glibc-CVE-2017-1000366-pt3.patch		\
   %D%/packages/patches/glibc-CVE-2018-11236.patch		\
   %D%/packages/patches/glibc-CVE-2018-11237.patch		\
+  %D%/packages/patches/glibc-CVE-2019-7309.patch		\
+  %D%/packages/patches/glibc-CVE-2019-9169.patch		\
   %D%/packages/patches/glibc-allow-kernel-2.6.32.patch		\
+  %D%/packages/patches/glibc-boot-2.16.0.patch			\
+  %D%/packages/patches/glibc-boot-2.2.5.patch			\
+  %D%/packages/patches/glibc-bootstrap-system-2.16.0.patch 	\
   %D%/packages/patches/glibc-bootstrap-system.patch		\
   %D%/packages/patches/glibc-hidden-visibility-ldconfig.patch	\
   %D%/packages/patches/glibc-hurd-magic-pid.patch		\
   %D%/packages/patches/glibc-ldd-x86_64.patch			\
   %D%/packages/patches/glibc-locales.patch			\
+  %D%/packages/patches/glibc-locales-2.28.patch			\
   %D%/packages/patches/glibc-o-largefile.patch			\
   %D%/packages/patches/glibc-reinstate-prlimit64-fallback.patch	\
   %D%/packages/patches/glibc-vectorized-strcspn-guards.patch	\
   %D%/packages/patches/glibc-versioned-locpath.patch		\
   %D%/packages/patches/glibc-2.27-git-fixes.patch		\
   %D%/packages/patches/glibc-2.28-git-fixes.patch		\
+  %D%/packages/patches/glibc-2.29-git-updates.patch     	\
+  %D%/packages/patches/glibc-2.27-supported-locales.patch     	\
+  %D%/packages/patches/glibc-2.28-supported-locales.patch     	\
+  %D%/packages/patches/glibc-supported-locales.patch     	\
   %D%/packages/patches/glm-restore-install-target.patch		\
   %D%/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch		\
   %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
   %D%/packages/patches/gmp-faulty-test.patch			\
+  %D%/packages/patches/gnome-control-center-udisks.patch	\
   %D%/packages/patches/gnome-shell-theme.patch			\
   %D%/packages/patches/gnome-tweaks-search-paths.patch		\
   %D%/packages/patches/gnutls-skip-trust-store-test.patch	\
   %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
   %D%/packages/patches/gobject-introspection-cc.patch		\
   %D%/packages/patches/gobject-introspection-girepository.patch	\
+  %D%/packages/patches/go-skip-gc-test.patch			\
   %D%/packages/patches/gpm-glibc-2.26.patch			\
   %D%/packages/patches/gpsbabel-minizip.patch     		\
   %D%/packages/patches/gpsbabel-qstring.patch     		\
   %D%/packages/patches/grep-timing-sensitive-test.patch		\
-  %D%/packages/patches/groff-source-date-epoch.patch		\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
   %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/gsl-test-i686.patch			\
   %D%/packages/patches/gspell-dash-test.patch			\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-default-utf8.patch		\
+  %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-default-utf8.patch			\
   %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch	\
   %D%/packages/patches/guile-linux-syscalls.patch		\
@@ -933,11 +945,13 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
   %D%/packages/patches/gzdoom-search-in-installed-share.patch	\
+  %D%/packages/patches/handbrake-opt-in-nvenc.patch		\
   %D%/packages/patches/haskell-mode-unused-variables.patch	\
   %D%/packages/patches/haskell-mode-make-check.patch		\
   %D%/packages/patches/hdf4-architectures.patch 		\
   %D%/packages/patches/hdf4-reproducibility.patch 		\
   %D%/packages/patches/hdf4-shared-fortran.patch 		\
+  %D%/packages/patches/hdf4-tirpc.patch 			\
   %D%/packages/patches/hdf5-config-date.patch			\
   %D%/packages/patches/hdf5-mpi-deprecations.patch		\
   %D%/packages/patches/hdf5-1.8-mpi-deprecations.patch		\
@@ -962,6 +976,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
   %D%/packages/patches/ilmbase-fix-tests.patch			\
   %D%/packages/patches/ilmbase-openexr-pkg-config.patch		\
+  %D%/packages/patches/inkscape-poppler-0.76.patch		\
   %D%/packages/patches/intltool-perl-compatibility.patch	\
   %D%/packages/patches/irrlicht-use-system-libs.patch		\
   %D%/packages/patches/isc-dhcp-4.4.1-fixes-for-newer-bind.patch	\
@@ -1011,29 +1026,20 @@ dist_patch_DATA =						\
   %D%/packages/patches/liba52-link-with-libm.patch		\
   %D%/packages/patches/liba52-set-soname.patch			\
   %D%/packages/patches/liba52-use-mtune-not-mcpu.patch		\
-  %D%/packages/patches/libarchive-CVE-2017-14166.patch		\
-  %D%/packages/patches/libarchive-CVE-2017-14502.patch		\
-  %D%/packages/patches/libarchive-CVE-2018-1000877.patch	\
-  %D%/packages/patches/libarchive-CVE-2018-1000878.patch	\
-  %D%/packages/patches/libarchive-CVE-2018-1000880.patch	\
   %D%/packages/patches/libbase-fix-includes.patch		\
   %D%/packages/patches/libbase-use-own-logging.patch		\
   %D%/packages/patches/libbonobo-activation-test-race.patch	\
   %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
-  %D%/packages/patches/libcroco-CVE-2017-7960.patch		\
-  %D%/packages/patches/libcroco-CVE-2017-7961.patch		\
   %D%/packages/patches/libdrm-symbol-check.patch		\
   %D%/packages/patches/libexif-CVE-2016-6328.patch		\
   %D%/packages/patches/libexif-CVE-2017-7544.patch		\
   %D%/packages/patches/libexif-CVE-2018-20030.patch		\
   %D%/packages/patches/libextractor-exiv2.patch			\
-  %D%/packages/patches/libgcrypt-make-yat2m-reproducible.patch	\
   %D%/packages/patches/libgit2-avoid-python.patch		\
   %D%/packages/patches/libgit2-mtime-0.patch			\
-  %D%/packages/patches/libgdata-fix-tests.patch			\
-  %D%/packages/patches/libgdata-glib-duplicate-tests.patch	\
   %D%/packages/patches/libgnome-encoding.patch			\
   %D%/packages/patches/libgnomeui-utf8.patch			\
+  %D%/packages/patches/libgpg-error-gawk-compat.patch		\
   %D%/packages/patches/libffi-3.2.1-complex-alpha.patch		\
   %D%/packages/patches/libjxr-fix-function-signature.patch	\
   %D%/packages/patches/libjxr-fix-typos.patch			\
@@ -1043,6 +1049,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmad-length-check.patch		\
   %D%/packages/patches/libmad-md_size.patch			\
   %D%/packages/patches/libmad-mips-newgcc.patch			\
+  %D%/packages/patches/libmp4v2-c++11.patch			\
   %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch		\
   %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch	\
   %D%/packages/patches/libreoffice-boost.patch			\
@@ -1052,7 +1059,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8362.patch		\
   %D%/packages/patches/libsndfile-CVE-2017-12562.patch		\
-  %D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch	\
   %D%/packages/patches/libtar-CVE-2013-4420.patch 		\
   %D%/packages/patches/libtheora-config-guess.patch		\
   %D%/packages/patches/libtommath-fix-linkage.patch		\
@@ -1103,6 +1109,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mcrypt-CVE-2012-4426.patch			\
   %D%/packages/patches/mcrypt-CVE-2012-4527.patch			\
   %D%/packages/patches/mesa-skip-disk-cache-test.patch		\
+  %D%/packages/patches/mescc-tools-boot.patch			\
   %D%/packages/patches/meson-for-build-rpath.patch		\
   %D%/packages/patches/metabat-fix-compilation.patch		\
   %D%/packages/patches/mhash-keygen-test-segfault.patch		\
@@ -1231,8 +1238,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/pygpgme-disable-problematic-tests.patch  \
   %D%/packages/patches/pyqt-configure.patch			\
   %D%/packages/patches/pyqt-public-sip.patch			\
-  %D%/packages/patches/python2-CVE-2018-14647.patch		\
-  %D%/packages/patches/python2-CVE-2018-1000802.patch		\
   %D%/packages/patches/python-2-deterministic-build-info.patch	\
   %D%/packages/patches/python-2.7-adjust-tests.patch		\
   %D%/packages/patches/python-2.7-search-paths.patch		\
@@ -1245,12 +1250,13 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-axolotl-AES-fix.patch		\
   %D%/packages/patches/python-cairocffi-dlopen-path.patch	\
   %D%/packages/patches/python-cffi-x87-stack-clean.patch	\
-  %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
   %D%/packages/patches/python-configobj-setuptools.patch	\
   %D%/packages/patches/python-faker-fix-build-32bit.patch	\
+  %D%/packages/patches/python-keras-integration-test.patch	\
   %D%/packages/patches/python-pyfakefs-remove-bad-test.patch	\
   %D%/packages/patches/python-flint-includes.patch		\
+  %D%/packages/patches/python-libxml2-utf8.patch		\
   %D%/packages/patches/python-mox3-python3.6-compat.patch	\
   %D%/packages/patches/python-testtools.patch			\
   %D%/packages/patches/python-paste-remove-timing-test.patch	\
@@ -1265,8 +1271,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
   %D%/packages/patches/python-waitress-fix-tests.patch		\
   %D%/packages/patches/qemu-glibc-2.27.patch 			\
-  %D%/packages/patches/qemu-CVE-2018-16872.patch 		\
-  %D%/packages/patches/qemu-CVE-2019-6778.patch 		\
   %D%/packages/patches/qt4-ldflags.patch			\
   %D%/packages/patches/qtbase-old-kernel.patch			\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
@@ -1276,6 +1280,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qtwebkit-pbutils-include.patch		\
   %D%/packages/patches/randomjungle-disable-static-build.patch	\
   %D%/packages/patches/rapicorn-isnan.patch			\
+  %D%/packages/patches/rapidjson-gcc-compat.patch		\
   %D%/packages/patches/raptor2-heap-overflow.patch		\
   %D%/packages/patches/ratpoints-sturm_and_rp_private.patch	\
   %D%/packages/patches/ratpoison-shell.patch			\
@@ -1320,15 +1325,14 @@ dist_patch_DATA =						\
   %D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch	\
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
   %D%/packages/patches/soundconverter-remove-gconf-dependency.patch	\
-  %D%/packages/patches/sssd-curl-compat.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	\
   %D%/packages/patches/superlu-dist-awpm-grid.patch		\
   %D%/packages/patches/superlu-dist-fix-mpi-deprecations.patch	\
   %D%/packages/patches/superlu-dist-scotchmetis.patch		\
-  %D%/packages/patches/supertux-fix-build-with-gcc5.patch	\
   %D%/packages/patches/supertux-unbundle-squirrel.patch		\
   %D%/packages/patches/swig-guile-gc.patch			\
   %D%/packages/patches/swish-e-search.patch			\
@@ -1342,12 +1346,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/t1lib-CVE-2011-1552+.patch		\
   %D%/packages/patches/tar-remove-wholesparse-check.patch	\
   %D%/packages/patches/tar-skip-unreliable-tests.patch		\
+  %D%/packages/patches/tcc-boot-0.9.27.patch			\
   %D%/packages/patches/tclxml-3.2-install.patch			\
   %D%/packages/patches/tcsh-fix-autotest.patch			\
   %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch	\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
   %D%/packages/patches/teeworlds-use-latest-wavpack.patch	\
-  %D%/packages/patches/texinfo-perl-compat.patch		\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
   %D%/packages/patches/texlive-bin-CVE-2018-17407.patch		\
   %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch	\
@@ -1430,45 +1434,3 @@ dist_patch_DATA =						\
 
 MISC_DISTRO_FILES =				\
   %D%/packages/ld-wrapper.in
-
-bootstrapdir = $(guilemoduledir)/%D%/packages/bootstrap
-bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
-bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
-bootstrap_armhf_linuxdir = $(bootstrapdir)/armhf-linux
-bootstrap_aarch64_linuxdir = $(bootstrapdir)/aarch64-linux
-bootstrap_mips64el_linuxdir = $(bootstrapdir)/mips64el-linux
-
-dist_bootstrap_x86_64_linux_DATA =		\
-  %D%/packages/bootstrap/x86_64-linux/bash	\
-  %D%/packages/bootstrap/x86_64-linux/mkdir	\
-  %D%/packages/bootstrap/x86_64-linux/tar	\
-  %D%/packages/bootstrap/x86_64-linux/xz
-
-dist_bootstrap_i686_linux_DATA =		\
-  %D%/packages/bootstrap/i686-linux/bash	\
-  %D%/packages/bootstrap/i686-linux/mkdir	\
-  %D%/packages/bootstrap/i686-linux/tar		\
-  %D%/packages/bootstrap/i686-linux/xz
-
-dist_bootstrap_armhf_linux_DATA =		\
-  %D%/packages/bootstrap/armhf-linux/bash	\
-  %D%/packages/bootstrap/armhf-linux/mkdir	\
-  %D%/packages/bootstrap/armhf-linux/tar	\
-  %D%/packages/bootstrap/armhf-linux/xz
-
-dist_bootstrap_aarch64_linux_DATA =		\
-  %D%/packages/bootstrap/aarch64-linux/bash	\
-  %D%/packages/bootstrap/aarch64-linux/mkdir	\
-  %D%/packages/bootstrap/aarch64-linux/tar	\
-  %D%/packages/bootstrap/aarch64-linux/xz
-
-dist_bootstrap_mips64el_linux_DATA =		\
-  %D%/packages/bootstrap/mips64el-linux/bash	\
-  %D%/packages/bootstrap/mips64el-linux/mkdir	\
-  %D%/packages/bootstrap/mips64el-linux/tar	\
-  %D%/packages/bootstrap/mips64el-linux/xz
-
-# Those files must remain executable, so they remain executable once
-# imported into the store.
-set-bootstrap-executable-permissions:
-	chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
diff --git a/gnu/packages.scm b/gnu/packages.scm
index acb247e114..6633631c1f 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -46,10 +46,8 @@
   #:export (search-patch
             search-patches
             search-auxiliary-file
-            search-bootstrap-binary
             %patch-path
             %auxiliary-files-path
-            %bootstrap-binaries-path
             %package-module-path
             %default-package-module-path
 
@@ -75,18 +73,13 @@
 ;;;
 ;;; Code:
 
-;; By default, we store patches, auxiliary files and bootstrap binaries
+;; By default, we store patches and auxiliary files
 ;; alongside Guile modules.  This is so that these extra files can be
 ;; found without requiring a special setup, such as a specific
 ;; installation directory and an extra environment variable.  One
 ;; advantage of this setup is that everything just works in an
 ;; auto-compilation setting.
 
-(define %bootstrap-binaries-path
-  (make-parameter
-   (map (cut string-append <> "/gnu/packages/bootstrap")
-        %load-path)))
-
 (define %auxiliary-files-path
   (make-parameter
    (map (cut string-append <> "/gnu/packages/aux-files")
@@ -108,18 +101,6 @@
 FILE-NAME found in %PATCH-PATH."
   (list (search-patch file-name) ...))
 
-(define (search-bootstrap-binary file-name system)
-  "Search the bootstrap binary FILE-NAME for SYSTEM.  Raise an error if not
-found."
-  (or (search-path (%bootstrap-binaries-path)
-                   (string-append system "/" file-name))
-      (raise (condition
-              (&message
-               (message
-                (format #f (G_ "could not find bootstrap binary '~a' \
-for system '~a'")
-                        file-name system)))))))
-
 (define %distro-root-directory
   ;; Absolute file name of the module hierarchy.  Since (gnu packages …) might
   ;; live in a directory different from (guix), try to get the best match.
@@ -412,9 +393,7 @@ reducing the memory footprint."
                              ,(module-name module)
                              ,symbol
                              ,(package-outputs package)
-                             ,(->bool
-                               (member (%current-system)
-                                       (package-supported-systems package)))
+                             ,(->bool (supported-package? package))
                              ,(->bool (package-superseded package))
                              ,@(let ((loc (package-location package)))
                                  (if loc
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm
index 8d5f0117f5..0131adcac4 100644
--- a/gnu/packages/acl.scm
+++ b/gnu/packages/acl.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,21 +35,18 @@
 (define-public acl
   (package
     (name "acl")
-    (version "2.2.52")
+    (version "2.2.53")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://savannah/acl/acl-"
-                          version ".src.tar.gz"))
+                          version ".tar.gz"))
       (sha256
        (base32
-        "08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p"))
-      (patches (search-patches "acl-fix-perl-regex.patch"
-                               "acl-hurd-path-max.patch"))))
+        "1ir6my3w74s6nfbgbqgzj6w570sn0qjf3524zx8xh67lqrjrigh6"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:test-target "tests"
-       #:modules ((ice-9 ftw)
+     `(#:modules ((ice-9 ftw)
                   ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
@@ -75,13 +73,11 @@
                           (("\\| sed.*'") ""))
              ;; These tests require the existence of a user named "bin", but
              ;; this user does not exist within Guix's build environment.
-             (for-each (lambda (file)
-                         (delete-file (string-append "test/" file)))
-                       '("setfacl-X.test" "cp.test" "misc.test"))
-             #t))
-         (replace 'install
-           (lambda _
-             (invoke "make" "install" "install-lib" "install-dev"))))))
+             (substitute* "Makefile.in"
+               ((".*test/misc\\.test.*") "")
+               ((".*test/cp\\.test.*") "")
+               ((".*test/setfacl-X\\.test.*") ""))
+             #t)))))
     (inputs `(("attr" ,attr)))
     (native-inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm
index 28a65667eb..541612d41a 100644
--- a/gnu/packages/adns.scm
+++ b/gnu/packages/adns.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -61,32 +62,6 @@ scripts.")
 (define-public c-ares
   (package
     (name "c-ares")
-    (version "1.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://c-ares.haxx.se/download/" name "-" version
-                    ".tar.gz"))
-              (sha256
-               (base32
-                "0vnwmbvymw677k780kpb6sb8i3szdp89rzy8mz1fwg1657yw3ls5"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "https://c-ares.haxx.se/")
-    (synopsis "C library for asynchronous DNS requests")
-    (description
-      "C-ares is a C library that performs DNS requests and name resolution
-asynchronously.  It is intended for applications which need to perform DNS
-queries without blocking, or need to perform multiple DNS queries in parallel.
-The primary examples of such applications are servers which communicate with
-multiple clients and programs with graphical user interfaces.")
-    (license (x11-style "https://c-ares.haxx.se/license.html"))))
-
-;; XXX: temporary package for tensorflow / grpc
-(define-public c-ares-next
-  (package
-    (name "c-ares")
     (version "1.15.0")
     (source (origin
               (method url-fetch)
@@ -96,11 +71,7 @@ multiple clients and programs with graphical user interfaces.")
               (sha256
                (base32
                 "0lk8knip4xk6qzksdkn7085mmgm4ixfczdyyjw656c193y3rgnvc"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f ; some tests seem to require Internet connection
-       #:configure-flags
-       (list "-DCARES_BUILD_TESTS=ON")))
+    (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://c-ares.haxx.se/")
@@ -112,3 +83,17 @@ queries without blocking, or need to perform multiple DNS queries in parallel.
 The primary examples of such applications are servers which communicate with
 multiple clients and programs with graphical user interfaces.")
     (license (x11-style "https://c-ares.haxx.se/license.html"))))
+
+;; gRPC requires a c-ares built with CMake in order to get the .cmake modules.
+;; We can not build c-ares itself with CMake because that would introduce a
+;; circular dependency through nghttp2.
+;; XXX: It would be nice if we could extract the modules somehow and make them
+;; work with the "normal" c-ares package instead of building a whole new library.
+(define-public c-ares/cmake
+  (hidden-package
+   (package
+     (inherit c-ares)
+     (build-system cmake-build-system)
+     (arguments
+      `(;; XXX: Tests require name resolution (the normal variant runs no tests).
+        #:tests? #f)))))
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 337e60a641..b312c5b2af 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages docker)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
@@ -375,7 +376,7 @@ various Android core host applications.")
      `(("android-libbase" ,android-libbase)
        ("android-libcutils" ,android-libcutils)
        ("android-liblog" ,android-liblog)
-       ("openssl" ,openssl)))
+       ("openssl" ,openssl-1.0)))
     (home-page "https://developer.android.com/studio/command-line/adb.html")
     (synopsis "Android Debug Bridge")
     (description
@@ -616,7 +617,8 @@ file system.")
        ("android-libcutils" ,android-libcutils)))
     (native-inputs
      `(("android-bionic-uapi" ,android-bionic-uapi)
-       ("android-liblog" ,android-liblog)))
+       ("android-liblog" ,android-liblog)
+       ("gcc" ,gcc-5))) ; XXX: fails to build with GCC 7
     (home-page "https://developer.android.com/")
     (synopsis "Android utility library")
     (description "@code{android-libutils} provides utilities for Android NDK developers.")
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index cbc9baeeb3..4f6f1a1cca 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -47,7 +47,8 @@
       (sha256
        (base32
         "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm"))
-      (patches (search-patches "aspell-default-dict-dir.patch"))))
+      (patches (search-patches "aspell-default-dict-dir.patch"
+                               "aspell-gcc-compat.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 8cf5bcdaf5..527555abfc 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -48,14 +48,14 @@
 (define-public nasm
   (package
     (name "nasm")
-    (version "2.13.03")
+    (version "2.14.02")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.nasm.us/pub/nasm/releasebuilds/"
                                   version "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0wr58pb2wnyihcl6635hlx98fnscx5yirxm8m84x8nxwvjqcybl1"))))
+                "1xg8dfr49py15vbwk1rzcjc3zpqydmr49ahlijm56wlgj8zdwjp2"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)  ;for doc and test target
                      ("texinfo" ,texinfo)))
diff --git a/gnu/packages/attr.scm b/gnu/packages/attr.scm
index ff0a07aa67..3237376d40 100644
--- a/gnu/packages/attr.scm
+++ b/gnu/packages/attr.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2012, 2013, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,28 +30,18 @@
 (define-public attr
   (package
     (name "attr")
-    (version "2.4.47")
+    (version "2.4.48")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/attr/attr-"
-                                  version ".src.tar.gz"))
+                                  version ".tar.gz"))
               (sha256
                (base32
-                "0nd8y0m6awc9ahv0ciiwf8gy54c8d3j51pw9xg7f7cn579jjyxr5"))))
+                "1rr4adzwax4bzr2c00f06zcsljv5y6p9wymz1g89ww7cb2rp5bay"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'configure 'patch-makefile-SHELL
-           (lambda _
-             (patch-makefile-SHELL "include/buildmacros")
-             #t))
-         (replace 'install
-           (lambda _
-             (invoke "make"
-                     "install"
-                     "install-lib"
-                     "install-dev")))
          (replace 'check
            (lambda* (#:key target #:allow-other-keys)
              ;; Use the right shell.
@@ -80,4 +71,4 @@
     (synopsis "Library and tools for manipulating extended attributes")
     (description
      "Portable library and tools for manipulating extended attributes.")
-    (license (list gpl2+ lgpl2.1+))))
+    (license lgpl2.1+)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 6eb61583f7..f1a45bc1ca 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -67,6 +68,7 @@
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
@@ -76,6 +78,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages linux)
@@ -143,7 +146,8 @@
        ("qtbase" ,qtbase)
        ("qttools" ,qttools)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("gcc" ,gcc-5)))
     (home-page "http://alsamodular.sourceforge.net/")
     (synopsis "Realtime modular synthesizer and effect processor")
     (description
@@ -1595,15 +1599,7 @@ synchronous execution of all clients, and low latency operation.")
     (build-system waf-build-system)
     (arguments
      `(#:tests? #f ; no check target
-       #:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-before
-          'configure 'set-flags
-          (lambda _
-            ;; Compile with C++11, required by gtkmm.
-            (setenv "CXXFLAGS" "-std=c++11")
-            #t)))))
+       #:python ,python-2))
     (inputs
      `(("lv2" ,lv2)
        ("lilv" ,lilv)
@@ -1684,7 +1680,12 @@ to be plugged into a wide range of audio synthesis and recording packages.")
                 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     '(;; Glibc no longer includes Sun RPC support, so tell the build system
+       ;; to use libtirpc instead.
+       #:make-flags (list (string-append "CFLAGS=-I"
+                                         (assoc-ref %build-inputs "libtirpc")
+                                         "/include/tirpc -ltirpc"))
+       #:phases
        (modify-phases %standard-phases
          ;; lashd embeds an ancient version of sigsegv so we just skip it
          (add-after 'unpack 'skip-lashd
@@ -1697,6 +1698,7 @@ to be plugged into a wide range of audio synthesis and recording packages.")
      `(("bdb" ,bdb)
        ("gtk" ,gtk+-2)
        ("jack" ,jack-1)
+       ("libtirpc" ,libtirpc)
        ("readline" ,readline)
        ("python" ,python-2)))
     ;; According to pkg-config, packages depending on lash also need to have
@@ -1949,22 +1951,7 @@ software.")
        #:configure-flags
        (list (string-append "--boost-includes="
                             (assoc-ref %build-inputs "boost")
-                            "/include"))
-       #:phases (modify-phases %standard-phases
-                  (add-before
-                   'configure 'set-flags
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     ;; See e.g. https://github.com/lvtk/lvtk/issues/21
-                     (setenv "LDFLAGS"
-                             (string-append
-                              "-L" (assoc-ref inputs "boost") "/lib "
-                              "-lboost_system"))
-                     ;; Needed for gtkmm
-                     (substitute* '("src/wscript_build"
-                                    "examples/wscript_build")
-                       (("cxxflags.*= \\[" line)
-                        (string-append line "\"-std=c++11\", ")))
-                     #t)))))
+                            "/include"))))
     (inputs
      `(("boost" ,boost)
        ("gtkmm" ,gtkmm-2)
@@ -2012,6 +1999,13 @@ lv2-c++-tools.")
                               "/lib/libasound.so.2"
                               "\")")))
             #t)))))
+    (native-inputs
+     `(;; FIXME: On i686-linux, GCC 7 hits an internal compiler error
+       ;; upon building utils/makehrtf.c:3281:
+       ;; "internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:908"
+       ;; https://ci.guix.gnu.org/log/r2fjx9m75m9rifg2yjbnn853wqy2547n-openal-1.19.1
+       ;; Remove this when the default compiler is GCC 9 or later.
+       ("gcc" ,gcc-9)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("pulseaudio" ,pulseaudio)))
@@ -2184,16 +2178,18 @@ background file post-processing.")
 (define-public supercollider
   (package
     (name "supercollider")
-    (version "3.10.2")
+    (version "3.10.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/supercollider/supercollider"
                     "/releases/download/Version-" version
                     "/SuperCollider-" version "-Source-linux.tar.bz2"))
+              (patches
+               (search-patches "supercollider-boost-1.70-build-fix.patch"))
               (sha256
                (base32
-                "0ynz1ydcpsd5h57h1n4a7avm6p1cif5a8rkmz4qpr46pr8z9p6iq"))))
+                "0srm6wbazidkrd4ckjy4ypyhkdwcnx2i7k9msjyngalh0mrc9zz1"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
@@ -2205,12 +2201,6 @@ background file post-processing.")
                   (ice-9 ftw))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-build-with-boost-1.68
-           (lambda _
-             (substitute* "server/supernova/utilities/time_tag.hpp"
-               (("(time_duration offset = .+ microseconds\\().*" _ m)
-                (string-append m "static_cast<long>(get_nanoseconds()/1000));\n")))
-             #t))
          (add-after 'unpack 'rm-bundled-libs
            (lambda _
              ;; The build system doesn't allow us to unbundle the following
diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm
index fba157344d..d995ef7e85 100644
--- a/gnu/packages/authentication.scm
+++ b/gnu/packages/authentication.scm
@@ -31,8 +31,6 @@
   #:use-module (guix packages))
 
 (define-public oath-toolkit
-  ;; If gcc@7 breaks this package before its next release, try patching it:
-  ;; <https://gitlab.com/oath-toolkit/oath-toolkit/issues/2#note_52958748>.
   (package
     (name "oath-toolkit")
     (version "2.6.2")
@@ -41,7 +39,18 @@
        (method url-fetch)
        (uri (string-append "https://download.savannah.nongnu.org/releases/"
                            name "/" name "-" version ".tar.gz"))
-       (patches (search-patches "oath-toolkit-glibc-compat.patch"))
+       (patches
+        (append (search-patches "oath-toolkit-glibc-compat.patch")
+                (list (origin
+                        ;; This huge commit updates gnulib for GCC 7 compatibility.
+                        (method url-fetch)
+                        (uri (string-append
+                              "https://gitlab.com/oath-toolkit/oath-toolkit/commit/"
+                              "2fffce2a471f74a585939c84cce16ef3015e5d3d.diff"))
+                        (file-name "oath-toolkit-update-gnulib.patch")
+                        (sha256
+                         (base32
+                          "088c9s4ay1b54bjqc4mwfs5l3f6357zj5vpw771zlq5g4addd4s0"))))))
        (sha256
         (base32 "182ah8vfbg0yhv6mh1b6ap944d0na6x7lpfkwkmzb6jl9gx4cd5h"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index eaa3c7d046..1f99f636e0 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -67,7 +67,10 @@
               (files '("avr/include")))
              (search-path-specification
               (variable "CROSS_LIBRARY_PATH")
-              (files '("avr/lib"))))))))
+              (files '("avr/lib")))))
+      (native-inputs
+       `(("gcc" ,gcc-5)
+         ,@(package-native-inputs xgcc))))))
 
 (define-public avr-gcc-5
   (package
@@ -94,11 +97,12 @@
        (modify-phases %standard-phases
          (add-before 'unpack 'fix-cpath
            (lambda _
-             ;; C_INCLUDE_PATH poses issues for cross-building, leading to
-             ;; failures when building avr-libc on 64-bit systems.  Simply
-             ;; unsetting it allows the build to succeed because it doesn't
-             ;; try to use any of the native system's headers.
+             ;; C_INCLUDE_PATH and CPATH pose issues for cross-building,
+             ;; leading to failures when building avr-libc on 64-bit systems.
+             ;; Simply unsetting them allows the build to succeed because it
+             ;; doesn't try to use any of the native system's headers.
              (unsetenv "C_INCLUDE_PATH")
+             (unsetenv "CPATH")
              #t)))))
     (native-inputs `(("avr-binutils" ,avr-binutils)
                      ("avr-gcc" ,avr-gcc)))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 47a6a9bf85..a92c8c9aca 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -198,28 +199,30 @@ backups (called chunks) to allow easy burning to CD/DVD.")
 (define-public libarchive
   (package
     (name "libarchive")
-    (replacement libarchive-3.3.3)
-    (version "3.3.2")
+    (version "3.4.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://libarchive.org/downloads/libarchive-"
-                           version ".tar.gz"))
-       (patches (search-patches "libarchive-CVE-2017-14166.patch"
-                                "libarchive-CVE-2017-14502.patch"))
+       (uri (list (string-append "https://libarchive.org/downloads/libarchive-"
+                                 version ".tar.gz")
+                  (string-append "https://github.com/libarchive/libarchive"
+                                 "/releases/download/v" version "/libarchive-"
+                                 version ".tar.gz")))
        (sha256
         (base32
-         "1km0mzfl6in7l5vz9kl09a88ajx562rw93ng9h2jqavrailvsbgd"))))
+         "0pl25mmz1b1cnwf35kxmygyy9g7z7hslxbx329a9yx8csh7dahw6"))))
     (build-system gnu-build-system)
     (inputs
-     `(("zlib" ,zlib)
-       ("nettle" ,nettle)
-       ("lzo" ,lzo)
-       ("bzip2" ,bzip2)
+     `(("bzip2" ,bzip2)
        ("libxml2" ,libxml2)
-       ("xz" ,xz)))
+       ("lzo" ,lzo)
+       ("nettle" ,nettle)
+       ("xz" ,xz)
+       ("zlib" ,zlib)
+       ("zstd" ,zstd "lib")))
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--disable-static")
+       #:phases
        (modify-phases %standard-phases
          (add-before 'build 'patch-pwd
            (lambda _
@@ -232,6 +235,13 @@ backups (called chunks) to allow easy burning to CD/DVD.")
              ;; test_write_disk_lookup tests expect user 'root' to exist, but
              ;; the chroot's /etc/passwd doesn't have it.  Turn off those tests.
              ;;
+             ;; XXX: Adjust test that fails with zstd 1.4.1 because the default
+             ;; options compresses two bytes better than this test expects.
+             ;; https://github.com/libarchive/libarchive/issues/1226
+             (substitute* "libarchive/test/test_write_filter_zstd.c"
+               (("compression-level\", \"6\"")
+                "compression-level\", \"7\""))
+
              ;; The tests allow one to disable tests matching a globbing pattern.
              (invoke "make" "libarchive_test" "bsdcpio_test" "bsdtar_test")
              ;; XXX: This glob disables too much.
@@ -246,8 +256,11 @@ backups (called chunks) to allow easy burning to CD/DVD.")
                     (libxml2 (assoc-ref inputs "libxml2"))
                     (xz      (assoc-ref inputs "xz"))
                     (zlib    (assoc-ref inputs "zlib"))
+                    (zstd    (assoc-ref inputs "zstd"))
                     (bzip2   (assoc-ref inputs "bzip2")))
-               (substitute* (string-append lib "/pkgconfig/libarchive.pc")
+               ;; Embed absolute references to these inputs to avoid propagation.
+               (substitute* (list (string-append lib "/pkgconfig/libarchive.pc")
+                                  (string-append lib "/libarchive.la"))
                  (("-lnettle")
                   (string-append "-L" nettle "/lib -lnettle"))
                  (("-lxml2")
@@ -256,13 +269,11 @@ backups (called chunks) to allow easy burning to CD/DVD.")
                   (string-append "-L" xz "/lib -llzma"))
                  (("-lz")
                   (string-append "-L" zlib "/lib -lz"))
+                 (("-lzstd")
+                  (string-append "-L" zstd "/lib -lzstd"))
                  (("-lbz2")
                   (string-append "-L" bzip2 "/lib -lbz2")))
-               #t))))
-
-       ;; libarchive/test/test_write_format_gnutar_filenames.c needs to be
-       ;; compiled with C99 or C11 or a gnu variant.
-       #:configure-flags '("CFLAGS=-O2 -g -std=c99")))
+               #t))))))
     (home-page "https://libarchive.org/")
     (synopsis "Multi-format archive and compression library")
     (description
@@ -275,22 +286,6 @@ archive.  In particular, note that there is currently no built-in support for
 random access nor for in-place modification.")
     (license license:bsd-2)))
 
-(define-public libarchive-3.3.3
-  (package
-    (inherit libarchive)
-    (version "3.3.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://libarchive.org/downloads/libarchive-"
-                           version ".tar.gz"))
-       (patches (search-patches "libarchive-CVE-2018-1000877.patch"
-                                "libarchive-CVE-2018-1000878.patch"
-                                "libarchive-CVE-2018-1000880.patch"))
-       (sha256
-        (base32
-         "0bhfncid058p7n1n8v29l6wxm3mhdqfassscihbsxfwz3iwb2zms"))))))
-
 (define-public rdup
   (package
     (name "rdup")
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 035551e454..4e80a2fadb 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages hurd)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages gettext)
   #:use-module (guix utils)
   #:use-module (guix packages)
@@ -91,14 +92,14 @@ command-line arguments, multiple languages, and so on.")
 (define-public grep
   (package
    (name "grep")
-   (version "3.1")
+   (version "3.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/grep/grep-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0zm0ywmyz9g8vn1plw14mn8kj74yipx5qsljndbyfgmvndx5qqnv"))
+              "055mqp6vrd0brkygmygb2673qwz409a7kyp1mzbfy6cn94f58q5r"))
             (patches (search-patches "grep-timing-sensitive-test.patch"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)))             ;some of the tests require it
@@ -106,15 +107,6 @@ command-line arguments, multiple languages, and so on.")
    (arguments
     `(#:phases
       (modify-phases %standard-phases
-        (add-before 'check 'disable-failing-tests
-          (lambda _
-            ;; These tests are expected to fail due to a glibc bug which has
-            ;; been fixed in 2.28, so they are unexpectedly passing.  They
-            ;; should be fixed for grep versions > 3.1.
-            (substitute* "tests/Makefile.in"
-              (("^[[:blank:]]+backref-alt[[:blank:]]+\\\\") "\\")
-              (("^[[:blank:]]+triple-backref[[:blank:]]+\\\\") "\\"))
-            #t))
         (add-after 'install 'fix-egrep-and-fgrep
           ;; Patch 'egrep' and 'fgrep' to execute 'grep' via its
           ;; absolute file name instead of searching for it in $PATH.
@@ -141,28 +133,16 @@ including, for example, recursive directory searching.")
 (define-public sed
   (package
    (name "sed")
-   (version "4.5")
+   (version "4.7")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/sed/sed-" version
                                 ".tar.xz"))
             (sha256
              (base32
-              "0h3b2jfj57wmz680vkbyavlsrkak556qhvs7m7fdlawwhg477bbs"))))
+              "0smxcx66vx29djzb542nxcynl7qnzxqa5032ibazi7x2s267d198"))))
    (build-system gnu-build-system)
    (synopsis "Stream editor")
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'dont-rebuild-sed.1
-          (lambda _
-            ;; Make sure we do not attempt to rebuild 'doc/sed.1', which does
-            ;; not work when cross-compiling because we cannot run 'sed'.
-            ;; This is fixed upstream as commit a0a25e3.
-            (substitute* "Makefile.in"
-              (("^doc/sed\\.1:.*")
-               "doc/sed.1:\n"))
-            #t)))))
    (native-inputs
     `(("perl" ,perl)))                            ;for tests
    (description
@@ -177,14 +157,14 @@ implementation offers several extensions over the standard utility.")
 (define-public tar
   (package
    (name "tar")
-   (version "1.30")
+   (version "1.32")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/tar/tar-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1lyjyk8z8hdddsxw0ikchrsfg3i0x3fsh7l63a8jgaz1n7dr5gzi"))
+              "1n7xy657ii0sa42zx6944v2m4v9qrh6sqgmw17l3nch3y43sxlyh"))
             (patches (search-patches "tar-skip-unreliable-tests.patch"
                                      "tar-remove-wholesparse-check.patch"))))
    (build-system gnu-build-system)
@@ -198,27 +178,7 @@ implementation offers several extensions over the standard utility.")
                        (substitute* "src/system.c"
                          (("/bin/sh")
                           (string-append bash "/bin/sh")))
-                       #t))))
-
-      ;; Work around a cross-compilation bug whereby libgnu.a would provide
-      ;; '__mktime_internal', which conflicts with the one in libc.a.
-      ,@(if (%current-target-system)
-            `(#:configure-flags '("gl_cv_func_working_mktime=yes"))
-            '())
-
-      ;; Test #92 "link mismatch" expects "a/z: Not linked to a/y" but gets
-      ;; "a/y: Not linked to a/z" and fails, presumably due to differences in
-      ;; the order in which 'diff' traverses directories.  That leads to a
-      ;; test failure even though conceptually the test passes.  Skip it.
-      ;; Test 117 and 118 are prone to race conditions too, particularly
-      ;; when cross-compiling, so we skip those as well.  All issues have
-      ;; been fixed upstream in these commits:
-      ;; <https://git.savannah.gnu.org/cgit/tar.git/commit/?id=847a36f>
-      ;; <https://git.savannah.gnu.org/cgit/tar.git/commit/?id=64b43fd>
-      #:make-flags (list (string-append
-                          "TESTSUITEFLAGS= -k '!link mismatch,"
-                          "!directory removed before reading,"
-                          "!explicitly named directory removed before reading'"))))
+                       #t))))))
 
    ;; When cross-compiling, the 'set-shell-file-name' phase needs to be able
    ;; to refer to the target Bash.
@@ -270,16 +230,16 @@ differences.")
 (define-public diffutils
   (package
    (name "diffutils")
-   (version "3.6")
+   (version "3.7")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/diffutils/diffutils-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1mivg0fy3a6fcn535ln8nkgfj6vxh5hsxxs5h6692wxmsjyyh8fn"))
-            (patches (search-patches "diffutils-getopt.patch"))))
+              "09isrg0isjinv8c535nxsi1s86wfdfzml80dbw41dj9x3hiad9xk"))))
    (build-system gnu-build-system)
+   (native-inputs `(("perl" ,perl)))
    (synopsis "Comparing and merging files")
    (description
     "GNU Diffutils is a package containing tools for finding the
@@ -341,14 +301,14 @@ used to apply commands with arbitrarily long arguments.")
 (define-public coreutils
   (package
    (name "coreutils")
-   (version "8.30")
+   (version "8.31")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/coreutils/coreutils-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0mxhw43d4wpqmvg0l4znk1vm10fy92biyh90lzdnqjcic2lb6cg8"))))
+              "1zg9m79x1i2nifj4kb0waf9x3i5h6ydkypkjnbsb9rnwis8rqypz"))))
    (build-system gnu-build-system)
    (inputs `(("acl"  ,acl)                        ; TODO: add SELinux
              ("gmp"  ,gmp)                        ;bignums in 'expr', yay!
@@ -390,13 +350,7 @@ used to apply commands with arbitrarily long arguments.")
                      ;; environments with long prefixes (/tmp/guix-build-...).
                      (substitute* "Makefile"
                        (("^.*tests/misc/env-S.pl.*$") ""))
-                     #t)))
-
-      ;; Work around a cross-compilation bug whereby libcoreutils.a would
-      ;; provide '__mktime_internal', which conflicts with the one in libc.a.
-      ,@(if (%current-target-system)
-            `(#:configure-flags '("gl_cv_func_working_mktime=yes"))
-            '())))
+                     #t)))))
    (synopsis "Core GNU utilities (file, text, shell)")
    (description
     "GNU Coreutils includes all of the basic command-line tools that are
@@ -460,14 +414,14 @@ change.  GNU make offers many powerful extensions over the standard utility.")
 (define-public binutils
   (package
    (name "binutils")
-   (version "2.31.1")
+   (version "2.32")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/binutils/binutils-"
                                 version ".tar.bz2"))
             (sha256
              (base32
-              "1l34hn1zkmhr1wcrgf0d4z7r3najxnw3cx2y2fk7v55zjlk3ik7z"))
+              "0b8767nyal1bc4cyzg5h9iis8kpkln1i3wkamig75cifj1fb2f6y"))
             (patches (search-patches "binutils-loongson-workaround.patch"))))
    (build-system gnu-build-system)
 
@@ -613,15 +567,13 @@ the store.")
   ;; version 2.28, GNU/Hurd used a different glibc branch.
   (package
    (name "glibc")
-   ;; Note: Always use a dot after the minor version since various places rely
-   ;; on "version-major+minor" to determine where locales are found.
-   (version "2.28")
+   (version "2.29")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
             (sha256
              (base32
-              "10iha5ynvdj5m62vgpgqbq4cwvc2yhyl2w9yyyjgfxmdmx8h145i"))
+              "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk"))
             (snippet
              ;; Disable 'ldconfig' and /etc/ld.so.cache.  The latter is
              ;; required on LFS distros to avoid loading the distro's libc.so
@@ -633,11 +585,14 @@ the store.")
                 #t))
             (modules '((guix build utils)))
             (patches (search-patches "glibc-ldd-x86_64.patch"
-                                     "glibc-2.28-git-fixes.patch"
+                                     "glibc-CVE-2019-7309.patch"
+                                     "glibc-CVE-2019-9169.patch"
+                                     "glibc-2.29-git-updates.patch"
                                      "glibc-hidden-visibility-ldconfig.patch"
                                      "glibc-versioned-locpath.patch"
                                      "glibc-allow-kernel-2.6.32.patch"
-                                     "glibc-reinstate-prlimit64-fallback.patch"))))
+                                     "glibc-reinstate-prlimit64-fallback.patch"
+                                     "glibc-supported-locales.patch"))))
    (build-system gnu-build-system)
 
    ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
@@ -712,18 +667,6 @@ the store.")
 
       #:tests? #f                                 ; XXX
       #:phases (modify-phases %standard-phases
-                 ,@(if (hurd-target?)
-                       `((add-after 'unpack 'apply-hurd-patch
-                           (lambda* (#:key inputs native-inputs
-                                     #:allow-other-keys)
-                             ;; TODO: Move this to 'patches' field.
-                             (let ((patch (or (assoc-ref native-inputs
-                                                         "hurd-magic-pid-patch")
-                                              (assoc-ref inputs
-                                                         "hurd-magic-pid-patch"))))
-                               (invoke "patch" "-p1" "--force" "--input"
-                                       patch)))))
-                       '())
                  (add-before
                   'configure 'pre-configure
                   (lambda* (#:key inputs native-inputs outputs
@@ -846,12 +789,11 @@ the store.")
                     ("perl" ,perl)
                     ("bison" ,bison)
                     ("gettext" ,gettext-minimal)
+                    ("python" ,python-minimal)
 
                     ,@(if (hurd-target?)
                           `(("mig" ,mig)
-                            ("perl" ,perl)
-                            ("hurd-magic-pid-patch"
-                             ,(search-patch "glibc-hurd-magic-pid.patch")))
+                            ("perl" ,perl))
                           '())))
 
    (native-search-paths
@@ -877,6 +819,25 @@ with the Linux kernel.")
 ;; Below are old libc versions, which we use mostly to build locale data in
 ;; the old format (which the new libc cannot cope with.)
 
+(define-public glibc-2.28
+  (package
+    (inherit glibc)
+    (version "2.28")
+    (source (origin
+              (inherit (package-source glibc))
+              (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
+              (sha256
+               (base32
+                "10iha5ynvdj5m62vgpgqbq4cwvc2yhyl2w9yyyjgfxmdmx8h145i"))
+              (patches (search-patches "glibc-ldd-x86_64.patch"
+                                       "glibc-2.28-git-fixes.patch"
+                                       "glibc-hidden-visibility-ldconfig.patch"
+                                       "glibc-versioned-locpath.patch"
+                                       "glibc-allow-kernel-2.6.32.patch"
+                                       "glibc-reinstate-prlimit64-fallback.patch"
+                                       "glibc-hurd-magic-pid.patch"
+                                       "glibc-2.28-supported-locales.patch"))))))
+
 (define-public glibc-2.27
   (package
     (inherit glibc)
@@ -893,6 +854,7 @@ with the Linux kernel.")
                                        "glibc-versioned-locpath.patch"
                                        "glibc-allow-kernel-2.6.32.patch"
                                        "glibc-reinstate-prlimit64-fallback.patch"
+                                       "glibc-2.27-supported-locales.patch"
                                        "glibc-CVE-2018-11236.patch"
                                        "glibc-CVE-2018-11237.patch"))))
     (properties `((lint-hidden-cve . ("CVE-2017-18269")))))) ; glibc-2.27-git-fixes
@@ -1037,7 +999,14 @@ with the Linux kernel.")
     (inherit glibc)
     (name "glibc-locales")
     (source (origin (inherit (package-source glibc))
-                    (patches (cons (search-patch "glibc-locales.patch")
+                    ;; The patch for glibc 2.28 and earlier replaces the same
+                    ;; content, but the context in the patch is different
+                    ;; enough to fail to merge.
+                    (patches (cons (search-patch
+                                    (if (version>=? (package-version glibc)
+                                                    "2.29")
+                                        "glibc-locales.patch"
+                                        "glibc-locales-2.28.patch"))
                                    (origin-patches (package-source glibc))))))
     (synopsis "All the locales supported by the GNU C Library")
     (description
@@ -1157,12 +1126,19 @@ test environments.")
 (define-public glibc-utf8-locales
   (make-glibc-utf8-locales glibc))
 
-(define-public glibc-locales-2.27
-  (package (inherit (make-glibc-locales glibc-2.27))
-           (name "glibc-locales-2.27")))
+;; Packages provided to ease use of binaries linked against the previous libc.
+(define-public glibc-locales-2.28
+  (package (inherit (make-glibc-locales glibc-2.28))
+           (name "glibc-locales-2.28")))
+(define-public glibc-utf8-locales-2.28
+  (package (inherit (make-glibc-utf8-locales glibc-2.28))
+           (name "glibc-utf8-locales-2.28")))
+
+;; These should no longer be needed.
 (define-public glibc-utf8-locales-2.27
-  (package (inherit (make-glibc-utf8-locales glibc-2.27))
-           (name "glibc-utf8-locales-2.27")))
+  (deprecated-package "glibc-utf8-locales-2.27" glibc-utf8-locales-2.28))
+(define-public glibc-locales-2.27
+  (deprecated-package "glibc-locales-2.27" glibc-locales-2.28))
 
 (define-public which
   (package
@@ -1291,25 +1267,7 @@ and daylight-saving rules.")
 (define-public tzdata-for-tests
   (hidden-package
    (package
-     (inherit tzdata)
-     (version "2018g")
-     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://data.iana.org/time-zones/releases/tzdata"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "05kayi3w9pvhj6ljx1hvwd0r8mxfzn436fjmwhx53xkj919xxpq2"))))
-     (inputs
-       `(("tzcode" ,(origin
-                     (method url-fetch)
-                     (uri (string-append
-                           "http://data.iana.org/time-zones/releases/tzcode"
-                           version ".tar.gz"))
-                     (sha256
-                      (base32
-                       "09y44fzcdq3c06saa8iqqa0a59cyw6ni3p31ps0j1w3hcpxz8lxa")))))))))
+     (inherit tzdata))))
 
 (define-public libiconv
   (package
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index ef93a11085..d3abeec6e6 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
@@ -45,7 +45,7 @@
 
 (define (patch-url seqno)
   "Return the URL of Bash patch number SEQNO."
-  (format #f "mirror://gnu/bash/bash-4.4-patches/bash44-~3,'0d" seqno))
+  (format #f "mirror://gnu/bash/bash-5.0-patches/bash50-~3,'0d" seqno))
 
 (define (bash-patch seqno sha256)
   "Return the origin of Bash patch SEQNO, with expected hash SHA256"
@@ -58,33 +58,17 @@
   (list (bash-patch seqno (base32 hash))
         ...))
 
-(define %patch-series-4.4
-  ;; This is the current patches series for 4.4, generated using
+(define %patch-series-5.0
+  ;; This is the current patches series for 5.0, generated using
   ;; 'download-patches' below.
   (patch-series
-   (1 "03vzy7qwjdd5qvl3ydg99naazas2qmyd0yhnrflgjbbm64axja1y")
-   (2 "0lrwq6vyqism3yqv9s7kzaf3dsl4q5w9r5svcqz279qp7qca083h")
-   (3 "1chqww2rj6g42b8s60q5zlzy0jzp684jkpsbrbfy1vzxja8mmpsi")
-   (4 "1cy8abf96hkrjhw921ndr0shlcnc52bg45rn6xri4v5clhq0l25d")
-   (5 "0a8515kyk4zsgmvlqvlganjfr7pq0j6kzpr4d6xx02kpbdr4n7i2")
-   (6 "1f24wgqngmj2mrj9yibwvc2zvlmn5xi53mnw777g3l40c4m2x3ka")
-   (7 "1bzdsnqaf05gdbqpsixhan8vygjxpcxlz1dd8d9f5jdznw3wq76y") ;CVE-2017-5932
-   (8 "1firw915mjm03hbbw9a70ch3cpgrgnvqjpllgdnn6csr8q04f546")
-   (9 "0g1l56kvw61rpw7dqa9fcl9llkl693h73g631hrhxlm030ddssqb")
-   (10 "01lfhrkdsdkdz8ypzapr614ras23x7ckjnr60aa5bzkaqprccrc4")
-   (11 "038p7mhnq9m65g505hi3827jkf9f35nd1cy00w8mwafpyxp44mnx")
-   (12 "0gh6lbb1rwpk44pvbamm6vzdfi50xnwkqd9v7s8cjwk3pz973hps")
-   (13 "1djkx0w9v62q78gz3jsvamj1jq53i6hbfrfhhsw86ihwpjnfy98v")
-   (14 "0z5ikcq9zyxw79d0z36r5p0mspnb5piavbv03jmlan1wnknmrxx7")
-   (15 "09n307fi1j257abhm295k6ksmnzw47ka2zhnr0i5lbdnpvn04xnk")
-   (16 "1cgi1y6mifm8hsgv4avj5ih76535js3qba1sqwbfvp7si76927sh")
-   (17 "0w6jpj2giakji1ir83rpkx1y7n7xqppah3j748m6dm38hywr0gvp")
-   (18 "1k58h4wxbsg7r4rwhrvzx5hfbapba2nxjysbhh6qp6ki5ys99i2v")
-   (19 "07n1i5610lbs672x1s8g82qn3qfj06s0ip3z80sri0g8vxp0s5r7")
-   (20 "0b2jk5n1af1vh590qfc52hv65mafb4vl1xv26s8j5a3byb5y4h0q")
-   (21 "1hblcd2xmqqlp0idnavw66570n7m0yv5rbbr873c2gkn982mk3xx")
-   (22 "0yfbjzr79vzjs2hyi5m8iy2b38fq7vikdfa4zqdvjsp36q4iycs5")
-   (23 "1dlism6qdx60nvzj0v7ndr7lfahl4a8zmzckp13hqgdx7xpj7v2g")))
+    (1 "12bjfdy6bg8nhyw27bdgxn7h4paylx8d927skfmi9pxd1wgrxzpj")
+    (2 "01w7yrzmz10mw06ys0546vhl7isv2v402ziyvfd7k67588spvs47")
+    (3 "0ny81ridp5n0j69hb8ixrc7dmxybby54jbsz5hikly8kgg1wvssf")
+    (4 "021gqqvgydixkrmqss64b6srfdlkvnx88lyfzpxfrn5d6bc7li0l")
+    (5 "0xl2kyzm84nlyklrqzkn73ixabhzfhn9x91lzcmis89cppclvxav")
+    (6 "0844749ixk1z60437nkznzms1f0nzh9an62kj7sny6r0zyk2k1fn")
+    (7 "16xg37gp1b8zlj5969w8mcrparwqlcbj9695vn3qhgb7wdz1xd0p")))
 
 (define (download-patches store count)
   "Download COUNT Bash patches into store.  Return a list of
@@ -120,7 +104,7 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
                " -Wl,-rpath -Wl,"
                (assoc-ref %build-inputs "ncurses")
                "/lib")))
-         (version "4.4"))
+         (version "5.0"))
     (package
      (name "bash")
      (source (origin
@@ -129,11 +113,10 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
                     "mirror://gnu/bash/bash-" version ".tar.gz"))
               (sha256
                (base32
-                "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq"))
+                "0kgvfwqdcd90waczf4gx39xnrxzijhjrzyzv7s8v4w31qqm0za5l"))
               (patch-flags '("-p0"))
-              (patches %patch-series-4.4)))
-     (version (string-append version "."
-                             (number->string (length %patch-series-4.4))))
+              (patches %patch-series-5.0)))
+     (version (string-append version "." (number->string (length %patch-series-5.0))))
      (build-system gnu-build-system)
 
      (outputs '("out"
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index c7491f845f..7196ffcd32 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,14 +31,14 @@
 (define-public libgc
   (package
    (name "libgc")
-   (version "7.6.6")
+   (version "7.6.12")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://github.com/ivmai/bdwgc/releases"
                                 "/download/v" version "/gc-" version ".tar.gz"))
             (sha256
              (base32
-              "1p1r015a7jbpvkkbgzv1y8nxrbbp6dg0mq3ksi6ji0qdz3wfss79"))))
+              "10jhhi79d5brwlsyhwgpnrmc8nhlf7aan2lk9xhgihk5jc6srbvc"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
@@ -53,7 +54,19 @@
        ,@(if (hurd-triplet? (or (%current-system)
                                 (%current-target-system)))
              '("--disable-gcj-support")
-             '()))))
+             '()))
+      #:phases (modify-phases %standard-phases
+                 (add-after 'unpack 'adjust-pc-file
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (let ((libatomic-ops (assoc-ref inputs "libatomic-ops")))
+                       ;; GC 7.6.10 and later includes -latomic_ops in the
+                       ;; pkg-config file.  To avoid propagation, insert an
+                       ;; absolute reference so dependent programs can find it.
+                       (substitute* "bdw-gc.pc.in"
+                         (("@ATOMIC_OPS_LIBS@" match)
+                          (string-append "-L" libatomic-ops "/lib "
+                                         match)))
+                       #t))))))
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs `(("libatomic-ops" ,libatomic-ops)))
    (outputs '("out" "debug"))
@@ -91,7 +104,7 @@ C or C++ programs, though that is not its primary goal.")
 (define-public libatomic-ops
   (package
     (name "libatomic-ops")
-    (version "7.6.6")
+    (version "7.6.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -99,7 +112,7 @@ C or C++ programs, though that is not its primary goal.")
                     version "/libatomic_ops-" version ".tar.gz"))
               (sha256
                (base32
-                "0x7071z707msvyrv9dmgahd1sghbkw8fpbagvcag6xs8yp2spzlr"))))
+                "1bwry043f62pc4mgdd37zx3fif19qyrs8f5bw7qxlmkzh5hdyzjq"))))
     (build-system gnu-build-system)
     (outputs '("out" "debug"))
     (synopsis "Accessing hardware atomic memory update operations")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 3fffb9f2ed..34289501fc 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1110,9 +1110,6 @@ relying on a complex dependency tree.")
       (build-system cmake-build-system)
       (arguments
        `(#:parallel-build? #f))
-      (inputs
-       `(("gcc" ,gcc-5))) ; Compilation of bpp-phyl fails with GCC 4.9 so we
-                          ; compile all of the bpp packages with GCC 5.
       (home-page "http://biopp.univ-montp2.fr")
       (synopsis "C++ libraries for Bioinformatics")
       (description
@@ -1148,10 +1145,7 @@ providing them a set of re-usable tools.")
          #:out-of-source? #f))
       (inputs
        `(("bpp-core" ,bpp-core)
-         ("bpp-seq" ,bpp-seq)
-         ;; GCC 4.8 fails due to an 'internal compiler error', so we use a more
-         ;; modern GCC.
-         ("gcc" ,gcc-5)))
+         ("bpp-seq" ,bpp-seq)))
       (home-page "http://biopp.univ-montp2.fr")
       (synopsis "Bio++ phylogenetic Library")
       (description
@@ -1183,8 +1177,7 @@ library provides phylogenetics-related modules.")
          #:tests? #f)) ; There are no tests.
       (inputs
        `(("bpp-core" ,bpp-core)
-         ("bpp-seq" ,bpp-seq)
-         ("gcc" ,gcc-5)))
+         ("bpp-seq" ,bpp-seq)))
       (home-page "http://biopp.univ-montp2.fr")
       (synopsis "Bio++ population genetics library")
       (description
@@ -1217,8 +1210,7 @@ library provides population genetics-related modules.")
          ;; so the tests fail.
          #:out-of-source? #f))
       (inputs
-       `(("bpp-core" ,bpp-core)
-         ("gcc" ,gcc-5))) ; Use GCC 5 as per 'bpp-core'.
+       `(("bpp-core" ,bpp-core)))
       (home-page "http://biopp.univ-montp2.fr")
       (synopsis "Bio++ sequence library")
       (description
@@ -1256,8 +1248,7 @@ library provides sequence-related modules.")
        `(("bpp-core" ,bpp-core)
          ("bpp-seq" ,bpp-seq)
          ("bpp-phyl" ,bpp-phyl)
-         ("bpp-phyl" ,bpp-popgen)
-         ("gcc" ,gcc-5)))
+         ("bpp-phyl" ,bpp-popgen)))
       (home-page "http://biopp.univ-montp2.fr")
       (synopsis "Bioinformatics tools written with the Bio++ libraries")
       (description
@@ -3261,9 +3252,7 @@ comment or quality sections.")
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Ensure that Eigen headers can be found
              (setenv "CPLUS_INCLUDE_PATH"
-                     (string-append (getenv "CPLUS_INCLUDE_PATH")
-                                    ":"
-                                    (assoc-ref inputs "eigen")
+                     (string-append (assoc-ref inputs "eigen")
                                     "/include/eigen3"))
              #t))
          (add-before 'build 'bin-mkdir
@@ -4848,7 +4837,7 @@ generated using the PacBio Iso-Seq protocol.")
 (define-public prank
   (package
     (name "prank")
-    (version "150803")
+    (version "170427")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4856,7 +4845,7 @@ generated using the PacBio Iso-Seq protocol.")
                     version ".tgz"))
               (sha256
                (base32
-                "0am4z94fs3w2n5xpfls9zda61vq7qqz4q2i7b9hlsxz5q4j3kfm4"))))
+                "0nc8g9c5rkdxcir46s0in9ci1sxwzbjibxrvkksf22ybnplvagk2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -11712,9 +11701,7 @@ bytes of memory space, where n is the length of the string.")
 
              ;; Ensure that Eigen headers can be found
              (setenv "CPLUS_INCLUDE_PATH"
-                     (string-append (getenv "CPLUS_INCLUDE_PATH")
-                                    ":"
-                                    (assoc-ref inputs "eigen")
+                     (string-append (assoc-ref inputs "eigen")
                                     "/include/eigen3"))
              #t)))))
     (inputs
@@ -11893,14 +11880,11 @@ The following file formats are supported:
                (("lib/libdivsufsort.a") "/lib/libdivsufsort.so"))
 
              ;; Ensure that all headers can be found
-             (setenv "CPLUS_INCLUDE_PATH"
-                     (string-append (getenv "CPLUS_INCLUDE_PATH")
+             (setenv "CPATH"
+                     (string-append (getenv "CPATH")
                                     ":"
                                     (assoc-ref inputs "eigen")
                                     "/include/eigen3"))
-             (setenv "CPATH"
-                     (string-append (assoc-ref inputs "eigen")
-                                    "/include/eigen3"))
              #t))
          ;; CMAKE_INSTALL_PREFIX does not exist when the tests are
          ;; run.  It only exists after the install phase.
@@ -14093,7 +14077,8 @@ choosing which reads pass the filter.")
              (lambda* (#:key inputs #:allow-other-keys)
                (setenv "CPATH"
                        (string-append (assoc-ref inputs "eigen")
-                                      "/include/eigen3"))
+                                      "/include/eigen3:"
+                                      (or (getenv "CPATH") "")))
                #t))
            (delete 'configure)
            (replace 'install
diff --git a/gnu/packages/bison.scm b/gnu/packages/bison.scm
index 71de47762d..5ebc883d53 100644
--- a/gnu/packages/bison.scm
+++ b/gnu/packages/bison.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,7 +31,7 @@
 (define-public bison
   (package
     (name "bison")
-    (version "3.0.5")
+    (version "3.4.1")
     (source
      (origin
       (method url-fetch)
@@ -38,8 +39,17 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "0f7kjygrckkx8vas2nm673592jif0a9mw5g8207f6hj6h4pfyp07"))))
+        "03c2pmq3bs0drdislnz6gm1rwz3n4pb2rz9navyxydppxg2rl597"))))
     (build-system gnu-build-system)
+    (arguments
+     '(;; Building in parallel on many-core systems may cause an error such as
+       ;; "mv: cannot stat 'examples/c/reccalc/scan.stamp.tmp': No such file or
+       ;; directory".  See <https://bugs.gnu.org/36238>.
+       #:parallel-build? #f
+       ;; Similarly, when building tests in parallel, Make may produce this error:
+       ;; "./examples/c/reccalc/scan.l:13:10: fatal error: parse.h: No such file
+       ;; or directory".  Full log in <https://bugs.gnu.org/36238>.
+       #:parallel-tests? #f))
     (native-inputs `(("perl" ,perl)
                      ;; m4 is not present in PATH when cross-building.
                      ("m4" ,m4)))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 50b63048e4..adb377f25f 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -398,8 +398,7 @@ and will take advantage of multiple processor cores where possible.")
                             (assoc-ref %build-inputs "boost")
                             "/lib")
              "--enable-python-binding"
-             "--enable-tests"
-             "CXXFLAGS=-std=c++11")     ; Use std::chrono instead of boost
+             "--enable-tests")
        #:make-flags (list
                      (string-append "LDFLAGS=-Wl,-rpath="
                                     (assoc-ref %outputs "out") "/lib"))
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index b83bd73a39..a2253a9efc 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -44,7 +44,7 @@
 (define-public boost
   (package
     (name "boost")
-    (version "1.69.0")
+    (version "1.70.0")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -56,8 +56,7 @@
                                           version-with-underscores ".tar.bz2"))))
               (sha256
                (base32
-                "01j4n142dz20lcgqji8d8hspp04p1nv7m8i6dz8w5lchfdhx8clg"))
-              (patches (search-patches "boost-fix-icu-build.patch"))))
+                "0y47nc7w0arwgj4x1phadxbvl7wyfcgknbz5kv8lzpl98wsyh2j3"))))
     (build-system gnu-build-system)
     (inputs `(("icu4c" ,icu4c)
               ("zlib" ,zlib)))
@@ -69,7 +68,11 @@
      `(#:tests? #f
        #:make-flags
        (list "threading=multi" "link=shared"
-             "cxxflags=-std=c++14"
+
+             ;; XXX: Disable installation of Boosts modular CMake config scripts
+             ;; which conflicts in 1.70.0 with the ones provided by CMake.
+             ;; See <https://bugs.gnu.org/36721>.
+             "--no-cmake-config"
 
              ;; Set the RUNPATH to $libdir so that the libs find each other.
              (string-append "linkflags=-Wl,-rpath="
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index cd99425379..ee713db0cf 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -1,7 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019 Carl Dong <contact@carldong.me>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -33,21 +34,30 @@
                 #:select (derivation derivation-input derivation->output-path))
   #:use-module ((guix utils) #:select (gnu-triplet->nix-system))
   #:use-module (guix memoization)
+  #:use-module (guix i18n)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:export (bootstrap-origin
             package-with-bootstrap-guile
             glibc-dynamic-linker
 
+            bootstrap-executable
             bootstrap-guile-origin
 
             %bootstrap-guile
             %bootstrap-coreutils&co
+            %bootstrap-linux-libre-headers
             %bootstrap-binutils
             %bootstrap-gcc
             %bootstrap-glibc
-            %bootstrap-inputs))
+            %bootstrap-inputs
+            %bootstrap-mescc-tools
+            %bootstrap-mes
+
+            %bootstrap-inputs-for-tests))
 
 ;;; Commentary:
 ;;;
@@ -59,6 +69,82 @@
 
 
 ;;;
+;;; The bootstrap executables: 'bash', 'mkdir', 'tar', 'xz'.  They allow us to
+;;; extract the very first tarball.
+;;;
+
+(define %bootstrap-executables
+  ;; List of bootstrap executables and their recursive hashes (as per 'guix
+  ;; hash -r'), taking their executable bit into account.
+  `(("aarch64-linux"
+     ("bash"
+      ,(base32 "13aqhqb8nydlwq1ah9974q0iadx1pb95v13wzzyf7vgv6nasrwzr"))
+     ("mkdir"
+      ,(base32 "1pxhdp7ldwavmm71xbh9wc197cb2nr66acjn26yjx3732cixh9ws"))
+     ("tar"
+      ,(base32 "1j51gv08sfg277yxj73xd564wjq3f8xwd6s9rbcg8v9gms47m4cx"))
+     ("xz"
+      ,(base32 "1d779rwsrasphg5g3r37qppcqy3p7ay1jb1y83w7x4i3qsc7zjy2")))
+    ("armhf-linux"
+     ("bash"
+      ,(base32 "0s6f1s26g4dsrrkl39zblvwpxmbzi6n9mgqf6vxsqz42gik6bgyn"))
+     ("mkdir"
+      ,(base32 "1r5rcp35niyxfkrdf00y2ba8ifrq9bi76cr63lwjf2l655j1i5p7"))
+     ("tar"
+      ,(base32 "0dksx5im3fv8ximz7368bsax9f26nn47ds74298flm5lnvpv9xly"))
+     ("xz"
+      ,(base32 "1cqqavghjfr0iwxqf61lrssv27wfigysgq2rs4rm1gkmn04yn1k3")))
+    ("i686-linux"
+     ("bash"
+      ,(base32 "0rjaxyzjdllfkf1abczvgaf3cdcc7mmahyvdbkjmjzhgz92pv23g"))
+     ("mkdir"
+      ,(base32 "133ybmfpkmsnysrzbngwvbysqnsmfi8is8zifs7i7n6n600h4s1w"))
+     ("tar"
+      ,(base32 "07830bx29ad5i0l1ykj0g0b1jayjdblf01sr3ww9wbnwdbzinqms"))
+     ("xz"
+      ,(base32 "0i9kxdi17bm5gxfi2xzm0y73p3ii0cqxli1sbljm6rh2fjgyn90k")))
+    ("mips64el-linux"
+     ("bash"
+      ,(base32 "1aw046dhda240k9pb9iaj5aqkm23gkvxa9j82n4k7fk87nbrixw6"))
+     ("mkdir"
+      ,(base32 "0c9j6qgyw84zxbry3ypifzll13gy8ax71w40kdk1h11jbgla3f5k"))
+     ("tar"
+      ,(base32 "06gmqdjq3rl8lr47b9fyx4ifnm5x56ymc8lyryp1ax1j2s4y5jb4"))
+     ("xz"
+      ,(base32 "09j1d69qr0hhhx4k4ih8wp00dfc9y4rp01hfg3vc15yxd0jxabh5")))))
+
+(define (bootstrap-executable-url program system)
+  "Return the URL where PROGRAM can be found for SYSTEM."
+  (string-append
+   "https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstrap/"
+   system "/" program
+   "?id=44f07d1dc6806e97c4e9ee3e6be883cc59dc666e"))
+
+(define bootstrap-executable
+  (mlambda (program system)
+    "Return an origin for PROGRAM, a statically-linked bootstrap executable
+built for SYSTEM."
+    (let ((system (if (string=? system "x86_64-linux")
+                      "i686-linux"
+                      system)))
+      (match (assoc-ref (assoc-ref %bootstrap-executables system)
+                        program)
+        (#f
+         (raise (condition
+                 (&message
+                  (message
+                   (format #f (G_ "could not find bootstrap binary '~a' \
+for system '~a'")
+                           program system))))))
+        ((sha256)
+         (origin
+           (method url-fetch/executable)
+           (uri (bootstrap-executable-url program system))
+           (file-name program)
+           (sha256 sha256)))))))
+
+
+;;;
 ;;; Helper procedures.
 ;;;
 
@@ -98,10 +184,10 @@
 (define* (package-from-tarball name source program-to-test description
                                #:key snippet)
   "Return a package that correspond to the extraction of SOURCE.
-PROGRAM-TO-TEST is a program to run after extraction of SOURCE, to check
-whether everything is alright.  If SNIPPET is provided, it is evaluated after
-extracting SOURCE.  SNIPPET should raise an exception to signal an error; its
-return value is ignored."
+PROGRAM-TO-TEST is #f or a string: the program to run after extraction of
+SOURCE to check whether everything is alright.  If SNIPPET is provided, it is
+evaluated after extracting SOURCE.  SNIPPET should return true if successful,
+or false to signal an error."
   (package
     (name name)
     (version "0")
@@ -110,25 +196,28 @@ return value is ignored."
      `(#:guile ,%bootstrap-guile
        #:modules ((guix build utils))
        #:builder
-       (let ((out     (assoc-ref %outputs "out"))
-             (tar     (assoc-ref %build-inputs "tar"))
-             (xz      (assoc-ref %build-inputs "xz"))
-             (tarball (assoc-ref %build-inputs "tarball")))
+       (begin
          (use-modules (guix build utils))
 
-         (mkdir out)
-         (copy-file tarball "binaries.tar.xz")
-         (invoke xz "-d" "binaries.tar.xz")
-         (let ((builddir (getcwd)))
-           (with-directory-excursion out
-             (invoke tar "xvf"
-                     (string-append builddir "/binaries.tar"))
-             ,@(if snippet (list snippet) '())
-             (invoke (string-append "bin/" ,program-to-test)
-                     "--version"))))))
+         (let ((out     (assoc-ref %outputs "out"))
+              (tar     (assoc-ref %build-inputs "tar"))
+              (xz      (assoc-ref %build-inputs "xz"))
+              (tarball (assoc-ref %build-inputs "tarball")))
+
+          (mkdir out)
+          (copy-file tarball "binaries.tar.xz")
+          (invoke xz "-d" "binaries.tar.xz")
+          (let ((builddir (getcwd)))
+            (with-directory-excursion out
+              (invoke tar "xvf"
+                      (string-append builddir "/binaries.tar"))
+              ,@(if snippet (list snippet) '())
+              (or (not ,program-to-test)
+                  (invoke (string-append "bin/" ,program-to-test)
+                          "--version"))))))))
     (inputs
-     `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
-       ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
+     `(("tar" ,(bootstrap-executable "tar" (%current-system)))
+       ("xz"  ,(bootstrap-executable "xz" (%current-system)))
        ("tarball" ,(bootstrap-origin (source (%current-system))))))
     (source #f)
     (synopsis description)
@@ -201,7 +290,9 @@ return value is ignored."
 
 (define %bootstrap-base-urls
   ;; This is where the initial binaries come from.
-  '("https://alpha.gnu.org/gnu/guix/bootstrap"
+  '("https://ftp.gnu.org/gnu/guix/bootstrap"
+    "https://alpha.gnu.org/gnu/guix/bootstrap"
+    "http://ftp.gnu.org/gnu/guix/bootstrap"
     "http://alpha.gnu.org/gnu/guix/bootstrap"
     "ftp://alpha.gnu.org/gnu/guix/bootstrap"
     "http://www.fdn.fr/~lcourtes/software/guix/packages"
@@ -253,11 +344,9 @@ return value is ignored."
                     #:key outputs system search-paths
                     #:allow-other-keys)
   (define (->store file)
-    (add-to-store store file #t "sha256"
-                  (or (search-bootstrap-binary file
-                                               system)
-                      (error "bootstrap binary not found"
-                             file system))))
+    (run-with-store store
+      (origin->derivation (bootstrap-executable file system)
+                          system)))
 
   (let* ((tar   (->store "tar"))
          (xz    (->store "xz"))
@@ -307,15 +396,17 @@ $out/bin/guile -c ~s $out ~a
 
 # Sanity check.
 $out/bin/guile --version~%"
-                                     mkdir xz tar
+                                     (derivation->output-path mkdir)
+                                     (derivation->output-path xz)
+                                     (derivation->output-path tar)
                                      (format #f "~s" make-guile-wrapper)
-                                     bash)
-                             (list mkdir xz tar bash))))
+                                     (derivation->output-path bash)))))
     (derivation store name
-                bash `(,builder)
+                (derivation->output-path bash) `(,builder)
                 #:system system
-                #:inputs (list (derivation-input guile))
-                #:sources (list bash builder)
+                #:inputs (map derivation-input
+                              (list bash mkdir tar xz guile))
+                #:sources (list builder)
                 #:env-vars `(("GUILE_TARBALL"
                               . ,(derivation->output-path guile))))))
 
@@ -396,6 +487,22 @@ $out/bin/guile --version~%"
                                (("^exec grep") (string-append (getcwd) "/bin/grep"))))
                            (chmod "bin" #o555))))
 
+(define-public %bootstrap-linux-libre-headers
+  (package-from-tarball
+   "linux-libre-headers-bootstrap"
+   (lambda (system)
+     (origin
+       (method url-fetch)
+       (uri (map (cute string-append <>
+                       "/i686-linux/20190815/"
+                       "linux-libre-headers-stripped-4.14.67-i686-linux.tar.xz")
+                 %bootstrap-base-urls))
+       (sha256
+        (base32
+         "0sm2z9x4wk45bh6qfs94p0w1d6hsy6dqx9sw38qsqbvxwa1qzk8s"))))
+   #f                                   ; no program to test
+   "Bootstrap linux-libre-headers"))
+
 (define %bootstrap-binutils
   (package-from-tarball "binutils-bootstrap"
                         (lambda (system)
@@ -441,31 +548,33 @@ $out/bin/guile --version~%"
      `(#:guile ,%bootstrap-guile
        #:modules ((guix build utils))
        #:builder
-       (let ((out     (assoc-ref %outputs "out"))
-             (tar     (assoc-ref %build-inputs "tar"))
-             (xz      (assoc-ref %build-inputs "xz"))
-             (tarball (assoc-ref %build-inputs "tarball")))
+       (begin
          (use-modules (guix build utils))
 
-         (mkdir out)
-         (copy-file tarball "binaries.tar.xz")
-         (invoke xz "-d" "binaries.tar.xz")
-         (let ((builddir (getcwd)))
-           (with-directory-excursion out
-             (invoke tar "xvf"
-                     (string-append builddir
-                                    "/binaries.tar"))
-             (chmod "lib" #o755)
-
-             ;; Patch libc.so so it refers to the right path.
-             (substitute* "lib/libc.so"
-               (("/[^ ]+/lib/(libc|ld)" _ prefix)
-                (string-append out "/lib/" prefix)))
-
-             #t)))))
+         (let ((out     (assoc-ref %outputs "out"))
+              (tar     (assoc-ref %build-inputs "tar"))
+              (xz      (assoc-ref %build-inputs "xz"))
+              (tarball (assoc-ref %build-inputs "tarball")))
+
+          (mkdir out)
+          (copy-file tarball "binaries.tar.xz")
+          (invoke xz "-d" "binaries.tar.xz")
+          (let ((builddir (getcwd)))
+            (with-directory-excursion out
+              (invoke tar "xvf"
+                      (string-append builddir
+                                     "/binaries.tar"))
+              (chmod "lib" #o755)
+
+              ;; Patch libc.so so it refers to the right path.
+              (substitute* "lib/libc.so"
+                (("/[^ ]+/lib/(libc|ld)" _ prefix)
+                 (string-append out "/lib/" prefix)))
+
+              #t))))))
     (inputs
-     `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
-       ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
+     `(("tar" ,(bootstrap-executable "tar" (%current-system)))
+       ("xz"  ,(bootstrap-executable "xz" (%current-system)))
        ("tarball" ,(bootstrap-origin
                     (origin
                      (method url-fetch)
@@ -512,73 +621,75 @@ $out/bin/guile --version~%"
      `(#:guile ,%bootstrap-guile
        #:modules ((guix build utils))
        #:builder
-       (let ((out     (assoc-ref %outputs "out"))
-             (tar     (assoc-ref %build-inputs "tar"))
-             (xz      (assoc-ref %build-inputs "xz"))
-             (bash    (assoc-ref %build-inputs "bash"))
-             (libc    (assoc-ref %build-inputs "libc"))
-             (tarball (assoc-ref %build-inputs "tarball")))
+       (begin
          (use-modules (guix build utils)
                       (ice-9 popen))
 
-         (mkdir out)
-         (copy-file tarball "binaries.tar.xz")
-         (invoke xz "-d" "binaries.tar.xz")
-         (let ((builddir (getcwd))
-               (bindir   (string-append out "/bin")))
-           (with-directory-excursion out
-             (invoke tar "xvf"
-                     (string-append builddir "/binaries.tar")))
-
-           (with-directory-excursion bindir
-             (chmod "." #o755)
-             (rename-file "gcc" ".gcc-wrapped")
-             (call-with-output-file "gcc"
-               (lambda (p)
-                 (format p "#!~a
+         (let ((out     (assoc-ref %outputs "out"))
+               (tar     (assoc-ref %build-inputs "tar"))
+               (xz      (assoc-ref %build-inputs "xz"))
+               (bash    (assoc-ref %build-inputs "bash"))
+               (libc    (assoc-ref %build-inputs "libc"))
+               (tarball (assoc-ref %build-inputs "tarball")))
+
+           (mkdir out)
+           (copy-file tarball "binaries.tar.xz")
+           (invoke xz "-d" "binaries.tar.xz")
+           (let ((builddir (getcwd))
+                 (bindir   (string-append out "/bin")))
+             (with-directory-excursion out
+               (invoke tar "xvf"
+                       (string-append builddir "/binaries.tar")))
+
+             (with-directory-excursion bindir
+               (chmod "." #o755)
+               (rename-file "gcc" ".gcc-wrapped")
+               (call-with-output-file "gcc"
+                 (lambda (p)
+                   (format p "#!~a
 exec ~a/bin/.gcc-wrapped -B~a/lib \
      -Wl,-rpath -Wl,~a/lib \
      -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
-                         bash
-                         out libc libc libc
-                         ,(glibc-dynamic-linker))))
+                           bash
+                           out libc libc libc
+                           ,(glibc-dynamic-linker))))
 
-             (chmod "gcc" #o555)
-             #t)))))
+               (chmod "gcc" #o555)
+               #t))))))
     (inputs
-     `(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
-       ("xz"  ,(search-bootstrap-binary "xz" (%current-system)))
-       ("bash" ,(search-bootstrap-binary "bash" (%current-system)))
+     `(("tar" ,(bootstrap-executable "tar" (%current-system)))
+       ("xz"  ,(bootstrap-executable "xz" (%current-system)))
+       ("bash" ,(bootstrap-executable "bash" (%current-system)))
        ("libc" ,%bootstrap-glibc)
        ("tarball" ,(bootstrap-origin
                     (origin
-                     (method url-fetch)
-                     (uri (map (cut string-append <> "/" (%current-system)
-                                    (match (%current-system)
-                                      ("armhf-linux"
-                                       "/20150101/gcc-4.8.4.tar.xz")
-                                      ("aarch64-linux"
-                                       "/20170217/gcc-5.4.0.tar.xz")
-                                      (_
-                                       "/20131110/gcc-4.8.2.tar.xz")))
-                               %bootstrap-base-urls))
-                     (sha256
-                      (match (%current-system)
-                        ("x86_64-linux"
-                         (base32
-                          "17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls"))
-                        ("i686-linux"
-                         (base32
-                          "150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw"))
-                        ("armhf-linux"
-                         (base32
-                          "0ghz825yzp43fxw53kd6afm8nkz16f7dxi9xi40bfwc8x3nbbr8v"))
-                        ("aarch64-linux"
-                         (base32
-                          "1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1"))
-                        ("mips64el-linux"
-                         (base32
-                          "1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks")))))))))
+                      (method url-fetch)
+                      (uri (map (cut string-append <> "/" (%current-system)
+                                     (match (%current-system)
+                                       ("armhf-linux"
+                                        "/20150101/gcc-4.8.4.tar.xz")
+                                       ("aarch64-linux"
+                                        "/20170217/gcc-5.4.0.tar.xz")
+                                       (_
+                                        "/20131110/gcc-4.8.2.tar.xz")))
+                                %bootstrap-base-urls))
+                      (sha256
+                       (match (%current-system)
+                         ("x86_64-linux"
+                          (base32
+                           "17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls"))
+                         ("i686-linux"
+                          (base32
+                           "150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw"))
+                         ("armhf-linux"
+                          (base32
+                           "0ghz825yzp43fxw53kd6afm8nkz16f7dxi9xi40bfwc8x3nbbr8v"))
+                         ("aarch64-linux"
+                          (base32
+                           "1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1"))
+                         ("mips64el-linux"
+                          (base32
+                           "1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks")))))))))
     (native-search-paths
      (list (search-path-specification
             (variable "CPATH")
@@ -591,15 +702,129 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
     (home-page #f)
     (license gpl3+)))
 
-(define %bootstrap-inputs
+(define %bootstrap-mescc-tools
+  ;; The initial MesCC tools.  Uses binaries from a tarball typically built by
+  ;; %MESCC-TOOLS-BOOTSTRAP-TARBALL.
+  (package
+    (name "bootstrap-mescc-tools")
+    (version "0.5.2")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 popen))
+         (let ((out     (assoc-ref %outputs "out"))
+               (tar     (assoc-ref %build-inputs "tar"))
+               (xz      (assoc-ref %build-inputs "xz"))
+               (tarball (assoc-ref %build-inputs "tarball")))
+
+           (mkdir out)
+           (copy-file tarball "binaries.tar.xz")
+           (invoke xz "-d" "binaries.tar.xz")
+           (let ((builddir (getcwd))
+                 (bindir   (string-append out "/bin")))
+             (with-directory-excursion out
+               (invoke tar "xvf"
+                       (string-append builddir "/binaries.tar"))))))))
+    (inputs
+     `(("tar" ,(bootstrap-executable "tar" (%current-system)))
+       ("xz"  ,(bootstrap-executable "xz" (%current-system)))
+       ("tarball"
+        ,(bootstrap-origin
+          (origin
+            (method url-fetch)
+            (uri (map
+                  (cute string-append <>
+                        "/i686-linux/20190815/"
+                        "mescc-tools-static-stripped-0.5.2-i686-linux.tar.xz")
+                  %bootstrap-base-urls))
+            (sha256
+             (base32
+              "0c3kklgghzh4q2dbpl6asb74cimp7hp6jscdwqwmzxbapgcl6582")))))))
+    (synopsis "Bootstrap binaries of MesCC Tools")
+    (description synopsis)
+    (home-page #f)
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (license gpl3+)))
+
+(define %bootstrap-mes
+  ;; The initial Mes.  Uses binaries from a tarball typically built by
+  ;; %MES-BOOTSTRAP-TARBALL.
+  (package
+    (name "bootstrap-mes")
+    (version "0")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 popen))
+         (let ((out     (assoc-ref %outputs "out"))
+               (tar     (assoc-ref %build-inputs "tar"))
+               (xz      (assoc-ref %build-inputs "xz"))
+               (tarball (assoc-ref %build-inputs "tarball")))
+
+           (mkdir out)
+           (copy-file tarball "binaries.tar.xz")
+           (invoke xz "-d" "binaries.tar.xz")
+           (let ((builddir (getcwd))
+                 (bindir   (string-append out "/bin")))
+             (with-directory-excursion out
+               (invoke tar "xvf"
+                       (string-append builddir "/binaries.tar"))))))))
+    (inputs
+     `(("tar" ,(bootstrap-executable "tar" (%current-system)))
+       ("xz"  ,(bootstrap-executable "xz" (%current-system)))
+       ("tarball"
+        ,(bootstrap-origin
+          (origin
+            (method url-fetch)
+            (uri (map
+                  (cute string-append <>
+                        "/i686-linux/20190815/"
+                        "mes-minimal-stripped-0.19-i686-linux.tar.xz")
+                  %bootstrap-base-urls))
+            (sha256
+             (base32
+              "1q4xjpx6nbn44kxnilpgl12bhpmwy2bblzwszc2ci7xkf400jcpv")))))))
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (synopsis "Bootstrap binaries of Mes")
+    (description synopsis)
+    (home-page #f)
+    (license gpl3+)))
+
+(define (%bootstrap-inputs)
   ;; The initial, pre-built inputs.  From now on, we can start building our
   ;; own packages.
+  `(,@(match (%current-system)
+        ((or "i686-linux" "x86_64-linux")
+         `(("linux-libre-headers" ,%bootstrap-linux-libre-headers)
+           ("bootstrap-mescc-tools" ,%bootstrap-mescc-tools)
+           ("mes" ,%bootstrap-mes)))
+        (_
+         `(("libc" ,%bootstrap-glibc)
+           ("gcc" ,%bootstrap-gcc)
+           ("binutils" ,%bootstrap-binutils))))
+    ("coreutils&co" ,%bootstrap-coreutils&co)
+
+    ;; In gnu-build-system.scm, we rely on the availability of Bash.
+    ("bash" ,%bootstrap-coreutils&co)))
+
+(define %bootstrap-inputs-for-tests
+  ;; These are bootstrap inputs that are cheap to produce (no compilation
+  ;; needed) and that are meant to be used for testing.  (These are those we
+  ;; used before the Mes-based reduced bootstrap.)
   `(("libc" ,%bootstrap-glibc)
     ("gcc" ,%bootstrap-gcc)
     ("binutils" ,%bootstrap-binutils)
     ("coreutils&co" ,%bootstrap-coreutils&co)
-
-    ;; In gnu-build-system.scm, we rely on the availability of Bash.
     ("bash" ,%bootstrap-coreutils&co)))
 
 ;;; bootstrap.scm ends here
diff --git a/gnu/packages/bootstrap/aarch64-linux/bash b/gnu/packages/bootstrap/aarch64-linux/bash
deleted file mode 100755
index 0bfb9d1824..0000000000
--- a/gnu/packages/bootstrap/aarch64-linux/bash
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/aarch64-linux/mkdir b/gnu/packages/bootstrap/aarch64-linux/mkdir
deleted file mode 100755
index 35cd1815fd..0000000000
--- a/gnu/packages/bootstrap/aarch64-linux/mkdir
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/aarch64-linux/tar b/gnu/packages/bootstrap/aarch64-linux/tar
deleted file mode 100755
index 7e68edb0be..0000000000
--- a/gnu/packages/bootstrap/aarch64-linux/tar
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/aarch64-linux/xz b/gnu/packages/bootstrap/aarch64-linux/xz
deleted file mode 100755
index 5aa18c9234..0000000000
--- a/gnu/packages/bootstrap/aarch64-linux/xz
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/armhf-linux/bash b/gnu/packages/bootstrap/armhf-linux/bash
deleted file mode 100755
index 212a22c8ce..0000000000
--- a/gnu/packages/bootstrap/armhf-linux/bash
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/armhf-linux/mkdir b/gnu/packages/bootstrap/armhf-linux/mkdir
deleted file mode 100755
index c3e5246e92..0000000000
--- a/gnu/packages/bootstrap/armhf-linux/mkdir
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/armhf-linux/tar b/gnu/packages/bootstrap/armhf-linux/tar
deleted file mode 100755
index 5a6aac8a58..0000000000
--- a/gnu/packages/bootstrap/armhf-linux/tar
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/armhf-linux/xz b/gnu/packages/bootstrap/armhf-linux/xz
deleted file mode 100755
index a77aebc268..0000000000
--- a/gnu/packages/bootstrap/armhf-linux/xz
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/bash b/gnu/packages/bootstrap/i686-linux/bash
deleted file mode 100755
index 4b99d7eb4a..0000000000
--- a/gnu/packages/bootstrap/i686-linux/bash
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/mkdir b/gnu/packages/bootstrap/i686-linux/mkdir
deleted file mode 100755
index 6623a38404..0000000000
--- a/gnu/packages/bootstrap/i686-linux/mkdir
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/tar b/gnu/packages/bootstrap/i686-linux/tar
deleted file mode 100755
index d33cd391f1..0000000000
--- a/gnu/packages/bootstrap/i686-linux/tar
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/xz b/gnu/packages/bootstrap/i686-linux/xz
deleted file mode 100755
index f94dbde77c..0000000000
--- a/gnu/packages/bootstrap/i686-linux/xz
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/mips64el-linux/bash b/gnu/packages/bootstrap/mips64el-linux/bash
deleted file mode 100755
index 403671d2fa..0000000000
--- a/gnu/packages/bootstrap/mips64el-linux/bash
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/mips64el-linux/mkdir b/gnu/packages/bootstrap/mips64el-linux/mkdir
deleted file mode 100755
index c8d3285b38..0000000000
--- a/gnu/packages/bootstrap/mips64el-linux/mkdir
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/mips64el-linux/tar b/gnu/packages/bootstrap/mips64el-linux/tar
deleted file mode 100755
index 0cdf7cce2c..0000000000
--- a/gnu/packages/bootstrap/mips64el-linux/tar
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/mips64el-linux/xz b/gnu/packages/bootstrap/mips64el-linux/xz
deleted file mode 100755
index b0622ba946..0000000000
--- a/gnu/packages/bootstrap/mips64el-linux/xz
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/bash b/gnu/packages/bootstrap/x86_64-linux/bash
deleted file mode 100755
index b9c410b7cf..0000000000
--- a/gnu/packages/bootstrap/x86_64-linux/bash
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/mkdir b/gnu/packages/bootstrap/x86_64-linux/mkdir
deleted file mode 100755
index f8250ae693..0000000000
--- a/gnu/packages/bootstrap/x86_64-linux/mkdir
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/tar b/gnu/packages/bootstrap/x86_64-linux/tar
deleted file mode 100755
index 90e492f89d..0000000000
--- a/gnu/packages/bootstrap/x86_64-linux/tar
+++ /dev/null
Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/xz b/gnu/packages/bootstrap/x86_64-linux/xz
deleted file mode 100755
index 6bfe3c6d96..0000000000
--- a/gnu/packages/bootstrap/x86_64-linux/xz
+++ /dev/null
Binary files differdiff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index cfe73afb64..a694a7ddad 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -162,7 +162,7 @@ files and generates build instructions for the Ninja build system.")
 (define-public meson
   (package
     (name "meson")
-    (version "0.50.0")
+    (version "0.50.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mesonbuild/meson/"
@@ -170,7 +170,7 @@ files and generates build instructions for the Ninja build system.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "07q2wz23wjfk8z66mli1cc9as0ycjp5f39fd4awny82qv8nw86ra"))))
+                "1k2fw5qk4mqjcb4j5dhp8xfn0caqphb11yh8zkw7v9w01kb5d3zn"))))
     (build-system python-build-system)
     (arguments
      `(;; FIXME: Tests require many additional inputs, a fix for the RUNPATH
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 374a4d35fa..dab0bd39c3 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -134,14 +134,14 @@ with a flexible variety of user interfaces.")
 (define-public cppunit
   (package
     (name "cppunit")
-    (version "1.13.2")
+    (version "1.14.0")
     (source (origin
              (method url-fetch)
               (uri (string-append "http://dev-www.libreoffice.org/src/"
                                   name "-" version ".tar.gz"))
              (sha256
               (base32
-               "17s2kzmkw3kfjhpp72rfppyd7syr7bdq5s69syj2nvrlwd3d4irz"))))
+               "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix"))))
     ;; Explicitly link with libdl. This is expected to be done by packages
     ;; relying on cppunit for their tests. However, not all of them do.
     ;; If we added the linker flag to such packages, we would pollute all
@@ -156,23 +156,6 @@ unit testing.  Test output is in XML for automatic testing and GUI based for
 supervised tests.")
     (license license:lgpl2.1))) ; no copyright notices. LGPL2.1 is in the tarball
 
-;; Some packages require this newer version of cppunit.  However, it needs
-;; C++11 support, which is not enabled by default in our current GCC, and
-;; updating in-place would require adding CXXFLAGS to many dependent packages.
-;; Thus, keep as a separate variable for now.
-;; TODO: Remove this when our default GCC is updated to 6 or higher.
-(define-public cppunit-1.14
-  (package
-    (inherit cppunit)
-    (version "1.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://dev-www.libreoffice.org/src/"
-                                  "cppunit-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix"))))))
-
 ;; When dependent packages upgraded to use newer version of catch, this one should
 ;; be removed.
 (define-public catch-framework
@@ -700,31 +683,28 @@ standard library.")
 (define-public python-pytest
   (package
     (name "python-pytest")
-    (version "3.8.0")
+    (version "4.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest" version))
        (sha256
         (base32
-         "17grcfvd6ggvvqmprwv5y8g319nayam70hr43ssjwj40ws27z858"))))
+         "18w38kjnffdcrlbw6ny6dksgxai6x9bxpjs2m6klqmb8hfzjkcb2"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'disable-invalid-tests
+         (replace 'check
            (lambda _
-             ;; Some tests involves the /usr directory, and fails.
-             (substitute* "testing/test_argcomplete.py"
-               (("def test_remove_dir_prefix\\(self\\):")
-                "@pytest.mark.xfail\n    def test_remove_dir_prefix(self):"))
-             (substitute* "testing/test_argcomplete.py"
-               (("def test_remove_dir_prefix" line)
-                (string-append "@pytest.mark.skip"
-                               "(reason=\"Assumes that /usr exists.\")\n    "
-                               line)))
-             #t))
-         (replace 'check (lambda _ (invoke "pytest" "-vv"))))))
+             (invoke "pytest" "-vv" "-k"
+                     (string-append
+                      ;; These tests involve the /usr directory, and fails.
+                      "not test_remove_dir_prefix"
+                      " and not test_argcomplete"
+                      ;; This test tries to override PYTHONPATH, and
+                      ;; subsequently fails to locate the test libraries.
+                      " and not test_collection")))))))
     (propagated-inputs
      `(("python-atomicwrites" ,python-atomicwrites)
        ("python-attrs" ,python-attrs-bootstrap)
@@ -814,14 +794,14 @@ supports coverage of subprocesses.")
 (define-public python-pytest-runner
   (package
     (name "python-pytest-runner")
-    (version "4.2")
+    (version "4.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-runner" version))
        (sha256
         (base32
-         "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj"))))
+         "1x0d9n40lsiphblbs61rdc0d5r31f6vh0vcahqdv0mffakbnrb80"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pytest" ,python-pytest-bootstrap)
@@ -1265,14 +1245,14 @@ have failed since the last commit or what tests are currently failing.")))
 (define-public python-coverage
   (package
     (name "python-coverage")
-    (version "4.4.1")
+    (version "4.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "coverage" version))
        (sha256
         (base32
-         "097l4s3ssxm1vncsn0nw3a1pbzah28773q36c1ab9wz01r04973s"))))
+         "02f6m073qdispn96rc616hg0rnmw1pgqzw3bgxwiwza4zf9hirlx"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
@@ -1535,17 +1515,16 @@ instantly.")
 (define-public python-hypothesis
   (package
     (name "python-hypothesis")
-    (version "3.70.3")
+    (version "4.18.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "hypothesis" version))
               (sha256
                (base32
-                "1rshs1japfmwgar98yrkq4hg4z2q76hlnq7w2n3lfbjnscn1jd9b"))))
+                "0a35nwqyjnm4cphi43xracqpkws0ip61mndvqb1iqq7gkva83lb1"))))
     (build-system python-build-system)
     (native-inputs
-     `(;; FIXME: Change to python-flake8 in the next rebuild cycle.
-       ("python-flake8" ,python-flake8-3.5)
+     `(("python-flake8" ,python-flake8)
        ("python-pytest" ,python-pytest-bootstrap)))
     (propagated-inputs
      `(("python-attrs" ,python-attrs-bootstrap)
@@ -2145,33 +2124,45 @@ retried.")
   (package-with-python2 python-flaky))
 
 (define-public python-pyhamcrest
-  (package
-    (name "python-pyhamcrest")
-    (version "1.9.0")
-    (source (origin
-              ;; Tests not distributed from pypi release.
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/hamcrest/PyHamcrest")
-                     (commit (string-append "V" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "01qnzj9qnzz0y78qa3ing24ssvszb0adw59xc4qqmdn5wryy606b"))))
-    (native-inputs                      ; All native inputs are for tests
-     `(("python-pytest-cov" ,python-pytest-cov)
-       ("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest)
-       ("python-hypothesis" ,python-hypothesis)))
-    (propagated-inputs
-     `(("python-six" ,python-six)))
-    (build-system python-build-system)
-    (home-page "http://hamcrest.org/")
-    (synopsis "Hamcrest matchers for Python")
-    (description
-     "PyHamcrest is a framework for writing matcher objects,
+  ;; The latest release was in 2016 and its test suite does not work with recent
+  ;; versions of Pytest.  Just take the master branch for now, which seems stable.
+  (let ((commit "25fdc5f00bdf3084335353bc9247253098ec4cf2")
+        (revision "0"))
+    (package
+      (name "python-pyhamcrest")
+      (version (git-version "1.9.0" revision commit))
+      (source (origin
+                ;; Tests not distributed from pypi release.
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/hamcrest/PyHamcrest")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1miqmhhi68vaix8sqc1lvpvbm27bacffxh5anm5cbfsvk7g9n6f3"))))
+      (native-inputs                    ;all native inputs are for tests
+       `(("python-pytest-cov" ,python-pytest-cov)
+         ("python-mock" ,python-mock)
+         ("python-pytest" ,python-pytest)
+         ("python-hypothesis" ,python-hypothesis)))
+      (propagated-inputs
+       `(("python-six" ,python-six)))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (replace 'check
+                      (lambda _
+                        (setenv "PYTHONPATH"
+                                (string-append "build/lib:"
+                                               (getenv "PYTHONPATH")))
+                        (invoke "pytest" "-vv"))))))
+      (home-page "http://hamcrest.org/")
+      (synopsis "Hamcrest matchers for Python")
+      (description
+       "PyHamcrest is a framework for writing matcher objects,
  allowing you to declaratively define \"match\" rules.")
-    (license license:bsd-3)))
+      (license license:bsd-3))))
 
 (define-public python2-pyhamcrest
   (package-with-python2 python-pyhamcrest))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index ebad0538d3..aad1fd9203 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -762,11 +762,7 @@ from forcing GEXP-PROMISE."
        ("glib" ,glib)
        ("gtk+" ,gtk+)
        ("harfbuzz" ,harfbuzz)
-
-       ;; Build against ICU 64 to prevent a localization problem in version 75
-       ;; and later: <https://github.com/Eloston/ungoogled-chromium/issues/778>.
-       ("icu4c" ,icu4c-64)
-
+       ("icu4c" ,icu4c)
        ("jsoncpp" ,jsoncpp)
        ("lcms" ,lcms)
        ("libevent" ,libevent)
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 95f884b36d..64349be444 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,12 +40,17 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages xml)
+  #:use-module (srfi srfi-1))
 
-(define-public cmake
+;;; This minimal variant of CMake does not include the documentation. It is
+;;; used by the cmake-build-system.
+(define-public cmake-minimal
   (package
-    (name "cmake")
-    (version "3.13.1")
+    (name "cmake-minimal")
+    (version "3.15.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.cmake.org/files/v"
@@ -52,7 +58,7 @@
                                   "/cmake-" version ".tar.gz"))
               (sha256
                (base32
-                "04123d7fgnn1fs5p0nwyq397ss89r0y4wkg9a09qiwkjsvk1rzmy"))
+                "1xyprly3sf4wi0n1x79k4n22yxm6pb7fv70gqr9lvc7qv14cbphq"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -72,6 +78,23 @@
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
+       #:configure-flags
+       (let ((out (assoc-ref %outputs "out"))
+             (parallel-job-count (number->string (parallel-job-count))))
+         (list "--verbose"
+               (string-append "--parallel=" parallel-job-count)
+               (string-append "--prefix=" out)
+               "--system-libs"
+               "--no-system-jsoncpp"    ; FIXME: Circular dependency.
+               ;; By default, the man pages and other docs land
+               ;; in PREFIX/man and PREFIX/doc, but we want them
+               ;; in share/{man,doc}.  Note that unlike
+               ;; autoconf-generated configure scripts, cmake's
+               ;; configure prepends "PREFIX/" to what we pass
+               ;; to --mandir and --docdir.
+               "--mandir=share/man"
+               ,(string-append "--docdir=share/doc/cmake-"
+                               (version-major+minor version))))
        #:make-flags
        (let ((skipped-tests
               (list "BundleUtilities" ; This test fails on Guix.
@@ -101,7 +124,6 @@
              (substitute*
                  '("Modules/CompilerId/Xcode-3.pbxproj.in"
                    "Modules/CPack.RuntimeScript.in"
-                   "Source/cmakexbuild.cxx"
                    "Source/cmGlobalXCodeGenerator.cxx"
                    "Source/cmLocalUnixMakefileGenerator3.cxx"
                    "Source/cmExecProgramCommand.cxx"
@@ -116,27 +138,13 @@
              ;; Help cmake's bootstrap process to find system libraries
              (begin
                (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
-               (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
+               (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH")
+                                                (getenv "C_INCLUDE_PATH")))
                #t)))
+         ;; CMake uses its own configure script.
          (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke
-                "./configure" "--verbose"
-                (string-append "--parallel=" (number->string (parallel-job-count)))
-                (string-append "--prefix=" out)
-                "--system-libs"
-                "--no-system-jsoncpp" ; FIXME: Circular dependency.
-                ;; By default, the man pages and other docs land
-                ;; in PREFIX/man and PREFIX/doc, but we want them
-                ;; in share/{man,doc}.  Note that unlike
-                ;; autoconf-generated configure scripts, cmake's
-                ;; configure prepends "PREFIX/" to what we pass
-                ;; to --mandir and --docdir.
-                "--mandir=share/man"
-                ,(string-append
-                  "--docdir=share/doc/cmake-"
-                  (version-major+minor version)))))))))
+           (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+             (apply invoke "./configure" configure-flags))))))
     (inputs
      `(("bzip2" ,bzip2)
        ("curl" ,curl)
@@ -158,12 +166,47 @@
 CMake is used to control the software compilation process using simple platform
 and compiler independent configuration files.  CMake generates native makefiles
 and workspaces that can be used in the compiler environment of your choice.")
-    (license (list license:bsd-3             ; cmake
-                   license:bsd-4             ; cmcompress
-                   license:bsd-2             ; cmlibarchive
-                   license:expat             ; cmjsoncpp is dual MIT/public domain
+    (properties '((hidden? . #t)))
+    (license (list license:bsd-3        ; cmake
+                   license:bsd-4        ; cmcompress
+                   license:bsd-2        ; cmlibarchive
+                   license:expat        ; cmjsoncpp is dual MIT/public domain
                    license:public-domain)))) ; cmlibarchive/archive_getdate.c
 
+(define-public cmake
+  (package
+    (inherit cmake-minimal)
+    (name "cmake")
+    (arguments
+     (substitute-keyword-arguments (package-arguments cmake-minimal)
+       ((#:configure-flags configure-flags ''())
+        `(append ,configure-flags
+                ;; Extra configure flags used to generate the documentation.
+                '("--sphinx-info"
+                  "--sphinx-man"
+                  "--sphinx-html")))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'install 'move-html-doc
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (doc (assoc-ref outputs "doc"))
+                     (html (string-append "/share/doc/cmake-"
+                                          ,(version-major+minor
+                                            (package-version cmake-minimal))
+                                          "/html")))
+                 (copy-recursively (string-append out html)
+                                   (string-append doc html))
+                 (delete-file-recursively (string-append out html))
+                 #t)))))))
+    ;; Extra inputs required to build the documentation.
+    (native-inputs
+     `(,@(package-native-inputs cmake-minimal)
+       ("python-sphinx" ,python-sphinx)
+       ("texinfo" ,texinfo)))
+    (outputs '("out" "doc"))
+    (properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
+
 (define-public cmake/fixed
   ;; This is a variant of CMake that fixes X.509 certificate lookup:
   ;; <https://issues.guix.gnu.org/issue/37371>.
@@ -180,6 +223,9 @@ and workspaces that can be used in the compiler environment of your choice.")
   (package
     (inherit cmake)
     (name "emacs-cmake-mode")
+    (native-inputs '())
+    (inputs '())
+    (outputs '("out"))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -187,7 +233,8 @@ and workspaces that can be used in the compiler environment of your choice.")
          (add-after 'unpack 'chdir-elisp
            ;; Elisp directory is not in root of the source.
            (lambda _
-             (chdir "Auxiliary"))))))
+             (chdir "Auxiliary")
+             #t)))))
     (synopsis "Emacs major mode for editing Cmake expressions")
     (description "@code{cmakeos-mode} provides an Emacs major mode for editing
 Cmake files.  It supports syntax highlighting, indenting and refilling of
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index c5dfa4aa7a..13e2c4ad44 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -626,13 +626,13 @@ the C, C++, C++/CLI, Objective‑C, C#, and Java programming languages.")
 (define-public indent
   (package
    (name "indent")
-   (version "2.2.10")
+   (version "2.2.12")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/indent/indent-" version
                                 ".tar.gz"))
-            (sha256 (base32
-                     "0f9655vqdvfwbxvs1gpa7py8k1z71aqh8hp73f65vazwbfz436wa"))))
+            (sha256
+             (base32 "12xvcd16cwilzglv9h7sgh4h1qqjd1h8s48ji2dla58m4706hzg7"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
@@ -645,6 +645,8 @@ the C, C++, C++/CLI, Objective‑C, C#, and Java programming languages.")
             (substitute* "doc/Makefile.in"
               (("^docdir = .*$") "docdir = @docdir@\n"))
             #t)))))
+   (native-inputs
+    `(("texinfo" ,texinfo)))
    (synopsis "Code reformatter")
    (description
     "Indent is a program that makes source code easier to read by
@@ -655,19 +657,6 @@ extensions over the standard utility.")
    (license license:gpl3+)
    (home-page "https://www.gnu.org/software/indent/")))
 
-(define-public indent-2.2.12
-  (package
-    (inherit indent)
-    (version "2.2.12")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/indent/indent-" version
-                                  ".tar.gz"))
-              (sha256
-               (base32
-                "12xvcd16cwilzglv9h7sgh4h1qqjd1h8s48ji2dla58m4706hzg7"))))
-    (native-inputs `(("texinfo" ,texinfo)))))
-
 (define-public amalgamate
   (let* ((commit "c91f07eea1133aa184f652b8f1398eaf03586208")
          (revision "0")
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index f00cfa7bd8..fd98c80dc3 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1,10 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,9 +30,9 @@
   #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages m4)
-  #:use-module (gnu packages code)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages bison)
@@ -39,11 +41,14 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages mes)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages hurd)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
@@ -79,6 +84,1330 @@
 ;;;
 ;;; 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"))))))))
+
+(define tcc-boot0
+  ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11
+  ;; patches.  In a very early and rough form they were presented to the
+  ;; TinyCC developers, who at the time showed no interest in supporting the
+  ;; bootstrappable effort; we will try again later.  These patches have been
+  ;; ported to 0.9.27, alas the resulting tcc is buggy.  Once MesCC is more
+  ;; mature, this package should use the 0.9.27 sources (or later).
+  (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")))))))))
+
+(define tcc-boot
+  (package-with-bootstrap-guile
+   (package
+     (inherit tcc-boot0)
+     (name "tcc-boot")
+     (version "0.9.27")
+     (source (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)))))))))
+
+(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)))))))))
+
+(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))))))))
+
+(define binutils-mesboot0
+  (package-with-bootstrap-guile
+   (package
+     (inherit binutils)
+     (name "binutils-mesboot0")
+     (version "2.20.1a")
+     (source (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=/")))))))
+
+(define gcc-core-mesboot
+  ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C
+  ;; Library v0.16 offers.  Gcc-3.x (and 4.x) place higher demands on a C
+  ;; 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
+               (method url-fetch)
+               (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-"
+                                   version
+                                   ".tar.gz"))
+               (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 "
+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"))))))))
+
+(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"))))))))
+
+(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
+               (method url-fetch)
+               (uri (string-append "mirror://gnu/glibc/glibc-"
+                                   version
+                                   ".tar.gz"))
+               (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"))))))))
+
+(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 "
+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"))))))))
+
+(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=/")))))))
+
+(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)))))))))
+
+(define gmp-boot
+  (package
+    (inherit gmp)
+    (version "4.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gmp/gmp-" version
+                                  ".tar.gz"))
+              (sha256 (base32
+                       "15rwq54fi3s11izas6g985y9jklm3xprfsmym3v1g6xr84bavqvv"))))))
+
+(define mpfr-boot
+  (package
+    (inherit mpfr)
+    (version "2.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/mpfr/mpfr-" version
+                                  ".tar.gz"))
+              (sha256 (base32
+                       "0dxn4904dra50xa22hi047lj8kkpr41d6vb9sd4grca880c7wv94"))))))
+
+(define mpc-boot
+  (package
+    (inherit mpc)
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://gnu/mpc/mpc-" version ".tar.gz"))
+              (sha256
+               (base32
+                "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"))))))))
+
+(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
+exec " gcc "/bin/" program
+" -Wl,--dynamic-linker"
+;; also for x86_64-linux, we are still on i686-linux
+" -Wl," libc ,(glibc-dynamic-linker "i686-linux")
+" -Wl,--rpath"
+" -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"))))))))))
+
+(define glibc-headers-mesboot
+  (package-with-bootstrap-guile
+   (package
+     (inherit glibc-mesboot0)
+     (name "glibc-headers-mesboot")
+     (version "2.16.0")
+     (source (origin
+               (method url-fetch)
+               (uri (string-append "mirror://gnu/glibc/glibc-"
+                                   version
+                                   ".tar.gz"))
+               (patches (search-patches "glibc-boot-2.16.0.patch"
+                                        "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")))))))))))))
+
+(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"))))))))
+
+(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)))))))))))
+
+(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))))))
+
+(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)))))))))))
+
+(define (%bootstrap-inputs+toolchain)
+  ;; The traditional bootstrap-inputs.  For the i686-linux Reduced Binary Seed
+  ;; the actual reduced set with bootstrapped toolchain.
+  (match (%current-system)
+    ((or "i686-linux" "x86_64-linux")
+     `(("libc" ,glibc-mesboot)
+       ("binutils" ,binutils-mesboot)
+       ("gcc-wrapper" ,gcc-mesboot-wrapper)
+       ("gcc" ,gcc-mesboot)
+       ,@(fold alist-delete (%bootstrap-inputs)
+               '("bootstrap-mescc-tools" "mes"))))
+    (_
+     (%bootstrap-inputs))))
+
 (define gnu-make-boot0
   (package-with-bootstrap-guile
    (package (inherit gnu-make)
@@ -92,8 +1421,7 @@
              `(modify-phases ,phases
                 (replace 'build
                   (lambda _
-                    (invoke "./build.sh")
-                    #t))
+                    (invoke "./build.sh")))
                 (replace 'install
                   (lambda* (#:key outputs #:allow-other-keys)
                     (let* ((out (assoc-ref outputs "out"))
@@ -101,16 +1429,18 @@
                       (install-file "make" bin)
                       #t))))))))
      (native-inputs '())                          ; no need for 'pkg-config'
-     (inputs %bootstrap-inputs))))
+     (inputs (%bootstrap-inputs+toolchain)))))
 
 (define diffutils-boot0
   (package-with-bootstrap-guile
    (let ((p (package-with-explicit-inputs diffutils
-                                          `(("make" ,gnu-make-boot0)
-                                            ,@%bootstrap-inputs)
+                                          (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)))))))
 
@@ -119,9 +1449,10 @@
    (package-with-explicit-inputs (package
                                    (inherit findutils)
                                    (name "findutils-boot0"))
-                                 `(("make" ,gnu-make-boot0)
-                                   ("diffutils" ,diffutils-boot0) ; for tests
-                                   ,@%bootstrap-inputs)
+                                 (lambda _
+                                   `(("make" ,gnu-make-boot0)
+                                     ("diffutils" ,diffutils-boot0) ; for tests
+                                     ,@(%bootstrap-inputs+toolchain)))
                                  (current-source-location)
                                  #:guile %bootstrap-guile)))
 
@@ -129,19 +1460,22 @@
   (package-with-bootstrap-guile
    (package-with-explicit-inputs (package
                                    (inherit file)
-                                   (name "file-boot0"))
-                                 `(("make" ,gnu-make-boot0)
-                                   ,@%bootstrap-inputs)
+                                   (name "file-boot0")
+                                   (arguments
+                                    '(#:strip-binaries? #f
+                                      #:validate-runpath? #f)))
+                                 (lambda _
+                                   `(("make" ,gnu-make-boot0)
+                                     ,@(%bootstrap-inputs+toolchain)))
                                  (current-source-location)
                                  #:guile %bootstrap-guile)))
 
-
-(define %boot0-inputs
+(define (%boot0-inputs)
   `(("make" ,gnu-make-boot0)
     ("diffutils" ,diffutils-boot0)
     ("findutils" ,findutils-boot0)
     ("file" ,file-boot0)
-    ,@%bootstrap-inputs))
+    ,@(%bootstrap-inputs+toolchain)))
 
 (define* (boot-triplet #:optional (system (%current-system)))
   ;; Return the triplet used to create the cross toolchain needed in the
@@ -150,8 +1484,9 @@
 
 ;; Following Linux From Scratch, build a cross-toolchain in stage 0.  That
 ;; toolchain actually targets the same OS and arch, but it has the advantage
-;; of being independent of the libc and tools in %BOOTSTRAP-INPUTS, since
-;; GCC-BOOT0 (below) is built without any reference to the target libc.
+;; of being independent of the libc and tools in
+;; (%BOOTSTRAP-INPUTS+TOOLCHAIN), since GCC-BOOT0 (below) is built without any
+;; reference to the target libc.
 
 (define binutils-boot0
   (package-with-bootstrap-guile
@@ -185,27 +1520,14 @@
             ((#:configure-flags cf)
              `(cons ,(string-append "--target=" (boot-triplet))
                     ,cf)))))
-     (inputs %boot0-inputs))))
-
-;; Use a "fixed" package source for this early libstdc++ variant so we can
-;; update GCC 4.9 without triggering a full rebuild.
-(define gcc-for-libstdc++
-  (package
-    (inherit gcc-4.9)
-    (source (origin
-              (inherit (package-source gcc-4.9))
-              (patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
-                                       "gcc-arm-bug-71399.patch"
-                                       "gcc-asan-missing-include.patch"
-                                       "gcc-libvtv-runpath.patch"
-                                       "gcc-fix-texi2pod.patch"))))))
+     (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-for-libstdc++))))
+  (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9))))
     (package
       (inherit lib)
       (name "libstdc++-boot0")
@@ -216,8 +1538,20 @@
          ;; XXX: libstdc++.so NEEDs ld.so for some reason.
          #:validate-runpath? #f
 
-         ,@(package-arguments lib)))
-      (inputs %boot0-inputs)
+         ,@(match (%current-system)
+             ((or "i686-linux" "x86_64-linux")
+              (substitute-keyword-arguments (package-arguments lib)
+                ((#:phases phases)
+                 `(modify-phases ,phases
+                    (add-after 'unpack 'workaround-wrapper-bug
+                      ;; XXX: The crude gcc-cross-wrapper causes "g++ -v" to
+                      ;; fail, which in turn confuses the configure script.
+                      (lambda _
+                        (substitute* "libstdc++-v3/configure"
+                          (("g\\+\\+ -v") "true"))
+                        #t))))))
+             (_ (package-arguments lib)))))
+      (inputs (%boot0-inputs))
       (native-inputs '()))))
 
 (define gcc-boot0
@@ -254,6 +1588,7 @@
                             "--disable-libsanitizer"
                             "--disable-libitm"
                             "--disable-libgomp"
+                            "--disable-libmpx"
                             "--disable-libcilkrts"
                             "--disable-libvtv"
                             "--disable-libssp"
@@ -262,6 +1597,17 @@
                       (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
@@ -286,6 +1632,22 @@
                                          ,(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.
+                        (substitute* "libcc1/Makefile.in"
+                          (("la_LDFLAGS =")
+                           (string-append "la_LDFLAGS = -Wl,-rpath="
+                                          (assoc-ref inputs "gcc") "/lib")))
+                        ;; XXX: "g++ -v" is broken (see also libstdc++ above).
+                        (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")))
@@ -308,8 +1670,8 @@
 
                ;; 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)))
+               ("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 `()))))
@@ -320,47 +1682,72 @@
                 (name "perl-boot0")
                 (arguments
                  ;; At the very least, this must not depend on GCC & co.
-                 (let ((args `(#:disallowed-references
+                 (let ((args `(#:validate-runpath? #f
+                               #: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))))))))
+                   `(,@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))))
 
+(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))))))
+
 (define bison-boot0
   ;; This Bison is needed to build MiG so we need it early in the process.
-  ;; It is also needed to rebuild Bash's parser, which is modified by
-  ;; its CVE patches.  Remove it when it's no longer needed.
-  (let* ((m4    (package-with-bootstrap-guile
-                 (package-with-explicit-inputs m4 %boot0-inputs
-                                               (current-source-location)
-                                               #:guile %bootstrap-guile)))
-         (bison (package (inherit bison)
+  ;; 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
+                   `(#: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" "RANLIB=ranlib -D"
+                     #: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
@@ -370,11 +1757,11 @@
       (native-inputs `(("perl" ,perl-boot0))))))
 
 (define flex-boot0
-  ;; This Flex is needed to build MiG.
+  ;; 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 `(("indent" ,indent)))
+                 (inputs '())
                  (arguments '(#:tests? #f)))))
     (package-with-bootstrap-guile
      (package-with-explicit-inputs flex %boot0-inputs
@@ -395,12 +1782,16 @@
                            ,@(package-arguments linux-libre-headers)))
               (native-inputs
                `(("perl" ,perl-boot0)
-                 ,@%boot0-inputs))))))
+
+                 ;; Flex and Bison are required since version 4.16.
+                 ("flex" ,flex-boot0)
+                 ("bison" ,bison-boot0)
+                 ,@(%boot0-inputs)))))))
 
 (define gnumach-headers-boot0
   (package-with-bootstrap-guile
    (package-with-explicit-inputs gnumach-headers
-                                 %boot0-inputs
+                                 (%boot0-inputs)
                                  (current-source-location)
                                  #:guile %bootstrap-guile)))
 
@@ -414,7 +1805,7 @@
                     `(,(string-append "LDFLAGS=-Wl,-rpath="
                                       (assoc-ref %build-inputs "flex") "/lib/")))))))
     (package-with-bootstrap-guile
-     (package-with-explicit-inputs mig %boot0-inputs
+     (package-with-explicit-inputs mig (%boot0-inputs)
                                    (current-source-location)
                                    #:guile %bootstrap-guile))))
 
@@ -423,7 +1814,7 @@
                         (native-inputs `(("mig" ,mig-boot0)))
                         (inputs '()))))
     (package-with-bootstrap-guile
-     (package-with-explicit-inputs hurd-headers %boot0-inputs
+     (package-with-explicit-inputs hurd-headers (%boot0-inputs)
                                    (current-source-location)
                                    #:guile %bootstrap-guile))))
 
@@ -432,7 +1823,7 @@
                         (native-inputs `(("mig" ,mig-boot0)))
                         (inputs '()))))
     (package-with-bootstrap-guile
-     (package-with-explicit-inputs hurd-minimal %boot0-inputs
+     (package-with-explicit-inputs hurd-minimal (%boot0-inputs)
                                    (current-source-location)
                                    #:guile %bootstrap-guile))))
 
@@ -448,7 +1839,7 @@ the bootstrap environment."
                `(("gnumach-headers" ,gnumach-headers-boot0)
                  ("hurd-headers" ,hurd-headers-boot0)
                  ("hurd-minimal" ,hurd-minimal-boot0)
-                 ,@%boot0-inputs))))))
+                 ,@(%boot0-inputs)))))))
 
 (define* (kernel-headers-boot0 #:optional (system (%current-system)))
   (match system
@@ -459,7 +1850,7 @@ the bootstrap environment."
   ;; Texinfo used to build libc's manual.
   ;; 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.
+  ;; Also, use (%BOOT0-INPUTS) to avoid building Perl once more.
   (let ((texinfo (package (inherit texinfo)
                    (native-inputs '())
                    (inputs `(("perl" ,perl-boot0)))
@@ -473,21 +1864,85 @@ the bootstrap environment."
                                    (current-source-location)
                                    #:guile %bootstrap-guile))))
 
-(define ld-wrapper-boot0
+(define expat-sans-tests
+  (package
+    (inherit expat)
+    (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)))))
+
+(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"))))
+                   #:bash (car (assoc-ref (%boot0-inputs) "bash"))
+                   #:guile-for-build %bootstrap-guile))
 
-(define %boot1-inputs
+(define (%boot1-inputs)
   ;; 2nd stage inputs.
   `(("gcc" ,gcc-boot0)
-    ("ld-wrapper-cross" ,ld-wrapper-boot0)
+    ("ld-wrapper-cross" ,(ld-wrapper-boot0))
     ("binutils-cross" ,binutils-boot0)
-    ,@(alist-delete "binutils" %boot0-inputs)))
+    ,@(alist-delete "binutils" (%boot0-inputs))))
 
 (define glibc-final-with-bootstrap-bash
   ;; The final libc, "cross-built".  If everything went well, the resulting
@@ -505,11 +1960,7 @@ the bootstrap environment."
             ((#:configure-flags flags)
              `(append (list ,(string-append "--host=" (boot-triplet))
                             ,(string-append "--build="
-                                            (nix-system->gnu-triplet))
-
-                            ;; Build Sun/ONC RPC support.  In particular,
-                            ;; install rpc/*.h.
-                            "--enable-obsolete-rpc")
+                                            (nix-system->gnu-triplet)))
                       ,flags))
             ((#:phases phases)
              `(modify-phases ,phases
@@ -539,11 +1990,12 @@ the bootstrap environment."
      (native-inputs
       `(("bison" ,bison-boot0)
         ("texinfo" ,texinfo-boot0)
-        ("perl" ,perl-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
+        ,@(%boot1-inputs)
 
         ;; A native MiG is needed to build Glibc on Hurd.
         ,@(if (hurd-triplet? (%current-system))
@@ -551,11 +2003,11 @@ the bootstrap environment."
               '())
 
         ;; A native GCC is needed to build `cross-rpcgen'.
-        ("native-gcc" ,@(assoc-ref %boot0-inputs "gcc"))
+        ("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")))))))
+        ("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
@@ -610,65 +2062,74 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
        ("bash" ,bash)))
     (inputs '())))
 
+(define (gcc-boot0-intermediate-wrapped)
+  ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the
+  ;; non-cross names.
+  (cross-gcc-wrapper gcc-boot0 binutils-boot0
+                     glibc-final-with-bootstrap-bash
+                     (car (assoc-ref (%boot1-inputs) "bash"))))
+
 (define static-bash-for-glibc
   ;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co.
-  (let* ((gcc  (cross-gcc-wrapper gcc-boot0 binutils-boot0
-                                  glibc-final-with-bootstrap-bash
-                                  (car (assoc-ref %boot1-inputs "bash"))))
-         (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"))))))))
-         (inputs `(("gcc" ,gcc)
-                   ("libc" ,glibc-final-with-bootstrap-bash)
-                   ("libc:static" ,glibc-final-with-bootstrap-bash "static")
-                   ,@(fold alist-delete %boot1-inputs
-                           '("gcc" "libc")))))
+  (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 inputs
-                                   (current-source-location)
-                                   #:guile %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))))
 
 (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
-            (substitute-keyword-arguments
-                `(#:tests? #f
-                  ,@(package-arguments gettext-minimal))
-              ((#:phases phases)
-               `(modify-phases ,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))
-
-                  ;; Don't try to link against libexpat.
-                  (delete 'link-expat)
-                  (delete 'patch-tests))))))))
+            `(#: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
@@ -704,18 +2165,18 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 
          ,@(package-arguments glibc-final-with-bootstrap-bash))))))
 
-(define gcc-boot0-wrapped
+(define (gcc-boot0-wrapped)
   ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the
   ;; non-cross names.
   (cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final
-                     (car (assoc-ref %boot1-inputs "bash"))))
+                     (car (assoc-ref (%boot1-inputs) "bash"))))
 
-(define %boot2-inputs
+(define (%boot2-inputs)
   ;; 3rd stage inputs.
   `(("libc" ,glibc-final)
     ("libc:static" ,glibc-final "static")
-    ("gcc" ,gcc-boot0-wrapped)
-    ,@(fold alist-delete %boot1-inputs '("libc" "gcc"))))
+    ("gcc" ,(gcc-boot0-wrapped))
+    ,@(fold alist-delete (%boot1-inputs) '("libc" "gcc" "linux-libre-headers"))))
 
 (define binutils-final
   (package-with-bootstrap-guile
@@ -725,7 +2186,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
         #:implicit-inputs? #f
         #:allowed-references ("out" ,glibc-final)
         ,@(package-arguments binutils)))
-     (inputs %boot2-inputs))))
+     (inputs (%boot2-inputs)))))
 
 (define libstdc++
   ;; Intermediate libstdc++ that will allow us to build the final GCC
@@ -745,13 +2206,14 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
          ;; except for the configure-flags.
          ,@(package-arguments lib)
          #:configure-flags `("--disable-shared"
+                             "--disable-libstdcxx-dual-abi"
                              "--disable-libstdcxx-threads"
                              "--disable-libstdcxx-pch"
                              ,(string-append "--with-gxx-include-dir="
                                              (assoc-ref %outputs "out")
                                              "/include"))))
       (outputs '("out"))
-      (inputs %boot2-inputs)
+      (inputs (%boot2-inputs))
       (synopsis "GNU C++ standard library (intermediate)"))))
 
 (define zlib-final
@@ -764,14 +2226,15 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
         #:implicit-inputs? #f
         #:allowed-references ("out" ,glibc-final)
         ,@(package-arguments zlib)))
-     (inputs %boot2-inputs))))
+     (inputs (%boot2-inputs)))))
 
-(define ld-wrapper-boot3
+(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"))))
+                   #:bash (car (assoc-ref (%boot2-inputs) "bash"))
+                   #:guile-for-build %bootstrap-guile))
 
 (define gcc-final
   ;; The final GCC.
@@ -795,17 +2258,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
        ;; positive, so turn it off.
        #:validate-runpath? #f
 
-       ;; Build again GMP & co. within GCC's build process, because it's hard
-       ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus
-       ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.)
-       ,@(substitute-keyword-arguments (package-arguments gcc-boot0)
-           ((#:configure-flags boot-flags)
-            (let loop ((args (package-arguments gcc)))
-              (match args
-                ((#:configure-flags normal-flags _ ...)
-                 normal-flags)
-                ((_ rest ...)
-                 (loop rest)))))
+       ,@(substitute-keyword-arguments (package-arguments gcc)
            ((#:make-flags flags)
             ;; Since $LIBRARY_PATH is not honored, add the relevant flags.
             `(let ((zlib (assoc-ref %build-inputs "zlib")))
@@ -817,8 +2270,42 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                                          zlib "/lib")
                           flag))
                     ,flags)))
+           ;; Build again GMP & co. within GCC's build process, because it's hard
+           ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus
+           ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.)
            ((#:phases phases)
-            `(alist-delete 'symlink-libgcc_eh ,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)))
+                (add-before 'configure 'treat-glibc-as-system-header
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (let ((libc (assoc-ref inputs "libc")))
+                      ;; Make sure Glibc is treated as a "system header" so
+                      ;; #include_next does the right thing.
+                      (for-each (lambda (var)
+                                  (setenv var (string-append libc "/include")))
+                                '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
+                      #t))))))))
 
     ;; This time we want Texinfo, so we get the manual.  Add
     ;; STATIC-BASH-FOR-GLIBC so that it's used in the final shebangs of
@@ -832,17 +2319,17 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0)))
               ("mpfr-source" ,(package-source mpfr))
               ("mpc-source" ,(package-source mpc))
-              ("ld-wrapper" ,ld-wrapper-boot3)
+              ("ld-wrapper" ,(ld-wrapper-boot3))
               ("binutils" ,binutils-final)
               ("libstdc++" ,libstdc++)
               ("zlib" ,zlib-final)
-              ,@%boot2-inputs))))
+              ,@(%boot2-inputs)))))
 
-(define %boot3-inputs
+(define (%boot3-inputs)
   ;; 4th stage inputs.
   `(("gcc" ,gcc-final)
-    ("ld-wrapper" ,ld-wrapper-boot3)
-    ,@(alist-delete "gcc" %boot2-inputs)))
+    ("ld-wrapper" ,(ld-wrapper-boot3))
+    ,@(alist-delete "gcc" (%boot2-inputs))))
 
 (define bash-final
   ;; Link with `-static-libgcc' to make sure we don't retain a reference
@@ -852,7 +2339,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                 (inherit bash-minimal)
                 (arguments
                  `(#:disallowed-references
-                   ,(assoc-ref %boot3-inputs "coreutils&co")
+                   ,(assoc-ref (%boot3-inputs) "coreutils&co")
                    ,@(package-arguments bash-minimal))))))
     (package-with-bootstrap-guile
      (package-with-explicit-inputs (static-libgcc-package bash)
@@ -860,10 +2347,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                                    (current-source-location)
                                    #:guile %bootstrap-guile))))
 
-(define %boot4-inputs
+(define (%boot4-inputs)
   ;; Now use the final Bash.
   `(("bash" ,bash-final)
-    ,@(alist-delete "bash" %boot3-inputs)))
+    ,@(alist-delete "bash" (%boot3-inputs))))
 
 (define-public guile-final
   ;; This package must be public because other modules refer to it.  However,
@@ -896,19 +2383,20 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                    #:guile guile-final
                    #:bash bash-final))
 
-(define %boot5-inputs
+(define (%boot5-inputs)
   ;; Now with UTF-8 locales.  Remember that the bootstrap binaries were built
   ;; with an older libc, which cannot load the new locale format.  See
   ;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
   `(("locales" ,glibc-utf8-locales-final)
-    ,@%boot4-inputs))
+    ,@(%boot4-inputs)))
 
 (define gnu-make-final
   ;; The final GNU Make, which uses the final Guile.
   (package-with-bootstrap-guile
    (package-with-explicit-inputs gnu-make
-                                 `(("guile" ,guile-final)
-                                   ,@%boot5-inputs)
+                                 (lambda _
+                                   `(("guile" ,guile-final)
+                                     ,@(%boot5-inputs)))
                                  (current-source-location))))
 
 (define coreutils-final
@@ -936,11 +2424,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                      (inputs (alist-delete "pcre" (package-inputs grep)))
                      (native-inputs `(("perl" ,perl-boot0))))))
 
-(define %boot6-inputs
+(define (%boot6-inputs)
   ;; Now use the final Coreutils.
   `(("coreutils" ,coreutils-final)
     ("grep" ,grep-final)
-    ,@%boot5-inputs))
+    ,@(%boot5-inputs)))
 
 (define sed-final
   ;; The final sed.
@@ -1076,23 +2564,23 @@ an  d binaries, plus debugging symbols in the @code{debug} output), and Binutils
                 ("libc-debug" ,libc "debug")
                 ("libc-static" ,libc "static"))))))
 
+(define-public gcc-toolchain
+  (make-gcc-toolchain gcc-final))
+
 (define-public gcc-toolchain-4.8
   (make-gcc-toolchain gcc-4.8))
 
 (define-public gcc-toolchain-4.9
   (make-gcc-toolchain gcc-4.9))
 
-(define-public gcc-toolchain
-  (make-gcc-toolchain gcc-final))
-
 (define-public gcc-toolchain-5
-  gcc-toolchain)
+  (make-gcc-toolchain gcc-5))
 
 (define-public gcc-toolchain-6
   (make-gcc-toolchain gcc-6))
 
 (define-public gcc-toolchain-7
-  (make-gcc-toolchain gcc-7))
+  gcc-toolchain)
 
 (define-public gcc-toolchain-8
   (make-gcc-toolchain gcc-8))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 6771de3028..c4298c1e95 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -210,14 +210,14 @@ adding and extracting files to/from a tar archive.")
 (define-public gzip
   (package
    (name "gzip")
-   (version "1.9")
+   (version "1.10")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gzip/gzip-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "16h8g4acy7fgfxcjacr3wijjsnixwsfd2jhz3zwdi2qrzi262l5f"))))
+              "1h6p374d3j8d4cdfydzls021xa2yby8myc0h8d6m8bc7k6ncq9c4"))))
    (build-system gnu-build-system)
    (synopsis "General file (de)compression (using lzw)")
    (arguments
@@ -433,6 +433,23 @@ compressed with pbzip2 can be decompressed with bzip2).")
              (base32
               "0ibi2zsfaz6l756spjwc5rayf4ckgc9hwmy8qinppcyk4svz64mm"))))
    (build-system gnu-build-system)
+   (arguments
+    `(#:phases
+      (modify-phases %standard-phases
+        (add-after 'install 'move-static-lib
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out    (assoc-ref outputs "out"))
+                  (static (assoc-ref outputs "static")))
+              (mkdir-p (string-append static "/lib"))
+              (rename-file (string-append out "/lib/liblzma.a")
+                           (string-append static "/lib/liblzma.a"))
+              ;; Remove reference to the static library from the .la file
+              ;; so Libtool does the right thing when both the shared and
+              ;; static library is available.
+              (substitute* (string-append out "/lib/liblzma.la")
+                (("^old_library='liblzma.a'") "old_library=''"))
+              #t))))))
+   (outputs '("out" "static"))
    (synopsis "General-purpose data compression")
    (description
     "XZ Utils is free general-purpose data compression software with high
@@ -532,14 +549,14 @@ some compression ratio).")
 (define-public lzip
   (package
     (name "lzip")
-    (version "1.20")
+    (version "1.21")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/lzip/lzip-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0319q59kb8g324wnj7xzbr7vvlx5bcs13lr34j0zb3kqlyjq2fy9"))))
+               "12qdcw5k1cx77brv9yxi1h4dzwibhfmdpigrj43nfk8nscwm12z4"))))
     (build-system gnu-build-system)
     (home-page "https://www.nongnu.org/lzip/lzip.html")
     (synopsis "Lossless data compressor based on the LZMA algorithm")
@@ -718,7 +735,7 @@ decompression of some loosely related file formats used by Microsoft.")
 (define-public lz4
   (package
     (name "lz4")
-    (version "1.8.1.2")
+    (version "1.9.1")
     (source
      (origin
        (method git-fetch)
@@ -726,16 +743,23 @@ decompression of some loosely related file formats used by Microsoft.")
                            (commit (string-append "v" version))))
        (sha256
         (base32
-         "1jggv4lvfav53advnj0pwqgxzn868lrj8dc9zp73iwvqlj82mhmx"))
+         "1l1caxrik1hqs40vj3bpv1pikw6b74cfazv5c0v6g48zpcbmshl0"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
-    (native-inputs `(("valgrind" ,valgrind)))   ; for tests
+    (native-inputs `(("valgrind" ,valgrind)))    ;for tests
     (arguments
      `(#:test-target "test"
        #:make-flags (list "CC=gcc"
                           (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
-                  (delete 'configure))))        ; no configure script
+                  (delete 'configure)            ;no configure script
+                  (add-before 'check 'disable-broken-test
+                    (lambda _
+                      ;; XXX: test_install.sh fails when prefix is a subdirectory.
+                      (substitute* "tests/Makefile"
+                        (("^test: (.*) test-install" _ targets)
+                         (string-append "test: " targets)))
+                      #t)))))
     (home-page "https://www.lz4.org")
     (synopsis "Compression algorithm focused on speed")
     (description "LZ4 is a lossless compression algorithm, providing
@@ -1578,14 +1602,27 @@ recreates the stored directory structure by default.")
     (name "zziplib")
     (version "0.13.69")
     (home-page "https://github.com/gdraheim/zziplib")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append home-page "/archive/v" version ".tar.gz"))
-       (sha256
-        (base32
-         "0i052a7shww0fzsxrdp3rd7g4mbzx7324a8ysbc0br7frpblcql4"))))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0fbk9k7ryas2wh2ykwkvm1pbi40i88rfvc3dydh9xyd7w2jcki92"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'make-files-writable
+                    (lambda _
+                      (for-each make-file-writable
+                                (find-files "test" #:directories? #t))
+                      #t)))
+
+       ;; XXX: The default test target attempts to download external resources and
+       ;; fails without error: <https://github.com/gdraheim/zziplib/issues/53>.
+       ;; To prevent confusing log messages, just run a simple zip test that works.
+       #:test-target "check-readme"))
     (inputs
      `(("zlib" ,zlib)))
     (native-inputs `(("perl" ,perl)     ; for the documentation
@@ -1785,7 +1822,18 @@ single-member files which can't be decompressed in parallel.")
      (file-name (string-append name "-" version ".tar.gz"))))
    (build-system cmake-build-system)
    (arguments
-    `(#:tests? #f)) ;; No tests available.
+    `(#:tests? #f
+      #:phases (modify-phases %standard-phases
+                 (add-before 'configure 'glibc-is-already-a-system-library
+                   (lambda _
+                     ;; Prevent the build system from passing the glibc
+                     ;; header files to GCC as "system headers", because
+                     ;; it conflicts with the system headers already known
+                     ;; to GCC, causing #include_next failures.
+                     (substitute* "CMakeLists.txt"
+                       (("include_directories\\(SYSTEM \\$\\{iconv")
+                        "include_directories(${iconv"))
+                     #t)))))
    (inputs `(("boost" ,boost)
              ("libiconv" ,libiconv)
              ("xz" ,xz)))
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 9e95bacd65..4a28a394bf 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,7 +34,8 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages tls))
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web))
 
 (define-public libzen
   (package
@@ -276,3 +278,34 @@ intuitive syntax and trivial integration.")
     (description "xtl is a C++ header-only template library providing basic
 tools (containers, algorithms) used by other QuantStack packages.")
     (license license:bsd-3)))
+
+(define-public ccls
+  (package
+    (name "ccls")
+    (version "0.20190823.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/MaskRay/ccls")
+             (commit version)))
+       (sha256
+        (base32 "1sx31zp6q2qc6fz3r78rx34zp2x4blrqzxwbpww71vb6lp1clmdm"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f)) ; no check target.
+    (inputs
+     `(("rapidjson" ,rapidjson)))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)))
+    (home-page "https://github.com/MaskRay/ccls")
+    (synopsis "C/C++/Objective-C language server")
+    (description
+     "@code{ccls} is a server implementing the Language Server Protocol (LSP)
+for C, C++ and Objective-C languages.  It uses @code{clang} to perform static
+code analysis and supports cross references, hierarchies, completion and
+syntax highlighting.  @code{ccls} is derived from @code{cquery} which is not
+maintained anymore.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index e277139f25..7108000f06 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,9 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Carl Dong <contact@carldong.me>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -53,11 +54,8 @@
 
 (define %gcc-include-paths
   ;; Environment variables for header search paths.
-  ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'.
-  '("C_INCLUDE_PATH"
-    "CPLUS_INCLUDE_PATH"
-    "OBJC_INCLUDE_PATH"
-    "OBJCPLUS_INCLUDE_PATH"))
+  ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co.
+  '("CPATH"))
 
 (define %gcc-cross-include-paths
   ;; Search path for target headers when cross-compiling.
@@ -124,7 +122,15 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                        ,@(if libc
                              `( ;; Disable libcilkrts because it is not
                                 ;; ported to GNU/Hurd.
-                               "--disable-libcilkrts")
+                               "--disable-libcilkrts"
+                               ;; When building a cross compiler, --with-sysroot is
+                               ;; implicitly set to "$gcc_tooldir/sys-root".  This does
+                               ;; not work for us, because --with-native-system-header-dir
+                               ;; is searched for relative to this location.  Thus, we set
+                               ;; it to "/" so GCC is able to find the target libc headers.
+                               ;; This is safe because in practice GCC uses CROSS_CPATH
+                               ;; & co to separate target and host libraries.
+                               "--with-sysroot=/")
                              `( ;; Disable features not needed at this stage.
                                "--disable-shared" "--enable-static"
                                "--enable-languages=c,c++"
@@ -170,15 +176,30 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                      ,flags))
             flags))
        ((#:phases phases)
-        `(cross-gcc-build-phases ,target ,phases))))))
-
-(define (cross-gcc-patches target)
-  "Return GCC patches needed for TARGET."
+        `(cross-gcc-build-phases
+          ,target
+          (modify-phases ,phases
+            (add-before 'configure 'treat-glibc-as-system-header
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let ((libc (assoc-ref inputs "libc")))
+                  (when libc
+                    ;; For GCC6 and later, make sure Glibc is treated as a "system
+                    ;; header" such that #include_next does the right thing.
+                    (for-each (lambda (var)
+                                (setenv var (string-append libc "/include")))
+                              '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH")))
+                  #t))))))))))
+
+(define (cross-gcc-patches xgcc target)
+  "Return GCC patches needed for XGCC and TARGET."
   (cond ((string-prefix? "xtensa-" target)
          ;; Patch by Qualcomm needed to build the ath9k-htc firmware.
          (search-patches "ath9k-htc-firmware-gcc.patch"))
         ((target-mingw? target)
-         (search-patches "gcc-4.9.3-mingw-gthr-default.patch"))
+         (append (search-patches "gcc-4.9.3-mingw-gthr-default.patch")
+                 (if (version>=? (package-version xgcc) "7.0")
+                     (search-patches "gcc-7-cross-mingw.patch")
+                    '())))
         (else '())))
 
 (define (cross-gcc-snippet target)
@@ -211,7 +232,7 @@ target that libc."
                        ((version>=? (package-version xgcc) "8.0") (search-patch "gcc-8-cross-environment-variables.patch"))
                        ((version>=? (package-version xgcc) "6.0") (search-patch "gcc-6-cross-environment-variables.patch"))
                        (else  (search-patch "gcc-cross-environment-variables.patch")))
-                      (cross-gcc-patches target))))
+                      (cross-gcc-patches xgcc target))))
               (modules '((guix build utils)))
               (snippet
                (cross-gcc-snippet target))))
@@ -459,23 +480,6 @@ and the cross tool chain."
                           flags)))
              ((#:phases phases)
               `(modify-phases ,phases
-                 ;; XXX: The hack below allows us to make sure the
-                 ;; 'apply-hurd-patch' phase gets added in the first
-                 ;; cross-libc, but does *not* get added twice subsequently
-                 ;; when cross-building another libc.
-                 ,@(if (and (hurd-triplet? target)
-                            (not (hurd-target?)))
-                       `((add-after 'unpack 'apply-hurd-patch
-                           (lambda* (#:key inputs native-inputs
-                                     #:allow-other-keys)
-                             ;; TODO: Move this to 'patches' field.
-                             (let ((patch (or (assoc-ref native-inputs
-                                                         "hurd-magic-pid-patch")
-                                              (assoc-ref inputs
-                                                         "hurd-magic-pid-patch"))))
-                               (invoke "patch" "-p1" "--force" "--input"
-                                       patch)))))
-                       '())
                  (add-before 'configure 'set-cross-kernel-headers-path
                    (lambda* (#:key inputs #:allow-other-keys)
                      (let* ((kernel (assoc-ref inputs "kernel-headers"))
@@ -499,9 +503,7 @@ and the cross tool chain."
                            ,@(if (hurd-triplet? target)
                                  `(("cross-mig"
                                     ,@(assoc-ref (package-native-inputs xheaders)
-                                                 "cross-mig"))
-                                   ("hurd-magic-pid-patch"
-                                    ,(search-patch "glibc-hurd-magic-pid.patch")))
+                                                 "cross-mig")))
                                  '())
                            ,@(package-inputs libc)     ;FIXME: static-bash
                            ,@(package-native-inputs libc)))))))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index b975afe6d3..9592d18011 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -683,7 +683,7 @@ BLAKE.")
 (define-public rhash
   (package
     (name "rhash")
-    (version "1.3.6")
+    (version "1.3.8")
     (source
      (origin
        (method url-fetch)
@@ -692,7 +692,7 @@ BLAKE.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "14ngzfgmd1lfp7m78sn49x8ymf2s37nrr67c6p5vas85nrrgjkcn"))))
+         "0k60ywyhwqwqxa2q2l85vwgf884hcgy31nxir3dqgz7ymib6llxy"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -711,7 +711,7 @@ BLAKE.")
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke
                     "make" "-C" "librhash"
-                    "install-headers" "install-so-link"
+                    "install-lib-headers" "install-so-link"
                     make-flags))))))
     (home-page "https://sourceforge.net/projects/rhash/")
     (synopsis "Utility for computing hash sums")
@@ -816,7 +816,7 @@ security.")
          ("automake" ,automake)
          ("libtool" ,libtool)))
       (inputs
-       `(("openssl" ,openssl-next)))
+       `(("openssl" ,openssl)))
       (home-page "https://github.com/vstakhov/asignify")
       (synopsis "Cryptographic authentication and encryption tool and library")
       (description "Asignify offers public cryptographic signatures and
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 5682a4a107..5e1e7eb400 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -37,41 +37,34 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages groff)
-  #:use-module (gnu packages gsasl)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web))
 
 (define-public curl
   (package
    (name "curl")
-   (replacement curl-7.65.0)
-   (version "7.63.0")
+   (version "7.65.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://curl.haxx.se/download/curl-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1i38v49233jirzlfqd8fy6jyf80assa953hk7w6qmysbg562604n"))))
+              "1sjz4fq7jg96mpmpqq82nd61njna6jp3c4m9yrbx2j1rh5a8ingj"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                             ;1.2 MiB of man3 pages
    (inputs `(("gnutls" ,gnutls)
-             ("gss" ,gss)
              ("libidn" ,libidn)
-             ;; TODO XXX <https://bugs.gnu.org/34927>
-             ;; Curl doesn't actually use or refer to libssh2 because the build
-             ;; is not configured with '--with-libssh2'.  Remove this input when
-             ;; a mass rebuild is appropriate (e.g. core-updates).
-             ("libssh2" ,libssh2-1.8.0)
              ("openldap" ,openldap)
+             ("mit-krb5" ,mit-krb5)
              ("nghttp2" ,nghttp2 "lib")
              ("zlib" ,zlib)))
    (native-inputs
@@ -79,7 +72,7 @@
        ;; to enable the --manual option and make test 1026 pass
        ("groff" ,groff)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2)))
+       ("python" ,python-wrapper)))
    (native-search-paths
     ;; Note: This search path is respected by the `curl` command-line tool only.
     ;; Ideally we would bake this into libcurl itself so other users can benefit,
@@ -90,8 +83,10 @@
            (separator #f)                         ;single entry
            (files '("etc/ssl/certs/ca-certificates.crt")))))
    (arguments
-    `(#:configure-flags '("--with-gnutls" "--with-gssapi"
-                          "--disable-static")
+    `(#:configure-flags (list "--with-gnutls"
+                              (string-append "--with-gssapi="
+                                             (assoc-ref %build-inputs "mit-krb5"))
+                              "--disable-static")
       ;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl
       #:phases
       (modify-phases %standard-phases
@@ -147,19 +142,6 @@ tunneling, and so on.")
                                   "See COPYING in the distribution."))
    (home-page "https://curl.haxx.se/")))
 
-(define-public curl-7.65.0
-  (package
-    (inherit curl)
-    (version "7.65.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://curl.haxx.se/download/curl-"
-                            version ".tar.xz"))
-        (sha256
-         (base32
-          "1kb6p510m0n0y1c8fjxbcs6dyaqgm8i54pjvj29zc14lj9ix4rkp"))))))
-
 (define-public kurly
   (package
     (name "kurly")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index f7f5c6ffdc..9cc424573c 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -786,7 +786,7 @@ Language.")
        ("zlib" ,zlib)))
     (propagated-inputs
      ;; mariadb.pc says -lssl -lcrypto, so propagate it.
-     `(("openssl" ,openssl)))
+     `(("openssl" ,openssl-1.0)))
     ;; The test suite is very resource intensive and can take more than three
     ;; hours on a x86_64 system.  Give slow and busy machines some leeway.
     (properties '((timeout . 64800)))        ;18 hours
@@ -3061,7 +3061,7 @@ algorithm implementations.")
        ("python-pandas" ,python-pandas)
        ("python-six" ,python-six)))
     (native-inputs
-     `(("cmake" ,cmake)
+     `(("cmake" ,cmake-minimal)
        ("python-cython" ,python-cython)
        ("python-pytest" ,python-pytest)
        ("python-pytest-runner" ,python-pytest-runner)
diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm
index bf548a25f3..5191c475c2 100644
--- a/gnu/packages/dbm.scm
+++ b/gnu/packages/dbm.scm
@@ -33,22 +33,24 @@
 ;;; This module has been separated from (gnu packages databases) to reduce the
 ;;; number of module references for core packages.
 
-(define-public bdb
+(define-public bdb-4.8
   (package
     (name "bdb")
-    (version "6.2.32")
+    (version "4.8.30")
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))
     (source (origin
-              (method url-fetch)
-              (uri (string-append "http://download.oracle.com/berkeley-db/db-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1yx8wzhch5wwh016nh0kfxvknjkafv6ybkqh6nh7lxx50jqf5id9"))))
+             (method url-fetch)
+             (uri (string-append "http://download.oracle.com/berkeley-db/db-"
+                                 version ".tar.gz"))
+             (sha256
+              (base32
+               "0ampbl2f0hb1nix195kz1syrqqxpmvnvnfvphambj7xjrl3iljg0"))))
     (build-system gnu-build-system)
     (outputs '("out"                             ; programs, libraries, headers
                "doc"))                           ; 94 MiB of HTML docs
     (arguments
-     '(#:tests? #f                            ; no check target available
+     `(#:tests? #f                            ; no check target available
        #:disallowed-references ("doc")
        #:phases
        (modify-phases %standard-phases
@@ -61,11 +63,17 @@
                  (("docdir[[:blank:]]*=.*")
                   (string-append "docdir = " doc "/share/doc/bdb")))
 
-               (invoke "./dist/configure"
+               (chdir "build_unix")
+               (invoke "../dist/configure"
                        (string-append "--prefix=" out)
                        (string-append "CONFIG_SHELL=" (which "bash"))
                        (string-append "SHELL=" (which "bash"))
 
+                       ;; Bdb doesn't recognize aarch64 as an architecture.
+                       ,@(if (string=? "aarch64-linux" (%current-system))
+                             '("--build=aarch64-unknown-linux-gnu")
+                             '())
+
                        ;; Remove 7 MiB of .a files.
                        "--disable-static"
 
@@ -83,70 +91,49 @@
 SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
     ;; Starting with version 6, BDB is distributed under AGPL3. Many individual
     ;; files are covered by the 3-clause BSD license.
-    (license (list license:agpl3+ license:bsd-3))
     (home-page
      "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
 
 (define-public bdb-5.3
-  (package (inherit bdb)
+  (package (inherit bdb-4.8)
     (name "bdb")
     (version "5.3.28")
-    (license (license:non-copyleft "file://LICENSE"
-                                   "See LICENSE in the distribution."))
     (source (origin
               (method url-fetch)
               (uri (string-append "http://download.oracle.com/berkeley-db/db-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0a1n5hbl7027fbz5lm0vp0zzfp1hmxnz14wx3zl9563h83br5ag0"))))
-    (arguments
-     `(#:tests? #f                            ; no check target available
-       #:disallowed-references ("doc")
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (doc (assoc-ref outputs "doc")))
-               ;; '--docdir' is not honored, so we need to patch.
-               (substitute* "dist/Makefile.in"
-                 (("docdir[[:blank:]]*=.*")
-                  (string-append "docdir = " doc "/share/doc/bdb")))
+                "0a1n5hbl7027fbz5lm0vp0zzfp1hmxnz14wx3zl9563h83br5ag0"))))))
 
-               (invoke "./dist/configure"
-                       (string-append "--prefix=" out)
-                       (string-append "CONFIG_SHELL=" (which "bash"))
-                       (string-append "SHELL=" (which "bash"))
-
-                       ;; Bdb doesn't recognize aarch64 as an architecture.
-                       ,@(if (string=? "aarch64-linux" (%current-system))
-                             '("--build=aarch64-unknown-linux-gnu")
-                             '())
-
-                       ;; Remove 7 MiB of .a files.
-                       "--disable-static"
-
-                       ;; The compatibility mode is needed by some packages,
-                       ;; notably iproute2.
-                       "--enable-compat185"
+(define-public bdb-6
+  (package (inherit bdb-4.8)
+    (name "bdb")
+    (version "6.2.32")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.oracle.com/berkeley-db/db-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1yx8wzhch5wwh016nh0kfxvknjkafv6ybkqh6nh7lxx50jqf5id9"))))
+    ;; Starting with version 6, BDB is distributed under AGPL3. Many individual
+    ;; files are covered by the 3-clause BSD license.
+    (license (list license:agpl3+ license:bsd-3))))
 
-                       ;; The following flag is needed so that the inclusion
-                       ;; of db_cxx.h into C++ files works; it leads to
-                       ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
-                       "--enable-cxx")))))))))
+(define-public bdb bdb-6)
 
 (define-public gdbm
   (package
     (name "gdbm")
-    (version "1.18")
+    (version "1.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gdbm/gdbm-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1kimnv12bzjjhaqk4c8w2j6chdj9c6bg21lchaf7abcyfss2r0mq"))))
+                "1p4ibds6z3ccy65lkmd6lm7js0kwifvl53r0fd759fjxgr917rl6"))))
     (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org.ua/software/gdbm")
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 6ce7827391..19c42b00eb 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -139,9 +139,9 @@ markup) can be customized and extended by the user.")
     (build-system cmake-build-system)
     (native-inputs
      `(("bison" ,bison)
-       ("flex" ,flex-2.6.1) ; sefaults with 2.6.4
-       ("libxml2" ,libxml2) ; provides xmllint for the tests
-       ("python" ,python-2))) ; for creating the documentation
+       ("flex" ,flex)
+       ("libxml2" ,libxml2)             ;provides xmllint for the tests
+       ("python" ,python)))             ;for creating the documentation
     (inputs
      `(("bash" ,bash-minimal)))
     (arguments
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 205dd3c8a7..4c3efbfe02 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -37,6 +37,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages glib)
@@ -295,7 +296,8 @@ designed to be used in a generic text renderer.")
        ("sqlite" ,sqlite)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("gcc" ,gcc-5)
+       ("pkg-config" ,pkg-config)))
     (arguments
      `(#:tests? #f ; No tests exist.
        #:make-flags `("CC=gcc" "TARGET_ARCH=desktop" "UI_TYPE=gtk"
diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm
index d30d7bcfa8..c2198763ef 100644
--- a/gnu/packages/ed.scm
+++ b/gnu/packages/ed.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public ed
   (package
     (name "ed")
-    (version "1.14.2")
+    (version "1.15")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/ed/ed-"
                                  version ".tar.lz"))
              (sha256
               (base32
-               "1nqhk3n1s1p77g2bjnj55acicsrlyb2yasqxqwpx0w0djfx64ygm"))))
+               "0x6ivy5k0d7dy5z9g8q8nipr89m4qbk2ink2898qq43smp08ji5d"))))
     (build-system gnu-build-system)
     (native-inputs `(("lzip" ,lzip)))
     (arguments
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index b03b2cba2e..66e7e22f26 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -85,7 +85,8 @@
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CPATH"
                      (string-append (assoc-ref inputs "sdl-mixer")
-                                    "/include/SDL"))
+                                    "/include/SDL:"
+                                    (or (getenv "CPATH") "")))
              #t)))))
     (inputs
      `(("gtk+" ,gtk+-2)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e8ae6d93dc..2a9abaee36 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -3895,7 +3895,7 @@ to a key in your preferred mode.")
       (inputs
        `(("supercollider" ,supercollider)))
       (native-inputs
-       `(("cmake" ,cmake)))
+       `(("cmake" ,cmake-minimal)))
       (home-page "https://github.com/supercollider/scel")
       (synopsis "SuperCollider Emacs interface")
       (description "@code{emacs-scel} is an Emacs interface to SuperCollider.
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 106675b87b..7678f85ddd 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -85,6 +85,7 @@
                           (origin-patches (package-source xgcc))))))
       (native-inputs
        `(("flex" ,flex)
+         ("gcc" ,gcc-5)
          ,@(package-native-inputs xgcc)))
       (arguments
        (substitute-keyword-arguments (package-arguments xgcc)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index c6eda97473..449c694612 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -152,11 +152,6 @@
        '(#:tests? #f
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'fixgcc7
-             (lambda _
-               (unsetenv "C_INCLUDE_PATH")
-               (unsetenv "CPLUS_INCLUDE_PATH")
-               #t))
            (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let ((fontfile
@@ -194,7 +189,6 @@
                "-DX11_FOUND=1")))
       (native-inputs
        `(("pkg-config" ,pkg-config)
-         ("gcc" ,gcc-7) ; Building with gcc@5 doesn't work anymore.
          ("gettext" ,gnu-gettext)))
       (inputs
        `(("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm
index d04357023d..9ba51d1b74 100644
--- a/gnu/packages/file.scm
+++ b/gnu/packages/file.scm
@@ -31,11 +31,11 @@
   (package
     (name "file")
     (version "5.33")
-    (replacement file/fixed)
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ftp.astron.com/pub/file/file-"
                                   version ".tar.gz"))
+              (patches (search-patches "file-CVE-2018-10360.patch"))
               (sha256
                (base32
                 "1iipnwjkag7q04zjkaqic41r9nlw0ml6mhqian6qkkbisb1whlhw"))))
@@ -55,10 +55,3 @@ extensions to tell you the type of a file, but looks at the actual contents
 of the file.  This package provides the libmagic library.")
    (license bsd-2)
    (home-page "https://www.darwinsys.com/file/")))
-
-(define file/fixed
-  (package
-    (inherit file)
-    (source
-      (origin (inherit (package-source file))
-              (patches (search-patches "file-CVE-2018-10360.patch"))))))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 3fa0a4d331..3f5f7b1285 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -86,7 +86,7 @@
 (define-public bitcoin-core
   (package
     (name "bitcoin-core")
-    (version "0.17.1")
+    (version "0.18.0")
     (source (origin
              (method url-fetch)
              (uri
@@ -94,7 +94,7 @@
                              version "/bitcoin-" version ".tar.gz"))
              (sha256
               (base32
-               "0am4pnaf2cisv172jqx6jdpzx770agm8777163lkjbw3ryslymiy"))))
+               "0ps0vw9iknz1b1sx74rabd1yhlxvwbd0aimjzn9hlqkvw286hkjy"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -102,7 +102,7 @@
        ("util-linux" ,util-linux)   ; provides the hexdump command for tests
        ("qttools" ,qttools)))
     (inputs
-     `(("bdb" ,bdb-5.3) ; with 6.2.23, there is an error: ambiguous overload
+     `(("bdb" ,bdb-4.8) ; Bitcoin Core requires bdb 4.8 for compatibility
        ("boost" ,boost)
        ("libevent" ,libevent)
        ("miniupnpc" ,miniupnpc)
@@ -112,8 +112,6 @@
     (arguments
      `(#:configure-flags
         (list
-          ;; We use a bdb version newer than 4.8.
-          "--with-incompatible-bdb"
           ;; Boost is not found unless specified manually.
           (string-append "--with-boost="
                          (assoc-ref %build-inputs "boost"))
@@ -136,6 +134,11 @@
           (add-before 'check 'set-home
            (lambda _
             (setenv "HOME" (getenv "TMPDIR"))  ; Tests write to $HOME.
+            #t))
+          (add-after 'check 'check-functional
+           (lambda _
+            (invoke "python3" "./test/functional/test_runner.py"
+                    (string-append "--jobs=" (number->string (parallel-job-count))))
             #t)))))
     (home-page "https://bitcoin.org/en/")
     (synopsis "Bitcoin peer-to-peer client")
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 90cb8845cf..c473ccd920 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -84,7 +84,7 @@
     ;; Use our own tool chain for that.
     (native-inputs `(("cross-gcc" ,(cross-gcc "xtensa-elf"))
                      ("cross-binutils" ,(cross-binutils "xtensa-elf"))
-                     ("cmake" ,cmake)
+                     ("cmake" ,cmake-minimal)
                      ("perl" ,perl)))
     (home-page "http://wireless.kernel.org/en/users/Drivers/ath9k_htc")
     (synopsis "Firmware for the Atheros AR7010 and AR9271 USB 802.11n NICs")
@@ -249,6 +249,7 @@ coreboot.")
     (build-system gnu-build-system)
     (native-inputs
      `(("acpica" ,acpica)
+       ("gcc" ,gcc-5)
        ("nasm" ,nasm)
        ("python-2" ,python-2)
        ("util-linux" ,util-linux)))
diff --git a/gnu/packages/flex.scm b/gnu/packages/flex.scm
index e08b0c13db..f9a21204d9 100644
--- a/gnu/packages/flex.scm
+++ b/gnu/packages/flex.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -22,11 +22,11 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages man)
   #:use-module (gnu packages bison)
-  #:use-module (gnu packages code)
   #:use-module (srfi srfi-1))
 
 (define-public flex
@@ -47,11 +47,12 @@
      (let ((bison-for-tests
             (package
               (inherit bison)
-              ;; Disable tests, since they require flex.
-              (arguments '(#:tests? #f))
+              (arguments
+               ;; Disable tests, since they require flex.
+               (substitute-keyword-arguments (package-arguments bison)
+                 ((#:tests? _ #f) #f)))
               (inputs (alist-delete "flex" (package-inputs bison))))))
-       `(("bison" ,bison-for-tests)
-         ("indent" ,indent))))
+       `(("bison" ,bison-for-tests))))
     ;; m4 is not present in PATH when cross-building
     (native-inputs
      `(("help2man" ,help2man)
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 1e28191ae1..03bfa43014 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -52,10 +52,13 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system font)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -183,7 +186,7 @@ itself."))))
 (define-public font-cantarell
   (package
     (name "font-abattis-cantarell")
-    (version "0.0.25")
+    (version "0.111")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/cantarell-fonts/"
@@ -191,8 +194,11 @@ itself."))))
                                   "/cantarell-fonts-" version ".tar.xz"))
               (sha256
                (base32
-                "0zvkd8cm1cg2919v1js9qmzwa02sjl7qajj3gcvgqvai1fm2i8hl"))))
-    (build-system gnu-build-system)
+                "05hpnhihwm9sxlq1qn993g03pwkmpjbn0dvnba71r1gfjv0jp2w5"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("appstream-glib" ,appstream-glib)
+       ("gettext" ,gettext-minimal))) ;for msgfmt
     (home-page "https://wiki.gnome.org/Projects/CantarellFonts")
     (synopsis "Cantarell sans-serif typeface")
     (description "The Cantarell font family is a contemporary Humanist
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index e64f3b099e..e355f7bb89 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -8,7 +8,8 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,13 +58,13 @@
 (define-public freetype
   (package
    (name "freetype")
-   (version "2.9.1")
+   (version "2.10.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://savannah/freetype/freetype-"
-                                version ".tar.bz2"))
+                                version ".tar.xz"))
             (sha256 (base32
-                     "0kg8w6qyiizlyzh4a8lpzslipcbv96hcg3rqqpnxba8ffbm8g3fv"))))
+                     "0vx2dg1jh5kq34dd6ifpjywkpapp8a7p1bvyq9yq5zi1i94gmnqn"))))
    (build-system gnu-build-system)
    (arguments
     ;; The use of "freetype-config" is deprecated, but other packages still
@@ -428,7 +429,7 @@ applications should be.")
 (define-public graphite2
   (package
    (name "graphite2")
-   (version "1.3.12")
+   (version "1.3.13")
    (source
      (origin
        (method url-fetch)
@@ -436,11 +437,22 @@ applications should be.")
                            "download/" version "/" name "-" version ".tgz"))
        (sha256
         (base32
-         "1l1940d8fz67jm6a0x8cjb5p2dv48cvz3wcskwa83hamd70k15fd"))))
+         "01jzhwnj1c3d68dmw15jdxly0hwkmd8ja4kw755rbkykn1ly2qyx"))))
    (build-system cmake-build-system)
+   (arguments
+    `(#:phases (modify-phases %standard-phases
+                 (add-after 'unpack 'adjust-test-PYTHONPATH
+                   (lambda _
+                     ;; Tell the build system not to override PYTHONPATH
+                     ;; while running the Python tests.
+                     (substitute* "Graphite.cmake"
+                       (("ENVIRONMENT PYTHONPATH=")
+                        (string-append "ENVIRONMENT PYTHONPATH="
+                                       (getenv "PYTHONPATH") ":")))
+                     #t)))))
    (native-inputs
-    `(("python" ,python-2) ; because of "import imap" in tests
-      ("python-fonttools" ,python2-fonttools)))
+    `(("python" ,python)
+      ("python-fonttools" ,python-fonttools)))
    (inputs
     `(("freetype" ,freetype)))
    (synopsis "Reimplementation of the SIL Graphite text processing engine")
@@ -529,7 +541,7 @@ smooth contours with constant curvature at the spline joins.")
 (define-public libuninameslist
   (package
     (name "libuninameslist")
-    (version "20190305")
+    (version "20190701")
     (home-page "https://github.com/fontforge/libuninameslist")
     (source
      (origin
@@ -538,7 +550,7 @@ smooth contours with constant curvature at the spline joins.")
                            "/libuninameslist-dist-" version ".tar.gz"))
        (sha256
         (base32
-         "1rwd2bgcyvign9agyjsr3v2fr9j1cg2wi6g0z2wwg1az32scknwq"))))
+         "18c9pcz81wm26q2m7npmvh9j3ibjs2hycxfh5xic2xgjfw40v2qn"))))
     (build-system gnu-build-system)
     (synopsis "Unicode names and annotation list")
     (description
@@ -555,14 +567,14 @@ definitions.")
 (define-public fontforge
   (package
    (name "fontforge")
-   (version "20190317")
+   (version "20190801")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "https://github.com/fontforge/fontforge/releases/download/"
                   version "/fontforge-" version ".tar.gz"))
-            (sha256 (base32
-                     "1ddqbpc32cgbccdnv0lfw0qhj59hcqzb7616ph5lkvm91pnas4dp"))))
+            (sha256
+             (base32 "0lh8yx01asbzxm6car5cfi64njh5p4lxc7iv8dldr5rwg357a86r"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
@@ -570,7 +582,6 @@ definitions.")
              ("fontconfig"      ,fontconfig) ;dlopen'd
              ("freetype"        ,freetype)
              ("gettext"         ,gettext-minimal)
-             ("glib"            ,glib) ;needed for pango detection
              ("libICE"          ,libice)
              ("libSM"           ,libsm)
              ("libX11"          ,libx11)
@@ -586,10 +597,7 @@ definitions.")
              ("libxml2"         ,libxml2)
              ("pango"           ,pango)
              ("potrace"         ,potrace)
-             ;; FIXME: We use Python 2 here because there is a bug in Python
-             ;; 3.7 that is triggered when Py_Main is called after Py_Init, as
-             ;; is done by fontforge.  This will be fixed in Python 3.7.1.
-             ("python"          ,python-2)
+             ("python"          ,python)
              ("zlib"            ,zlib)))
    (arguments
     '(#:phases
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 401f54bb14..8a302ba5bc 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -162,7 +162,12 @@ freedesktop.org project.")
                 "07a0w7rak7rvnh6g4j0akwjxwinxfszc1xi9mrx12fv82k3mgsyk"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Ddocumentation=false")))
+     `(#:configure-flags '("-Ddocumentation=false")
+
+       ;; XXX: Using 'debug' or 'debugoptimized' pulls in an additional test that
+       ;; hangs, and the comments around it suggests that we should be using this
+       ;; Meson target anyway.
+       #:build-type "release"))
     (native-inputs
      `(("check" ,check)
        ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index c5ab05ed60..d41d3e1f66 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -907,7 +907,8 @@ Chess).  It is similar to standard chess but this variant is far more complicate
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CPATH"
                      (string-append (assoc-ref inputs "sdl-union")
-                                    "/include/SDL"))
+                                    "/include/SDL:"
+                                    (or (getenv "CPATH") "")))
              #t)))))
     (inputs
      `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
@@ -1119,7 +1120,8 @@ Every puzzle has a complete solution, although there may be more than one.")
           (lambda* (#:key inputs #:allow-other-keys)
             (setenv "CPATH"
                     (string-append (assoc-ref inputs "sdl-union")
-                                   "/include/SDL"))
+                                   "/include/SDL:"
+                                   (or (getenv "CPATH") "")))
             #t)))))
    (inputs
     `(("fluidsynth" ,fluidsynth)
@@ -1351,7 +1353,8 @@ can be explored and changed freely.")
                     (lambda* (#:key inputs #:allow-other-keys)
                       (setenv "CPATH"
                               (string-append (assoc-ref inputs "sdl-union")
-                                             "/include/SDL"))))
+                                             "/include/SDL:"
+                                             (or (getenv "CPATH") "")))))
                   (add-after 'patch-source-shebangs 'patch-makefile
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; Replace /usr with package output directory.
@@ -2740,16 +2743,12 @@ Transport Tycoon Deluxe.")
                (copy-recursively
                 (string-append objects "/share/openrct2/objects")
                 "data/object"))))
-         (add-before 'configure 'fixgcc7
-           (lambda _
-             (unsetenv "C_INCLUDE_PATH")
-             (unsetenv "CPLUS_INCLUDE_PATH")
-             #t))
-         (add-after 'fixgcc7 'get-rid-of-errors
+         (add-before 'configure 'get-rid-of-errors
            (lambda _
              ;; Don't treat warnings as errors.
              (substitute* "CMakeLists.txt"
-               (("-Werror") "")))))))
+               (("-Werror") ""))
+             #t)))))
     (inputs `(("curl" ,curl)
               ("fontconfig" ,fontconfig)
               ("freetype" ,freetype)
@@ -2765,8 +2764,7 @@ Transport Tycoon Deluxe.")
               ("speexdsp" ,speexdsp)
               ("zlib" ,zlib)))
     (native-inputs
-     `(("gcc" ,gcc-7)
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/OpenRCT2/OpenRCT2")
     (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
     (description "OpenRCT2 is a free software re-implementation of
@@ -3015,7 +3013,8 @@ http://lavachat.symlynx.com/unix/")
              (lambda* (#:key inputs #:allow-other-keys)
                (setenv "CPATH"
                        (string-append (assoc-ref inputs "sdl-union")
-                                      "/include/SDL2"))
+                                      "/include/SDL2:"
+                                      (or (getenv "CPATH") "")))
                #t))
            (add-after 'install 'copy-data
              (lambda* (#:key outputs #:allow-other-keys)
@@ -3531,12 +3530,10 @@ with the \"Stamp\" tool within Tux Paint.")
              (base32
               "1h1s4abirkdv4ag22zvyk6zkk64skqbjmcnnba67ps4hdzxfbhy4"))
             (patches
-             (search-patches "supertux-fix-build-with-gcc5.patch"
-                             "supertux-unbundle-squirrel.patch"))))
+             (search-patches "supertux-unbundle-squirrel.patch"))))
    (arguments
     '(#:tests? #f
       #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
-                          "-DENABLE_BOOST_STATIC_LIBS=OFF"
                           "-DUSE_SYSTEM_PHYSFS=ON")
       #:phases
       (modify-phases %standard-phases
@@ -3792,7 +3789,8 @@ throwing people around in pseudo-randomly generated buildings.")
          (add-after 'set-paths 'set-sdl-paths
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CPATH"
-                     (string-append (assoc-ref inputs "sdl-union")
+                     (string-append (getenv "CPATH") ":"
+                                    (assoc-ref inputs "sdl-union")
                                     "/include/SDL"))))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -4199,8 +4197,7 @@ over 100 user-created campaigns.")
                      (string-append (assoc-ref inputs "sdl-union")
                                     "/include/SDL:"
                                     (assoc-ref inputs "python")
-                                    "/include/python2.7:"
-                                    (getenv "CPLUS_INCLUDE_PATH")))
+                                    "/include/python2.7"))
              (substitute* "src/main/main.cpp"
                (("#include <SDL.h>" line)
                 (string-append line "
@@ -4805,7 +4802,7 @@ fight against their plot and save his fellow rabbits from slavery.")
        ("zlib" ,zlib)))
     (native-inputs
      `(("boost" ,boost)
-       ("cmake" ,cmake)
+       ("cmake" ,cmake-minimal)
        ("mesa" ,mesa)
        ("pkg-config" ,pkg-config)
        ("python-2" ,python-2)))
@@ -5009,7 +5006,8 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
                     (lambda* (#:key inputs #:allow-other-keys)
                       (setenv "CPATH"
                               (string-append (assoc-ref inputs "sdl-union")
-                                             "/include/SDL2"))
+                                             "/include/SDL2:"
+                                             (getenv "CPATH")))
                       #t))
                   (delete 'check)
                   ;; premake doesn't provide install target
@@ -5302,7 +5300,7 @@ making Yamagi Quake II one of the most solid Quake II implementations available.
      `(("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)))
     (native-inputs
-     `(("cmake" ,cmake)
+     `(("cmake" ,cmake-minimal)
        ("gettext-minimal" ,gettext-minimal)
        ("qttools" ,qttools)))
     (synopsis "Realistic physics puzzle game")
@@ -6426,7 +6424,8 @@ to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CPATH"
                      (string-append (assoc-ref inputs "sdl")
-                                    "/include/SDL"))
+                                    "/include/SDL:"
+                                    (or (getenv "CPATH") "")))
              #t))
          (add-after 'unpack 'fix-compilation-errors
            (lambda _
@@ -6545,7 +6544,8 @@ affected by the gravity of the planets.")
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CPATH"
                      (string-append (assoc-ref inputs "sdl")
-                                    "/include/SDL"))
+                                    "/include/SDL:"
+                                    (or (getenv "CPATH") "")))
              #t)))))
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -6664,7 +6664,8 @@ the desired spell.")
                      (lambda* (#:key inputs #:allow-other-keys)
                        (setenv "CPATH"
                                (string-append (assoc-ref inputs "sdl2-union")
-                                              "/include/SDL2"))
+                                              "/include/SDL2:"
+                                              (or (getenv "CPATH") "")))
                        #t)))))
     (inputs
      `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index 487020ad3b..d8494e9c1c 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -30,13 +30,13 @@
 (define-public gawk
   (package
    (name "gawk")
-   (version "4.2.1")
+   (version "5.0.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gawk/gawk-" version
                                 ".tar.xz"))
             (sha256
-             (base32 "0lam2zf3n7ak4pig8w46lhx9hzx50kj2v2yj1616mm26wy2rf4fi"))))
+             (base32 "15570p7g2x54asvr2fsc56sxzmm08fbk4mzpcs5n92fp9vq8cklf"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index c8e993c329..41d66fc130 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -538,7 +538,7 @@ It also includes runtime support libraries for these languages.")))
 ;; Note: When changing the default gcc version, update
 ;;       the gcc-toolchain-* definitions and the gfortran definition
 ;;       accordingly.
-(define-public gcc gcc-5)
+(define-public gcc gcc-7)
 
 (define-public (make-libstdc++ gcc)
   "Return a libstdc++ package based on GCC.  The primary use case is when
@@ -677,7 +677,7 @@ as the 'native-search-paths' field."
   ;; (custom-gcc gcc "fortran" …) because that would lead to a package object
   ;; that is not 'eq?' with GFORTRAN-5, and thus 'fold-packages' would
   ;; report two gfortran@5 that are in fact identical.
-  gfortran-5)
+  gfortran-7)
 
 (define-public gccgo-4.9
   (custom-gcc gcc-4.9 "gccgo" '("go")
@@ -741,7 +741,7 @@ as the 'native-search-paths' field."
                      (variable "LIBRARY_PATH")
                      (files '("lib" "lib64"))))))
 
-(define-public gcc-objc gcc-objc-5)
+(define-public gcc-objc gcc-objc-7)
 
 (define-public gcc-objc++-4.8
   (custom-gcc gcc-4.8 "gcc-objc++" '("obj-c++")
@@ -797,7 +797,7 @@ as the 'native-search-paths' field."
                      (variable "LIBRARY_PATH")
                      (files '("lib" "lib64"))))))
 
-(define-public gcc-objc++ gcc-objc++-5)
+(define-public gcc-objc++ gcc-objc++-7)
 
 (define (make-libstdc++-doc gcc)
   "Return a package with the libstdc++ documentation for GCC."
@@ -860,7 +860,7 @@ as the 'native-search-paths' field."
 (define-public isl
   (package
     (name "isl")
-    (version "0.19")
+    (version "0.21")
     (source (origin
              (method url-fetch)
              (uri (list (string-append
@@ -868,10 +868,10 @@ as the 'native-search-paths' field."
                          version
                          ".tar.bz2")
                         (string-append %gcc-infrastructure
-                                       name "-" version ".tar.gz")))
+                                       name "-" version ".tar.bz2")))
              (sha256
               (base32
-               "1n4yz9rj24mv226hqbpw210ifvqkn8dgvpnkzf0s0lkq9zrjd5ym"))))
+               "0ng8l3q1px9lkzb44nxnzhh6fhdbclrwng9xs2v9m8yii8gs336i"))))
     (build-system gnu-build-system)
     (inputs `(("gmp" ,gmp)))
     (home-page "http://isl.gforge.inria.fr/")
@@ -898,7 +898,7 @@ dependence analysis and bounds on piecewise step-polynomials.")
               (uri (list (string-append "http://isl.gforge.inria.fr/isl-"
                                         version ".tar.bz2")
                          (string-append %gcc-infrastructure
-                                        "isl-" version ".tar.gz")))
+                                        "isl-" version ".tar.bz2")))
               (sha256
                (base32
                 "06ybml6llhi4i56q90jnimbcgk1lpcdwhy9nxdxra2hxz3bhz2vb"))))))
@@ -915,7 +915,7 @@ dependence analysis and bounds on piecewise step-polynomials.")
                          version
                          ".tar.bz2")
                         (string-append %gcc-infrastructure
-                                       name "-" version ".tar.gz")))
+                                       name "-" version ".tar.bz2")))
              (sha256
               (base32
                "13d9cqa5rzhbjq0xf0b2dyxag7pqa72xj9dhsa03m8ccr1a4npq9"))
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index a1593827a0..5b3f8509f8 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -39,7 +39,6 @@
 (define-public gd
   (package
     (name "gd")
-    (replacement gd/fixed)
     ;; Note: With libgd.org now pointing to github.com, genuine old
     ;; tarballs are no longer available.  Notably, versions 2.0.x are
     ;; missing.
@@ -55,6 +54,8 @@
 
              (patches (search-patches "gd-CVE-2018-5711.patch"
                                       "gd-CVE-2018-1000222.patch"
+                                      "gd-CVE-2019-6977.patch"
+                                      "gd-CVE-2019-6978.patch"
                                       "gd-fix-tests-on-i686.patch"
                                       "gd-freetype-test-failure.patch"))))
     (build-system gnu-build-system)
@@ -95,16 +96,6 @@ most common applications of GD involve website development.")
                            "See COPYING file in the distribution."))
     (properties '((cpe-name . "libgd")))))
 
-(define-public gd/fixed
-  (hidden-package
-    (package
-      (inherit gd)
-      (source (origin
-                (inherit (package-source gd))
-                (patches (append (origin-patches (package-source gd))
-                                 (search-patches "gd-CVE-2019-6977.patch"
-                                                 "gd-CVE-2019-6978.patch"))))))))
-
 (define-public perl-gd
   (package
     (name "perl-gd")
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 5e1f7e39d7..bb9f897e51 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -30,6 +30,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system r)
@@ -107,7 +108,7 @@ topology functions.")
 (define-public gnome-maps
   (package
     (name "gnome-maps")
-    (version "3.28.2")
+    (version "3.30.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -115,28 +116,25 @@ topology functions.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1yzi08a9316jplgsl2z0qzlqxhghyqcjhv0m6i94wcain4mxk1z7"))))
-    (build-system glib-or-gtk-build-system)
+                "0xqk3yrds0w8bjmpf4jw0370phvm65av82nqrx7fp1648h9nq7xi"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:configure-flags ;; Ensure that geoclue is referred to by output.
-       (list (string-append "LDFLAGS=-L"
-                            (assoc-ref %build-inputs "geoclue") "/lib")
-             (string-append "CFLAGS=-I"
-                            (assoc-ref %build-inputs "geoclue") "/include"))
+     `(#:glib-or-gtk? #t
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
                    (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
-                   (goa-path (string-append
-                              (assoc-ref inputs "gnome-online-accounts")
-                              "/lib:"
-                              (assoc-ref inputs "gnome-online-accounts:lib")
-                              "/lib"))
                    (geocode-glib-path (string-append
                                        (assoc-ref inputs "geocode-glib")
                                        "/lib"))
+                   (goa-path (string-append
+                              (assoc-ref inputs "gnome-online-accounts:lib")
+                              "/lib"))
+                   (gdk-pixbuf-path (string-append
+                                     (assoc-ref inputs "gdk-pixbuf")
+                                     "/lib"))
                    (webkitgtk-path (string-append
                                     (assoc-ref inputs "webkitgtk")
                                     "/lib")))
@@ -144,13 +142,17 @@ topology functions.")
                  `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
 
                  ;; There seems to be no way to embed the path of
-                 ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37 and
-                 ;; libjavascriptcoregtk-4.0.so.18.
-                 `("LD_LIBRARY_PATH" ":" prefix
-                   (,goa-path ,webkitgtk-path ,geocode-glib-path)))
+                 ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37,
+                 ;; libgdk_pixbuf-2.0.so, libjavascriptcoregtk-4.0.so.18, and
+                 ;; libgeocode-glib.so.0
+                 `("LD_LIBRARY_PATH" ":" prefix (,goa-path
+                                                 ,webkitgtk-path
+                                                 ,gdk-pixbuf-path
+                                                 ,geocode-glib-path)))
                #t))))))
     (native-inputs
-     `(("gobject-introspection" ,gobject-introspection)
+     `(("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
+       ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
@@ -161,14 +163,13 @@ topology functions.")
        ("libsoup" ,libsoup)
        ("libgweather" ,libgweather)
        ("libxml2" ,libxml2)
-       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gdk-pixbuf" ,gdk-pixbuf+svg)
        ("glib-networking" ,glib-networking)
        ("geoclue" ,geoclue)
        ("geocode-glib" ,geocode-glib)
        ("gfbgraph" ,gfbgraph)
        ("gjs" ,gjs)
        ("glib" ,glib)
-       ("gnome-online-accounts" ,gnome-online-accounts)
        ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("rest" ,rest)
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index ef80af42ea..245fdc9ec0 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -4,10 +4,11 @@
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Miguel <rosen644835@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,8 @@
   #:use-module (guix build-system perl)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages emacs)
+  #:use-module (gnu packages libunistring)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages xml)
@@ -41,34 +44,42 @@
 (define-public gettext-minimal
   (package
     (name "gettext-minimal")
-    (version "0.19.8.1")
+    (version "0.20.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/gettext/gettext-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0hsw28f9q9xaggjlsdp2qmbp2rbd1mp0njzan2ld9kiqwkq2m57z"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                ;; The gnulib test-lock test is prone to writer starvation
-                ;; with our glibc@2.25, which prefers readers, so disable it.
-                ;; The gnulib commit b20e8afb0b2 should fix this once
-                ;; incorporated here.
-                 (substitute* "gettext-runtime/tests/Makefile.in"
-                   (("TESTS = test-lock\\$\\(EXEEXT\\)") "TESTS ="))
-                 (substitute* "gettext-tools/gnulib-tests/Makefile.in"
-                  (("test-lock\\$\\(EXEEXT\\) ") ""))
-                 #t))))
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gettext/gettext-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0p3zwkk27wm2m2ccfqm57nj7vqkmfpn7ja1nf65zmhz8qqs5chb6"))))
     (build-system gnu-build-system)
     (outputs '("out"
-               "doc"))                            ;8 MiB of HTML
+               "doc"))                            ;9 MiB of HTML
     (inputs
-     `(("expat" ,expat)))
+     `(("libunistring" ,libunistring)
+       ("libxml2" ,libxml2)
+
+       ;; TODO: ncurses is only needed for the 'libtextstyle' library.
+       ;; The next version of gettext can use a separate libtextstyle,
+       ;; but for now we include it here in 'gettext-minimal'.
+       ("ncurses" ,ncurses)))
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--with-included-libunistring=no"
+                           "--with-included-libxml=no")
+       #:phases
        (modify-phases %standard-phases
+         (add-before 'patch-source-shebangs 'patch-fixed-paths
+           (lambda _
+             (substitute* '("gettext-tools/config.h.in"
+                            "gettext-tools/gnulib-tests/init.sh"
+                            "gettext-tools/tests/init.sh"
+                            "gettext-tools/system-tests/run-test")
+               (("/bin/sh") "sh"))
+             (substitute* '("gettext-tools/src/project-id"
+                            "gettext-tools/projects/KDE/trigger"
+                            "gettext-tools/projects/GNOME/trigger")
+               (("/bin/pwd") "pwd"))
+             #t))
         (add-before 'check 'patch-tests
          (lambda* (#:key inputs #:allow-other-keys)
            (let* ((bash (which "sh")))
@@ -92,15 +103,7 @@
                  (("/bin/pwd")
                   "pwd"))
 
-               #t))))
-        (add-before 'configure 'link-expat
-         (lambda _
-           ;; Gettext defaults to opening expat via dlopen on
-           ;; "Linux".  Change to link directly.
-           (substitute* "gettext-tools/configure"
-             (("LIBEXPAT=\"-ldl\"") "LIBEXPAT=\"-ldl -lexpat\"")
-             (("LTLIBEXPAT=\"-ldl\"") "LTLIBEXPAT=\"-ldl -lexpat\""))
-           #t)))
+               #t)))))
 
        ;; When tests fail, we want to know the details.
        #:make-flags '("VERBOSE=yes")))
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index f9c3ee94bf..3b74a96966 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -47,12 +47,13 @@
 (define-public lcms
   (package
    (name "lcms")
-   (replacement lcms/fixed)
    (version "2.9")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/lcms/lcms/" version
                                 "/lcms2-" version ".tar.gz"))
+
+            (patches (search-patches "lcms-CVE-2018-16435.patch"))
             (sha256 (base32
                      "083xisy6z01zhm7p7rgk4bx9d6zlr8l20qkfv1g29ylnhgwzvij8"))))
    (build-system gnu-build-system)
@@ -68,14 +69,6 @@ Consortium standard (ICC), approved as ISO 15076-1.")
    (home-page "http://www.littlecms.com/")
    (properties '((cpe-name . "little_cms_color_engine")))))
 
-(define lcms/fixed
-  (package
-    (inherit lcms)
-    (source
-      (origin
-        (inherit (package-source lcms))
-        (patches (search-patches "lcms-CVE-2018-16435.patch"))))))
-
 (define-public libpaper
   (package
    (name "libpaper")
@@ -144,7 +137,7 @@ printing, and psresize, for adjusting page sizes.")
 (define-public ghostscript
   (package
     (name "ghostscript")
-    (version "9.26")
+    (version "9.27")
 
     ;; The problems addressed by GHOSTSCRIPT/FIXED are not security-related,
     ;; but they have a significant impact on usability, hence this graft.
@@ -160,7 +153,7 @@ printing, and psresize, for adjusting page sizes.")
                             "/ghostscript-" version ".tar.xz"))
         (sha256
          (base32
-          "1645f47all5w27bfhiq15vycdm954lmr6agqkrp68ksq6xglgvch"))
+          "06dnj0mxyaryfbwlsjwaqf847w91w2h8f108kxxcc41nrnx1y3zw"))
         (patches (search-patches "ghostscript-no-header-creationdate.patch"
                                  "ghostscript-no-header-id.patch"
                                  "ghostscript-no-header-uuid.patch"))
@@ -178,6 +171,13 @@ printing, and psresize, for adjusting page sizes.")
     (outputs '("out" "doc"))                  ;19 MiB of HTML/PS doc + examples
     (arguments
      `(#:disallowed-references ("doc")
+       ;; XXX: Starting with version 9.27, building the tests in parallel
+       ;; occasionally fails like this:
+       ;;  In file included from ./base/memory_.h:23:0,
+       ;;                   from ./obj/gsmd5.h:1,
+       ;;                   from ./obj/gsmd5.c:56:
+       ;;  ./base/std.h:25:10: fatal error: arch.h: No such file or directory
+       #:parallel-tests? #f
        #:configure-flags
        (list (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out") "/lib")
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index bfa80b1e13..fe895d3840 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -151,15 +151,16 @@ the X-Consortium license.")
 (define-public ftgl
   (package
     (name "ftgl")
-    (version "2.1.3-rc5")
+    (version "2.4.0")
+    (home-page "https://github.com/frankheckenbach/ftgl")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "mirror://sourceforge/ftgl/FTGL%20Source/2.1.3~rc5/"
-                    "ftgl-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nsn4s6vnv5xcgxcw6q031amvh2zfj2smy1r5mbnjj2548hxcn2l"))))
+                "0zjs1h9w30gajq9lndzvjsa26rsmr1081lb1fbpbj10yhcdcsc79"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -169,8 +170,10 @@ the X-Consortium license.")
               ("mesa" ,mesa)
               ("glu" ,glu)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://ftgl.sourceforge.net")
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
     (synopsis "Font rendering library for OpenGL applications")
     (description
      "FTGL is a font rendering library for OpenGL applications.  Supported
@@ -330,6 +333,11 @@ also known as DXTn or DXTC) for Mesa.")
                 "-Dllvm=true"))         ; default is x86/x86_64 only
              (_
               '("-Ddri-drivers=nouveau,r200,r100"))))
+
+       ;; XXX: 'debugoptimized' causes LTO link failures on some drivers.  The
+       ;; documentation recommends using 'release' for performance anyway.
+       #:build-type "release"
+
        #:modules ((ice-9 match)
                   (srfi srfi-1)
                   (guix build utils)
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index a02cf3b7f3..3c2f346837 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -5,10 +5,11 @@
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
-;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
@@ -31,11 +32,11 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
-  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages docbook)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages enlightenment)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
@@ -53,6 +54,7 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages selinux)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -64,6 +66,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (srfi srfi-1)
 
   ;; Export variables up-front to allow circular dependency with the 'xorg'
   ;; module.
@@ -82,8 +85,7 @@
 (define dbus
   (package
     (name "dbus")
-    (version "1.12.12")
-    (replacement dbus/fixed)
+    (version "1.12.16")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -91,7 +93,7 @@
                     version ".tar.gz"))
               (sha256
                (base32
-                "1y7mxhkw2shd9mi9s62k81lz8npjkrafapr4fyfms7hs04kg4ilm"))
+                "107ckxaff1cv4q6kmfdi2fb1nlsv03312a7kf6lb4biglhpjv8jl"))
               (patches (search-patches "dbus-helper-search-path.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -122,14 +124,21 @@
                             "sysconfdir=/tmp/dummy"
                             "install"))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ;; Dependencies to generate the doc.
+       ("docbook-xml" ,docbook-xml-4.4)
+       ("docbook-xsl" ,docbook-xsl)
+       ("doxygen" ,doxygen)
+       ("xmlto" ,xmlto)
+       ("libxml2" ,libxml2)             ;for XML_CATALOG_FILES
+       ("libxslt" ,libxslt)
+       ("yelp-tools" ,yelp-tools)))
     (inputs
      `(("expat" ,expat)
-
        ;; Add a dependency on libx11 so that 'dbus-launch' has support for
        ;; '--autolaunch'.
        ("libx11" ,libx11)))
-
+    (outputs '("out" "doc"))            ;22 MiB of HTML doc
     (home-page "https://www.freedesktop.org/wiki/Software/dbus/")
     (synopsis "Message bus for inter-process communication (IPC)")
     (description
@@ -150,18 +159,10 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
 shared NFS home directories.")
     (license license:gpl2+)))                     ; or Academic Free License 2.1
 
-(define dbus/fixed
-  (package
-    (inherit dbus)
-    (source (origin
-              (inherit (package-source dbus))
-              (patches (append (search-patches "dbus-CVE-2019-12749.patch")
-                               (origin-patches (package-source dbus))))))))
-
 (define glib
   (package
    (name "glib")
-   (version "2.56.3")
+   (version "2.60.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
@@ -169,30 +170,36 @@ shared NFS home directories.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1cjcqz77m62zrx7224vl3f2cxwqf28r5xpqb2jy7av0vr2scb959"))
-            (patches (search-patches "glib-tests-timer.patch"))))
-   (build-system gnu-build-system)
+              "0v7vpx2md1gn0wwiirn7g4bhf2csfvcr03y96q2zv97ain6sp3zz"))
+            (patches (search-patches "glib-tests-timer.patch"))
+            (modules '((guix build utils)))
+            (snippet
+             '(begin
+                (substitute* "tests/spawn-test.c"
+                  (("/bin/sh") "sh"))
+                #t))))
+   (build-system meson-build-system)
    (outputs '("out"           ; everything
-              "bin"           ; glib-mkenums, gtester, etc.; depends on Python
-              "doc"))         ; 20 MiB of GTK-Doc reference
+              "bin"))         ; glib-mkenums, gtester, etc.; depends on Python
    (propagated-inputs
-    `(("pcre" ,pcre))) ; in the Requires.private field of glib-2.0.pc
-   (inputs
-    `(("coreutils" ,coreutils)
+    `(("pcre" ,pcre)  ; in the Requires.private field of glib-2.0.pc
+      ("libffi" ,libffi) ; in the Requires.private field of gobject-2.0.pc
+      ;; These are in the Requires.private field of gio-2.0.pc
       ("util-linux" ,util-linux)  ; for libmount
-      ("libffi" ,libffi)
+      ("libselinux" ,libselinux)
       ("zlib" ,zlib)))
+   (inputs
+    `(("coreutils" ,coreutils)))
    (native-inputs
     `(("gettext" ,gettext-minimal)
+      ("m4" ,m4) ; for installing m4 macros
       ("dbus" ,dbus)                              ; for GDBus tests
       ("pkg-config" ,pkg-config)
       ("python" ,python-wrapper)
       ("perl" ,perl)                              ; needed by GIO tests
-      ("bash" ,bash)
       ("tzdata" ,tzdata-for-tests)))                  ; for tests/gdatetime.c
    (arguments
-    `(#:disallowed-references (,tzdata-for-tests)
-      #:phases
+    `(#:phases
       (modify-phases %standard-phases
         (add-before 'build 'pre-build
           (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -204,14 +211,8 @@ shared NFS home directories.")
             ;; Some tests want write access there.
             (setenv "HOME" (getcwd))
             (setenv "XDG_CACHE_HOME" (getcwd))
-
-            (substitute* '("glib/gspawn.c"
-                           "glib/tests/utils.c"
-                           "tests/spawn-test.c")
-              (("/bin/sh")
-               (string-append (assoc-ref inputs "bash") "/bin/sh")))
             #t))
-        (add-before 'check 'disable-failing-tests
+        (add-after 'unpack 'disable-failing-tests
           (lambda _
             (let ((disable
                    (lambda (test-file test-paths)
@@ -230,6 +231,15 @@ shared NFS home directories.")
                        ;; recognize it.
                        "/thread/thread4"))
 
+                     ;; This tries to find programs in FHS directories.
+                     ("glib/tests/utils.c"
+                      ("/utils/find-program"))
+
+                     ;; This fails because "glib/tests/echo-script" cannot be
+                     ;; found.
+                     ("glib/tests/spawn-singlethread.c"
+                      ("/gthread/spawn-script"))
+
                      ("glib/tests/timer.c"
                       (;; fails if compiler optimizations are enabled, which they
                        ;; are by default.
@@ -273,18 +283,45 @@ shared NFS home directories.")
 
                      ("gio/tests/gdbus-unix-addresses.c"
                       (;; Requires /etc/machine-id.
-                       "/gdbus/x11-autolaunch")))))
-              (for-each (lambda (x) (apply disable x)) failing-tests)
-              #t))))
+                       "/gdbus/x11-autolaunch"))
 
-      ;; Note: `--docdir' and `--htmldir' are not honored, so work around it.
-      #:configure-flags (list (string-append "--with-html-dir="
-                                             (assoc-ref %outputs "doc")
-                                             "/share/gtk-doc/html"))
+                     ("gio/tests/gsocketclient-slow.c"
+                      (;; These tests tries to resolve "localhost", and fails.
+                       "/socket-client/happy-eyeballs/slow"
+                       "/socket-client/happy-eyeballs/cancellation/delayed"))
 
-      ;; In 'gio/tests', 'gdbus-test-codegen-generated.h' is #included in a
-      ;; file that gets compiled possibly before it has been fully generated.
-      #:parallel-tests? #f))
+                     )))
+              (for-each (lambda (x) (apply disable x)) failing-tests)
+              #t)))
+        (replace 'check
+          (lambda _
+            (setenv "MESON_TESTTHREADS"
+                    (number->string (parallel-job-count)))
+            ;; Do not run tests marked as "flaky".
+            (invoke "meson" "test" "--no-suite" "flaky")))
+        ;; TODO: meson does not permit the bindir to be outside of prefix.
+        ;; See https://github.com/mesonbuild/meson/issues/2561
+        ;; We can remove this once meson is patched.
+        (add-after 'install 'move-executables
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out"))
+                  (bin (assoc-ref outputs "bin")))
+              (mkdir-p bin)
+              (rename-file (string-append out "/bin")
+                           (string-append bin "/bin"))
+              ;; Do not refer to "bindir", which points to "${prefix}/bin".
+              ;; We don't patch "bindir" to point to "$bin/bin", because that
+              ;; would create a reference cycle between the "out" and "bin"
+              ;; outputs.
+              (substitute* (list (string-append out "/lib/pkgconfig/gio-2.0.pc")
+                                 (string-append out "/lib/pkgconfig/glib-2.0.pc"))
+                (("bindir=\\$\\{prefix\\}/bin") "")
+                (("=\\$\\{bindir\\}/") "="))
+              #t))))))
+      ;; TODO: see above for explanation.
+      ;; #:configure-flags (list (string-append "--bindir="
+      ;;                                        (assoc-ref %outputs "bin")
+      ;;                                        "/bin"))
 
    (native-search-paths
     ;; This variable is not really "owned" by GLib, but several related
@@ -311,30 +348,34 @@ dynamic loading, and an object system.")
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-    (version "1.56.1")
+    (version "1.60.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/"
                    "gobject-introspection/" (version-major+minor version)
                    "/gobject-introspection-" version ".tar.xz"))
              (sha256
-              (base32 "0jx2kryjd7l0vl5gb3qp1qjfy3cjiizvcd1snsm7pzwrzz67aa2v"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                 (substitute* "tools/g-ir-tool-template.in"
-                   (("#!/usr/bin/env @PYTHON@") "#!@PYTHON@"))
-                 #t))
+              (base32 "172ymc1vbg2rclq1rszx4y32vm900nn1mc4qg1a4mqxjiwvf5pzz"))
              (patches (search-patches
                        "gobject-introspection-cc.patch"
                        "gobject-introspection-girepository.patch"
                        "gobject-introspection-absolute-shlib-path.patch"))))
-    (build-system gnu-build-system)
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-use-/usr/bin/env
+           (lambda _
+             (substitute* "tools/g-ir-tool-template.in"
+               (("#!@PYTHON_CMD@")
+                (string-append "#!" (which "python3"))))
+             #t)))))
     (inputs
      `(("bison" ,bison)
        ("flex" ,flex)
        ("glib" ,glib)
-       ("python-2" ,python-2)))
+       ("python" ,python-wrapper)
+       ("zlib" ,zlib)))
     (native-inputs
      `(("glib" ,glib "bin")
        ("pkg-config" ,pkg-config)))
@@ -347,13 +388,6 @@ dynamic loading, and an object system.")
             (variable "GI_TYPELIB_PATH")
             (files '("lib/girepository-1.0")))))
     (search-paths native-search-paths)
-    (arguments
-     `(;; The build system has at least one race condition involving Gio-2.0.gir
-       ;; which causes intermittent failures, as of 1.56.0.
-       #:parallel-build? #f
-       ;; The patch 'gobject-introspection-absolute-shlib-path.patch' causes
-       ;; some tests to fail.
-       #:tests? #f))
     (home-page "https://wiki.gnome.org/GObjectIntrospection")
     (synopsis "Generate interface introspection data for GObject libraries")
     (description
@@ -418,19 +452,19 @@ The intltool collection can be used to do these things:
 (define itstool
   (package
     (name "itstool")
-    (version "2.0.2")
+    (version "2.0.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://files.itstool.org/itstool/itstool-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0fh34wi52i0qikgvlmrcpf1vx6gc1xqdad4539l4d9hikfsrz45z"))))
+               "1acjgf8zlyk7qckdk19iqaca4jcmywd7vxjbcs1mm6kaf8icqcv2"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxml2" ,libxml2)
-       ("python2-libxml2" ,python2-libxml2)
-       ("python-2" ,python-2)))
+       ("python-libxml2" ,python-libxml2)
+       ("python" ,python)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -463,6 +497,16 @@ information in their documents, such as whether a particular element should be
 translated.")
     (license license:gpl3+)))
 
+(define-public itstool/fixed
+  ;; This variant fixes a python-libxml2 crash when processing UTF-8
+  ;; sequences: <https://bugs.gnu.org/37468>.  Since the issue is quite rare,
+  ;; create this variant here to avoid a full rebuild.
+  (package/inherit
+   itstool
+   (inputs
+    `(("python-libxml2" ,python-libxml2/fixed)
+      ,@(alist-delete "python-libxml2" (package-inputs itstool))))))
+
 (define dbus-glib
   (package
     (name "dbus-glib")
@@ -521,7 +565,7 @@ has an ease of use unmatched by other C++ callback libraries.")
 (define glibmm
   (package
     (name "glibmm")
-    (version "2.56.0")
+    (version "2.60.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/glibmm/"
@@ -529,13 +573,10 @@ has an ease of use unmatched by other C++ callback libraries.")
                                  "/glibmm-" version ".tar.xz"))
              (sha256
               (base32
-               "1abrkqhca5p8n6ly3vp1232rny03s7lrd8f8iz2m2m141nxgqx3f"))))
+               "1g7jxqd270dv2d83r7pf5893mwpz7d5xib0q01na2yalh34v38d3"))))
     (build-system gnu-build-system)
     (arguments
-     `(;; XXX: Some tests uses C++14 features.  Remove this when the default
-       ;; compiler is >= GCC6.
-       #:configure-flags '("CXXFLAGS=-std=gnu++14")
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'build 'pre-build
            (lambda _
@@ -670,7 +711,7 @@ useful for C++.")
 (define-public perl-glib
   (package
     (name "perl-glib")
-    (version "1.329")
+    (version "1.3291")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -678,7 +719,7 @@ useful for C++.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0d9ak0zknz81lv3cqkzr2mxdic6g5rrbb87skqc4jj48rz4f2k3v"))))
+                "0whz5f87wvzq8zsva85h06mkfqim2ciq845ixlvmafwxggccv0xr"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-extutils-depends" ,perl-extutils-depends)
@@ -763,6 +804,8 @@ This package provides the library for GLib applications.")
                 "mirror://sourceforge/dbus-cplusplus/dbus-c%2B%2B/"
                 version "/libdbus-c%2B%2B-" version ".tar.gz"))
               (file-name (string-append name "-" version ".tar.gz"))
+              (patches (search-patches "dbus-c++-gcc-compat.patch"
+                                       "dbus-c++-threading-mutex.patch"))
               (sha256
                (base32
                 "0qafmy2i6dzx4n1dqp6pygyy6gjljnb7hwjcj2z11c1wgclsq4dw"))))
@@ -784,7 +827,8 @@ This package provides the library for GLib applications.")
            (lambda _
              (substitute* "include/dbus-c++/eventloop-integration.h"
                (("#include <errno.h>")
-                "#include <errno.h>\n#include <unistd.h>")))))))
+                "#include <errno.h>\n#include <unistd.h>"))
+             #t)))))
     (synopsis "D-Bus API for C++")
     (description "This package provides D-Bus client API bindings for the C++
 programming language.  It also contains the utility
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index baebeec1c6..b7e375e5d8 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -86,10 +86,10 @@
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fonts)
+  #:use-module (gnu packages file-systems)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages game-development)
-  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -227,7 +227,6 @@
        ("libnotify" ,libnotify)
        ("libsm" ,libsm)
        ("libxml2" ,libxml2)
-       ("nettle" ,nettle)
        ("totem-pl-parser" ,totem-pl-parser)))
     (home-page "https://projects.gnome.org/brasero/")
     (synopsis "CD/DVD burning tool for Gnome")
@@ -304,7 +303,7 @@ features to enable users to create their discs easily and quickly.")
        ("gettext" ,gettext-minimal)
        ("itstool" ,itstool)
        ("intltool" ,intltool)
-       ("cmake" ,cmake)))
+       ("cmake" ,cmake-minimal)))
     (home-page "https://launchpad.net/deja-dup")
     (synopsis "Simple backup tool, for regular encrypted backups")
     (description
@@ -362,10 +361,12 @@ relationship modeling, and network diagrams.  The program supports various file
 formats like PNG, SVG, PDF and EPS.")
       (license license:gpl2+))))
 
+;; This is the unstable release, but it is required for the current stable
+;; release of gvfs (1.38.1).
 (define-public libgdata
   (package
     (name "libgdata")
-    (version "0.16.1")
+    (version "0.17.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -373,10 +374,7 @@ formats like PNG, SVG, PDF and EPS.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "09q8h1129xjpw33rvzz7856drygxwlm0s64z9cm0vbmjxiqy0h47"))
-              (patches
-               (search-patches "libgdata-fix-tests.patch"
-                               "libgdata-glib-duplicate-tests.patch"))))
+                "0fj54yqxdapdppisqm1xcyrpgcichdmipq0a0spzz6009ikzgi45"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -396,14 +394,14 @@ formats like PNG, SVG, PDF and EPS.")
        ("uhttpmock" ,uhttpmock)))
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
-       ("glib" ,glib)
-       ("glib-networking" ,glib-networking)
-       ("json-glib" ,json-glib)
-       ("libsoup" ,libsoup)))
+       ("glib-networking" ,glib-networking)))
     (propagated-inputs
      `(("gcr" ,gcr)
+       ("glib" ,glib)
        ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
+       ("json-glib" ,json-glib)
        ("liboauth" ,liboauth)
+       ("libsoup" ,libsoup)
        ("libxml2" ,libxml2)))
     (home-page "https://wiki.gnome.org/Projects/libgdata")
     (synopsis "Library for accessing online service APIs")
@@ -433,8 +431,7 @@ access the common Google services, and has full asynchronous support.")
      `(("gtk+" ,gtk+)
        ("libjpeg" ,libjpeg-turbo)
        ("lcms" ,lcms)
-       ("libtiff" ,libtiff)
-       ("nettle" ,nettle)))
+       ("libtiff" ,libtiff)))
     (propagated-inputs
      ;; In Requires of libgxps.pc.
      `(("cairo" ,cairo)
@@ -473,7 +470,7 @@ commonly used macros.")
 (define-public gnome-desktop
   (package
     (name "gnome-desktop")
-    (version "3.28.2")
+    (version "3.30.2")
     (source
      (origin
       (method url-fetch)
@@ -482,7 +479,7 @@ commonly used macros.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "0c439hhpfd9axmv4af6fzhibksh69pnn2nnbghbbqqbwy6zqfl30"))))
+        "0k6iccfj9naw42dl2mgljfvk12dmvg06plg86qd81nksrf9ycxal"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -561,7 +558,7 @@ and keep up to date translations of documentation.")
 (define-public gnome-disk-utility
   (package
     (name "gnome-disk-utility")
-    (version "3.28.3")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -569,7 +566,7 @@ and keep up to date translations of documentation.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "11ajz4cbsdns81kihd6242b6pwxbw8bkr9qqkf4qnb4kp363a38m"))))
+                "1365fabz3q7n3bl775z82m1nzg18birxxyd7l2ssbbkqrx3h7wgi"))))
     (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin")
@@ -599,7 +596,7 @@ and keep up to date translations of documentation.")
 (define-public gcr
   (package
     (name "gcr")
-    (version "3.28.0")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -607,7 +604,20 @@ and keep up to date translations of documentation.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "02xgky22xgvhgd525khqh64l5i21ca839fj9jzaqdi3yvb8pbq8m"))))
+                "12qn7mcmxb45lz1gq3s3b34rimiyrrshkrpvxdw1fc0w26i4l84m"))
+              (patches
+               (list
+                ;; This patch solves an ordering issue that showed up when
+                ;; running the test suite against newer Glib 2.60.  See
+                ;; <https://gitlab.gnome.org/GNOME/gcr/merge_requests/9>.
+                (origin
+                  (method url-fetch)
+                  (uri (string-append "https://gitlab.gnome.org/GNOME/gcr/commit/"
+                                      "45d637578d7643ff96c0183ac267497a0b4c6344.diff"))
+                  (file-name "gcr-hashtable-ordering.patch")
+                  (sha256
+                   (base32
+                    "1vsqiys8fsm1f1vvds783wwf7zwi5v282rhsai8jrsm6x7h79gbi")))))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -636,6 +646,7 @@ and keep up to date translations of documentation.")
        ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)
        ("libxml2" ,libxml2)
+       ("vala" ,vala)
        ("xsltproc" ,libxslt)))
     ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
     (propagated-inputs
@@ -710,25 +721,24 @@ GNOME Desktop.")
              (substitute* "po/Makefile.in.in"
                (("/bin/sh") (which "sh")))
              #t))
-         (add-before
-          'configure 'fix-docbook
-          (lambda* (#:key inputs #:allow-other-keys)
-            (substitute* "docs/Makefile.am"
-              (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
-               (string-append (assoc-ref inputs "docbook-xsl")
-                              "/xml/xsl/docbook-xsl-"
-                              ,(package-version docbook-xsl)
-                              "/manpages/docbook.xsl")))
-            (setenv "XML_CATALOG_FILES"
-                    (string-append (assoc-ref inputs "docbook-xml")
-                                   "/xml/dtd/docbook/catalog.xml"))
-            ;; Rerun the whole thing to avoid version mismatch ("This is
-            ;; Automake 1.15.1, but the definition used by this
-            ;; AM_INIT_AUTOMAKE comes from Automake 1.15.").  Note: we don't
-            ;; use 'autoreconf' because it insists on running 'libtoolize'.
-            (invoke "autoconf")
-            (invoke "aclocal")
-            (invoke "automake" "-ac"))))))
+         (add-after 'unpack 'fix-docbook
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "docs/Makefile.am"
+               (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
+                (string-append (assoc-ref inputs "docbook-xsl")
+                               "/xml/xsl/docbook-xsl-"
+                               ,(package-version docbook-xsl)
+                               "/manpages/docbook.xsl")))
+             (setenv "XML_CATALOG_FILES"
+                     (string-append (assoc-ref inputs "docbook-xml")
+                                    "/xml/dtd/docbook/catalog.xml"))
+             ;; Rerun the whole thing to avoid version mismatch ("This is
+             ;; Automake 1.15.1, but the definition used by this
+             ;; AM_INIT_AUTOMAKE comes from Automake 1.15.").  Note: we don't
+             ;; use 'autoreconf' because it insists on running 'libtoolize'.
+             (invoke "autoconf")
+             (invoke "aclocal")
+             (invoke "automake" "-ac"))))))
     (inputs
      `(("libgcrypt" ,libgcrypt)
        ("linux-pam" ,linux-pam)
@@ -738,6 +748,7 @@ GNOME Desktop.")
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")
+       ("glib" ,glib) ; for m4 macros
        ("python" ,python-2) ;for tests
        ("intltool" ,intltool)
        ("autoconf" ,autoconf)
@@ -760,7 +771,7 @@ forgotten when the session ends.")
 (define-public evince
   (package
     (name "evince")
-    (version "3.28.2")
+    (version "3.30.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -768,7 +779,7 @@ forgotten when the session ends.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1qbk1x2c7iacmmfwjzh136v2sdacrkqn9d6bnqid7xn9hlnx4m89"))))
+               "0k7jln6dpg4bpv61niicjzkzyq6fhb3yfld7pc8ck71c8pmvsnx9"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-nautilus")
@@ -793,6 +804,7 @@ forgotten when the session ends.")
        ;; ("libkpathsea" ,texlive-bin)
        ("gnome-desktop" ,gnome-desktop)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gspell" ,gspell)
        ("libgnome-keyring" ,libgnome-keyring)
        ("adwaita-icon-theme" ,adwaita-icon-theme)
        ("gdk-pixbuf" ,gdk-pixbuf)
@@ -808,10 +820,6 @@ forgotten when the session ends.")
        ("libcanberra" ,libcanberra)
        ("libsecret" ,libsecret)
 
-       ;; XXX: 'libarchive.pc' adds '-lnettle' so Nettle should really be
-       ;; propagated from there.
-       ("nettle" ,nettle)
-
        ;; For tests.
        ("dogtail" ,python2-dogtail)))
     (native-inputs
@@ -833,7 +841,7 @@ on the GNOME Desktop with a single simple application.")
 (define-public gsettings-desktop-schemas
   (package
     (name "gsettings-desktop-schemas")
-    (version "3.28.0")
+    (version "3.28.1")
     (source
      (origin
       (method url-fetch)
@@ -842,7 +850,7 @@ on the GNOME Desktop with a single simple application.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "0rwidacwrxlc54x90h9g3wx2zlisc4vm49vmxi15azmpj1vwvd2c"))))
+        "0bshwm49cd01ighsxqlbqn10q0ch71ff99gcrx8pr2gyky2ad3pq"))))
     (build-system gnu-build-system)
     (inputs
      `(("glib" ,glib)))
@@ -931,7 +939,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
 (define-public adwaita-icon-theme
   (package (inherit gnome-icon-theme)
     (name "adwaita-icon-theme")
-    (version "3.28.0")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -939,7 +947,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0l114ildlb3lz3xymfxxi0wpr2x21rd3cg8slb8jyxynzwfqrbks"))))
+                "1kp1lis3dr16jmlgycz1b29jsr6ir8wmqj6laqwlhs663cmjlxbd"))))
     (native-inputs
      `(("gtk-encode-symbolic-svg" ,gtk+ "bin")))))
 
@@ -969,14 +977,14 @@ guidelines.")
 (define-public shared-mime-info
   (package
     (name "shared-mime-info")
-    (version "1.9")
+    (version "1.10")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://freedesktop.org/~hadess/"
                                  "shared-mime-info-" version ".tar.xz"))
              (sha256
               (base32
-               "10ywzhzg8v1xmb9sz5xbqaci90id38knswigynyl33i29vn360aw"))))
+               "1gxyvwym3xgpmp262gfn8jg5sla6k5hy6m6dmy6grgiq90xsh9f6"))))
     (build-system gnu-build-system)
     (arguments
      ;; The build system appears not to be parallel-safe.
@@ -1260,18 +1268,15 @@ the GNOME desktop environment.")
 (define-public libcroco
   (package
     (name "libcroco")
-    (version "0.6.12")
+    (version "0.6.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version)  "/"
                                   name "-" version ".tar.xz"))
-              (patches
-                (search-patches "libcroco-CVE-2017-7960.patch"
-                                "libcroco-CVE-2017-7961.patch"))
               (sha256
                (base32
-                "0q7qhi7z64i26zabg9dbs5706fa8pmzp1qhpa052id4zdiabbi6x"))))
+                "1m110rbj5d2raxcdp4iz0qp172284945awrsbdlq99ksmqsc4zkn"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1828,8 +1833,6 @@ creating interactive structured graphics.")
                (base32
                 "0679hcnpam2gkag2i63sm0wdm35gwvzafnz1354mg6j5gzwpfrcr"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags '("CXXFLAGS=-std=c++11"))) ; required by gtkmm
     (propagated-inputs `(("libgnomecanvas" ,libgnomecanvas)))
     (native-inputs
      `(("gtkmm-2" ,gtkmm-2)
@@ -1906,7 +1909,7 @@ widgets built in the loading process.")
   ;; <https://mail.gnome.org/archives/devel-announce-list/2006-August/msg00005.html>.
   (package
     (name "libgnomeprint")
-    (version "2.8.2")
+    (version "2.18.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1914,7 +1917,7 @@ widgets built in the loading process.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "129ka3nn8gx9dlfry17ib79azxk45wzfv5rgqzw6dwx2b5ns8phm"))))
+                "14cnimvlc7ky22g2snyf4362412k3jk1syjf8b9887q5a63fqd0h"))))
     (build-system gnu-build-system)
     (inputs
      `(("popt" ,popt)
@@ -1937,7 +1940,7 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
   ;; Deprecated; see libgnomeprint.
   (package
     (name "libgnomeprintui")
-    (version "2.8.2")
+    (version "2.18.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1945,7 +1948,7 @@ since ca. 2006, when GTK+ itself incorporated printing support.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1ivipk7r61rg90p9kp889j28xlyyj6466ypvwa4jvnrcllnaajsw"))))
+                "0spl8vinb5n6n1krnfnr61dwaxidg67h8j94z9p59k2xdsvfashm"))))
     (build-system gnu-build-system)
     ;; Mentioned as Required in the .pc file
     (propagated-inputs `(("libgnomeprint" ,libgnomeprint)))
@@ -2010,7 +2013,7 @@ controls using the Bonobo component framework.")
 (define-public libwnck
   (package
     (name "libwnck")
-    (version "3.24.1")
+    (version "3.30.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2018,7 +2021,7 @@ controls using the Bonobo component framework.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "010zk9zvydggxqnxfml3scml5yxmpjy90irpqcayrzw26lldr9mg"))))
+                "0f9lvhm3w25046dqq8xyg7nzggxpmdriwrb661nng05a8qk0svdc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2164,7 +2167,7 @@ Hints specification (EWMH).")
      `(("bison" ,bison)
        ("docbook-xml" ,docbook-xml)
        ("intltool" ,intltool)
-       ("itstool" ,itstool)
+       ("itstool" ,itstool/fixed)            ;see <https://bugs.gnu.org/37468>
        ("glib:bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (home-page "http://www.gnumeric.org")
@@ -2218,7 +2221,7 @@ engineering.")
 (define-public seahorse
   (package
     (name "seahorse")
-    (version "3.20.0")
+    (version "3.30")
     (source
      (origin
        (method url-fetch)
@@ -2227,7 +2230,7 @@ engineering.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1py6fj19kb8aaxvg6yrpd0876azc2zjvis98aqz37a2lxmhp9c72"))))
+         "1sbj1czlx1fakm72dwgbn0bwm12j838yaky4mkf6hf8j8afnxmzp"))))
     (build-system glib-or-gtk-build-system)
     (inputs
      `(("gtk+" ,gtk+)
@@ -2254,7 +2257,7 @@ passwords in the GNOME keyring.")
 (define-public vala
   (package
     (name "vala")
-    (version "0.40.9")
+    (version "0.44.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2262,7 +2265,7 @@ passwords in the GNOME keyring.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0yvaijkpahzz26sa37cyzbj75a9vbcbgvxbqzzb7hbcvfy009zy7"))))
+                "0zy2kfcvhikczfzhk5l7pkw6mvn3d6vw8cv7g08iah85p22q33xv"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -2281,8 +2284,6 @@ passwords in the GNOME keyring.")
        ("flex" ,flex)
        ("bison" ,bison)
        ("xsltproc" ,libxslt)
-       ("grep" ,grep)
-       ("sed" ,sed)
        ("dbus" ,dbus)                                     ; for dbus tests
        ("gobject-introspection" ,gobject-introspection))) ; for gir tests
     (inputs
@@ -2301,7 +2302,7 @@ libraries written in C.")
 (define-public vte
   (package
     (name "vte")
-    (version "0.52.2")
+    (version "0.56.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2309,7 +2310,7 @@ libraries written in C.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1br6kg0wzf1wmww1hadihhcpqbamalqmbppfdzjvzk1ayp75f9hg"))))
+                "0j166gic5znssdb9r45qazq4kb4v9fial82czand5wa8i2yd988p"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2348,7 +2349,6 @@ editors, IDEs, etc.")
     (native-inputs
      `(("gtk-doc" ,gtk-doc)
        ("gperf" ,gperf)
-       ("gcc" ,gcc-7)
        ("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
@@ -2357,9 +2357,6 @@ editors, IDEs, etc.")
      `(#:phases (modify-phases %standard-phases
                   (replace 'bootstrap
                     (lambda _
-                      ;; Work around GCC7 problem: <https://bugs.gnu.org/30756>.
-                      (for-each unsetenv '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
-
                       (setenv "NOCONFIGURE" "true")
                       (invoke "sh" "autogen.sh"))))))
   (synopsis "Enhanced VTE terminal widget")
@@ -2627,7 +2624,7 @@ library.")
 (define-public glib-networking
   (package
     (name "glib-networking")
-    (version "2.58.0")
+    (version "2.60.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/glib-networking/"
@@ -2635,26 +2632,17 @@ library.")
                                   "glib-networking-" version ".tar.xz"))
               (sha256
                (base32
-                "0s006gs9nsq6mg31spqha1jffzmp6qjh10y27h0fxf1iw1ah5ymx"))
-              (patches (search-patches "glib-networking-connection.patch"))))
+                "1mfw44qpmwvz6yzj8c6spx6z357wrmkk15byrkc5byagd82860fm"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Dlibproxy_support=false")
-       #:phases (modify-phases %standard-phases
-                  (add-before 'check 'disable-TLSv1.3
-                    (lambda _
-                      ;; XXX: One test fails when TLS 1.3 is enabled, fixed in 2.60.0:
-                      ;; <https://gitlab.com/gnutls/gnutls/issues/615>.
-                      (setenv "G_TLS_GNUTLS_PRIORITY" "NORMAL:-VERS-TLS1.3")
-                      #t)))))
+     `(#:configure-flags '("-Dlibproxy_support=false")))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
     (inputs
      `(("glib" ,glib)
        ("gnutls" ,gnutls)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("p11-kit" ,p11-kit)))
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
     (home-page "https://www.gnome.org")
     (synopsis "Network-related GIO modules")
     (description
@@ -2858,7 +2846,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 (define-public five-or-more
   (package
     (name "five-or-more")
-    (version "3.28.0")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
@@ -2867,7 +2855,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1fy4a7qdjqvabm0cl45d6xlx6hy4paxvm0b2paifff73bl250d5c"))))
+         "00d729p251kh96624i7qg2370r5mxwafs016i6hy01vsr71jzb9x"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2889,7 +2877,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 (define-public gnome-mines
   (package
     (name "gnome-mines")
-    (version "3.28.0")
+    (version "3.30.1.1")
     (source
      (origin
        (method url-fetch)
@@ -2898,7 +2886,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "16w55hqaxipcv870n9gpn6qiywbqbyg7bjshaa02r75ias8dfxvf"))))
+         "08ddk400sg1g3q26gnm5mgv81vdqyix0yl7pd47p50vkc1w6f33z"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -2927,7 +2915,7 @@ floating in an ocean using only your brain and a little bit of luck.")
 (define-public gnome-sudoku
   (package
     (name "gnome-sudoku")
-    (version "3.28.0")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
@@ -2936,7 +2924,7 @@ floating in an ocean using only your brain and a little bit of luck.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "07b4lzniaf3gjsss6zl1lslv18smwc4nrijykvn2z90f423q2xav"))))
+         "1xy986s51jnrcqwan2hy4bjdg6797yr9s7gxx2z2q4j4gkx3qa1f"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2962,7 +2950,7 @@ more fun.")
 (define-public gnome-terminal
   (package
     (name "gnome-terminal")
-    (version "3.28.2")
+    (version "3.30.3")
     (source
      (origin
        (method url-fetch)
@@ -2971,7 +2959,7 @@ more fun.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0ybjansg6lr279191w8z8r45gy4rxwzw1ajm98cgkv0fk2jdr0x2"))))
+         "0bar8qazk39acsif31h8i408nl82mzdcdg6p7ymak4l9pxyscxf8"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -3012,7 +3000,7 @@ keyboard shortcuts.")
 (define-public colord
   (package
     (name "colord")
-    (version "1.1.8")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
@@ -3020,38 +3008,42 @@ keyboard shortcuts.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "01w97rgzk4qi6fp03scq5jyw0ayx11b479p7dkm2r77k84b9agph"))))
-    (build-system glib-or-gtk-build-system)
+         "1xwxahg9mgmapc16xkb4kgmc40zpadrwav33xqmn6cgaw6g6d3ls"))))
+    (build-system meson-build-system)
     (arguments
-     '(;; The tests want to run valgrind.  Punt for now.
+     '(;; FIXME: One test fails:
+       ;; /colord/icc-store (in lib/colord/colord-self-test-private):
+       ;; Incorrect content type for /tmp/colord-vkve/already-exists.icc, got
+       ;; application/x-zerosize
        #:tests? #f
-       #:configure-flags (list "--localstatedir=/var"
-                               ;; GUSB not packaged yet.
-                               "--disable-gusb"
+       #:glib-or-gtk? #t
+       #:configure-flags (list "-Dlocalstatedir=/var"
                                ;; No dep on systemd.
-                               "--disable-systemd-login"
+                               "-Dsystemd=false"
                                ;; Wants to install to global completion dir;
                                ;; punt.
-                               "--disable-bash-completion"
+                               "-Dbash_completion=false"
                                ;; colord-gtk not packaged yet.
-                               "--disable-session-example"
-                               "--with-daemon-user=colord"
-                               "--enable-sane"
-                               (string-append "--with-udevrulesdir="
-                                              (assoc-ref %outputs "out")
-                                              "/lib/udev/rules.d"))
+                               "-Dsession_example=false"
+                               "-Ddaemon_user=colord"
+                               "-Dsane=true"
+                               ;; Requires spotread
+                               "-Dargyllcms_sensor=false"
+                               ;; TODO: Requires docbook2x
+                               "-Dman=false")
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'patch-/bin/true
-                     (lambda _
-                       (substitute* "configure"
-                         (("/bin/true") (which "true")))
-                       (substitute* "src/Makefile.in"
-                         (("if test -w \\$\\(DESTDIR\\)\\$\\(prefix\\)/;")
-                          "if test -w $(DESTDIR)$(localstatedir);")))))))
+         (add-before 'configure 'patch-build-system
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "rules/meson.build"
+               (("udev.get_pkgconfig_variable\\('udevdir'\\)")
+                (string-append "'" (assoc-ref outputs "out") "/lib/udev'")))
+             #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
        ("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)
        ("libtool" ,libtool)
        ("intltool" ,intltool)))
     (propagated-inputs
@@ -3061,10 +3053,12 @@ keyboard shortcuts.")
        ("lcms" ,lcms)))
     (inputs
      `(("dbus-glib" ,dbus-glib)
+       ("gusb" ,gusb)
        ("libgudev" ,libgudev)
        ("libusb" ,libusb)
        ("sqlite" ,sqlite)
        ("polkit" ,polkit)
+       ("python" ,python-wrapper)
        ("sane-backends" ,sane-backends)))
     (home-page "https://www.freedesktop.org/software/colord/")
     (synopsis "Color management service")
@@ -3218,7 +3212,7 @@ service via the system message bus.")
 (define-public libgweather
   (package
     (name "libgweather")
-    (version "3.28.2")
+    (version "3.28.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3226,7 +3220,7 @@ service via the system message bus.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xfy5ghwvnz2g9074dy6512m4z2pv66pmja14vhi9imgacbfh708"))))
+                "1xz60h59zgyk61y2wwzm0xlqav72i668g7v0x7rh9idz240hxls5"))))
     (build-system meson-build-system)
     (arguments
      `(#:tests? #f ; one of two tests requires network access
@@ -3260,7 +3254,7 @@ services for numerous locations.")
 (define-public gnome-settings-daemon
   (package
     (name "gnome-settings-daemon")
-    (version "3.28.1")
+    (version "3.30.2")
     (source
      (origin
        (method url-fetch)
@@ -3269,7 +3263,7 @@ services for numerous locations.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0z9dip9p0iav646cmxisii5sbkdr9hmaklc5fzvschpbjkhphksr"))))
+         "0c663csa3gnsr6wm0xfll6aani45snkdj7zjwjfzcwfh8w4a3z12"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -3327,7 +3321,7 @@ settings, themes, mouse settings, and startup of other daemons.")
 (define-public totem-pl-parser
  (package
    (name "totem-pl-parser")
-   (version "3.26.1")
+   (version "3.26.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/totem-pl-parser/"
@@ -3335,7 +3329,7 @@ settings, themes, mouse settings, and startup of other daemons.")
                                 "totem-pl-parser-" version ".tar.xz"))
             (sha256
              (base32
-              "0k5pnka907invgds48d73c1xx1a366v5dcld3gr2l1dgmjwc9qka"))))
+              "13a45py2j1r9967zgww8kd24bn2fhycd4m3kzr90sxx9l2w03z8f"))))
    (build-system meson-build-system)
    (arguments
     ;; FIXME: Tests require gvfs.
@@ -3352,8 +3346,7 @@ settings, themes, mouse settings, and startup of other daemons.")
       ("libgcrypt" ,libgcrypt)
       ("libxml2" ,libxml2)))
    (inputs
-    `(("nettle" ,nettle)
-      ("libsoup" ,libsoup)))
+    `(("libsoup" ,libsoup)))
    (home-page "https://projects.gnome.org/totem")
    (synopsis "Library to parse and save media playlists for GNOME")
    (description "Totem-pl-parser is a GObjects-based library to parse and save
@@ -3396,10 +3389,41 @@ playlists in a variety of formats.")
 which are easy to play with the aid of a mouse.")
     (license license:gpl3+)))
 
+(define-public amtk
+  (package
+    (name "amtk")
+    (version "5.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1zriix7bdwcg0868mfc7jy6zbwjwdmjwbh0ah6dbddrhiabrda8j"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-gtk-doc")))
+    (native-inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("glib:bin" ,glib "bin") ; for glib-mkenums
+       ("gtk-doc" ,gtk-doc)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)))
+    (home-page "https://wiki.gnome.org/Projects/Amtk")
+    (synopsis "Actions, Menus and Toolbars Kit for GTK+ applications")
+    (description
+     "Amtk is the acronym for @acronym{Amtk, Actions Menus and Toolbars Kit}.
+It is a basic GtkUIManager replacement based on GAction.  It is suitable for
+both a traditional UI or a modern UI with a GtkHeaderBar.")
+    (license license:lgpl2.1+)))
+
 (define-public devhelp
   (package
     (name "devhelp")
-    (version "3.28.1")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3407,14 +3431,18 @@ which are easy to play with the aid of a mouse.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "08a8xizjqz68k30zd37r7g516azhan9bbrjsvv10hjd5dg3f476s"))))
-    (build-system glib-or-gtk-build-system)
+                "036sddvhs0blqpc2ixmjdl9vxynvkn5jpgn0jxr1fxcm4rh3q07a"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("intltool" ,intltool)
        ("itstool" ,itstool)
+       ("gobject-introspection" ,gobject-introspection)
+       ("glib:bin" ,glib "bin") ; for glib-mkmenus
+       ("gtk+:bin" ,gtk+ "bin")  ; for gtk-update-icon-cache
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+     `(("amtk" ,amtk)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("webkitgtk" ,webkitgtk)))
     (home-page "https://wiki.gnome.org/Apps/Devhelp")
     (synopsis "API documentation browser for GNOME")
@@ -3682,7 +3710,7 @@ queries upon that data.")
 (define-public libgnome-games-support
   (package
     (name "libgnome-games-support")
-    (version "1.4.1")
+    (version "1.4.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3690,7 +3718,7 @@ queries upon that data.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1j7lfcnc29lgn8ppn13wkn9w2y1n3lsapagwp91zh3bf0h2h4hv1"))))
+                "02hirpk885jndwarbl3cl5fk7w2z5ziv677csyv1wi2n6rmpn088"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -3773,7 +3801,6 @@ as possible!")
        ("libxml2" ,libxml2)
        ("liboauth" ,liboauth)
        ("libsoup" ,libsoup)
-       ("nettle" ,nettle)
        ("totem-pl-parser" ,totem-pl-parser)))
     (arguments
      `(#:phases
@@ -3822,7 +3849,6 @@ for application developers.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("grilo" ,grilo)
-       ("nettle" ,nettle) ; XXX: required by libgrlpls-0.3.la
        ("glib" ,glib)
        ("libxml2" ,libxml2)
        ("sqlite" ,sqlite)
@@ -3857,7 +3883,7 @@ for application developers.")
 (define-public totem
   (package
     (name "totem")
-    (version "3.26.2")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
@@ -3866,7 +3892,7 @@ for application developers.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1llyisls3pzf5bwkpxyfyxc2d3gpa09n5pjy7qsjdqrp3ya4k36g"))
+         "0rahkybxbmxhlmrrgrzxny1xm7wycx7ib4blxp1i2l1q3i8s84b0"))
        (patches (search-patches "totem-meson-easy-codec.patch"
                                 "totem-meson-compat.patch"))))
     (build-system meson-build-system)
@@ -3905,15 +3931,12 @@ for application developers.")
        ("gst-plugins-good" ,gst-plugins-good)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("adwaita-icon-theme" ,adwaita-icon-theme)
-       ;; XXX We use python-2 because libxml2 because itstool (which needs
-       ;; libxml) currently uses python-2.
-       ("python" ,python-2)
+       ("python" ,python)
        ("python-pygobject" ,python2-pygobject)
        ;; XXX TODO pylint needed for python support
        ("totem-pl-parser" ,totem-pl-parser)
        ("grilo" ,grilo)
        ("grilo-plugins" ,grilo-plugins)
-       ("nettle" ,nettle)
        ("vala" ,vala)))
     (arguments
      `(#:glib-or-gtk? #t
@@ -4015,7 +4038,6 @@ which can read a large number of file formats.")
       ("python-pygobject" ,python2-pygobject)
       ("vala" ,vala)
       ("gmime" ,gmime)
-      ("nettle" ,nettle)
       ("adwaita-icon-theme" ,adwaita-icon-theme)
       ("grilo" ,grilo)
       ("grilo-plugins" ,grilo-plugins)
@@ -4051,7 +4073,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
 (define-public eog
  (package
    (name "eog")
-   (version "3.28.2")
+   (version "3.28.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4059,7 +4081,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1gasrfqi7qrzdq1idh29r0n6ikkqjb6pbp7a8k5krfz5hkhyfin0"))))
+              "1wrq3l3z0x6q0hnc1vqr2hnyb1b14qw6aqvc5dldfgbs0yys6p55"))))
    (build-system meson-build-system)
    (arguments
     `(#:configure-flags
@@ -4182,7 +4204,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
 (define-public gvfs
   (package
     (name "gvfs")
-    (version "1.36.2")
+    (version "1.40.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gvfs/"
@@ -4190,21 +4212,20 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
                                   "gvfs-" version ".tar.xz"))
               (sha256
                (base32
-                "1xq105596sk9yram5a143b369wpaiiwc9gz86n0j1kfr7nipkqn4"))))
-    (build-system gnu-build-system)
+                "1cfnzamr4mvgpf6yhm28lh9cafy9z6842s8jpbqnfizfxybg8ylj"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:tests? #f ; XXX: requiring `pidof'
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-broken-autogen-script
-           (lambda _ (delete-file "autogen.sh") #t)))))
+     '(#:glib-or-gtk? #t
+       #:configure-flags
+       (list "-Dsystemduserunitdir=no"
+             "-Dtmpfilesdir=no"
+             ;; Otherwise, the RUNPATH will lack the final path component.
+             (string-append "-Dc_link_args=-Wl,-rpath="
+                            (assoc-ref %outputs "out") "/lib/gvfs"))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
        ("gettext" ,gettext-minimal)
        ("gtk-doc" ,gtk-doc)
-       ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
        ("xsltproc" ,libxslt)))
     (inputs
@@ -4212,23 +4233,27 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
        ("docbook-xml" ,docbook-xml-4.2)
        ("docbook-xsl" ,docbook-xsl)
        ("dbus" ,dbus)
+       ("elogind" ,elogind)
        ("fuse" ,fuse)
        ("gcr" ,gcr)
        ("glib" ,glib)
+       ("gnome-online-accounts" ,gnome-online-accounts)
        ("libarchive" ,libarchive)
        ("libbluray" ,libbluray)
        ("libcap" ,libcap)
        ("libcdio-paranoia" ,libcdio-paranoia)
        ("libgcrypt" ,libgcrypt)
+       ("libgdata" ,libgdata)
        ("libgphoto2" ,libgphoto2)
        ("libgudev" ,libgudev)
        ("libimobiledevice" ,libimobiledevice)
        ("libmtp" ,libmtp)
+       ("libnfs" ,libnfs)
        ("libsecret" ,libsecret)
        ("libsmbclient" ,samba)
        ("libsoup" ,libsoup)
        ("libxml2" ,libxml2)
-       ("nettle" ,nettle) ; XXX: required by libarchive.pc
+       ("openssh" ,openssh)
        ("polkit" ,polkit)
        ("udisks" ,udisks)))
     (home-page "https://wiki.gnome.org/gvfs/")
@@ -4351,7 +4376,6 @@ work and the interface is well tested.")
                     ;; These libraries must be on LD_LIBRARY_PATH.
                     (libs '("gtkspell3" "webkitgtk" "libsoup" "libsecret"
                             "atk" "gtk+" "gsettings-desktop-schemas"
-                            "gcc:lib" ; needed b/c webkitgtk is built with gcc-7
                             "gobject-introspection"))
                     (path (string-join
                            (map (lambda (lib)
@@ -4364,8 +4388,7 @@ work and the interface is well tested.")
                  `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
              #t)))))
     (native-inputs
-     `(("gcc:lib" ,gcc-7 "lib") ; needed because webkitgtk is built with gcc-7
-       ("intltool" ,intltool)
+     `(("intltool" ,intltool)
        ("itstool" ,itstool)
        ("pkg-config" ,pkg-config)
        ("python" ,python)
@@ -4386,7 +4409,7 @@ work and the interface is well tested.")
        ("libsecret" ,libsecret)
        ("gtkspell3" ,gtkspell3)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk-2.26)))
+       ("webkitgtk" ,webkitgtk)))
     (home-page "https://wiki.gnome.org/Apps/Eolie")
     (synopsis "Web browser for GNOME")
     (description
@@ -4397,7 +4420,7 @@ a secret password store, an adblocker, and a modern UI.")
 (define-public epiphany
   (package
     (name "epiphany")
-    (version "3.28.3.1")
+    (version "3.30.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/epiphany/"
@@ -4405,7 +4428,7 @@ a secret password store, an adblocker, and a modern UI.")
                                   "epiphany-" version ".tar.xz"))
               (sha256
                (base32
-                "1xz6xl6b0iihvczyr0cs1z5ifvpai6anb4m0ng1caiph06klc1b9"))))
+                "0nk0krzrfck6hhfs52f4sjmj93yjyvabm72bq8i8f9l1pass5vgd"))))
 
     (build-system meson-build-system)
     (arguments
@@ -4424,7 +4447,6 @@ a secret password store, an adblocker, and a modern UI.")
      `(("dconf" ,dconf)))
     (native-inputs
      `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
-       ("gcc" ,gcc-7)  ; needed because webkitgtk-2.22 is compiled with gcc-7
        ("glib:bin" ,glib "bin") ; for glib-mkenums
        ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
        ("intltool" ,intltool)
@@ -4440,12 +4462,13 @@ a secret password store, an adblocker, and a modern UI.")
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("json-glib" ,json-glib)
        ("iso-codes" ,iso-codes)
+       ("libdazzle" ,libdazzle)
        ("libnotify" ,libnotify)
        ("libsecret" ,libsecret)
        ("libxslt" ,libxslt)
        ("nettle" ,nettle) ; for hogweed
        ("sqlite" ,sqlite)
-       ("webkitgtk" ,webkitgtk-2.26)))
+       ("webkitgtk" ,webkitgtk)))
     (home-page "https://wiki.gnome.org/Apps/Web")
     (synopsis "GNOME web browser")
     (description
@@ -4515,7 +4538,7 @@ of running programs and invoke methods on those interfaces.")
 (define-public yelp-xsl
   (package
     (name "yelp-xsl")
-    (version "3.28.0")
+    (version "3.32.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4523,7 +4546,7 @@ of running programs and invoke methods on those interfaces.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "14rznm1qpsnmkwksnkd5j7zplakl01kvrcw0fdmd5gdc65xz9kcc"))))
+                "013z2ixx9kfrs6hq79qpil093xfbc12y1p0mvsh6lpala30iphya"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
@@ -4539,7 +4562,7 @@ to format Docbook and Mallard documents.")
 (define-public yelp
   (package
     (name "yelp")
-    (version "3.28.1")
+    (version "3.30.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4547,7 +4570,7 @@ to format Docbook and Mallard documents.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "033w5qnhm495pnvscnb3k2dagzgq4fsnzcrh0k2rgr10mw2mv2p8"))))
+                "060a902j15k76fyhk8xfl38ipvrrcc0qd7nm2mcck4ifb45b0zv4"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
@@ -4641,7 +4664,7 @@ classes for commonly used data structures.")
 (define-public gexiv2
   (package
     (name "gexiv2")
-    (version "0.10.10")
+    (version "0.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4649,19 +4672,13 @@ classes for commonly used data structures.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1qbcwq89g4r67k1dj4laqj441pj4195c8hzhxn8vc6mmg8adg6kx"))))
+                "0slj5yj8c90l9pp5i3z74x5r3r4da0xfmbzkfq5k0dkg72q3kxaq"))))
     (build-system meson-build-system)
-    (arguments
-     ;; On 32-bit platforms, the test fails with a rounding error:
-     ;; <https://bugzilla.gnome.org/show_bug.cgi?id=775249>.  Just skip it for
-     ;; now.
-     (if (and (not (%current-target-system))
-              (member (%current-system) '("i686-linux" "armhf-linux")))
-         '(#:tests? #f)
-         '()))
     (native-inputs
-     `(("glib" ,glib "bin")
-       ("pkg-config" ,pkg-config)))
+     `(("gcr" ,gcr)
+       ("glib" ,glib "bin")
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
     (propagated-inputs
      ;; Listed in "Requires" section of gexiv2.pc
      `(("exiv2" ,exiv2)))
@@ -4679,7 +4696,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.28.4")
+    (version "0.30.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4687,16 +4704,18 @@ metadata in photo and video files of various formats.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "03k7n2kmzqn11kf3733w7m6xjh2b5q9xr84za2hli11fjymzaxm9"))))
-    (build-system glib-or-gtk-build-system)
+                "1yiz3j0y2yg6985y3alb3hpkfbv68n8ibys5gpwcjdhmhf3czg5p"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t))
     (propagated-inputs
      `(("dconf" ,dconf)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("itstool" ,itstool)
+     `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
        ("gettext" ,gettext-minimal)
        ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
        ("itstool" ,itstool)
+       ("pkg-config" ,pkg-config)
        ("vala" ,vala)))
     (inputs
      `(("glib:bin" ,glib "bin")
@@ -4726,7 +4745,7 @@ share them with others via social networking and more.")
 (define-public file-roller
   (package
     (name "file-roller")
-    (version "3.28.0")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4734,7 +4753,7 @@ share them with others via social networking and more.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "15pn2m80x45bzibig4zrqybnbr0n1f9wpqx7f2p6difldns3jwf1"))))
+                "0kiragsqyixyx15747b71qc4nw8y4jx9d55wgg612xb0hp5l9pj1"))))
     (build-system meson-build-system)
     (native-inputs
      `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
@@ -4749,7 +4768,6 @@ share them with others via social networking and more.")
        ("json-glib" ,json-glib)
        ("libarchive" ,libarchive)
        ("libnotify" ,libnotify)
-       ("nettle" ,nettle)
        ("itstool" ,itstool)
        ("libxml2" ,libxml2)))
     (synopsis "Graphical archive manager for GNOME")
@@ -4762,7 +4780,7 @@ such as gzip tarballs.")
 (define-public gnome-session
   (package
     (name "gnome-session")
-    (version "3.28.1")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4770,7 +4788,7 @@ such as gzip tarballs.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "14nmbirgrp2nm16khbz109saqdlinlbrlhjnbjydpnrlimfgg4xq"))))
+                "0fbpq103md4g9gi67rxnwvha21629nxx7qazddy6q6494sbqbzpa"))))
     (arguments
      '(#:glib-or-gtk? #t
        #:phases
@@ -4795,14 +4813,6 @@ such as gzip tarballs.")
                    (out  (assoc-ref outputs "out")))
                (wrap-program (string-append out "/bin/gnome-session")
                  `("PATH" ":" prefix (,(string-append glib "/bin"))))
-               #t)))
-         (add-after 'install 'add-absolute-paths-to-desktop-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out")))
-               (substitute* (map (lambda (x)
-                                   (string-append out "/share/xsessions/" x))
-                                 '("gnome.desktop" "gnome-xorg.desktop"))
-                 (("gnome-session") (string-append out "/bin/gnome-session")))
                #t))))
 
        #:configure-flags
@@ -4841,7 +4851,7 @@ configuration program to choose applications starting on login.")
 (define-public gjs
   (package
     (name "gjs")
-    (version "1.52.3")
+    (version "1.56.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4849,7 +4859,7 @@ configuration program to choose applications starting on login.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1z4n15wdz6pbqd2hfzrqc8mmprhv50v4jk43p08v0xv07yldh8ff"))))
+                "1b5321krn89p3f7s2ik6gpfnc61apzljhlnbqky8c88f7n6832ac"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -4869,6 +4879,9 @@ configuration program to choose applications starting on login.")
             (substitute* "installed-tests/js/testLocale.js"
               ((".*toBeDefined.*") "")
               ((".*expect\\(datestr\\).*") ""))
+            (substitute* "installed-tests/scripts/testCommandLine.sh"
+              (("Valentín") "")
+              (("☭") ""))
             #t)))))
     (native-inputs
      `(("glib:bin" ,glib "bin")       ; for glib-compile-resources
@@ -4882,7 +4895,7 @@ configuration program to choose applications starting on login.")
      ;; These are all in the Requires.private field of gjs-1.0.pc.
      `(("cairo" ,cairo)
        ("gobject-introspection" ,gobject-introspection)
-       ("mozjs" ,mozjs-52)))
+       ("mozjs" ,mozjs-60)))
     (inputs
      `(("gtk+" ,gtk+)
        ("readline" ,readline)))
@@ -4896,7 +4909,7 @@ javascript engine and the GObject introspection framework.")
 (define-public gedit
   (package
     (name "gedit")
-    (version "3.28.1")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4904,7 +4917,7 @@ javascript engine and the GObject introspection framework.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0791r07d3ixmmfk68lvhp3d5i4vnlrnx10csxwgpfqyfb04vwx7i"))))
+                "0qwig35hzvjaqic9x92jcpmycnvcybsbnbiw6rppryx0arwb3wza"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
@@ -4956,7 +4969,7 @@ powerful general purpose text editor.")
 (define-public zenity
   (package
     (name "zenity")
-    (version "3.28.1")
+    (version "3.30.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4964,7 +4977,7 @@ powerful general purpose text editor.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0swavrkc5ps3fwzy6h6l5mmim0wwy10xrq0qqkay5d0zf9a965yv"))))
+                "1wipnp46pd238z9ck5rsckbaw7yla6c936fswq5w94k4c6bgcplr"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -4983,7 +4996,7 @@ to display dialog boxes from the commandline and shell scripts.")
 (define-public mutter
   (package
     (name "mutter")
-    (version "3.28.2")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4991,7 +5004,7 @@ to display dialog boxes from the commandline and shell scripts.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0ighs1zvlssgq16v1h3vg280za7y448snq65gc5m1zmqqawqkymg"))))
+                "0qr3w480p31nbiad49213rj9rk6p9fl82a68pzznpz36p30dq96z"))))
     ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
     ;; versions of cogl and clutter.  As a result, many of the inputs,
     ;; propagated-inputs, and configure flags used in cogl and clutter are
@@ -5086,7 +5099,7 @@ window manager.")
 (define-public gnome-online-accounts
   (package
     (name "gnome-online-accounts")
-    (version "3.28.0")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5094,7 +5107,7 @@ window manager.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "035lmm21imr7ddpzffqabv53g3ggjscmqvlzy3j1qkv00zrlxg47"))))
+                "1p1gdgryziklrgngn6m13xnvfx4gb01h723nndfi9944r24fbiq5"))))
     (outputs '("out" "lib"))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -5111,6 +5124,9 @@ window manager.")
                  (("@libdir@") (string-append lib "/lib"))
                  (("@includedir@") (string-append lib "/include"))
                  (("@datadir@") (string-append lib "/share")))
+               ;; Make sure gobject-introspection knows about the output
+               ;; too (see <https://bugs.gnu.org/36535>).
+               (setenv "outputs" "out lib")
                #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@@ -5139,25 +5155,22 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
 (define-public evolution-data-server
   (package
     (name "evolution-data-server")
-    (version "3.28.3")
+    (version "3.30.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version) "/"
                                   name "-" version ".tar.xz"))
+              (patches (search-patches "evolution-data-server-locales.patch"))
               (sha256
                (base32
-                "11sq795115vrcgxl9svscm6wg8isjj784c3d84qzb6z47zq92zj3"))))
-    (outputs '("out" "libedataserverui"))
+                "1s952wyhgcbmq9nfgk75v15zdy1h3wy5p5rmkqibaavmc0pk3mli"))))
     (build-system cmake-build-system)
     (arguments
-     '(;; XXX FIXME: 11/85 tests are failing.
-       #:tests? #f
-       #:configure-flags
-       (let* ((lib (string-append (assoc-ref %outputs "out")
-                                  "/lib"))
-              (runpaths (map (lambda (s) (string-append
-                                          lib "/evolution-data-server/" s))
+     '(#:configure-flags
+       (let* ((lib (string-append (assoc-ref %outputs "out") "/lib"))
+              (runpaths (map (lambda (s)
+                               (string-append lib "/evolution-data-server/" s))
                              '("addressbook-backends" "calendar-backends"
                                "camel-providers" "credential-modules"
                                "registry-modules"))))
@@ -5165,22 +5178,31 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                "-DENABLE_GOOGLE=OFF"          ;disable Google Contacts support
                "-DENABLE_GOOGLE_AUTH=OFF"     ;disable Google authentication
                "-DENABLE_VALA_BINDINGS=ON"
-               ;; FIXME: Building against ICU 60 requires C++11 or higher.  Remove
-               ;; "-std=gnu++11" when our default compiler is >= GCC6.
-               ;; FIXME: Temporarily use "-DU_USING_ICU_NAMESPACE=1" until
-               ;; evolution-data-server has been updated to qualify ICU types
-               ;; explicitly, as required by ICU 61 and later.  See:
-               ;; <https://ssl.icu-project.org/repos/icu/trunk/icu4c/readme.html#RecBuild>
-               "-DCMAKE_CXX_FLAGS=-std=gnu++11 -DU_USING_ICU_NAMESPACE=1"
                (string-append "-DCMAKE_INSTALL_RPATH=" lib ";"
                               (string-append lib "/evolution-data-server;")
                               (string-join runpaths ";"))
                "-DENABLE_INTROSPECTION=ON"))  ;required for Vala bindings
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-tests
+           (lambda _
+             ;; tests/book-migration/test-migration.c:160:test_fetch_contacts:
+             ;; assertion failed (g_slist_length (contacts) == 20): (0 == 20)
+             (delete-file-recursively "tests/book-migration")
+             (substitute* "tests/CMakeLists.txt"
+               (("add_subdirectory\\(book-migration\\)") ""))
+             ;; tests/libedata-cal/test-cal-meta-backend.c:1328:test_get_attachment_uris:
+             ;; assertion failed (uris->data == expected_uri):
+             ;; ("" == "file:///tests/libedata-cal/components/event-1.ics")
+             (substitute* "tests/libedata-cal/CMakeLists.txt"
+               (("test-cal-meta-backend") ""))
+             #t))
          (add-after 'unpack 'patch-paths
           (lambda _
-            (substitute* "tests/test-server-utils/e-test-server-utils.c"
+            (substitute* '("tests/test-server-utils/e-test-server-utils.c"
+                           "tests/libedata-book/data-test-utils.c"
+                           "tests/libedata-book/test-book-cache-utils.c"
+                           "tests/libedata-cal/test-cal-cache-utils.c")
               (("/bin/rm") (which "rm")))
             #t))
          (add-before 'configure 'dont-override-rpath
@@ -5189,28 +5211,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                ;; CMakeLists.txt hard-codes runpath to just the libdir.
                ;; Remove it so the configure flag is respected.
                (("SET\\(CMAKE_INSTALL_RPATH .*") ""))
-             #t))
-         (add-after 'install 'split
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (libedsui (assoc-ref outputs "libedataserverui")))
-               (for-each (lambda (file)
-                           (mkdir-p (dirname (string-append libedsui file)))
-                           (rename-file (string-append out file)
-                                        (string-append libedsui file)))
-                         '("/lib/pkgconfig/libedataserverui-1.2.pc"
-                           "/lib/libedataserverui-1.2.so"
-                           "/lib/libedataserverui-1.2.so.2"
-                           "/lib/libedataserverui-1.2.so.2.0.0"
-                           "/lib/girepository-1.0/EDataServerUI-1.2.typelib"
-                           "/include/evolution-data-server/libedataserverui"
-                           "/share/gir-1.0/EDataServerUI-1.2.gir"
-                           "/share/vala/vapi/libedataserverui-1.2.vapi"
-                           "/share/vala/vapi/libedataserverui-1.2.deps"))
-               (substitute* (string-append libedsui "/lib/pkgconfig/"
-                                           "libedataserverui-1.2.pc")
-                 ((out) libedsui))
-               #t))))))
+             #t)))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -5232,6 +5233,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
        ("gcr" ,gcr)
        ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("json-glib" ,json-glib)
+       ("libcanberra" ,libcanberra)
        ("libgweather" ,libgweather)
        ("mit-krb5" ,mit-krb5)
        ("openldap" ,openldap)
@@ -5312,7 +5314,7 @@ users.")
 (define-public network-manager
   (package
     (name "network-manager")
-    (version "1.10.10")
+    (version "1.14.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/NetworkManager/"
@@ -5321,20 +5323,13 @@ users.")
               (patches (search-patches "nm-plugin-path.patch"))
               (sha256
                (base32
-                "1jn3g0f2x1irc88awqp8m3gnpdx1whqqqbdgkbgr4x55s702jki4"))
+                "064cgj9za0kzarks0lrv0qw2ysdphb5l97iw0c964bfiqzjfv8rm"))
+              (modules '((guix build utils)))
               (snippet
-              '(begin
-                 (use-modules (guix build utils))
-                 (substitute* "configure"
-                   ;; Replace libsystemd-login with libelogind.
-                   (("libsystemd-login") "libelogind"))
-                 (substitute* "src/devices/wwan/nm-modem-manager.c"
-                   (("systemd") "elogind"))
-                 (substitute* "src/nm-session-monitor.c"
-                   (("systemd") "elogind"))
-                 (substitute* "./src/nm-logging.c"
-                   (("systemd") "elogind"))
-                 #t))))
+               '(begin
+                  (substitute* "src/devices/wwan/nm-modem-manager.c"
+                    (("systemd") "elogind"))
+                  #t))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc")) ; 8 MiB of gtk-doc HTML
@@ -5344,7 +5339,10 @@ users.")
              (doc      (assoc-ref %outputs "doc"))
              (dhclient (string-append (assoc-ref %build-inputs "isc-dhcp")
                                       "/sbin/dhclient")))
-         (list "--with-systemd-logind=yes" ;In Guix System, this is provided by elogind.
+         (list "--with-libnm-glib" ; needed by network-manager-applet
+               "--with-systemd-journal=no"
+               "--with-session-tracking=elogind"
+               "--with-suspend-resume=elogind"
                "--with-consolekit=no"
                "--with-crypto=gnutls"
                "--disable-config-plugin-ibft"
@@ -5359,6 +5357,13 @@ users.")
                (string-append "--with-dhclient=" dhclient)))
        #:phases
        (modify-phases %standard-phases
+         ;; This bare "ls" invocation breaks some tests.
+         (add-after 'unpack 'patch-ls-invocation
+           (lambda _
+             (substitute* "build-aux/ltmain.sh"
+               (("`ls -")
+                (string-append "`" (which "ls") " -")))
+             #t))
          (add-before 'configure 'pre-configure
            (lambda _
              ;; These tests try to test aspects of network-manager's
@@ -5371,26 +5376,24 @@ users.")
                (("src/platform/tests/test-cleanup-linux") " ")
                (("src/platform/tests/test-link-linux") " ")
                (("src/platform/tests/test-route-linux") " ")
+               (("src/devices/tests/test-acd") "")
                (("src/devices/tests/test-arping") " ")
                (("src/devices/tests/test-lldp") " ")
                (("src/tests/test-route-manager-linux") " "))
              #t))
          (add-after 'unpack 'delete-failing-tests
            (lambda _
-             ;; FIXME: These four tests fail for unknown reasons.
+             ;; FIXME: These three tests fail for unknown reasons.
              ;; ERROR:libnm-core/tests/test-general.c:5842:
              ;;   _json_config_check_valid: assertion failed (res == expected): (1 == 0)
              ;; ERROR:libnm-core/tests/test-keyfile.c:647:
              ;;   test_team_conf_read_invalid: assertion failed: (nm_setting_team_get_config (s_team) == NULL)
              ;; ERROR:libnm-core/tests/test-setting.c:907:
              ;;   _test_team_config_sync: assertion failed: (nm_streq0 (nm_setting_team_get_runner (s_team), runner))
-             ;; NetworkManager:ERROR:src/platform/tests/test-nmp-object.c:397:
-             ;;   test_cache_link: assertion failed: (nmp_object_is_visible (obj_new))
              (substitute* "Makefile.in"
                (("libnm-core/tests/test-general") " ")
                (("libnm-core/tests/test-keyfile") " ")
-               (("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " ")
-               (("src/platform/tests/test-nmp-object") " "))
+               (("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " "))
              #t))
          (add-before 'check 'pre-check
            (lambda _
@@ -5421,7 +5424,8 @@ users.")
        ("python-dbus" ,python-dbus)
        ("python-pygobject" ,python-pygobject)))
     (inputs
-     `(("curl" ,curl)
+     `(("coreutils" ,coreutils) ; for ls
+       ("curl" ,curl)
        ("cyrus-sasl" ,cyrus-sasl)
        ("dbus-glib" ,dbus-glib)
        ("dnsmasq" ,dnsmasq)
@@ -5629,7 +5633,7 @@ Cisco's AnyConnect SSL VPN.")
 (define-public network-manager-applet
   (package
     (name "network-manager-applet")
-    (version "1.8.14")
+    (version "1.8.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5637,29 +5641,15 @@ Cisco's AnyConnect SSL VPN.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1js0i2kwfklahsn77qgxzdscy33drrlym3mrj1qhlw0zf8ri56ya"))))
-    (build-system glib-or-gtk-build-system)
-    (arguments '(#:configure-flags '("--disable-migration")
-                 #:phases
-                 (modify-phases %standard-phases
-                   (add-after 'unpack 'patch-source
-                     (lambda* (#:key inputs #:allow-other-keys)
-                       (let ((mbpi (assoc-ref inputs
-                                              "mobile-broadband-provider-info"))
-                             (iso-codes (assoc-ref inputs "iso-codes")))
-                         (substitute* "src/libnma/nma-mobile-providers.c"
-                           (("(g_build_filename \\()dirs\\[i\\].*,\
- (MOBILE_BROADBAND_PROVIDER_INFO.*)" all start end)
-                            (string-append start "\"" mbpi "/share\", " end)))
-                         (substitute* "src/libnma/nma-mobile-providers.c"
-                           (("(g_build_filename \\()dirs\\[i\\].*,\
- (ISO_3166_COUNTRY_CODES.*)" all start end)
-                            (string-append start "\"" iso-codes
-                                           "/share\", " end)))
-                         #t))))))
+                "0y31g0lxr93370xi74hbpvcy9m81n5wdkdhq8xy2nqp0y4219p13"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t))
     (native-inputs
      `(("intltool" ,intltool)
+       ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
        ("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)
        ("pkg-config" ,pkg-config)))
     (propagated-inputs
      ;; libnm-gtk.pc refers to all these.
@@ -5667,7 +5657,8 @@ Cisco's AnyConnect SSL VPN.")
        ("gtk+" ,gtk+)
        ("network-manager" ,network-manager)))
     (inputs
-     `(("iso-codes" ,iso-codes)
+     `(("gcr" ,gcr)
+       ("iso-codes" ,iso-codes)
        ("libgudev" ,libgudev)
        ("libnotify" ,libnotify)
        ("libsecret" ,libsecret)
@@ -5726,16 +5717,15 @@ libxml2.")
 (define-public gdm
   (package
     (name "gdm")
-    (version "3.28.2")
+    (version "3.30.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version) "/"
                                   name "-" version ".tar.xz"))
-              (patches (search-patches "gdm-CVE-2018-14424.patch"))
               (sha256
                (base32
-                "0wdm1503x66n1crdlmzmincbd2hccpxsdgjsl5anx3yjpdzs0hb0"))))
+                "15f7lz7z75krgbq8vb800afj96h8mw2fpy1s28za2911x5vgq0ak"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -5751,6 +5741,9 @@ libxml2.")
          ;; systemd-specific '/etc/locale.conf'.
          "--with-lang-file=/etc/environment"
 
+         ,(string-append "--with-udevdir="
+                         (assoc-ref %outputs "out") "/lib/udev")
+
          "--localstatedir=/var"
          ,(string-append "--with-default-path="
                          (string-join '("/run/setuid-programs"
@@ -5973,7 +5966,7 @@ devices using the GNOME desktop.")
 (define-public gnome-control-center
   (package
     (name "gnome-control-center")
-    (version "3.28.2")
+    (version "3.30.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5981,7 +5974,9 @@ devices using the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0d6pjdbsra16nav8201kaadja5yma92bhziki9601ilk2ry3v7pz"))))
+                "0gih1cmqbv803kp30704sllghb0impa0mmv3j8pndfg4zr2mnq9r"))
+              (patches
+               (search-patches "gnome-control-center-udisks.patch"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6002,7 +5997,7 @@ devices using the GNOME desktop.")
                (substitute* "panels/datetime/tz.h"
                  (("/usr/share/zoneinfo/zone.tab")
                   (string-append tzdata "/share/zoneinfo/zone.tab")))
-               (substitute* "panels/datetime/test-endianess.c"
+               (substitute* "tests/datetime/test-endianess.c"
                  (("/usr/share/locale")
                   (string-append libc "/share/locale")))
                (substitute* "panels/region/cc-region-panel.c"
@@ -6050,6 +6045,7 @@ devices using the GNOME desktop.")
        ("libgudev" ,libgudev)
        ("libgtop" ,libgtop)
        ("libpwquality" ,libpwquality)
+       ("libsecret" ,libsecret)
        ("libsoup" ,libsoup)
        ("libxml2" ,libxml2)
        ("libwacom" ,libwacom)
@@ -6061,6 +6057,7 @@ devices using the GNOME desktop.")
        ("pulseaudio" ,pulseaudio)
        ("smbclient" ,samba)
        ("tzdata" ,tzdata)
+       ("udisks" ,udisks)
        ("upower" ,upower)))
     (synopsis "Utilities to configure the GNOME desktop")
     (home-page "https://www.gnome.org/")
@@ -6074,7 +6071,7 @@ properties, screen resolution, and other GNOME parameters.")
 (define-public gnome-shell
   (package
     (name "gnome-shell")
-    (version "3.28.2")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6082,7 +6079,7 @@ properties, screen resolution, and other GNOME parameters.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1b9n89ij2g5nqaqp7a13jnqcd8qa2v9p55rbi71al3xvqk091ri7"))
+                "0kacd4w9lc5finsvs170i7827qkxwd1ddj0g2giizwffpjdjqqr2"))
               (patches (search-patches "gnome-shell-theme.patch"))
               (modules '((guix build utils)))
               (snippet
@@ -6287,8 +6284,7 @@ as SASL, TLS and VeNCrypt.  Additionally it supports encoding extensions.")
     (propagated-inputs
      `(("libarchive" ,libarchive)))  ; XXX document why
     (inputs
-     `(("gtk+" ,gtk+)
-       ("nettle" ,nettle))) ; XXX: required by libarchive.pc
+     `(("gtk+" ,gtk+)))
     (synopsis "Archives integration support for GNOME")
     (home-page "https://git.gnome.org/browse/gnome-autoar/")
     (description
@@ -6356,7 +6352,6 @@ easy, safe, and automatic.")
        ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
        ("sqlite" ,sqlite)
-       ("nettle" ,nettle)  ; XXX why is this needed?
        ("python" ,python)
        ("poppler" ,poppler)
        ("libgsf" ,libgsf)
@@ -6394,7 +6389,7 @@ shared object databases, search tools and indexing.")
 (define-public nautilus
   (package
     (name "nautilus")
-    (version "3.28.1")
+    (version "3.30.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6402,7 +6397,7 @@ shared object databases, search tools and indexing.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "19dhpa2ylrg8d5274lahy7xqr2p9z3jnq1h4qmsh95czkpy7is4w"))))
+                "144r4py9b8w9ycsg6fggjg05kwvymh003qsb3h6apgpch5y3zgnv"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6423,8 +6418,8 @@ shared object databases, search tools and indexing.")
        ("exempi" ,exempi)
        ("gnome-desktop" ,gnome-desktop)
        ("gnome-autoar" ,gnome-autoar)
+       ("libseccomp" ,libseccomp)
        ("libselinux" ,libselinux)
-       ("nettle" ,nettle) ; XXX required by libarchive.pc via gnome-autoar
        ("tracker" ,tracker)
        ;; XXX: gtk+ is required by libnautilus-extension.pc
        ;;
@@ -6445,7 +6440,7 @@ files.")
 (define-public baobab
   (package
     (name "baobab")
-    (version "3.28.0")
+    (version "3.30.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -6454,7 +6449,7 @@ files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0qsx7vx5c3n4yxlxbr11sppw7qwcv9z3g45b5xb9y7wxw5lv42sk"))))
+                "0kx721s1hhw1g0nvbqhb93g8iq6f852imyhfhl02zcqy4ipx0kay"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t))
@@ -6481,7 +6476,7 @@ is complete it provides a graphical representation of each selected folder.")
 (define-public gnome-backgrounds
   (package
     (name "gnome-backgrounds")
-    (version "3.28.0")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
@@ -6490,7 +6485,7 @@ is complete it provides a graphical representation of each selected folder.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1qgim0yhzjgcq172y4vp5hqz4rh1ak38a7pgi6s7dq0wklyrcnxj"))))
+         "1179jrl16bp9gqabqhw7nnfp8qzf5y1vf9fi45bni6rfmwm3mrpc"))))
     (build-system meson-build-system)
     (native-inputs
      `(("intltool" ,intltool)))
@@ -6509,7 +6504,7 @@ can add your own files to the collection.")
 (define-public gnome-screenshot
   (package
     (name "gnome-screenshot")
-    (version "3.26.0")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
@@ -6518,7 +6513,7 @@ can add your own files to the collection.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1fy8fjl29i3xhj8caik03d3za06x96xgkk8r4fwz88iqbmci3g0v"))))
+         "06dx3svxq6sar4913mrz5lzb7hmc66wck138vmyxj8x8iv1iw0w8"))))
     (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@@ -6532,7 +6527,7 @@ can add your own files to the collection.")
        ("libcanberra" ,libcanberra)
        ("libx11" ,libx11)
        ("libxext" ,libxext)))
-    (home-page "https://git.gnome.org/browse/gnome-screenshot")
+    (home-page "https://gitlab.gnome.org/GNOME/gnome-screenshot")
     (synopsis "Take pictures of your screen")
     (description
      "GNOME Screenshot is a utility used for taking screenshots of the entire
@@ -6543,7 +6538,7 @@ beautifying border effects.")
 (define-public dconf-editor
   (package
     (name "dconf-editor")
-    (version "3.28.0")
+    (version "3.30.2")
     (source
      (origin
        (method url-fetch)
@@ -6552,7 +6547,7 @@ beautifying border effects.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0nhcpwqrkmpxbhaf0cafvy6dlp6s7vhm5vknl4lgs3l24zc56ns5"))))
+         "06f736spn20s7qjsz00xw44v8r8bjhyrz1v3bix6v416jc5jp6ia"))))
     (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
@@ -6779,7 +6774,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
 (define-public gnome-clocks
   (package
     (name "gnome-clocks")
-    (version "3.28.0")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6787,7 +6782,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1dd739vchb592mck1dia2hkywn4213cpramyqzgmlmwv8z80p3nl"))))
+                "009fr6zwv37wryi0c0syi4i7pxpdbn3gliws68l99cjsbn2qd6pc"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t))
@@ -6817,7 +6812,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
 (define-public gnome-calendar
   (package
     (name "gnome-calendar")
-    (version "3.28.2")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6825,7 +6820,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0x6wxngf8fkwgbl6x7rzp0srrb43rm55klpb2vfjk2hahpbjvxyw"))))
+                "1avi7a29y8d8kzwslp51nwy6s692alms7917454j0xpfc6hnw62s"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6842,7 +6837,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
        ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("libdazzle" ,libdazzle)
-       ("libedataserverui" ,evolution-data-server "libedataserverui")
+       ("libedataserverui" ,evolution-data-server)
        ("libgweather" ,libgweather)
        ("geoclue" ,geoclue)))
     (home-page "https://wiki.gnome.org/Apps/Calendar")
@@ -6890,7 +6885,7 @@ desktop.  It supports multiple calendars, month, week and year view.")
     (inputs
      `(("rest" ,rest)                   ; For Todoist plugin
        ("json-glib" ,json-glib)         ; For Todoist plugin
-       ("libedataserverui" ,evolution-data-server "libedataserverui")
+       ("libedataserverui" ,evolution-data-server)
        ("libical" ,libical)
        ("libpeas" ,libpeas)
        ("python-pygobject" ,python-pygobject)
@@ -6947,7 +6942,7 @@ existing databases over the internet.")
 (define-public gnome-tweaks
   (package
     (name "gnome-tweaks")
-    (version "3.28.1")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-tweaks/"
@@ -6957,7 +6952,7 @@ existing databases over the internet.")
                (list (search-patch "gnome-tweaks-search-paths.patch")))
               (sha256
                (base32
-                "1p5xydr0haz4389h6dvvbna6i1mipdzvmlfksnv0jqfvfs9sy6fp"))))
+                "0j63siy1i5pl2g6di1r9vjn54m9ahh42wj20j6689pza2lamay1z"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -7006,7 +7001,7 @@ GNOME Shell appearance and extension, etc.")
 (define-public gnome-shell-extensions
   (package
     (name "gnome-shell-extensions")
-    (version "3.28.1")
+    (version "3.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7014,7 +7009,7 @@ GNOME Shell appearance and extension, etc.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0n4h8rdnq3knrvlg6inrl62a73h20dbhfgniwy18572jicrh5ip9"))))
+                "1grxn4f5x754r172wmnf0h0xpy69afmj359zsj1rwgqlzw4i4c5p"))))
     (build-system meson-build-system)
     (arguments
      '(#:configure-flags '("-Dextension_set=all")))
@@ -7330,7 +7325,7 @@ handling the startup notification side.")
 (define-public gnome-calculator
   (package
     (name "gnome-calculator")
-    (version "3.28.2")
+    (version "3.32.2")
     (source
      (origin
        (method url-fetch)
@@ -7339,16 +7334,19 @@ handling the startup notification side.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0izsrqc9fm2lh25jr3nzi94p5hh2d3cklxqczbq16by85wr1xm5s"))))
-    (build-system glib-or-gtk-build-system)
+         "0fgpn3sc226s9fpzhik5rkkrf669037gc659ga2kn9jsyckj6p41"))))
+    (build-system meson-build-system)
+    (arguments '(#:glib-or-gtk? #t))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
+       ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
        ("intltool" ,intltool)
        ("itstool" ,itstool)
+       ("vala" ,vala)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("glib" ,glib)
-       ("gtksourceview" ,gtksourceview-3)
+       ("gtksourceview" ,gtksourceview)
        ("libsoup" ,libsoup)
        ("libxml2" ,libxml2)
        ("mpc" ,mpc)
@@ -7394,20 +7392,20 @@ basically a text box in which notes can be written.")
 (define-public gucharmap
   (let ((unicode-files
          '(("Blocks.txt"
-            "19zf2kd198mcv1paa194c1zf36hay1irbxssi35yi2pd8ad69qas")
+            "041sk54v6rjzb23b9x7yjdwzdp2wc7gvfz7ybavgg4gbh51wm8x1")
            ("DerivedAge.txt"
-            "1h9p1g0wnh686l6cqar7cmky465vwc6vjzzn1s7v0i9zcjaqkr4h")
+            "04j92xp07v273z3pxkbfmi1svmw9kmnjl9nvz9fv0g5ybk9zk7r6")
            ("NamesList.txt"
-            "0gvpcyq852rnlqmx4y5i1by7bavvcw6rj40i54w48yc7xr3zmgd1")
+            "0vsq8gx7hws8mvxy3nlglpwxw7ky57q0fs09d7w9xgb2ylk7fz61")
            ("Scripts.txt"
-            "0b9prz2hs6w61afqaplcxnv115f8yk4d5hn9dc5hks8nqpj28bnh")
+            "18c63hx4y5yg408a8d0wx72d2hfnlz4l560y1fsf9lpzifxpqcmx")
            ("UnicodeData.txt"
-            "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj")
+            "07d1kq190kgl92ispfx6zmdkvwvhjga0ishxsngzlw8j3kdkz4ap")
            ("Unihan.zip"
-            "199kz6laypkvc0ykms6d7bkb571jmpds39sv2p7kd5jjm1ij08q1"))))
+            "1kfdhgg2gm52x3s07bijb5cxjy0jxwhd097k5lqhvzpznprm6ibf"))))
     (package
       (name "gucharmap")
-      (version "10.0.4")
+      (version "12.0.1")
       (source
        (origin
          (method url-fetch)
@@ -7416,7 +7414,7 @@ basically a text box in which notes can be written.")
                              name "-" version ".tar.xz"))
          (sha256
           (base32
-           "00gh3lll6wykd2qg1lrj05a4wvscsypmrx7rpb6jsbvb4scnh9mv"))))
+           "0m915hm2b2d6r3vs1l80rqpssvg78pv8j6nv54yg62kzknnqmpir"))))
       (build-system glib-or-gtk-build-system)
       (arguments
        `(#:modules ((ice-9 match)
@@ -7448,7 +7446,7 @@ basically a text box in which notes can be written.")
                      ,(origin
                         (method url-fetch)
                         (uri (string-append
-                              "http://www.unicode.org/Public/10.0.0/ucd/"
+                              "http://www.unicode.org/Public/12.0.0/ucd/"
                               file))
                         (sha256 (base32 hash))))))
                 unicode-files)
@@ -7499,7 +7497,7 @@ Bluefish supports many programming and markup languages.")
 (define-public gnome-system-monitor
   (package
     (name "gnome-system-monitor")
-    (version "3.28.2")
+    (version "3.30.0")
     (source
      (origin
        (method url-fetch)
@@ -7508,10 +7506,14 @@ Bluefish supports many programming and markup languages.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "164in885dyfvna5yjzgdyrbrsskvh5wzxdmkjgb4mbh54lzqd1zb"))))
-    (build-system glib-or-gtk-build-system)
+         "0g0y565bjs6bdszrnxsz1f7hcm1x59i3mfvplysirh7nz3hpz888"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t
+       #:configure-flags '("-Dsystemd=false")))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums.
+       ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
        ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("libgtop" ,libgtop)
@@ -7578,7 +7580,7 @@ accessibility infrastructure.")
 (define-public orca
   (package
     (name "orca")
-    (version "3.28.1")
+    (version "3.30.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -7587,7 +7589,7 @@ accessibility infrastructure.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "04l5ccn7wf175gyq3blfpx0yh70ny06n161297jwc9idf951852g"))))
+                "17asibc46i5gr2fw04jvvdi85zzmxwlnhyq7r6cr3m5prrdr8a53"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -7835,7 +7837,7 @@ photo-booth-like software, such as Cheese.")
 (define-public cheese
   (package
     (name "cheese")
-    (version "3.28.0")
+    (version "3.30.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7843,7 +7845,7 @@ photo-booth-like software, such as Cheese.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "06da5qc5hdvwwd5vkbgbx8pjx1l3mvr07yrnnv3v1hfc3wp7l7jw"))))
+                "0zz2bgjaf2lsmfs3zn24925vbjb0rycr39i288brlbzixrpcyljr"))))
     (arguments
      ;; Tests require GDK.
      `(#:tests? #f
@@ -8111,7 +8113,7 @@ generic enough to work for everyone.")
 (define-public evolution
   (package
     (name "evolution")
-    (version "3.28.1")
+    (version "3.30.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/evolution/"
@@ -8119,23 +8121,34 @@ generic enough to work for everyone.")
                                   "evolution-" version ".tar.xz"))
               (sha256
                (base32
-                "0sdv5lg2vlz5f4raymz9d8a5jq4j18vbqyigaip6508p3bjnfj8l"))))
+                "1hhxj3rh921pp3l3c5k33bdypcas1p66krzs65k1qn82c5fpgl2h"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags
-       (list "-DENABLE_PST_IMPORT=OFF"  ; libpst is not packaged
-             "-DENABLE_LIBCRYPTUI=OFF") ; libcryptui hasn't seen a release
-                                        ; in four years and cannot be built
+     `(#:imported-modules (,@%cmake-build-system-modules
+                           (guix build glib-or-gtk-build-system))
+       #:modules ((guix build cmake-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+       #:configure-flags
+       (list "-DENABLE_PST_IMPORT=OFF"    ; libpst is not packaged
+             "-DENABLE_LIBCRYPTUI=OFF")   ; libcryptui hasn't seen a release
+                                          ; in four years and cannot be built.
        #:phases
        (modify-phases %standard-phases
-         (add-after 'install 'wrap-program
+         ;; The build system attempts to install user interface modules to the
+         ;; output directory of the "evolution-data-server" package.  This
+         ;; change redirects that change.
+         (add-after 'unpack 'patch-ui-module-dir
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/evolution")
-                 `("XDG_DATA_DIRS" ":" prefix (,(getenv "XDG_DATA_DIRS")))
-                 `("GSETTINGS_SCHEMA_DIR" =
-                   (,(string-append out "/share/glib-2.0/schemas")))))
-             #t)))))
+             (substitute* "src/modules/alarm-notify/CMakeLists.txt"
+               (("\\$\\{edsuimoduledir\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/evolution-data-server/ui-modules")))
+             #t))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'install 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
     (native-inputs
      `(("glib" ,glib "bin")             ; glib-mkenums
        ("pkg-config" ,pkg-config)
@@ -8151,7 +8164,7 @@ generic enough to work for everyone.")
        ("gtkspell3" ,gtkspell3)
        ("highlight" ,highlight)
        ("libcanberra" ,libcanberra)
-       ("libedataserverui" ,evolution-data-server "libedataserverui")
+       ("libedataserverui" ,evolution-data-server)
        ("libgweather" ,libgweather)
        ("libnotify" ,libnotify)
        ("libsoup" ,libsoup)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 69d7f34a49..56db412145 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -76,7 +77,7 @@
 (define-public libgpg-error
   (package
     (name "libgpg-error")
-    (version "1.32")
+    (version "1.36")
     (source
      (origin
       (method url-fetch)
@@ -84,7 +85,16 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "1jj08ns4sh1hmafqp1giskvdicdz18la516va26jycy27kkwaif3"))))
+        "0z696dmhfxm2n6pmr8b857wwljq9h633yi99bhbn7h88f91rigds"))
+      (patches (search-patches "libgpg-error-gawk-compat.patch"))
+      ;; XXX: Remove this snippet with the gawk patch above.  It avoids having
+      ;; to call autoreconf for the Makefile.am change to take effect.
+      (modules '((guix build utils)))
+      (snippet
+       '(begin
+          (substitute* "src/Makefile.in"
+            (("namespace=errnos") "pkg_namespace=errnos"))
+          #t))))
     (build-system gnu-build-system)
     (home-page "https://gnupg.org")
     (synopsis "Library of error values for GnuPG components")
@@ -100,16 +110,14 @@ Daemon and possibly more in the future.")
 (define-public libgcrypt
   (package
     (name "libgcrypt")
-    (version "1.8.3")
+    (version "1.8.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0z5gs1khzyknyfjr19k8gk4q148s6q987ya85cpn0iv70fz91v36"))
-             (patches
-              (search-patches "libgcrypt-make-yat2m-reproducible.patch"))))
+               "09r27ywj9zplq6n9qw3mn7zmvf6y2jdmwx5d1kg8yqkj0qx18f7n"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error-host" ,libgpg-error)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 0ffeb44d7a..9ee9ca2f03 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -865,8 +865,7 @@ from forcing GEXP-PROMISE."
              (let ((gcc (assoc-ref inputs "gcc")))
                (setenv "CPLUS_INCLUDE_PATH"
                        (string-append gcc "/include/c++" ":"
-                                      gcc "/include/c++/" build ":"
-                                      (getenv "CPLUS_INCLUDE_PATH"))))
+                                      gcc "/include/c++/" build)))
              #t))
          (replace 'configure
            ;; configure does not work followed by both "SHELL=..." and
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 819cc6229e..51be20b066 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru>
@@ -41,6 +41,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system go)
+  #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages base)
@@ -198,11 +199,7 @@
     (inputs
      `(("tzdata" ,tzdata)
        ("pcre" ,pcre)
-       ;; Building Go 1.10 with the Go 1.4 bootstrap, Thread Sanitizer from GCC
-       ;; 5 finds a data race during the the test suite of Go 1.10. With GCC 6,
-       ;; the race doesn't seem to be present:
-       ;; https://github.com/golang/go/issues/24046
-       ("gcc:lib" ,gcc-6 "lib")))
+       ("gcc:lib" ,gcc "lib")))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("which" ,which)
@@ -427,6 +424,12 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                        (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
                       (output (assoc-ref outputs "out")))
 
+                 ;; Having the patch in the 'patches' field of <origin> breaks
+                 ;; the 'TestServeContent' test due to the fact that
+                 ;; timestamps are reset.  Thus, apply it from here.
+                 (invoke "patch" "-p2" "--force" "-i"
+                         (assoc-ref inputs "go-skip-gc-test.patch"))
+
                  ;; A side effect of these test scripts is testing
                  ;; cgo. Attempts at using cgo flags and directives with these
                  ;; scripts as specified here (https://golang.org/cmd/cgo/)
@@ -578,6 +581,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  #t)))))))
     (native-inputs
      `(("go" ,go-1.4)
+       ("go-skip-gc-test.patch" ,(search-patch "go-skip-gc-test.patch"))
        ,@(match (%current-system)
            ((or "armhf-linux" "aarch64-linux")
             `(("gold" ,binutils-gold)))
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 9ede82d09e..26b1fe0ee2 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -66,11 +66,7 @@
     ;; TODO: "make doc" requires Docbook & co.
     (arguments
      `(#:configure-flags
-       '("--with-zlib=system"
-         ;; XXX Use -fPIC to work around build problems with Qt, GCC 5, and
-         ;; recent binutils:
-         ;; https://codereview.qt-project.org/#/c/111787/
-         "CXXFLAGS=-std=gnu++11 -fPIC")
+       '("--with-zlib=system")
        ;; On i686, 'raymarine.test' fails because of a rounding error:
        ;; <http://hydra.gnu.org/build/133040>.  As a workaround, disable tests
        ;; on these platforms.
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 6d6c8d1e1c..a4dddb9d34 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -478,7 +478,8 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
     ;; FIXME: To run all tests successfully, test image sets from multiple
     ;; third party sources have to be present.  For details see
     ;; https://github.com/OpenImageIO/oiio/blob/master/INSTALL
-    (arguments `(#:tests? #f))
+    (arguments
+     `(#:tests? #f))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm
index cf392f5468..98f17914bf 100644
--- a/gnu/packages/groff.scm
+++ b/gnu/packages/groff.scm
@@ -3,6 +3,8 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,14 +38,13 @@
 (define-public groff
   (package
    (name "groff")
-   (version "1.22.3")
+   (version "1.22.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/groff/groff-" version
                                 ".tar.gz"))
             (sha256 (base32
-                     "1998v2kcs288d3y7kfxpvl369nqi06zbbvjzafyvyl3pr7bajj1s"))
-            (patches (search-patches "groff-source-date-epoch.patch"))))
+                     "14q2mldnr1vx0l9lqp9v2f6iww24gj28iyh4j2211hyynx67p3p7"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                    ;12MiB of PS, PDF, HTML, and examples
@@ -62,9 +63,37 @@
     `(#:parallel-build? #f   ; parallel build fails
       #:phases
       (modify-phases %standard-phases
+        (add-after 'unpack 'disable-relocatability
+          (lambda _
+            ;; Groff contains a Rube Goldberg-esque relocator for the file
+            ;; "charset.alias".  It tries to find the current executable
+            ;; using realpath, a do-it-yourself search in $PATH and so on.
+            ;; Furthermore, the routine that does the search is buggy
+            ;; in that it doesn't handle error cases when they arise.
+            ;; This causes preconv to segfault when trying to look up
+            ;; the file "charset.alias" in the NULL location.
+            ;; The "charset.alias" parser is a copy of gnulib's, and a
+            ;; non-broken version of gnulib's "charset.alias" parser is
+            ;; part of glibc's libcharset.
+            ;; However, groff unconditionally uses their own
+            ;; "charset.alias" parser, but then DOES NOT INSTALL the
+            ;; file "charset.alias" when glibc is too new.
+            ;; In Guix, our file "charset.alias" only contains an obscure
+            ;; alias for ASCII and nothing else.  So just disable relocation
+            ;; and make the entire "charset.alias" lookup fail.
+            ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30785> for
+            ;; details.
+            (substitute* "Makefile.in"
+              (("-DENABLE_RELOCATABLE=1") ""))
+            #t))
         (add-after 'unpack 'setenv
           (lambda _
             (setenv "GS_GENERATE_UUIDS" "0")
+            #t))
+        (add-after 'unpack 'fix-docdir
+          (lambda _         ;see https://savannah.gnu.org/bugs/index.php?55461
+            (substitute* "Makefile.in"
+              (("^docdir =.*") "docdir = @docdir@\n"))
             #t)))))
    (synopsis "Typesetting from plain text mixed with formatting commands")
    (description
@@ -91,41 +120,11 @@ is usually the formatter of \"man\" documentation pages.")
     (arguments
      `(#:disallowed-references (,perl)
 
-       #:configure-flags '("--docdir=/tmp/trash/doc")
+       #:configure-flags '("--with-doc=no")
 
        ,@(substitute-keyword-arguments (package-arguments groff)
            ((#:phases phases)
             `(modify-phases ,phases
-               (add-after 'unpack 'disable-relocatability
-                 (lambda _
-                   ;; Groff contains a Rube Goldberg-esque relocator for the
-                   ;; file "charset.alias".
-                   ;; It tries to find the current executable using realpath,
-                   ;; a do-it-yourself search in $PATH and so on.
-                   ;; Furthermore, the routine that does the search is buggy
-                   ;; in that it doesn't handle error cases when they arise.
-                   ;; This causes preconv to segfault when trying to look up
-                   ;; the file "charset.alias" in the NULL location.
-                   ;; The "charset.alias" parser is a copy of gnulib's, and a
-                   ;; non-broken version of gnulib's "charset.alias" parser
-                   ;; is part of glibc's libcharset.
-                   ;; However, groff unconditionally uses their own
-                   ;; "charset.alias" parser, but then DOES NOT INSTALL the
-                   ;; file "charset.alias" when glibc is too new.
-                   ;; In Guix, our file "charset.alias" only contains an
-                   ;; obscure alias for ASCII and nothing else.
-                   ;; So just disable relocation and make the entire
-                   ;; "charset.alias" lookup fail.
-                   ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30785>
-                   ;; for details.
-                   (substitute* "src/libs/libgroff/Makefile.sub"
-                    (("-DENABLE_RELOCATABLE=1") ""))
-                   ;; That file contains a crash bug--so make sure that
-                   ;; its contents are not there.
-                   (call-with-output-file "src/libs/libgroff/relocate.cpp"
-                     (lambda (port)
-                       #t))
-                   #t))
                (add-after 'install 'remove-non-essential-programs
                  (lambda* (#:key outputs #:allow-other-keys)
                    ;; Keep only the programs that man-db needs at run time,
diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm
index 6cdc395ec5..c1a0360b0e 100644
--- a/gnu/packages/gsasl.scm
+++ b/gnu/packages/gsasl.scm
@@ -95,9 +95,11 @@ the underlying security implementation.")
                   (("test-lock\\$\\(EXEEXT\\) ") ""))
                 #t))))
    (build-system gnu-build-system)
+   (arguments
+    `(#:configure-flags '("--with-gssapi-impl=mit")))
    (inputs `(("libidn" ,libidn)
              ("libntlm" ,libntlm)
-             ("gss" ,gss)
+             ("mit-krb5" ,mit-krb5)
              ("zlib" ,zlib)))
    (propagated-inputs
     ;; Propagate GnuTLS because libgnutls.la reads `-lnettle', and Nettle is a
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 8b81cc91a0..1ec161a599 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -436,19 +436,14 @@ compression formats through the use of the libav library.")
                 "0f1d9rvy2qxlymmfzyknnfr5rz1vx69jv17gp7wnamc5s6p7mp2m"))))
     (build-system gnu-build-system)
     (arguments
-     ;; XXX: Factorize python-sitedir with python-build-system.
-     `(#:imported-modules (,@%gnu-build-system-modules
+     `(#:modules ((guix build gnu-build-system)
+                  ((guix build python-build-system) #:prefix python:))
+       #:imported-modules (,@%gnu-build-system-modules
                            (guix build python-build-system))
        #:configure-flags
-       (let* ((python (assoc-ref %build-inputs "python"))
-              (python-version ((@@ (guix build python-build-system)
-                                   get-python-version)
-                               python))
-              (python-sitedir (string-append
-                               "lib/python" python-version "/site-packages")))
-         (list (string-append
-                "--with-pygi-overrides-dir=" %output "/" python-sitedir
-                "/gi/overrides")))))
+       (list (string-append
+              "--with-pygi-overrides-dir="
+              (python:site-packages %build-inputs %outputs) "gi/overrides"))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("python" ,python)))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 12972b75df..34f9ca3844 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -180,15 +180,15 @@ affine transformation (scale, rotation, shear, etc.).")
 (define-public harfbuzz
   (package
    (name "harfbuzz")
-   (version "2.2.0")
+   (version "2.5.3")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://www.freedesktop.org/software/"
                                  "harfbuzz/release/harfbuzz-"
-                                 version ".tar.bz2"))
+                                 version ".tar.xz"))
              (sha256
               (base32
-               "047q63jr513azf3g1y7f5xn60b4jdjs9zsmrx04sfw5rasyzrk5p"))))
+               "0p45xk5bblsw8lfs7y7z80b4rvda9f2hlpr28flkrfmpjz3hvl7y"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "bin")) ; 160K, only hb-view depend on cairo
@@ -200,7 +200,8 @@ affine transformation (scale, rotation, shear, etc.).")
       ("graphite2" ,graphite2)
       ("icu4c" ,icu4c)))
    (native-inputs
-    `(("gobject-introspection" ,gobject-introspection)
+    `(("glib:bin" ,glib "bin")          ;for glib-mkenums
+      ("gobject-introspection" ,gobject-introspection)
       ("pkg-config" ,pkg-config)
       ("python" ,python-wrapper)
       ("which" ,which)))
@@ -298,8 +299,6 @@ functions which were removed.")
        (modify-phases %standard-phases
          (add-before 'configure 'set-flags
            (lambda* (#:key outputs #:allow-other-keys)
-             ;; Compile with C++11, required by gtkmm.
-             (setenv "CXXFLAGS" "-std=c++11")
              ;; Allow 'bin/ganv_bench' to find libganv-1.so.
              (setenv "LDFLAGS"
                      (string-append "-Wl,-rpath="
@@ -400,7 +399,7 @@ printing and other features typical of a source code editor.")
 (define-public gtksourceview
  (package
    (name "gtksourceview")
-   (version "4.0.2")
+   (version "4.2.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/gtksourceview/"
@@ -408,7 +407,7 @@ printing and other features typical of a source code editor.")
                                  "gtksourceview-" version ".tar.xz"))
              (sha256
               (base32
-               "1b2z9c0skxrgw2vh08hv6qxky8jbvamc4rgww82j0kpp533rz0hm"))))
+               "0xgnjj7jd56wbl99s76sa1vjq9bkz4mdsxwgwlcphg689liyncf4"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases
@@ -1045,7 +1044,7 @@ library.")
 (define-public pangomm
   (package
     (name "pangomm")
-    (version "2.40.1")
+    (version "2.42.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1053,7 +1052,7 @@ library.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1bz3gciff23bpw9bqc4v2l3lkq9w7394v3a4jxkvx0ap5lmfwqlp"))))
+               "0mmzxp3wniaafkxr30sb22mq9x44xckb5d60h1bl99lkzxks0vfa"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (propagated-inputs
@@ -1071,7 +1070,7 @@ library.")
 (define-public atkmm
   (package
     (name "atkmm")
-    (version "2.24.2")
+    (version "2.28.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1079,7 +1078,7 @@ library.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1gaqwhviadsmy0fsr47686yglv1p4mpkamj0in127bz2b5bki5gz"))))
+               "0fnxrspxkhhbrjphqrpvl3zjm66n50s4cywrrrwkhbflgy8zqk2c"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (propagated-inputs
@@ -1094,7 +1093,7 @@ toolkit.")
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "3.22.2")
+    (version "3.24.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1102,7 +1101,7 @@ toolkit.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1400535lhyya462pfx8bp11k3mg3jsbdghlpygskd5ai665dkbwi"))))
+               "0hxaq4x9jqj8vvnv3sb6nwapz83v8lclbm887qqci0g50llcjpyg"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("glib" ,glib "bin")        ;for 'glib-compile-resources'
@@ -1114,10 +1113,7 @@ toolkit.")
        ("gtk+" ,gtk+)
        ("glibmm" ,glibmm)))
     (arguments
-     `(;; XXX: Tests require C++14 or later.  Remove this when the default
-       ;; compiler is >= GCC6.
-       #:configure-flags '("CXXFLAGS=-std=gnu++14")
-       #:disallowed-references (,xorg-server-for-tests)
+     `(#:disallowed-references (,xorg-server-for-tests)
        #:phases (modify-phases %standard-phases
                   (add-before 'check 'run-xvfb
                     (lambda* (#:key inputs #:allow-other-keys)
@@ -1153,8 +1149,7 @@ extensive documentation, including API reference and a tutorial.")
              (sha256
               (base32
                "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
-    (arguments
-     '(#:configure-flags '("CPPFLAGS=-std=c++11"))) ; required by libsigc++
+    (arguments '())
     (native-inputs `(("pkg-config" ,pkg-config)))
     (propagated-inputs
      `(("pangomm" ,pangomm)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 0731caedc2..478b8faebe 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -216,7 +216,7 @@ without requiring the source code to be rewritten.")
 (define-public guile-2.2
   (package (inherit guile-2.0)
     (name "guile")
-    (version "2.2.4")
+    (version "2.2.6")
     (source (origin
               (method url-fetch)
 
@@ -226,8 +226,10 @@ without requiring the source code to be rewritten.")
                                   ".tar.xz"))
               (sha256
                (base32
-                "07p3g0v2ba2vlfbfidqzlgbhnzdx46wh2rgc5gszq1mjyx5bks6r"))
+                "1269ymxm56j1z1lvq1y42rm961f2n7rinm3k6l00p9k52hrpcddk"))
               (modules '((guix build utils)))
+              (patches (search-patches
+                        "guile-2.2-skip-oom-test.patch"))
 
               ;; Remove the pre-built object files.  Instead, build everything
               ;; from source, at the expense of significantly longer build
@@ -245,36 +247,7 @@ without requiring the source code to be rewritten.")
             (files '("share/guile/site/2.2")))
            (search-path-specification
             (variable "GUILE_LOAD_COMPILED_PATH")
-            (files '("lib/guile/2.2/site-ccache")))))
-
-    (arguments
-     (if (%current-target-system)
-         (substitute-keyword-arguments (package-arguments guile-2.0)
-           ((#:phases phases '%standard-phases)
-            `(modify-phases ,phases
-               (add-after 'unpack 'sacrifice-elisp-support
-                 (lambda _
-                   ;; Cross-compiling language/elisp/boot.el fails, so
-                   ;; sacrifice it.  See
-                   ;; <https://git.savannah.gnu.org/cgit/guile.git/commit/?h=stable-2.2&id=988aa29238fca862c7e2cb55f15762a69b4c16ce>
-                   ;; for the upstream fix.
-                   (substitute* "module/Makefile.in"
-                     (("language/elisp/boot\\.el")
-                      "\n"))
-                   #t))
-               ,@(if (hurd-target?)
-                     `((add-after 'unpack 'allow-madvise-ENOSYS
-                         (lambda _
-                           ;; Do not warn about ENOSYS on 'madvise'.  This is
-                           ;; what Guile commit
-                           ;; 45e4ace6603e00b297e6542362273041aebe7305 does.
-                           ;; TODO: Remove for Guile >= 2.2.5.
-                           (substitute* "libguile/vm.c"
-                             (("perror \\(\"madvise failed\"\\)")
-                              "if (errno != ENOSYS) perror (\"madvised failed\");"))
-                           #t)))
-                     '()))))
-         (package-arguments guile-2.0)))))
+            (files '("lib/guile/2.2/site-ccache")))))))
 
 (define-public guile-2.2/fixed
   ;; A package of Guile 2.2 that's rarely changed.  It is the one used
@@ -286,18 +259,6 @@ without requiring the source code to be rewritten.")
                   (max-silent-time . 36000))))) ;10 hours (needed on ARM
                                                 ;  when heavily loaded)
 
-(define-public guile-2.2.6
-  (package
-    (inherit guile-2.2)
-    (version "2.2.6")
-    (source (origin
-              (inherit (package-source guile-2.2))
-              (uri (string-append "mirror://gnu/guile/guile-" version
-                                  ".tar.xz"))
-              (sha256
-               (base32
-                "1269ymxm56j1z1lvq1y42rm961f2n7rinm3k6l00p9k52hrpcddk"))))))
-
 (define-public guile-next
   ;; This is the upcoming Guile 3.0, with JIT support.
   (package
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index f652cca1c2..96fded0f4e 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -305,7 +305,7 @@ Japanese language input in most graphical applications.")
 (define-public librime
   (package
     (name "librime")
-    (version "1.4.0")
+    (version "1.5.3")
     (source
      (origin
        (method git-fetch)
@@ -315,7 +315,7 @@ Japanese language input in most graphical applications.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1zkx1wfbd94v55gfycyd2b94jxclfyk2zl7yw35pyjx63qdlb6sd"))
+         "0xskhdhk7dgpc71r39pfzxi5vrlzy90aqj1gzv8nnapq91p2awhv"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -677,7 +677,7 @@ Method Engine.")
        ("librime" ,librime)
        ("rime-data" ,rime-data)))
     (native-inputs
-     `(("cmake" ,cmake)
+     `(("cmake" ,cmake-minimal)
        ("pkg-config" ,pkg-config)))
     (home-page "https://rime.im/")
     (synopsis "Rime Input Method Engine for IBus")
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index 512967a305..922dfbd348 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -31,10 +31,32 @@
   #:use-module (guix build-system ant)
   #:use-module (guix build-system gnu))
 
+;; These patches are taken from ICUs 'maint-64' branch and will be included in
+;; 64.3.  The latter patch is needed because many packages use "invalid"
+;; locales which misbehave with ICU 64.2.  See discussion at
+;; <https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00343.html>.
+(define %icu4c-patches
+  (list (origin
+          (method url-fetch)
+          (uri (string-append "https://github.com/unicode-org/icu/commit/"
+                              "7788f04eb9be0d7ecade6af46cf7b9825447763d.patch"))
+          (file-name "icu4c-datetime-regression.patch")
+          (sha256
+           (base32
+            "0gs2sbdfpzwwdjqcqr0c16fw3g7wy3gb1gbgvzs9k1ciw0bhpv4w")))
+        (origin
+          (method url-fetch)
+          (uri (string-append "https://github.com/unicode-org/icu/commit/"
+                              "cfb20862909ff105d4f2c43923c97561bc5a5815.patch"))
+          (file-name "icu4c-locale-mapping.patch")
+          (sha256
+           (base32
+            "0s5psb60aisj6icziblvlp9dqcz56n3887i8ib0yidbjnnrw5b97")))))
+
 (define-public icu4c
   (package
    (name "icu4c")
-   (version "63.1")
+   (version "64.2")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -43,30 +65,30 @@
                   "/icu4c-"
                   (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
                   "-src.tgz"))
+            (patches %icu4c-patches)
+            (patch-flags '("-p2"))
             (sha256
-             (base32 "17fbk0lm2clsxbmjzvyp245ayx0n4chji3ky1f3fbz2ljjv91i05"))))
+             (base32 "0v0xsf14xwlj125y9fd8lrhsaych4d8liv8gr746zng6g225szb2"))))
    (build-system gnu-build-system)
+   (native-inputs
+    `(("python" ,python-minimal)))
    (inputs
     `(("perl" ,perl)))
    (arguments
     `(#:configure-flags
-      '("--enable-rpath"
-        ,@(if (let ((s (or (%current-target-system)
-                           (%current-system))))
-                (or (string-prefix? "arm" s)
-                    (string-prefix? "mips" s)))
-              '("--with-data-packaging=archive")
-              '()))
-        ,@(if (string-prefix? "i686" (or (%current-target-system)
-                                         (%current-system)))
-              ;; FIXME: Some tests are failing on i686:
-              ;; <https://unicode-org.atlassian.net/browse/ICU-20080>.
-              '(#:tests? #f)
-              '())
+      '("--enable-rpath")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'chdir-to-source
           (lambda _ (chdir "source") #t))
+        (add-after 'chdir-to-source 'update-LDFLAGS
+          (lambda _
+            ;; Do not create a "data-only" libicudata.so because it causes
+            ;; problems on some architectures (notably armhf and MIPS).
+            (substitute* "config/mh-linux"
+              (("LDFLAGSICUDT=-nodefaultlibs -nostdlib")
+               "LDFLAGSICUDT="))
+            #t))
         (add-after 'install 'avoid-coreutils-reference
           ;; Don't keep a reference to the build tools.
           (lambda* (#:key outputs #:allow-other-keys)
@@ -83,22 +105,6 @@ C/C++ part.")
    (license x11)
    (home-page "http://site.icu-project.org/")))
 
-(define-public icu4c-64
-  (package
-    (inherit icu4c)
-    (version "64.2")
-    (source (origin
-              (inherit (package-source icu4c))
-              (uri (string-append
-                    "http://download.icu-project.org/files/icu4c/" version "/icu4c-"
-                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
-                    "-src.tgz"))
-              (sha256
-               (base32 "0v0xsf14xwlj125y9fd8lrhsaych4d8liv8gr746zng6g225szb2"))))
-    (native-inputs
-     `(;; For tests.
-       ("python" ,python)))))
-
 (define-public java-icu4j
   (package
     (name "java-icu4j")
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index d03f4548c5..0026e99f59 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -87,8 +87,7 @@
 (define-public libpng
   (package
    (name "libpng")
-   (version "1.6.34")
-   (replacement libpng-1.6.37)
+   (version "1.6.37")
    (source (origin
             (method url-fetch)
             (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
@@ -101,8 +100,10 @@
                         "/libpng16/libpng-" version ".tar.xz")))
             (sha256
              (base32
-              "1xjr0v34fyjgnhvaa1zixcpx5yvxcg4zwvfh0fyklfyfj86rc7ig"))))
+              "1jl8in381z0128vgxnvn33nln6hzckl7l7j9nqvkaf1m9n1p0pjh"))))
    (build-system gnu-build-system)
+   (arguments
+    `(#:configure-flags '("--disable-static")))
 
    ;; libpng.la says "-lz", so propagate it.
    (propagated-inputs `(("zlib" ,zlib)))
@@ -114,25 +115,6 @@ library.  It supports almost all PNG features and is extensible.")
    (license license:zlib)
    (home-page "http://www.libpng.org/pub/png/libpng.html")))
 
-;; This graft exists to fix CVE-2018-14048, CVE-2018-14550, and CVE-2019-7317.
-(define-public libpng-1.6.37
-  (package
-    (inherit libpng)
-    (version "1.6.37")
-    (source (origin
-              (method url-fetch)
-              (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
-                                        version "/libpng-" version ".tar.xz")
-                         (string-append
-                          "ftp://ftp.simplesystems.org/pub/libpng/png/src"
-                          "/libpng16/libpng-" version ".tar.xz")
-                         (string-append
-                          "ftp://ftp.simplesystems.org/pub/libpng/png/src/history"
-                          "/libpng16/libpng-" version ".tar.xz")))
-              (sha256
-               (base32
-                "1jl8in381z0128vgxnvn33nln6hzckl7l7j9nqvkaf1m9n1p0pjh"))))))
-
 ;; libpng-apng should be updated when the APNG patch is released:
 ;; <https://bugs.gnu.org/27556>
 (define-public libpng-apng
@@ -647,15 +629,15 @@ arithmetic ops.")
 (define-public jbig2dec
   (package
     (name "jbig2dec")
-    (version "0.15")
+    (version "0.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ArtifexSoftware"
                                   "/ghostpdl-downloads/releases/download"
-                                  "/gs924/" name "-" version ".tar.gz"))
+                                  "/gs927/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0m1qwpbjbirgw2fqznbajdhdhh35d6xa2csr64lpjz735pvimykb"))
+                "00h61y7bh3z6mqfzxyb318gyh0f8jwarg4hvlrm83rqps8avzxm4"))
               (patches (search-patches "jbig2dec-ignore-testtest.patch"))))
     (build-system gnu-build-system)
     (arguments '(#:configure-flags '("--disable-static")))
@@ -751,22 +733,20 @@ images of initially unknown height.")
 (define-public openjpeg
   (package
     (name "openjpeg")
-    (version "2.3.0")
-    (replacement openjpeg-2.3.1)
-    (source
-      (origin
-        (method url-fetch)
-        (uri
-         (string-append "https://github.com/uclouvain/openjpeg/archive/v"
-                        version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "06npqzkg20avnygdwaqpap91r7qpdqgrn39adj2bl8v0pg0qgirx"))))
+    (version "2.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/uclouvain/openjpeg")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "openjpeg" version))
+              (sha256
+               (base32
+                "1dn98d2dfa1lqyxxmab6rrcv52dyhjr4g7i4xf2w54fqsx14ynrb"))))
     (build-system cmake-build-system)
     (arguments
-      ;; Trying to run `$ make check' results in a no rule fault.
-      '(#:tests? #f))
+     '(#:tests? #f                   ;TODO: requires a 1.1 GiB data repository
+       #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
     (inputs
       `(("lcms" ,lcms)
         ("libpng" ,libpng)
@@ -786,20 +766,6 @@ error-resilience, a Java-viewer for j2k-images, ...")
     (home-page "https://github.com/uclouvain/openjpeg")
     (license license:bsd-2)))
 
-(define-public openjpeg-2.3.1
-  (package
-    (inherit openjpeg)
-    (version "2.3.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/uclouvain/openjpeg")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name "openjpeg" version))
-              (sha256
-               (base32
-                "1dn98d2dfa1lqyxxmab6rrcv52dyhjr4g7i4xf2w54fqsx14ynrb"))))))
-
 (define-public openjpeg-1
   (package (inherit openjpeg)
     (name "openjpeg")
@@ -1528,15 +1494,14 @@ is hereby granted."))))
 (define-public libjpeg-turbo
   (package
     (name "libjpeg-turbo")
-    (version "2.0.1")
-    (replacement libjpeg-turbo-2.0.2)
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/libjpeg-turbo/"
                                   version "/libjpeg-turbo-" version ".tar.gz"))
               (sha256
                (base32
-                "1zv6z093l3x3jzygvni7b819j7xhn6d63jhcdrckj7fz67n6ry75"))))
+                "1v9gx1gdzgxf51nd55ncq7rghmj4x9x91rby50ag36irwngmkf5c"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("nasm" ,nasm)))
@@ -1559,18 +1524,6 @@ and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).")
                    license:ijg          ;the libjpeg library and associated tools
                    license:zlib))))     ;the libjpeg-turbo SIMD extensions
 
-(define-public libjpeg-turbo-2.0.2
-  (package
-    (inherit libjpeg-turbo)
-    (version "2.0.2")
-    (source (origin
-              (inherit (package-source libjpeg-turbo))
-              (uri (string-append "mirror://sourceforge/libjpeg-turbo/"
-                                  version "/libjpeg-turbo-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1v9gx1gdzgxf51nd55ncq7rghmj4x9x91rby50ag36irwngmkf5c"))))))
-
 (define-public niftilib
   (package
     (name "niftilib")
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 7b17ebae40..1ad23a92d4 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -52,6 +52,7 @@
               (uri (string-append "https://media.inkscape.org/dl/"
                                   "resources/file/"
                                   "inkscape-" version ".tar.bz2"))
+              (patches (search-patches "inkscape-poppler-0.76.patch"))
               (sha256
                (base32
                 "0pjinhjibfsz1aywdpgpj3k23xrsszpj4a1ya5562dkv2yl2vv2p"))))
@@ -86,6 +87,13 @@
            (lambda _
              (substitute* "share/icons/application/CMakeLists.txt"
               (("gtk-update-icon-cache") "true"))
+             #t))
+         (add-before 'configure 'dont-use-system-includes
+           (lambda _
+             ;; Don't add redundant -isystem includes which confuses GCC7.
+             (substitute* "CMakeScripts/DefineDependsandFlags.cmake"
+               (("include_directories\\(SYSTEM")
+                "include_directories("))
              #t)))))
     (home-page "https://inkscape.org/")
     (synopsis "Vector graphics editor")
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 403c446a82..def2c8d92d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -152,6 +152,17 @@ and binary format defined in The Java Virtual Machine Specification.")
              "--disable-gjdoc")
        #:phases
        (modify-phases %standard-phases
+         ;; XXX: This introduces a memory leak as we remove a call to free up
+         ;; memory for the file name string.  This was necessary because of a
+         ;; runtime error that would have prevented us from building
+         ;; ant-bootstrap later.  See https://issues.guix.gnu.org/issue/36685
+         ;; for the gnarly details.
+         (add-after 'unpack 'remove-call-to-free
+           (lambda _
+             (substitute* "native/jni/java-io/java_io_VMFile.c"
+               (("result = cpio_isFileExists.*" m)
+                (string-append m "\n//")))
+             #t))
          (add-after 'install 'install-data
            (lambda _ (invoke "make" "install-data"))))))
     (native-inputs
@@ -191,6 +202,11 @@ language.")
      `(("classpath" ,classpath-bootstrap)
        ("jikes" ,jikes)
        ("zlib" ,zlib)))
+    ;; When built with a recent GCC and glibc the configure step of icedtea-6
+    ;; fails with an invalid instruction error.
+    (native-inputs
+     `(("gcc" ,gcc-5)
+       ("libc" ,glibc-2.28)))
     (home-page "http://jamvm.sourceforge.net/")
     (synopsis "Small Java Virtual Machine")
     (description "JamVM is a Java Virtual Machine conforming to the JVM
@@ -740,6 +756,9 @@ machine.")))
              (with-directory-excursion "openjdk"
                (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
                (rename-file "hg-checkout" "hotspot"))
+             (substitute* "patches/freetypeversion.patch"
+               (("REQUIRED_FREETYPE_VERSION = 2.2.1")
+                "REQUIRED_FREETYPE_VERSION = 2.10.1"))
              (substitute* "Makefile.in"
                (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;")
                 "echo \"trust me\";")
@@ -907,7 +926,6 @@ machine.")))
        ("fastjar" ,fastjar)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
-       ("gcc" ,gcc-4.9) ; there's a segmentation fault when compiling with gcc-5 or gcc-7
        ("gtk" ,gtk+-2)
        ("gawk" ,gawk)
        ("giflib" ,giflib)
@@ -1107,6 +1125,18 @@ bootstrapping purposes.")
                                             ((name . _) name))
                                           inputs))))
                  #t)))
+           (add-after 'unpack 'patch-bitrot
+             (lambda _
+               (substitute* '("patches/boot/revert-6973616.patch"
+                              "openjdk.src/jdk/make/common/shared/Defs-versions.gmk")
+                 (("REQUIRED_FREETYPE_VERSION = 2.2.1")
+                  "REQUIRED_FREETYPE_VERSION = 2.10.1"))
+               ;; As of attr 2.4.48 this header is no longer
+               ;; included.  It is provided by the libc instead.
+               (substitute* '("configure"
+                              "openjdk.src/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c")
+                 (("attr/xattr.h") "sys/xattr.h"))
+               #t))
            (add-after 'unpack 'fix-x11-extension-include-path
              (lambda* (#:key inputs #:allow-other-keys)
                (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
@@ -1586,6 +1616,7 @@ IcedTea build harness.")
                  (delete 'patch-paths)
                  (delete 'set-additional-paths)
                  (delete 'patch-patches)
+                 (delete 'patch-bitrot)
                  ;; Prevent the keytool from recording the current time when
                  ;; adding certificates at build time.
                  (add-after 'unpack 'patch-keystore
diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index cb870208e4..aa8493fd1d 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -32,7 +32,7 @@
 (define-public jemalloc
   (package
     (name "jemalloc")
-    (version "5.1.0")
+    (version "5.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -40,7 +40,7 @@
                     version "/jemalloc-" version ".tar.bz2"))
               (sha256
                (base32
-                "0s3jpcyhzia8d4k0xyc67is78kg416p9yc3c2f9w6fhhqqffd5jk"))))
+                "1d73a5c5qdrwck0fa5pxz0myizaf3s9alsvhiqwrjahdlr29zgkl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 9010bd71ba..2d72c39436 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -477,15 +477,15 @@ used in KDE development tools Kompare and KDevelop.")
 (define-public qca
   (package
     (name "qca")
-    (version "2.1.3")
+    (version "2.2.1")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kde/stable/qca/" version
-                            "/src/qca-" version ".tar.xz"))
+                            "/qca-" version ".tar.xz"))
         (sha256
          (base32
-          "0lz3n652z208daxypdcxiybl0a9fnn6ida0q7fh5f42269mdhgq0"))))
+          "00kv1vsrc8fp556hm8s6yw3240vx3l4067q6vfxrb3gdwgcd45np"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm
index 873f5d8a37..1253a58546 100644
--- a/gnu/packages/kerberos.scm
+++ b/gnu/packages/kerberos.scm
@@ -49,7 +49,7 @@
 (define-public mit-krb5
   (package
     (name "mit-krb5")
-    (version "1.16.2")
+    (version "1.17")
     (source (origin
               (method url-fetch)
               (uri (list
@@ -61,7 +61,7 @@
                                    "/krb5-" version ".tar.gz")))
               (sha256
                (base32
-                "09zhhzj19bmjjxsvxdrysabql8n72kjivis08wbikhlkwlgiwwlz"))))
+                "1xc1ly09697b7g2vngvx76szjqy9769kpgn27lnp1r9xln224vjs"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
@@ -116,9 +116,19 @@ cryptography.")
     (build-system gnu-build-system)
     (arguments
      '(;; This is required since we patch some of the build scripts.
-       ;; Remove for the next Shishi release after 1.0.2 or when
-       ;; removing 'shishi-fix-libgcrypt-detection.patch'.
-       #:configure-flags '("ac_cv_libgcrypt=yes" "--disable-static")))
+       ;; Remove first two items for the next Shishi release after 1.0.2 or
+       ;; when removing 'shishi-fix-libgcrypt-detection.patch'.
+       #:configure-flags
+       '("ac_cv_libgcrypt=yes" "--disable-static"
+         "--with-key-dir=/etc/shishi" "--with-db-dir=/var/shishi")
+       #:phases
+       (modify-phases %standard-phases
+        (add-after 'configure 'disable-automatic-key-generation
+          (lambda* (#:key outputs #:allow-other-keys)
+            (substitute* "Makefile"
+             (("^install-data-hook:")
+              "install-data-hook:\nx:\n"))
+            #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs
      `(("gnutls" ,gnutls)
@@ -132,7 +142,10 @@ cryptography.")
     (description
      "GNU Shishi is a free implementation of the Kerberos 5 network security
 system.  It is used to allow non-secure network nodes to communicate in a
-secure manner through client-server mutual authentication via tickets.")
+secure manner through client-server mutual authentication via tickets.
+
+After installation, the system administrator should generate keys using
+@code{shisa -a /etc/shishi/shishi.keys}.")
     (license license:gpl3+)))
 
 (define-public heimdal
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index 3d00b3843e..465ed95eb2 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -43,19 +43,19 @@
     (name "libevent")
     (version "2.1.11")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/libevent/libevent/releases/download/release-"
-                   version "-stable/libevent-" version "-stable.tar.gz"))
-             (sha256
-              (base32
-               "0g988zqm45sj1hlhhz4il5z4dpi5dl74hzjwzl4md37a09iaqnx6"))))
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/libevent/libevent/releases/download/release-"
+                    version "-stable/libevent-" version "-stable.tar.gz"))
+              (sha256
+               (base32
+                "0g988zqm45sj1hlhhz4il5z4dpi5dl74hzjwzl4md37a09iaqnx6"))))
     (build-system gnu-build-system)
     (arguments
-      ;; This skips some of the tests which fail on armhf and aarch64.
+     ;; This skips some of the tests which fail on armhf and aarch64.
      '(#:configure-flags '("--disable-libevent-regress")))
     (inputs
-     `(("python" ,python-2)))           ; for 'event_rpcgen.py'
+     `(("python" ,python-wrapper)))     ;for 'event_rpcgen.py'
     (native-inputs
      `(("which" ,which)))
     (home-page "https://libevent.org/")
@@ -75,7 +75,7 @@ loop.")
 (define-public libev
   (package
     (name "libev")
-    (version "4.24")
+    (version "4.25")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://dist.schmorp.de/libev/Attic/libev-"
@@ -83,7 +83,7 @@ loop.")
                                   ".tar.gz"))
               (sha256
                (base32
-                "08gqsza1czx0nf62nkk183jb0946yzjsymaacxbzdgcs8z9r6dcp"))))
+                "1295q0lkkbrlpd5dl5i48bh1rm8mjzh9y795jlvjz3bp4wf7wxbq"))))
     (build-system gnu-build-system)
     (home-page "http://software.schmorp.de/pkg/libev.html")
     (synopsis "Event loop loosely modelled after libevent")
@@ -99,14 +99,14 @@ limited support for fork events.")
 (define-public libuv
   (package
     (name "libuv")
-    (version "1.24.0")
+    (version "1.30.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dist.libuv.org/dist/v" version
                                   "/libuv-v" version ".tar.gz"))
               (sha256
                (base32
-                "01pg0zsfr8mxlpipkbpw0dpsl26x5s966f5br7dx9ac29abk419q"))))
+                "12s7ifwgbfxblhv46inqa8c2lsnl8cgmvd37y4a4248xhkx1d0s6"))))
     (build-system gnu-build-system)
     (arguments
      '(;; XXX: Some tests want /dev/tty, attempt to make connections, etc.
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index c1d50ec314..b61dbc8657 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -127,6 +128,30 @@ conversions for values passed between the two languages.")
                (("'cc testownlib") "'gcc testownlib"))
              (invoke "py.test" "-v" "c/" "testing/")
              #t))
+         (add-before 'check 'patch-paths-of-dynamically-loaded-libraries
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Shared libraries should be referred by their absolute path as
+             ;; using find_library or the like with their name fail when the
+             ;; resolved .so object is a linker script rather than an ELF
+             ;; binary (this is a limitation of the ctype library of Python).
+             (let* ((glibc (assoc-ref inputs "libc"))
+                    (libm (string-append glibc "/lib/libm.so.6"))
+                    (libc (string-append glibc "/lib/libc.so.6")))
+               (substitute* '("testing/cffi0/test_function.py"
+                              "testing/cffi0/test_parsing.py"
+                              "testing/cffi0/test_unicode_literals.py"
+                              "testing/cffi0/test_zdistutils.py"
+                              "testing/cffi1/test_recompiler.py")
+                 (("lib_m = ['\"]{1}m['\"]{1}")
+                  (format #f "lib_m = '~a'" libm)))
+               (substitute* '("testing/cffi0/test_verify.py"
+                              "testing/cffi1/test_verify1.py")
+                 (("lib_m = \\[['\"]{1}m['\"]{1}\\]")
+                  (format #f "lib_m = ['~a']" libm)))
+               (substitute* "c/test_c.py"
+                 (("find_and_load_library\\(['\"]{1}c['\"]{1}")
+                  (format #f "find_and_load_library('~a'" libc)))
+               #t)))
          (add-before 'check 'disable-failing-test
            ;; This is assumed to be a libffi issue:
            ;; https://bitbucket.org/cffi/cffi/issues/312/tests-failed-with-armv8
@@ -134,10 +159,9 @@ conversions for values passed between the two languages.")
              (substitute* "testing/cffi0/test_ownlib.py"
                (("ret.left") "ownlib.left"))
              #t)))))
-    (home-page "https://cffi.readthedocs.org")
+    (home-page "https://cffi.readthedocs.io/")
     (synopsis "Foreign function interface for Python")
-    (description
-     "Foreign Function Interface for Python calling C code.")
+    (description "Foreign Function Interface for Python calling C code.")
     (license expat)))
 
 (define-public python2-cffi
diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm
index 719a0f0b4b..ea9ce70dfb 100644
--- a/gnu/packages/libidn.scm
+++ b/gnu/packages/libidn.scm
@@ -59,14 +59,14 @@ Java libraries.")
 (define-public libidn2
   (package
     (name "libidn2")
-    (version "2.0.5")
+    (version "2.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/libidn/" name "-" version
                                   ".tar.lz"))
               (sha256
                (base32
-                "0s4nkazy1xbs6bbq4farby1xhmhzk5bdclbil5gqdwyzxsgabxqg"))))
+                "1a5cv79q6b719jv4fpwjl3r0mmx9qcpla98v9dk64cgxn8f8di10"))))
     (native-inputs
      `(("lzip" ,lzip)))
     (inputs
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index ce9ae40524..f8b1433aa3 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -183,6 +183,8 @@ spreadsheets and presentations.")
       (sha256 (base32
                "0436gnidx45a9vx114hhh216jrh57mqb9zyssyjfadagmyz6hgrj"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-werror")))
     (native-inputs
      `(("doxygen" ,doxygen)
        ("pkg-config" ,pkg-config)))
@@ -317,6 +319,8 @@ working with graphics in the WPG (WordPerfect Graphics) format.")
           ;; FIXME: Man pages generation requires docbook-to-man; reenable
           ;; it once this is available.
           "--without-man"
+          ;; XXX: A configure test fails with GCC7 when including Boost headers.
+          "--disable-werror"
           ;; During configure, the boost headers are found, but linking
           ;; fails without the following flag.
           (string-append "--with-boost="
@@ -558,6 +562,8 @@ Java.")
       (sha256 (base32
                "17ai8ajffr0ixxmmcv3k5vgjlcsix38ldb4fw2arild70pbsrbb6"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-werror")))
     (native-inputs
      `(("doxygen" ,doxygen)
        ("pkg-config" ,pkg-config)))
@@ -974,7 +980,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("bison" ,bison)
-       ("cppunit" ,cppunit-1.14)
+       ("cppunit" ,cppunit)
        ("flex" ,flex)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 2018f1b3f4..e6016d1049 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -372,7 +372,7 @@ connections from and to iOS devices by connecting to a socket provided by a
                             ,(version-major+minor (package-version python))
                             "m"))))
     (propagated-inputs
-     `(("openssl" ,openssl)
+     `(("openssl" ,openssl-1.0)
        ("libplist" ,libplist)
        ("libusbmuxd" ,libusbmuxd)))
     (inputs
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 027c920357..f517197021 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -90,7 +90,6 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages netpbm)
-  #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages ninja)
   #:use-module (gnu packages nss)
@@ -532,11 +531,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 
 ;; The following package is used in the early bootstrap, and thus must be kept
 ;; stable and with minimal build requirements.
-(define-public linux-libre-headers-4.14.67
-  (make-linux-libre-headers "4.14.67"
-                            "050zvdxjy6sc64q75pr1gxsmh49chwav2pwxz8xlif39bvahnrpg"))
+(define-public linux-libre-headers-4.19.56
+  (make-linux-libre-headers "4.19.56"
+                            "1zqiic55viy065lhnkmhn33sz3bbbr2ykbm5f92yzd8lpc9zl7yx"))
 
-(define-public linux-libre-headers linux-libre-headers-4.14.67)
+(define-public linux-libre-headers linux-libre-headers-4.19.56)
 
 
 ;;;
@@ -637,10 +636,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
        ("flex" ,flex)
        ("bison" ,bison)
 
-       ;; Build with GCC-7 for full retpoline support.
-       ;; FIXME: Remove this when our default compiler has retpoline support.
-       ("gcc" ,gcc-7)
-
        ;; These are needed to compile the GCC plugins.
        ("gmp" ,gmp)
        ("mpfr" ,mpfr)
@@ -1017,7 +1012,7 @@ providing the system administrator with some help in common tasks.")
 (define-public util-linux
   (package
     (name "util-linux")
-    (version "2.32.1")
+    (version "2.34")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/utils/"
@@ -1025,7 +1020,7 @@ providing the system administrator with some help in common tasks.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1ck7d8srw5szpjq7v0gpmjahnjs6wgqzm311ki4gazww6xx71rl6"))
+                "1db2kydkwjmvgd1glkcba3adhidxw0f1x735dcjdpdjjf869sgvl"))
               (patches (search-patches "util-linux-tests.patch"))
               (modules '((guix build utils)))
               (snippet
@@ -1842,7 +1837,7 @@ configuration (iptunnel, ipmaddr).")
 (define-public libcap
   (package
     (name "libcap")
-    (version "2.25")
+    (version "2.27")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1850,7 +1845,7 @@ configuration (iptunnel, ipmaddr).")
                    "libcap2/libcap-" version ".tar.xz"))
              (sha256
               (base32
-               "0qjiqc5pknaal57453nxcbz3mn1r4hkyywam41wfcglq3v2qlg39"))))
+               "0sj8kidl7qgf2qwxcbw1vadnlb30y4zvjzxswsmfdghq04npkhfs"))))
     (build-system gnu-build-system)
     (arguments '(#:phases
                  (modify-phases %standard-phases
@@ -3088,6 +3083,10 @@ in a digital read-out.")
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key inputs #:allow-other-keys)
+             ;; Don't build with '-Werror', really.
+             (substitute* "tools/lib/bpf/Makefile"
+               (("-Werror") ""))
+
              (setenv "SHELL_PATH" (which "bash"))
              (chdir "tools/perf")
              #t)))
@@ -3203,7 +3202,6 @@ thanks to the use of namespaces.")
     (inputs
      `(("libarchive" ,libarchive)
        ("python" ,python-wrapper)
-       ("nettle" ,nettle)
        ("zlib" ,zlib)
        ("squashfs-tools" ,squashfs-tools)))
     (home-page "https://singularity.lbl.gov/")
@@ -3576,6 +3574,12 @@ arrays when needed.")
                           (string-append "DESTDIR="
                                          (assoc-ref %outputs "out"))
                           "SYSTEMDPATH=lib"
+                          ;; Add the libaio headers to GCCs system header
+                          ;; search path to suppress -Werror=cast-qual on
+                          ;; the included headers.
+                          (string-append "C_INCLUDE_PATH="
+                                         (assoc-ref %build-inputs "libaio")
+                                         "/include")
                           (string-append "LDFLAGS=-Wl,-rpath="
                                          (assoc-ref %outputs "out")
                                          "/lib"))
@@ -4244,7 +4248,7 @@ The package provides additional NTFS tools.")
 (define-public rdma-core
   (package
     (name "rdma-core")
-    (version "14")
+    (version "22.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/linux-rdma/rdma-core"
@@ -4252,7 +4256,7 @@ The package provides additional NTFS tools.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0w03zd49k96bmly44qc8l0s9l671sd26k4wrilsp13xaspy048kd"))))
+                "0jgp1xh328x0kr6lkn4vq71cc627zd05wczr74b3j3151flhj828"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -4797,7 +4801,14 @@ under OpenGL graphics workloads.")
                           (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure))))
+         (delete 'configure)
+         (add-before 'build 'kernel-headers-are-system-headers
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((kernel-headers (assoc-ref inputs "kernel-headers")))
+               ;; Make sure the kernel headers are treated as system headers
+               ;; to suppress a conflict between "util.h" and <linux/fs.h>.
+             (setenv "C_INCLUDE_PATH" (string-append kernel-headers "/include"))
+             #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -4830,7 +4841,12 @@ interface to the variable facility of UEFI boot firmware.")
                           ;; installed (known as OS_VENDOR in the code).
                           ;; GRUB overrides this, as such it's only used if
                           ;; nothing else is specified on the command line.
-                          "EFIDIR=gnu")
+                          "EFIDIR=gnu"
+                          ;; Treat kernel headers as system headers to prevent
+                          ;; warnings about conflicting types.
+                          (string-append "C_INCLUDE_PATH="
+                                         (assoc-ref %build-inputs "kernel-headers")
+                                         "/include"))
        #:phases (modify-phases %standard-phases (delete 'configure))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index e48c91a2cf..d82bdc003c 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -210,8 +210,7 @@ classification.")
              (assoc-ref %standard-phases 'check))
            (add-before 'check 'fix-PYTHONPATH
              (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((python-version ((@@ (guix build python-build-system)
-                                           get-python-version)
+               (let ((python-version (python-version
                                       (assoc-ref inputs "python"))))
                  (setenv "PYTHONPATH"
                          (string-append (getenv "PYTHONPATH")
@@ -1143,16 +1142,16 @@ written in C++.")
            (replace 'configure
              (lambda* (#:key inputs #:allow-other-keys)
                (let ((glib (assoc-ref inputs "glib")))
-                 (setenv "CXXFLAGS" "-std=c++11 -fPIC")
+                 (setenv "CXXFLAGS" "-fPIC")
                  (setenv "CPLUS_INCLUDE_PATH"
                          (string-append glib "/include/glib-2.0:"
                                         glib "/lib/glib-2.0/include:"
                                         (assoc-ref inputs "gstreamer")
-                                        "/include/gstreamer-1.0:"
-                                        (getenv "CPLUS_INCLUDE_PATH"))))
+                                        "/include/gstreamer-1.0")))
                (substitute* "Makefile"
                  (("include \\$\\(KALDI_ROOT\\)/src/kaldi.mk") "")
-                 (("\\$\\(error Cannot find") "#"))))
+                 (("\\$\\(error Cannot find") "#"))
+               #t))
            (add-before 'build 'build-depend
              (lambda* (#:key make-flags #:allow-other-keys)
                (apply invoke "make" "depend" make-flags)))
@@ -1296,7 +1295,7 @@ Python.")
              "-DgRPC_SSL_PROVIDER=package"
              "-DgRPC_PROTOBUF_PROVIDER=package")))
     (inputs
-     `(("c-ares" ,c-ares-next)
+     `(("c-ares" ,c-ares/cmake)
        ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (native-inputs
@@ -1608,6 +1607,9 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
        ("protobuf:native" ,protobuf-next) ; protoc
        ("protobuf:src" ,(package-source protobuf-next))
        ("eigen:src" ,(package-source eigen-for-tensorflow))
+       ;; install_pip_packages.sh wants setuptools 39.1.0 specifically.
+       ("python-setuptools" ,python-setuptools-for-tensorflow)
+
        ;; The commit hashes and URLs for third-party source code are taken
        ;; from "tensorflow/workspace.bzl".
        ("boringssl-src"
@@ -1735,7 +1737,7 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
        ("python-termcolo" ,python-termcolor)
        ("python-wheel" ,python-wheel)))
     (inputs
-     `(("c-ares" ,c-ares-next)
+     `(("c-ares" ,c-ares)
        ("eigen" ,eigen-for-tensorflow)
        ("gemmlowp" ,gemmlowp-for-tensorflow)
        ("lmdb" ,lmdb)
@@ -1854,6 +1856,7 @@ with image data, text data, and sequence data.")
      (origin
        (method url-fetch)
        (uri (pypi-uri "Keras" version))
+       (patches (search-patches "python-keras-integration-test.patch"))
        (sha256
         (base32
          "1j8bsqzh49vjdxy6l1k4iwax5vpjzniynyd041xjavdzvfii1dlh"))))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 3d5417bfb5..6fa2832b5c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1441,7 +1441,7 @@ hashing schemes plugin for @code{Dovecot}.")
     (inputs
      `(("bdb" ,bdb)
        ("cyrus-sasl" ,cyrus-sasl)
-       ("openssl" ,openssl)
+       ("openssl" ,openssl-1.0)
        ("zlib" ,zlib)))
     (home-page "http://isync.sourceforge.net/")
     (synopsis "Mailbox synchronization program")
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 37bf4e9744..4594e2fe36 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -3,7 +3,8 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -105,20 +106,52 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
 
   (define (native-inputs)
     (if (%current-target-system)
-        (let ((target (%current-target-system)))
-          `(("cross-gcc"      ,(cross-gcc target
-                                          #:xbinutils (cross-binutils target)
-                                          #:libc (cross-bootstrap-libc)))
+        (let* ((target (%current-target-system))
+               (xgcc (cross-gcc
+                      target
+                      #:xbinutils (cross-binutils target)
+                      #:libc (cross-bootstrap-libc))))
+          `(("cross-gcc" ,(package
+                            (inherit xgcc)
+                            (search-paths
+                             ;; Ensure the cross libc headers appears on the
+                             ;; C++ system header search path.
+                             (cons (search-path-specification
+                                    (variable "CROSS_CPLUS_INCLUDE_PATH")
+                                    (files '("include")))
+                                   (package-search-paths gcc)))))
             ("cross-binutils" ,(cross-binutils target))
             ,@(%final-inputs)))
         `(("libc" ,(glibc-for-bootstrap))
           ("libc:static" ,(glibc-for-bootstrap) "static")
           ("gcc" ,(package (inherit gcc)
-                    (outputs '("out")) ; all in one so libgcc_s is easily found
+                    (outputs '("out"))  ;all in one so libgcc_s is easily found
+                    (native-search-paths
+                     ;; Set CPLUS_INCLUDE_PATH so GCC is able to find the libc
+                     ;; C++ headers.
+                     (cons (search-path-specification
+                            (variable "CPLUS_INCLUDE_PATH")
+                            (files '("include")))
+                           (package-native-search-paths gcc)))
                     (inputs
-                     `(("libc" ,(glibc-for-bootstrap))
+                     `(;; Distinguish the name so we can refer to it below.
+                       ("bootstrap-libc" ,(glibc-for-bootstrap))
                        ("libc:static" ,(glibc-for-bootstrap) "static")
-                       ,@(package-inputs gcc)))))
+                       ,@(package-inputs gcc)))
+                    (arguments
+                     (substitute-keyword-arguments (package-arguments gcc)
+                       ((#:phases phases)
+                        `(modify-phases ,phases
+                           (add-before 'configure 'treat-glibc-as-system-header
+                             (lambda* (#:key inputs #:allow-other-keys)
+                               (let ((libc (assoc-ref inputs "bootstrap-libc")))
+                                 ;; GCCs build processes requires that the libc
+                                 ;; we're building against is on the system header
+                                 ;; search path.
+                                 (for-each (lambda (var)
+                                             (setenv var (string-append libc "/include")))
+                                           '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
+                                 #t)))))))))
           ,@(fold alist-delete (%final-inputs) '("libc" "gcc")))))
 
   (package-with-explicit-inputs p inputs
@@ -143,7 +176,15 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                            "--disable-silent-rules"
                            "--enable-no-install-program=stdbuf,libstdbuf.so"
                            "CFLAGS=-Os -g0"        ; smaller, please
-                           "LDFLAGS=-static -pthread")
+                           "LDFLAGS=-static -pthread"
+
+                           ;; Work around a cross-compilation bug whereby libcoreutils.a
+                           ;; would provide '__mktime_internal', which conflicts with the
+                           ;; one in libc.a.
+                           ,@(if (%current-target-system)
+                                 `("gl_cv_func_working_mktime=yes")
+                                 '()))
+
                          #:tests? #f   ; signal-related Gnulib tests fail
                          ,@(package-arguments coreutils)))
 
@@ -168,6 +209,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                                "LDFLAGS = -static"))
                             #t))))))))
         (xz (package (inherit xz)
+              (outputs '("out"))
               (arguments
                `(#:strip-flags '("--strip-all")
                  #:phases (modify-phases %standard-phases
@@ -205,17 +247,22 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                             '()))))
 	(tar (package (inherit tar)
 	       (arguments
-                (substitute-keyword-arguments (package-arguments tar)
-                  ((#:phases phases)
-                   `(modify-phases ,phases
-                      (replace 'set-shell-file-name
-                        (lambda _
-                          ;; Do not use "/bin/sh" to run programs; see
-                          ;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg02272.html>.
-                          (substitute* "src/system.c"
-                            (("/bin/sh") "sh")
-                            (("execv ") "execvp "))
-                          #t))))))))
+                `(;; Work around a cross-compilation bug whereby libgnu.a would provide
+                  ;; '__mktime_internal', which conflicts with the one in libc.a.
+                  ,@(if (%current-target-system)
+                        `(#:configure-flags '("gl_cv_func_working_mktime=yes"))
+                        '())
+                  ,@(substitute-keyword-arguments (package-arguments tar)
+                      ((#:phases phases)
+                       `(modify-phases ,phases
+                          (replace 'set-shell-file-name
+                            (lambda _
+                              ;; Do not use "/bin/sh" to run programs; see
+                              ;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg02272.html>.
+                              (substitute* "src/system.c"
+                                (("/bin/sh") "sh")
+                                (("execv ") "execvp "))
+                              #t)))))))))
         ;; We don't want to retain a reference to /gnu/store in the bootstrap
         ;; versions of egrep/fgrep, so we remove the custom phase added since
         ;; grep@2.25. The effect is 'egrep' and 'fgrep' look for 'grep' in
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index e0e15355dd..42e1918597 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -198,7 +198,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
 (define-public help2man
   (package
     (name "help2man")
-    (version "1.47.6")
+    (version "1.47.10")
     (source
      (origin
       (method url-fetch)
@@ -206,7 +206,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
                           version ".tar.xz"))
       (sha256
        (base32
-        "0vz4dlrvy4vc6l7w0a7n668pfa0rdm73wr2gar58wqranyah46yr"))))
+        "1yywli520246aba12vpgj7bhr1r13swad3xm49a0cygqcgywnwgk"))))
     (build-system gnu-build-system)
     (arguments `(;; There's no `check' target.
                  #:tests? #f))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 9e9fda0929..ba90ccec73 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -56,7 +56,6 @@
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages messaging)
-  #:use-module (gnu packages nettle)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pdf)
@@ -819,7 +818,6 @@ infamous 'Wanda the Fish'.")
        ("libgnome-keyring" ,libgnome-keyring)
        ("libarchive" ,libarchive)
        ("marco" ,marco)
-       ("nettle" ,nettle)
        ("openjpeg" ,openjpeg-1)
        ("pango" ,pango)
        ;;("texlive" ,texlive)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 2e0883a724..ef50dfcded 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -101,6 +101,7 @@
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages perl)
@@ -685,7 +686,8 @@ computations.")
         (base32 "0n29klrrbwan9307np0d9hr128dlpc4nnlf57a140080ll3jmp8l"))
        (patches (search-patches "hdf4-architectures.patch"
                                 "hdf4-reproducibility.patch"
-                                "hdf4-shared-fortran.patch"))))
+                                "hdf4-shared-fortran.patch"
+                                "hdf4-tirpc.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)
@@ -693,10 +695,14 @@ computations.")
        ("flex" ,flex)))
     (inputs
      `(("zlib" ,zlib)
-       ("libjpeg" ,libjpeg)))
+       ("libjpeg" ,libjpeg)
+       ("libtirpc" ,libtirpc)))
     (arguments
      `(#:parallel-tests? #f
-       #:configure-flags '("--enable-shared")
+       #:configure-flags (list "--enable-shared"
+                               (string-append "CPPFLAGS=-I"
+                                              (assoc-ref %build-inputs "libtirpc")
+                                              "/include/tirpc"))
        #:phases
        (modify-phases %standard-phases
          ;; This is inspired by two of Debian's patches.
@@ -1045,8 +1051,11 @@ implemented in C.")
      `(("gfortran" ,gfortran)))
     (inputs
      `(("hdf4" ,hdf4-alt) ; assume most HDF-EOS2 users won't use the HDF4 netCDF API
+       ;; XXX: These inputs are really dependencies of hdf4.
        ("zlib" ,zlib)
        ("libjpeg" ,libjpeg)
+       ("libtirpc" ,libtirpc)
+
        ("gctp" ,gctp)))
     (arguments
      `( #:configure-flags '("--enable-install-include" "--enable-shared"
@@ -3100,7 +3109,7 @@ parts of it.")
     (replacement openblas/fixed-num-threads)
 
     (name "openblas")
-    (version "0.3.5")
+    (version "0.3.6")
     (source
      (origin
        (method url-fetch)
@@ -3109,7 +3118,7 @@ parts of it.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "062kg4ny1ywz7k5grpb4pbf0hba0w6manbajwkmv4f477a31sxpl"))))
+         "1r2g9zzwq5dm8vjd19pxwggfvfzy56cvkmpmp5d014qr3svgmsap"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -4859,8 +4868,7 @@ assemble global function spaces on finite-element grids.")
          (add-after 'build 'build-tests
            (lambda* (#:key inputs make-flags #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
-                     (string-append (assoc-ref inputs "dune-grid") "/share:"
-                                    (getenv "CPLUS_INCLUDE_PATH")))
+                     (string-append (assoc-ref inputs "dune-grid") "/share"))
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 49224a7ba5..e1cb736b82 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -21,7 +21,6 @@
 (define-module (gnu packages mes)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
-  #:use-module (gnu packages commencement)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graphviz)
@@ -136,7 +135,40 @@ Guile.")
     (license gpl3+)))
 
 (define-public mescc-tools
+  (let ((commit "bb062b0da7bf2724ca40f9002b121579898d4ef7")
+        (revision "0")
+        (version "0.5.2"))
+    (package
+      (name "mescc-tools")
+      (version (string-append version "-" revision "." (string-take commit 7)))
+      (source (origin
+                (method url-fetch)
+                (uri (string-append
+                      "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/"
+                      name "-" commit
+                      ".tar.gz"))
+                (sha256
+                 (base32
+                  "1h6j57wyf91i42b26f8msbv6451cw3nm4nmpl1fckp9c7vi8mwkh"))))
+      (build-system gnu-build-system)
+      (supported-systems '("i686-linux" "x86_64-linux"))
+      (arguments
+       `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+         #:test-target "test"
+         #:phases (modify-phases %standard-phases
+                    (delete 'configure))))
+      (synopsis "Tools for the full source bootstrapping process")
+      (description
+       "Mescc-tools is a collection of tools for use in a full source
+bootstrapping process.  It consists of the M1 macro assembler, the hex2
+linker, the blood-elf symbol table generator, the kaem shell, exec_enable and
+get_machine.")
+    (home-page "https://savannah.nongnu.org/projects/mescc-tools")
+    (license gpl3+))))
+
+(define-public mescc-tools-0.6.1
   (package
+    (inherit mescc-tools)
     (name "mescc-tools")
     (version "0.6.1")
     (source (origin
@@ -148,20 +180,4 @@ Guile.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n"))))
-    (build-system gnu-build-system)
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (arguments
-     `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-                          "CC=gcc")
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure))))
-    (synopsis "Tools for the full source bootstrapping process")
-    (description
-     "Mescc-tools is a collection of tools for use in a full source
-bootstrapping process.  It consists of the M1 macro assembler, the hex2
-linker, the blood-elf symbol table generator, the kaem shell, exec_enable and
-get_machine.")
-    (home-page "https://savannah.nongnu.org/projects/mescc-tools")
-    (license gpl3+)))
+                "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n"))))))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index fafb61c681..57ecef4913 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -33,7 +33,6 @@
   #:use-module (guix build-system python)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
-  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
@@ -103,17 +102,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                 "0iknnm9xvwfgk8h82hjwrmbijpk9l0dgap0794c2nyg8i66qlb0y"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Ddocumentation=true") ; the default is 'false'...
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'expand-C++-include-path
-           ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((path "CPLUS_INCLUDE_PATH")
-                    (gcc  (assoc-ref inputs "gcc"))
-                    (c++  (string-append gcc "/include/c++")))
-               (setenv path (string-append c++ ":" (getenv path)))
-               #t))))))
+     `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'...
     (inputs `(("ao" ,ao)
               ("alsa-lib" ,alsa-lib)
               ("avahi" ,avahi)
@@ -135,10 +124,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
               ("pulseaudio" ,pulseaudio)
               ("sqlite" ,sqlite)
               ("zlib" ,zlib)))
-    ;; MPD > 0.21 requires > GCC 6
-    (native-inputs `(("gcc" ,gcc-8)
-                     ("gcc-lib" ,gcc-8 "lib")
-                     ("pkg-config" ,pkg-config)
+    (native-inputs `(("pkg-config" ,pkg-config)
                      ("python-sphinx" ,python-sphinx)))
     ;; Missing optional inputs:
     ;;   libyajl
@@ -211,19 +197,8 @@ player daemon.")
        ;; Otherwise, they are installed incorrectly, in
        ;; '$out/share/man/man/man1'.
        (list (string-append "-Dmandir=" (assoc-ref %outputs "out")
-                            "/share"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'expand-C++-include-path
-           ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((path "CPLUS_INCLUDE_PATH")
-                    (gcc  (assoc-ref inputs "gcc"))
-                    (c++  (string-append gcc "/include/c++")))
-               (setenv path (string-append c++ ":" (getenv path)))
-               #t))))))
-    (inputs `(("gcc" ,gcc-8)            ; for its C++14 support
-              ("boost" ,boost)
+                            "/share"))))
+    (inputs `(("boost" ,boost)
               ("pcre" ,pcre)
               ("libmpdclient" ,libmpdclient)
               ("ncurses" ,ncurses)))
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index c9cd7b1382..c02e1d2e2b 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -217,12 +217,10 @@ bind processes, and much more.")
                     (lambda* (#:key inputs #:allow-other-keys)
                       (setenv "C_INCLUDE_PATH"
                               (string-append (assoc-ref inputs "opensm")
-                                             "/include/infiniband/:"
-                                             (getenv "C_INCLUDE_PATH")))
+                                             "/include/infiniband"))
                       (setenv "CPLUS_INCLUDE_PATH"
                               (string-append (assoc-ref inputs "opensm")
-                                             "/include/infiniband/:"
-                                             (getenv "CPLUS_INCLUDE_PATH")))
+                                             "/include/infiniband"))
                       #t))
                   (add-before 'build 'remove-absolute
                     (lambda _
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 3d899941be..8e89836595 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -92,13 +92,13 @@ It is aimed at use in, for example, cryptography and computational algebra.")
 (define-public mpfr
   (package
    (name "mpfr")
-   (version "4.0.1")
+   (version "4.0.2")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/mpfr/mpfr-" version
                                 ".tar.xz"))
             (sha256 (base32
-                     "0vp1lrc08gcmwdaqck6bpzllkrykvp06vz5gnqpyw0v3h9h4m1v7"))))
+                     "12m3amcavhpqygc499s3fzqlb8f2j2rr7fkqsm10xbjfc04fffqx"))))
    (build-system gnu-build-system)
    (outputs '("out" "debug"))
    (propagated-inputs `(("gmp" ,gmp)))            ; <mpfr.h> refers to <gmp.h>
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 508f2ea3bf..d141be75ea 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2018 nee <nee.git@hidamari.blue>
 ;;; Copyright © 2018 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
@@ -777,6 +777,11 @@ audio and video).")
        #:tests? #f ; no "check" target
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'be-permissive
+           (lambda _
+             (substitute* "SConstruct"
+               (("'-Wall'") "'-Wall', '-fpermissive'"))
+             #t))
          (add-after 'unpack 'replace-removed-scons-syntax
            (lambda _
              (substitute* "SConstruct"
@@ -1024,14 +1029,6 @@ Guile.")
                                                        (%current-system))))
                      '("--disable-sse")
                      '()))
-         #:phases
-         (modify-phases %standard-phases
-           (add-before
-            'configure 'set-flags
-            (lambda _
-              ;; Compile with C++11, required by libsigc++.
-              (setenv "CXXFLAGS" "-std=c++11")
-              #t)))
          #:python ,python-2))
       (inputs
        `(("jack" ,jack-1)
@@ -2797,7 +2794,7 @@ websites such as Libre.fm.")
                   (add-before 'build 'change-directory
                     (lambda _
                       (chdir "instantmusic-0.1") #t))
-                  (add-before 'check 'fix-file-permissions
+                  (add-before 'install 'fix-file-permissions
                     (lambda _
                       ;; Fix some read-only files that would cause a build failure
                       (for-each (cut chmod <> #o644)
@@ -2991,8 +2988,7 @@ with a number of bugfixes and changes to improve IT playback.")
               (patches (search-patches "sooperlooper-build-with-wx-30.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "CXXFLAGS=-std=gnu++11")
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'add-sigc++-includes
            (lambda* (#:key inputs #:allow-other-keys)
@@ -3004,7 +3000,8 @@ with a number of bugfixes and changes to improve IT playback.")
                                       sig "/lib/sigc++-2.0/include:"
                                       xml "/include/libxml2/:"
                                       cwd "/libs/pbd:"
-                                      cwd "/libs/midi++")))
+                                      cwd "/libs/midi++:"
+                                      (or (getenv "CPATH") ""))))
              (substitute* '("src/control_osc.hpp"
                             "src/gui/app_frame.hpp"
                             "src/gui/config_panel.hpp"
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index a35ff9b400..78e9ba1377 100644
--- a/gnu/packages/ncurses.scm
+++ b/gnu/packages/ncurses.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -40,7 +40,7 @@
 (define-public ncurses
   (package
     (name "ncurses")
-    (version "6.1")
+    (version "6.1-20190609")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/ncurses/ncurses-"
@@ -84,8 +84,7 @@
                (copy-file (assoc-ref (or native-inputs inputs) "rollup-patch")
                           (string-append (getcwd) "/rollup-patch.sh.bz2"))
                (invoke "bzip2" "-d" "rollup-patch.sh.bz2")
-               (invoke "sh" "rollup-patch.sh")
-               #t))
+               (invoke "sh" "rollup-patch.sh")))
            (remove-shebang-phase
             '(lambda _
                ;; To avoid retaining a reference to the bootstrap Bash via the
@@ -189,17 +188,31 @@
               ,@(if (target-mingw?) '("--enable-term-driver") '()))))
          #:tests? #f                  ; no "check" target
          #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'apply-rollup-patch
+                      ,apply-rollup-patch-phase)
                     (replace 'configure ,configure-phase)
                     (add-after 'install 'post-install
                       ,post-install-phase)
                     (add-before 'configure 'patch-makefile-SHELL
                       ,patch-makefile-phase)
-                    (add-after 'unpack 'remove-unneeded-shebang
+                    (add-before 'patch-source-shebangs 'remove-unneeded-shebang
                       ,remove-shebang-phase)))))
     (native-inputs
      `(,@(if (%current-target-system)
              `(("self" ,this-package))            ;for `tic'
              '())
+
+       ("rollup-patch"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://invisible-mirror.net/archives/ncurses/"
+                 (car (string-split version #\-))
+                 "/ncurses-" version "-patch.sh.bz2"))
+           (sha256
+            (base32
+             "0hqlqdqmh7lfs6dwj763qksb4j9nk0pv6crzx5gnp6n4caz3i46g"))))
+
        ("pkg-config" ,pkg-config)))
     (native-search-paths
      (list (search-path-specification
diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm
index 1f91b74d8b..f5e7188ff0 100644
--- a/gnu/packages/nettle.scm
+++ b/gnu/packages/nettle.scm
@@ -75,14 +75,14 @@ themselves.")
   ;; This version is not API-compatible with version 2.  In particular, lsh
   ;; cannot use it yet.  So keep it separate.
   (package (inherit nettle-2)
-    (version "3.4.1")
+    (version "3.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/nettle/nettle-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1bcji95n1iz9p9vsgdgr26v6s7zhpsxfbjjwpqcihpfd6lawyhgr"))))
+                "06clvkdfxhlbagn4afssylmn5vrak59dlmnvy8b2xc31hycs3k3m"))))
     (arguments
      (substitute-keyword-arguments (package-arguments nettle-2)
        ((#:configure-flags flags)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 11c9c6a37f..e49922a523 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -276,13 +276,13 @@ transparently check connection attempts against an access control list.")
   (package
     (name "zeromq")
     (version "4.3.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/zeromq/libzmq/releases/"
-                           "download/v" version "/zeromq-" version ".tar.gz"))
-       (sha256
-        (base32 "0qzp80ky4y2k7k1ya09v9gkivvfbz2km813snrb8jhnn634bbmzb"))))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/zeromq/libzmq/releases"
+                                  "/download/v" version "/zeromq-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0qzp80ky4y2k7k1ya09v9gkivvfbz2km813snrb8jhnn634bbmzb"))))
     (build-system gnu-build-system)
     (home-page "https://zeromq.org")
     (synopsis "Library for message-based applications")
@@ -298,7 +298,7 @@ more.")
 (define-public czmq
   (package
     (name "czmq")
-    (version "4.1.1")
+    (version "4.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -307,21 +307,19 @@ more.")
                     "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1h5hrcsc30fcwb032vy5gxkq4j4vv1y4dj460rfs1hhxi0cz83zh"))))
+                "1szciz62sk3fm4ga9qjpxz0n0lazvphm32km95bq92ncng12kayg"))))
     (build-system gnu-build-system)
     (arguments
-     '(;; TODO Tests fail for some reason:
-       ;;  * zauth: OK
-       ;;  * zbeacon: OK (skipping test, no UDP broadcasting)
-       ;; E: (czmq_selftest) 18-02-24 16:25:52 No broadcast interface found, (ZSYS_INTERFACE=lo)
-       ;; make[2]: *** [Makefile:2245: check-local] Segmentation fault
-       ;; make[2]: Leaving directory '/tmp/guix-build-czmq-4.1.0.drv-0/czmq-4.1.0'
-       ;; make[1]: *** [Makefile:2032: check-am] Error 2
-       ;; make[1]: Leaving directory '/tmp/guix-build-czmq-4.1.0.drv-0/czmq-4.1.0'
-       ;; make: *** [Makefile:1588: check-recursive] Error 1
-       ;; phase `check' failed after 19.4 seconds
-       #:tests? #f
-       #:configure-flags '("--enable-drafts")))
+     '(#:configure-flags '("--enable-drafts")
+       #:phases (modify-phases %standard-phases
+                  (add-before 'check 'patch-tests
+                    (lambda _
+                      ;; XXX FIXME: Disable the zproc test, which fails on some
+                      ;; hardware: <https://github.com/zeromq/czmq/issues/2007>.
+                      (substitute* "src/czmq_selftest.c"
+                        (("\\{ \"zproc\", zproc_test.*")
+                         ""))
+                      #t)))))
     (inputs
      `(("zeromq" ,zeromq)))
     (home-page "http://zeromq.org")
@@ -1726,7 +1724,7 @@ enabled due to license conflicts between the BSD advertising clause and the GPL.
     (arguments
      `(#:tests? #f)) ; No tests are included
     (inputs
-     `(("openssl" ,openssl))) ; For the DES library
+     `(("openssl" ,openssl-1.0)))       ;for the DES library
     (home-page "https://www.lysator.liu.se/~pen/pidentd/")
     (synopsis "Small Ident Daemon")
     (description
@@ -2118,6 +2116,12 @@ remotely.")
                (base32
                 "0qz2730bng1gs9xbqxhkw88qbsmszgmmrl2g9k6xrg6r3bqvsdc7"))))
     (build-system gnu-build-system)
+    (arguments
+     `(;; Ensure the kernel headers are treated as system headers to suppress
+       ;; harmless -Werror=pedantic warnings.
+       #:make-flags (list (string-append "C_INCLUDE_PATH="
+                                         (assoc-ref %build-inputs "kernel-headers")
+                                         "/include"))))
     (inputs `(("zeromq" ,zeromq)
               ("czmq" ,czmq)
               ("libsodium" ,libsodium)))
@@ -2389,8 +2393,7 @@ Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
                      (string-append (assoc-ref inputs "curl") "/include:"
                                     (assoc-ref inputs "libpcap") "/include:"
                                     (assoc-ref inputs "openssl") "/include:"
-                                    (assoc-ref inputs "zlib") "/include:"
-                                    (getenv "C_INCLUDE_PATH")))
+                                    (assoc-ref inputs "zlib") "/include"))
              #t)))))
     (home-page "https://github.com/ZerBea/hcxtools")
     (synopsis "Capture wlan traffic to hashcat and John the Ripper")
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index 0791abe764..a8ad6430ba 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -40,7 +40,7 @@
                (base32
                 "1ffmzj5s9h98qhl94d9i23zcv057rsqbac9g1hdgvlzq51ccfzjx"))))
     (build-system gnu-build-system)
-    (native-inputs `(("python" ,python-2)))
+    (inputs `(("python" ,python-wrapper)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index bf585a9686..83427d935f 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -45,15 +45,14 @@
 (define-public node
   (package
     (name "node")
-    ;; XXX When updating, check if tests below (e.g. crypto) can be reënabled.
-    (version "10.15.3")
+    (version "10.16.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nodejs.org/dist/v" version
                                   "/node-v" version ".tar.xz"))
               (sha256
                (base32
-                "1mcijznh481s44i59p571a38bfvcxm9f8x2l0l1005aly0kdj8jf"))
+                "0236jlb1hxhzqjlmmlxipcycrndiq92c8434iyy7zshh3n4pzqqq"))
               (modules '((guix build utils)))
               (snippet
                `(begin
@@ -91,17 +90,12 @@
        (modify-phases %standard-phases
          (add-before 'configure 'patch-files
            (lambda* (#:key inputs #:allow-other-keys)
-
-             ;; FIXME: These tests fail with openssl@1.1.1d.
-             (for-each delete-file
-                       '("test/parallel/test-crypto-binary-default.js"
-                         "test/parallel/test-crypto-dh.js"))
-
              ;; Fix hardcoded /bin/sh references.
              (substitute* '("lib/child_process.js"
                             "lib/internal/v8_prof_polyfill.js"
                             "test/parallel/test-child-process-spawnsync-shell.js"
-                            "test/parallel/test-stdio-closed.js")
+                            "test/parallel/test-stdio-closed.js"
+                            "test/sequential/test-child-process-emfile.js")
                (("'/bin/sh'")
                 (string-append "'" (which "sh") "'")))
 
@@ -115,18 +109,13 @@
              ;; FIXME: These tests fail in the build container, but they don't
              ;; seem to be indicative of real problems in practice.
              (for-each delete-file
-                       '("test/async-hooks/test-ttywrap.readstream.js"
-                         "test/parallel/test-util-inspect.js"
-                         "test/parallel/test-v8-serdes.js"
-                         "test/parallel/test-dgram-membership.js"
-                         "test/parallel/test-dns-cancel-reverse-lookup.js"
-                         "test/parallel/test-dns-resolveany.js"
-                         "test/parallel/test-cluster-master-error.js"
+                       '("test/parallel/test-cluster-master-error.js"
                          "test/parallel/test-cluster-master-kill.js"
-                         "test/parallel/test-net-listen-after-destroying-stdin.js"
-                         "test/parallel/test-npm-install.js"
-                         "test/sequential/test-child-process-emfile.js"
-                         "test/sequential/test-http-regr-gh-2928.js"))
+                         ;; See also <https://github.com/nodejs/node/issues/25903>.
+                         "test/sequential/test-performance.js"))
+
+             ;; This requires a DNS resolver.
+             (delete-file "test/parallel/test-dns.js")
 
              ;; These tests have an expiry date: they depend on the validity of
              ;; TLS certificates that are bundled with the source.  We want this
@@ -179,7 +168,7 @@
        ("icu4c" ,icu4c)
        ("libuv" ,libuv)
        ("nghttp2" ,nghttp2 "lib")
-       ("openssl" ,openssl-next)
+       ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (synopsis "Evented I/O for V8 JavaScript")
     (description "Node.js is a platform built on Chrome's JavaScript runtime
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index 8f66b07527..7e424dd185 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,7 +46,8 @@
                 "07anqypf7c719x9y683qz65cxllmzlgmlab2hlahrqcj4bq2k99c"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--disable-static")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'remote-dangling-symlink
            (lambda _
@@ -100,6 +102,26 @@ IPv4 and IPv6.  ONC RPC is notably used by the network file system (NFS).")
 universal addresses.")
     (license bsd-3)))
 
+(define-public rpcsvc-proto
+  (package
+    (name "rpcsvc-proto")
+    (version "1.4")
+    (home-page "https://github.com/thkukuk/rpcsvc-proto")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "/releases/download/v" version
+                                  "/rpcsvc-proto-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0i93wbpw5dk2gf5v4a5hq6frh814wzgjydh7saj28wlgbpqdaja1"))))
+    (build-system gnu-build-system)
+    (synopsis "RPCSVC protocol definitions")
+    (description
+     "This package provides @code{rpcsvc} @file{protocol.x} files and headers
+that are not included with the @code{libtirpc} package.  Additionally it
+contains @command{rpcgen}, which is used to produce header files and sources
+from the protocol files.")
+    (license bsd-3)))
 
 (define-public libnsl
   (package
@@ -115,6 +137,15 @@ universal addresses.")
                (base32
                 "1chzqhcgh0yia9js8mh92cmhyka7rh32ql6b3mgdk26n94dqzs8b"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-static")
+       #:phases (modify-phases %standard-phases
+                  (add-before 'bootstrap 'gettextize
+                    (lambda _
+                      ;; Regenerate the bundled Makefile.in.in to avoid a
+                      ;; "gettext infrastructure mismatch" because the
+                      ;; existing version was generated by an older gettext.
+                      (invoke "gettextize" "-f"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index b84a417ff5..2f80920ed4 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -57,7 +57,7 @@
 (define-public openldap
   (package
    (name "openldap")
-   (version "2.4.46")
+   (version "2.4.47")
    (source (origin
             (method url-fetch)
 
@@ -74,7 +74,7 @@
                         "openldap-release/openldap-" version ".tgz")))
             (sha256
              (base32
-              "0bab1km8f2nan1x0zgwliknbxg0zlf2pafxrr867kblrdfwdr44s"))))
+              "02sj0p1pq12hqq29b22m3f5zs2rykgvc0q3wlynxjcsjhrvmhk7m"))))
    (build-system gnu-build-system)
    (inputs `(("bdb" ,bdb-5.3)
              ("cyrus-sasl" ,cyrus-sasl)
@@ -211,7 +211,11 @@ servers from Python programs.")
     (arguments
      `(#:modules ((srfi srfi-1)
                   (guix build gnu-build-system)
+                  ((guix build python-build-system)
+                   #:select (python-version))
                   (guix build utils))
+       #:imported-modules ((guix build python-build-system)
+                           ,@%gnu-build-system-modules)
        #:configure-flags
        (list (string-append "--with-db="
                             (assoc-ref %build-inputs "bdb"))
@@ -263,16 +267,9 @@ servers from Python programs.")
          (add-after 'unpack 'fix-install-location-of-python-tools
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (get-python-version
-                     ;; FIXME: copied from python-build-system
-                     (lambda (python)
-                       (let* ((version     (last (string-split python #\-)))
-                              (components  (string-split version #\.))
-                              (major+minor (take components 2)))
-                         (string-join major+minor "."))))
                     (pythondir (string-append
                                 out "/lib/python"
-                                (get-python-version (assoc-ref inputs "python"))
+                                (python-version (assoc-ref inputs "python"))
                                 "/site-packages/")))
                ;; Install directory must be on PYTHONPATH.
                (setenv "PYTHONPATH"
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index ee9efb6eb1..c72950e2b0 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -527,7 +527,6 @@ symlinks to the files in a common directory such as /usr/local.")
        ("nss" ,nss)
        ("nspr" ,nspr)
        ("libarchive" ,libarchive)
-       ("nettle" ,nettle)            ;XXX: actually a dependency of libarchive
        ("file" ,file)
        ("bzip2" ,bzip2)
        ("zlib" ,zlib)
@@ -711,8 +710,7 @@ This package provides Conda as a library.")
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
                       (target (string-append out "/lib/python"
-                                             ((@@ (guix build python-build-system)
-                                                  get-python-version)
+                                             (python-version
                                               (assoc-ref inputs "python"))
                                              "/site-packages/")))
                  ;; The installer aborts if the target directory is not on
@@ -879,7 +877,6 @@ for packaging and deployment of cross-compiled Windows applications.")
        ("gpgme" ,gpgme)
        ("libarchive" ,libarchive)
        ("libsoup" ,libsoup)
-       ("nettle" ,nettle)               ; required by 'libarchive.la'
        ("util-linux" ,util-linux)))
     (home-page "https://ostree.readthedocs.io/en/latest/")
     (synopsis "Operating system and container binary deployment and upgrades")
@@ -939,7 +936,6 @@ the boot loader configuration.")
              ("libsoup" ,libsoup)
              ("libxau" ,libxau)
              ("libxml2" ,libxml2)
-             ("nettle" ,nettle)
              ("util-linux" ,util-linux)))
    (home-page "https://flatpak.org")
    (synopsis "System for building, distributing, and running sandboxed desktop
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 6ca16025ef..ff13be24db 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -766,7 +766,7 @@ between hosts and entries in the password store.")
          ("krb5" ,mit-krb5)
          ("libpcap" ,libpcap)
          ("nss" ,nss)
-         ("openssl" ,openssl)
+         ("openssl" ,openssl-1.0)
          ("zlib" ,zlib)))
       (arguments
        `(#:configure-flags
diff --git a/gnu/packages/patches/acl-fix-perl-regex.patch b/gnu/packages/patches/acl-fix-perl-regex.patch
deleted file mode 100644
index f682abc058..0000000000
--- a/gnu/packages/patches/acl-fix-perl-regex.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-This can be removed with the next acl release
-
----
- test/run | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/test/run b/test/run
-index 2cf52e8..4627cd2 100755
---- a/test/run
-+++ b/test/run
-@@ -70,7 +70,7 @@ for (;;) {
-   if (defined $line) {
-     # Substitute %VAR and %{VAR} with environment variables.
-     $line =~ s[%(\w+)][$ENV{$1}]eg;
--    $line =~ s[%{(\w+)}][$ENV{$1}]eg;
-+    $line =~ s[%\{(\w+)\}][$ENV{$1}]eg;
-   }
-   if (defined $line) {
-     if ($line =~ s/^\s*< ?//) {
--- 
-2.15.0
-
diff --git a/gnu/packages/patches/acl-hurd-path-max.patch b/gnu/packages/patches/acl-hurd-path-max.patch
deleted file mode 100644
index 89cb3a38d7..0000000000
--- a/gnu/packages/patches/acl-hurd-path-max.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636512
-
-From: Svante Signell <srs@kth.se>
-Subject: acl: Fix FTBFS on hurd-i386
-Date: Wed, 03 Aug 2011 19:36:27 +0200
-
-Currently acl does not compile on hurd-i386. The problem is a PATH_MAX
-definition which is not supported on GNU/Hurd.
-
-Index: acl-2.2.52/setfacl/parse.c
-===================================================================
---- acl-2.2.52/setfacl/parse.c
-+++ acl-2.2.52/setfacl/parse.c
-@@ -419,7 +419,13 @@ read_acl_comments(
- 	  bytes for "# file: ". Not a good solution but for now it is the
- 	  best I can do without too much impact on the code. [tw]
- 	*/
-+
-+#ifdef __GNU__
-+	char *linebuf;
-+	size_t dummy = 0;
-+#else
- 	char linebuf[(4*PATH_MAX)+9];
-+#endif
- 	char *cp;
- 	char *p;
- 	int comments_read = 0;
-@@ -449,9 +455,13 @@ read_acl_comments(
- 		if (line)
- 			(*line)++;
- 
-+#ifdef __GNU__
-+		if (getline(&linebuf, &dummy, file) == -1)
-+			break;
-+#else
- 		if (fgets(linebuf, sizeof(linebuf), file) == NULL)
- 			break;
--		
-+#endif		
- 		comments_read = 1;
- 
- 		p = strrchr(linebuf, '\0');
-@@ -473,7 +483,12 @@ read_acl_comments(
- 					goto fail;
- 				*path_p = (char*)malloc(strlen(cp)+1);
- 				if (!*path_p)
-+				  {
-+#ifdef __GNU__
-+				    free (linebuf);
-+#endif
- 					return -1;
-+				  }
- 				strcpy(*path_p, cp);
- 			}
- 		} else if (strncmp(cp, "owner:", 6) == 0) {
-@@ -522,13 +537,24 @@ read_acl_comments(
- 		}
- 	}
- 	if (ferror(file))
-+	  {
-+#ifdef __GNU__
-+	    free (linebuf);
-+#endif
- 		return -1;
-+	  }
-+#ifdef __GNU__
-+	free (linebuf);
-+#endif
- 	return comments_read;
- fail:
- 	if (path_p && *path_p) {
- 		free(*path_p);
- 		*path_p = NULL;
- 	}
-+#ifdef __GNU__
-+	free (linebuf);
-+#endif
- 	return -EINVAL;
- }
- 
diff --git a/gnu/packages/patches/aspell-gcc-compat.patch b/gnu/packages/patches/aspell-gcc-compat.patch
new file mode 100644
index 0000000000..94c44f8fb6
--- /dev/null
+++ b/gnu/packages/patches/aspell-gcc-compat.patch
@@ -0,0 +1,31 @@
+Fix GCC7 warnings.
+
+Taken from upstream:
+https://git.savannah.gnu.org/cgit/aspell.git/commit/?id=8089fa02122fed0a6394eba14bbedcb1d18e2384
+
+diff --git a/modules/filter/tex.cpp b/modules/filter/tex.cpp
+index a979539..19ab63c 100644
+--- a/modules/filter/tex.cpp
++++ b/modules/filter/tex.cpp
+@@ -174,7 +174,7 @@ namespace {
+ 
+     if (c == '{') {
+ 
+-      if (top.in_what == Parm || top.in_what == Opt || top.do_check == '\0')
++      if (top.in_what == Parm || top.in_what == Opt || *top.do_check == '\0')
+ 	push_command(Parm);
+ 
+       top.in_what = Parm;
+diff --git a/prog/check_funs.cpp b/prog/check_funs.cpp
+index db54f3d..89ee09d 100644
+--- a/prog/check_funs.cpp
++++ b/prog/check_funs.cpp
+@@ -647,7 +647,7 @@ static void print_truncate(FILE * out, const char * word, int width) {
+     }
+   }
+   if (i == width-1) {
+-    if (word == '\0')
++    if (*word == '\0')
+       put(out,' ');
+     else if (word[len] == '\0')
+       put(out, word, len);
diff --git a/gnu/packages/patches/binutils-boot-2.20.1a.patch b/gnu/packages/patches/binutils-boot-2.20.1a.patch
new file mode 100644
index 0000000000..7e5762ceb4
--- /dev/null
+++ b/gnu/packages/patches/binutils-boot-2.20.1a.patch
@@ -0,0 +1,157 @@
+This patch enables building binutils using TCC and Mes C Library
+
+  * disable building DOC
+  * remove signed int trickery that does not work with TCC
+  * fixe the malloc prototype to use size_t
+  * add missing includes
+  * remove C99'isms to avoid of mixing code and variable declaration
+  * [MES_BOOTSTRAP]: remove strncmp to avoid duplicat symbol
+
+Upstream status: Not presented upstream.
+
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/elf32-i386.c binutils-2.20.1a/bfd/elf32-i386.c
+--- ../binutils-2.20.1a/bfd/elf32-i386.c	2009-09-10 13:47:12.000000000 +0200
++++ binutils-2.20.1a/bfd/elf32-i386.c	2018-06-23 19:33:20.068134411 +0200
+@@ -4254,6 +4254,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
+ 	      if (!h->pointer_equality_needed)
+ 		abort ();
+ 
++              {
+ 	      /* For non-shared object, we can't use .got.plt, which
+ 		 contains the real function addres if we need pointer
+ 		 equality.  We load the GOT entry with the PLT entry.  */
+@@ -4262,6 +4263,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
+ 			  (plt->output_section->vma
+ 			   + plt->output_offset + h->plt.offset),
+ 			  htab->elf.sgot->contents + h->got.offset);
++              }
+ 	      return TRUE;
+ 	    }
+ 	}
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/elfcode.h binutils-2.20.1a/bfd/elfcode.h
+--- ../binutils-2.20.1a/bfd/elfcode.h	2009-09-10 13:47:12.000000000 +0200
++++ binutils-2.20.1a/bfd/elfcode.h	2018-06-19 19:07:16.647627075 +0200
+@@ -73,6 +73,7 @@
+ #include "bfdlink.h"
+ #include "libbfd.h"
+ #include "elf-bfd.h"
++#include <limits.h>
+ 
+ /* Renaming structures, typedefs, macros and functions to be size-specific.  */
+ #define Elf_External_Ehdr	NAME(Elf,External_Ehdr)
+@@ -706,8 +707,8 @@ elf_object_p (bfd *abfd)
+       if (i_ehdrp->e_shnum != 1)
+ 	{
+ 	  /* Check that we don't have a totally silly number of sections.  */
+-	  if (i_ehdrp->e_shnum > (unsigned int) -1 / sizeof (x_shdr)
+-	      || i_ehdrp->e_shnum > (unsigned int) -1 / sizeof (i_shdr))
++	  if (i_ehdrp->e_shnum > INT_MAX / sizeof (x_shdr)
++	      || i_ehdrp->e_shnum > INT_MAX / sizeof (i_shdr))
+ 	    goto got_wrong_format_error;
+ 
+ 	  where += (i_ehdrp->e_shnum - 1) * sizeof (x_shdr);
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/Makefile.in binutils-2.20.1a/bfd/Makefile.in
+--- ../binutils-2.20.1a/bfd/Makefile.in	2010-03-03 14:59:15.000000000 +0100
++++ binutils-2.20.1a/bfd/Makefile.in	2018-06-16 14:00:46.297724081 +0200
+@@ -320,7 +320,7 @@ ACLOCAL_AMFLAGS = -I . -I .. -I ../confi
+ # RELEASE=y
+ INCDIR = $(srcdir)/../include
+ CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
+-SUBDIRS = doc po
++SUBDIRS = # these fail to build: doc po
+ bfddocdir = doc
+ libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \
+ 	@SHARED_LDFLAGS@ $(am__empty)
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/arparse.c binutils-2.20.1a/binutils/arparse.c
+--- ../binutils-2.20.1a/binutils/arparse.c	2009-10-16 13:52:16.000000000 +0200
++++ binutils-2.20.1a/binutils/arparse.c	2018-06-19 01:30:00.576219981 +0200
+@@ -330,7 +330,7 @@ YYID (i)
+ #   define YYMALLOC malloc
+ #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+      || defined __cplusplus || defined _MSC_VER)
+-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */
+ #   endif
+ #  endif
+ #  ifndef YYFREE
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/dwarf.c binutils-2.20.1a/binutils/dwarf.c
+--- ../binutils-2.20.1a/binutils/dwarf.c	2009-09-14 13:43:26.000000000 +0200
++++ binutils-2.20.1a/binutils/dwarf.c	2018-06-16 14:01:45.162684662 +0200
+@@ -27,6 +27,10 @@
+ #include "dwarf2.h"
+ #include "dwarf.h"
+ 
++#if MES_BOOTSTRAP
++#include "getopt.h"
++#endif
++
+ static int have_frame_base;
+ static int need_base_address;
+ 
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/sysinfo.c binutils-2.20.1a/binutils/sysinfo.c
+--- ../binutils-2.20.1a/binutils/sysinfo.c	2009-10-16 13:52:17.000000000 +0200
++++ binutils-2.20.1a/binutils/sysinfo.c	2018-06-19 01:29:23.823612807 +0200
+@@ -286,7 +286,7 @@ YYID (i)
+ #   define YYMALLOC malloc
+ #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+      || defined __cplusplus || defined _MSC_VER)
+-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */
+ #   endif
+ #  endif
+ #  ifndef YYFREE
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/gas/config/tc-i386.c binutils-2.20.1a/gas/config/tc-i386.c
+--- ../binutils-2.20.1a/gas/config/tc-i386.c	2009-09-14 13:43:27.000000000 +0200
++++ binutils-2.20.1a/gas/config/tc-i386.c	2018-06-23 19:39:37.546254752 +0200
+@@ -4869,6 +4869,7 @@ build_modrm_byte (void)
+   if (vex_3_sources)
+     {
+       unsigned int nds, reg;
++      expressionS *exp; 
+ 
+       if (i.tm.opcode_modifier.veximmext
+ 	  && i.tm.opcode_modifier.immext)
+@@ -4892,7 +4893,7 @@ build_modrm_byte (void)
+ 
+       /* Generate an 8bit immediate operand to encode the register
+ 	 operand.  */
+-      expressionS *exp = &im_expressions[i.imm_operands++];
++      exp = &im_expressions[i.imm_operands++];
+       i.op[i.operands].imms = exp;
+       i.types[i.operands] = imm8;
+       i.operands++;
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/ld/ldgram.c binutils-2.20.1a/ld/ldgram.c
+--- ../binutils-2.20.1a/ld/ldgram.c	2009-10-16 13:52:15.000000000 +0200
++++ binutils-2.20.1a/ld/ldgram.c	2018-06-19 01:30:57.809165437 +0200
+@@ -561,7 +561,7 @@ YYID (i)
+ #   define YYMALLOC malloc
+ #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+      || defined __cplusplus || defined _MSC_VER)
+-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */
+ #   endif
+ #  endif
+ #  ifndef YYFREE
+diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/libiberty/strncmp.c binutils-2.20.1a/libiberty/strncmp.c
+--- ../binutils-2.20.1a/libiberty/strncmp.c	2005-03-28 04:09:01.000000000 +0200
++++ binutils-2.20.1a/libiberty/strncmp.c	2018-06-23 19:19:50.038992482 +0200
+@@ -15,6 +15,13 @@ Compares the first @var{n} bytes of two
+ #include <ansidecl.h>
+ #include <stddef.h>
+ 
++#if !MES_BOOTSTRAP
++
++/*
++   libtool: link: /gnu/store/rgwjixk5zl7s2d3xsb2ws2z2q3m0xjm4-tcc-boot-0.9.26-0.97196ce/bin/tcc -D __GLIBC_MINOR__=6 -D MES_BOOTSTRAP=1 -g -o size size.o bucomm.o version.o filemode.o  ../bfd/.libs/libbfd.a ../libiberty/libiberty.a ./../intl/libintl.a
++   /gnu/store/rgwjixk5zl7s2d3xsb2ws2z2q3m0xjm4-tcc-boot-0.9.26-0.97196ce/lib/libc.a: error: 'strncmp' defined twice
++*/
++
+ int
+ strncmp(const char *s1, const char *s2, register size_t n)
+ {
+@@ -31,3 +38,5 @@ strncmp(const char *s1, const char *s2,
+     }
+   return 0;
+ }
++
++#endif // !MES_BOOTSTRAP
diff --git a/gnu/packages/patches/boost-fix-icu-build.patch b/gnu/packages/patches/boost-fix-icu-build.patch
deleted file mode 100644
index 556f91b8f7..0000000000
--- a/gnu/packages/patches/boost-fix-icu-build.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Pass -std=c++11 when compiling files that include the ICU headers.  Without
-this flag, compilation fails and causes Boost's build system to remove ICU
-support.  Note that $(pkg-config --variable=CXXFLAGS icu-uc) includes
-"-std=c++11", but Boost's build system does not use 'pkg-config'.
-
---- boost_1_66_0/libs/locale/build/Jamfile.v2.orig	2017-12-13 18:56:44.000000000 -0500
-+++ boost_1_66_0/libs/locale/build/Jamfile.v2	2018-04-08 15:18:58.673025760 -0400
-@@ -65,8 +65,8 @@
- 
- if $(ICU_LINK)
- {
--    ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <runtime-link>shared ;
--    ICU64_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin64 <runtime-link>shared ;
-+    ICU_OPTS = <include>$(ICU_PATH)/include <cxxflags>-std=c++11 <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <runtime-link>shared ;
-+    ICU64_OPTS = <include>$(ICU_PATH)/include <cxxflags>-std=c++11 <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin64 <runtime-link>shared ;
- }
- else
- {
-@@ -121,6 +121,7 @@
-     explicit icuuc icudt icuin ;
- 
-     ICU_OPTS =   <include>$(ICU_PATH)/include 
-+      <cxxflags>-std=c++11
-       <library>icuuc/<link>shared/<runtime-link>shared 
-       <library>icudt/<link>shared/<runtime-link>shared 
-       <library>icuin/<link>shared/<runtime-link>shared
-@@ -180,6 +181,7 @@
-     explicit icuuc_64 icudt_64 icuin_64 ;
- 
-     ICU64_OPTS =   <include>$(ICU_PATH)/include 
-+      <cxxflags>-std=c++11
-       <library>icuuc_64/<link>shared/<runtime-link>shared 
-       <library>icudt_64/<link>shared/<runtime-link>shared 
-       <library>icuin_64/<link>shared/<runtime-link>shared
---- boost_1_66_0/libs/regex/build/Jamfile.v2.orig	2017-12-13 18:56:48.000000000 -0500
-+++ boost_1_66_0/libs/regex/build/Jamfile.v2	2018-04-08 15:20:40.865532505 -0400
-@@ -44,7 +44,7 @@
- 
-    if $(ICU_LINK)
-    {
--      ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
-+      ICU_OPTS = <include>$(ICU_PATH)/include <cxxflags>-std=c++11 <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <define>BOOST_HAS_ICU=1 <runtime-link>shared ;
-    }
-    else
-    {
-@@ -78,6 +78,7 @@
- 
-       ICU_OPTS = 
-          <include>$(ICU_PATH)/include 
-+         <cxxflags>-std=c++11
-          <runtime-link>shared:<library>icuuc/<link>shared
-          <runtime-link>shared:<library>icudt/<link>shared
-          <runtime-link>shared:<library>icuin/<link>shared
diff --git a/gnu/packages/patches/dbus-CVE-2019-12749.patch b/gnu/packages/patches/dbus-CVE-2019-12749.patch
deleted file mode 100644
index 12106f4589..0000000000
--- a/gnu/packages/patches/dbus-CVE-2019-12749.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 47b1a4c41004bf494b87370987b222c934b19016 Mon Sep 17 00:00:00 2001
-From: Simon McVittie <smcv@collabora.com>
-Date: Thu, 30 May 2019 12:53:03 +0100
-Subject: [PATCH] auth: Reject DBUS_COOKIE_SHA1 for users other than the server
- owner
-
-The DBUS_COOKIE_SHA1 authentication mechanism aims to prove ownership
-of a shared home directory by having the server write a secret "cookie"
-into a .dbus-keyrings subdirectory of the desired identity's home
-directory with 0700 permissions, and having the client prove that it can
-read the cookie. This never actually worked for non-malicious clients in
-the case where server uid != client uid (unless the server and client
-both have privileges, such as Linux CAP_DAC_OVERRIDE or traditional
-Unix uid 0) because an unprivileged server would fail to write out the
-cookie, and an unprivileged client would be unable to read the resulting
-file owned by the server.
-
-Additionally, since dbus 1.7.10 we have checked that ~/.dbus-keyrings
-is owned by the uid of the server (a side-effect of a check added to
-harden our use of XDG_RUNTIME_DIR), further ruling out successful use
-by a non-malicious client with a uid differing from the server's.
-
-Joe Vennix of Apple Information Security discovered that the
-implementation of DBUS_COOKIE_SHA1 was susceptible to a symbolic link
-attack: a malicious client with write access to its own home directory
-could manipulate a ~/.dbus-keyrings symlink to cause the DBusServer to
-read and write in unintended locations. In the worst case this could
-result in the DBusServer reusing a cookie that is known to the
-malicious client, and treating that cookie as evidence that a subsequent
-client connection came from an attacker-chosen uid, allowing
-authentication bypass.
-
-This is mitigated by the fact that by default, the well-known system
-dbus-daemon (since 2003) and the well-known session dbus-daemon (in
-stable releases since dbus 1.10.0 in 2015) only accept the EXTERNAL
-authentication mechanism, and as a result will reject DBUS_COOKIE_SHA1
-at an early stage, before manipulating cookies. As a result, this
-vulnerability only applies to:
-
-* system or session dbus-daemons with non-standard configuration
-* third-party dbus-daemon invocations such as at-spi2-core (although
-  in practice at-spi2-core also only accepts EXTERNAL by default)
-* third-party uses of DBusServer such as the one in Upstart
-
-Avoiding symlink attacks in a portable way is difficult, because APIs
-like openat() and Linux /proc/self/fd are not universally available.
-However, because DBUS_COOKIE_SHA1 already doesn't work in practice for
-a non-matching uid, we can solve this vulnerability in an easier way
-without regressions, by rejecting it early (before looking at
-~/.dbus-keyrings) whenever the requested identity doesn't match the
-identity of the process hosting the DBusServer.
-
-Signed-off-by: Simon McVittie <smcv@collabora.com>
-Closes: https://gitlab.freedesktop.org/dbus/dbus/issues/269
-Closes: CVE-2019-12749
----
- dbus/dbus-auth.c | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-diff --git a/dbus/dbus-auth.c b/dbus/dbus-auth.c
-index 37d8d4c9..7390a9d5 100644
---- a/dbus/dbus-auth.c
-+++ b/dbus/dbus-auth.c
-@@ -529,6 +529,7 @@ sha1_handle_first_client_response (DBusAuth         *auth,
-   DBusString tmp2;
-   dbus_bool_t retval = FALSE;
-   DBusError error = DBUS_ERROR_INIT;
-+  DBusCredentials *myself = NULL;
- 
-   _dbus_string_set_length (&auth->challenge, 0);
-   
-@@ -565,6 +566,34 @@ sha1_handle_first_client_response (DBusAuth         *auth,
-       return FALSE;
-     }
- 
-+  myself = _dbus_credentials_new_from_current_process ();
-+
-+  if (myself == NULL)
-+    goto out;
-+
-+  if (!_dbus_credentials_same_user (myself, auth->desired_identity))
-+    {
-+      /*
-+       * DBUS_COOKIE_SHA1 is not suitable for authenticating that the
-+       * client is anyone other than the user owning the process
-+       * containing the DBusServer: we probably aren't allowed to write
-+       * to other users' home directories. Even if we can (for example
-+       * uid 0 on traditional Unix or CAP_DAC_OVERRIDE on Linux), we
-+       * must not, because the other user controls their home directory,
-+       * and could carry out symlink attacks to make us read from or
-+       * write to unintended locations. It's difficult to avoid symlink
-+       * attacks in a portable way, so we just don't try. This isn't a
-+       * regression, because DBUS_COOKIE_SHA1 never worked for other
-+       * users anyway.
-+       */
-+      _dbus_verbose ("%s: client tried to authenticate as \"%s\", "
-+                     "but that doesn't match this process",
-+                     DBUS_AUTH_NAME (auth),
-+                     _dbus_string_get_const_data (data));
-+      retval = send_rejected (auth);
-+      goto out;
-+    }
-+
-   /* we cache the keyring for speed, so here we drop it if it's the
-    * wrong one. FIXME caching the keyring here is useless since we use
-    * a different DBusAuth for every connection.
-@@ -679,6 +708,9 @@ sha1_handle_first_client_response (DBusAuth         *auth,
-   _dbus_string_zero (&tmp2);
-   _dbus_string_free (&tmp2);
- 
-+  if (myself != NULL)
-+    _dbus_credentials_unref (myself);
-+
-   return retval;
- }
- 
diff --git a/gnu/packages/patches/dbus-c++-gcc-compat.patch b/gnu/packages/patches/dbus-c++-gcc-compat.patch
new file mode 100644
index 0000000000..c4f126858c
--- /dev/null
+++ b/gnu/packages/patches/dbus-c++-gcc-compat.patch
@@ -0,0 +1,14 @@
+Fix a string comparison in C++ 11.
+
+Taken from Debian:
+https://sources.debian.org/src/dbus-c++/0.9.0-8.1/debian/patches/06_fix_gcc-7_ftbfs.patch/
+
+--- a/src/pipe.cpp
++++ b/src/pipe.cpp
+@@ -83,5 +83,5 @@ ssize_t Pipe::read(void *buffer, unsigne
+ void Pipe::signal()
+ {
+   // TODO: ignoring return of read/write generates warning; maybe relevant for eventloop work...
+-  ::write(_fd_write, '\0', 1);
++  ::write(_fd_write, "\0", 1);
+ }
diff --git a/gnu/packages/patches/dbus-c++-threading-mutex.patch b/gnu/packages/patches/dbus-c++-threading-mutex.patch
new file mode 100644
index 0000000000..b201700dc0
--- /dev/null
+++ b/gnu/packages/patches/dbus-c++-threading-mutex.patch
@@ -0,0 +1,37 @@
+Description: Fix FTBFS if DBUS_HAS_RECURSIVE_MUTEX is undefined
+Author: Peter Williams <peter@newton.cx>
+Last-Update: 2018-01-26
+
+Taken from Debian:
+https://sources.debian.org/src/dbus-c++/0.9.0-8.1/debian/patches/07_fix_mutex_ftbfs.patch/
+
+--- dbus-c++-0.9.0.orig/include/dbus-c++/dispatcher.h
++++ dbus-c++-0.9.0/include/dbus-c++/dispatcher.h
+@@ -267,6 +267,19 @@ struct Threading
+     return new Mx;
+   }
+ 
++#ifndef DBUS_HAS_RECURSIVE_MUTEX
++  static bool mutex_free(Mutex *mx)
++  {
++    delete mx;
++    return true;
++  }
++
++  static bool mutex_lock(Mutex *mx)
++  {
++    mx->lock();
++    return true;
++  }
++#else
+   static void mutex_free(Mutex *mx)
+   {
+     delete mx;
+@@ -276,6 +289,7 @@ struct Threading
+   {
+     mx->lock();
+   }
++#endif
+ 
+   static void mutex_unlock(Mutex *mx)
+   {
diff --git a/gnu/packages/patches/diffutils-getopt.patch b/gnu/packages/patches/diffutils-getopt.patch
deleted file mode 100644
index 05c2504adf..0000000000
--- a/gnu/packages/patches/diffutils-getopt.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-commit e3461d1c21a99bcef1b8826f710434e0ffb5adea
-Author: Paul Eggert <eggert@cs.ucla.edu>
-Date:   Sun Jun 11 15:53:09 2017 -0700
-
-    getopt-posix: port to glibc 2.25.90
-    
-    Problem reported by Daniel P. Berrange in:
-    http://lists.gnu.org/archive/html/bug-gnulib/2017-06/msg00003.html
-    * lib/getopt-pfx-core.h (_GETOPT_CORE_H):
-    * lib/getopt-pfx-ext.h (_GETOPT_EXT_H):
-    #undef if __GETOPT_PREFIX is defined.
-
-diff --git a/lib/getopt-pfx-core.h b/lib/getopt-pfx-core.h
-index 155c11612..6ad0da683 100644
---- a/lib/getopt-pfx-core.h
-+++ b/lib/getopt-pfx-core.h
-@@ -47,6 +47,11 @@
- # define opterr __GETOPT_ID (opterr)
- # define optind __GETOPT_ID (optind)
- # define optopt __GETOPT_ID (optopt)
-+
-+/* The system's getopt.h may have already included getopt-core.h to
-+   declare the unprefixed identifiers.  Undef _GETOPT_CORE_H so that
-+   getopt-core.h declares them with prefixes.  */
-+# undef _GETOPT_CORE_H
- #endif
- 
- #include <getopt-core.h>
-diff --git a/lib/getopt-pfx-ext.h b/lib/getopt-pfx-ext.h
-index d960bb34e..c5ac52202 100644
---- a/lib/getopt-pfx-ext.h
-+++ b/lib/getopt-pfx-ext.h
-@@ -45,6 +45,11 @@
- # define getopt_long_only __GETOPT_ID (getopt_long_only)
- # define option __GETOPT_ID (option)
- # define _getopt_internal __GETOPT_ID (getopt_internal)
-+
-+/* The system's getopt.h may have already included getopt-ext.h to
-+   declare the unprefixed identifiers.  Undef _GETOPT_EXT_H so that
-+   getopt-ext.h declares them with prefixes.  */
-+# undef _GETOPT_EXT_H
- #endif
- 
- /* Standalone applications get correct prototypes for getopt_long and
diff --git a/gnu/packages/patches/evolution-data-server-locales.patch b/gnu/packages/patches/evolution-data-server-locales.patch
new file mode 100644
index 0000000000..48baefb0d8
--- /dev/null
+++ b/gnu/packages/patches/evolution-data-server-locales.patch
@@ -0,0 +1,33 @@
+This patch fixes locale canonicalization when using newer versions of
+ICU.  It comes from the upstream repo, and should appear starting in
+version 3.33.5.
+
+From fe4ac94ce3c14f200e049a5d102fc0e4b811c71e Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Tue, 16 Jul 2019 07:22:07 +0200
+Subject: [PATCH] I#137 - POSIX locale tests fail with ICU 64.x
+
+Closes https://gitlab.gnome.org/GNOME/evolution-data-server/issues/137
+---
+ src/libedataserver/e-collator.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/libedataserver/e-collator.c b/src/libedataserver/e-collator.c
+index 718eac5da..ec2cf7951 100644
+--- a/src/libedataserver/e-collator.c
++++ b/src/libedataserver/e-collator.c
+@@ -132,6 +132,11 @@ canonicalize_locale (const gchar *posix_locale,
+ 	gint   len;
+ 	const gchar *collation_type = NULL;
+ 
++	if (posix_locale && (
++	    g_ascii_strcasecmp (posix_locale, "C") == 0 ||
++	    g_ascii_strcasecmp (posix_locale, "POSIX") == 0))
++		posix_locale = "en_US_POSIX";
++
+ 	len = uloc_canonicalize (posix_locale, locale_buffer, LOCALE_BUFFER_LEN, &status);
+ 
+ 	if (U_FAILURE (status)) {
+-- 
+2.22.0
+
diff --git a/gnu/packages/patches/expat-CVE-2018-20843.patch b/gnu/packages/patches/expat-CVE-2018-20843.patch
deleted file mode 100644
index 216fbe9667..0000000000
--- a/gnu/packages/patches/expat-CVE-2018-20843.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Fix extraction of namespace prefix from XML name.
-Fixes CVE-2018-20843
-
-This patch comes from upstream commit 11f8838bf99ea0a6f0b76f9760c43704d00c4ff6
-https://github.com/libexpat/libexpat/commit/11f8838bf99ea0a6f0b76f9760c43704d00c4ff6
-
-CVE is https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20843
-
-diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
-index 30d55c5..737d7cd 100644
---- a/lib/xmlparse.c
-+++ b/lib/xmlparse.c
-@@ -6071,7 +6071,7 @@ setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType)
-       else
-         poolDiscard(&dtd->pool);
-       elementType->prefix = prefix;
--
-+      break;
-     }
-   }
-   return 1;
diff --git a/gnu/packages/patches/gcc-7-cross-mingw.patch b/gnu/packages/patches/gcc-7-cross-mingw.patch
new file mode 100644
index 0000000000..eec6f88953
--- /dev/null
+++ b/gnu/packages/patches/gcc-7-cross-mingw.patch
@@ -0,0 +1,24 @@
+This fixes
+
+../../../../gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc: In function ‘void* __gnu_cxx::aligned_alloc(std::size_t, std::size_t)’:
+../../../../gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc:78:10: error: ‘memalign’ was not declared in this scope
+   return memalign (al, sz);
+          ^~~~~~~~
+../../../../gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc:78:10: note: suggested alternative: ‘max_align_t’
+   return memalign (al, sz);
+          ^~~~~~~~
+          max_align_t
+
+diff --git a/libstdc++-v3/libsupc++/new_opa.cc b/libstdc++-v3/libsupc++/new_opa.cc
+index 94e79cadb0e..084900e0daf 100644
+--- a/libstdc++-v3/libsupc++/new_opa.cc
++++ b/libstdc++-v3/libsupc++/new_opa.cc
+@@ -39,6 +39,8 @@ extern "C" void *memalign(std::size_t boundary, std::size_t size);
+ # endif
+ #endif
+ 
++#define memalign _aligned_malloc
++
+ using std::new_handler;
+ using std::bad_alloc;
+ 
diff --git a/gnu/packages/patches/gcc-boot-2.95.3.patch b/gnu/packages/patches/gcc-boot-2.95.3.patch
new file mode 100644
index 0000000000..fd167ae052
--- /dev/null
+++ b/gnu/packages/patches/gcc-boot-2.95.3.patch
@@ -0,0 +1,137 @@
+This patch enables building gcc-2.95.3 using TCC and Mes C Library.
+
+  * Disable building DOC
+  * Avoid running `fixproto'.
+  * Force running `fixinc'.
+  * Replace Makefile trickery of creating an libgcc1.a archive, then
+    extracting the .o files later to create a new libgcc2.a archive.
+    Instead, keep temporary .o files.
+
+Upstream status: Not presented upstream.
+
+diff -purN -x foo.c -x BOOT -x BOOT-2 -x BOOT-strict -x .git -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC ../gcc-2.95.3/gcc/Makefile.in gcc-2.95.3/gcc/Makefile.in
+--- ../gcc-2.95.3/gcc/Makefile.in	2001-01-25 15:02:58.000000000 +0100
++++ gcc-2.95.3/gcc/Makefile.in	2018-06-23 11:46:03.525159181 +0200
+@@ -221,7 +221,7 @@ RANLIB_TEST_FOR_TARGET = \
+ SYSTEM_HEADER_DIR = /usr/include
+ 
+ # Control whether to run fixproto.
+-STMP_FIXPROTO = stmp-fixproto
++# STMP_FIXPROTO = stmp-fixproto
+ 
+ # Test to see whether <limits.h> exists in the system header files.
+ LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
+@@ -958,6 +958,7 @@ libgcc1.cross:
+ # fragments.
+ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1FUNCS_EXTRA) config.status
+ 	-rm -f tmplibgcc1.a
++	mkdir -p libgcc1-o
+ # Actually build it in tmplibgcc1.a, then rename at end,
+ # so that libgcc1.a itself remains nonexistent if compilation is aborted.
+ # -e causes any failing command to make this rule fail.
+@@ -974,6 +975,7 @@ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1F
+ 	  if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
+ 	  mv libgcc1$(objext) $${name}$(objext); \
+ 	  $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \
++	  mv $${name}$(objext) libgcc1-o; \
+ 	  rm -f $${name}$(objext); \
+ 	done
+ # Some shells crash when a loop has no items.
+@@ -994,6 +996,7 @@ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1F
+ 	    if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
+ 	    $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \
+ 	    if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
++	    mv $${name}$(objext) libgcc1-o; \
+ 	    rm -f $${name}.s $${name}$(objext); \
+ 	  else true; \
+ 	  fi; \
+@@ -1024,6 +1027,7 @@ libgcc1-asm.a: libgcc2.ready config.stat
+ 	  if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
+ 	  mv libgcc1$(objext) $${name}$(objext); \
+ 	  $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc1.a $${name}$(objext); \
++	  mv $${name}$(objext) libgcc1-o; \
+ 	  rm -f $${name}$(objext); \
+ 	done
+ 	-rm -f libgcc1.S
+@@ -1062,6 +1066,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CON
+ # Actually build it in tmplibgcc2.a, then rename at end,
+ # so that libgcc2.a itself remains nonexistent if compilation is aborted.
+ 	-rm -f tmplibgcc2.a
++	mkdir -p libgcc2-o
+ # -e causes any failing command to make this rule fail.
+ # -e doesn't work in certain shells, so we test $$? as well.
+ # lynx has a broken ar, it always complains when the initial library is
+@@ -1139,6 +1144,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CON
+ 	    $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \
+ 	    if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
+ 	    $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${oname}$(objext); \
++	    mv $${oname}$(objext) libgcc2-o;\
+ 	    rm -f $${name}.s $${oname}$(objext); \
+ 	  fi; \
+ 	done
+@@ -1156,7 +1162,7 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2)
+ 	-rm -rf tmplibgcc.a libgcc.a tmpcopy
+ 	mkdir tmpcopy
+ 	-if [ x$(LIBGCC1) != x ];			\
+-	then (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC1));	\
++	then cp -v libgcc1-o/*.o tmpcopy;		\
+ 	else true;					\
+ 	fi
+ # Some versions of ar (specifically the one in RISC/os 5.x), create an
+@@ -1164,7 +1170,7 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2)
+ # the second ar command tries to overwrite this file.  To avoid the error
+ # message from ar, we make sure all files are writable.
+ 	-(cd tmpcopy; chmod +w * > /dev/null 2>&1)
+-	(cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC2))
++	cp -v libgcc2-o/*.o tmpcopy
+ 	(cd tmpcopy; $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) ../tmplibgcc.a *$(objext))
+ 	rm -rf tmpcopy
+ 	-if $(RANLIB_TEST_FOR_TARGET) ; then \
+@@ -2093,14 +2099,18 @@ gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS)
+ # s-* so that mostlyclean does not force the include directory to
+ # be rebuilt.
+ 
++# STMP_FIXINC = @STMP_FIXINC@
++STMP_FIXINC = stmp-fixinc
++
+ # Build the include directory including float.h (which no longer depends upon
+ # enquire).
+-stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h
++stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h
+ # Copy in the headers provided with gcc.
+ # The sed command gets just the last file name component;
+ # this is necessary because VPATH could add a dirname.
+ # Using basename would be simpler, but some systems don't have it.
+ # The touch command is here to workaround an AIX/Linux NFS bug.
++	-if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
+ 	for file in .. $(USER_H); do \
+ 	  if [ X$$file != X.. ]; then \
+ 	    realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
+@@ -2265,16 +2275,17 @@ stmp-fixproto: fixhdr.ready fixproto stm
+ #
+ # Remake the info files.
+ 
+-doc: info
+-info: cpp.info gcc.info lang.info
+-
+-cpp.info: $(srcdir)/cpp.texi
+-	$(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi
+-
+-gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \
+-	  $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \
+-	  $(srcdir)/tm.texi $(srcdir)/gcov.texi
+-	$(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi
++doc:
++# doc: info
++# info: cpp.info gcc.info lang.info
++
++# cpp.info: $(srcdir)/cpp.texi
++# 	$(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi
++
++# gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \
++# 	  $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \
++# 	  $(srcdir)/tm.texi $(srcdir)/gcov.texi
++# 	$(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi
+ 
+ dvi: gcc.dvi cpp.dvi lang.dvi
+ 
diff --git a/gnu/packages/patches/gcc-boot-4.7.4.patch b/gnu/packages/patches/gcc-boot-4.7.4.patch
new file mode 100644
index 0000000000..3e51e31fdf
--- /dev/null
+++ b/gnu/packages/patches/gcc-boot-4.7.4.patch
@@ -0,0 +1,68 @@
+This patch enables building gcc-4.7.4 using gcc-2.95.3 and glibc-2.2.5
+
+  * Tweak Makefile to allow overriding NATIVE_SYSTEM_HEADER_DIR using #:makeflags
+  * Add missing limits.h include.
+  * Add SSIZE_MAX define.  The SSIZE_MAX define has been added to Mes
+    upstream and can be removed with the next Mes release.
+  * Remove -fbuilding-libgcc flag, it assumes features being present from a
+    newer gcc or glibc.
+  * [MES_BOOTSTRAP_GCC]: Disable threads harder.
+
+Upstream status: not presented upstream.
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index f3cc49fdb18..bc5718fc9a6 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -458,7 +458,7 @@ LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h
+ LTO_SYMTAB_H = $(srcdir)/../include/lto-symtab.h
+ 
+ # Default native SYSTEM_HEADER_DIR, to be overridden by targets.
+-NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
++# NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
+ # Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
+ CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
+ 
+diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c
+index 94b7a0b89a7..ab2baab55ca 100644
+--- a/gcc/config/host-linux.c
++++ b/gcc/config/host-linux.c
+@@ -23,6 +23,12 @@
+ #include "hosthooks.h"
+ #include "hosthooks-def.h"
+ 
++// ../.././gcc/config/host-linux.c:213: `SSIZE_MAX' undeclared (first
++// use in this function)
++#include <limits.h>
++#ifndef	SSIZE_MAX
++# define SSIZE_MAX	LONG_MAX
++#endif
+ 
+ /* Linux has a feature called exec-shield-randomize that perturbs the
+    address of non-fixed mapped segments by a (relatively) small amount.
+diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
+index c301ff03cae..f86318c3bd5 100644
+--- a/libgcc/Makefile.in
++++ b/libgcc/Makefile.in
+@@ -225,7 +225,7 @@ endif
+ LIBGCC2_DEBUG_CFLAGS = -g
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
+ 		 $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
+-		 -fbuilding-libgcc -fno-stack-protector \
++		 -fno-stack-protector \
+ 		 $(INHIBIT_LIBC_CFLAGS)
+ 
+ # Additional options to use when compiling libgcc2.a.
+diff --git a/libgcc/generic-morestack-thread.c b/libgcc/generic-morestack-thread.c
+index bbe6dd12b5a..1d1d48223d7 100644
+--- a/libgcc/generic-morestack-thread.c
++++ b/libgcc/generic-morestack-thread.c
+@@ -35,7 +35,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    will want to define inhibit_libc while building a compiler which
+    can build glibc.  */
+ 
+-#ifndef inhibit_libc
++#if 0 //!defined (inhibit_libc) && !MES_BOOTSTRAP_GCC
+ 
+ #include <errno.h>
+ #include <pthread.h>
diff --git a/gnu/packages/patches/gdm-CVE-2018-14424.patch b/gnu/packages/patches/gdm-CVE-2018-14424.patch
deleted file mode 100644
index 88a71f4151..0000000000
--- a/gnu/packages/patches/gdm-CVE-2018-14424.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-Fix CVE-2018-14424:
-
-https://gitlab.gnome.org/GNOME/gdm/issues/401
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14424
-
-Patch copied from upstream source repository:
-
-https://gitlab.gnome.org/GNOME/gdm/commit/1ac1697b3b019f50729a6e992065959586e170da
-
-From 1ac1697b3b019f50729a6e992065959586e170da Mon Sep 17 00:00:00 2001
-From: Chris Coulson <chris.coulson@canonical.com>
-Date: Thu, 19 Jul 2018 18:26:05 +0100
-Subject: [PATCH] display-store: Pass the display object rather than the id in
- the removed signal
-
-By the time GdmDisplayStore emits the "display-removed" signal, the display
-is no longer in the store and gdm_display_store_lookup will not work in
-signal handlers.
-
-Change the "display-removed" parameter from the display id to the GdmDisplay
-object, so that signal handers can perform any cleanup they need to do
-
-CVE-2018-14424
-
-Closes: https://gitlab.gnome.org/GNOME/gdm/issues/401
----
- daemon/gdm-display-store.c         | 11 +++--------
- daemon/gdm-display-store.h         |  2 +-
- daemon/gdm-local-display-factory.c | 13 +++----------
- daemon/gdm-manager.c               | 19 +++++++++----------
- daemon/gdm-manager.h               |  3 ++-
- 5 files changed, 18 insertions(+), 30 deletions(-)
-
-diff --git a/daemon/gdm-display-store.c b/daemon/gdm-display-store.c
-index af76f519..fd24334e 100644
---- a/daemon/gdm-display-store.c
-+++ b/daemon/gdm-display-store.c
-@@ -76,15 +76,10 @@ stored_display_new (GdmDisplayStore *store,
- static void
- stored_display_free (StoredDisplay *stored_display)
- {
--        char *id;
--
--        gdm_display_get_id (stored_display->display, &id, NULL);
--
-         g_signal_emit (G_OBJECT (stored_display->store),
-                        signals[DISPLAY_REMOVED],
-                        0,
--                       id);
--        g_free (id);
-+                       stored_display->display);
- 
-         g_debug ("GdmDisplayStore: Unreffing display: %p",
-                  stored_display->display);
-@@ -281,9 +276,9 @@ gdm_display_store_class_init (GdmDisplayStoreClass *klass)
-                               G_STRUCT_OFFSET (GdmDisplayStoreClass, display_removed),
-                               NULL,
-                               NULL,
--                              g_cclosure_marshal_VOID__STRING,
-+                              g_cclosure_marshal_VOID__OBJECT,
-                               G_TYPE_NONE,
--                              1, G_TYPE_STRING);
-+                              1, G_TYPE_OBJECT);
- 
-         g_type_class_add_private (klass, sizeof (GdmDisplayStorePrivate));
- }
-diff --git a/daemon/gdm-display-store.h b/daemon/gdm-display-store.h
-index 28359933..0aff8ee2 100644
---- a/daemon/gdm-display-store.h
-+++ b/daemon/gdm-display-store.h
-@@ -49,7 +49,7 @@ typedef struct
-         void          (* display_added)    (GdmDisplayStore *display_store,
-                                             const char      *id);
-         void          (* display_removed)  (GdmDisplayStore *display_store,
--                                            const char      *id);
-+                                            GdmDisplay      *display);
- } GdmDisplayStoreClass;
- 
- typedef enum
-diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
-index 5f1ae89e..39f3e30a 100644
---- a/daemon/gdm-local-display-factory.c
-+++ b/daemon/gdm-local-display-factory.c
-@@ -805,18 +805,11 @@ on_display_added (GdmDisplayStore        *display_store,
- 
- static void
- on_display_removed (GdmDisplayStore        *display_store,
--                    const char             *id,
-+                    GdmDisplay             *display,
-                     GdmLocalDisplayFactory *factory)
- {
--        GdmDisplay *display;
--
--        display = gdm_display_store_lookup (display_store, id);
--
--        if (display != NULL) {
--                g_signal_handlers_disconnect_by_func (display, G_CALLBACK (on_display_status_changed), factory);
--                g_object_weak_unref (G_OBJECT (display), (GWeakNotify)on_display_disposed, factory);
--
--        }
-+        g_signal_handlers_disconnect_by_func (display, G_CALLBACK (on_display_status_changed), factory);
-+        g_object_weak_unref (G_OBJECT (display), (GWeakNotify)on_display_disposed, factory);
- }
- 
- static gboolean
-diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
-index f17bd1a5..f6684a8b 100644
---- a/daemon/gdm-manager.c
-+++ b/daemon/gdm-manager.c
-@@ -1541,19 +1541,18 @@ on_display_status_changed (GdmDisplay *display,
- 
- static void
- on_display_removed (GdmDisplayStore *display_store,
--                    const char      *id,
-+                    GdmDisplay      *display,
-                     GdmManager      *manager)
- {
--        GdmDisplay *display;
-+        char    *id;
- 
--        display = gdm_display_store_lookup (display_store, id);
--        if (display != NULL) {
--                g_dbus_object_manager_server_unexport (manager->priv->object_manager, id);
-+        gdm_display_get_id (display, &id, NULL);
-+        g_dbus_object_manager_server_unexport (manager->priv->object_manager, id);
-+        g_free (id);
- 
--                g_signal_handlers_disconnect_by_func (display, G_CALLBACK (on_display_status_changed), manager);
-+        g_signal_handlers_disconnect_by_func (display, G_CALLBACK (on_display_status_changed), manager);
- 
--                g_signal_emit (manager, signals[DISPLAY_REMOVED], 0, id);
--        }
-+        g_signal_emit (manager, signals[DISPLAY_REMOVED], 0, display);
- }
- 
- static void
-@@ -2535,9 +2534,9 @@ gdm_manager_class_init (GdmManagerClass *klass)
-                               G_STRUCT_OFFSET (GdmManagerClass, display_removed),
-                               NULL,
-                               NULL,
--                              g_cclosure_marshal_VOID__STRING,
-+                              g_cclosure_marshal_VOID__OBJECT,
-                               G_TYPE_NONE,
--                              1, G_TYPE_STRING);
-+                              1, G_TYPE_OBJECT);
- 
-         g_object_class_install_property (object_class,
-                                          PROP_XDMCP_ENABLED,
-diff --git a/daemon/gdm-manager.h b/daemon/gdm-manager.h
-index 41c68a7a..c8fb3f22 100644
---- a/daemon/gdm-manager.h
-+++ b/daemon/gdm-manager.h
-@@ -24,6 +24,7 @@
- 
- #include <glib-object.h>
- 
-+#include "gdm-display.h"
- #include "gdm-manager-glue.h"
- 
- G_BEGIN_DECLS
-@@ -50,7 +51,7 @@ typedef struct
-         void          (* display_added)    (GdmManager      *manager,
-                                             const char      *id);
-         void          (* display_removed)  (GdmManager      *manager,
--                                            const char      *id);
-+                                            GdmDisplay      *display);
- } GdmManagerClass;
- 
- typedef enum
--- 
-2.17.1
-
diff --git a/gnu/packages/patches/glib-networking-connection.patch b/gnu/packages/patches/glib-networking-connection.patch
deleted file mode 100644
index f64b090ae5..0000000000
--- a/gnu/packages/patches/glib-networking-connection.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-https://gitlab.gnome.org/GNOME/glib-networking/issues/4
-https://gitlab.gnome.org/GNOME/glib-networking/commit/55daf3e5fd4bc9e4ebad1a9eab93f852dcbf527e.patch
-This ultimately rejected work-around should be removed with the next
-release, as the bug has supposedly been fixed for real.
-
-
-From 55daf3e5fd4bc9e4ebad1a9eab93f852dcbf527e Mon Sep 17 00:00:00 2001
-From: Michael Catanzaro <mcatanzaro@igalia.com>
-Date: Thu, 19 Jul 2018 11:16:35 -0500
-Subject: [PATCH] Fix intermittent failures in missing client private key test
-
-Because our APIs do nice things like encapsulating the TLS connection
-establishment, we have our test server writing to the client after
-establishing the TCP connection, because the TLS connection is
-established. It's fine in theory, but results in some weirdness like the
-server seeing its write having completed successfully before TLS
-connection establishment. Normally that's what happens and this test
-passes (server sees no error), but sometimes the server sees that the
-client has already failed and the test fails.
-
-This is unfortunate, and tricky to fix properly, so let's just remove
-the bad check. The point of the test is to ensure that the TLS
-connection is not established, and the client-side check is going to
-have to be sufficient, because rewriting the test to wait for the TLS
-connection to be established on the server side is quite tricky: my
-naive attempt resulted in both sides waiting forever on the other.
-
-P.S. At no point in this test does the server ever examine the client
-certificate. That's not quite what I expected when I added the test, but
-it's fine.
-
-Fixes #4
----
- tls/tests/connection.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/tls/tests/connection.c b/tls/tests/connection.c
-index 94645c3..390275d 100644
---- a/tls/tests/connection.c
-+++ b/tls/tests/connection.c
-@@ -1125,7 +1125,6 @@ test_client_auth_fail_missing_client_private_key (TestConnection *test,
-   g_main_loop_run (test->loop);
- 
-   g_assert_error (test->read_error, G_TLS_ERROR, G_TLS_ERROR_CERTIFICATE_REQUIRED);
--  g_assert_no_error (test->server_error);
- }
- 
- static void
--- 
-2.18.1
-
diff --git a/gnu/packages/patches/glibc-2.27-supported-locales.patch b/gnu/packages/patches/glibc-2.27-supported-locales.patch
new file mode 100644
index 0000000000..2888052bb8
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.27-supported-locales.patch
@@ -0,0 +1,33 @@
+This patch is taken from debian's glibc package (generate-supported.mk).
+It install the localedata/SUPPORTED file of the glibc. This file lists
+all the supported locales of the glibc.
+
+diff --git a/localedata/Makefile.old b/localedata/Makefile
+index 34877c0..a61d9b9 100644
+--- a/localedata/Makefile.old
++++ b/localedata/Makefile
+@@ -91,7 +91,8 @@ endif
+ # Files to install.
+ install-others := $(addprefix $(inst_i18ndir)/, \
+ 			      $(addsuffix .gz, $(charmaps)) \
+-			      $(locales))
++			      $(locales)) \
++                   $(inst_i18ndir)/SUPPORTED
+ 
+ tests: $(objdir)/iconvdata/gconv-modules
+ 
+@@ -195,6 +196,14 @@ endif
+ 
+ include SUPPORTED
+ 
++$(inst_i18ndir)/SUPPORTED: SUPPORTED $(+force)
++	for locale in $(SUPPORTED-LOCALES); do \
++		[ $$locale = true ] && continue; \
++		echo $$locale | sed 's,/, ,' >> LOCALES; \
++	done
++	$(make-target-directory)
++	$(INSTALL_DATA) LOCALES $@
++
+ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES))
+ 
+ # Sometimes the whole collection of locale files should be installed.
diff --git a/gnu/packages/patches/glibc-2.28-supported-locales.patch b/gnu/packages/patches/glibc-2.28-supported-locales.patch
new file mode 100644
index 0000000000..2888052bb8
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.28-supported-locales.patch
@@ -0,0 +1,33 @@
+This patch is taken from debian's glibc package (generate-supported.mk).
+It install the localedata/SUPPORTED file of the glibc. This file lists
+all the supported locales of the glibc.
+
+diff --git a/localedata/Makefile.old b/localedata/Makefile
+index 34877c0..a61d9b9 100644
+--- a/localedata/Makefile.old
++++ b/localedata/Makefile
+@@ -91,7 +91,8 @@ endif
+ # Files to install.
+ install-others := $(addprefix $(inst_i18ndir)/, \
+ 			      $(addsuffix .gz, $(charmaps)) \
+-			      $(locales))
++			      $(locales)) \
++                   $(inst_i18ndir)/SUPPORTED
+ 
+ tests: $(objdir)/iconvdata/gconv-modules
+ 
+@@ -195,6 +196,14 @@ endif
+ 
+ include SUPPORTED
+ 
++$(inst_i18ndir)/SUPPORTED: SUPPORTED $(+force)
++	for locale in $(SUPPORTED-LOCALES); do \
++		[ $$locale = true ] && continue; \
++		echo $$locale | sed 's,/, ,' >> LOCALES; \
++	done
++	$(make-target-directory)
++	$(INSTALL_DATA) LOCALES $@
++
+ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES))
+ 
+ # Sometimes the whole collection of locale files should be installed.
diff --git a/gnu/packages/patches/glibc-2.29-git-updates.patch b/gnu/packages/patches/glibc-2.29-git-updates.patch
new file mode 100644
index 0000000000..5750e9cac1
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.29-git-updates.patch
@@ -0,0 +1,742 @@
+This file tracks updates from the "release/2.29/master" branch:
+https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/release/2.29/master
+
+Abridged commits are appended to this file.
+
+From ec894251ef11723d10df04fcfd7bd2030c6e43ff Mon Sep 17 00:00:00 2001
+From: Carlos O'Donell <carlos@redhat.com>
+Date: Mon, 21 Jan 2019 22:50:12 -0500
+Subject: [PATCH] nptl: Fix pthread_rwlock_try*lock stalls (Bug 23844)
+diff --git a/nptl/pthread_rwlock_tryrdlock.c b/nptl/pthread_rwlock_tryrdlock.c
+index 368862ff07..2f94f17f36 100644
+--- a/nptl/pthread_rwlock_tryrdlock.c
++++ b/nptl/pthread_rwlock_tryrdlock.c
+@@ -94,15 +94,22 @@ __pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock)
+       /* Same as in __pthread_rwlock_rdlock_full:
+ 	 We started the read phase, so we are also responsible for
+ 	 updating the write-phase futex.  Relaxed MO is sufficient.
+-	 Note that there can be no other reader that we have to wake
+-	 because all other readers will see the read phase started by us
+-	 (or they will try to start it themselves); if a writer started
+-	 the read phase, we cannot have started it.  Furthermore, we
+-	 cannot discard a PTHREAD_RWLOCK_FUTEX_USED flag because we will
+-	 overwrite the value set by the most recent writer (or the readers
+-	 before it in case of explicit hand-over) and we know that there
+-	 are no waiting readers.  */
+-      atomic_store_relaxed (&rwlock->__data.__wrphase_futex, 0);
++	 We have to do the same steps as a writer would when handing over the
++	 read phase to use because other readers cannot distinguish between
++	 us and the writer.
++	 Note that __pthread_rwlock_tryrdlock callers will not have to be
++	 woken up because they will either see the read phase started by us
++	 or they will try to start it themselves; however, callers of
++	 __pthread_rwlock_rdlock_full just increase the reader count and then
++	 check what state the lock is in, so they cannot distinguish between
++	 us and a writer that acquired and released the lock in the
++	 meantime.  */
++      if ((atomic_exchange_relaxed (&rwlock->__data.__wrphase_futex, 0)
++	  & PTHREAD_RWLOCK_FUTEX_USED) != 0)
++	{
++	  int private = __pthread_rwlock_get_private (rwlock);
++	  futex_wake (&rwlock->__data.__wrphase_futex, INT_MAX, private);
++	}
+     }
+ 
+   return 0;
+diff --git a/nptl/pthread_rwlock_trywrlock.c b/nptl/pthread_rwlock_trywrlock.c
+index fd37a71ce4..fae475cc70 100644
+--- a/nptl/pthread_rwlock_trywrlock.c
++++ b/nptl/pthread_rwlock_trywrlock.c
+@@ -46,8 +46,15 @@ __pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock)
+ 	  &rwlock->__data.__readers, &r,
+ 	  r | PTHREAD_RWLOCK_WRPHASE | PTHREAD_RWLOCK_WRLOCKED))
+ 	{
++	  /* We have become the primary writer and we cannot have shared
++	     the PTHREAD_RWLOCK_FUTEX_USED flag with someone else, so we
++	     can simply enable blocking (see full wrlock code).  */
+ 	  atomic_store_relaxed (&rwlock->__data.__writers_futex, 1);
+-	  atomic_store_relaxed (&rwlock->__data.__wrphase_futex, 1);
++	  /* If we started a write phase, we need to enable readers to
++	     wait.  If we did not, we must not change it because other threads
++	     may have set the PTHREAD_RWLOCK_FUTEX_USED in the meantime.  */
++	  if ((r & PTHREAD_RWLOCK_WRPHASE) == 0)
++	    atomic_store_relaxed (&rwlock->__data.__wrphase_futex, 1);
+ 	  atomic_store_relaxed (&rwlock->__data.__cur_writer,
+ 	      THREAD_GETMEM (THREAD_SELF, tid));
+ 	  return 0;
+diff --git a/support/Makefile b/support/Makefile
+index 432cf2fe6c..c15b93647c 100644
+--- a/support/Makefile
++++ b/support/Makefile
+@@ -129,6 +129,7 @@ libsupport-routines = \
+   xpthread_mutexattr_settype \
+   xpthread_once \
+   xpthread_rwlock_init \
++  xpthread_rwlock_destroy \
+   xpthread_rwlock_rdlock \
+   xpthread_rwlock_unlock \
+   xpthread_rwlock_wrlock \
+diff --git a/support/xpthread_rwlock_destroy.c b/support/xpthread_rwlock_destroy.c
+new file mode 100644
+index 0000000000..6d6e953569
+--- /dev/null
++++ b/support/xpthread_rwlock_destroy.c
+@@ -0,0 +1,26 @@
++/* pthread_rwlock_destroy with error checking.
++   Copyright (C) 2019 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <support/xthread.h>
++
++void
++xpthread_rwlock_destroy (pthread_rwlock_t *rwlock)
++{
++  xpthread_check_return ("pthread_rwlock_destroy",
++                         pthread_rwlock_destroy (rwlock));
++}
+diff --git a/support/xthread.h b/support/xthread.h
+index 47c23235f3..9fe1f68b3b 100644
+--- a/support/xthread.h
++++ b/support/xthread.h
+@@ -84,6 +84,7 @@ void xpthread_rwlockattr_setkind_np (pthread_rwlockattr_t *attr, int pref);
+ void xpthread_rwlock_wrlock (pthread_rwlock_t *rwlock);
+ void xpthread_rwlock_rdlock (pthread_rwlock_t *rwlock);
+ void xpthread_rwlock_unlock (pthread_rwlock_t *rwlock);
++void xpthread_rwlock_destroy (pthread_rwlock_t *rwlock);
+ 
+ __END_DECLS
+ 
+From 44113a8ba24af23d7bbb174f9087a6b83a76289a Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.ibm.com>
+Date: Thu, 7 Feb 2019 15:18:36 +0100
+Subject: [PATCH] Add compiler barriers around modifications of the robust
+ mutex list for pthread_mutex_trylock. [BZ #24180]
+diff --git a/nptl/pthread_mutex_trylock.c b/nptl/pthread_mutex_trylock.c
+index 8fe43b8f0f..bf2869eca2 100644
+--- a/nptl/pthread_mutex_trylock.c
++++ b/nptl/pthread_mutex_trylock.c
+@@ -94,6 +94,9 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+     case PTHREAD_MUTEX_ROBUST_ADAPTIVE_NP:
+       THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ 		     &mutex->__data.__list.__next);
++      /* We need to set op_pending before starting the operation.  Also
++	 see comments at ENQUEUE_MUTEX.  */
++      __asm ("" ::: "memory");
+ 
+       oldval = mutex->__data.__lock;
+       do
+@@ -119,7 +122,12 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	      /* But it is inconsistent unless marked otherwise.  */
+ 	      mutex->__data.__owner = PTHREAD_MUTEX_INCONSISTENT;
+ 
++	      /* We must not enqueue the mutex before we have acquired it.
++		 Also see comments at ENQUEUE_MUTEX.  */
++	      __asm ("" ::: "memory");
+ 	      ENQUEUE_MUTEX (mutex);
++	      /* We need to clear op_pending after we enqueue the mutex.  */
++	      __asm ("" ::: "memory");
+ 	      THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+ 	      /* Note that we deliberately exist here.  If we fall
+@@ -135,6 +143,8 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	      int kind = PTHREAD_MUTEX_TYPE (mutex);
+ 	      if (kind == PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP)
+ 		{
++		  /* We do not need to ensure ordering wrt another memory
++		     access.  Also see comments at ENQUEUE_MUTEX. */
+ 		  THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ 				 NULL);
+ 		  return EDEADLK;
+@@ -142,6 +152,8 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 
+ 	      if (kind == PTHREAD_MUTEX_ROBUST_RECURSIVE_NP)
+ 		{
++		  /* We do not need to ensure ordering wrt another memory
++		     access.  */
+ 		  THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ 				 NULL);
+ 
+@@ -160,6 +172,9 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 							id, 0);
+ 	  if (oldval != 0 && (oldval & FUTEX_OWNER_DIED) == 0)
+ 	    {
++	      /* We haven't acquired the lock as it is already acquired by
++		 another owner.  We do not need to ensure ordering wrt another
++		 memory access.  */
+ 	      THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+ 	      return EBUSY;
+@@ -173,13 +188,20 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	      if (oldval == id)
+ 		lll_unlock (mutex->__data.__lock,
+ 			    PTHREAD_ROBUST_MUTEX_PSHARED (mutex));
++	      /* FIXME This violates the mutex destruction requirements.  See
++		 __pthread_mutex_unlock_full.  */
+ 	      THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 	      return ENOTRECOVERABLE;
+ 	    }
+ 	}
+       while ((oldval & FUTEX_OWNER_DIED) != 0);
+ 
++      /* We must not enqueue the mutex before we have acquired it.
++	 Also see comments at ENQUEUE_MUTEX.  */
++      __asm ("" ::: "memory");
+       ENQUEUE_MUTEX (mutex);
++      /* We need to clear op_pending after we enqueue the mutex.  */
++      __asm ("" ::: "memory");
+       THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+       mutex->__data.__owner = id;
+@@ -211,10 +233,15 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	}
+ 
+ 	if (robust)
+-	  /* Note: robust PI futexes are signaled by setting bit 0.  */
+-	  THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+-			 (void *) (((uintptr_t) &mutex->__data.__list.__next)
+-				   | 1));
++	  {
++	    /* Note: robust PI futexes are signaled by setting bit 0.  */
++	    THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
++			   (void *) (((uintptr_t) &mutex->__data.__list.__next)
++				     | 1));
++	    /* We need to set op_pending before starting the operation.  Also
++	       see comments at ENQUEUE_MUTEX.  */
++	    __asm ("" ::: "memory");
++	  }
+ 
+ 	oldval = mutex->__data.__lock;
+ 
+@@ -223,12 +250,16 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	  {
+ 	    if (kind == PTHREAD_MUTEX_ERRORCHECK_NP)
+ 	      {
++		/* We do not need to ensure ordering wrt another memory
++		   access.  */
+ 		THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 		return EDEADLK;
+ 	      }
+ 
+ 	    if (kind == PTHREAD_MUTEX_RECURSIVE_NP)
+ 	      {
++		/* We do not need to ensure ordering wrt another memory
++		   access.  */
+ 		THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+ 		/* Just bump the counter.  */
+@@ -250,6 +281,9 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	  {
+ 	    if ((oldval & FUTEX_OWNER_DIED) == 0)
+ 	      {
++		/* We haven't acquired the lock as it is already acquired by
++		   another owner.  We do not need to ensure ordering wrt another
++		   memory access.  */
+ 		THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+ 		return EBUSY;
+@@ -270,6 +304,9 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	    if (INTERNAL_SYSCALL_ERROR_P (e, __err)
+ 		&& INTERNAL_SYSCALL_ERRNO (e, __err) == EWOULDBLOCK)
+ 	      {
++		/* The kernel has not yet finished the mutex owner death.
++		   We do not need to ensure ordering wrt another memory
++		   access.  */
+ 		THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+ 		return EBUSY;
+@@ -287,7 +324,12 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 	    /* But it is inconsistent unless marked otherwise.  */
+ 	    mutex->__data.__owner = PTHREAD_MUTEX_INCONSISTENT;
+ 
++	    /* We must not enqueue the mutex before we have acquired it.
++	       Also see comments at ENQUEUE_MUTEX.  */
++	    __asm ("" ::: "memory");
+ 	    ENQUEUE_MUTEX (mutex);
++	    /* We need to clear op_pending after we enqueue the mutex.  */
++	    __asm ("" ::: "memory");
+ 	    THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 
+ 	    /* Note that we deliberately exit here.  If we fall
+@@ -310,13 +352,20 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
+ 						  PTHREAD_ROBUST_MUTEX_PSHARED (mutex)),
+ 			      0, 0);
+ 
++	    /* To the kernel, this will be visible after the kernel has
++	       acquired the mutex in the syscall.  */
+ 	    THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 	    return ENOTRECOVERABLE;
+ 	  }
+ 
+ 	if (robust)
+ 	  {
++	    /* We must not enqueue the mutex before we have acquired it.
++	       Also see comments at ENQUEUE_MUTEX.  */
++	    __asm ("" ::: "memory");
+ 	    ENQUEUE_MUTEX_PI (mutex);
++	    /* We need to clear op_pending after we enqueue the mutex.  */
++	    __asm ("" ::: "memory");
+ 	    THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+ 	  }
+ 
+From c096b008d2671028c21ac8cf01f18a2083e73c44 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 8 Feb 2019 12:54:41 +0100
+Subject: [PATCH] nptl: Avoid fork handler lock for async-signal-safe fork [BZ
+ #24161]
+--- a/nptl/register-atfork.c
++++ b/nptl/register-atfork.c
+@@ -107,13 +107,14 @@ __unregister_atfork (void *dso_handle)
+ }
+ 
+ void
+-__run_fork_handlers (enum __run_fork_handler_type who)
++__run_fork_handlers (enum __run_fork_handler_type who, _Bool do_locking)
+ {
+   struct fork_handler *runp;
+ 
+   if (who == atfork_run_prepare)
+     {
+-      lll_lock (atfork_lock, LLL_PRIVATE);
++      if (do_locking)
++	lll_lock (atfork_lock, LLL_PRIVATE);
+       size_t sl = fork_handler_list_size (&fork_handlers);
+       for (size_t i = sl; i > 0; i--)
+ 	{
+@@ -133,7 +134,8 @@ __run_fork_handlers (enum __run_fork_handler_type who)
+ 	  else if (who == atfork_run_parent && runp->parent_handler)
+ 	    runp->parent_handler ();
+ 	}
+-      lll_unlock (atfork_lock, LLL_PRIVATE);
++      if (do_locking)
++	lll_unlock (atfork_lock, LLL_PRIVATE);
+     }
+ }
+ 
+diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
+index bd68f18b45..14b69a6f89 100644
+--- a/sysdeps/nptl/fork.c
++++ b/sysdeps/nptl/fork.c
+@@ -55,7 +55,7 @@ __libc_fork (void)
+      but our current fork implementation is not.  */
+   bool multiple_threads = THREAD_GETMEM (THREAD_SELF, header.multiple_threads);
+ 
+-  __run_fork_handlers (atfork_run_prepare);
++  __run_fork_handlers (atfork_run_prepare, multiple_threads);
+ 
+   /* If we are not running multiple threads, we do not have to
+      preserve lock state.  If fork runs from a signal handler, only
+@@ -134,7 +134,7 @@ __libc_fork (void)
+       __rtld_lock_initialize (GL(dl_load_lock));
+ 
+       /* Run the handlers registered for the child.  */
+-      __run_fork_handlers (atfork_run_child);
++      __run_fork_handlers (atfork_run_child, multiple_threads);
+     }
+   else
+     {
+@@ -149,7 +149,7 @@ __libc_fork (void)
+ 	}
+ 
+       /* Run the handlers registered for the parent.  */
+-      __run_fork_handlers (atfork_run_parent);
++      __run_fork_handlers (atfork_run_parent, multiple_threads);
+     }
+ 
+   return pid;
+diff --git a/sysdeps/nptl/fork.h b/sysdeps/nptl/fork.h
+index a1c3b26b68..99ed76034b 100644
+--- a/sysdeps/nptl/fork.h
++++ b/sysdeps/nptl/fork.h
+@@ -52,10 +52,12 @@ enum __run_fork_handler_type
+    - atfork_run_child: run all the CHILD_HANDLER and unlocks the internal
+ 		       lock.
+    - atfork_run_parent: run all the PARENT_HANDLER and unlocks the internal
+-			lock.  */
+-extern void __run_fork_handlers (enum __run_fork_handler_type who)
+-  attribute_hidden;
++			lock.
++
++   Perform locking only if DO_LOCKING.  */
++extern void __run_fork_handlers (enum __run_fork_handler_type who,
++				 _Bool do_locking) attribute_hidden;
+ 
+ /* C library side function to register new fork handlers.  */
+ extern int __register_atfork (void (*__prepare) (void),
+
+From 067fc32968b601493f4b247a3ac00caeea3f3d61 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 15 Feb 2019 21:27:01 +0100
+Subject: [PATCH] nptl: Fix invalid Systemtap probe in pthread_join [BZ #24211]
+diff --git a/nptl/pthread_join_common.c b/nptl/pthread_join_common.c
+index ecb78ffba5..366feb376b 100644
+--- a/nptl/pthread_join_common.c
++++ b/nptl/pthread_join_common.c
+@@ -86,6 +86,7 @@ __pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
+       pthread_cleanup_pop (0);
+     }
+ 
++  void *pd_result = pd->result;
+   if (__glibc_likely (result == 0))
+     {
+       /* We mark the thread as terminated and as joined.  */
+@@ -93,7 +94,7 @@ __pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
+ 
+       /* Store the return value if the caller is interested.  */
+       if (thread_return != NULL)
+-	*thread_return = pd->result;
++	*thread_return = pd_result;
+ 
+       /* Free the TCB.  */
+       __free_tcb (pd);
+@@ -101,7 +102,7 @@ __pthread_timedjoin_ex (pthread_t threadid, void **thread_return,
+   else
+     pd->joinid = NULL;
+ 
+-  LIBC_PROBE (pthread_join_ret, 3, threadid, result, pd->result);
++  LIBC_PROBE (pthread_join_ret, 3, threadid, result, pd_result);
+ 
+   return result;
+ }
+
+From bc6f839fb4066be83272c735e662850af2595777 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.ibm.com>
+Date: Wed, 13 Mar 2019 10:45:35 +0100
+Subject: [PATCH] Fix output of LD_SHOW_AUXV=1.
+diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
+index 5f6c679a3f..5d19b100b2 100644
+--- a/elf/dl-sysdep.c
++++ b/elf/dl-sysdep.c
+@@ -328,14 +328,9 @@ _dl_show_auxv (void)
+       assert (AT_NULL == 0);
+       assert (AT_IGNORE == 1);
+ 
+-      if (av->a_type == AT_HWCAP || av->a_type == AT_HWCAP2
+-	  || AT_L1I_CACHEGEOMETRY || AT_L1D_CACHEGEOMETRY
+-	  || AT_L2_CACHEGEOMETRY || AT_L3_CACHEGEOMETRY)
+-	{
+-	  /* These are handled in a special way per platform.  */
+-	  if (_dl_procinfo (av->a_type, av->a_un.a_val) == 0)
+-	    continue;
+-	}
++      /* Some entries are handled in a special way per platform.  */
++      if (_dl_procinfo (av->a_type, av->a_un.a_val) == 0)
++	continue;
+ 
+       if (idx < sizeof (auxvars) / sizeof (auxvars[0])
+ 	  && auxvars[idx].form != unknown)
+diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
+index f542f7318f..dfc3b33a72 100644
+--- a/sysdeps/powerpc/dl-procinfo.h
++++ b/sysdeps/powerpc/dl-procinfo.h
+@@ -225,7 +225,7 @@ _dl_procinfo (unsigned int type, unsigned long int word)
+ 	break;
+       }
+     default:
+-      /* This should not happen.  */
++      /* Fallback to generic output mechanism.  */
+       return -1;
+     }
+    _dl_printf ("\n");
+diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h
+index 282b8c5117..64ee267fc7 100644
+--- a/sysdeps/sparc/dl-procinfo.h
++++ b/sysdeps/sparc/dl-procinfo.h
+@@ -31,8 +31,8 @@ _dl_procinfo (unsigned int type, unsigned long int word)
+ {
+   int i;
+ 
+-  /* Fallback to unknown output mechanism.  */
+-  if (type == AT_HWCAP2)
++  /* Fallback to generic output mechanism.  */
++  if (type != AT_HWCAP)
+     return -1;
+ 
+   _dl_printf ("AT_HWCAP:   ");
+diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+index 66c00297b7..05c62c8687 100644
+--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
++++ b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+@@ -67,7 +67,7 @@ _dl_procinfo (unsigned int type, unsigned long int word)
+ 	break;
+       }
+     default:
+-      /* This should not happen.  */
++      /* Fallback to generic output mechanism.  */
+       return -1;
+     }
+   _dl_printf ("\n");
+diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
+index 22b43431bc..0585cdaa9c 100644
+--- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
++++ b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h
+@@ -30,8 +30,8 @@ _dl_procinfo (unsigned int type, unsigned long int word)
+      in the kernel sources.  */
+   int i;
+ 
+-  /* Fallback to unknown output mechanism.  */
+-  if (type == AT_HWCAP2)
++  /* Fallback to generic output mechanism.  */
++  if (type != AT_HWCAP)
+     return -1;
+ 
+   _dl_printf ("AT_HWCAP:   ");
+diff --git a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
+index 19329a335b..d67fde368f 100644
+--- a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
++++ b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h
+@@ -32,8 +32,8 @@ _dl_procinfo (unsigned int type, unsigned long int word)
+      in the kernel sources.  */
+   int i;
+ 
+-  /* Fallback to unknown output mechanism.  */
+-  if (type == AT_HWCAP2)
++  /* Fallback to generic output mechanism.  */
++  if (type != AT_HWCAP)
+     return -1;
+ 
+   _dl_printf ("AT_HWCAP:   ");
+
+From e28ad442e73b00ae2047d89c8cc7f9b2a0de5436 Mon Sep 17 00:00:00 2001
+From: TAMUKI Shoichi <tamuki@linet.gr.jp>
+Date: Sat, 2 Mar 2019 21:00:28 +0900
+Subject: [PATCH] ja_JP: Change the offset for Taisho gan-nen from 2 to 1 [BZ
+ #24162]
+diff --git a/localedata/locales/ja_JP b/localedata/locales/ja_JP
+index 1fd2fee44b..9bfbb2bb9b 100644
+--- a/localedata/locales/ja_JP
++++ b/localedata/locales/ja_JP
+@@ -14951,7 +14951,7 @@ era	"+:2:1990//01//01:+*:<U5E73><U6210>:%EC%Ey<U5E74>";/
+ 	"+:2:1927//01//01:1989//01//07:<U662D><U548C>:%EC%Ey<U5E74>";/
+ 	"+:1:1926//12//25:1926//12//31:<U662D><U548C>:%EC<U5143><U5E74>";/
+ 	"+:2:1913//01//01:1926//12//24:<U5927><U6B63>:%EC%Ey<U5E74>";/
+-	"+:2:1912//07//30:1912//12//31:<U5927><U6B63>:%EC<U5143><U5E74>";/
++	"+:1:1912//07//30:1912//12//31:<U5927><U6B63>:%EC<U5143><U5E74>";/
+ 	"+:6:1873//01//01:1912//07//29:<U660E><U6CBB>:%EC%Ey<U5E74>";/
+ 	"+:1:0001//01//01:1872//12//31:<U897F><U66A6>:%EC%Ey<U5E74>";/
+ 	"+:1:-0001//12//31:-*:<U7D00><U5143><U524D>:%EC%Ey<U5E74>"
+
+From 0941350c20a52447e53c5169354408e3db591f73 Mon Sep 17 00:00:00 2001
+From: TAMUKI Shoichi <tamuki@linet.gr.jp>
+Date: Tue, 2 Apr 2019 16:46:55 +0900
+Subject: [PATCH] ja_JP locale: Add entry for the new Japanese era [BZ #22964]
+diff --git a/localedata/locales/ja_JP b/localedata/locales/ja_JP
+index 9bfbb2bb9b..c64aaaff55 100644
+--- a/localedata/locales/ja_JP
++++ b/localedata/locales/ja_JP
+@@ -14946,7 +14946,9 @@ am_pm	"<U5348><U524D>";"<U5348><U5F8C>"
+ 
+ t_fmt_ampm "%p%I<U6642>%M<U5206>%S<U79D2>"
+ 
+-era	"+:2:1990//01//01:+*:<U5E73><U6210>:%EC%Ey<U5E74>";/
++era	"+:2:2020//01//01:+*:<U4EE4><U548C>:%EC%Ey<U5E74>";/
++	"+:1:2019//05//01:2019//12//31:<U4EE4><U548C>:%EC<U5143><U5E74>";/
++	"+:2:1990//01//01:2019//04//30:<U5E73><U6210>:%EC%Ey<U5E74>";/
+ 	"+:1:1989//01//08:1989//12//31:<U5E73><U6210>:%EC<U5143><U5E74>";/
+ 	"+:2:1927//01//01:1989//01//07:<U662D><U548C>:%EC%Ey<U5E74>";/
+ 	"+:1:1926//12//25:1926//12//31:<U662D><U548C>:%EC<U5143><U5E74>";/
+
+From 52b7cd6e9a701bb203023d56e84551943dc6a4c0 Mon Sep 17 00:00:00 2001
+From: Adam Maris <amaris@redhat.com>
+Date: Thu, 14 Mar 2019 16:51:16 -0400
+Subject: [PATCH] malloc: Check for large bin list corruption when inserting
+ unsorted chunk
+diff --git a/malloc/malloc.c b/malloc/malloc.c
+index feaf7ee0bf..ce771375b6 100644
+--- a/malloc/malloc.c
++++ b/malloc/malloc.c
+@@ -3876,10 +3876,14 @@ _int_malloc (mstate av, size_t bytes)
+                         {
+                           victim->fd_nextsize = fwd;
+                           victim->bk_nextsize = fwd->bk_nextsize;
++                          if (__glibc_unlikely (fwd->bk_nextsize->fd_nextsize != fwd))
++                            malloc_printerr ("malloc(): largebin double linked list corrupted (nextsize)");
+                           fwd->bk_nextsize = victim;
+                           victim->bk_nextsize->fd_nextsize = victim;
+                         }
+                       bck = fwd->bk;
++                      if (bck->fd != fwd)
++                        malloc_printerr ("malloc(): largebin double linked list corrupted (bk)");
+                     }
+                 }
+               else
+
+From c6177be4b92d5d7df50a785652d1912db511423e Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@suse.de>
+Date: Wed, 15 May 2019 17:09:05 +0200
+Subject: [PATCH] Fix crash in _IO_wfile_sync (bug 20568)
+diff --git a/libio/wfileops.c b/libio/wfileops.c
+index 78f20486e5..bab2ba4892 100644
+--- a/libio/wfileops.c
++++ b/libio/wfileops.c
+@@ -508,11 +508,12 @@ _IO_wfile_sync (FILE *fp)
+ 	     generate the wide characters up to the current reading
+ 	     position.  */
+ 	  int nread;
+-
++	  size_t wnread = (fp->_wide_data->_IO_read_ptr
++			   - fp->_wide_data->_IO_read_base);
+ 	  fp->_wide_data->_IO_state = fp->_wide_data->_IO_last_state;
+ 	  nread = (*cv->__codecvt_do_length) (cv, &fp->_wide_data->_IO_state,
+ 					      fp->_IO_read_base,
+-					      fp->_IO_read_end, delta);
++					      fp->_IO_read_end, wnread);
+ 	  fp->_IO_read_ptr = fp->_IO_read_base + nread;
+ 	  delta = -(fp->_IO_read_end - fp->_IO_read_base - nread);
+ 	}
+
+From e3f828b8bd6e21922da8be8dee35edef09382d8d Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Wed, 15 May 2019 17:14:01 +0200
+Subject: [PATCH] dlfcn: Guard __dlerror_main_freeres with __libc_once_get
+ (once) [BZ#24476]
+diff --git a/dlfcn/dlerror.c b/dlfcn/dlerror.c
+index 27376582d0..ca42c126c1 100644
+--- a/dlfcn/dlerror.c
++++ b/dlfcn/dlerror.c
+@@ -72,9 +72,16 @@ __dlerror (void)
+   __libc_once (once, init);
+ 
+   /* Get error string.  */
+-  result = (struct dl_action_result *) __libc_getspecific (key);
+-  if (result == NULL)
+-    result = &last_result;
++  if (static_buf != NULL)
++    result = static_buf;
++  else
++    {
++      /* init () has been run and we don't use the static buffer.
++	 So we have a valid key.  */
++      result = (struct dl_action_result *) __libc_getspecific (key);
++      if (result == NULL)
++	result = &last_result;
++    }
+ 
+   /* Test whether we already returned the string.  */
+   if (result->returned != 0)
+@@ -230,13 +237,19 @@ free_key_mem (void *mem)
+ void
+ __dlerror_main_freeres (void)
+ {
+-  void *mem;
+   /* Free the global memory if used.  */
+   check_free (&last_result);
+-  /* Free the TSD memory if used.  */
+-  mem = __libc_getspecific (key);
+-  if (mem != NULL)
+-    free_key_mem (mem);
++
++  if (__libc_once_get (once) && static_buf == NULL)
++    {
++      /* init () has been run and we don't use the static buffer.
++	 So we have a valid key.  */
++      void *mem;
++      /* Free the TSD memory if used.  */
++      mem = __libc_getspecific (key);
++      if (mem != NULL)
++	free_key_mem (mem);
++    }
+ }
+ 
+ struct dlfcn_hook *_dlfcn_hook __attribute__((nocommon));
+
+From 95d66fecaabbc92ab53027e808f0fc1929c9f21a Mon Sep 17 00:00:00 2001
+From: Wilco Dijkstra <wdijkstr@arm.com>
+Date: Fri, 10 May 2019 16:38:21 +0100
+Subject: [PATCH] Fix tcache count maximum (BZ #24531)
+diff --git a/malloc/malloc.c b/malloc/malloc.c
+index ce771375b6..0abd653be2 100644
+--- a/malloc/malloc.c
++++ b/malloc/malloc.c
+@@ -2919,6 +2919,8 @@ typedef struct tcache_perthread_struct
+   tcache_entry *entries[TCACHE_MAX_BINS];
+ } tcache_perthread_struct;
+ 
++#define MAX_TCACHE_COUNT 127	/* Maximum value of counts[] entries.  */
++
+ static __thread bool tcache_shutting_down = false;
+ static __thread tcache_perthread_struct *tcache = NULL;
+ 
+@@ -5124,8 +5126,11 @@ static inline int
+ __always_inline
+ do_set_tcache_count (size_t value)
+ {
+-  LIBC_PROBE (memory_tunable_tcache_count, 2, value, mp_.tcache_count);
+-  mp_.tcache_count = value;
++  if (value <= MAX_TCACHE_COUNT)
++    {
++      LIBC_PROBE (memory_tunable_tcache_count, 2, value, mp_.tcache_count);
++      mp_.tcache_count = value;
++    }
+   return 1;
+ }
+ 
+From 34fb5f61d3c3f4b8fc616ea259fa19168b58ecd4 Mon Sep 17 00:00:00 2001
+From: "Dmitry V. Levin" <ldv@altlinux.org>
+Date: Wed, 13 Feb 2019 01:20:51 +0000
+Subject: [PATCH] libio: do not attempt to free wide buffers of legacy streams
+ [BZ #24228]
+diff --git a/libio/genops.c b/libio/genops.c
+index 2a0d9b81df..11a15549e8 100644
+--- a/libio/genops.c
++++ b/libio/genops.c
+@@ -789,9 +789,16 @@ _IO_unbuffer_all (void)
+ 
+   for (fp = (FILE *) _IO_list_all; fp; fp = fp->_chain)
+     {
++      int legacy = 0;
++
++#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
++      if (__glibc_unlikely (_IO_vtable_offset (fp) != 0))
++	legacy = 1;
++#endif
++
+       if (! (fp->_flags & _IO_UNBUFFERED)
+ 	  /* Iff stream is un-orientated, it wasn't used. */
+-	  && fp->_mode != 0)
++	  && (legacy || fp->_mode != 0))
+ 	{
+ #ifdef _IO_MTSAFE_IO
+ 	  int cnt;
+@@ -805,7 +812,7 @@ _IO_unbuffer_all (void)
+ 	      __sched_yield ();
+ #endif
+ 
+-	  if (! dealloc_buffers && !(fp->_flags & _IO_USER_BUF))
++	  if (! legacy && ! dealloc_buffers && !(fp->_flags & _IO_USER_BUF))
+ 	    {
+ 	      fp->_flags |= _IO_USER_BUF;
+ 
+@@ -816,7 +823,7 @@ _IO_unbuffer_all (void)
+ 
+ 	  _IO_SETBUF (fp, NULL, 0);
+ 
+-	  if (fp->_mode > 0)
++	  if (! legacy && fp->_mode > 0)
+ 	    _IO_wsetb (fp, NULL, NULL, 0);
+ 
+ #ifdef _IO_MTSAFE_IO
+@@ -827,7 +834,8 @@ _IO_unbuffer_all (void)
+ 
+       /* Make sure that never again the wide char functions can be
+ 	 used.  */
+-      fp->_mode = -1;
++      if (! legacy)
++	fp->_mode = -1;
+     }
+ 
+ #ifdef _IO_MTSAFE_IO
+
diff --git a/gnu/packages/patches/glibc-CVE-2019-7309.patch b/gnu/packages/patches/glibc-CVE-2019-7309.patch
new file mode 100644
index 0000000000..f9f623830a
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2019-7309.patch
@@ -0,0 +1,76 @@
+Fix <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-7309>.
+
+Taken from this upstream commit, sans ChangeLog updates and tests:
+<https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3f635fb43389b54f682fc9ed2acc0b2aaf4a923d>.
+
+diff --git a/sysdeps/x86_64/memcmp.S b/sysdeps/x86_64/memcmp.S
+index 1fc487caa5..1322bb3b92 100644
+--- a/sysdeps/x86_64/memcmp.S
++++ b/sysdeps/x86_64/memcmp.S
+@@ -21,14 +21,18 @@
+ 
+ 	.text
+ ENTRY (memcmp)
+-	test	%rdx, %rdx
++#ifdef __ILP32__
++	/* Clear the upper 32 bits.  */
++	movl	%edx, %edx
++#endif
++	test	%RDX_LP, %RDX_LP
+ 	jz	L(finz)
+ 	cmpq	$1, %rdx
+-	jle	L(finr1b)
++	jbe	L(finr1b)
+ 	subq	%rdi, %rsi
+ 	movq	%rdx, %r10
+ 	cmpq	$32, %r10
+-	jge	L(gt32)
++	jae	L(gt32)
+ 	/* Handle small chunks and last block of less than 32 bytes.  */
+ L(small):
+ 	testq	$1, %r10
+@@ -156,7 +160,7 @@ L(A32):
+ 	movq	%r11, %r10
+ 	andq	$-32, %r10
+ 	cmpq	%r10, %rdi
+-        jge	L(mt16)
++        jae	L(mt16)
+ 	/* Pre-unroll to be ready for unrolled 64B loop.  */
+ 	testq	$32, %rdi
+ 	jz	L(A64)
+@@ -178,7 +182,7 @@ L(A64):
+ 	movq	%r11, %r10
+ 	andq	$-64, %r10
+ 	cmpq	%r10, %rdi
+-        jge	L(mt32)
++        jae	L(mt32)
+ 
+ L(A64main):
+ 	movdqu    (%rdi,%rsi), %xmm0
+@@ -216,7 +220,7 @@ L(mt32):
+ 	movq	%r11, %r10
+ 	andq	$-32, %r10
+ 	cmpq	%r10, %rdi
+-        jge	L(mt16)
++        jae	L(mt16)
+ 
+ L(A32main):
+ 	movdqu    (%rdi,%rsi), %xmm0
+@@ -254,7 +258,7 @@ L(ATR):
+ 	movq	%r11, %r10
+ 	andq	$-32, %r10
+ 	cmpq	%r10, %rdi
+-        jge	L(mt16)
++        jae	L(mt16)
+ 	testq	$16, %rdi
+ 	jz	L(ATR32)
+ 
+@@ -325,7 +329,7 @@ L(ATR64main):
+ 	movq	%r11, %r10
+ 	andq	$-32, %r10
+ 	cmpq	%r10, %rdi
+-        jge	L(mt16)
++        jae	L(mt16)
+ 
+ L(ATR32res):
+ 	movdqa    (%rdi,%rsi), %xmm0
diff --git a/gnu/packages/patches/glibc-CVE-2019-9169.patch b/gnu/packages/patches/glibc-CVE-2019-9169.patch
new file mode 100644
index 0000000000..029b4ddbd7
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2019-9169.patch
@@ -0,0 +1,22 @@
+Fix <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9169>.
+
+Taken from this upstream commit, sans ChangeLog updates:
+https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=583dd860d5b833037175247230a328f0050dbfe9
+
+diff --git a/posix/regexec.c b/posix/regexec.c
+index 91d5a797b8..084b1222d9 100644
+--- a/posix/regexec.c
++++ b/posix/regexec.c
+@@ -1293,8 +1293,10 @@ proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
+ 	      else if (naccepted)
+ 		{
+ 		  char *buf = (char *) re_string_get_buffer (&mctx->input);
+-		  if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
+-			      naccepted) != 0)
++		  if (mctx->input.valid_len - *pidx < naccepted
++		      || (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
++				  naccepted)
++			  != 0))
+ 		    return -1;
+ 		}
+ 	    }
diff --git a/gnu/packages/patches/glibc-boot-2.16.0.patch b/gnu/packages/patches/glibc-boot-2.16.0.patch
new file mode 100644
index 0000000000..5cb29bc271
--- /dev/null
+++ b/gnu/packages/patches/glibc-boot-2.16.0.patch
@@ -0,0 +1,352 @@
+This patch enables building glibc-2.2.5 using TCC and GNU Make 4.x and Mes C Library.
+
+  * Makefile: Do not link with (non-existent) libgc_eh.
+  * Makefile: Add SHELL variable, ready for substitution, export it.
+  * Makefile: Do not build or assume librpc_compat_pic.
+  * Makefile: Do not build libmesusage.
+  * gen-as-const: Always add preamble.
+  * [BOOTSTRAP_GLIBC]: Really disable rpc.
+
+Upstream status: Not presented upstream.
+
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/elf/Makefile glibc-2.16.0/elf/Makefile
+--- /home/janneke/src/glibc-2.16.0/elf/Makefile	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/elf/Makefile	2018-09-02 12:54:44.616962543 +0200
+@@ -17,6 +17,8 @@
+ 
+ # Makefile for elf subdirectory of GNU C Library.
+ 
++SHELL := /bin/sh
++
+ subdir		:= elf
+ 
+ headers		= elf.h bits/elfclass.h link.h bits/link.h
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/include/libc-symbols.h glibc-2.16.0/include/libc-symbols.h
+--- /home/janneke/src/glibc-2.16.0/include/libc-symbols.h	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/include/libc-symbols.h	2018-09-02 22:41:00.798467803 +0200
+@@ -558,9 +558,9 @@ for linking")
+ # define libc_hidden_weak(name) hidden_weak (name)
+ # ifdef LINK_OBSOLETE_RPC
+    /* libc_hidden_nolink_sunrpc should only get used in sunrpc code.  */
+-#  define libc_hidden_nolink_sunrpc(name, version) hidden_def (name)
++#  define libc_hidden_nolink_sunrpc(name, version)
+ # else
+-#  define libc_hidden_nolink_sunrpc(name, version) hidden_nolink (name, libc, version)
++#  define libc_hidden_nolink_sunrpc(name, version)
+ # endif
+ # define libc_hidden_ver(local, name) hidden_ver (local, name)
+ # define libc_hidden_data_def(name) hidden_data_def (name)
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makeconfig glibc-2.16.0/Makeconfig
+--- /home/janneke/src/glibc-2.16.0/Makeconfig	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/Makeconfig	2018-09-03 00:00:25.290357414 +0200
+@@ -23,6 +23,9 @@ ifneq (,)
+ This makefile requires GNU Make.
+ endif
+ 
++SHELL := /bin/sh
++export SHELL
++
+ all: # Make this the default goal
+ 
+ ifneq "$(origin +included-Makeconfig)" "file"
+@@ -521,9 +524,9 @@ ifneq ($(have-cc-with-libunwind),yes)
+ else
+   libunwind = -lunwind
+ endif
+-libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
++libgcc_eh := #-Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
+ gnulib := -lgcc $(libgcc_eh)
+-static-gnulib := -lgcc -lgcc_eh $(libunwind)
++static-gnulib := -lgcc $(libunwind)
+ libc.so-gnulib := -lgcc
+ endif
+ +preinit = $(addprefix $(csu-objpfx),crti.o)
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makefile glibc-2.16.0/Makefile
+--- /home/janneke/src/glibc-2.16.0/Makefile	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/Makefile	2018-09-02 23:01:10.485803965 +0200
+@@ -22,6 +22,9 @@ ifneq (,)
+ This makefile requires GNU Make.
+ endif
+ 
++SHELL := /bin/sh
++export SHELL
++
+ include Makeconfig
+ 
+ 
+@@ -135,13 +138,10 @@ $(common-objpfx)linkobj/libc.so: $(elfob
+ 				 $(shlib-lds)
+ 	$(build-shlib)
+ 
+-$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \
+-				    $(common-objpfx)sunrpc/librpc_compat_pic.a
++$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a
+ 	$(..)./scripts/mkinstalldirs $(common-objpfx)linkobj
+ 	(cd $(common-objpfx)linkobj; \
+ 	 $(AR) x ../libc_pic.a; \
+-	 rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \
+-	 $(AR) x ../sunrpc/librpc_compat_pic.a; \
+ 	 $(AR) cr libc_pic.a *.os; \
+ 	 rm *.os)
+ endif
+@@ -151,7 +151,7 @@ endif
+ # the current libc build for testing.
+ $(common-objpfx)testrun.sh: $(common-objpfx)config.make \
+ 			    $(..)Makeconfig $(..)Makefile
+-	(echo '#!/bin/sh'; \
++	(echo '#! $(SHELL)'; \
+ 	 echo 'builddir=`dirname "$$0"`'; \
+ 	 echo 'GCONV_PATH="$${builddir}/iconvdata" \'; \
+ 	 echo 'exec $(subst $(common-objdir),"$${builddir}",\
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makefile.in glibc-2.16.0/Makefile.in
+--- /home/janneke/src/glibc-2.16.0/Makefile.in	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/Makefile.in	2018-09-02 13:03:01.892962551 +0200
+@@ -9,3 +9,6 @@ all .DEFAULT:
+ install:
+ 	LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \
+ 	$(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
++
++export SHELL
++export BASH
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/malloc/Makefile glibc-2.16.0/malloc/Makefile
+--- /home/janneke/src/glibc-2.16.0/malloc/Makefile	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/malloc/Makefile	2018-09-02 17:11:33.461547394 +0200
+@@ -35,7 +35,7 @@ install-lib := libmcheck.a
+ non-lib.a := libmcheck.a
+ 
+ # Additional library.
+-extra-libs = libmemusage
++extra-libs = #libmemusage
+ extra-libs-others = $(extra-libs)
+ 
+ libmemusage-routines = memusage
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/cache.c glibc-2.16.0/nscd/cache.c
+--- /home/janneke/src/glibc-2.16.0/nscd/cache.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/nscd/cache.c	2018-09-02 23:38:31.757616750 +0200
+@@ -74,7 +74,11 @@ struct datahead *
+ cache_search (request_type type, const void *key, size_t len,
+ 	      struct database_dyn *table, uid_t owner)
+ {
++#if !BOOTSTRAP_GLIBC
+   unsigned long int hash = __nis_hash (key, len) % table->head->module;
++#else
++  unsigned long int hash = 0;
++#endif
+ 
+   unsigned long int nsearched = 0;
+   struct datahead *result = NULL;
+@@ -153,7 +153,11 @@ cache_add (int type, const void *key, si
+ 	       first ? _(" (first)") : "");
+     }
+ 
++#if !BOOTSTRAP_GLIBC
+   unsigned long int hash = __nis_hash (key, len) % table->head->module;
++#else
++  unsigned long int hash = 0;
++#endif
+   struct hashentry *newp;
+ 
+   newp = mempool_alloc (table, sizeof (struct hashentry), 0);
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/Makefile glibc-2.16.0/nscd/Makefile
+--- /home/janneke/src/glibc-2.16.0/nscd/Makefile	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/nscd/Makefile	2018-09-02 23:49:29.948031787 +0200
+@@ -126,9 +126,7 @@ include $(patsubst %,$(..)cppflags-itera
+ $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
+ 
+ ifeq ($(build-shared),yes)
+-$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \
+-	       $(common-objpfx)nis/libnsl.so
++$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library)
+ else
+-$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \
+-	       $(common-objpfx)nis/libnsl.a
++$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library)
+ endif
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/nscd_helper.c glibc-2.16.0/nscd/nscd_helper.c
+--- /home/janneke/src/glibc-2.16.0/nscd/nscd_helper.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/nscd/nscd_helper.c	2018-09-02 23:38:04.941189464 +0200
+@@ -474,7 +474,7 @@ struct datahead *
+ __nscd_cache_search (request_type type, const char *key, size_t keylen,
+ 		     const struct mapped_database *mapped, size_t datalen)
+ {
+-  unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module;
++  unsigned long int hash = 0;
+   size_t datasize = mapped->datasize;
+ 
+   ref_t trail = mapped->head->array[hash];
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nss/getent.c glibc-2.16.0/nss/getent.c
+--- /home/janneke/src/glibc-2.16.0/nss/function.def	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/nss/function.def	2018-09-18 13:54:49.582060539 +0200
+@@ -63,10 +63,12 @@
+ DEFINE_GET (files, pwnam)
+ DEFINE_GET (files, pwuid)
+ 
++#if !BOOTSTRAP_GLIBC
+ /* rpc */
+ DEFINE_ENT (files, rpc)
+ DEFINE_GETBY (files, rpc, name)
+ DEFINE_GETBY (files, rpc, number)
++#endif
+ 
+ /* services */
+ DEFINE_ENT (files, serv)
+diff -u ~/src/glibc-2.16.0/nss/getent.c glibc-2.16.0/nss/getent.c
+--- /home/janneke/src/glibc-2.16.0/nss/getent.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/nss/getent.c	2018-09-18 13:57:41.856849140 +0200
+@@ -700,6 +700,7 @@
+   return result;
+ }
+ 
++#if !BOOTSTRAP_GLIBC
+ /* Now is all for rpc */
+ static inline void
+ print_rpc (struct rpcent *rpc)
+@@ -745,6 +746,7 @@
+ 
+   return result;
+ }
++#endif //rpc
+ 
+ /* for services */
+ static void
+@@ -880,7 +882,9 @@
+ D(networks)
+ D(passwd)
+ D(protocols)
++#if !BOOTSTRAP_GLIBC
+ D(rpc)
++#endif
+ D(services)
+ D(shadow)
+ #undef D
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/resolv/netdb.h glibc-2.16.0/resolv/netdb.h
+--- /home/janneke/src/glibc-2.16.0/resolv/netdb.h	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/resolv/netdb.h	2018-09-08 08:49:30.537811219 +0200
+@@ -26,11 +26,13 @@
+ 
+ #include <netinet/in.h>
+ #include <stdint.h>
++#if 0 //!BOOTSTRAP_GLIBC
+ #ifdef __USE_MISC
+ /* This is necessary to make this include file properly replace the
+    Sun version.  */
+ # include <rpc/netdb.h>
+ #endif
++#endif
+ 
+ #ifdef __USE_GNU
+ # define __need_sigevent_t
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Rules glibc-2.16.0/Rules
+--- /home/janneke/src/glibc-2.16.0/Rules	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/Rules	2018-09-02 10:52:06.927362861 +0200
+@@ -24,6 +24,9 @@ ifneq (,)
+ This makefile requires GNU Make.
+ endif
+ 
++export SHELL
++export BASH
++
+ all: # Don't let the default goal come from Makeconfig.
+ 
+ include $(firstword $(..) ../)Makeconfig
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/scripts/gen-as-const.awk glibc-2.16.0/scripts/gen-as-const.awk
+--- /home/janneke/src/glibc-2.16.0/scripts/gen-as-const.awk	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/scripts/gen-as-const.awk	2018-09-01 18:08:37.266516330 +0200
+@@ -14,6 +14,12 @@ BEGIN { started = 0 }
+ 
+ NF >= 1 && !started {
+   if (test) {
++    print "\n#include <stddef.h>";
++    print "\n#include <stdint.h>";
++#    print "\ntypedef unsigned long size_t;";
++    print "\n#ifndef offsetof";
++    print "\n#define offsetof(type, field) ((size_t)&((type *)0)->field)";
++    print "\n#endif";
+     print "\n#include <inttypes.h>";
+     print "\n#include <stdio.h>";
+     print "\n#include <bits/wordsize.h>";
+@@ -33,8 +39,15 @@ NF >= 1 && !started {
+       " source, #name, U (asconst_##name), #expr, (c_t) (expr));" \
+       " } else ++good;\n";
+   }
+-  else
++  else {
++    print "\n#include <stddef.h>";
++    print "\n#include <stdint.h>";
++#    print "\ntypedef unsigned long size_t;";
++    print "\n#ifndef offsetof";
++    print "\n#define offsetof(type, field) ((size_t)&((type *)0)->field)";
++    print "\n#endif";
+     print "void dummy(void) {";
++  }
+   started = 1;
+ }
+ 
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/auth_none.c glibc-2.16.0/sunrpc/auth_none.c
+--- /home/janneke/src/glibc-2.16.0/sunrpc/auth_none.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/sunrpc/auth_none.c	2018-09-02 22:09:21.629007932 +0200
+@@ -95,7 +95,9 @@ authnone_create (void)
+   __libc_once (authnone_private_guard, authnone_create_once);
+   return &authnone_private.no_client;
+ }
++#if !BOOTSTRAP_GLIBC
+ libc_hidden_nolink_sunrpc (authnone_create, GLIBC_2_0)
++#endif
+ 
+ static bool_t
+ authnone_marshal (AUTH *client, XDR *xdrs)
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/authuxprot.c glibc-2.16.0/sunrpc/authuxprot.c
+--- /home/janneke/src/glibc-2.16.0/sunrpc/authuxprot.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/sunrpc/authuxprot.c	2018-09-02 22:15:51.927158451 +0200
+@@ -63,4 +63,6 @@ xdr_authunix_parms (XDR * xdrs, struct a
+     }
+   return FALSE;
+ }
++#if !BOOTSTRAP_GLIBC
+ libc_hidden_nolink_sunrpc (xdr_authunix_parms, GLIBC_2_0)
++#endif
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/bindrsvprt.c glibc-2.16.0/sunrpc/bindrsvprt.c
+--- /home/janneke/src/glibc-2.16.0/sunrpc/bindrsvprt.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/sunrpc/bindrsvprt.c	2018-09-02 22:24:32.687187675 +0200
+@@ -96,4 +96,7 @@ bindresvport (int sd, struct sockaddr_in
+ 
+   return res;
+ }
++#if !BOOTSTRAP_GLIBC
+ libc_hidden_def (bindresvport)
++#endif
++
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/clnt_raw.c glibc-2.16.0/sunrpc/clnt_raw.c
+--- /home/janneke/src/glibc-2.16.0/sunrpc/clnt_raw.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/sunrpc/clnt_raw.c	2018-09-02 22:33:21.151343826 +0200
+@@ -40,6 +40,7 @@
+ #include <rpc/svc.h>
+ #include <rpc/xdr.h>
+ #include <libintl.h>
++#include <stddef.h>
+ 
+ #define MCALL_MSG_SIZE 24
+ 
+@@ -129,7 +130,9 @@ clntraw_create (u_long prog, u_long vers
+   client->cl_auth = authnone_create ();
+   return client;
+ }
++#if !BOOTSTRAP_GLIBC
+ libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0)
++#endif
+ 
+ static enum clnt_stat
+ clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout)
+diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/clnt_simp.c glibc-2.16.0/sunrpc/clnt_simp.c
+--- /home/janneke/src/glibc-2.16.0/sunrpc/clnt_simp.c	2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/sunrpc/clnt_simp.c	2018-09-02 22:34:14.884175251 +0200
+@@ -139,7 +139,9 @@ callrpc (const char *host, u_long prognu
+     crp->valid = 0;
+   return (int) clnt_stat;
+ }
++#if !BOOTSTRAP_GLIBC
+ libc_hidden_nolink_sunrpc (callrpc, GLIBC_2_0)
++#endif
+ 
+ #ifdef _RPC_THREAD_SAFE_
+ void
diff --git a/gnu/packages/patches/glibc-boot-2.2.5.patch b/gnu/packages/patches/glibc-boot-2.2.5.patch
new file mode 100644
index 0000000000..26bc92a6bb
--- /dev/null
+++ b/gnu/packages/patches/glibc-boot-2.2.5.patch
@@ -0,0 +1,251 @@
+This patch enables building glibc-2.2.5 using TCC and GNU Make 4.x and Mes C Library.
+
+  * Makefile: Do not assemble from stdin, use file indirection.
+  * Makefile: Add new target: install-lib-all.
+  * Makefile: Avoid building stub DOC.
+  * [_LIBC_REENTRANT]: Add missing guarding.
+  * [MES_BOOTSTRAP]: Disable some GCC extensions.
+  * [MES_BOOTSTRAP]: Add missing GCC div/mod defines.
+
+Upstream status: Not presented upstream.
+
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/config.h.in glibc-2.2.5/config.h.in
+--- ../glibc-2.2.5/config.h.in	2001-11-16 02:02:56.000000000 +0100
++++ glibc-2.2.5/config.h.in	2018-06-17 21:30:02.313029074 +0200
+@@ -1,3 +1,10 @@
++#if MES_BOOTSTRAP && BOOTSTRAP_GLIBC
++#undef __umoddi3
++#define __umoddi3(a,b) ((a)%(b))
++#undef __udivdi3
++#define __udivdi3(a,b) ((a)/(b))
++#endif
++
+ #if !defined ASSEMBLER && !defined _ISOMAC && !defined __OPTIMIZE__
+ # error "glibc cannot be compiled without optimization"
+ #endif
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/configure glibc-2.2.5/configure
+--- ../glibc-2.2.5/configure	2002-01-08 23:16:44.000000000 +0100
++++ glibc-2.2.5/configure	2018-06-07 20:47:26.608895319 +0200
+@@ -1530,7 +1530,7 @@ echo "configure:1530: checking version o
+   ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
+   case $ac_prog_version in
+     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    3.79* | 3.[89]*)
++    3.79* | 3.[89]* | 4.*)
+        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ 
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Makeconfig glibc-2.2.5/Makeconfig
+--- ../glibc-2.2.5/Makeconfig	2001-09-12 20:49:45.000000000 +0200
++++ glibc-2.2.5/Makeconfig	2018-06-20 16:33:35.472167202 +0200
+@@ -400,7 +400,7 @@ ifndef +link
+ 						     $(start-installed-name))\
+ 			   $(+preinit) $(link-extra-libs) \
+ 			   $(common-objpfx)libc% $(+postinit),$^) \
+-	      $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
++	      $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit) -lc -lgcc2
+ endif
+ # Command for statically linking programs with the C library.
+ ifndef +link-static
+@@ -412,7 +412,7 @@ ifndef +link-static
+ 						     $(start-installed-name))\
+ 			   $(+preinit) $(link-extra-libs-static) \
+ 			   $(common-objpfx)libc% $(+postinit),$^) \
+-	      $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit)
++	      $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) -lc -lgcc2
+ endif
+ # Command for statically linking bounded-pointer programs with the C library.
+ ifndef +link-bounded
+@@ -424,7 +424,7 @@ ifndef +link-bounded
+ 						     $(start-installed-name))\
+ 			   $(+preinit) $(link-extra-libs-bounded) \
+ 			   $(common-objpfx)libc% $(+postinit),$^) \
+-	      $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit)
++	      $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit) -lc -lgcc2
+ endif
+ ifndef config-LDFLAGS
+ ifeq (yesyes,$(build-shared)$(elf))
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Makerules glibc-2.2.5/Makerules
+--- ../glibc-2.2.5/Makerules	2001-11-16 02:02:19.000000000 +0100
++++ glibc-2.2.5/Makerules	2018-06-10 15:03:42.390329860 +0200
+@@ -748,6 +748,18 @@ endef
+ installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
+ 			     $(inst_libdir)/$(patsubst %,$(libtype$o),\
+ 						     $(libprefix)$(libc-name)))
++
++ifeq (yes,$(build-shared))
++install-lib-all: $(inst_libdir)/libc.a \
++                $(inst_slibdir)/libc.so$(libc.so-version) \
++		$(inst_slibdir)/libc-$(version).so \
++		$(inst_libdir)/libc.so \
++	install-lib
++else
++install-lib-all: $(inst_libdir)/libc.a \
++	install-lib
++endif
++
+ install: $(installed-libcs)
+ $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
+ 	$(make-target-directory)
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/misc/syslog.c glibc-2.2.5/misc/syslog.c
+--- ../glibc-2.2.5/misc/syslog.c	2001-08-31 01:13:49.000000000 +0200
++++ glibc-2.2.5/misc/syslog.c	2018-06-09 09:01:20.008918690 +0200
+@@ -216,9 +216,11 @@ vsyslog(pri, fmt, ap)
+ 
+ 	/* Prepare for multiple users.  We have to take care: open and
+ 	   write are cancellation points.  */
++#if _LIBC_REENTRANT
+ 	__libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler,
+ 				     &oldaction_ptr);
+ 	__libc_lock_lock (syslog_lock);
++#endif
+ 
+ 	/* Prepare for a broken connection.  */
+  	memset (&action, 0, sizeof (action));
+@@ -268,9 +270,11 @@ vsyslog(pri, fmt, ap)
+ 	if (sigpipe == 0)
+ 		__sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL);
+ 
++#if _LIBC_REENTRANT
+ 	/* End of critical section.  */
+ 	__libc_cleanup_region_end (0);
+ 	__libc_lock_unlock (syslog_lock);
++#endif
+ 
+ 	free (buf);
+ }
+@@ -326,16 +330,20 @@ openlog_internal(const char *ident, int
+ void
+ openlog (const char *ident, int logstat, int logfac)
+ {
++#if _LIBC_REENTRANT
+   /* Protect against multiple users.  */
+   __libc_cleanup_region_start (1,
+ 			       (void (*) __P ((void *))) __libc_mutex_unlock,
+ 			       &syslog_lock);
+   __libc_lock_lock (syslog_lock);
++#endif
+ 
+   openlog_internal (ident, logstat, logfac);
+ 
++#if _LIBC_REENTRANT
+   /* Free the lock.  */
+   __libc_cleanup_region_end (1);
++#endif
+ }
+ 
+ static void
+@@ -358,18 +366,22 @@ closelog_internal()
+ void
+ closelog ()
+ {
++#if _LIBC_REENTRANT
+   /* Protect against multiple users.  */
+   __libc_cleanup_region_start (1,
+ 			       (void (*) __P ((void *))) __libc_mutex_unlock,
+ 			       &syslog_lock);
+   __libc_lock_lock (syslog_lock);
++#endif
+ 
+   closelog_internal ();
+   LogTag = NULL;
+   LogType = SOCK_DGRAM; /* this is the default */
+ 
++#if _LIBC_REENTRANT
+   /* Free the lock.  */
+   __libc_cleanup_region_end (1);
++#endif
+ }
+ 
+ #ifdef _LIBC_REENTRANT
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Rules glibc-2.2.5/Rules
+--- ../glibc-2.2.5/Rules	2001-08-30 00:44:35.000000000 +0200
++++ glibc-2.2.5/Rules	2018-06-09 08:15:54.880683675 +0200
+@@ -218,7 +218,7 @@ endif
+ 	fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; 	\
+ 	filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`;	\
+ 	iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`;	\
+-	fopen_max=$${fopen_max:-16};					\
++	fopen_max=$${fu_fopen_max:-16};					\
+ 	filename_max=$${filename_max:-1024};				\
+ 	if [ -z $$iov_max ]; then					\
+ 	  define_iov_max="# undef IOV_MAX";				\
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/stdio-common/perror.c glibc-2.2.5/stdio-common/perror.c
+--- ../glibc-2.2.5/stdio-common/perror.c	2001-09-01 07:33:01.000000000 +0200
++++ glibc-2.2.5/stdio-common/perror.c	2018-06-09 10:42:25.909899529 +0200
+@@ -48,6 +48,9 @@ perror_internal (FILE *fp, const char *s
+ }
+ 
+ 
++#if MES_BOOTSTRAP
++#define fileno_unlocked(x) 1
++#endif
+ /* Print a line on stderr consisting of the text in S, a colon, a space,
+    a message describing the meaning of the contents of `errno' and a newline.
+    If S is NULL or "", the colon and space are omitted.  */
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c
+--- ../glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c	2001-07-06 06:55:53.000000000 +0200
++++ glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c	2018-06-09 09:45:13.363031424 +0200
+@@ -25,8 +25,10 @@ fetestexcept (int excepts)
+ {
+   int temp;
+ 
++#if !MES_BOOTSTRAP
+   /* Get current exceptions.  */
+   __asm__ ("fnstsw %0" : "=a" (temp));
++#endif
+ 
+   return temp & excepts & FE_ALL_EXCEPT;
+ }
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/unix/make-syscalls.sh glibc-2.2.5/sysdeps/unix/make-syscalls.sh
+--- ../glibc-2.2.5/sysdeps/unix/make-syscalls.sh	2001-09-13 00:19:30.000000000 +0200
++++ glibc-2.2.5/sysdeps/unix/make-syscalls.sh	2018-06-20 15:16:01.813004453 +0200
+@@ -173,7 +173,7 @@ shared-only-routines += $file
+   done
+ 
+   # And finally, pipe this all into the compiler.
+-  echo '	) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
++  echo '	) > stdin.c; $(COMPILE.S) -x assembler-with-cpp -o $@ stdin.c'
+ 
+   case $weak in
+   *@*)
+@@ -284,7 +284,7 @@ shared-only-routines += $file
+     echo "\
+ 	 echo ''; \\
+ 	 echo '#include <bp-thunks.h>'; \\
+-	) | \$(COMPILE.c) -x c -o \$@ -"
++	) > stdin.c; \$(COMPILE.c) -x c -o \$@ stdin.c"
+ ### Use this for debugging intermediate output:
+ ### 	) >\$(@:.ob=.c)
+ ### 	\$(subst -c,-E,\$(COMPILE.c)) -o \$(@:.ob=.ib) \$(@:.ob=.c)
+diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h
+--- ../glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h	2001-07-06 06:56:21.000000000 +0200
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h	2018-06-09 20:09:07.713806647 +0200
+@@ -54,10 +54,12 @@ struct timex
+   long int errcnt;	/* calibration errors (ro) */
+   long int stbcnt;	/* stability limit exceeded (ro) */
+ 
++#if !MES_BOOTSTRAP
+   /* ??? */
+   int  :32; int  :32; int  :32; int  :32;
+   int  :32; int  :32; int  :32; int  :32;
+   int  :32; int  :32; int  :32; int  :32;
++#endif
+ };
+ 
+ /* Mode codes (timex.mode) */
+--- ../glibc-2.2.5/manual/Makefile	2001-08-28 10:05:40.000000000 +0200
++++ glibc-2.2.5/manual/Makefile	2018-06-09 10:13:03.093633660 +0200
+@@ -247,7 +247,11 @@
+ .PHONY: stubs
+ stubs: $(objpfx)stubs
+ endif
+-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%:
++po/manual.pot $(objpfx)stubs:
++	$(make-target-directory)
++	touch $@
++
++$(objpfx)stamp%:
+ 	$(make-target-directory)
+ 	touch $@
+ 
diff --git a/gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch b/gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch
new file mode 100644
index 0000000000..936d592f1a
--- /dev/null
+++ b/gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch
@@ -0,0 +1,30 @@
+We want to allow builds in chroots that lack /bin/sh.  Thus, system(3)
+and popen(3) need to be tweaked to use the right shell.  For the bootstrap
+glibc, we just use whatever `sh' can be found in $PATH.  The final glibc
+instead uses the hard-coded absolute file name of `bash'.
+
+--- a/sysdeps/posix/system.c
++++ b/sysdeps/posix/system.c
+@@ -134,7 +134,7 @@ do_system (const char *line)
+       INIT_LOCK ();
+ 
+       /* Exec the shell.  */
+-      (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ);
++      (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ);
+       _exit (127);
+     }
+   else if (pid < (pid_t) 0)
+
+--- a/libio/iopopen.c
++++ b/libio/iopopen.c
+@@ -145,7 +145,7 @@ _IO_new_proc_open (fp, command, mode)
+ 	    _IO_close (fd);
+ 	}
+ 
+-      _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0);
++      execlp ("sh", "sh", "-c", command, (char *) 0);
+       _IO__exit (127);
+     }
+   _IO_close (child_end);
+
+
diff --git a/gnu/packages/patches/glibc-bootstrap-system.patch b/gnu/packages/patches/glibc-bootstrap-system.patch
index addeed6dbd..39eb47ef26 100644
--- a/gnu/packages/patches/glibc-bootstrap-system.patch
+++ b/gnu/packages/patches/glibc-bootstrap-system.patch
@@ -5,26 +5,24 @@ instead uses the hard-coded absolute file name of `bash'.
 
 --- a/sysdeps/posix/system.c
 +++ b/sysdeps/posix/system.c
-@@ -134,7 +134,7 @@ do_system (const char *line)
-       INIT_LOCK ();
+@@ -140,7 +140,7 @@ do_system (const char *line)
+   __posix_spawnattr_setflags (&spawn_attr,
+ 			      POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK);
  
-       /* Exec the shell.  */
--      (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ);
-+      (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ);
-       _exit (127);
-     }
-   else if (pid < (pid_t) 0)
-
+-  status = __posix_spawn (&pid, SHELL_PATH, 0, &spawn_attr,
++  status = posix_spawnp (&pid, SHELL_NAME, 0, &spawn_attr,
+ 			  (char *const[]){ (char*) SHELL_NAME,
+ 					   (char*) "-c",
+ 					   (char *) line, NULL },
 --- a/libio/iopopen.c
 +++ b/libio/iopopen.c
-@@ -145,7 +145,7 @@ _IO_new_proc_open (fp, command, mode)
- 	    __close_nocancel (fd);
- 	}
- 
--      execl ("/bin/sh", "sh", "-c", command, (char *) 0);
-+      execlp ("sh", "sh", "-c", command, (char *) 0);
-       _exit (127);
+@@ -85,7 +85,7 @@ spawn_process (posix_spawn_file_actions_t *fa, FILE *fp, const char *command,
+ 	return false;
      }
-   __close_nocancel (child_end);
-
+ 
+-  if (__posix_spawn (&((_IO_proc_file *) fp)->pid, _PATH_BSHELL, fa, 0,
++  if (posix_spawnp (&((_IO_proc_file *) fp)->pid, "sh", fa, 0,
+ 		     (char *const[]){ (char*) "sh", (char*) "-c",
+ 		     (char *) command, NULL }, __environ) != 0)
+     return false;
 
diff --git a/gnu/packages/patches/glibc-locales-2.28.patch b/gnu/packages/patches/glibc-locales-2.28.patch
new file mode 100644
index 0000000000..31ee6c1ff3
--- /dev/null
+++ b/gnu/packages/patches/glibc-locales-2.28.patch
@@ -0,0 +1,31 @@
+This patch allows us to use glibc's build system to build locales
+in a package separate from glibc.
+
+  1. Use 'localedef' from $PATH since we are not rebuilding it.
+  2. Use '--no-archive' to avoid building the big locale archive, and
+     because the already-built 'localedef' would want to write it
+     to '/run/current-system/locale', which is not possible.
+  3. Pass $(inst_complocaledir)/$$locale to install files in the right
+     place, and because otherwise, 'localedef' fails with:
+     "cannot write output files to `(null)'".
+
+--- glibc-2.27/localedata/Makefile
++++ glibc-2.27/localedata/Makefile
+@@ -199,7 +199,7 @@ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES))
+ 
+ # Sometimes the whole collection of locale files should be installed.
+ LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
+-$(rtld-prefix) $(common-objpfx)locale/localedef
++  localedef --no-archive
+ install-locales: $(INSTALL-SUPPORTED-LOCALES)
+ 
+ install-locales-dir:
+@@ -224,7 +224,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-locales-dir
+ 	input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
+ 	$(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \
+ 		     -i locales/$$input -f charmaps/$$charset \
+-		     $(addprefix --prefix=,$(install_root)) $$locale \
++		     $(addprefix --prefix=,$(install_root)) $(inst_complocaledir)/$$locale \
+ 	&& echo ' done'; \
+ 
+ tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP
diff --git a/gnu/packages/patches/glibc-locales.patch b/gnu/packages/patches/glibc-locales.patch
index 31ee6c1ff3..9329a09063 100644
--- a/gnu/packages/patches/glibc-locales.patch
+++ b/gnu/packages/patches/glibc-locales.patch
@@ -9,23 +9,24 @@ in a package separate from glibc.
      place, and because otherwise, 'localedef' fails with:
      "cannot write output files to `(null)'".
 
---- glibc-2.27/localedata/Makefile
-+++ glibc-2.27/localedata/Makefile
-@@ -199,7 +199,7 @@ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES))
+diff -ru glibc-2.29-old/localedata/Makefile glibc-2.29-new/localedata/Makefile
+--- glibc-2.29-old/localedata/Makefile	2019-01-31 11:45:36.000000000 -0500
++++ glibc-2.29-new/localedata/Makefile	2019-07-03 22:48:35.662015071 -0400
+@@ -385,7 +385,7 @@
  
  # Sometimes the whole collection of locale files should be installed.
  LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
 -$(rtld-prefix) $(common-objpfx)locale/localedef
 +  localedef --no-archive
- install-locales: $(INSTALL-SUPPORTED-LOCALES)
+ install-locales: install-locale-archive
  
- install-locales-dir:
-@@ -224,7 +224,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-locales-dir
+ # Create and install the locale-archive file.
+@@ -414,7 +414,7 @@
  	input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
  	$(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \
  		     -i locales/$$input -f charmaps/$$charset \
 -		     $(addprefix --prefix=,$(install_root)) $$locale \
 +		     $(addprefix --prefix=,$(install_root)) $(inst_complocaledir)/$$locale \
- 	&& echo ' done'; \
+ 	&& echo ' done';
+ endef
  
- tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP
diff --git a/gnu/packages/patches/glibc-supported-locales.patch b/gnu/packages/patches/glibc-supported-locales.patch
new file mode 100644
index 0000000000..05865dc7be
--- /dev/null
+++ b/gnu/packages/patches/glibc-supported-locales.patch
@@ -0,0 +1,33 @@
+This patch is taken from debian's glibc package (generate-supported.mk).
+It install the localedata/SUPPORTED file of the glibc. This file lists
+all the supported locales of the glibc.
+
+diff --git a/localedata/Makefile b/localedata/Makefile
+index 65079f9eb8..14818f84e0 100644
+--- a/localedata/Makefile
++++ b/localedata/Makefile
+@@ -169,7 +169,8 @@ endif
+ # Files to install.
+ install-others := $(addprefix $(inst_i18ndir)/, \
+ 			      $(addsuffix .gz, $(charmaps)) \
+-			      $(locales))
++			      $(locales)) \
++                   $(inst_i18ndir)/SUPPORTED
+ 
+ tests: $(objdir)/iconvdata/gconv-modules
+ 
+@@ -380,6 +381,14 @@ endif
+ 
+ include SUPPORTED
+ 
++$(inst_i18ndir)/SUPPORTED: SUPPORTED $(+force)
++	for locale in $(SUPPORTED-LOCALES); do \
++		[ $$locale = true ] && continue; \
++		echo $$locale | sed 's,/, ,' >> LOCALES; \
++	done
++	$(make-target-directory)
++	$(INSTALL_DATA) LOCALES $@
++
+ INSTALL-SUPPORTED-LOCALE-ARCHIVE=$(addprefix install-archive-, $(SUPPORTED-LOCALES))
+ INSTALL-SUPPORTED-LOCALE-FILES=$(addprefix install-files-, $(SUPPORTED-LOCALES))
+ 
\ No newline at end of file
diff --git a/gnu/packages/patches/gnome-control-center-udisks.patch b/gnu/packages/patches/gnome-control-center-udisks.patch
new file mode 100644
index 0000000000..823684b2e9
--- /dev/null
+++ b/gnu/packages/patches/gnome-control-center-udisks.patch
@@ -0,0 +1,221 @@
+This patch is derived from upstream commit 2520aea6 and fixes upstream issues
+285 and 302.  See https://gitlab.gnome.org/GNOME/gcr/merge_requests/387,
+https://gitlab.gnome.org/GNOME/gnome-control-center/issues/285 and
+https://gitlab.gnome.org/GNOME/gnome-control-center/issues/302.
+
+diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c
+index e2276a295b3fd9de01b30fc3369069b5d33ba5b7..ff47c1fef2493bcc7ab34f9e8716d570d8d370ed 100644
+--- a/panels/info/cc-info-overview-panel.c
++++ b/panels/info/cc-info-overview-panel.c
+@@ -36,6 +36,7 @@
+ #include <glibtop/mountlist.h>
+ #include <glibtop/mem.h>
+ #include <glibtop/sysinfo.h>
++#include <udisks/udisks.h>
+ 
+ #include <gdk/gdk.h>
+ 
+@@ -81,9 +82,7 @@ typedef struct
+ 
+   GCancellable   *cancellable;
+ 
+-  /* Free space */
+-  GList          *primary_mounts;
+-  guint64         total_bytes;
++  UDisksClient   *client;
+ 
+   GraphicsData   *graphics_data;
+ } CcInfoOverviewPanelPrivate;
+@@ -96,8 +95,6 @@ struct _CcInfoOverviewPanel
+  CcInfoOverviewPanelPrivate *priv;
+ };
+ 
+-static void get_primary_disc_info_start (CcInfoOverviewPanel *self);
+-
+ typedef struct
+ {
+   char *major;
+@@ -486,111 +483,51 @@ get_os_type (void)
+ }
+ 
+ static void
+-query_done (GFile               *file,
+-            GAsyncResult        *res,
+-            CcInfoOverviewPanel *self)
++get_primary_disc_info (CcInfoOverviewPanel *self)
+ {
+   CcInfoOverviewPanelPrivate *priv;
+-  g_autoptr(GFileInfo) info = NULL;
+-  g_autoptr(GError) error = NULL;
+-
+-  info = g_file_query_filesystem_info_finish (file, res, &error);
+-  if (info != NULL)
+-    {
+-      priv = cc_info_overview_panel_get_instance_private (self);
+-      priv->total_bytes += g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE);
+-    }
+-  else
+-    {
+-      if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+-          return;
+-      else
+-        {
+-          g_autofree char *path = NULL;
+-          path = g_file_get_path (file);
+-          g_warning ("Failed to get filesystem free space for '%s': %s", path, error->message);
+-        }
+-    }
++  GDBusObjectManager *manager;
++  g_autolist(GDBusObject) objects = NULL;
++  GList *l;
++  guint64 total_size;
+ 
+-  /* And onto the next element */
+-  get_primary_disc_info_start (self);
+-}
+-
+-static void
+-get_primary_disc_info_start (CcInfoOverviewPanel *self)
+-{
+-  GUnixMountEntry *mount;
+-  g_autoptr(GFile) file = NULL;
+-  CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
++  priv = cc_info_overview_panel_get_instance_private (self);
++  total_size = 0;
+ 
+-  if (priv->primary_mounts == NULL)
++  if (!priv->client)
+     {
+-      g_autofree char *size = NULL;
+-
+-      size = g_format_size (priv->total_bytes);
+-      gtk_label_set_text (GTK_LABEL (priv->disk_label), size);
+-
++      gtk_label_set_text (GTK_LABEL (priv->disk_label), _("Unknown"));
+       return;
+     }
+ 
+-  mount = priv->primary_mounts->data;
+-  priv->primary_mounts = g_list_remove (priv->primary_mounts, mount);
+-  file = g_file_new_for_path (g_unix_mount_get_mount_path (mount));
+-  g_unix_mount_free (mount);
+-
+-  g_file_query_filesystem_info_async (file,
+-                                      G_FILE_ATTRIBUTE_FILESYSTEM_SIZE,
+-                                      0,
+-                                      priv->cancellable,
+-                                      (GAsyncReadyCallback) query_done,
+-                                      self);
+-}
+-
+-static void
+-get_primary_disc_info (CcInfoOverviewPanel *self)
+-{
+-  GList *points;
+-  GList *p;
+-  GHashTable *hash;
+-  CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
+-
+-  hash = g_hash_table_new (g_str_hash, g_str_equal);
+-  points = g_unix_mount_points_get (NULL);
+-
+-  /* If we do not have /etc/fstab around, try /etc/mtab */
+-  if (points == NULL)
+-    points = g_unix_mounts_get (NULL);
++  manager = udisks_client_get_object_manager (priv->client);
++  objects = g_dbus_object_manager_get_objects (manager);
+ 
+-  for (p = points; p != NULL; p = p->next)
++  for (l = objects; l != NULL; l = l->next)
+     {
+-      GUnixMountEntry *mount = p->data;
+-      const char *mount_path;
+-      const char *device_path;
+-
+-      mount_path = g_unix_mount_get_mount_path (mount);
+-      device_path = g_unix_mount_get_device_path (mount);
+-
+-      /* Do not count multiple mounts with same device_path, because it is
+-       * probably something like btrfs subvolume. Use only the first one in
+-       * order to count the real size. */
+-      if (gsd_should_ignore_unix_mount (mount) ||
+-          gsd_is_removable_mount (mount) ||
+-          g_str_has_prefix (mount_path, "/media/") ||
+-          g_str_has_prefix (mount_path, g_get_home_dir ()) ||
+-          g_hash_table_lookup (hash, device_path) != NULL)
++      UDisksDrive *drive;
++      drive = udisks_object_peek_drive (UDISKS_OBJECT (l->data));
++
++      /* Skip removable devices */
++      if (drive == NULL ||
++          udisks_drive_get_removable (drive) ||
++          udisks_drive_get_ejectable (drive))
+         {
+-          g_unix_mount_free (mount);
+           continue;
+         }
+ 
+-      priv->primary_mounts = g_list_prepend (priv->primary_mounts, mount);
+-      g_hash_table_insert (hash, (gpointer) device_path, (gpointer) device_path);
++      total_size += udisks_drive_get_size (drive);
+     }
+-  g_list_free (points);
+-  g_hash_table_destroy (hash);
+ 
+-  priv->cancellable = g_cancellable_new ();
+-  get_primary_disc_info_start (self);
++  if (total_size > 0)
++    {
++      g_autofree gchar *size = g_format_size (total_size);
++      gtk_label_set_text (GTK_LABEL (priv->disk_label), size);
++    }
++  else
++    {
++      gtk_label_set_text (GTK_LABEL (priv->disk_label), _("Unknown"));
++    }
+ }
+ 
+ static char *
+@@ -852,8 +789,7 @@ cc_info_overview_panel_finalize (GObject *object)
+       g_clear_object (&priv->cancellable);
+     }
+ 
+-  if (priv->primary_mounts)
+-    g_list_free_full (priv->primary_mounts, (GDestroyNotify) g_unix_mount_free);
++  g_clear_object (&priv->client);
+ 
+   g_free (priv->gnome_version);
+   g_free (priv->gnome_date);
+@@ -895,6 +831,7 @@ static void
+ cc_info_overview_panel_init (CcInfoOverviewPanel *self)
+ {
+   CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self);
++  g_autoptr(GError) error = NULL;
+ 
+   gtk_widget_init_template (GTK_WIDGET (self));
+ 
+@@ -907,6 +844,12 @@ cc_info_overview_panel_init (CcInfoOverviewPanel *self)
+   else
+     gtk_widget_destroy (priv->updates_button);
+ 
++  priv->client = udisks_client_new_sync (NULL, &error);
++
++  if (error != NULL)
++      g_warning ("Unable to get UDisks client: %s. Disk information will not be available.",
++                 error->message);
++
+   info_overview_panel_setup_overview (self);
+   info_overview_panel_setup_virt (self);
+ }
+diff --git a/panels/info/meson.build b/panels/info/meson.build
+index 03742551314f91b60e3ec1caad153ff314b93310..c54e5fdaff3c6ddb59cca8ee9a2bf5a0212bf196 100644
+--- a/panels/info/meson.build
++++ b/panels/info/meson.build
+@@ -61,6 +61,7 @@ sources += gnome.compile_resources(
+ 
+ deps = common_deps + [
+   polkit_gobject_dep,
++  dependency('udisks2', version: '>= 2.1.8'),
+   dependency('libgtop-2.0')
+ ]
+ 
diff --git a/gnu/packages/patches/go-skip-gc-test.patch b/gnu/packages/patches/go-skip-gc-test.patch
new file mode 100644
index 0000000000..2baab97580
--- /dev/null
+++ b/gnu/packages/patches/go-skip-gc-test.patch
@@ -0,0 +1,17 @@
+Skip a GC test known to be flaky:
+
+  https://issues.guix.gnu.org/issue/37425
+  https://github.com/golang/go/issues/27636
+
+--- go/src/runtime/gc_test.go	2019-09-16 23:10:18.200680387 +0200
++++ go/src/runtime/gc_test.go	2019-09-16 23:11:50.324360646 +0200
+@@ -27,6 +27,9 @@ func TestGcSys(t *testing.T) {
+ 	if runtime.GOOS == "linux" && runtime.GOARCH == "arm64" {
+ 		t.Skip("skipping test; GOOS=linux GOARCH=arm64 https://github.com/golang/go/issues/27636")
+ 	}
++	if runtime.GOOS == "linux" {
++		t.Skip("skipping test; GOOS=linux https://issues.guix.gnu.org/issue/37425")
++	}
+ 	got := runTestProg(t, "testprog", "GCSys")
+ 	want := "OK\n"
+ 	if got != want {
diff --git a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
index d00cc5a420..956fa617c3 100644
--- a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
+++ b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
@@ -2,10 +2,134 @@
 # add the full path.
 #
 # This patch was provided by Luca Bruno <lucabru@src.gnome.org>  for 
-# 'gobject-introspection' 1.40.0 in Nix. 
---- ./giscanner/utils.py.orig	2014-08-14 22:05:05.055334080 +0200
-+++ ./giscanner/utils.py	2014-08-14 22:05:24.687497334 +0200
-@@ -110,17 +110,11 @@
+# 'gobject-introspection' 1.40.0 in Nix.
+#
+# It has since been updated to work with newer versions of
+# gobject-introspection.
+--- a/giscanner/scannermain.py
++++ b/giscanner/scannermain.py
+@@ -95,6 +95,39 @@ def get_windows_option_group(parser):
+     return group
+ 
+ 
++def _get_default_fallback_libpath():
++    # Newer multiple-output-optimized stdenv has an environment variable
++    # $outputLib which in turn specifies another variable which then is used as
++    # the destination for the library contents (${!outputLib}/lib).
++    store_path = os.environ.get(os.environ.get("outputLib")) if "outputLib" in os.environ else None
++    if store_path is None:
++        outputs = os.environ.get("outputs", "out").split()
++        if "lib" in outputs:
++            # For multiple output derivations let's try whether there is a $lib
++            # environment variable and use that as the base store path.
++            store_path = os.environ.get("lib")
++        elif "out" in outputs:
++            # Otherwise we have a single output derivation, so the libraries
++            # most certainly will end up in "$out/lib".
++            store_path = os.environ.get("out")
++
++    if store_path is not None:
++        # Even if we have a $lib as output, there still should be a $lib/lib
++        # directory.
++        return os.path.join(store_path, 'lib')
++    else:
++        # If we haven't found a possible scenario, let's return an empty string
++        # so that the shared library won't be prepended with a path.
++        #
++        # Note that this doesn't mean that all hope is lost, because after all
++        # we can still use --fallback-library-path to set one.
++        #
++        # Also, we're not returning None, because that would make it very
++        # difficult to disable adding fallback paths altogether using something
++        # like: --fallback-library-path=""
++        return ""
++
++
+ def _get_option_parser():
+     parser = optparse.OptionParser('%prog [options] sources',
+                                    version='%prog ' + giscanner.__version__)
+@@ -205,6 +238,10 @@ match the namespace prefix.""")
+     parser.add_option("", "--filelist",
+                       action="store", dest="filelist", default=[],
+                       help="file containing headers and sources to be scanned")
++    parser.add_option("", "--fallback-library-path",
++                      action="store", dest="fallback_libpath",
++                      default=_get_default_fallback_libpath(),
++                      help="Path to prepend to unknown shared libraries")
+ 
+     group = get_preprocessor_option_group(parser)
+     parser.add_option_group(group)
+--- a/giscanner/shlibs.py
++++ b/giscanner/shlibs.py
+@@ -57,6 +57,14 @@ def _ldd_library_pattern(library_name):
+     $""" % re.escape(library_name), re.VERBOSE)
+ 
+ 
++def _ldd_library_guix_pattern(library_name):
++    store_dir = re.escape(
++      os.environ.get("NIX_STORE", default="/gnu/store")
++    )
++    pattern = r'(%s(?:/[^/]*)+lib%s[^A-Za-z0-9_-][^\s\(\)]*)'
++    return re.compile(pattern % (store_dir, re.escape(library_name)))
++
++
+ # This is a what we do for non-la files. We assume that we are on an
+ # ELF-like system where ldd exists and the soname extracted with ldd is
+ # a filename that can be opened with dlopen().
+@@ -106,7 +112,8 @@ def _resolve_non_libtool(options, binary, libraries):
+             output = output.decode("utf-8", "replace")
+ 
+         shlibs = resolve_from_ldd_output(libraries, output)
+-        return list(map(sanitize_shlib_path, shlibs))
++        fallback_libpath = options.fallback_libpath or "";
++        return list(map(lambda p: os.path.join(fallback_libpath, p), map(sanitize_shlib_path, shlibs)))
+ 
+ 
+ def sanitize_shlib_path(lib):
+@@ -115,19 +122,18 @@ def sanitize_shlib_path(lib):
+     # In case we get relative paths on macOS (like @rpath) then we fall
+     # back to the basename as well:
+     # https://gitlab.gnome.org/GNOME/gobject-introspection/issues/222
+-    if sys.platform == "darwin":
+-        if not os.path.isabs(lib):
+-            return os.path.basename(lib)
+-        return lib
+-    else:
++
++    # Always use absolute paths if available
++    if not os.path.isabs(lib):
+         return os.path.basename(lib)
++    return lib
+ 
+ 
+ def resolve_from_ldd_output(libraries, output):
+     patterns = {}
+     for library in libraries:
+         if not os.path.isfile(library):
+-            patterns[library] = _ldd_library_pattern(library)
++            patterns[library] = (_ldd_library_pattern(library), _ldd_library_guix_pattern(library))
+     if len(patterns) == 0:
+         return []
+ 
+@@ -139,8 +145,12 @@ def resolve_from_ldd_output(libraries, output):
+         if line.endswith(':'):
+             continue
+         for word in line.split():
+-            for library, pattern in patterns.items():
+-                m = pattern.match(word)
++            for library, (pattern, guix_pattern) in patterns.items():
++                store_dir = os.environ.get("NIX_STORE", default="/gnu/store")
++                if line.find(store_dir) != -1:
++                    m = guix_pattern.match(word)
++                else:
++                    m = pattern.match(word)
+                 if m:
+                     del patterns[library]
+                     shlibs.append(m.group())
+
+--- a/giscanner/utils.py
++++ b/giscanner/utils.py
+@@ -111,17 +111,11 @@ def extract_libtool_shlib(la_file):
      if dlname is None:
          return None
  
@@ -28,3 +152,15 @@
  
  
  def extract_libtool(la_file):
+--- a/tests/scanner/test_shlibs.py
++++ b/tests/scanner/test_shlibs.py
+@@ -40,6 +64,7 @@ class TestLddParser(unittest.TestCase):
+ 
+         self.assertEqual(
+             sanitize_shlib_path('/foo/bar'),
+-            '/foo/bar' if sys.platform == 'darwin' else 'bar')
++            # Always use an absolute filename for Guix
++            '/foo/bar')
+ 
+     def test_unresolved_library(self):
+output = ''
diff --git a/gnu/packages/patches/gobject-introspection-cc.patch b/gnu/packages/patches/gobject-introspection-cc.patch
index d9cacf4ca7..6a86b56b44 100644
--- a/gnu/packages/patches/gobject-introspection-cc.patch
+++ b/gnu/packages/patches/gobject-introspection-cc.patch
@@ -1,11 +1,14 @@
 Use gcc as the default C compiler if CC is not set.
 
-
---- gobject-introspection-1.44.0.orig/giscanner/__init__.py	2014-08-04 22:37:07.000000000 +0800
-+++ gobject-introspection-1.44.0/giscanner/__init__.py	2015-04-20 17:30:26.507697234 +0800
-@@ -22,3 +22,5 @@
+diff -ru gobject-introspection-1.58.1.orig/giscanner/__init__.py gobject-introspection-1.58.1/giscanner/__init__.py
+--- gobject-introspection-1.58.1.orig/giscanner/__init__.py	1970-01-01 01:00:00.000000000 +0100
++++ gobject-introspection-1.58.1/giscanner/__init__.py	2018-12-03 13:33:28.788971299 +0100
+@@ -22,6 +22,8 @@
  builddir = os.environ.get('UNINSTALLED_INTROSPECTION_BUILDDIR')
  if builddir is not None:
      __path__.append(os.path.join(builddir, 'giscanner'))
 +if not 'CC' in os.environ:
 +    os.environ['CC'] = 'gcc'
+ try:
+     from ._version import __version__
+ except ImportError:
diff --git a/gnu/packages/patches/groff-source-date-epoch.patch b/gnu/packages/patches/groff-source-date-epoch.patch
deleted file mode 100644
index 53c590b049..0000000000
--- a/gnu/packages/patches/groff-source-date-epoch.patch
+++ /dev/null
@@ -1,299 +0,0 @@
-Adds support for the environment variable SOURCE_DATE_EPOCH.
-
-See: https://sources.debian.net/patches/groff/1.22.3-9/source-date-epoch.patch/
-
-From abc23bc9245e18468817f2838361c3a08f7521e2 Mon Sep 17 00:00:00 2001
-From: Colin Watson <cjwatson@debian.org>
-Date: Thu, 5 Nov 2015 11:47:34 +0000
-Subject: Implement `SOURCE_DATE_EPOCH' for reproducible builds.
-
-Author: Colin Watson <cjwatson@debian.org>
-Forwarded: yes
-Last-Update: 2015-11-05
-
-Patch-Name: source-date-epoch.patch
----
- doc/groff.texinfo                 |  6 +++++
- src/devices/grohtml/grohtml.man   |  7 ++++++
- src/devices/grohtml/post-html.cpp |  5 ++--
- src/devices/gropdf/gropdf.man     |  7 ++++++
- src/devices/gropdf/gropdf.pl      |  3 ++-
- src/devices/grops/grops.man       |  7 ++++++
- src/devices/grops/ps.cpp          |  3 ++-
- src/include/curtime.h             | 23 ++++++++++++++++++
- src/libs/libgroff/Makefile.sub    |  2 ++
- src/libs/libgroff/curtime.cpp     | 51 +++++++++++++++++++++++++++++++++++++++
- src/roff/troff/input.cpp          |  3 ++-
- 11 files changed, 112 insertions(+), 5 deletions(-)
- create mode 100644 src/include/curtime.h
- create mode 100644 src/libs/libgroff/curtime.cpp
-
-diff --git a/doc/groff.texinfo b/doc/groff.texinfo
-index 066b5274..1d3c7a9f 100644
---- a/doc/groff.texinfo
-+++ b/doc/groff.texinfo
-@@ -1453,6 +1453,12 @@ default directory (on Unix and GNU/Linux systems, this is usually
- @item GROFF_TYPESETTER
- @tindex GROFF_TYPESETTER@r{, environment variable}
- The default output device.
-+
-+@item SOURCE_DATE_EPOCH
-+@tindex SOURCE_DATE_EPOCH@r{, environment variable}
-+A timestamp (expressed as seconds since the Unix epoch) to use in place of
-+the current time when initializing time-based built-in registers such as
-+@code{\n[seconds]}.
- @end table
- 
- Note that MS-DOS and MS-Windows ports of @code{groff} use semi-colons,
-diff --git a/src/devices/grohtml/grohtml.man b/src/devices/grohtml/grohtml.man
-index 51eae224..4be4abbc 100644
---- a/src/devices/grohtml/grohtml.man
-+++ b/src/devices/grohtml/grohtml.man
-@@ -419,6 +419,13 @@ and
- for more details.
- .
- .
-+.TP
-+.SM
-+.B SOURCE_DATE_EPOCH
-+A timestamp (expressed as seconds since the Unix epoch) to use as the
-+creation timestamp in place of the current time.
-+.
-+.
- .\" --------------------------------------------------------------------
- .SH BUGS
- .\" --------------------------------------------------------------------
-diff --git a/src/devices/grohtml/post-html.cpp b/src/devices/grohtml/post-html.cpp
-index fefbf014..b5fc5167 100644
---- a/src/devices/grohtml/post-html.cpp
-+++ b/src/devices/grohtml/post-html.cpp
-@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
- #include "html.h"
- #include "html-text.h"
- #include "html-table.h"
-+#include "curtime.h"
- 
- #include <time.h>
- 
-@@ -5013,7 +5014,7 @@ void html_printer::do_file_components (void)
- 	.put_string(Version_string)
- 	.end_comment();
- 
--      t = time(0);
-+      t = current_time();
-       html.begin_comment("CreationDate: ")
- 	.put_string(ctime(&t), strlen(ctime(&t))-1)
- 	.end_comment();
-@@ -5126,7 +5127,7 @@ html_printer::~html_printer()
-     .put_string(Version_string)
-     .end_comment();
- 
--  t = time(0);
-+  t = current_time();
-   html.begin_comment("CreationDate: ")
-     .put_string(ctime(&t), strlen(ctime(&t))-1)
-     .end_comment();
-diff --git a/src/devices/gropdf/gropdf.man b/src/devices/gropdf/gropdf.man
-index 3bbace6a..cc0c82f1 100644
---- a/src/devices/gropdf/gropdf.man
-+++ b/src/devices/gropdf/gropdf.man
-@@ -1029,6 +1029,13 @@ and
- for more details.
- .
- .
-+.TP
-+.SM
-+.B SOURCE_DATE_EPOCH
-+A timestamp (expressed as seconds since the Unix epoch) to use as the
-+creation timestamp in place of the current time.
-+.
-+.
- .\" --------------------------------------------------------------------
- .SH FILES
- .\" --------------------------------------------------------------------
-diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
-index 035d1238..c25c4c67 100644
---- a/src/devices/gropdf/gropdf.pl
-+++ b/src/devices/gropdf/gropdf.pl
-@@ -239,13 +239,14 @@ elsif (exists($ppsz{$papersz}))
-     @defaultmb=@mediabox=(0,0,$ppsz{$papersz}->[0],$ppsz{$papersz}->[1]);
- }
- 
--my (@dt)=localtime(time);
-+my (@dt)=localtime($ENV{SOURCE_DATE_EPOCH} || time);
- my $dt=PDFDate(\@dt);
- 
- my %info=('Creator' => "(groff version $cfg{GROFF_VERSION})",
- 				'Producer' => "(gropdf version $cfg{GROFF_VERSION})",
- 				'ModDate' => "($dt)",
- 				'CreationDate' => "($dt)");
-+
- while (<>)
- {
-     chomp;
-diff --git a/src/devices/grops/grops.man b/src/devices/grops/grops.man
-index 99fb7486..272c2d18 100644
---- a/src/devices/grops/grops.man
-+++ b/src/devices/grops/grops.man
-@@ -1419,6 +1419,13 @@ and
- for more details.
- .
- .
-+.TP
-+.SM
-+.B SOURCE_DATE_EPOCH
-+A timestamp (expressed as seconds since the Unix epoch) to use as the
-+creation timestamp in place of the current time.
-+.
-+.
- .\" --------------------------------------------------------------------
- .SH FILES
- .\" --------------------------------------------------------------------
-diff --git a/src/devices/grops/ps.cpp b/src/devices/grops/ps.cpp
-index 745a503b..03e65372 100644
---- a/src/devices/grops/ps.cpp
-+++ b/src/devices/grops/ps.cpp
-@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
- #include "cset.h"
- #include "nonposix.h"
- #include "paper.h"
-+#include "curtime.h"
- 
- #include "ps.h"
- #include <time.h>
-@@ -1390,7 +1391,7 @@ ps_printer::~ps_printer()
- #else
-     time_t
- #endif
--    t = time(0);
-+    t = current_time();
-     fputs(ctime(&t), out.get_file());
-   }
-   for (font_pointer_list *f = font_list; f; f = f->next) {
-diff --git a/src/include/curtime.h b/src/include/curtime.h
-new file mode 100644
-index 00000000..a4105196
---- /dev/null
-+++ b/src/include/curtime.h
-@@ -0,0 +1,23 @@
-+/* Copyright (C) 2015  Free Software Foundation, Inc.
-+
-+This file is part of groff.
-+
-+groff 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 2 of the License, or
-+(at your option) any later version.
-+
-+groff 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.
-+
-+The GNU General Public License version 2 (GPL2) is available in the
-+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
-+
-+#ifdef LONG_FOR_TIME_T
-+long
-+#else
-+time_t
-+#endif
-+current_time();
-diff --git a/src/libs/libgroff/Makefile.sub b/src/libs/libgroff/Makefile.sub
-index 840d9934..4cb4937a 100644
---- a/src/libs/libgroff/Makefile.sub
-+++ b/src/libs/libgroff/Makefile.sub
-@@ -32,6 +32,7 @@ OBJS=\
-   cmap.$(OBJEXT) \
-   color.$(OBJEXT) \
-   cset.$(OBJEXT) \
-+  curtime.$(OBJEXT) \
-   device.$(OBJEXT) \
-   errarg.$(OBJEXT) \
-   error.$(OBJEXT) \
-@@ -82,6 +83,7 @@ CCSRCS=\
-   $(srcdir)/cmap.cpp \
-   $(srcdir)/color.cpp \
-   $(srcdir)/cset.cpp \
-+  $(srcdir)/curtime.cpp \
-   $(srcdir)/device.cpp \
-   $(srcdir)/errarg.cpp \
-   $(srcdir)/error.cpp \
-diff --git a/src/libs/libgroff/curtime.cpp b/src/libs/libgroff/curtime.cpp
-new file mode 100644
-index 00000000..00821b7f
---- /dev/null
-+++ b/src/libs/libgroff/curtime.cpp
-@@ -0,0 +1,51 @@
-+/* Copyright (C) 2015  Free Software Foundation, Inc.
-+
-+This file is part of groff.
-+
-+groff 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 2 of the License, or
-+(at your option) any later version.
-+
-+groff 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.
-+
-+The GNU General Public License version 2 (GPL2) is available in the
-+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */
-+
-+#include <errno.h>
-+#include <limits.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <time.h>
-+
-+#include "errarg.h"
-+#include "error.h"
-+
-+#ifdef LONG_FOR_TIME_T
-+long
-+#else
-+time_t
-+#endif
-+current_time()
-+{
-+  char *source_date_epoch = getenv("SOURCE_DATE_EPOCH");
-+
-+  if (source_date_epoch) {
-+    errno = 0;
-+    char *endptr;
-+    long epoch = strtol(source_date_epoch, &endptr, 10);
-+
-+    if ((errno == ERANGE && (epoch == LONG_MAX || epoch == LONG_MIN)) ||
-+	(errno != 0 && epoch == 0))
-+      fatal("$SOURCE_DATE_EPOCH: strtol: %1", strerror(errno));
-+    if (endptr == source_date_epoch)
-+      fatal("$SOURCE_DATE_EPOCH: no digits found: %1", endptr);
-+    if (*endptr != '\0')
-+      fatal("$SOURCE_DATE_EPOCH: trailing garbage: %1", endptr);
-+    return epoch;
-+  } else
-+    return time(0);
-+}
-diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
-index 9594f074..f7d2c18a 100644
---- a/src/roff/troff/input.cpp
-+++ b/src/roff/troff/input.cpp
-@@ -36,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
- #include "input.h"
- #include "defs.h"
- #include "unicode.h"
-+#include "curtime.h"
- 
- // Needed for getpid() and isatty()
- #include "posix.h"
-@@ -8138,7 +8139,7 @@ static void init_registers()
- #else /* not LONG_FOR_TIME_T */
-   time_t
- #endif /* not LONG_FOR_TIME_T */
--    t = time(0);
-+    t = current_time();
-   // Use struct here to work around misfeature in old versions of g++.
-   struct tm *tt = localtime(&t);
-   set_number_reg("seconds", int(tt->tm_sec));
diff --git a/gnu/packages/patches/guile-2.2-default-utf8.patch b/gnu/packages/patches/guile-2.2-default-utf8.patch
index 3233388874..f55a6430c1 100644
--- a/gnu/packages/patches/guile-2.2-default-utf8.patch
+++ b/gnu/packages/patches/guile-2.2-default-utf8.patch
@@ -4,10 +4,10 @@ available during bootstrap, so using UTF-8 avoids that (and UTF-8 has
 built-in conversions in glibc, too.)
 
 diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
-index 7cd753009..de92653a4 100644
+index 0ac5ea6a6..f73301e2f 100644
 --- a/libguile/bytevectors.c
 +++ b/libguile/bytevectors.c
-@@ -1918,7 +1918,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
+@@ -1931,7 +1931,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
    if (scm_i_is_narrow_string (str))                                     \
      {                                                                   \
        err = mem_iconveh (scm_i_string_chars (str), c_strlen,            \
@@ -17,10 +17,10 @@ index 7cd753009..de92653a4 100644
                           &c_utf, &c_utf_len);                           \
        if (SCM_UNLIKELY (err))                                           \
 diff --git a/libguile/ports.c b/libguile/ports.c
-index 2a25cd58e..bdaf921ca 100644
+index 45e62f4e4..42012f3aa 100644
 --- a/libguile/ports.c
 +++ b/libguile/ports.c
-@@ -959,7 +959,9 @@ canonicalize_encoding (const char *enc)
+@@ -974,7 +974,9 @@ canonicalize_encoding (const char *enc)
    char *ret;
    int i;
  
@@ -31,7 +31,7 @@ index 2a25cd58e..bdaf921ca 100644
      return sym_ISO_8859_1;
    if (encoding_matches (enc, sym_UTF_8))
      return sym_UTF_8;
-@@ -4182,7 +4184,7 @@ scm_init_ports (void)
+@@ -4198,7 +4200,7 @@ scm_init_ports (void)
      scm_c_define ("%default-port-conversion-strategy",
                    scm_make_fluid_with_default (sym_substitute));
    /* Use the locale as the default port encoding.  */
@@ -41,10 +41,10 @@ index 2a25cd58e..bdaf921ca 100644
    scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
                              "scm_init_ice_9_ports",
 diff --git a/libguile/strings.c b/libguile/strings.c
-index 5c49e33d8..0131e6dc8 100644
+index 056b4c99f..63a6c050d 100644
 --- a/libguile/strings.c
 +++ b/libguile/strings.c
-@@ -1561,7 +1561,7 @@ scm_i_default_string_failed_conversion_handler (void)
+@@ -1579,7 +1579,7 @@ scm_i_default_string_failed_conversion_handler (void)
  SCM
  scm_from_locale_stringn (const char *str, size_t len)
  {
@@ -53,7 +53,7 @@ index 5c49e33d8..0131e6dc8 100644
                             scm_i_default_string_failed_conversion_handler ());
  }
  
-@@ -1885,7 +1885,7 @@ char *
+@@ -1907,7 +1907,7 @@ char *
  scm_to_locale_stringn (SCM str, size_t *lenp)
  {
    return scm_to_stringn (str, lenp,
@@ -62,17 +62,21 @@ index 5c49e33d8..0131e6dc8 100644
                           scm_i_default_string_failed_conversion_handler ());
  }
  
-@@ -2216,11 +2216,11 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
-   len = 0;
-   enc = encoding;
-   if (enc == NULL)
--    enc = "ISO-8859-1";
-+    enc = "UTF-8";
+@@ -2195,7 +2195,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+     scm_wrong_type_arg_msg (NULL, 0, str, "string");
+ 
+   if (encoding == NULL)
+-    encoding = "ISO-8859-1";
++    encoding = "UTF-8";
+ 
+   if (c_strcasecmp (encoding, "UTF-8") == 0)
+     /* This is the most common case--e.g., when calling libc bindings
+@@ -2247,7 +2247,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
    if (scm_i_is_narrow_string (str))
      {
        ret = mem_iconveh (scm_i_string_chars (str), ilen,
--                         "ISO-8859-1", enc,
-+                         "UTF-8", enc,
+-                         "ISO-8859-1", encoding,
++                         "UTF-8", encoding,
                           (enum iconv_ilseq_handler) handler, NULL,
                           &buf, &len);
  
diff --git a/gnu/packages/patches/guile-2.2-skip-oom-test.patch b/gnu/packages/patches/guile-2.2-skip-oom-test.patch
new file mode 100644
index 0000000000..765577653f
--- /dev/null
+++ b/gnu/packages/patches/guile-2.2-skip-oom-test.patch
@@ -0,0 +1,25 @@
+Skip 'test-out-of-memory', which is unreliable in Guile 2.2.4:
+
+  https://bugs.gnu.org/34155
+
+--- a/test-suite/standalone/Makefile.in	1969-12-31 19:00:00.000000000 -0500
++++ b/test-suite/standalone/Makefile.in	2019-05-27 16:44:32.302355990 -0400
+@@ -103,7 +103,7 @@
+ 	test-scm-c-bind-keyword-arguments$(EXEEXT) \
+ 	test-srfi-4$(EXEEXT) $(am__append_6) $(am__EXEEXT_1) \
+ 	test-smob-mark$(EXEEXT) test-smob-mark-race$(EXEEXT) \
+-	test-stack-overflow test-out-of-memory
++	test-stack-overflow
+ check_PROGRAMS = test-num2integral$(EXEEXT) test-round$(EXEEXT) \
+ 	test-foreign-object-c$(EXEEXT) test-list$(EXEEXT) \
+ 	test-unwind$(EXEEXT) test-conversion$(EXEEXT) \
+@@ -1938,8 +1938,7 @@
+ 	test-command-line-encoding test-command-line-encoding2 \
+ 	test-language test-guild-compile $(am__append_3) \
+ 	test-foreign-object-scm test-fast-slot-ref test-mb-regexp \
+-	test-use-srfi $(am__append_5) test-stack-overflow \
+-	test-out-of-memory
++	test-use-srfi $(am__append_5) test-stack-overflow
+ BUILT_SOURCES = $(am__append_2)
+ EXTRA_DIST = test-import-order-a.scm test-import-order-b.scm \
+ 	test-import-order-c.scm test-import-order-d.scm \
diff --git a/gnu/packages/patches/guile-relocatable.patch b/gnu/packages/patches/guile-relocatable.patch
index 95bddcce88..464333880c 100644
--- a/gnu/packages/patches/guile-relocatable.patch
+++ b/gnu/packages/patches/guile-relocatable.patch
@@ -11,7 +11,7 @@ location of the `guile' binary, allowing it to be relocated.
  
  #include "libguile/_scm.h"
  #include "libguile/alist.h"
-@@ -325,6 +326,32 @@
+@@ -326,6 +327,32 @@ scm_init_load_path ()
    SCM cpath = SCM_EOL;
  
  #ifdef SCM_LIBRARY_DIR
@@ -44,24 +44,24 @@ location of the `guile' binary, allowing it to be relocated.
    env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_PATH"));
    if (env && strcmp (env, "") == 0)
      /* special-case interpret system-path=="" as meaning no system path instead
-@@ -333,10 +360,7 @@
+@@ -334,10 +361,7 @@ scm_init_load_path ()
    else if (env)
      path = scm_parse_path (scm_from_locale_string (env), path);
    else
--    path = scm_list_4 (scm_from_locale_string (SCM_LIBRARY_DIR),
--                       scm_from_locale_string (SCM_SITE_DIR),
--                       scm_from_locale_string (SCM_GLOBAL_SITE_DIR),
--                       scm_from_locale_string (SCM_PKGDATA_DIR));
+-    path = scm_list_4 (scm_from_utf8_string (SCM_LIBRARY_DIR),
+-                       scm_from_utf8_string (SCM_SITE_DIR),
+-                       scm_from_utf8_string (SCM_GLOBAL_SITE_DIR),
+-                       scm_from_utf8_string (SCM_PKGDATA_DIR));
 +    path = scm_list_1 (scm_from_locale_string (module_dir));
  
    env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_COMPILED_PATH"));
    if (env && strcmp (env, "") == 0)
-@@ -346,8 +370,7 @@
+@@ -347,8 +371,7 @@ scm_init_load_path ()
      cpath = scm_parse_path (scm_from_locale_string (env), cpath);
    else
      {
--      cpath = scm_list_2 (scm_from_locale_string (SCM_CCACHE_DIR),
--                          scm_from_locale_string (SCM_SITE_CCACHE_DIR));
+-      cpath = scm_list_2 (scm_from_utf8_string (SCM_CCACHE_DIR),
+-                          scm_from_utf8_string (SCM_SITE_CCACHE_DIR));
 +      cpath = scm_list_1 (scm_from_locale_string (ccache_dir));
      }
  
diff --git a/gnu/packages/patches/handbrake-opt-in-nvenc.patch b/gnu/packages/patches/handbrake-opt-in-nvenc.patch
new file mode 100644
index 0000000000..2b34aaa427
--- /dev/null
+++ b/gnu/packages/patches/handbrake-opt-in-nvenc.patch
@@ -0,0 +1,14 @@
+Require opt-in for NVEnc support.  Otherwise the default is true with no way
+to disable it.
+
+--- HandBrake-1.2.0/make/configure.py.orig	1969-12-31 18:00:00.000000000 -0600
++++ HandBrake-1.2.0/make/configure.py	2019-01-22 23:22:46.186959060 -0600
+@@ -1320,7 +1320,7 @@
+     grp.add_option( '--disable-ffmpeg-aac', dest="enable_ffmpeg_aac", action='store_false' )
+ 
+     h = IfHost( 'enable Nvidia NVEnc video encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
+-    grp.add_option( '--enable-nvenc', dest="enable_nvenc", default=not (host.match( '*-*-darwin*' ) or host.match( '*-*-freebsd*' )), action='store_true', help=h )
++    grp.add_option( '--enable-nvenc', dest="enable_nvenc", default=False, action='store_true', help=h )
+ 
+ 
+     cli.add_option_group( grp )
diff --git a/gnu/packages/patches/hdf4-tirpc.patch b/gnu/packages/patches/hdf4-tirpc.patch
new file mode 100644
index 0000000000..3f436e3887
--- /dev/null
+++ b/gnu/packages/patches/hdf4-tirpc.patch
@@ -0,0 +1,33 @@
+Build with libtirpc on all architectures because glibc no longer provides
+SunRPC support.
+
+diff --git a/configure b/configure
+--- a/configure
++++ b/configure
+@@ -23635,10 +23635,13 @@
+   *-pc-cygwin*)
+     LIBS="$LIBS -ltirpc"
+     CPPFLAGS="$CPPFLAGS -I/usr/include/tirpc"  ;;
++  *-linux-gnu)
++    LIBS="$LIBS -ltirpc"
++    CPPFLAGS="$CPPFLAGS"  ;;
+   *) ;;
+ esac
+ 
+-if test "X$BUILD_XDR" != "Xyes"; then
++if test "X$BUILD_XDR" = "Xyes"; then
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+@@ -23693,9 +23696,9 @@
+   ## but we need to make sure that it is present on the system. Do that here,
+   ## The SunRPC of the glibc has been replaced by a TI-RPC (Transport Independent RPC) library for IPv6 support
+   case "$host" in
+-    *-pc-cygwin*)
++    *)
+       HAVE_RPC="yes"
+-      ac_fn_c_check_header_mongrel "$LINENO" "rpc.h" "ac_cv_header_rpc_h" "$ac_includes_default"
++      ac_fn_c_check_header_mongrel "$LINENO" "rpc/rpc.h" "ac_cv_header_rpc_h" "$ac_includes_default"
+ if test "x$ac_cv_header_rpc_h" = xyes; then :
+   :
+ else
diff --git a/gnu/packages/patches/inkscape-poppler-0.76.patch b/gnu/packages/patches/inkscape-poppler-0.76.patch
new file mode 100644
index 0000000000..08e8303892
--- /dev/null
+++ b/gnu/packages/patches/inkscape-poppler-0.76.patch
@@ -0,0 +1,36 @@
+This patch adds support for Poppler 0.76 and later.
+
+Taken from upstream:
+<https://gitlab.com/inkscape/inkscape/commit/e831b034746f8dc3c3c1b88372751f6dcb974831>
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
+index 8484984bdf..4f798e35bf 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -421,7 +421,7 @@ void PdfParser::parse(Object *obj, GBool topLevel) {
+ 	error(errInternal, -1, "Weird page contents");
+     	return;
+   }
+-  parser = new Parser(xref, new Lexer(xref, obj), gFalse);
++  parser = new _POPPLER_NEW_PARSER(xref, obj);
+   go(topLevel);
+   delete parser;
+   parser = nullptr;
+diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
+index 61a15083a0..5e8bc4ae90 100644
+--- a/src/extension/internal/pdfinput/poppler-transition-api.h
++++ b/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -14,6 +14,13 @@
+ 
+ #include <glib/poppler-features.h>
+ 
++#if POPPLER_CHECK_VERSION(0, 76, 0)
++#define _POPPLER_NEW_PARSER(xref, obj) Parser(xref, obj, gFalse)
++#else
++#define _POPPLER_NEW_PARSER(xref, obj) Parser(xref, new Lexer(xref, obj), gFalse)
++#endif
++
++
+ #if POPPLER_CHECK_VERSION(0, 72, 0)
+ #define getCString c_str
+ #endif
diff --git a/gnu/packages/patches/libarchive-CVE-2017-14166.patch b/gnu/packages/patches/libarchive-CVE-2017-14166.patch
deleted file mode 100644
index a122848440..0000000000
--- a/gnu/packages/patches/libarchive-CVE-2017-14166.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fix CVE-2017-14166:
-
-https://github.com/libarchive/libarchive/issues/935
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14166
-
-Patch copied from upstream source repository:
-
-https://github.com/libarchive/libarchive/commit/fa7438a0ff4033e4741c807394a9af6207940d71
-
-From fa7438a0ff4033e4741c807394a9af6207940d71 Mon Sep 17 00:00:00 2001
-From: Joerg Sonnenberger <joerg@bec.de>
-Date: Tue, 5 Sep 2017 18:12:19 +0200
-Subject: [PATCH] Do something sensible for empty strings to make fuzzers
- happy.
-
----
- libarchive/archive_read_support_format_xar.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/libarchive/archive_read_support_format_xar.c b/libarchive/archive_read_support_format_xar.c
-index 7a22beb9d..93eeacc5e 100644
---- a/libarchive/archive_read_support_format_xar.c
-+++ b/libarchive/archive_read_support_format_xar.c
-@@ -1040,6 +1040,9 @@ atol10(const char *p, size_t char_cnt)
- 	uint64_t l;
- 	int digit;
- 
-+	if (char_cnt == 0)
-+		return (0);
-+
- 	l = 0;
- 	digit = *p - '0';
- 	while (digit >= 0 && digit < 10  && char_cnt-- > 0) {
-@@ -1054,7 +1057,10 @@ atol8(const char *p, size_t char_cnt)
- {
- 	int64_t l;
- 	int digit;
--        
-+
-+	if (char_cnt == 0)
-+		return (0);
-+
- 	l = 0;
- 	while (char_cnt-- > 0) {
- 		if (*p >= '0' && *p <= '7')
diff --git a/gnu/packages/patches/libarchive-CVE-2017-14502.patch b/gnu/packages/patches/libarchive-CVE-2017-14502.patch
deleted file mode 100644
index 8e0508afb5..0000000000
--- a/gnu/packages/patches/libarchive-CVE-2017-14502.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Fix CVE-2017-14502:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14502
-https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=573
-
-Patch copied from upstream source repository:
-
-https://github.com/libarchive/libarchive/commit/5562545b5562f6d12a4ef991fae158bf4ccf92b6
-
-From 5562545b5562f6d12a4ef991fae158bf4ccf92b6 Mon Sep 17 00:00:00 2001
-From: Joerg Sonnenberger <joerg@bec.de>
-Date: Sat, 9 Sep 2017 17:47:32 +0200
-Subject: [PATCH] Avoid a read off-by-one error for UTF16 names in RAR
- archives.
-
-Reported-By: OSS-Fuzz issue 573
----
- libarchive/archive_read_support_format_rar.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c
-index cbb14c32..751de697 100644
---- a/libarchive/archive_read_support_format_rar.c
-+++ b/libarchive/archive_read_support_format_rar.c
-@@ -1496,7 +1496,11 @@ read_header(struct archive_read *a, struct archive_entry *entry,
-         return (ARCHIVE_FATAL);
-       }
-       filename[filename_size++] = '\0';
--      filename[filename_size++] = '\0';
-+      /*
-+       * Do not increment filename_size here as the computations below
-+       * add the space for the terminating NUL explicitly.
-+       */
-+      filename[filename_size] = '\0';
- 
-       /* Decoded unicode form is UTF-16BE, so we have to update a string
-        * conversion object for it. */
--- 
-2.15.1
-
diff --git a/gnu/packages/patches/libarchive-CVE-2018-1000877.patch b/gnu/packages/patches/libarchive-CVE-2018-1000877.patch
deleted file mode 100644
index 5b68884a0f..0000000000
--- a/gnu/packages/patches/libarchive-CVE-2018-1000877.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fix CVE-2018-1000877:
-
-https://bugs.launchpad.net/ubuntu/+source/libarchive/+bug/1794909
-https://github.com/libarchive/libarchive/pull/1105
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000877
-https://security-tracker.debian.org/tracker/CVE-2018-1000877
-
-Patch copied from upstream source repository:
-
-https://github.com/libarchive/libarchive/commit/021efa522ad729ff0f5806c4ce53e4a6cc1daa31
-
-From 021efa522ad729ff0f5806c4ce53e4a6cc1daa31 Mon Sep 17 00:00:00 2001
-From: Daniel Axtens <dja@axtens.net>
-Date: Tue, 20 Nov 2018 17:56:29 +1100
-Subject: [PATCH] Avoid a double-free when a window size of 0 is specified
-
-new_size can be 0 with a malicious or corrupted RAR archive.
-
-realloc(area, 0) is equivalent to free(area), so the region would
-be free()d here and the free()d again in the cleanup function.
-
-Found with a setup running AFL, afl-rb, and qsym.
----
- libarchive/archive_read_support_format_rar.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c
-index 23452222..6f419c27 100644
---- a/libarchive/archive_read_support_format_rar.c
-+++ b/libarchive/archive_read_support_format_rar.c
-@@ -2300,6 +2300,11 @@ parse_codes(struct archive_read *a)
-       new_size = DICTIONARY_MAX_SIZE;
-     else
-       new_size = rar_fls((unsigned int)rar->unp_size) << 1;
-+    if (new_size == 0) {
-+      archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-+                        "Zero window size is invalid.");
-+      return (ARCHIVE_FATAL);
-+    }
-     new_window = realloc(rar->lzss.window, new_size);
-     if (new_window == NULL) {
-       archive_set_error(&a->archive, ENOMEM,
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/libarchive-CVE-2018-1000878.patch b/gnu/packages/patches/libarchive-CVE-2018-1000878.patch
deleted file mode 100644
index fef0881320..0000000000
--- a/gnu/packages/patches/libarchive-CVE-2018-1000878.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-Fix CVE-2018-1000878:
-
-https://bugs.launchpad.net/ubuntu/+source/libarchive/+bug/1794909
-https://github.com/libarchive/libarchive/pull/1105
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000878
-https://security-tracker.debian.org/tracker/CVE-2018-1000878
-
-Patch copied from upstream source repository:
-
-https://github.com/libarchive/libarchive/commit/bfcfe6f04ed20db2504db8a254d1f40a1d84eb28
-
-From bfcfe6f04ed20db2504db8a254d1f40a1d84eb28 Mon Sep 17 00:00:00 2001
-From: Daniel Axtens <dja@axtens.net>
-Date: Tue, 4 Dec 2018 00:55:22 +1100
-Subject: [PATCH] rar: file split across multi-part archives must match
-
-Fuzzing uncovered some UAF and memory overrun bugs where a file in a
-single file archive reported that it was split across multiple
-volumes. This was caused by ppmd7 operations calling
-rar_br_fillup. This would invoke rar_read_ahead, which would in some
-situations invoke archive_read_format_rar_read_header.  That would
-check the new file name against the old file name, and if they didn't
-match up it would free the ppmd7 buffer and allocate a new
-one. However, because the ppmd7 decoder wasn't actually done with the
-buffer, it would continue to used the freed buffer. Both reads and
-writes to the freed region can be observed.
-
-This is quite tricky to solve: once the buffer has been freed it is
-too late, as the ppmd7 decoder functions almost universally assume
-success - there's no way for ppmd_read to signal error, nor are there
-good ways for functions like Range_Normalise to propagate them. So we
-can't detect after the fact that we're in an invalid state - e.g. by
-checking rar->cursor, we have to prevent ourselves from ever ending up
-there. So, when we are in the dangerous part or rar_read_ahead that
-assumes a valid split, we set a flag force read_header to either go
-down the path for split files or bail. This means that the ppmd7
-decoder keeps a valid buffer and just runs out of data.
-
-Found with a combination of AFL, afl-rb and qsym.
----
- libarchive/archive_read_support_format_rar.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c
-index 6f419c27..a8cc5c94 100644
---- a/libarchive/archive_read_support_format_rar.c
-+++ b/libarchive/archive_read_support_format_rar.c
-@@ -258,6 +258,7 @@ struct rar
-   struct data_block_offsets *dbo;
-   unsigned int cursor;
-   unsigned int nodes;
-+  char filename_must_match;
- 
-   /* LZSS members */
-   struct huffman_code maincode;
-@@ -1560,6 +1561,12 @@ read_header(struct archive_read *a, struct archive_entry *entry,
-     }
-     return ret;
-   }
-+  else if (rar->filename_must_match)
-+  {
-+    archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-+      "Mismatch of file parts split across multi-volume archive");
-+    return (ARCHIVE_FATAL);
-+  }
- 
-   rar->filename_save = (char*)realloc(rar->filename_save,
-                                       filename_size + 1);
-@@ -2933,12 +2940,14 @@ rar_read_ahead(struct archive_read *a, size_t min, ssize_t *avail)
-     else if (*avail == 0 && rar->main_flags & MHD_VOLUME &&
-       rar->file_flags & FHD_SPLIT_AFTER)
-     {
-+      rar->filename_must_match = 1;
-       ret = archive_read_format_rar_read_header(a, a->entry);
-       if (ret == (ARCHIVE_EOF))
-       {
-         rar->has_endarc_header = 1;
-         ret = archive_read_format_rar_read_header(a, a->entry);
-       }
-+      rar->filename_must_match = 0;
-       if (ret != (ARCHIVE_OK))
-         return NULL;
-       return rar_read_ahead(a, min, avail);
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/libarchive-CVE-2018-1000880.patch b/gnu/packages/patches/libarchive-CVE-2018-1000880.patch
deleted file mode 100644
index 6834cabda0..0000000000
--- a/gnu/packages/patches/libarchive-CVE-2018-1000880.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Fix CVE-2018-1000880:
-
-https://bugs.launchpad.net/ubuntu/+source/libarchive/+bug/1794909
-https://github.com/libarchive/libarchive/pull/1105
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000880
-https://security-tracker.debian.org/tracker/CVE-2018-1000880
-
-Patch copied from upstream source repository:
-
-https://github.com/libarchive/libarchive/commit/9c84b7426660c09c18cc349f6d70b5f8168b5680
-
-From 9c84b7426660c09c18cc349f6d70b5f8168b5680 Mon Sep 17 00:00:00 2001
-From: Daniel Axtens <dja@axtens.net>
-Date: Tue, 4 Dec 2018 16:33:42 +1100
-Subject: [PATCH] warc: consume data once read
-
-The warc decoder only used read ahead, it wouldn't actually consume
-data that had previously been printed. This means that if you specify
-an invalid content length, it will just reprint the same data over
-and over and over again until it hits the desired length.
-
-This means that a WARC resource with e.g.
-Content-Length: 666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665
-but only a few hundred bytes of data, causes a quasi-infinite loop.
-
-Consume data in subsequent calls to _warc_read.
-
-Found with an AFL + afl-rb + qsym setup.
----
- libarchive/archive_read_support_format_warc.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/libarchive/archive_read_support_format_warc.c b/libarchive/archive_read_support_format_warc.c
-index e8753853..e8fc8428 100644
---- a/libarchive/archive_read_support_format_warc.c
-+++ b/libarchive/archive_read_support_format_warc.c
-@@ -386,6 +386,11 @@ _warc_read(struct archive_read *a, const void **buf, size_t *bsz, int64_t *off)
- 		return (ARCHIVE_EOF);
- 	}
- 
-+	if (w->unconsumed) {
-+		__archive_read_consume(a, w->unconsumed);
-+		w->unconsumed = 0U;
-+	}
-+
- 	rab = __archive_read_ahead(a, 1U, &nrd);
- 	if (nrd < 0) {
- 		*bsz = 0U;
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/libcroco-CVE-2017-7960.patch b/gnu/packages/patches/libcroco-CVE-2017-7960.patch
deleted file mode 100644
index 0319c7389f..0000000000
--- a/gnu/packages/patches/libcroco-CVE-2017-7960.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-Fix CVE-2017-7960:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7960
-
-Patch copied from upstream source repository:
-
-https://git.gnome.org/browse/libcroco/commit/?id=898e3a8c8c0314d2e6b106809a8e3e93cf9d4394
-
-From 898e3a8c8c0314d2e6b106809a8e3e93cf9d4394 Mon Sep 17 00:00:00 2001
-From: Ignacio Casal Quinteiro <qignacio@amazon.com>
-Date: Sun, 16 Apr 2017 13:13:43 +0200
-Subject: input: check end of input before reading a byte
-
-When reading bytes we weren't check that the index wasn't
-out of bound and this could produce an invalid read which
-could deal to a security bug.
----
- src/cr-input.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/src/cr-input.c b/src/cr-input.c
-index 49000b1..3b63a88 100644
---- a/src/cr-input.c
-+++ b/src/cr-input.c
-@@ -256,7 +256,7 @@ cr_input_new_from_uri (const gchar * a_file_uri, enum CREncoding a_enc)
-                  *we should  free buf here because it's own by CRInput.
-                  *(see the last parameter of cr_input_new_from_buf().
-                  */
--                buf = NULL ;
-+                buf = NULL;
-         }
- 
-  cleanup:
-@@ -404,6 +404,8 @@ cr_input_get_nb_bytes_left (CRInput const * a_this)
- enum CRStatus
- cr_input_read_byte (CRInput * a_this, guchar * a_byte)
- {
-+        gulong nb_bytes_left = 0;
-+
-         g_return_val_if_fail (a_this && PRIVATE (a_this)
-                               && a_byte, CR_BAD_PARAM_ERROR);
- 
-@@ -413,6 +415,12 @@ cr_input_read_byte (CRInput * a_this, guchar * a_byte)
-         if (PRIVATE (a_this)->end_of_input == TRUE)
-                 return CR_END_OF_INPUT_ERROR;
- 
-+        nb_bytes_left = cr_input_get_nb_bytes_left (a_this);
-+
-+        if (nb_bytes_left < 1) {
-+                return CR_END_OF_INPUT_ERROR;
-+        }
-+
-         *a_byte = PRIVATE (a_this)->in_buf[PRIVATE (a_this)->next_byte_index];
- 
-         if (PRIVATE (a_this)->nb_bytes -
-@@ -477,7 +485,6 @@ cr_input_read_char (CRInput * a_this, guint32 * a_char)
-                 if (*a_char == '\n') {
-                         PRIVATE (a_this)->end_of_line = TRUE;
-                 }
--
-         }
- 
-         return status;
--- 
-cgit v0.12
-
diff --git a/gnu/packages/patches/libcroco-CVE-2017-7961.patch b/gnu/packages/patches/libcroco-CVE-2017-7961.patch
deleted file mode 100644
index 675dbe4f08..0000000000
--- a/gnu/packages/patches/libcroco-CVE-2017-7961.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Fix CVE-2017-7961:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7961
-
-Patch copied from upstream source repository:
-
-https://git.gnome.org/browse/libcroco/commit/?id=9ad72875e9f08e4c519ef63d44cdbd94aa9504f7
-
-From 9ad72875e9f08e4c519ef63d44cdbd94aa9504f7 Mon Sep 17 00:00:00 2001
-From: Ignacio Casal Quinteiro <qignacio@amazon.com>
-Date: Sun, 16 Apr 2017 13:56:09 +0200
-Subject: tknzr: support only max long rgb values
-
-This fixes a possible out of bound when reading rgbs which
-are longer than the support MAXLONG
----
- src/cr-tknzr.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/src/cr-tknzr.c b/src/cr-tknzr.c
-index 1a7cfeb..1548c35 100644
---- a/src/cr-tknzr.c
-+++ b/src/cr-tknzr.c
-@@ -1279,6 +1279,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb)
-         status = cr_tknzr_parse_num (a_this, &num);
-         ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL));
- 
-+        if (num->val > G_MAXLONG) {
-+                status = CR_PARSING_ERROR;
-+                goto error;
-+        }
-+
-         red = num->val;
-         cr_num_destroy (num);
-         num = NULL;
-@@ -1298,6 +1303,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb)
-                 status = cr_tknzr_parse_num (a_this, &num);
-                 ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL));
- 
-+                if (num->val > G_MAXLONG) {
-+                        status = CR_PARSING_ERROR;
-+                        goto error;
-+                }
-+
-                 PEEK_BYTE (a_this, 1, &next_bytes[0]);
-                 if (next_bytes[0] == '%') {
-                         SKIP_CHARS (a_this, 1);
--- 
-cgit v0.12
-
diff --git a/gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch b/gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch
deleted file mode 100644
index 3056f0baad..0000000000
--- a/gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Make yat2m in libgcrypt respect SOURCE_DATE_EPOCH, making
-the build reproducible.
-
-This was already fixed upstream in GnuPG:
-https://dev.gnupg.org/rG139de02b93773615bdd95e04a7f0c1ad73b4f6fb
-
-and in libgpg-error:
-https://dev.gnupg.org/rE5494a5728418938d2e42158bb646b07124184e64
-
-
---- a/doc/yat2m.c 2017-11-23 19:16:58.000000000 +0100
-+++ b/doc/yat2m.c 2017-08-28 12:22:54.000000000 +0200
-@@ -1475,6 +1484,7 @@
- main (int argc, char **argv)
- {
-   int last_argc = -1;
-+  const char *s;
- 
-   opt_source = "GNU";
-   opt_release = "";
-@@ -1608,6 +1618,11 @@
-   if (argc > 1)
-     die ("usage: " PGM " [OPTION] [FILE] (try --help for more information)\n");
- 
-+  /* Take care of supplied timestamp for reproducible builds.  See
-+   * https://reproducible-builds.org/specs/source-date-epoch/  */
-+  if (!opt_date && (s = getenv ("SOURCE_DATE_EPOCH")) && *s)
-+    opt_date = s;
-+
-   /* Start processing. */
-   if (argc && strcmp (*argv, "-"))
-     {
diff --git a/gnu/packages/patches/libgdata-fix-tests.patch b/gnu/packages/patches/libgdata-fix-tests.patch
deleted file mode 100644
index dc86b3ab5a..0000000000
--- a/gnu/packages/patches/libgdata-fix-tests.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From c87a112246e0bcbd5c3a8aa484a50c617d710dbf Mon Sep 17 00:00:00 2001
-From: Philip Withnall <philip.withnall@collabora.co.uk>
-Date: Fri, 12 Dec 2014 17:31:01 +0000
-Subject: [PATCH] tests: Eliminate ISO 8601 formatting workaround for dates
-
-Follow up to commit 732017e4e5235e28c578cc3367fa0c4548b65495.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=739956
----
- gdata/tests/calendar.c | 20 ++++++++++----------
- gdata/tests/general.c  | 34 +++++++++++++++++-----------------
- gdata/tests/tasks.c    | 34 +++++++++++++++++-----------------
- gdata/tests/youtube.c  | 16 ++++++++--------
- 4 files changed, 52 insertions(+), 52 deletions(-)
-
-diff --git a/gdata/tests/calendar.c b/gdata/tests/calendar.c
-index bb1d609..c54ddda 100644
---- a/gdata/tests/calendar.c
-+++ b/gdata/tests/calendar.c
-@@ -620,7 +620,7 @@ test_event_xml (void)
- 			"<gCal:guestsCanInviteOthers value='false'/>"
- 			"<gCal:guestsCanSeeGuests value='false'/>"
- 			"<gCal:anyoneCanAddSelf value='false'/>"
--			"<gd:when startTime='2009-04-17T15:00:00.000001+00:00' endTime='2009-04-17T17:00:00.000001+00:00'/>"
-+			"<gd:when startTime='2009-04-17T15:00:00Z' endTime='2009-04-17T17:00:00Z'/>"
- 			"<gd:who email='john.smith@example.com' "
- 			        "rel='http://schemas.google.com/g/2005#event.organizer' "
- 			        "valueString='John Smith\342\200\275'/>"
-@@ -706,7 +706,7 @@ test_event_xml_dates (void)
- 			"<gCal:guestsCanSeeGuests value='false'/>"
- 			"<gCal:anyoneCanAddSelf value='false'/>"
- 			"<gd:when startTime='2009-04-17'/>"
--			"<gd:when startTime='2009-04-17T15:00:00.000001+00:00'/>"
-+			"<gd:when startTime='2009-04-17T15:00:00Z'/>"
- 			"<gd:when startTime='2009-04-27' endTime='2009-05-06'/>"
- 		"</entry>");
- 
-@@ -934,25 +934,25 @@ test_query_uri (void)
- 
- 	/* Check the built query URI with a normal feed URI */
- 	query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
--	g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00.000001+00:00"
--	                                "&recurrence-expansion-end=2010-04-17T15:00:00.000001+00:00&singleevents=true&sortorder=descending"
--	                                "&start-min=2009-04-17T15:00:00.000001+00:00&start-max=2010-04-17T15:00:00.000001+00:00&ctz=America%2FLos_Angeles&max-attendees=15"
-+	g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00Z"
-+	                                "&recurrence-expansion-end=2010-04-17T15:00:00Z&singleevents=true&sortorder=descending"
-+	                                "&start-min=2009-04-17T15:00:00Z&start-max=2010-04-17T15:00:00Z&ctz=America%2FLos_Angeles&max-attendees=15"
- 	                                "&showdeleted=true");
- 	g_free (query_uri);
- 
- 	/* …with a feed URI with a trailing slash */
- 	query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com/");
--	g_assert_cmpstr (query_uri, ==, "http://example.com/?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00.000001+00:00"
--	                                "&recurrence-expansion-end=2010-04-17T15:00:00.000001+00:00&singleevents=true&sortorder=descending"
--	                                "&start-min=2009-04-17T15:00:00.000001+00:00&start-max=2010-04-17T15:00:00.000001+00:00&ctz=America%2FLos_Angeles&max-attendees=15"
-+	g_assert_cmpstr (query_uri, ==, "http://example.com/?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00Z"
-+	                                "&recurrence-expansion-end=2010-04-17T15:00:00Z&singleevents=true&sortorder=descending"
-+	                                "&start-min=2009-04-17T15:00:00Z&start-max=2010-04-17T15:00:00Z&ctz=America%2FLos_Angeles&max-attendees=15"
- 	                                "&showdeleted=true");
- 	g_free (query_uri);
- 
- 	/* …with a feed URI with pre-existing arguments */
- 	query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com/bar/?test=test&this=that");
- 	g_assert_cmpstr (query_uri, ==, "http://example.com/bar/?test=test&this=that&q=q&futureevents=true&orderby=starttime"
--	                                "&recurrence-expansion-start=2009-04-17T15:00:00.000001+00:00&recurrence-expansion-end=2010-04-17T15:00:00.000001+00:00"
--	                                "&singleevents=true&sortorder=descending&start-min=2009-04-17T15:00:00.000001+00:00&start-max=2010-04-17T15:00:00.000001+00:00"
-+	                                "&recurrence-expansion-start=2009-04-17T15:00:00Z&recurrence-expansion-end=2010-04-17T15:00:00Z"
-+	                                "&singleevents=true&sortorder=descending&start-min=2009-04-17T15:00:00Z&start-max=2010-04-17T15:00:00Z"
- 	                                "&ctz=America%2FLos_Angeles&max-attendees=15&showdeleted=true");
- 	g_free (query_uri);
- 
-diff --git a/gdata/tests/general.c b/gdata/tests/general.c
-index 237a908..f828d2e 100644
---- a/gdata/tests/general.c
-+++ b/gdata/tests/general.c
-@@ -528,8 +528,8 @@ test_entry_parse_xml (void)
- 			 "<?xml version='1.0' encoding='UTF-8'?>"
- 			 "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' xmlns:ns='http://example.com/'>"
- 				"<title type='text'>Testing unhandled XML</title>"
--				"<updated>2009-01-25T14:07:37.000001+00:00</updated>"
--				"<published>2009-01-23T14:06:37.000001+00:00</published>"
-+				"<updated>2009-01-25T14:07:37Z</updated>"
-+				"<published>2009-01-23T14:06:37Z</published>"
- 				"<content type='text'>Here we test unhandled XML elements.</content>"
- 				"<foobar>Test!</foobar>"
- 				"<barfoo shizzle=\"zing\"/>"
-@@ -569,8 +569,8 @@ test_entry_parse_xml_kind_category (void)
- 			 "<?xml version='1.0' encoding='UTF-8'?>"
- 			 "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>"
- 				"<title type='text'>Testing kind categories</title>"
--				"<updated>2009-01-25T14:07:37.000001+00:00</updated>"
--				"<published>2009-01-23T14:06:37.000001+00:00</published>"
-+				"<updated>2009-01-25T14:07:37Z</updated>"
-+				"<published>2009-01-23T14:06:37Z</published>"
- 				"<content type='text'>Here we test kind categories.</content>"
- 			"<category term='http://schemas.google.com/docs/2007#file' "
- 			          "scheme='http://schemas.google.com/g/2005#kind' "
-@@ -620,7 +620,7 @@ test_entry_parse_json (void)
- 		"{"
- 			"\"title\":\"A title\","
- 			"\"id\":\"some-id\","
--			"\"updated\":\"2009-01-25T14:07:37.000001+00:00\","
-+			"\"updated\":\"2009-01-25T14:07:37Z\","
- 			"\"etag\":\"some-etag\","
- 			"\"selfLink\":\"http://example.com/\","
- 			"\"kind\":\"kind#kind\","
-@@ -760,8 +760,8 @@ test_entry_escaping (void)
- 		"<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>"
- 			"<title type='text'>Escaped content &amp; stuff</title>"
- 			"<id>http://foo.com/?foo&amp;bar</id>"
--			"<updated>2010-12-10T17:21:24.000001+00:00</updated>"
--			"<published>2010-12-10T17:21:24.000001+00:00</published>"
-+			"<updated>2010-12-10T17:21:24Z</updated>"
-+			"<published>2010-12-10T17:21:24Z</published>"
- 			"<summary type='text'>Summary &amp; stuff</summary>"
- 			"<rights>Free &amp; open source</rights>"
- 			"<content type='text'>Content &amp; things.</content>"
-@@ -1106,7 +1106,7 @@ test_feed_escaping (void)
- 		"<feed xmlns='http://www.w3.org/2005/Atom'>"
- 			"<title type='text'>Test feed &amp; stuff.</title>"
- 			"<id>http://foo.com?foo&amp;bar</id>"
--			"<updated>2010-12-10T17:49:15.000001+00:00</updated>"
-+			"<updated>2010-12-10T17:49:15Z</updated>"
- 		"</feed>");
- 	g_object_unref (feed);
- }
-@@ -1157,28 +1157,28 @@ test_query_dates (void)
- 	/* updated-min */
- 	gdata_query_set_updated_min (query, 1373280114); /* 2013-07-08T10:41:54Z */
- 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
--	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-min=2013-07-08T10:41:54.000001+00:00");
-+	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-min=2013-07-08T10:41:54Z");
- 	g_free (query_uri);
- 	gdata_query_set_updated_min (query, -1);
- 
- 	/* updated-max */
- 	gdata_query_set_updated_max (query, 1373280114); /* 2013-07-08T10:41:54Z */
- 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
--	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-max=2013-07-08T10:41:54.000001+00:00");
-+	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-max=2013-07-08T10:41:54Z");
- 	g_free (query_uri);
- 	gdata_query_set_updated_max (query, -1);
- 
- 	/* published-min */
- 	gdata_query_set_published_min (query, 1373280114); /* 2013-07-08T10:41:54Z */
- 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
--	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-min=2013-07-08T10:41:54.000001+00:00");
-+	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-min=2013-07-08T10:41:54Z");
- 	g_free (query_uri);
- 	gdata_query_set_published_min (query, -1);
- 
- 	/* published-max */
- 	gdata_query_set_published_max (query, 1373280114); /* 2013-07-08T10:41:54Z */
- 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
--	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-max=2013-07-08T10:41:54.000001+00:00");
-+	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-max=2013-07-08T10:41:54Z");
- 	g_free (query_uri);
- 	gdata_query_set_published_max (query, -1);
- 
-@@ -3127,7 +3127,7 @@ test_gd_reminder (void)
- 	gdata_test_assert_xml (reminder,
- 			 "<?xml version='1.0' encoding='UTF-8'?>"
- 			 "<gd:reminder xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' "
--				"absoluteTime='2005-06-07T00:55:00.000001+00:00' method='alert'/>");
-+				"absoluteTime='2005-06-07T00:55:00Z' method='alert'/>");
- 	g_object_unref (reminder);
- }
- 
-@@ -3218,8 +3218,8 @@ test_gd_when (void)
- 	/* Check the outputted XML is the same */
- 	gdata_test_assert_xml (when,
- 			 "<?xml version='1.0' encoding='UTF-8'?>"
--			 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' startTime='2005-06-07T01:00:00.000001+00:00' "
--				"endTime='2005-06-07T02:00:00.000001+00:00'/>");
-+			 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' startTime='2005-06-07T01:00:00Z' "
-+				"endTime='2005-06-07T02:00:00Z'/>");
- 	g_object_unref (when);
- 
- 	/* Now parse a time with different information */
-@@ -3258,7 +3258,7 @@ test_gd_when (void)
- 			 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' startTime='2005-06-06' "
- 				"endTime='2005-06-08' valueString='This weekend'>"
- 				"<gd:reminder minutes='15'/>"
--				"<gd:reminder absoluteTime='2005-06-06T00:00:00.000001+00:00' method='alert'/>"
-+				"<gd:reminder absoluteTime='2005-06-06T00:00:00Z' method='alert'/>"
- 				"<foobar/>"
- 			 "</gd:when>");
- 	g_object_unref (when);
-@@ -3278,7 +3278,7 @@ test_gd_when_escaping (void)
- 	gdata_test_assert_xml (when,
- 	                 "<?xml version='1.0' encoding='UTF-8'?>"
- 	                 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' "
--	                          "startTime='2005-06-07T01:00:00.000001+00:00' valueString='Value string &amp; stuff!'/>");
-+	                          "startTime='2005-06-07T01:00:00Z' valueString='Value string &amp; stuff!'/>");
- 	g_object_unref (when);
- }
- 
-diff --git a/gdata/tests/tasks.c b/gdata/tests/tasks.c
-index 7a5bc7e..7bf3174 100644
---- a/gdata/tests/tasks.c
-+++ b/gdata/tests/tasks.c
-@@ -122,11 +122,11 @@ test_query_uri (void)
- 	g_assert_cmpstr (query_uri, ==,
- 	                 "http://example.com"
- 	                 "?maxResults=10"
--	                 "&updatedMin=1970-01-01T01:53:09.000001+00:00"
--	                 "&completedMin=1970-01-01T01:34:38.000001+00:00"
--	                 "&completedMax=1970-01-01T00:20:34.000001+00:00"
--	                 "&dueMin=1970-01-01T00:39:05.000001+00:00"
--	                 "&dueMax=1970-01-01T00:57:36.000001+00:00"
-+	                 "&updatedMin=1970-01-01T01:53:09Z"
-+	                 "&completedMin=1970-01-01T01:34:38Z"
-+	                 "&completedMax=1970-01-01T00:20:34Z"
-+	                 "&dueMin=1970-01-01T00:39:05Z"
-+	                 "&dueMax=1970-01-01T00:57:36Z"
- 	                 "&showCompleted=true"
- 	                 "&showDeleted=true"
- 	                 "&showHidden=true");
-@@ -148,11 +148,11 @@ test_query_uri (void)
- 	g_assert_cmpstr (query_uri, ==,
- 	                 "http://example.com"
- 	                 "?maxResults=10"
--	                 "&updatedMin=1970-01-01T01:53:09.000001+00:00"
--	                 "&completedMin=1970-01-01T01:34:38.000001+00:00"
--	                 "&completedMax=1970-01-01T00:20:34.000001+00:00"
--	                 "&dueMin=1970-01-01T00:39:05.000001+00:00"
--	                 "&dueMax=1970-01-01T00:57:36.000001+00:00"
-+	                 "&updatedMin=1970-01-01T01:53:09Z"
-+	                 "&completedMin=1970-01-01T01:34:38Z"
-+	                 "&completedMax=1970-01-01T00:20:34Z"
-+	                 "&dueMin=1970-01-01T00:39:05Z"
-+	                 "&dueMax=1970-01-01T00:57:36Z"
- 	                 "&showCompleted=false"
- 	                 "&showDeleted=false"
- 	                 "&showHidden=false");
-@@ -317,8 +317,8 @@ test_task_properties (void)
- 			"\"title\": \"some-other-title\","
- 			"\"notes\": \"more-notes\","
- 			"\"status\": \"completed\","
--			"\"due\": \"2014-08-30T17:20:00.000001+00:00\","
--			"\"completed\": \"2014-08-30T17:20:00.000001+00:00\","
-+			"\"due\": \"2014-08-30T17:20:00Z\","
-+			"\"completed\": \"2014-08-30T17:20:00Z\","
- 			"\"deleted\": true,"
- 			"\"hidden\": false"
- 		"}");
-@@ -332,8 +332,8 @@ test_task_properties (void)
- 			"\"title\": \"some-other-title\","
- 			"\"notes\": \"more-notes\","
- 			"\"status\": \"completed\","
--			"\"due\": \"2014-08-30T17:20:00.000001+00:00\","
--			"\"completed\": \"2014-08-30T17:20:00.000001+00:00\","
-+			"\"due\": \"2014-08-30T17:20:00Z\","
-+			"\"completed\": \"2014-08-30T17:20:00Z\","
- 			"\"deleted\": false,"
- 			"\"hidden\": false"
- 		"}");
-@@ -496,14 +496,14 @@ test_task_parser_normal (void)
- 			"\"id\": \"some-id\","
- 			"\"etag\": \"some-etag\","
- 			"\"title\": \"some-title \\\"with quotes\\\"\","
--			"\"updated\": \"2014-08-30T19:40:00.000001+00:00\","
-+			"\"updated\": \"2014-08-30T19:40:00Z\","
- 			"\"selfLink\": \"http://some-uri/\","
- 			"\"parent\": \"some-parent-id\","
- 			"\"position\": \"some-position\","
- 			"\"notes\": \"Some notes!\","
- 			"\"status\": \"needsAction\","
--			"\"due\": \"2014-08-30T20:00:00.000001+00:00\","
--			"\"completed\": \"2014-08-30T20:10:05.000001+00:00\","
-+			"\"due\": \"2014-08-30T20:00:00Z\","
-+			"\"completed\": \"2014-08-30T20:10:05Z\","
- 			"\"deleted\": false,"
- 			"\"hidden\": true,"
- 			/* Unhandled for the moment: */
-diff --git a/gdata/tests/youtube.c b/gdata/tests/youtube.c
-index a1e070a..1195bc3 100644
---- a/gdata/tests/youtube.c
-+++ b/gdata/tests/youtube.c
-@@ -967,8 +967,8 @@ test_parsing_yt_recorded (void)
- 				"gd:etag='W/\"CEMFSX47eCp7ImA9WxVUGEw.\"'>"
- 				"<title type='text'>Judas Priest - Painkiller</title>"
- 				"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
--				"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
--				"<published>2006-05-16T14:06:37.000001+00:00</published>"
-+				"<updated>2009-03-23T12:46:58Z</updated>"
-+				"<published>2006-05-16T14:06:37Z</published>"
- 				"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
- 				"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
- 				"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
-@@ -1055,8 +1055,8 @@ test_parsing_yt_access_control (void)
- 				"gd:etag='W/\"CEMFSX47eCp7ImA9WxVUGEw.\"'>"
- 				"<title type='text'>Judas Priest - Painkiller</title>"
- 				"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
--				"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
--				"<published>2006-05-16T14:06:37.000001+00:00</published>"
-+				"<updated>2009-03-23T12:46:58Z</updated>"
-+				"<published>2006-05-16T14:06:37Z</published>"
- 				"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
- 				"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
- 				"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
-@@ -1255,8 +1255,8 @@ test_parsing_georss_where (void)
- 		       "xmlns:gml='http://www.opengis.net/gml'>"
- 			"<title type='text'>Some video somewhere</title>"
- 			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
--			"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
--			"<published>2006-05-16T14:06:37.000001+00:00</published>"
-+			"<updated>2009-03-23T12:46:58Z</updated>"
-+			"<published>2006-05-16T14:06:37Z</published>"
- 			"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
- 			"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
- 			"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
-@@ -1295,8 +1295,8 @@ test_parsing_georss_where (void)
- 		       "xmlns:gml='http://www.opengis.net/gml'>"
- 			"<title type='text'>Some video somewhere</title>"
- 			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
--			"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
--			"<published>2006-05-16T14:06:37.000001+00:00</published>"
-+			"<updated>2009-03-23T12:46:58Z</updated>"
-+			"<published>2006-05-16T14:06:37Z</published>"
- 			"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
- 			"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
- 			"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
--- 
-1.9.3
diff --git a/gnu/packages/patches/libgdata-glib-duplicate-tests.patch b/gnu/packages/patches/libgdata-glib-duplicate-tests.patch
deleted file mode 100644
index d5d8d064de..0000000000
--- a/gnu/packages/patches/libgdata-glib-duplicate-tests.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ur a/gdata/tests/oauth1-authorizer.c b/gdata/tests/oauth1-authorizer.c
---- a/gdata/tests/oauth1-authorizer.c	1969-12-31 19:00:00.000000000 -0500
-+++ b/gdata/tests/oauth1-authorizer.c	2017-05-27 19:35:30.551725678 -0400
-@@ -1045,10 +1045,10 @@
- 	/* Sync request-authentication-uri tests */
- 	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync", OAuth1AuthorizerData, NULL, set_up_oauth1_authorizer_data,
- 	            test_oauth1_authorizer_request_authentication_uri_sync, tear_down_oauth1_authorizer_data);
--	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains", OAuth1AuthorizerData, NULL,
-+	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains1", OAuth1AuthorizerData, NULL,
- 	            set_up_oauth1_authorizer_data_multiple_domains, test_oauth1_authorizer_request_authentication_uri_sync,
- 	            tear_down_oauth1_authorizer_data);
--	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains", OAuth1AuthorizerData, NULL,
-+	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains2", OAuth1AuthorizerData, NULL,
- 	            set_up_oauth1_authorizer_data_locale, test_oauth1_authorizer_request_authentication_uri_sync,
- 	            tear_down_oauth1_authorizer_data);
- 	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/cancellation", OAuth1AuthorizerData, NULL,
diff --git a/gnu/packages/patches/libgpg-error-gawk-compat.patch b/gnu/packages/patches/libgpg-error-gawk-compat.patch
new file mode 100644
index 0000000000..85477b0be6
--- /dev/null
+++ b/gnu/packages/patches/libgpg-error-gawk-compat.patch
@@ -0,0 +1,155 @@
+From 7865041c77f4f7005282f10f9b6666b19072fbdf Mon Sep 17 00:00:00 2001
+From: NIIBE Yutaka <gniibe@fsij.org>
+Date: Mon, 15 Apr 2019 15:10:44 +0900
+Subject: [PATCH] awk: Prepare for Gawk 5.0.
+
+* src/Makefile.am: Use pkg_namespace (instead of namespace).
+* src/mkerrnos.awk: Likewise.
+* lang/cl/mkerrcodes.awk: Don't escape # in regexp.
+* src/mkerrcodes.awk, src/mkerrcodes1.awk, src/mkerrcodes2.awk: Ditto.
+
+--
+
+In Gawk 5.0, regexp routines are replaced by Gnulib implementation,
+which only allows escaping specific characters.
+
+GnuPG-bug-id: 4459
+Reported-by: Marius Schamschula
+Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
+---
+ lang/cl/mkerrcodes.awk |  2 +-
+ src/Makefile.am        |  2 +-
+ src/mkerrcodes.awk     |  2 +-
+ src/mkerrcodes1.awk    |  2 +-
+ src/mkerrcodes2.awk    |  2 +-
+ src/mkerrnos.awk       |  2 +-
+ src/mkstrtable.awk     | 10 +++++-----
+ 7 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/lang/cl/mkerrcodes.awk b/lang/cl/mkerrcodes.awk
+index ae29043..9a1fc18 100644
+--- a/lang/cl/mkerrcodes.awk
++++ b/lang/cl/mkerrcodes.awk
+@@ -122,7 +122,7 @@ header {
+ }
+ 
+ !header {
+-  sub (/\#.+/, "");
++  sub (/#.+/, "");
+   sub (/[ 	]+$/, ""); # Strip trailing space and tab characters.
+ 
+   if (/^$/)
+diff --git a/src/Makefile.am b/src/Makefile.am
+index ce1b882..f2590cb 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -293,7 +293,7 @@ code-from-errno.h: mkerrcodes$(EXEEXT_FOR_BUILD) Makefile
+ 
+ errnos-sym.h: Makefile mkstrtable.awk errnos.in
+ 	$(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \
+-		-v prefix=GPG_ERR_ -v namespace=errnos_ \
++		-v prefix=GPG_ERR_ -v pkg_namespace=errnos_ \
+ 		$(srcdir)/errnos.in >$@
+ 
+ 
+diff --git a/src/mkerrcodes.awk b/src/mkerrcodes.awk
+index 46d436c..e9c857c 100644
+--- a/src/mkerrcodes.awk
++++ b/src/mkerrcodes.awk
+@@ -85,7 +85,7 @@ header {
+ }
+ 
+ !header {
+-  sub (/\#.+/, "");
++  sub (/#.+/, "");
+   sub (/[ 	]+$/, ""); # Strip trailing space and tab characters.
+ 
+   if (/^$/)
+diff --git a/src/mkerrcodes1.awk b/src/mkerrcodes1.awk
+index a771a73..4578e29 100644
+--- a/src/mkerrcodes1.awk
++++ b/src/mkerrcodes1.awk
+@@ -81,7 +81,7 @@ header {
+ }
+ 
+ !header {
+-  sub (/\#.+/, "");
++  sub (/#.+/, "");
+   sub (/[ 	]+$/, ""); # Strip trailing space and tab characters.
+ 
+   if (/^$/)
+diff --git a/src/mkerrcodes2.awk b/src/mkerrcodes2.awk
+index ea58503..188f7a4 100644
+--- a/src/mkerrcodes2.awk
++++ b/src/mkerrcodes2.awk
+@@ -91,7 +91,7 @@ header {
+ }
+ 
+ !header {
+-  sub (/\#.+/, "");
++  sub (/#.+/, "");
+   sub (/[ 	]+$/, ""); # Strip trailing space and tab characters.
+ 
+   if (/^$/)
+diff --git a/src/mkerrnos.awk b/src/mkerrnos.awk
+index f79df66..15b1aad 100644
+--- a/src/mkerrnos.awk
++++ b/src/mkerrnos.awk
+@@ -83,7 +83,7 @@ header {
+ }
+ 
+ !header {
+-  sub (/\#.+/, "");
++  sub (/#.+/, "");
+   sub (/[ 	]+$/, ""); # Strip trailing space and tab characters.
+ 
+   if (/^$/)
+diff --git a/src/mkstrtable.awk b/src/mkstrtable.awk
+index c9de9c1..285e45f 100644
+--- a/src/mkstrtable.awk
++++ b/src/mkstrtable.awk
+@@ -77,7 +77,7 @@
+ #
+ # The variable prefix can be used to prepend a string to each message.
+ #
+-# The variable namespace can be used to prepend a string to each
++# The variable pkg_namespace can be used to prepend a string to each
+ # variable and macro name.
+ 
+ BEGIN {
+@@ -102,7 +102,7 @@ header {
+       print "/* The purpose of this complex string table is to produce";
+       print "   optimal code with a minimum of relocations.  */";
+       print "";
+-      print "static const char " namespace "msgstr[] = ";
++      print "static const char " pkg_namespace "msgstr[] = ";
+       header = 0;
+     }
+   else
+@@ -110,7 +110,7 @@ header {
+ }
+ 
+ !header {
+-  sub (/\#.+/, "");
++  sub (/#.+/, "");
+   sub (/[ 	]+$/, ""); # Strip trailing space and tab characters.
+ 
+   if (/^$/)
+@@ -150,7 +150,7 @@ END {
+   else
+     print "  gettext_noop (\"" last_msgstr "\");";
+   print "";
+-  print "static const int " namespace "msgidx[] =";
++  print "static const int " pkg_namespace "msgidx[] =";
+   print "  {";
+   for (i = 0; i < coded_msgs; i++)
+     print "    " pos[i] ",";
+@@ -158,7 +158,7 @@ END {
+   print "  };";
+   print "";
+   print "static GPG_ERR_INLINE int";
+-  print namespace "msgidxof (int code)";
++  print pkg_namespace "msgidxof (int code)";
+   print "{";
+   print "  return (0 ? 0";
+ 
diff --git a/gnu/packages/patches/libmp4v2-c++11.patch b/gnu/packages/patches/libmp4v2-c++11.patch
new file mode 100644
index 0000000000..e12f89bd84
--- /dev/null
+++ b/gnu/packages/patches/libmp4v2-c++11.patch
@@ -0,0 +1,14 @@
+Avoid a type mismatch that shows up in C++11.
+Taken from <https://bugs.debian.org/853560>.
+
+--- a/src/rtphint.cpp	2012-05-20 16:11:53.000000000 -0600
++++ b/src/rtphint.cpp	2017-05-16 10:25:26.930705191 -0600
+@@ -339,7 +339,7 @@
+                 pSlash = strchr(pSlash, '/');
+                 if (pSlash != NULL) {
+                     pSlash++;
+-                    if (pSlash != '\0') {
++                    if (*pSlash != '\0') {
+                         length = (uint32_t)strlen(pRtpMap) - (pSlash - pRtpMap);
+                         *ppEncodingParams = (char *)MP4Calloc(length + 1);
+                         strncpy(*ppEncodingParams, pSlash, length);
diff --git a/gnu/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch b/gnu/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch
deleted file mode 100644
index 4133be7fc9..0000000000
--- a/gnu/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-This fixes a regression introduced in 1.8.0 where libssh2 fails to build
-with the gcrypt backend.
-
-Upstream bug URL:
-
-https://github.com/libssh2/libssh2/issues/150
-
-Patch copied from upstream source repository:
-
-https://github.com/libssh2/libssh2/commit/ced924b78a40126606797ef57a74066eb3b4b83f
-
-From ced924b78a40126606797ef57a74066eb3b4b83f Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <siarheit@google.com>
-Date: Mon, 31 Oct 2016 09:04:33 +0000
-Subject: [PATCH] acinclude.m4: fix ./configure --with-libgcrypt
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 734ef07..c78260c 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -412,9 +412,9 @@ AC_DEFUN([LIBSSH2_CHECKFOR_GCRYPT], [
- 
-   old_LDFLAGS=$LDFLAGS
-   old_CFLAGS=$CFLAGS
--  if test -n "$use_libgcrypt" && test "$use_libgcrypt" != "no"; then
--    LDFLAGS="$LDFLAGS -L$use_libgcrypt/lib"
--    CFLAGS="$CFLAGS -I$use_libgcrypt/include"
-+  if test -n "$with_libgcrypt_prefix" && test "$use_libgcrypt" != "no"; then
-+    LDFLAGS="$LDFLAGS -L$with_libgcrypt_prefix/lib"
-+    CFLAGS="$CFLAGS -I$with_libgcrypt_prefix/include"
-   fi
-   AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [
-     #include <gcrypt.h>
diff --git a/gnu/packages/patches/libxt-guix-search-paths.patch b/gnu/packages/patches/libxt-guix-search-paths.patch
index c618f48da5..5419edd1bd 100644
--- a/gnu/packages/patches/libxt-guix-search-paths.patch
+++ b/gnu/packages/patches/libxt-guix-search-paths.patch
@@ -1,26 +1,27 @@
---- libXt-1.1.5/src/Intrinsic.c	2015-05-01 07:36:20.000000000 +0200
-+++ Intrinsic.c	2016-12-12 00:42:16.567388450 +0100
-@@ -1303,21 +1303,101 @@
+diff --git a/src/Intrinsic.c b/src/Intrinsic.c
+index c9624ec..addcdba 100644
+--- a/src/Intrinsic.c
++++ b/src/Intrinsic.c
+@@ -1312,21 +1312,101 @@ static void FillInLangSubs(
      } else (void) strcpy(*rest, string);
  }
  
--/*
++
++
+ /*
 - * default path used if environment variable XFILESEARCHPATH
 - * is not defined.  Also substitued for %D.
 - * The exact value should be documented in the implementation
 - * notes for any Xt implementation.
-+
-+
-+/* 
 +   Return the default search path for the function
-+   XtResolvePathname to use if XFILESEARCHPATH is 
++   XtResolvePathname to use if XFILESEARCHPATH is
 +   not defined.
 +
 +   It returns the combination the set of values which are the 6 "stems" below,
-+   prepended with "/run/current-system/profile", and $GUIX_PROFILE and 
++   prepended with "/run/current-system/profile", and $GUIX_PROFILE and
 +   "$HOME/.guix-profile"
 +
-+   These values provide the default paths where Guix/GuixSD  can expect
++   These values provide the default paths where Guix/GuixSD can expect
 +   to find resources for installed packages.
   */
 -static const char *implementation_default_path(void)
@@ -28,11 +29,6 @@
  {
 -#if defined(WIN32)
 -    static char xfilesearchpath[] = "";
--
--    return xfilesearchpath;
--#else
--    return XFILESEARCHPATHDEFAULT;
--#endif
 +  static const char *search_path_default_stem[] = {
 +    "/lib/X11/%L/%T/%N%C%S",
 +    "/lib/X11/%l/%T/%N%C%S",
@@ -55,7 +51,7 @@
 +  char *home = getenv ("HOME");
 +  char *guix_profile = getenv ("GUIX_PROFILE");
 +
-+  size_t bytesAllocd = SIZEOF_STEMS + 1; 
++  size_t bytesAllocd = SIZEOF_STEMS + 1;
 +
 +  /* This function is evaluated multiple times and the calling
 +     code assumes that it is idempotent. So we must not allow
@@ -72,7 +68,11 @@
 +      bytesAllocd += SIZEOF_STEMS;
 +      bytesAllocd += 6 * (1 + strlen (guix_profile));
 +    }
-+
+ 
+-    return xfilesearchpath;
+-#else
+-    return XFILESEARCHPATHDEFAULT;
+-#endif
 +  if (home != NULL)
 +    {
 +      bytesAllocd += SIZEOF_STEMS;
@@ -83,7 +83,7 @@
 +  if (path == NULL) _XtAllocError(NULL);
 +
 +  memset (path, 0, bytesAllocd);
-+  
++
 +  for (i = 0 ; i < 6 ; ++i)
 +    {
 +      strcat (path, current_profile);
@@ -110,17 +110,17 @@
 +
 +  /* Remove final : */
 +  path[strlen(path) - 1] = '\0';
-+  
++
 +  return path;
  }
  
  
-@@ -1345,7 +1425,7 @@
+@@ -1354,7 +1434,7 @@ _XtString XtResolvePathname(
  {
      XtPerDisplay pd;
      static const char *defaultPath = NULL;
 -    const char *impl_default = implementation_default_path();
 +    const char *impl_default = guix_default_path();
-     int idef_len = strlen(impl_default);
+     int idef_len = (int) strlen(impl_default);
      char *massagedPath;
      int bytesAllocd, bytesLeft;
diff --git a/gnu/packages/patches/mescc-tools-boot.patch b/gnu/packages/patches/mescc-tools-boot.patch
new file mode 100644
index 0000000000..2bce8a49c2
--- /dev/null
+++ b/gnu/packages/patches/mescc-tools-boot.patch
@@ -0,0 +1,222 @@
+From c184e95096881a13f29ebd7fc507fe305d3d8de5 Mon Sep 17 00:00:00 2001
+From: Jan Nieuwenhuizen <janneke@gnu.org>
+Date: Thu, 4 Oct 2018 22:03:31 +0200
+Subject: [PATCH] build.sh: Update for mes 0.18.
+
+---
+ build.sh   | 92 +++++++++++++++++++++++++++++++++++++-----------------
+ install.sh |  6 ++--
+ 2 files changed, 66 insertions(+), 32 deletions(-)
+
+diff --git a/build.sh b/build.sh
+index 335a7bb..19a0029 100755
+--- a/build.sh
++++ b/build.sh
+@@ -18,7 +18,8 @@
+ # along with mescc-tools.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ set -eux
+-MES_SEED=${MES_SEED-../mescc-tools-seed/libs}
++MES_PREFIX=${MES_PREFIX-../mes}
++MES_SEED=${MES_SEED-../mes-seed}
+ MESCC_TOOLS_SEED=${MESCC_TOOLS_SEED-../mescc-tools-seed}
+ 
+ #########################################
+@@ -32,15 +33,23 @@ MESCC_TOOLS_SEED=${MESCC_TOOLS_SEED-../mescc-tools-seed}
+ # blood-elf
+ # Create proper debug segment
+ $MESCC_TOOLS_SEED/blood-elf\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/blood-elf.M1\
+     -o blood-elf-blood-elf-footer.M1
+ 
+ # Build
+ # M1-macro phase
+ $MESCC_TOOLS_SEED/M1 --LittleEndian --Architecture 1\
+-    -f $MES_SEED/x86.M1\
+-    -f $MES_SEED/crt1.M1\
+-    -f $MES_SEED/libc+tcc-mes.M1\
++    -f $MES_PREFIX/lib/x86-mes/x86.M1\
++    -f $MES_SEED/x86-mes/crt1.S\
++    -f $MES_SEED/x86-mes/libc+tcc.S\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/blood-elf.M1\
+     -f blood-elf-blood-elf-footer.M1\
+     -o blood-elf.hex2
+@@ -49,7 +58,7 @@ $MESCC_TOOLS_SEED/hex2\
+     --LittleEndian\
+     --Architecture 1\
+     --BaseAddress 0x1000000\
+-    -f $MES_SEED/elf32-header.hex2\
++    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
+     -f blood-elf.hex2\
+     --exec_enable\
+     -o bin/blood-elf
+@@ -65,9 +74,13 @@ $MESCC_TOOLS_SEED/hex2\
+ $MESCC_TOOLS_SEED/M1 \
+     --LittleEndian\
+     --Architecture 1\
+-    -f $MES_SEED/x86.M1\
+-    -f $MES_SEED/crt1.M1\
+-    -f $MES_SEED/libc+tcc-mes.M1\
++    -f $MES_PREFIX/lib/x86-mes/x86.M1\
++    -f $MES_SEED/x86-mes/crt1.S\
++    -f $MES_SEED/x86-mes/libc+tcc.S\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/M1.M1\
+     -f M1-footer.M1\
+     -o M1.hex2
+@@ -76,7 +89,7 @@ $MESCC_TOOLS_SEED/hex2 \
+     --LittleEndian\
+     --Architecture 1\
+     --BaseAddress 0x1000000\
+-    -f $MES_SEED/elf32-header.hex2\
++    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
+     -f M1.hex2\
+     --exec_enable\
+     -o bin/M1
+@@ -92,9 +105,13 @@ $MESCC_TOOLS_SEED/hex2 \
+ ./bin/M1 \
+     --LittleEndian\
+     --Architecture 1\
+-    -f $MES_SEED/x86.M1\
+-    -f $MES_SEED/crt1.M1\
+-    -f $MES_SEED/libc+tcc-mes.M1\
++    -f $MES_PREFIX/lib/x86-mes/x86.M1\
++    -f $MES_SEED/x86-mes/crt1.S\
++    -f $MES_SEED/x86-mes/libc+tcc.S\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/hex2.M1\
+     -f hex2-footer.M1\
+     -o hex2.hex2
+@@ -103,10 +120,10 @@ $MESCC_TOOLS_SEED/hex2 \
+       --LittleEndian\
+       --Architecture 1\
+       --BaseAddress 0x1000000\
+-      -f $MES_SEED/elf32-header.hex2\
++      -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
+       -f hex2.hex2\
+       --exec_enable\
+-      -o bin/hex2
++      -o bin/hex2-0
+ 
+ #########################
+ # Phase-1 Self-host     #
+@@ -123,18 +140,22 @@ $MESCC_TOOLS_SEED/hex2 \
+ ./bin/M1 \
+     --LittleEndian\
+     --Architecture 1\
+-    -f $MES_SEED/x86.M1\
+-    -f $MES_SEED/crt1.M1\
+-    -f $MES_SEED/libc+tcc-mes.M1\
++    -f $MES_PREFIX/lib/x86-mes/x86.M1\
++    -f $MES_SEED/x86-mes/crt1.S\
++    -f $MES_SEED/x86-mes/libc+tcc.S\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/blood-elf.M1\
+     -f blood-elf-blood-elf-footer.M1\
+     -o blood-elf.hex2
+ # Hex2-linker phase
+-./bin/hex2 \
++./bin/hex2-0 \
+     --LittleEndian\
+     --Architecture 1\
+     --BaseAddress 0x1000000\
+-    -f $MES_SEED/elf32-header.hex2\
++    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
+     -f blood-elf.hex2\
+     --exec_enable\
+     -o blood-elf
+@@ -150,18 +171,22 @@ $MESCC_TOOLS_SEED/hex2 \
+ ./bin/M1 \
+     --LittleEndian\
+     --Architecture 1\
+-    -f $MES_SEED/x86.M1\
+-    -f $MES_SEED/crt1.M1\
+-    -f $MES_SEED/libc+tcc-mes.M1\
++    -f $MES_PREFIX/lib/x86-mes/x86.M1\
++    -f $MES_SEED/x86-mes/crt1.S\
++    -f $MES_SEED/x86-mes/libc+tcc.S\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/M1.M1\
+     -f M1-footer.M1\
+     -o M1.hex2
+ # Hex2-linker phase
+-./bin/hex2 \
++./bin/hex2-0 \
+     --LittleEndian\
+     --Architecture 1\
+     --BaseAddress 0x1000000\
+-    -f $MES_SEED/elf32-header.hex2\
++    -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
+     -f M1.hex2\
+     --exec_enable\
+     -o bin/M1
+@@ -177,18 +202,27 @@ $MESCC_TOOLS_SEED/hex2 \
+ ./bin/M1 \
+     --LittleEndian\
+     --Architecture 1\
+-    -f $MES_SEED/x86.M1\
+-    -f $MES_SEED/crt1.M1\
+-    -f $MES_SEED/libc+tcc-mes.M1\
++    -f $MES_PREFIX/lib/x86-mes/x86.M1\
++    -f $MES_SEED/x86-mes/crt1.S\
++    -f $MES_SEED/x86-mes/libc+tcc.S\
++    -f $MESCC_TOOLS_SEED/file_print.M1\
++    -f $MESCC_TOOLS_SEED/match.M1\
++    -f $MESCC_TOOLS_SEED/numerate_number.M1\
++    -f $MESCC_TOOLS_SEED/string.M1\
+     -f $MESCC_TOOLS_SEED/hex2.M1\
+     -f hex2-footer.M1\
+     -o hex2.hex2
+ # Hex2-linker phase
+-./bin/hex2 \
++./bin/hex2-0 \
+       --LittleEndian\
+       --Architecture 1\
+       --BaseAddress 0x1000000\
+-      -f $MES_SEED/elf32-header.hex2\
++      -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\
+       -f hex2.hex2\
+       --exec_enable\
+       -o bin/hex2
++
++# TODO
++touch bin/exec_enable
++touch bin/get_machine
++touch bin/kaem
+diff --git a/install.sh b/install.sh
+index e4dccff..29e58d6 100644
+--- a/install.sh
++++ b/install.sh
+@@ -18,6 +18,6 @@
+ PREFIX=${PREFIX-usr}
+ 
+ mkdir -p "$PREFIX/bin"
+-cp blood-elf "$PREFIX/bin/blood-elf"
+-cp hex2 "$PREFIX/bin/hex2"
+-cp M1 "$PREFIX/bin/M1"
++cp bin/blood-elf "$PREFIX/bin/blood-elf"
++cp bin/hex2 "$PREFIX/bin/hex2"
++cp bin/M1 "$PREFIX/bin/M1"
+-- 
+2.18.0
+
diff --git a/gnu/packages/patches/perl-no-sys-dirs.patch b/gnu/packages/patches/perl-no-sys-dirs.patch
index 31d53e0353..2269d715c7 100644
--- a/gnu/packages/patches/perl-no-sys-dirs.patch
+++ b/gnu/packages/patches/perl-no-sys-dirs.patch
@@ -112,20 +112,29 @@ Only in perl-5.20.0/: Configure.orig
 diff -ru -x '*~' -x '*.rej' perl-5.20.0-orig/ext/Errno/Errno_pm.PL perl-5.20.0/ext/Errno/Errno_pm.PL
 --- perl-5.20.0-orig/ext/Errno/Errno_pm.PL	2014-05-26 15:34:20.000000000 +0200
 +++ perl-5.20.0/ext/Errno/Errno_pm.PL	2014-06-25 10:31:24.317970047 +0200
-@@ -126,11 +126,7 @@
+@@ -114,7 +114,7 @@ sub get_files {
+     # When cross-compiling we may store a path for gcc's "sysroot" option:
+     my $sysroot = $Config{sysroot} || '';
+     my $linux_errno_h;
+-    if ($^O eq 'linux') {
++    if (0) {
+ 	# Some Linuxes have weird errno.hs which generate
+ 	# no #file or #line directives
+ 	($linux_errno_h) = grep { -e $_ } map { "$_/errno.h" }
+@@ -134,13 +134,6 @@ sub get_files {
  	if ($dep =~ /(\S+errno\.h)/) {
  	     $file{$1} = 1;
  	}
 -    } elsif ($^O eq 'linux' &&
 -	      $Config{gccversion} ne '' && 
--	      $Config{gccversion} !~ /intel/i
+-	      $Config{gccversion} !~ /intel/i &&
 -	      # might be using, say, Intel's icc
+-	      $linux_errno_h
 -	     ) {
-+    } elsif (0) {
-     # When cross-compiling we may store a path for gcc's "sysroot" option:
-     my $sysroot = $Config{sysroot} || '';
- 	# Some Linuxes have weird errno.hs which generate
-Only in perl-5.20.0/ext/Errno: Errno_pm.PL.orig
+-	$file{$linux_errno_h} = 1;
+     } elsif ($^O eq 'haiku') {
+ 	# hidden in a special place
+ 	$file{'/boot/develop/headers/posix/errno.h'} = 1;
 diff -ru -x '*~' -x '*.rej' perl-5.20.0-orig/hints/freebsd.sh perl-5.20.0/hints/freebsd.sh
 --- perl-5.20.0-orig/hints/freebsd.sh	2014-01-31 22:55:51.000000000 +0100
 +++ perl-5.20.0/hints/freebsd.sh	2014-06-25 10:25:53.263964680 +0200
diff --git a/gnu/packages/patches/python-2.7-search-paths.patch b/gnu/packages/patches/python-2.7-search-paths.patch
index ba7235df27..a012bc8fe0 100644
--- a/gnu/packages/patches/python-2.7-search-paths.patch
+++ b/gnu/packages/patches/python-2.7-search-paths.patch
@@ -1,4 +1,4 @@
-Make sure the build system honors C_INCLUDE_PATH and LIBRARY_PATH when
+Make sure the build system honors CPATH and LIBRARY_PATH when
 looking for headers and libraries.
 
 --- Python-2.7.10/setup.py	2015-10-07 18:33:18.125153186 +0200
@@ -9,7 +9,7 @@ looking for headers and libraries.
  
 +        # Always honor these variables.
 +        lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
-+        inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
++        inc_dirs += os.getenv('CPATH', '').split(os.pathsep)
 +
          # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
          if host_platform in ['osf1', 'unixware7', 'openunix8']:
diff --git a/gnu/packages/patches/python-3-deterministic-build-info.patch b/gnu/packages/patches/python-3-deterministic-build-info.patch
index 22c372a0cf..25a079fe90 100644
--- a/gnu/packages/patches/python-3-deterministic-build-info.patch
+++ b/gnu/packages/patches/python-3-deterministic-build-info.patch
@@ -2,8 +2,8 @@ Always provide the same date and time in 'Py_GetBuildInfo'.
 This is the information shown at the REPL and in 'sys.version'.
 We cannot pass it in CPPFLAGS due to whitespace in the DATE string.
 
---- Modules/getbuildinfo.c
-+++ Modules/getbuildinfo.c
+--- a/Modules/getbuildinfo.c
++++ b/Modules/getbuildinfo.c
 @@ -4,6 +4,10 @@
  #include <stdio.h>
  #endif
diff --git a/gnu/packages/patches/python-3-fix-tests.patch b/gnu/packages/patches/python-3-fix-tests.patch
index ab713c54dd..e13790bd41 100644
--- a/gnu/packages/patches/python-3-fix-tests.patch
+++ b/gnu/packages/patches/python-3-fix-tests.patch
@@ -1,9 +1,134 @@
-Additional test fixes which affect Python 3.5 (and presumably later) but not
-prior revisions of Python.
+See the discussion about the issues fixed here at:
+http://bugs.python.org/issue20868 .
 
---- Lib/test/test_pathlib.py     2014-03-01 03:02:36.088311000 +0100
-+++ Lib/test/test_pathlib.py     2014-03-01 04:56:37.768311000 +0100
-@@ -2132,8 +2132,7 @@
+diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py
+--- a/Lib/ctypes/test/test_callbacks.py
++++ b/Lib/ctypes/test/test_callbacks.py
+@@ -3,6 +3,7 @@ import unittest
+ from ctypes import *
+ from ctypes.test import need_symbol
+ import _ctypes_test
++import platform
+ 
+ class Callbacks(unittest.TestCase):
+     functype = CFUNCTYPE
+@@ -176,6 +177,8 @@ class SampleCallbacksTestCase(unittest.TestCase):
+ 
+         self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
+ 
++    @unittest.skipIf(platform.machine() in ['mips64'],
++                     "This test fails on this platform")
+     def test_issue_8959_a(self):
+         from ctypes.util import find_library
+         libc_path = find_library("c")
+diff --git a/Lib/ctypes/test/test_libc.py b/Lib/ctypes/test/test_libc.py
+--- a/Lib/ctypes/test/test_libc.py
++++ b/Lib/ctypes/test/test_libc.py
+@@ -2,6 +2,7 @@ import unittest
+ 
+ from ctypes import *
+ import _ctypes_test
++import platform
+ 
+ lib = CDLL(_ctypes_test.__file__)
+ 
+@@ -17,6 +18,8 @@ class LibTest(unittest.TestCase):
+         import math
+         self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0))
+ 
++    @unittest.skipIf(platform.machine() in ['mips64'],
++                     "This test fails on this platform")
+     def test_qsort(self):
+         comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char))
+         lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc
+diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py
+--- a/Lib/distutils/tests/test_archive_util.py
++++ b/Lib/distutils/tests/test_archive_util.py
+@@ -333,6 +333,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
+         self.assertEqual(os.path.basename(res), 'archive.tar.xz')
+         self.assertEqual(self._tarinfo(res), self._created_files)
+ 
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+         # this works even if there's not gid/uid support
+@@ -362,6 +363,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
+ 
+     @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib")
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_tarfile_root_owner(self):
+         tmpdir =  self._create_files()
+         base_name = os.path.join(self.mkdtemp(), 'archive')
+diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
+--- a/Lib/distutils/tests/test_sdist.py
++++ b/Lib/distutils/tests/test_sdist.py
+@@ -443,6 +443,7 @@ class SDistTestCase(BasePyPIRCCommandTestCase):
+                      "The tar command is not found")
+     @unittest.skipIf(find_executable('gzip') is None,
+                      "The gzip command is not found")
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_distribution_owner_group(self):
+         # now building a sdist
+         dist, cmd = self.get_cmd()
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -1473,6 +1473,7 @@ class _TestCondition(BaseTestCase):
+         if pid is not None:
+             os.kill(pid, signal.SIGINT)
+ 
++    @unittest.skipIf(True, "This fails for unknown reasons on Guix")
+     def test_wait_result(self):
+         if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
+             pid = os.getpid()
+diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
+--- a/Lib/test/test_asyncio/test_base_events.py
++++ b/Lib/test/test_asyncio/test_base_events.py
+@@ -1323,6 +1323,8 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
+         self._test_create_connection_ip_addr(m_socket, False)
+ 
+     @patch_socket
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_create_connection_service_name(self, m_socket):
+         m_socket.getaddrinfo = socket.getaddrinfo
+         sock = m_socket.socket.return_value
+diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
+--- a/Lib/test/test_generators.py
++++ b/Lib/test/test_generators.py
+@@ -34,6 +34,7 @@ class SignalAndYieldFromTest(unittest.TestCase):
+         else:
+             return "FAILED"
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
+     def test_raise_and_yield_from(self):
+         gen = self.generator1()
+         gen.send(None)
+diff --git a/Lib/test/test_normalization.py b/Lib/test/test_normalization.py
+--- a/Lib/test/test_normalization.py
++++ b/Lib/test/test_normalization.py
+@@ -2,6 +2,7 @@ from test.support import open_urlresource
+ import unittest
+ 
+ from http.client import HTTPException
++from urllib.error import URLError
+ import sys
+ from unicodedata import normalize, unidata_version
+ 
+@@ -43,6 +44,8 @@ class NormalizationTest(unittest.TestCase):
+         except PermissionError:
+             self.skipTest(f"Permission error when downloading {TESTDATAURL} "
+                           f"into the test data directory")
++        except URLError:
++            self.skipTest("DNS lookups are not enabled.")
+         except (OSError, HTTPException):
+             self.fail(f"Could not retrieve {TESTDATAURL}")
+ 
+diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
+--- a/Lib/test/test_pathlib.py
++++ b/Lib/test/test_pathlib.py
+@@ -2134,8 +2134,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
          self.assertEqual(given, expect)
          self.assertEqual(set(p.rglob("FILEd*")), set())
  
@@ -13,47 +138,10 @@ prior revisions of Python.
      def test_expanduser(self):
          P = self.cls
          support.import_module('pwd')
---- Lib/test/test_tarfile.py        2016-02-24 19:22:52.597208055 +0000
-+++ Lib/test/test_tarfile.py     2016-02-24 20:50:48.941950135 +0000
-@@ -2305,11 +2305,14 @@
-     try:
-         import pwd, grp
-     except ImportError:
-         return False
--    if pwd.getpwuid(0)[0] != 'root':
--        return False
--    if grp.getgrgid(0)[0] != 'root':
-+    try:
-+        if pwd.getpwuid(0)[0] != 'root':
-+            return False
-+        if grp.getgrgid(0)[0] != 'root':
-+            return False
-+    except KeyError:
-         return False
-     return True
-
-
---- Lib/test/test_asyncio/test_base_events.py
-+++ Lib/test/test_asyncio/test_base_events.py
-@@ -1216,6 +1216,8 @@
-         self._test_create_connection_ip_addr(m_socket, False)
-
-     @patch_socket
-+    @unittest.skipUnless(support.is_resource_enabled('network'),
-+                         'network is not enabled')
-     def test_create_connection_service_name(self, m_socket):
-         m_socket.getaddrinfo = socket.getaddrinfo
-         sock = m_socket.socket.return_value
-
---- Lib/test/test_pdb.py.org    2017-03-12 03:09:01.991856701 +0100
-+++ Lib/test/test_pdb.py        2017-03-12 03:26:17.742572869 +0100
-
-For some reason, KeyboardInterrupts do not work in the build
-environment (lack of controlling TTY?). Just change the expected
-outcome. Unfortunately, this will make it fail for users running
-`python -m test test_pdb test_pdb` interactively.
-
-@@ -928,11 +928,11 @@
+diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
+--- a/Lib/test/test_pdb.py
++++ b/Lib/test/test_pdb.py
+@@ -1150,11 +1150,11 @@ def test_pdb_issue_20766():
      > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
      -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
      (Pdb) continue
@@ -65,22 +153,100 @@ outcome. Unfortunately, this will make it fail for users running
 -    pdb 2: <built-in function default_int_handler>
 +    pdb 2: Handlers.SIG_IGN
      """
-
- class PdbTestCase(unittest.TestCase):
---- Lib/test/test_socket.py
-+++ Lib/test/test_socket.py
-@@ -802,6 +802,8 @@
+ 
+ 
+diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py
+--- a/Lib/test/test_regrtest.py
++++ b/Lib/test/test_regrtest.py
+@@ -762,6 +762,7 @@ class ArgsTestCase(BaseTestCase):
+         output = self.run_tests('--fromfile', filename)
+         self.check_executed_tests(output, tests)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_interrupted(self):
+         code = TEST_INTERRUPTED
+         test = self.create_test('sigint', code=code)
+@@ -779,6 +780,7 @@ class ArgsTestCase(BaseTestCase):
+                  % (self.TESTNAME_REGEX, len(tests)))
+         self.check_line(output, regex)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_slowest_interrupted(self):
+         # Issue #25373: test --slowest with an interrupted test
+         code = TEST_INTERRUPTED
+diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
+--- a/Lib/test/test_resource.py
++++ b/Lib/test/test_resource.py
+@@ -145,6 +145,7 @@ class ResourceTest(unittest.TestCase):
+ 
+     @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
+     @support.requires_linux_version(2, 6, 36)
++    @unittest.skipIf(True, "Bug: the PermissionError is not raised")
+     def test_prlimit(self):
+         self.assertRaises(TypeError, resource.prlimit)
+         self.assertRaises(ProcessLookupError, resource.prlimit,
+diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
+--- a/Lib/test/test_shutil.py
++++ b/Lib/test/test_shutil.py
+@@ -1143,6 +1143,7 @@ class TestShutil(unittest.TestCase):
+         self.assertRaises(ValueError, make_archive, base_name, 'xxx')
+ 
+     @support.requires_zlib
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+         # this works even if there's not gid/uid support
+@@ -1171,6 +1172,7 @@ class TestShutil(unittest.TestCase):
+ 
+ 
+     @support.requires_zlib
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
+     def test_tarfile_root_owner(self):
+         root_dir, base_dir = self._create_files()
+diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
+--- a/Lib/test/test_socket.py
++++ b/Lib/test/test_socket.py
+@@ -875,6 +875,8 @@ class GeneralModuleTests(unittest.TestCase):
          if not fqhn in all_host_names:
              self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
  
 +    @unittest.skipUnless(support.is_resource_enabled('network'),
 +                         'network is not enabled')
      def test_host_resolution(self):
-         for addr in [support.HOST, '10.0.0.1', '255.255.255.255']:
+         for addr in [support.HOSTv4, '10.0.0.1', '255.255.255.255']:
              self.assertEqual(socket.gethostbyname(addr), addr)
---- Lib/test/test_spwd.py
-+++ Lib/test/test_spwd.py
-@@ -5,8 +5,7 @@
+@@ -1004,6 +1006,8 @@ class GeneralModuleTests(unittest.TestCase):
+             self.assertWarns(DeprecationWarning, socket.ntohs, k)
+             self.assertWarns(DeprecationWarning, socket.htons, k)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/services"),
++                         "getservbyname uses /etc/services, which is not in the chroot")
+     def testGetServBy(self):
+         eq = self.assertEqual
+         # Find one service that exists, then check all the related interfaces.
+@@ -1358,6 +1362,8 @@ class GeneralModuleTests(unittest.TestCase):
+             raise
+         self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     def testGetaddrinfo(self):
+         try:
+             socket.getaddrinfo('localhost', 80)
+@@ -1440,6 +1446,8 @@ class GeneralModuleTests(unittest.TestCase):
+         # only IP addresses are allowed
+         self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     @unittest.skipUnless(support.is_resource_enabled('network'),
+                          'network is not enabled')
+     def test_idna(self):
+diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py
+--- a/Lib/test/test_spwd.py
++++ b/Lib/test/test_spwd.py
+@@ -5,8 +5,7 @@ from test import support
  spwd = support.import_module('spwd')
  
  
@@ -90,7 +256,7 @@ outcome. Unfortunately, this will make it fail for users running
  class TestSpwdRoot(unittest.TestCase):
  
      def test_getspall(self):
-@@ -56,8 +55,7 @@
+@@ -56,8 +55,7 @@ class TestSpwdRoot(unittest.TestCase):
              self.assertRaises(TypeError, spwd.getspnam, bytes_name)
  
  
@@ -100,50 +266,54 @@ outcome. Unfortunately, this will make it fail for users running
  class TestSpwdNonRoot(unittest.TestCase):
  
      def test_getspnam_exception(self):
---- Lib/test/test_regrtest.py
-+++ Lib/test/test_regrtest.py
-@@ -700,6 +700,7 @@
-         output = self.run_tests('--fromfile', filename)
-         self.check_executed_tests(output, tests)
- 
-+    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
-     def test_interrupted(self):
-         code = TEST_INTERRUPTED
-         test = self.create_test('sigint', code=code)
-@@ -717,6 +718,7 @@
-                  % (self.TESTNAME_REGEX, len(tests)))
-         self.check_line(output, regex)
- 
-+    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
-     def test_slow_interrupted(self):
-         # Issue #25373: test --slowest with an interrupted test
-         code = TEST_INTERRUPTED
---- Lib/test/test_generators.py
-+++ Lib/test/test_generators.py
-@@ -29,6 +29,7 @@
-         else:
-             return "FAILED"
+diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
+--- a/Lib/test/test_tarfile.py
++++ b/Lib/test/test_tarfile.py
+@@ -2509,9 +2509,12 @@ def root_is_uid_gid_0():
+         import pwd, grp
+     except ImportError:
+         return False
+-    if pwd.getpwuid(0)[0] != 'root':
+-        return False
+-    if grp.getgrgid(0)[0] != 'root':
++    try:
++        if pwd.getpwuid(0)[0] != 'root':
++            return False
++        if grp.getgrgid(0)[0] != 'root':
++            return False
++    except KeyError:
+         return False
+     return True
  
-+    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
-     def test_raise_and_yield_from(self):
-         gen = self.generator1()
-         gen.send(None)
---- Lib/test/test_normalization.py
-+++ Lib/test/test_normalization.py
-@@ -2,6 +2,7 @@
- import unittest
+diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
+--- a/Lib/test/test_threading.py
++++ b/Lib/test/test_threading.py
+@@ -1249,6 +1249,7 @@ class MiscTestCase(unittest.TestCase):
  
- from http.client import HTTPException
-+from urllib.error import URLError
- import sys
- from unicodedata import normalize, unidata_version
  
-@@ -43,6 +44,8 @@
-         except PermissionError:
-             self.skipTest(f"Permission error when downloading {TESTDATAURL} "
-                           f"into the test data directory")
-+        except URLError:
-+            self.skipTest("DNS lookups are not enabled.")
-         except (OSError, HTTPException):
-             self.fail(f"Could not retrieve {TESTDATAURL}")
+ class InterruptMainTests(unittest.TestCase):
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_subthread(self):
+         # Calling start_new_thread with a function that executes interrupt_main
+         # should raise KeyboardInterrupt upon completion.
+@@ -1260,6 +1261,8 @@ class InterruptMainTests(unittest.TestCase):
+             t.join()
+         t.join()
  
++
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_mainthread(self):
+         # Make sure that if interrupt_main is called in main thread that
+         # KeyboardInterrupt is raised instantly.
+diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py
+--- a/Tools/scripts/run_tests.py
++++ b/Tools/scripts/run_tests.py
+@@ -39,7 +39,7 @@ def main(regrtest_args):
+     if not any(is_multiprocess_flag(arg) for arg in regrtest_args):
+         args.extend(['-j', '0'])  # Use all CPU cores
+     if not any(is_resource_use_flag(arg) for arg in regrtest_args):
+-        args.extend(['-u', 'all,-largefile,-audio,-gui'])
++        args.extend(['-u', 'all,-largefile,-audio,-gui,-network'])
+     args.extend(regrtest_args)
+     print(' '.join(args))
+     if sys.platform == 'win32':
diff --git a/gnu/packages/patches/python-3-search-paths.patch b/gnu/packages/patches/python-3-search-paths.patch
index 73e3f4ccf5..5fea9c66b6 100644
--- a/gnu/packages/patches/python-3-search-paths.patch
+++ b/gnu/packages/patches/python-3-search-paths.patch
@@ -1,8 +1,8 @@
-Make sure the build system honors C_INCLUDE_PATH and LIBRARY_PATH when
+Make sure the build system honors CPATH and LIBRARY_PATH when
 looking for headers and libraries.
 
---- setup.py	2015-10-07 23:32:58.891329173 +0200
-+++ setup.py	2015-10-07 23:46:29.653349924 +0200
+--- a/setup.py	2015-10-07 23:32:58.891329173 +0200
++++ b/setup.py	2015-10-07 23:46:29.653349924 +0200
 @@ -575,8 +575,8 @@
          # if a file is found in one of those directories, it can
          # be assumed that no additional -I,-L directives are needed.
@@ -10,7 +10,7 @@ looking for headers and libraries.
 -            lib_dirs = self.compiler.library_dirs + system_lib_dirs
 -            inc_dirs = self.compiler.include_dirs + system_include_dirs
 +            lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep)
-+            inc_dirs = os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
++            inc_dirs = os.getenv('CPATH', '').split(os.pathsep)
          else:
              # Add the sysroot paths. 'sysroot' is a compiler option used to
              # set the logical path of the standard system headers and
diff --git a/gnu/packages/patches/python-fix-tests.patch b/gnu/packages/patches/python-fix-tests.patch
deleted file mode 100644
index d8f69866fd..0000000000
--- a/gnu/packages/patches/python-fix-tests.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-See the discussion about the issues fixed here at:
-http://bugs.python.org/issue20868 .
-
---- Lib/test/test_shutil.py     2014-03-01 03:02:36.088311000 +0100
-+++ Lib/test/test_shutil.py     2014-03-01 04:56:37.768311000 +0100
-@@ -1127,6 +1127,7 @@
-         self.assertRaises(ValueError, make_archive, base_name, 'xxx')
-
-     @support.requires_zlib
-+    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
-     def test_make_archive_owner_group(self):
-         # testing make_archive with owner and group, with various combinations
-         # this works even if there's not gid/uid support
-@@ -1155,6 +1156,7 @@
-
-
-     @support.requires_zlib
-+    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
-     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
-     def test_tarfile_root_owner(self):
-         root_dir, base_dir = self._create_files()
---- Lib/test/test_socket.py.orig	2014-03-02 22:14:12.264311000 +0100
-+++ Lib/test/test_socket.py	2014-03-21 03:50:45.660311000 +0100
-@@ -819,6 +819,8 @@
-             self.assertRaises(OverflowError, socket.htonl, k)
-             self.assertRaises(OverflowError, socket.htons, k)
- 
-+    @unittest.skipUnless(os.path.exists("/etc/services"),
-+                         "getservbyname uses /etc/services, which is not in the chroot")
-     def testGetServBy(self):
-         eq = self.assertEqual
-         # Find one service that exists, then check all the related interfaces.
-@@ -1104,6 +1106,8 @@
-         self.assertRaises(ValueError, s.ioctl, -1, None)
-         s.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 100, 100))
- 
-+    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
-+                         "getaddrinfo() will fail")
-     def testGetaddrinfo(self):
-         try:
-             socket.getaddrinfo('localhost', 80)
-@@ -1174,6 +1178,8 @@
-         # only IP addresses are allowed
-         self.assertRaises(socket.error, socket.getnameinfo, ('mail.python.org',0), 0)
- 
-+    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
-+                         "getaddrinfo() will fail")
-     @unittest.skipUnless(support.is_resource_enabled('network'),
-                          'network is not enabled')
-     def test_idna(self):
---- Lib/test/_test_multiprocessing.py	2014-04-06 23:12:27.575235000 +0200
-+++ Lib/test/_test_multiprocessing.py	2014-04-06 23:13:04.827235000 +0200
-@@ -1016,6 +1016,7 @@
-         if pid is not None:
-             os.kill(pid, signal.SIGINT)
- 
-+    @unittest.skipIf(True, "This fails for unknown reasons on Guix")
-     def test_wait_result(self):
-         if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
-             pid = os.getpid()
---- Lib/ctypes/test/test_libc.py	2014-04-07 23:17:41.351235000 +0200
-+++ Lib/ctypes/test/test_libc.py	2014-04-07 23:32:18.799235000 +0200
-@@ -2,6 +2,7 @@
- 
- from ctypes import *
- import _ctypes_test
-+import platform
- 
- lib = CDLL(_ctypes_test.__file__)
- 
-@@ -17,6 +18,8 @@
-         import math
-         self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0))
- 
-+    @unittest.skipIf(platform.machine() in ['mips64'],
-+                     "This test fails on this platform")
-     def test_qsort(self):
-         comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char))
-         lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc
---- Lib/ctypes/test/test_callbacks.py	2014-04-07 23:15:42.835235000 +0200
-+++ Lib/ctypes/test/test_callbacks.py	2014-04-07 23:32:42.035235000 +0200
-@@ -1,6 +1,7 @@
- import unittest
- from ctypes import *
- import _ctypes_test
-+import platform
- 
- class Callbacks(unittest.TestCase):
-     functype = CFUNCTYPE
-@@ -174,6 +175,8 @@
- 
-         self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
- 
-+    @unittest.skipIf(platform.machine() in ['mips64'],
-+                     "This test fails on this platform")
-     def test_issue_8959_a(self):
-         from ctypes.util import find_library
-         libc_path = find_library("c")
---- Tools/scripts/run_tests.py.orig	2015-04-06 03:52:17.484000000 +0200
-+++ Tools/scripts/run_tests.py	2015-04-06 03:52:25.880000000 +0200
-@@ -47,7 +47,7 @@
-     if threading and not any(is_multiprocess_flag(arg) for arg in regrtest_args):
-         args.extend(['-j', '0'])  # Use all CPU cores
-     if not any(is_resource_use_flag(arg) for arg in regrtest_args):
--        args.extend(['-u', 'all,-largefile,-audio,-gui'])
-+        args.extend(['-u', 'all,-largefile,-audio,-gui,-network'])
-     args.extend(regrtest_args)
-     print(' '.join(args))
-     os.execv(sys.executable, args)
---- Lib/distutils/tests/test_archive_util.py.orig	2015-04-06 04:08:49.288000000 +0200
-+++ Lib/distutils/tests/test_archive_util.py	2015-04-06 04:09:34.396000000 +0200
-@@ -282,6 +282,7 @@
-         finally:
-             del ARCHIVE_FORMATS['xxx']
-
-+    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
-     def test_make_archive_owner_group(self):
-         # testing make_archive with owner and group, with various combinations
-         # this works even if there's not gid/uid support
-@@ -310,6 +311,7 @@
-
-     @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib")
-     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
-+    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
-     def test_tarfile_root_owner(self):
-         tmpdir, tmpdir2, base_name =  self._create_files()
-         old_dir = os.getcwd()
---- Lib/distutils/tests/test_sdist.py.orig	2015-04-06 04:10:05.264000000 +0200
-+++ Lib/distutils/tests/test_sdist.py	2015-04-06 04:10:21.448000000 +0200
-@@ -435,6 +435,7 @@
-                      "The tar command is not found")
-     @unittest.skipIf(find_executable('gzip') is None,
-                      "The gzip command is not found")
-+    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
-     def test_make_distribution_owner_group(self):
-         # now building a sdist
-         dist, cmd = self.get_cmd()
---- Lib/test/test_resource.py.orig	2015-04-06 21:30:24.708000000 +0200
-+++ Lib/test/test_resource.py	2015-04-06 23:07:27.220000000 +0200
-@@ -146,6 +146,7 @@
-
-     @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
-     @support.requires_linux_version(2, 6, 36)
-+    @unittest.skipIf(True, "Bug: the PermissionError is not raised")
-     def test_prlimit(self):
-         self.assertRaises(TypeError, resource.prlimit)
-         if os.geteuid() != 0:
diff --git a/gnu/packages/patches/python-keras-integration-test.patch b/gnu/packages/patches/python-keras-integration-test.patch
new file mode 100644
index 0000000000..aa2b1a273d
--- /dev/null
+++ b/gnu/packages/patches/python-keras-integration-test.patch
@@ -0,0 +1,19 @@
+Fix a test failure with recent versions of ... Pytest?  Python?
+
+Taken from upstream:
+https://github.com/keras-team/keras/commit/fe35050a8f18dc52304aa8da4e463eececa25240
+
+diff --git a/tests/integration_tests/applications_test.py b/tests/integration_tests/applications_test.py
+index 979f2f2abd6..6e3b57fa8e2 100644
+--- a/tests/integration_tests/applications_test.py
++++ b/tests/integration_tests/applications_test.py
+@@ -58,7 +58,8 @@ def _test_application_basic(app, last_dim=1000):
+ def _test_application_notop(app, last_dim):
+     output_shape = _get_output_shape(
+         lambda: app(weights=None, include_top=False))
+-    assert output_shape == (None, None, None, last_dim)
++    assert len(output_shape) == 4
++    assert output_shape[-1] == last_dim
+ 
+ 
+ def test_mobilenet_v2_legacy_import():
diff --git a/gnu/packages/patches/python-libxml2-utf8.patch b/gnu/packages/patches/python-libxml2-utf8.patch
new file mode 100644
index 0000000000..e39672faa1
--- /dev/null
+++ b/gnu/packages/patches/python-libxml2-utf8.patch
@@ -0,0 +1,40 @@
+This patch fixes a crash in the libxml2 bindings for Python 3.x
+that 'itstool' stumbles upon when processing UTF-8 data:
+
+  https://issues.guix.gnu.org/issue/37468
+
+Patch by Jan Matejek
+from <https://bugzilla.opensuse.org/show_bug.cgi?id=1065270>.
+
+--- libxml2-2.9.5.orig/python/libxml.c
++++ libxml2-2.9.5/python/libxml.c
+@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
+     PyObject *message;
+     PyObject *result;
+     char str[1000];
++    unsigned char *ptr = (unsigned char *)str;
+ 
+ #ifdef DEBUG_ERROR
+     printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg);
+@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
+ 	    str[999] = 0;
+         va_end(ap);
+ 
++#if PY_MAJOR_VERSION >= 3
++        /* Ensure the error string doesn't start at UTF8 continuation. */
++        while (*ptr && (*ptr & 0xc0) == 0x80)
++            ptr++;
++#endif
++
+         list = PyTuple_New(2);
+         PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt);
+         Py_XINCREF(libxml_xmlPythonErrorFuncCtxt);
+-        message = libxml_charPtrConstWrap(str);
++        message = libxml_charPtrConstWrap(ptr);
+         PyTuple_SetItem(list, 1, message);
+         result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list);
++        /* Forget any errors caused in the error handler. */
++        PyErr_Clear();
+         Py_XDECREF(list);
+         Py_XDECREF(result);
+     }
diff --git a/gnu/packages/patches/python-pep8-stdlib-tokenize-compat.patch b/gnu/packages/patches/python-pep8-stdlib-tokenize-compat.patch
new file mode 100644
index 0000000000..f11d8f7be8
--- /dev/null
+++ b/gnu/packages/patches/python-pep8-stdlib-tokenize-compat.patch
@@ -0,0 +1,35 @@
+From 397463014fda3cdefe8d6c9d117ae16d878dc494 Mon Sep 17 00:00:00 2001
+From: Michael Hudson-Doyle <michael.hudson@canonical.com>
+Date: Tue, 25 Sep 2018 14:58:57 +1200
+Subject: [PATCH] Keep compability with stdlib tokenize.py changes
+
+https://github.com/python/cpython/commit/c4ef4896eac86a6759901c8546e26de4695a1389
+is not yet part of any release of Python but has been backported to all
+versions in Git (includeing 2.7!). It causes the tokenize.py module to
+emit a synthetic NEWLINE token for files that do not in fact end with a
+newline, which confuses pycodestyle's checks for blank lines at the end
+of a file. Fortunately the synthetic NEWLINE tokens are easy to detect
+(the token text is "").
+
+Fixes #786
+---
+ pycodestyle.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pycodestyle.py b/pycodestyle.py
+index 0d725d27..fbc3dca3 100755
+--- a/pep8.py
++++ b/pep8.py
+@@ -258,10 +258,10 @@ def trailing_blank_lines(physical_line, lines, line_number, total_lines):
+     """
+     if line_number == total_lines:
+         stripped_last_line = physical_line.rstrip()
+-        if not stripped_last_line:
++        if physical_line and not stripped_last_line:
+             return 0, "W391 blank line at end of file"
+         if stripped_last_line == physical_line:
+-            return len(physical_line), "W292 no newline at end of file"
++            return len(lines[-1]), "W292 no newline at end of file"
+ 
+ 
+ @register_check
diff --git a/gnu/packages/patches/python2-CVE-2018-1000802.patch b/gnu/packages/patches/python2-CVE-2018-1000802.patch
deleted file mode 100644
index 0d5bc77c84..0000000000
--- a/gnu/packages/patches/python2-CVE-2018-1000802.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Fix CVE-2018-1000802:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000802
-
-Taken from upstream commit (sans NEWS):
-https://github.com/python/cpython/commit/d8b103b8b3ef9644805341216963a64098642435
-
-diff --git a/Lib/shutil.py b/Lib/shutil.py
-index 3462f7c5e9..0ab1a06f52 100644
---- a/Lib/shutil.py
-+++ b/Lib/shutil.py
-@@ -413,17 +413,21 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0,
- 
-     return archive_name
- 
--def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False):
-+def _call_external_zip(base_dir, zip_filename, verbose, dry_run, logger):
-     # XXX see if we want to keep an external call here
-     if verbose:
-         zipoptions = "-r"
-     else:
-         zipoptions = "-rq"
--    from distutils.errors import DistutilsExecError
--    from distutils.spawn import spawn
-+    cmd = ["zip", zipoptions, zip_filename, base_dir]
-+    if logger is not None:
-+        logger.info(' '.join(cmd))
-+    if dry_run:
-+        return
-+    import subprocess
-     try:
--        spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run)
--    except DistutilsExecError:
-+        subprocess.check_call(cmd)
-+    except subprocess.CalledProcessError:
-         # XXX really should distinguish between "couldn't find
-         # external 'zip' command" and "zip failed".
-         raise ExecError, \
-@@ -458,7 +462,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
-         zipfile = None
- 
-     if zipfile is None:
--        _call_external_zip(base_dir, zip_filename, verbose, dry_run)
-+        _call_external_zip(base_dir, zip_filename, verbose, dry_run, logger)
-     else:
-         if logger is not None:
-             logger.info("creating '%s' and adding '%s' to it",
diff --git a/gnu/packages/patches/python2-CVE-2018-14647.patch b/gnu/packages/patches/python2-CVE-2018-14647.patch
deleted file mode 100644
index 6226b06aca..0000000000
--- a/gnu/packages/patches/python2-CVE-2018-14647.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Fix CVE-2018-14647:
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14647
-https://bugs.python.org/issue34623
-
-Taken from upstream:
-https://github.com/python/cpython/commit/18b20bad75b4ff0486940fba4ec680e96e70f3a2
-
-diff --git a/Include/pyexpat.h b/Include/pyexpat.h
-index 5340ef5fa3..3fc5fa54da 100644
---- a/Include/pyexpat.h
-+++ b/Include/pyexpat.h
-@@ -3,7 +3,7 @@
- 
- /* note: you must import expat.h before importing this module! */
- 
--#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.0"
-+#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.1"
- #define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI"
- 
- struct PyExpat_CAPI 
-@@ -43,6 +43,8 @@ struct PyExpat_CAPI
-         XML_Parser parser, XML_UnknownEncodingHandler handler,
-         void *encodingHandlerData);
-     void (*SetUserData)(XML_Parser parser, void *userData);
-+    /* might be none for expat < 2.1.0 */
-+    int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt);
-     /* always add new stuff to the end! */
- };
- 
-diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
-index f7f992dd3a..b38e0ab329 100644
---- a/Modules/_elementtree.c
-+++ b/Modules/_elementtree.c
-@@ -2574,6 +2574,11 @@ xmlparser(PyObject* self_, PyObject* args, PyObject* kw)
-         PyErr_NoMemory();
-         return NULL;
-     }
-+    /* expat < 2.1.0 has no XML_SetHashSalt() */
-+    if (EXPAT(SetHashSalt) != NULL) {
-+        EXPAT(SetHashSalt)(self->parser,
-+                           (unsigned long)_Py_HashSecret.prefix);
-+    }
- 
-     ALLOC(sizeof(XMLParserObject), "create expatparser");
- 
-diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
-index 2b4d31293c..1f8c0d70a5 100644
---- a/Modules/pyexpat.c
-+++ b/Modules/pyexpat.c
-@@ -2042,6 +2042,11 @@ MODULE_INITFUNC(void)
-     capi.SetProcessingInstructionHandler = XML_SetProcessingInstructionHandler;
-     capi.SetUnknownEncodingHandler = XML_SetUnknownEncodingHandler;
-     capi.SetUserData = XML_SetUserData;
-+#if XML_COMBINED_VERSION >= 20100
-+    capi.SetHashSalt = XML_SetHashSalt;
-+#else
-+    capi.SetHashSalt = NULL;
-+#endif
- 
-     /* export using capsule */
-     capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
diff --git a/gnu/packages/patches/qemu-CVE-2018-16872.patch b/gnu/packages/patches/qemu-CVE-2018-16872.patch
deleted file mode 100644
index 094e823ee4..0000000000
--- a/gnu/packages/patches/qemu-CVE-2018-16872.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-Fixes CVE-2018-16872:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16872
-
-Patch copied from upstream source repository:
-
-https://git.qemu.org/?p=qemu.git;a=commitdiff;h=bab9df35ce73d1c8e19a37e2737717ea1c984dc1
-
-From bab9df35ce73d1c8e19a37e2737717ea1c984dc1 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Thu, 13 Dec 2018 13:25:11 +0100
-Subject: [PATCH] usb-mtp: use O_NOFOLLOW and O_CLOEXEC.
-
-Open files and directories with O_NOFOLLOW to avoid symlinks attacks.
-While being at it also add O_CLOEXEC.
-
-usb-mtp only handles regular files and directories and ignores
-everything else, so users should not see a difference.
-
-Because qemu ignores symlinks, carrying out a successful symlink attack
-requires swapping an existing file or directory below rootdir for a
-symlink and winning the race against the inotify notification to qemu.
-
-Fixes: CVE-2018-16872
-Cc: Prasad J Pandit <ppandit@redhat.com>
-Cc: Bandan Das <bsd@redhat.com>
-Reported-by: Michael Hanselmann <public@hansmi.ch>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-Reviewed-by: Michael Hanselmann <public@hansmi.ch>
-Message-id: 20181213122511.13853-1-kraxel@redhat.com
----
- hw/usb/dev-mtp.c | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
-index 100b7171f4..36c43b8c20 100644
---- a/hw/usb/dev-mtp.c
-+++ b/hw/usb/dev-mtp.c
-@@ -653,13 +653,18 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)
- {
-     struct dirent *entry;
-     DIR *dir;
-+    int fd;
- 
-     if (o->have_children) {
-         return;
-     }
-     o->have_children = true;
- 
--    dir = opendir(o->path);
-+    fd = open(o->path, O_DIRECTORY | O_CLOEXEC | O_NOFOLLOW);
-+    if (fd < 0) {
-+        return;
-+    }
-+    dir = fdopendir(fd);
-     if (!dir) {
-         return;
-     }
-@@ -1007,7 +1012,7 @@ static MTPData *usb_mtp_get_object(MTPState *s, MTPControl *c,
- 
-     trace_usb_mtp_op_get_object(s->dev.addr, o->handle, o->path);
- 
--    d->fd = open(o->path, O_RDONLY);
-+    d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW);
-     if (d->fd == -1) {
-         usb_mtp_data_free(d);
-         return NULL;
-@@ -1031,7 +1036,7 @@ static MTPData *usb_mtp_get_partial_object(MTPState *s, MTPControl *c,
-                                         c->argv[1], c->argv[2]);
- 
-     d = usb_mtp_data_alloc(c);
--    d->fd = open(o->path, O_RDONLY);
-+    d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW);
-     if (d->fd == -1) {
-         usb_mtp_data_free(d);
-         return NULL;
-@@ -1658,7 +1663,7 @@ static void usb_mtp_write_data(MTPState *s)
-                                  0, 0, 0, 0);
-             goto done;
-         }
--        d->fd = open(path, O_CREAT | O_WRONLY, mask);
-+        d->fd = open(path, O_CREAT | O_WRONLY | O_CLOEXEC | O_NOFOLLOW, mask);
-         if (d->fd == -1) {
-             usb_mtp_queue_result(s, RES_STORE_FULL, d->trans,
-                                  0, 0, 0, 0);
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/qemu-CVE-2019-6778.patch b/gnu/packages/patches/qemu-CVE-2019-6778.patch
deleted file mode 100644
index 315f2922da..0000000000
--- a/gnu/packages/patches/qemu-CVE-2019-6778.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Fixes CVE-2019-6778:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6778
-
-Patch copied from upstream source repository:
-
-https://git.qemu.org/?p=qemu.git;a=commitdiff;h=a7104eda7dab99d0cdbd3595c211864cba415905
-
-From a7104eda7dab99d0cdbd3595c211864cba415905 Mon Sep 17 00:00:00 2001
-From: Prasad J Pandit <pjp@fedoraproject.org>
-Date: Sun, 13 Jan 2019 23:29:48 +0530
-Subject: [PATCH] slirp: check data length while emulating ident function
-
-While emulating identification protocol, tcp_emu() does not check
-available space in the 'sc_rcv->sb_data' buffer. It could lead to
-heap buffer overflow issue. Add check to avoid it.
-
-Reported-by: Kira <864786842@qq.com>
-Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
-Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
----
- slirp/tcp_subr.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
-index 4a9a5b5edc..23a841f26e 100644
---- a/slirp/tcp_subr.c
-+++ b/slirp/tcp_subr.c
-@@ -634,6 +634,11 @@ tcp_emu(struct socket *so, struct mbuf *m)
- 			socklen_t addrlen = sizeof(struct sockaddr_in);
- 			struct sbuf *so_rcv = &so->so_rcv;
- 
-+			if (m->m_len > so_rcv->sb_datalen
-+					- (so_rcv->sb_wptr - so_rcv->sb_data)) {
-+			    return 1;
-+			}
-+
- 			memcpy(so_rcv->sb_wptr, m->m_data, m->m_len);
- 			so_rcv->sb_wptr += m->m_len;
- 			so_rcv->sb_rptr += m->m_len;
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/rapidjson-gcc-compat.patch b/gnu/packages/patches/rapidjson-gcc-compat.patch
new file mode 100644
index 0000000000..b5ffc0a908
--- /dev/null
+++ b/gnu/packages/patches/rapidjson-gcc-compat.patch
@@ -0,0 +1,18 @@
+Disable -Werror=implicit-fallthrough on GCC7 and later.  Taken from upstream:
+https://github.com/Tencent/rapidjson/commit/fe19b7b6016d446722621fb407738209d1a911e8
+https://github.com/Tencent/rapidjson/commit/cba45fe9de6923b858edb0780e257b7257aa4f7b
+
+diff --git a/include/rapidjson/internal/regex.h b/include/rapidjson/internal/regex.h
+index 422a5240..d4039716 100644
+--- a/include/rapidjson/internal/regex.h
++++ b/include/rapidjson/internal/regex.h
+@@ -29,6 +29,9 @@ RAPIDJSON_DIAG_OFF(implicit-fallthrough)
+ #ifdef __GNUC__
+ RAPIDJSON_DIAG_PUSH
+ RAPIDJSON_DIAG_OFF(effc++)
++#if __GNUC__ >= 7
++RAPIDJSON_DIAG_OFF(implicit-fallthrough)
++#endif
+ #endif
+ 
+ #ifdef _MSC_VER
diff --git a/gnu/packages/patches/sssd-curl-compat.patch b/gnu/packages/patches/sssd-curl-compat.patch
deleted file mode 100644
index ecab737153..0000000000
--- a/gnu/packages/patches/sssd-curl-compat.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Fix build with curl >= 7.62.  Patch taken from upstream:
-
-https://pagure.io/SSSD/sssd/c/4d3841ca379afc01184453ba45ab3e75ffec60da?branch=sssd-1-16
-
-diff --git a/src/util/tev_curl.c b/src/util/tev_curl.c
-index 6a7a580..d70a429 100644
---- a/src/util/tev_curl.c
-+++ b/src/util/tev_curl.c
-@@ -97,7 +97,9 @@ static errno_t curl_code2errno(CURLcode crv)
-         return ETIMEDOUT;
-     case CURLE_SSL_ISSUER_ERROR:
-     case CURLE_SSL_CACERT_BADFILE:
-+#if LIBCURL_VERSION_NUM < 0x073e00
-     case CURLE_SSL_CACERT:
-+#endif
-     case CURLE_SSL_CERTPROBLEM:
-         return ERR_INVALID_CERT;
- 
diff --git a/gnu/packages/patches/supercollider-boost-1.70-build-fix.patch b/gnu/packages/patches/supercollider-boost-1.70-build-fix.patch
new file mode 100644
index 0000000000..073044fccb
--- /dev/null
+++ b/gnu/packages/patches/supercollider-boost-1.70-build-fix.patch
@@ -0,0 +1,28 @@
+Patches taken from https://gitweb.gentoo.org/repo/gentoo.git/tree/media-sound/supercollider/files/supercollider-3.10.2-boost-1.70.patch?id=a420618dc766bba0654dbe0ef67008fdc5e901c6 to fix supercollider build with boost 1.70.
+
+diff --git a/server/supernova/sc/sc_osc_handler.cpp b/server/supernova/sc/sc_osc_handler.cpp
+index 5116a1be87..96e937ec25 100644
+--- a/server/supernova/sc/sc_osc_handler.cpp
++++ b/server/supernova/sc/sc_osc_handler.cpp
+@@ -728,7 +728,8 @@ void sc_osc_handler::tcp_connection::handle_message() {
+ 
+ 
+ void sc_osc_handler::start_tcp_accept(void) {
+-    tcp_connection::pointer new_connection = tcp_connection::create(tcp_acceptor_.get_io_service());
++    tcp_connection::pointer new_connection =
++        tcp_connection::create((boost::asio::io_context&)tcp_acceptor_.get_executor().context());
+ 
+     tcp_acceptor_.async_accept(
+         new_connection->socket(),
+diff --git a/server/supernova/utilities/utils.hpp b/server/supernova/utilities/utils.hpp
+index 35b8ab5ad..a7c191f2d 100644
+--- a/server/supernova/utilities/utils.hpp
++++ b/server/supernova/utilities/utils.hpp
+@@ -23,6 +23,7 @@
+ 
+ #include <type_traits>
+ 
++#include <boost/checked_delete.hpp>
+ #include <boost/intrusive_ptr.hpp>
+ #include <boost/noncopyable.hpp>
+ #include <boost/detail/atomic_count.hpp>
diff --git a/gnu/packages/patches/supertux-fix-build-with-gcc5.patch b/gnu/packages/patches/supertux-fix-build-with-gcc5.patch
deleted file mode 100644
index 6393215ca1..0000000000
--- a/gnu/packages/patches/supertux-fix-build-with-gcc5.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Taken from https://github.com/SuperTux/supertux/commit/a75317ef0a94847d9b6a7833b9c6652ef29edde3.
-This patch fixes building with gcc versions earlier than 6.
-
-From a75317ef0a94847d9b6a7833b9c6652ef29edde3 Mon Sep 17 00:00:00 2001
-From: Ingo Ruhnke <grumbel@gmail.com>
-Date: Fri, 28 Dec 2018 22:45:35 +0100
-Subject: [PATCH] Add workaround for backwards compatibilty with gcc5
-
-Fixes #1014
----
- src/video/gl/gl_painter.cpp | 11 ++++++-----
- src/video/ttf_surface.cpp   | 16 +++++++++-------
- 2 files changed, 15 insertions(+), 12 deletions(-)
-
-diff --git a/src/video/gl/gl_painter.cpp b/src/video/gl/gl_painter.cpp
-index 5e0d1e7b1e..32fb7a09b6 100644
---- a/src/video/gl/gl_painter.cpp
-+++ b/src/video/gl/gl_painter.cpp
-@@ -37,12 +37,13 @@ namespace {
- 
- inline std::tuple<GLenum, GLenum> blend_factor(Blend blend)
- {
-+  using B = std::tuple<GLenum, GLenum>;
-   switch(blend) {
--    case Blend::NONE: return {GL_ONE, GL_ZERO};
--    case Blend::BLEND: return {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
--    case Blend::ADD: return {GL_SRC_ALPHA, GL_ONE};
--    case Blend::MOD: return {GL_DST_COLOR, GL_ZERO};
--    default: return {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
-+    case Blend::NONE: return B(GL_ONE, GL_ZERO);
-+    case Blend::BLEND: return B(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-+    case Blend::ADD: return B(GL_SRC_ALPHA, GL_ONE);
-+    case Blend::MOD: return B(GL_DST_COLOR, GL_ZERO);
-+    default: return B(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-   }
- }
- 
-diff --git a/src/video/ttf_surface.cpp b/src/video/ttf_surface.cpp
-index 7c9505004f..b41d67b2c8 100644
---- a/src/video/ttf_surface.cpp
-+++ b/src/video/ttf_surface.cpp
-@@ -55,12 +55,13 @@ TTFSurface::create(const TTFFont& font, const std::string& text)
-     SDL_SetSurfaceColorMod(text_surface.get(), 0, 0, 0);
-     SDL_SetSurfaceBlendMode(text_surface.get(), SDL_BLENDMODE_BLEND);
- 
-+    using P = std::tuple<int, int>;
-     const std::initializer_list<std::tuple<int, int> > positions[] = {
-       {},
--      {{0, 0}},
--      {{-1, 0}, {1, 0}, {0, -1}, {0, 1}},
--      {{-2, 0}, {2, 0}, {0, -2}, {0, 2},
--       {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}
-+      {P{0, 0}},
-+      {P{-1, 0}, P{1, 0}, P{0, -1}, P{0, 1}},
-+      {P{-2, 0}, P{2, 0}, P{0, -2}, P{0, 2},
-+       P{-1, -1}, P{1, -1}, P{-1, 1}, P{1, 1}}
-     };
- 
-     int shadow_size = std::min(2, font.get_shadow_size());
-@@ -77,11 +78,12 @@ TTFSurface::create(const TTFFont& font, const std::string& text)
-     SDL_SetSurfaceColorMod(text_surface.get(), 0, 0, 0);
-     SDL_SetSurfaceBlendMode(text_surface.get(), SDL_BLENDMODE_BLEND);
- 
-+    using P = std::tuple<int, int>;
-     const std::initializer_list<std::tuple<int, int> > positions[] = {
-       {},
--      {{-1, 0}, {1, 0}, {0, -1}, {0, 1}},
--      {{-2, 0}, {2, 0}, {0, -2}, {0, 2},
--       {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}
-+      {P{-1, 0}, P{1, 0}, P{0, -1}, P{0, 1}},
-+      {P{-2, 0}, P{2, 0}, P{0, -2}, P{0, 2},
-+       P{-1, -1}, P{1, -1}, P{-1, 1}, P{1, 1}}
-     };
- 
-     int border = std::min(2, font.get_border());
diff --git a/gnu/packages/patches/tcc-boot-0.9.27.patch b/gnu/packages/patches/tcc-boot-0.9.27.patch
new file mode 100644
index 0000000000..6f9d365788
--- /dev/null
+++ b/gnu/packages/patches/tcc-boot-0.9.27.patch
@@ -0,0 +1,26 @@
+From 1431ba3a99582e4c3d2693ac37e57f361858affd Mon Sep 17 00:00:00 2001
+From: Jan Nieuwenhuizen <janneke@gnu.org>
+Date: Mon, 11 Jun 2018 18:39:44 +0200
+Subject: [PATCH] bootstrappable: Force static link.
+
+---
+ libtcc.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libtcc.c b/libtcc.c
+index 3448f44..02ab850 100644
+--- a/libtcc.c
++++ b/libtcc.c
+@@ -735,6 +735,9 @@ LIBTCCAPI TCCState *tcc_new(void)
+     tcc_state = s;
+     ++nb_states;
+ 
++#if BOOTSTRAP
++    s->static_link = 1;
++#endif
+     s->alacarte_link = 1;
+     s->nocommon = 1;
+     s->warn_implicit_function_declaration = 1;
+-- 
+2.16.2
+
diff --git a/gnu/packages/patches/texinfo-perl-compat.patch b/gnu/packages/patches/texinfo-perl-compat.patch
deleted file mode 100644
index a7348fde0d..0000000000
--- a/gnu/packages/patches/texinfo-perl-compat.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Fix compatibility with newer Perls.
-
-The first patch is taken from upstream:
-https://svn.savannah.gnu.org/viewvc/texinfo?view=revision&revision=8008
-
-The second gets rid of a deprecation warning that breaks some tests.
-Taken from Fedora: <https://bugzilla.redhat.com/show_bug.cgi?id=1590308>.
-
---- trunk/tp/Texinfo/Convert/XSParagraph/xspara.c	2017/04/30 14:57:26	7765
-+++ trunk/tp/Texinfo/Convert/XSParagraph/xspara.c	2018/07/13 15:39:29	8008
-@@ -248,6 +248,11 @@
- 
-   dTHX;
- 
-+#if PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION > 8)
-+  /* needed due to thread-safe locale handling in newer perls */
-+  switch_to_global_locale();
-+#endif
-+
-   if (setlocale (LC_CTYPE, "en_US.UTF-8")
-       || setlocale (LC_CTYPE, "en_US.utf8"))
-     goto success;
-@@ -320,6 +325,10 @@
-     {
- success: ;
-       free (utf8_locale);
-+#if PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION > 8)
-+      /* needed due to thread-safe locale handling in newer perls */
-+      sync_locale();
-+#endif
-       /*
-       fprintf (stderr, "tried to set LC_CTYPE to UTF-8.\n");
-       fprintf (stderr, "character encoding is: %s\n",
-
-diff -up texinfo-6.5/tp/Texinfo/Parser.pm.orig texinfo-6.5/tp/Texinfo/Parser.pm
---- texinfo-6.5/tp/Texinfo/Parser.pm.orig	2018-06-12 13:40:29.356030136 +0200
-+++ texinfo-6.5/tp/Texinfo/Parser.pm	2018-06-12 13:41:28.357725639 +0200
-@@ -5478,11 +5478,11 @@ sub _parse_special_misc_command($$$$)
-     }
-   } elsif ($command eq 'clickstyle') {
-     # REMACRO
--    if ($line =~ /^\s+@([[:alnum:]][[:alnum:]\-]*)({})?\s*/) {
-+    if ($line =~ /^\s+@([[:alnum:]][[:alnum:]\-]*)(\{})?\s*/) {
-       $args = ['@'.$1];
-       $self->{'clickstyle'} = $1;
-       $remaining = $line;
--      $remaining =~ s/^\s+@([[:alnum:]][[:alnum:]\-]*)({})?\s*(\@(c|comment)((\@|\s+).*)?)?//;
-+      $remaining =~ s/^\s+@([[:alnum:]][[:alnum:]\-]*)(\{})?\s*(\@(c|comment)((\@|\s+).*)?)?//;
-       $has_comment = 1 if (defined($4));
-     } else {
-       $self->line_error (sprintf($self->__(
diff --git a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
index d8b9bf172a..024ff416af 100644
--- a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
+++ b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
@@ -1,23 +1,14 @@
-Fix LuaTeX compatibility with Poppler 0.72.
+Fix LuaTeX compatibility with Poppler 0.75.
 
 Upstream LuaTeX have moved from Poppler to "pplib" and thus upstream
-fixes are unavailable.  This is based on Arch Linux patches, with minor
-changes for Poppler 0.72:
-https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=f1b424435c8fa31d9296c7a6dc17f939a8332780
+fixes are unavailable.  This is based on Archs patch, with minor
+tweaks to comply with texlive-bin-CVE-2018-17407.patch.
+https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=418dd6f008c3d41a461353fdb60f2d73d87c58ed
 
 diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
 --- a/texk/web2c/luatexdir/image/pdftoepdf.w
 +++ b/texk/web2c/luatexdir/image/pdftoepdf.w
-@@ -35,7 +35,7 @@
- 
- extern void md5(Guchar *msg, int msgLen, Guchar *digest);
- 
--static GBool isInit = gFalse;
-+static bool isInit = false;
- 
- /* Maintain AVL tree of all PDF files for embedding */
- 
-@@ -363,10 +363,10 @@ void copyReal(PDF pdf, double d)
+@@ -363,7 +363,7 @@ void copyReal(PDF pdf, double d)
  
  static void copyString(PDF pdf, GooString * string)
  {
@@ -25,11 +16,7 @@ diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image
 +    const char *p;
      unsigned char c;
      size_t i, l;
--    p = string->getCString();
-+    p = string->c_str();
-     l = (size_t) string->getLength();
-     if (pdf->cave)
-         pdf_out(pdf, ' ');
+     p = string->getCString();
 @@ -393,7 +393,7 @@ static void copyString(PDF pdf, GooString * string)
      pdf->cave = true;
  }
@@ -39,15 +26,25 @@ diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image
  {
      pdf_out(pdf, '/');
      for (; *s != 0; s++) {
-@@ -468,14 +468,14 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj)
-         break;
-     /*
-     case objNum:
--        GBool isNum() { return type == objInt || type == objReal; }
-+        bool isNum() { return type == objInt || type == objReal; }
-         break;
-     */
-     case objString:
+@@ -412,7 +412,7 @@ static void copyArray(PDF pdf, PdfDocument * pdf_doc, Array * array)
+     Object obj1;
+     pdf_begin_array(pdf);
+     for (i = 0, l = array->getLength(); i < l; ++i) {
+-        obj1 = array->getNF(i);
++        obj1 = array->getNF(i).copy();
+         copyObject(pdf, pdf_doc, &obj1);
+     }
+     pdf_end_array(pdf);
+@@ -425,7 +425,7 @@ static void copyDict(PDF pdf, PdfDocument * pdf_doc, Dict * dict)
+     pdf_begin_dict(pdf);
+     for (i = 0, l = dict->getLength(); i < l; ++i) {
+         copyName(pdf, dict->getKey(i));
+-        obj1 = dict->getValNF(i);
++        obj1 = dict->getValNF(i).copy();
+         copyObject(pdf, pdf_doc, &obj1);
+     }
+     pdf_end_dict(pdf);
+@@ -475,7 +475,7 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj)
          copyString(pdf, (GooString *)obj->getString());
          break;
      case objName:
@@ -85,31 +82,37 @@ diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image
              break;
      }
  }
-@@ -587,11 +587,11 @@ void read_pdf_info(image_dict * idict)
-     PDFRectangle *pagebox;
-     int pdf_major_version_found, pdf_minor_version_found;
-     float xsize, ysize, xorig, yorig;
--    if (isInit == gFalse) {
-+    if (isInit == false) {
-         if (!(globalParams))
-             globalParams = new GlobalParams();
--        globalParams->setErrQuiet(gFalse);
--        isInit = gTrue;
-+        globalParams->setErrQuiet(false);
-+        isInit = true;
-     }
-     if (img_type(idict) == IMG_TYPE_PDF)
-         pdf_doc = refPdfDocument(img_filepath(idict), FE_FAIL);
-@@ -966,7 +966,7 @@ void epdf_free()
-     if (PdfDocumentTree != NULL)
-         avl_destroy(PdfDocumentTree, destroyPdfDocument);
-     PdfDocumentTree = NULL;
--    if (isInit == gTrue)
-+    if (isInit == true)
-         delete globalParams;
--    isInit = gFalse;
-+    isInit = false;
- }
+@@ -788,12 +788,12 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info)
+         Now all relevant parts of the Page dictionary are copied. Metadata validity
+         check is needed(as a stream it must be indirect).
+     */
+-    obj1 = pageDict->lookupNF("Metadata");
++    obj1 = pageDict->lookupNF("Metadata").copy();
+     if (!obj1.isNull() && !obj1.isRef())
+         formatted_warning("pdf inclusion","/Metadata must be indirect object");
+     /* copy selected items in Page dictionary */
+     for (i = 0; pagedictkeys[i] != NULL; i++) {
+-        obj1 = pageDict->lookupNF(pagedictkeys[i]);
++        obj1 = pageDict->lookupNF(pagedictkeys[i]).copy();
+         if (!obj1.isNull()) {
+             pdf_add_name(pdf, pagedictkeys[i]);
+             /* preserves indirection */
+@@ -806,13 +806,13 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info)
+         PDF file, climbing up the tree until the Resources are found.
+         (This fixes a problem with Scribus 1.3.3.14.)
+     */
+-    obj1 = pageDict->lookupNF("Resources");
++    obj1 = pageDict->lookupNF("Resources").copy();
+     if (obj1.isNull()) {
+         op1 = &pagesobj1;
+         op2 = &pagesobj2;
+         *op1 = pageDict->lookup("Parent");
+         while (op1->isDict()) {
+-            obj1 = op1->dictLookupNF("Resources");
++            obj1 = op1->dictLookupNF("Resources").copy();
+             if (!obj1.isNull()) {
+                 pdf_add_name(pdf, "Resources");
+                 copyObject(pdf, pdf_doc, &obj1);
 diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
 --- a/texk/web2c/luatexdir/lua/lepdflib.cc
 +++ b/texk/web2c/luatexdir/lua/lepdflib.cc
@@ -122,15 +125,15 @@ diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lep
         uout->atype = ALLOC_LEPDF;
         uout->pc = uobj->pc;
         uout->pd = uobj->pd;
-@@ -439,7 +439,7 @@ static int l_new_Object(lua_State * L)
-       break;
-     case 1:
-       if (lua_isboolean (L,1)) {
--	uout->d = new Object(lua_toboolean(L, 1)? gTrue : gFalse);
-+	uout->d = new Object(lua_toboolean(L, 1)? true : false);
- 	uout->atype = ALLOC_LEPDF;
- 	uout->pc = 0;
- 	uout->pd = NULL;
+@@ -496,7 +496,7 @@ static int l_new_Object(lua_State * L)
+ 	double numA = lua_tonumber(L,1);
+ 	double genA = lua_tonumber(L,2);
+ 	if ( ((numA)==(int)(numA)) && ((genA)==(int)(genA)) ){
+-	  uout->d = new Object((int)(numA), (int)(genA));
++	  uout->d = new Object({(int)(numA), (int)(genA)});
+ 	  uout->atype = ALLOC_LEPDF;
+ 	  uout->pc = 0;
+ 	  uout->pd = NULL;
 @@ -596,7 +596,7 @@ static int m_##in##_##function(lua_State * L)                  \
      uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
      if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
@@ -140,33 +143,15 @@ diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lep
      if (o != NULL) {                                           \
          uout = new_##out##_userdata(L);                        \
          uout->d = o;                                           \
-@@ -676,7 +676,7 @@ static int m_##in##_##function(lua_State * L)                  \
-         pdfdoc_changed_error(L);                               \
-     gs = (GooString *)((in *) uin->d)->function();             \
-     if (gs != NULL)                                            \
--        lua_pushlstring(L, gs->getCString(), gs->getLength()); \
-+        lua_pushlstring(L, gs->c_str(), gs->getLength()); \
-     else                                                       \
-         lua_pushnil(L);                                        \
-     return 1;                                                  \
-@@ -911,7 +911,7 @@ static int m_Array_getString(lua_State * L)
-     if (i > 0 && i <= len) {
-         gs = new GooString();
-         if (((Array *) uin->d)->getString(i - 1, gs))
--            lua_pushlstring(L, gs->getCString(), gs->getLength());
-+            lua_pushlstring(L, gs->c_str(), gs->getLength());
-         else
-             lua_pushnil(L);
-         delete gs;
-@@ -1063,7 +1063,7 @@ static int m_Catalog_getJS(lua_State * L)
+@@ -889,7 +889,7 @@ static int m_Array_getNF(lua_State * L)
      if (i > 0 && i <= len) {
-         gs = ((Catalog *) uin->d)->getJS(i - 1);
-         if (gs != NULL)
--            lua_pushlstring(L, gs->getCString(), gs->getLength());
-+            lua_pushlstring(L, gs->c_str(), gs->getLength());
-         else
-             lua_pushnil(L);
-         delete gs;
+         uout = new_Object_userdata(L);
+         uout->d = new Object();
+-        *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1);
++        *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1).copy();
+         uout->atype = ALLOC_LEPDF;
+         uout->pc = uin->pc;
+         uout->pd = uin->pd;
 @@ -1125,12 +1125,12 @@ m_poppler_get_INT(Dict, getLength);
  
  static int m_Dict_add(lua_State * L)
@@ -182,36 +167,42 @@ diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lep
      uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
      ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
      return 0;
-@@ -1378,7 +1378,7 @@ static int m_GooString__tostring(lua_State * L)
-     uin = (udstruct *) luaL_checkudata(L, 1, M_GooString);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
--    lua_pushlstring(L, ((GooString *) uin->d)->getCString(),
-+    lua_pushlstring(L, ((GooString *) uin->d)->c_str(),
-                     ((GooString *) uin->d)->getLength());
-     return 1;
- }
-@@ -1527,9 +1527,9 @@ static int m_Object_initBool(lua_State * L)
+@@ -1190,7 +1190,7 @@ static int m_Dict_lookupNF(lua_State * L)
+     s = luaL_checkstring(L, 2);
+     uout = new_Object_userdata(L);
+     uout->d = new Object();
+-    *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s);
++    *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s).copy();
+     uout->atype = ALLOC_LEPDF;
+     uout->pc = uin->pc;
+     uout->pd = uin->pd;
+@@ -1263,7 +1263,7 @@ static int m_Dict_getValNF(lua_State * L)
+     if (i > 0 && i <= len) {
+         uout = new_Object_userdata(L);
+         uout->d = new Object();
+-        *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1);
++        *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1).copy();
+         uout->atype = ALLOC_LEPDF;
+         uout->pc = uin->pc;
+         uout->pd = uin->pd;
+@@ -1653,7 +1653,7 @@ static int m_Object_initRef(lua_State * L)
          pdfdoc_changed_error(L);
-     luaL_checktype(L, 2, LUA_TBOOLEAN);
-     if (lua_toboolean(L, 2) != 0)
--        *((Object *) uin->d) = Object(gTrue);
-+        *((Object *) uin->d) = Object(true);
-     else
--        *((Object *) uin->d) = Object(gFalse);
-+        *((Object *) uin->d) = Object(false);
+     num = luaL_checkint(L, 2);
+     gen = luaL_checkint(L, 3);
+-    *((Object *) uin->d) = Object(num, gen);
++    *((Object *) uin->d) = Object({num, gen});
      return 0;
  }
  
-@@ -1814,7 +1814,7 @@ static int m_Object_getString(lua_State * L)
-         pdfdoc_changed_error(L);
-     if (((Object *) uin->d)->isString()) {
-         gs = (GooString *)((Object *) uin->d)->getString();
--        lua_pushlstring(L, gs->getCString(), gs->getLength());
-+        lua_pushlstring(L, gs->c_str(), gs->getLength());
-     } else
-         lua_pushnil(L);
-     return 1;
+@@ -2011,7 +2011,7 @@ static int m_Object_arrayGetNF(lua_State * L)
+         if (i > 0 && i <= len) {
+             uout = new_Object_userdata(L);
+             uout->d = new Object();
+-            *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1);
++            *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1).copy();
+             uout->atype = ALLOC_LEPDF;
+             uout->pc = uin->pc;
+             uout->pd = uin->pd;
 @@ -2051,7 +2051,7 @@ static int m_Object_dictAdd(lua_State * L)
          pdfdoc_changed_error(L);
      if (!((Object *) uin->d)->isDict())
@@ -221,30 +212,42 @@ diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lep
      return 0;
  }
  
-@@ -2470,9 +2470,9 @@ static int m_PDFDoc_getFileName(lua_State * L)
+@@ -2104,7 +2104,7 @@ static int m_Object_dictLookupNF(lua_State * L)
+     if (((Object *) uin->d)->isDict()) {
+         uout = new_Object_userdata(L);
+         uout->d = new Object();
+-        *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s);
++        *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s).copy();
+         uout->atype = ALLOC_LEPDF;
+         uout->pc = uin->pc;
+         uout->pd = uin->pd;
+@@ -2169,7 +2169,7 @@ static int m_Object_dictGetValNF(lua_State * L)
+         if (i > 0 && i <= len) {
+             uout = new_Object_userdata(L);
+             uout->d = new Object();
+-            *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1);
++            *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1).copy();
+             uout->atype = ALLOC_LEPDF;
+             uout->pc = uin->pc;
+             uout->pd = uin->pd;
+@@ -2470,7 +2470,7 @@ static int m_PDFDoc_getFileName(lua_State * L)
      uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
      if (uin->pd != NULL && uin->pd->pc != uin->pc)
          pdfdoc_changed_error(L);
 -    gs = ((PdfDocument *) uin->d)->doc->getFileName();
 +    gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName();
      if (gs != NULL)
--        lua_pushlstring(L, gs->getCString(), gs->getLength());
-+        lua_pushlstring(L, gs->c_str(), gs->getLength());
+         lua_pushlstring(L, gs->getCString(), gs->getLength());
      else
-         lua_pushnil(L);
-     return 1;
-@@ -2559,9 +2559,9 @@ static int m_PDFDoc_readMetadata(lua_State * L)
+@@ -2559,7 +2559,7 @@ static int m_PDFDoc_readMetadata(lua_State * L)
      if (uin->pd != NULL && uin->pd->pc != uin->pc)
          pdfdoc_changed_error(L);
      if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
 -        gs = ((PdfDocument *) uin->d)->doc->readMetadata();
 +        gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata();
          if (gs != NULL)
--            lua_pushlstring(L, gs->getCString(), gs->getLength());
-+            lua_pushlstring(L, gs->c_str(), gs->getLength());
+             lua_pushlstring(L, gs->getCString(), gs->getLength());
          else
-             lua_pushnil(L);
-     } else
 @@ -2577,7 +2577,7 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
      if (uin->pd != NULL && uin->pd->pc != uin->pc)
          pdfdoc_changed_error(L);
@@ -254,65 +257,37 @@ diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lep
          uout = new_StructTreeRoot_userdata(L);
          uout->d = obj;
          uout->pc = uin->pc;
-@@ -3038,12 +3038,12 @@ m_poppler_get_BOOL(Attribute, isHidden);
- 
- static int m_Attribute_setHidden(lua_State * L)
- {
--    GBool i;
-+    bool i;
-     udstruct *uin;
-     uin = (udstruct *) luaL_checkudata(L, 1, M_Attribute);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
+--- texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc.orig    2019-04-24 09:41:05.090522664 +0000
++++ texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc 2019-04-24 09:43:37.119184926 +0000
+@@ -994,7 +994,8 @@
          pdfdoc_changed_error(L);
--    i = (GBool) lua_toboolean(L, 2);
-+    i = (bool) lua_toboolean(L, 2);
-     ((Attribute *) uin->d)->setHidden(i);
-     return 0;
- }
-@@ -3180,7 +3180,7 @@ static int m_StructElement_getParentRef(lua_State * L)
- // Ref is false if the C++ functione return false
- static int m_StructElement_getPageRef(lua_State * L)
- {
--    GBool b;
-+    bool b;
-     Ref *r;
-     udstruct *uin, *uout;
-     uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
-@@ -3226,16 +3226,16 @@ static int m_StructElement_setRevision(lua_State * L)
- 
- static int m_StructElement_getText(lua_State * L)
- {
--    GBool i;
-+    bool i;
-     GooString *gs;
-     udstruct *uin;
-     uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
--    i = (GBool) lua_toboolean(L, 2);
-+    i = (bool) lua_toboolean(L, 2);
-     gs =  ((StructElement *) uin->d)->getText(i);
-     if (gs != NULL)
--        lua_pushlstring(L, gs->getCString(), gs->getLength());
-+        lua_pushlstring(L, gs->c_str(), gs->getLength());
+     num = luaL_checkint(L, 2);
+     gen = luaL_checkint(L, 3);
+-    i = ((Catalog *) uin->d)->findPage(num, gen);
++    Ref numgen = {num, gen};
++    i = ((Catalog *) uin->d)->findPage(numgen);
+     if (i > 0)
+         lua_pushinteger(L, i);
      else
-         lua_pushnil(L);
-     return 1;
-@@ -3321,7 +3321,7 @@ static int m_StructElement_findAttribute(lua_State * L)
- {
-     Attribute::Type t;
-     Attribute::Owner o;
--    GBool g;
-+    bool g;
-     udstruct *uin, *uout;
-     const Attribute *a;
-     uin = (udstruct *) luaL_checkudata(L, 1, M_StructElement);
-@@ -3329,7 +3329,7 @@ static int m_StructElement_findAttribute(lua_State * L)
+@@ -2596,8 +2597,9 @@
          pdfdoc_changed_error(L);
-     t = (Attribute::Type) luaL_checkint(L,1);
-     o = (Attribute::Owner) luaL_checkint(L,2);
--    g = (GBool) lua_toboolean(L, 3);
-+    g = (bool) lua_toboolean(L, 3);
-     a = ((StructElement *) uin->d)->findAttribute(t,g,o);
- 
-     if (a!=NULL){
+     num = luaL_checkint(L, 2);
+     gen = luaL_checkint(L, 3);
++    Ref numgen = {num, gen};
+     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
+-        i = ((PdfDocument *) uin->d)->doc->findPage(num, gen);
++        i = ((PdfDocument *) uin->d)->doc->findPage(numgen);
+         if (i > 0)
+             lua_pushinteger(L, i);
+         else
+--- texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w.orig  2019-04-24 09:56:38.406498975 +0000
++++ texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w       2019-04-24 09:56:57.020081327 +0000
+@@ -630,7 +630,7 @@
+         if (link == NULL || !link->isOk())
+             formatted_error("pdf inclusion","invalid destination '%s'",img_pagename(idict));
+         Ref ref = link->getPageRef();
+-        img_pagenum(idict) = catalog->findPage(ref.num, ref.gen);
++        img_pagenum(idict) = catalog->findPage(ref);
+         if (img_pagenum(idict) == 0)
+             formatted_error("pdf inclusion","destination is not a page '%s'",img_pagename(idict));
+         delete link;
diff --git a/gnu/packages/patches/util-linux-tests.patch b/gnu/packages/patches/util-linux-tests.patch
index bb5be66515..ec1671f224 100644
--- a/gnu/packages/patches/util-linux-tests.patch
+++ b/gnu/packages/patches/util-linux-tests.patch
@@ -2,6 +2,8 @@ This test checks whether 'root' is successfully translated to UID/GID 0,
 using 'getpwnam' in libmount.  This doesn't work in the chroot because
 /etc/passwd doesn't contain an entry for 'root' so skip it.
 
+The second test requires that '/sys/dev/block' is present, which is not
+the case inside the build container.
 
 --- util-linux-2.25.2/tests/ts/libmount/optstr	2015-01-23 13:58:41.181151194 +0100
 +++ util-linux-2.25.2/tests/ts/libmount/optstr	2015-01-23 13:58:42.829161716 +0100
@@ -16,3 +18,14 @@ using 'getpwnam' in libmount.  This doesn't work in the chroot because
  ts_init_subtest "deduplicate"
  ts_run $TESTPROG --dedup bbb,ccc,AAA,xxx,AAA=a,AAA=bbb,ddd,AAA=ccc,fff=eee AAA &> $TS_OUTPUT
  ts_finalize_subtest
+--- a/tests/ts/lsblk/lsblk	2019-03-11 21:08:23.734387391 +0100
++++ b/tests/ts/lsblk/lsblk	2019-03-11 21:12:43.635473111 +0100
+@@ -22,6 +22,8 @@
+ 
+ ts_init "$*"
+ 
++ts_skip "/sys/dev/block is not available"
++
+ ts_check_test_command "$TS_CMD_LSBLK"
+ ts_check_prog xz
+ ts_check_prog tar
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index 7ab8174ffa..91c32d6e5d 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -35,7 +35,7 @@
 (define-public pcre
   (package
    (name "pcre")
-   (version "8.42")
+   (version "8.43")
    (source (origin
             (method url-fetch)
             (uri (list
@@ -46,7 +46,7 @@
                                  version "/pcre-" version ".tar.bz2")))
             (sha256
              (base32
-              "00ckpzlgyr16bnqx8fawa3afjgqxw5yxgs2l081vw23qi1y4pl1c"))))
+              "0sxg1wlknq05ryq63h21cchjmcjkin9lmnqsmhs3h08301965rwi"))))
    (build-system gnu-build-system)
    (outputs '("out"           ;library & headers
               "bin"           ;depends on Readline (adds 20MiB to the closure)
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index d45a78222c..6dc8e7b145 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -85,14 +85,14 @@
 (define-public poppler
   (package
    (name "poppler")
-   (version "0.72.0")
+   (version "0.79.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://poppler.freedesktop.org/poppler-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0lfs1b1jfamxl13zbl5n448dqvl9n8frbv8180y7b7kfyaw7wx61"))))
+              "1j18jlv1q6h21azb939gqjsgcbsh5qcd8dwxdmad54p5ixha91gr"))))
    (build-system cmake-build-system)
    ;; FIXME:
    ;;  use libcurl:        no
@@ -124,7 +124,7 @@
       #:configure-flags
       (let* ((out (assoc-ref %outputs "out"))
              (lib (string-append out "/lib")))
-        (list "-DENABLE_XPDF_HEADERS=ON" ; to install header files
+        (list "-DENABLE_UNSTABLE_API_ABI_HEADERS=ON" ;to install header files
               "-DENABLE_ZLIB=ON"
               (string-append "-DCMAKE_INSTALL_LIBDIR=" lib)
               (string-append "-DCMAKE_INSTALL_RPATH=" lib)))))
@@ -668,14 +668,14 @@ line tools for batch rendering @command{pdfdraw}, rewriting files
 (define-public qpdf
   (package
    (name "qpdf")
-   (version "8.4.0")
+   (version "8.4.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version
                                 "/qpdf-" version ".tar.gz"))
             (sha256
              (base32
-              "1864p952m8vzxk6v500a42psbqj2g2gyli3d3zj6h33hzwxqy09r"))
+              "1fsfy38dnm9cy1j40jw5x8vn84l6f2kgb68rdjl0wxignfw05z87"))
             (modules '((guix build utils)))
             (snippet
              ;; Replace shebang with the bi-lingual shell/Perl trick to remove
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index d104c2434c..77c8048e86 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -66,14 +66,14 @@
   ;; Yeah, Perl...  It is required early in the bootstrap process by Linux.
   (package
     (name "perl")
-    (version "5.28.0")
+    (version "5.30.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/src/5.0/perl-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1a3f822lcl8dr8v0hk80yyhpzqlljg49z9flb48rs3nbsij9z4ky"))
+               "1wkmz6xn3fswpqhz29akiklcxclnlykhp96a8bqcz36rak3i64l5"))
              (patches (search-patches
                        "perl-no-sys-dirs.patch"
                        "perl-autosplit-default-time.patch"
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index ac24adef43..7cc35f1ed9 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -100,9 +100,6 @@
        ("gobject-introspection" ,gobject-introspection)))
     (arguments
      `(#:configure-flags '("--sysconfdir=/etc"
-                           ;; XXX: MozJS 60 requires the C++11 ABI or higher.
-                           ;; Remove when the default compiler is >= GCC 6.
-                           "CXXFLAGS=-std=gnu++11"
                            "--enable-man-pages")
        #:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index fa48d8a7a6..ff4049d707 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -227,8 +227,6 @@ sound server.")
               (base32
                "14486c6lmmirkhscbfygz114f6yzf97h35n3h3pdr27w4mdfmlmk"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags '("CXXFLAGS=-std=c++11"))) ; required by gtkmm
     (inputs
      `(("libcanberra" ,libcanberra)
        ("gtkmm" ,gtkmm)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index e37ae94e18..ffef3319f7 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -931,14 +931,14 @@ object to help create WSGI responses.")
 (define-public python-zope-event
   (package
     (name "python-zope-event")
-    (version "4.1.0")
+    (version "4.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.event" version))
        (sha256
         (base32
-         "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
+         "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9"))))
     (build-system python-build-system)
     (home-page "https://pypi.python.org/pypi/zope.event")
     (synopsis "Event publishing system for Python")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1bd218b797..b6ca9b9fc5 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -336,7 +336,14 @@ by @code{binstar}, @code{binstar-build} and @code{chalmers}.")
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (replace 'check
-                    (lambda _ (invoke "pytest" "-vv"))))))
+                    (lambda _
+                      (invoke "pytest" "-vv" "-k"
+                              (string-append
+                               ;; XXX: These tests fail when using Pytest 4.x and
+                               ;; Babel 2.6.0.  Try removing this for later versions.
+                               "not test_no_inherit_metazone_marker_never_in_output"
+                               " and not test_smoke_dates"
+                               " and not test_smoke_numbers")))))))
     (home-page "http://babel.pocoo.org/")
     (synopsis
      "Tools for internationalizing Python applications")
@@ -708,6 +715,19 @@ Python 3 support.")
 (define-public python2-setuptools
   (package-with-python2 python-setuptools))
 
+;; The setuptools provided by Python 3.7.4 is too new for Tensorflow.
+(define-public python-setuptools-for-tensorflow
+  (hidden-package
+   (package
+     (inherit python-setuptools)
+     (version "39.1.0")
+     (source (origin
+               (inherit (package-source python-setuptools))
+               (uri (pypi-uri "setuptools" version ".zip"))
+               (sha256
+                (base32
+                 "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65")))))))
+
 (define-public python-uniseg
   (package
     (name "python-uniseg")
@@ -1010,14 +1030,14 @@ from the Python interpreter, or as a small part of a larger application.")
 (define-public python-six
   (package
     (name "python-six")
-    (version "1.11.0")
+    (version "1.12.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "six" version))
       (sha256
        (base32
-        "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h"))))
+        "0wxs1q74v07ssjywbbm7x6h5v9qx209ld2yfsif4060sxi0h2sni"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1223,14 +1243,14 @@ Python 3.3+.")
 (define-public python-pyicu
   (package
     (name "python-pyicu")
-    (version "2.2")
+    (version "2.3.1")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "PyICU" version))
       (sha256
        (base32
-        "0wq9y5fi1ighgf5aws9nr87vi1w44p7q1k83rx2y3qj5d2xyhspa"))))
+        "1x4w8m7ifki9z2a187pgjr33z6z0rp2fii9b73djak1vhm9v9cnx"))))
     (build-system python-build-system)
     (inputs
      `(("icu4c" ,icu4c)))
@@ -1679,14 +1699,14 @@ server.")
 (define-public python-py
   (package
     (name "python-py")
-    (version "1.5.4")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "py" version))
        (sha256
         (base32
-         "1xxvwfn82457djf55f5n2c94699rfqnk43br8fif2r2q8gvrmm9z"))))
+         "0lsy1gajva083pzc7csj1cvbmminb7b4l6a0prdzyb3fd829nqyw"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: "ImportError: 'test' module incorrectly imported from
@@ -2223,13 +2243,13 @@ JavaScript-like message boxes.  Types of dialog boxes include:
   (package
     (name "python-pympler")
     (home-page "https://pythonhosted.org/Pympler/")
-    (version "0.5")
+    (version "0.7")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Pympler" version))
               (sha256
                (base32
-                "03qwsbilqgvnbl3a1jmpgixbr2kq6m3fvdlzyr3wdp01bwlc85kx"))))
+                "0ki7bqp1h9l1xc2k1h4vjyzsgs20i8ingvcdhszyi72s28wyf4bs"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -3274,11 +3294,39 @@ writing C extensions for Python as easy as Python itself.")
     (properties `((python2-variant . ,(delay python2-cython))))))
 
 (define-public python2-cython
-  (package (inherit (package-with-python2
-                     (strip-python2-variant python-cython)))
-    (name "python2-cython")
-    (inputs
-     `(("python-2" ,python-2))))) ; this is not automatically changed
+  (let ((base (package-with-python2 (strip-python2-variant python-cython))))
+    (package
+      (inherit base)
+      (name "python2-cython")
+      (inputs
+       `(("python-2" ,python-2)))       ;this is not automatically changed
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-before 'check 'adjust-test_embed
+               (lambda _
+                 (substitute* "runtests.py"
+                   ;; test_embed goes great lengths to find the static libpythonX.Y.a
+                   ;; so it can give the right -L flag to GCC when embedding static
+                   ;; builds of Python.  It is unaware that the Python "config"
+                   ;; directory (where the static library lives) was renamed in
+                   ;; Python 3, and falls back to sysconfig.get_config_var('LIBDIR'),
+                   ;; which works fine, because that is where the shared library is.
+                   ;;
+                   ;; It also appears to be unaware that the Makefile in Demos/embed
+                   ;; already unconditionally pass the static library location to GCC,
+                   ;; after checking sysconfig.get_config_var('LIBPL).
+                   ;;
+                   ;; The effect is that the linker is unable to resolve libexpat
+                   ;; symbols when building for Python 2, because neither the Python 2
+                   ;; shared library nor Expat is available.   To fix it, we can either
+                   ;; add Expat as an input and make it visible to the linker, or just
+                   ;; prevent it from overriding the Python shared library location.
+                   ;; The end result is identical, so we take the easy route.
+                   ((" or libname not in os\\.listdir\\(libdir\\)")
+                    ""))
+                 #t)))))))))
 
 ;; The RPython toolchain currently does not support Python 3.
 (define-public python2-rpython
@@ -4289,14 +4337,14 @@ as the original project seems to have been abandoned circa 2007.")
 (define-public python-pycodestyle
   (package
     (name "python-pycodestyle")
-    (version "2.4.0")
+    (version "2.5.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "pycodestyle" version))
-        (sha256
-          (base32
-            "0fhy4vnlgpjq4qd1wdnl6pvdw7rah0ypmn8c9mkhz8clsndskz6b"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pycodestyle" version))
+       (sha256
+        (base32
+         "0v4prb05n21bm8650v0a01k1nyqjdmkrsm3zycfxh2j5k9n962p4"))))
     (build-system python-build-system)
     (home-page "https://pycodestyle.readthedocs.io/")
     (synopsis "Python style guide checker")
@@ -4958,13 +5006,13 @@ child application and control it as if a human were typing commands.")
 (define-public python-setuptools-scm
   (package
     (name "python-setuptools-scm")
-    (version "3.1.0")
+    (version "3.2.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "setuptools_scm" version))
               (sha256
                (base32
-                "0h4bglwfz8b9prqljv8z3w9rgydfyxzaj05bm1y6zs5m6shz548i"))))
+                "0n3knn3p1sqlx31k2lahn7z9bacvlv8nhlfidj77vz50bxqlgasj"))))
     (build-system python-build-system)
     (home-page "https://github.com/pypa/setuptools_scm/")
     (synopsis "Manage Python package versions in SCM metadata")
@@ -5966,23 +6014,15 @@ of the structure, dynamics, and functions of complex networks.")
 (define-public python-datrie
   (package
     (name "python-datrie")
-    (version "0.7.1")
+    (version "0.8")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "datrie" version))
        (sha256
         (base32
-         "08r0if7dry2q7p34gf7ffyrlnf4bdvnprxgydlfxgfnvq8f3f4bs"))))
+         "0338r8xgmpy78556jhms0h6qkvyjr10p8bpgdvcpqzm9lrmxmmdx"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'cythonize
-                    (lambda _
-                      ;; Regenerate Cython classes to solve ABI issues with Python
-                      ;; 3.7.0.  See <https://github.com/pytries/datrie/issues/52>.
-                      (invoke "cython" "src/datrie.pyx" "src/cdatrie.pxd"
-                              "src/stdio_ext.pxd" "-a"))))))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-hypothesis" ,python-hypothesis)
@@ -6456,7 +6496,8 @@ applications.")
         (uri (pypi-uri "pep8" version))
         (sha256
           (base32
-            "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
+           "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))
+        (patches (search-patches "python-pep8-stdlib-tokenize-compat.patch"))))
     (build-system python-build-system)
     (home-page "https://pep8.readthedocs.org/")
     (synopsis "Python style guide checker")
@@ -6471,14 +6512,14 @@ PEP 8.")
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
-    (version "2.0.0")
+    (version "2.1.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pyflakes" version))
         (sha256
           (base32
-            "0jba28czyvimdc72llms3f17swp3i8jdcabf5w0j00adfbn64xls"))))
+            "18pq95a1xj2dgdd0m85gyfsn40jajj4xc3lp8wfv7igqhrc86xnr"))))
     (build-system python-build-system)
     (home-page
       "https://github.com/pyflakes/pyflakes")
@@ -6567,35 +6608,20 @@ complexity of Python source code.")
 (define-public python2-pyflakes-0.8.1
   (package-with-python2 python-pyflakes-0.8.1))
 
-;; This package is used by hypothesis which has thousands of dependent packages.
-;; FIXME: Consolidate this with "python-flake8" below in the next rebuild cycle.
-(define-public python-flake8-3.5
+(define-public python-flake8
   (package
     (name "python-flake8")
-    (version "3.5.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "flake8" version))
-        (sha256
-          (base32
-            "184b33grvvjmiwlv9kyd7yng9qv5ld24154j70z332xxg9gjclvj"))))
+    (version "3.7.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "flake8" version))
+              (sha256
+               (base32
+                "0qg6zggqigrd4k3gv88shd1a27d0cwgfql8vfiq2c7rl7w3rd6c5"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         ;; Two errors don't seem to have assigned codes.
-         (add-after 'unpack 'delete-broken-test
-           (lambda _ (delete-file "tests/unit/test_pyflakes_codes.py") #t))
-         (add-after 'unpack 'fix-problem-with-pycodestyle
-           (lambda _
-             ;; See https://gitlab.com/pycqa/flake8/merge_requests/230
-             ;; This should no longer be needed with the next release.
-             (substitute* "setup.py"
-               (("PEP8_PLUGIN\\('break_around_binary_operator'\\),")
-                "PEP8_PLUGIN('break_after_binary_operator'),\
-PEP8_PLUGIN('break_before_binary_operator'),"))
-             #t))
          (delete 'check)
          (add-after 'install 'check
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -6604,6 +6630,7 @@ PEP8_PLUGIN('break_before_binary_operator'),"))
              #t)))))
     (propagated-inputs
      `(("python-pycodestyle" ,python-pycodestyle)
+       ("python-entrypoints" ,python-entrypoints)
        ("python-pyflakes" ,python-pyflakes)
        ("python-mccabe" ,python-mccabe)))
     (native-inputs
@@ -6615,45 +6642,18 @@ PEP8_PLUGIN('break_before_binary_operator'),"))
       "The modular source code checker: pep8, pyflakes and co")
     (description
       "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
-    (properties `((python2-variant . ,(delay python2-flake8-3.5))))
+    (properties `((python2-variant . ,(delay python2-flake8))))
     (license license:expat)))
 
-(define-public python2-flake8-3.5
-  (let ((base (package-with-python2 (strip-python2-variant python-flake8-3.5))))
+(define-public python2-flake8
+  (let ((base (package-with-python2 (strip-python2-variant python-flake8))))
     (package (inherit base)
       (propagated-inputs
        `(("python2-configparser" ,python2-configparser)
          ("python2-enum34" ,python2-enum34)
+         ("python2-typing" ,python2-typing)
           ,@(package-propagated-inputs base))))))
 
-;; Version 3.5.0 has compatibility issues with Pyflakes 2.0, so we need
-;; this newer version.  Keep it as a separate variable for now to avoid
-;; rebuilding "python-hypothesis"; this should be removed in the next
-;; rebuild cycle.
-(define-public python-flake8
-  (package
-    (inherit python-flake8-3.5)
-    (version "3.6.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "flake8" version))
-              (sha256
-               (base32
-                "0w0nprx22rbvrrkbfx9v5jc5gskbm08g219l7r8wai8zfswgadba"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments python-flake8-3.5)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (delete 'delete-broken-test)
-           (delete 'fix-problem-with-pycodestyle)))))
-    (properties `((python2-variant . ,(delay python2-flake8))))))
-
-(define-public python2-flake8
-  (let ((base (package-with-python2 (strip-python2-variant python-flake8))))
-    (package (inherit base)
-             (propagated-inputs
-              (package-propagated-inputs python2-flake8-3.5)))))
-
 ;; python-hacking requires flake8 <2.6.0.
 (define-public python-flake8-2.5
   (package
@@ -6697,6 +6697,12 @@ PEP8_PLUGIN('break_before_binary_operator'),"))
        (modify-phases %standard-phases
          (replace 'check
            (lambda _
+             ;; Be compatible with Pytest 4:
+             ;; https://gitlab.com/pycqa/flake8-polyfill/merge_requests/7
+             (substitute* "setup.cfg"
+               (("\\[pytest\\]")
+                "[tool:pytest]"))
+
              (setenv "PYTHONPATH"
                      (string-append (getcwd) "/build/lib:"
                                     (getenv "PYTHONPATH")))
@@ -6830,12 +6836,16 @@ pseudo terminal (pty), and interact with both the process and its pty.")
                ;; lines, but the test expects a single line...
                (("env\\['COLUMNS'\\] = '80'")
                 "env['COLUMNS'] = '160'"))
+
+             (substitute* "Makefile"
+               ;; Recent versions of python-coverage have caused the test
+               ;; coverage to decrease (as of version 0.7).  Allow that.
+               (("--fail-under=100")
+                "--fail-under=90"))
+
              #t))
-         (delete 'check)
-         (add-after 'install 'check
+         (replace 'check
            ;; The test phase uses the built library and executable.
-           ;; It's easier to run it after install since the build
-           ;; directory contains version-specific PATH.
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (add-installed-pythonpath inputs outputs)
              (setenv "PATH" (string-append (getenv "PATH") ":"
@@ -6881,13 +6891,13 @@ add functionality and customization to your projects with their own plugins.")
 (define-public python-fonttools
   (package
     (name "python-fonttools")
-    (version "3.28.0")
+    (version "3.38.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "fonttools" version ".zip"))
               (sha256
                (base32
-                "0vsvjhidpb5kywpjgz1j3fywzkddxkb0afqai18qa3h6lqjyxwpb"))))
+                "12ripk3s7skgxr1bs9r8n13r94ym3s8iir7ivfixls9fa4dabmlh"))))
     (build-system python-build-system)
     (native-inputs
      `(("unzip" ,unzip)
@@ -8124,6 +8134,8 @@ simulation, statistical modeling, machine learning and much more.")
        ("python-pytest" ,python-pytest)
        ("python-pytest-runner" ,python-pytest-runner)))
     (build-system python-build-system)
+    ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>.
+    (arguments `(#:tests? #f))
     (home-page "https://github.com/chardet/chardet")
     (synopsis "Universal encoding detector for Python 2 and 3")
     (description
@@ -8370,13 +8382,13 @@ tables.")
 (define-public python-atomicwrites
   (package
     (name "python-atomicwrites")
-    (version "1.1.5")
+    (version "1.3.0")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "atomicwrites" version))
              (sha256
               (base32
-               "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
+               "19ngcscdf3jsqmpcxn6zl5b6anmsajb6izp1smcd1n02midl9abm"))))
     (build-system python-build-system)
     (synopsis "Atomic file writes in Python")
     (description "Library for atomic file writes using platform dependent tools
@@ -8689,11 +8701,14 @@ otherwise matches 3.2’s API.")
          (base32
           "0rdjmmsab550kxsssdq49jcniz77zlkpw4pvi9hvib3lsskjmh4y"))))
     (build-system python-build-system)
-    (arguments `(#:python ,python-2
-                 ;; FIXME: Python 2.7.14 moved the test.support library,
-                 ;; but our package has not yet been adjusted.  Enable
-                 ;; tests when the python2 package has been fixed.
-                 #:tests? #f))
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "python" "test_futures.py")
+             #t)))))
     (home-page "https://github.com/agronholm/pythonfutures")
     (synopsis
      "Backport of the concurrent.futures package from Python 3.2")
@@ -8807,14 +8822,14 @@ library as well as on the command line.")
 (define-public python-pluggy
   (package
    (name "python-pluggy")
-   (version "0.7.1")
+   (version "0.11.0")
    (source
     (origin
      (method url-fetch)
      (uri (pypi-uri "pluggy" version))
      (sha256
       (base32
-       "1qbn70mksmr03hac6jgp6fiqc4l7859z8dchx2x950vhlij87swm"))))
+       "10511a54dvafw1jrk75mrhml53c7b7w4yaw7241696lc2hfvr895"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-setuptools-scm" ,python-setuptools-scm)))
@@ -9452,13 +9467,13 @@ anymore.")
 (define-public python2-pathlib2
   (package
     (name "python2-pathlib2")
-    (version "2.3.2")
+    (version "2.3.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pathlib2" version))
               (sha256
                (base32
-                "10yb0iv5x2hs631rcppkhbddx799d3h8pcwmkbh2a66ns3w71ccf"))))
+                "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695"))))
     (build-system python-build-system)
     ;; We only need the the Python 2 variant, since for Python 3 our minimum
     ;; version is 3.4 which already includes this package as part of the
@@ -10050,13 +10065,6 @@ graphviz.")
                   (guix build utils)
                   (guix build python-build-system))
        #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'unpack-libev
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (mkdir-p "deps/libev")
-                      ;; FIXME: gevent requires building libev, even though
-                      ;; it only links against the proper one.
-                      (invoke "tar" "-xf" (assoc-ref inputs "libev-source")
-                              "--strip-components=1" "-C" "deps/libev")))
                   (add-before 'patch-source-shebangs 'patch-hard-coded-paths
                     (lambda _
                       (substitute* "src/gevent/subprocess.py"
@@ -10074,6 +10082,11 @@ graphviz.")
                       (setenv "CARES_EMBED" "false")
                       (setenv "EMBED" "false")
 
+                      ;; Prevent building bundled libev.
+                      (substitute* "setup.py"
+                        (("run_make=_BUILDING")
+                         "run_make=False"))
+
                       (let ((greenlet (string-append
                                        (assoc-ref inputs "python-greenlet")
                                        "/include")))
@@ -10081,7 +10094,7 @@ graphviz.")
                                         (lambda (item)
                                           (string-prefix? "python" item)))
                           ((python)
-                           (setenv "CPATH"
+                           (setenv "C_INCLUDE_PATH"
                                    (string-append greenlet "/" python)))))
                       #t))
                   (add-before 'check 'skip-timer-test
@@ -10113,8 +10126,7 @@ graphviz.")
      `(("python-greenlet" ,python-greenlet)
        ("python-objgraph" ,python-objgraph)))
     (native-inputs
-     `(("libev-source" ,(package-source libev))
-       ("python-six" ,python-six)))
+     `(("python-six" ,python-six)))
     (inputs
      `(("c-ares" ,c-ares)
        ("libev" ,libev)))
@@ -12200,15 +12212,6 @@ protocols.")
   (package
     (inherit python-attrs)
     (name "python-attrs-bootstrap")
-    ;; Keep this on a fixed version so python-attrs can be updated without
-    ;; triggering a mass-rebuild.  FIXME: Update this in the next rebuild cycle.
-    (version "17.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "attrs" version))
-              (sha256
-               (base32
-                "1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w"))))
     (native-inputs `())
     (arguments `(#:tests? #f))))
 
@@ -12508,17 +12511,14 @@ of @code{functools.lru_cache} from python 3.3.")
 (define-public python-configparser
   (package
     (name "python-configparser")
-    (version "3.5.0")
+    (version "3.7.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://bitbucket.org/ambv/configparser/get/"
-             version ".tar.bz2"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (pypi-uri "configparser" version))
        (sha256
         (base32
-         "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa"))))
+         "0cnz213il9lhgda6x70fw7mfqr8da43s3wm343lwzhqx94mgmmav"))))
     (build-system python-build-system)
     (home-page "https://github.com/jaraco/configparser/")
     (synopsis "Backport of configparser from python 3.5")
@@ -14835,41 +14835,40 @@ file system events on Linux.")
 (define-public python-more-itertools
   (package
     (name "python-more-itertools")
-    (version "4.3.0")
+    (version "7.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "more-itertools" version))
        (sha256
         (base32
-         "17h3na0rdh8xq30w4b9pizgkdxmm51896bxw600x84jflg9vaxn4"))))
+         "16phg2f2dvm6ci5wr49ncha5lmc0m2in3bsl33c61vzca4gkvd4b"))))
     (build-system python-build-system)
-    (arguments
-     `(,@(if (any (cute string-prefix? <> (or (%current-system)
-                                              (%current-target-system)))
-                  '("armhf" "i686"))
-        '(#:phases
-          (modify-phases %standard-phases
-          ;; This is required for 32-bit hardware.
-          ;; TODO: Try to remove this when upgrading.
-          (add-after 'unpack 'patch-test
-            (lambda _
-              (substitute* "more_itertools/tests/test_more.py"
-                (("10 \\*\\* 10") "9 ** 9"))
-              #t))))
-        '())))
-    (propagated-inputs
-     `(("python-six" ,python-six-bootstrap)))
     (home-page "https://github.com/erikrose/more-itertools")
     (synopsis "More routines for operating on iterables, beyond itertools")
     (description "Python's built-in @code{itertools} module implements a
 number of iterator building blocks inspired by constructs from APL, Haskell,
 and SML.  @code{more-itertools} includes additional building blocks for
 working with iterables.")
+    (properties `((python2-variant . ,(delay python2-more-itertools))))
     (license license:expat)))
 
+;; The 5.x series are the last versions supporting Python 2.7.
 (define-public python2-more-itertools
-  (package-with-python2 python-more-itertools))
+  (package
+    (inherit python-more-itertools)
+    (name "python2-more-itertools")
+    (version "5.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "more-itertools" version))
+              (sha256
+               (base32
+                "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q"))))
+    (arguments
+     `(#:python ,python2-minimal))
+    (propagated-inputs
+     `(("python2-six" ,python2-six-bootstrap)))))
 
 (define-public python-latexcodec
   (package
@@ -15139,7 +15138,7 @@ under Python 2.7.")
 (define-public pybind11
   (package
     (name "pybind11")
-    (version "2.2.4")
+    (version "2.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -15147,7 +15146,7 @@ under Python 2.7.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "0pa79ymcasv8br5ifbx7878id5py2jpjac3i20cqxr6gs9l6ivlv"))
+                "11b6dniri8m05spfd2a19irz82shf4sdca73566bniggrf3zclnf"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (native-inputs
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e8c0f63fe7..644c9d7666 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
 ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
@@ -26,7 +26,7 @@
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
@@ -54,7 +54,7 @@
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
 ;;;
@@ -76,6 +76,7 @@
 (define-module (gnu packages python)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages dbm)
@@ -85,6 +86,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages xml)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -94,8 +96,7 @@
 (define-public python-2.7
   (package
     (name "python2")
-    (version "2.7.15")
-    (replacement python-2/fixed)
+    (version "2.7.16")
     (source
      (origin
       (method url-fetch)
@@ -103,18 +104,26 @@
                           version "/Python-" version ".tar.xz"))
       (sha256
        (base32
-        "0x2mvz9dp11wj7p5ccvmk9s0hzjk2fa1m462p395l4r6bfnb3n92"))
+        "1mqfcqp5y8r0bfyr7ppl74n0lig45p9mc4b8adlcpvj74rhfy8pj"))
       (patches (search-patches "python-2.7-search-paths.patch"
                                "python-2-deterministic-build-info.patch"
                                "python-2.7-site-prefixes.patch"
                                "python-2.7-source-date-epoch.patch"
                                "python-2.7-adjust-tests.patch"))
       (modules '((guix build utils)))
-      ;; suboptimal to delete failing tests here, but if we delete them in the
-      ;; arguments then we need to make sure to strip out that phase when it
-      ;; gets inherited by python and python-minimal.
       (snippet
        '(begin
+          ;; Ensure the bundled copies of these libraries are not used.
+          (for-each delete-file-recursively
+                    '("Modules/_ctypes/libffi" "Modules/expat" "Modules/zlib"))
+
+          (substitute* "Modules/Setup.dist"
+            ;; Link Expat instead of embedding the bundled one.
+            (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n"))
+
+          ;; Suboptimal to delete failing tests here, but if we delete them in
+          ;; the arguments then we need to make sure to strip out that phase
+          ;; when it gets inherited by python and python-minimal.
           (for-each delete-file
                     '("Lib/test/test_compileall.py"
                       "Lib/test/test_ctypes.py" ; fails on mips64el
@@ -131,11 +140,28 @@
      `(#:test-target "test"
        #:configure-flags
        (list "--enable-shared"                    ;allow embedding
+             "--with-system-expat"                ;for XML support
              "--with-system-ffi"                  ;build ctypes
              "--with-ensurepip=install"           ;install pip and setuptools
              "--enable-unicode=ucs4"
+
+             ;; Prevent the installed _sysconfigdata.py from retaining a reference
+             ;; to coreutils.
+             "INSTALL=install -c"
+             "MKDIR_P=mkdir -p"
+
              (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out") "/lib"))
+       ;; With no -j argument tests use all available cpus, so provide one.
+       #:make-flags
+       (list (string-append
+              (format #f "TESTOPTS=-j~d" (parallel-job-count))
+              ;; Exclude the following tests as they fail
+              ;; non-deterministically with "error: [Errno 104] Connection
+              ;; reset by peer."  Python 3 seems unaffected.  A potential fix,
+              ;; yet to be backported to Python 2, is available at:
+              ;; https://github.com/python/cpython/commit/529525fb5a8fd9b96ab4021311a598c77588b918.
+              " --exclude test_urllib2_localnet test_httplib"))
 
         #:modules ((ice-9 ftw) (ice-9 match)
                    (guix build utils) (guix build gnu-build-system))
@@ -204,16 +230,35 @@
                                  (scandir testdir
                                           (match-lambda
                                             ((or "." "..") #f)
+                                            ("support" #f)
                                             (file
                                              (not
-                                              ;; FIXME: Add the 'support' directory
-                                              ;; in the next rebuild cycle, since it
-                                              ;; moved in 2.7.14.  See also
-                                              ;; python2-futures below.
                                               (string-prefix? "test_support."
                                                               file))))))
                        (call-with-output-file "__init__.py" (const #t))
                        #t)))))))
+          (add-after 'remove-tests 'rebuild-bytecode
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                ;; Disable hash randomization to ensure the generated .pycs
+                ;; are reproducible.
+                (setenv "PYTHONHASHSEED" "0")
+                (for-each
+                 (lambda (opt)
+                   (format #t "Compiling with optimization level: ~a\n"
+                           (if (null? opt) "none" (car opt)))
+                   (for-each (lambda (file)
+                               (apply invoke
+                                      `(,(string-append out "/bin/python")
+                                        ,@opt
+                                        "-m" "compileall"
+                                        "-f" ; force rebuild
+                                        ;; Don't build lib2to3, because it contains Python 3 code.
+                                        "-x" "lib2to3/.*"
+                                        ,file)))
+                             (find-files out "\\.py$")))
+                 (list '() '("-O") '("-OO")))
+                #t)))
           (add-after 'install 'move-tk-inter
             (lambda* (#:key outputs #:allow-other-keys)
               ;; When Tkinter support is built move it to a separate output so
@@ -237,6 +282,7 @@
                 #t))))))
     (inputs
      `(("bzip2" ,bzip2)
+       ("expat" ,expat)
        ("gdbm" ,gdbm)
        ("libffi" ,libffi)                         ; for ctypes
        ("sqlite" ,sqlite)                         ; for sqlite extension
@@ -267,16 +313,6 @@ data types.")
 ;; Current 2.x version.
 (define-public python-2 python-2.7)
 
-(define python-2/fixed
-  (package
-    (inherit python-2)
-    (source (origin
-              (inherit (package-source python-2))
-              (patches (append
-                        (origin-patches (package-source python-2))
-                        (search-patches "python2-CVE-2018-14647.patch"
-                                        "python2-CVE-2018-1000802.patch")))))))
-
 (define-public python2-called-python
   ;; Both 2.x and 3.x used to be called "python".  In commit
   ;; a7714d42de2c3082f3609d1e63c83d703fb39cf9 (March 2018), we renamed the
@@ -289,48 +325,58 @@ data types.")
 (define-public python-3.7
   (package (inherit python-2)
     (name "python")
-    (version "3.7.0")
-    (replacement python-3/fixed)
+    (version "3.7.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.python.org/ftp/python/"
                                   version "/Python-" version ".tar.xz"))
               (patches (search-patches
-                        "python-fix-tests.patch"
                         "python-3-fix-tests.patch"
                         "python-3-deterministic-build-info.patch"
                         "python-3-search-paths.patch"))
-              (patch-flags '("-p0"))
               (sha256
                (base32
-                "0j9mic5c9lbd2b20wka7hily7szz740wy9ilfrczxap63rnrk0h3"))
+                "0gxiv5617zd7dnqm5k9r4q2188lk327nf9jznwq9j6b8p0s92ygv"))
+              (modules '((guix build utils)))
               (snippet
                '(begin
-                  (for-each delete-file
-                            '(;; This test may hang and eventually run out of
-                              ;; memory on some systems:
-                              ;; <https://bugs.python.org/issue34587>
-                              "Lib/test/test_socket.py"
-
-                              ;; These tests fail on AArch64.
-                              "Lib/ctypes/test/test_win32.py"
-                              "Lib/test/test_fcntl.py"
-                              "Lib/test/test_posix.py"))
+                  ;; Delete the bundled copy of libexpat.
+                  (delete-file-recursively "Modules/expat")
+                  (substitute* "Modules/Setup.dist"
+                    ;; Link Expat instead of embedding the bundled one.
+                    (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n"))
                   #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments python-2)
+       ((#:make-flags _)
+        `(list (string-append
+                (format #f "TESTOPTS=-j~d" (parallel-job-count))
+                ;; test_mmap fails on low-memory systems.
+                " --exclude test_mmap"
+                ;; test_socket may hang and eventually run out of memory
+                ;; on some systems: <https://bugs.python.org/issue34587>.
+                " test_socket"
+                ;; XXX: test_ctypes fails on some platforms due to a problem in
+                ;; libffi 3.2.1: <https://bugs.python.org/issue23249>.
+                ,@(if (string-prefix? "aarch64" (%current-system))
+                      '(" test_ctypes")
+                      '()))))
        ((#:phases phases)
        `(modify-phases ,phases
+          (add-before 'check 'set-TZDIR
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; test_email requires the Olson time zone database.
+              (setenv "TZDIR"
+                      (string-append (assoc-ref inputs "tzdata")
+                                     "/share/zoneinfo"))
+              #t))
           ;; Unset SOURCE_DATE_EPOCH while running the test-suite and set it
           ;; again afterwards.  See <https://bugs.python.org/issue34022>.
           (add-before 'check 'unset-SOURCE_DATE_EPOCH
             (lambda _ (unsetenv "SOURCE_DATE_EPOCH") #t))
           (add-after 'check 'reset-SOURCE_DATE_EPOCH
             (lambda _ (setenv "SOURCE_DATE_EPOCH" "1") #t))
-           ;; FIXME: Without this phase we have close to 400 files that
-           ;; differ across different builds of this package.  With this phase
-           ;; there are 44 files left that differ.
-           (add-after 'remove-tests 'rebuild-bytecode
+           (replace 'rebuild-bytecode
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
                  ;; Disable hash randomization to ensure the generated .pycs
@@ -352,6 +398,9 @@ data types.")
                               (find-files out "\\.py$")))
                   (list '() '("-O") '("-OO")))
                  #t)))))))
+    (native-inputs
+     `(("tzdata" ,tzdata-for-tests)
+       ,@(package-native-inputs python-2)))
     (native-search-paths
      (list (search-path-specification
             (variable "PYTHONPATH")
@@ -362,14 +411,6 @@ data types.")
 ;; Current 3.x version.
 (define-public python-3 python-3.7)
 
-(define python-3/fixed
-  (package
-    (inherit python-3)
-    (source (origin
-              (inherit (package-source python-3))
-              (patches (append (origin-patches (package-source python-3))
-                               (search-patches "python-CVE-2018-14647.patch")))))))
-
 ;; Current major version.
 (define-public python python-3)
 
@@ -383,8 +424,10 @@ data types.")
 
     ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which
     ;; is invoked upon 'make install'.  'pip' also expects 'ctypes' and thus
-    ;; libffi.
-    (inputs `(("libffi" ,libffi)
+    ;; libffi.  Expat is needed for XML support which is expected by a lot
+    ;; of libraries out there.
+    (inputs `(("expat" ,expat)
+              ("libffi" ,libffi)
               ("zlib" ,zlib)))))
 
 (define-public python-minimal
@@ -394,8 +437,10 @@ data types.")
 
     ;; Build fails due to missing ctypes without libffi.
     ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
-    ;; zlib is required by 'zipimport', used by pip.
-    (inputs `(("libffi" ,libffi)
+    ;; zlib is required by 'zipimport', used by pip.  Expat is needed
+    ;; for XML support, which is generally expected to be available.
+    (inputs `(("expat" ,expat)
+              ("libffi" ,libffi)
               ("openssl" ,openssl)
               ("zlib" ,zlib)))))
 
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 3ee3a2c044..929144f30d 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -49,6 +50,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gperf)
@@ -427,11 +429,16 @@ system, and the core design of Django is reused in Grantlee.")
     (inputs
      `(,@(fold alist-delete
                (package-inputs qt)
-               '("harfbuzz" "libjpeg"))
+               '("harfbuzz" "libjpeg" "openssl"))
        ("libjpeg" ,libjpeg-8)
-       ("libsm" ,libsm)))
+       ("libsm" ,libsm)
+       ("openssl" ,openssl-1.0)))
     (native-inputs
-     `(,@(fold alist-delete
+     `(;; XXX: The JavaScriptCore engine does not build with the C++11 standard.
+       ;; We could build it with -std=gnu++98, but then we'll get in trouble with
+       ;; ICU later.  Just keep using GCC 5 for now.
+       ("gcc" ,gcc-5)
+       ,@(fold alist-delete
                (package-native-inputs qt)
                '("vulkan-headers"))))
 
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index 59fa8af8af..57d550d67f 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -55,18 +55,15 @@
 (define-public readline
   (package
     (name "readline")
-    (version (string-append "7.0."
-                            (number->string (length %patch-series-7.0))))
+    (version "8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/readline/readline-"
                                   (version-major+minor version) ".tar.gz"))
               (sha256
                (base32
-                "0d13sg9ksf982rrrmv5mb6a2p4ys9rvg9r71d6il0vr8hmql63bm"))
-              (patches (append
-                        %patch-series-7.0
-                        (search-patches "readline-link-ncurses.patch")))
+                "0qg4924hf4hg0r0wbx2chswsr08734536fh5iagkd3a7f4czafg3"))
+              (patches (search-patches "readline-link-ncurses.patch"))
               (patch-flags '("-p0"))))
     (build-system gnu-build-system)
     (propagated-inputs `(("ncurses" ,ncurses)))
@@ -101,6 +98,23 @@ comfortable for anyone.")
     (license gpl3+)
     (home-page "https://savannah.gnu.org/projects/readline/")))
 
+(define-public readline-7
+  (package (inherit readline)
+    (name "readline")
+    (version (string-append "7.0."
+                            (number->string (length %patch-series-7.0))))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/readline/readline-"
+                                  (version-major+minor version) ".tar.gz"))
+              (sha256
+               (base32
+                "0d13sg9ksf982rrrmv5mb6a2p4ys9rvg9r71d6il0vr8hmql63bm"))
+              (patches (append
+                        %patch-series-7.0
+                        (search-patches "readline-link-ncurses.patch")))
+              (patch-flags '("-p0"))))))
+
 (define-public readline-6.2
   (package (inherit readline)
     (version "6.2")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index a886a1cdd2..7d736c7c27 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -8485,14 +8485,14 @@ interface over different adapters.")
 (define-public ruby-nio4r
   (package
    (name "ruby-nio4r")
-   (version "2.3.1")
+   (version "2.4.0")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "nio4r" version))
      (sha256
       (base32
-       "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr"))))
+       "0v2cpqmw6dmysa91ffzl736kgjjzmnf4xlgz6g16fk4yqhn71340"))))
    (build-system ruby-build-system)
    (arguments
     '(#:phases
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 6d1b9f1fe4..f3fee4c126 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -387,7 +387,7 @@ test = { path = \"../libtest\" }
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison) ; For the tests
-       ("cmake" ,cmake)
+       ("cmake" ,cmake-minimal)
        ("flex" ,flex) ; For the tests
        ("gdb" ,gdb)   ; For the tests
        ("procps" ,procps) ; For the tests
@@ -399,7 +399,7 @@ test = { path = \"../libtest\" }
     (inputs
      `(("jemalloc" ,jemalloc-4.5.0)
        ("llvm" ,llvm-3.9.1)
-       ("openssl" ,openssl)
+       ("openssl" ,openssl-1.0)
        ("libssh2" ,libssh2) ; For "cargo"
        ("libcurl" ,curl)))  ; For "cargo"
 
@@ -408,10 +408,7 @@ test = { path = \"../libtest\" }
     ;; modules (see <https://bugs.gnu.org/31392>).
     (native-search-paths
      (list (search-path-specification
-            (variable "C_INCLUDE_PATH")
-            (files '("include")))
-           (search-path-specification
-            (variable "CPLUS_INCLUDE_PATH")
+            (variable "CPATH")
             (files '("include")))
            (search-path-specification
             (variable "LIBRARY_PATH")
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index a6e71cb75a..c69345910b 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -43,6 +43,7 @@
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -225,6 +226,7 @@ anywhere.")
     (native-inputs
      `(("docbook-xsl" ,docbook-xsl)    ;for generating manpages
        ("xsltproc" ,libxslt)           ;ditto
+       ("rpcsvc-proto" ,rpcsvc-proto)  ;for 'rpcgen'
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python)))
diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm
index 25122c10ae..e9c998c7b6 100644
--- a/gnu/packages/scribus.scm
+++ b/gnu/packages/scribus.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index cb5b5839df..6093405c43 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -121,6 +122,15 @@ joystick, and graphics hardware.")
        ((#:configure-flags flags)
         `(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
                    "--disable-kmsdrm-shared")
+                 ,flags))
+       ((#:make-flags flags ''())
+        ;; Add the Fcitx header files to GCCs "system header" search path
+        ;; in order to suppress compiler warnings induced by those:
+        ;;   .../include/fcitx-utils/utarray.h:178:9: error: ISO C90 forbids
+        ;;   mixed declarations and code [-Werror=declaration-after-statement]
+        `(append (list (string-append "C_INCLUDE_PATH="
+                                      (assoc-ref %build-inputs "fcitx")
+                                      "/include"))
                  ,flags))))
     (inputs
      ;; SDL2 needs to be built with ibus support otherwise some systems
diff --git a/gnu/packages/selinux.scm b/gnu/packages/selinux.scm
index e540a140a1..1c45cb8c7e 100644
--- a/gnu/packages/selinux.scm
+++ b/gnu/packages/selinux.scm
@@ -131,6 +131,7 @@ module into a binary representation.")
 (define-public libselinux
   (package (inherit libsepol)
     (name "libselinux")
+    (outputs '("out" "python"))
     (arguments
      (substitute-keyword-arguments (package-arguments libsepol)
        ((#:make-flags flags)
@@ -139,7 +140,7 @@ module into a binary representation.")
                               (assoc-ref %build-inputs "libsepol")
                               "/lib/libsepol.a")
                 (string-append "PYSITEDIR="
-                               (assoc-ref %outputs "out")
+                               (assoc-ref %outputs "python")
                                "/lib/python"
                                ,(version-major+minor (package-version python))
                                "/site-packages/")
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 9fefa5a0c1..b01886c775 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
@@ -102,7 +102,7 @@ such as compact binary encodings, XML, or JSON.")
 (define-public msgpack
   (package
     (name "msgpack")
-    (version "1.4.2")
+    (version "3.2.0")
     (source
      (origin
        (method url-fetch)
@@ -118,13 +118,10 @@ such as compact binary encodings, XML, or JSON.")
            #t))
        (sha256
         (base32
-         "18hzmyfg3mvnp7ab03nqdzzvqagkl42gygjpi4zv4i7aca2dmwf0"))))
-    (build-system gnu-build-system)
+         "1zhsap7d9zqdm9h1qnpaw78v1sh3rx2if7gk4dszs5m3cg1jiapv"))))
+    (build-system cmake-build-system)
     (native-inputs
      `(("googletest" ,googletest)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
     (propagated-inputs
      `(("zlib" ,zlib))) ;; Msgpack installs two headers (zbuffer.h,
@@ -169,14 +166,16 @@ that implements both the msgpack and msgpack-rpc specifications.")
 (define-public lua-libmpack
   (package (inherit libmpack)
     (name "lua-libmpack")
+    (version "1.0.8")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/libmpack/libmpack-lua/"
-                                  "archive/" (package-version libmpack) ".tar.gz"))
-              (file-name (string-append name "-" (package-version libmpack) ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libmpack/libmpack-lua")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "153zrrbyxhf71dgzjjhrk56rfwk3nisslpgcqyg44v8fnz1xpk6i"))))
+                "1ijvzgq5hvib03w5rghv31wi7byamwg7qdx5pawvhvnflaii8ivw"))))
     (build-system gnu-build-system)
     (arguments
      `(;; FIXME: tests require "busted", which is not yet available in Guix.
diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index a8d214794e..edc8d6e190 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -620,7 +620,7 @@ user interface to the FEniCS core components and external libraries.")
        ("python-matplotlib" ,python-matplotlib)
        ,@(alist-delete "python" (package-inputs fenics-dolfin))))
     (native-inputs
-     `(("cmake" ,cmake)
+     `(("cmake" ,cmake-minimal)
        ("ply" ,python-ply)
        ("pytest" ,python-pytest)
        ("python-decorator" ,python-decorator)
diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
index 05d7ce6b92..6d6df17f90 100644
--- a/gnu/packages/sqlite.scm
+++ b/gnu/packages/sqlite.scm
@@ -46,8 +46,7 @@
 (define-public sqlite
   (package
    (name "sqlite")
-   (replacement sqlite-3.26.0)
-   (version "3.24.0")
+   (version "3.28.0")
    (source (origin
             (method url-fetch)
             (uri (let ((numeric-version
@@ -59,19 +58,21 @@
                                             (map (cut string-pad <> 2 #\0)
                                                  other-digits))
                                            6 #\0))))))
-                   (string-append "https://sqlite.org/2018/sqlite-autoconf-"
+                   (string-append "https://sqlite.org/2019/sqlite-autoconf-"
                                   numeric-version ".tar.gz")))
             (sha256
              (base32
-              "0jmprv2vpggzhy7ma4ynmv1jzn3pfiwzkld0kkg6hvgvqs44xlfr"))))
+              "1hxpi45crbqp6lacl7z611lna02k956m9bsy2bjzrbb2y23546yn"))))
    (build-system gnu-build-system)
    (inputs `(("readline" ,readline)))
    (arguments
     `(#:configure-flags
-      ;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_UNLOCK_NOTIFY and
-      ;; -DSQLITE_ENABLE_DBSTAT_VTAB to CFLAGS.  GNU Icecat will refuse
-      ;; to use the system SQLite unless these options are enabled.
+      ;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_FTS3,
+      ;; -DSQLITE_ENABLE_UNLOCK_NOTIFY and -DSQLITE_ENABLE_DBSTAT_VTAB
+      ;; to CFLAGS.  GNU Icecat will refuse to use the system SQLite
+      ;; unless these options are enabled.
       (list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE "
+                           "-DSQLITE_ENABLE_FTS3 "
                            "-DSQLITE_ENABLE_UNLOCK_NOTIFY "
                            "-DSQLITE_ENABLE_DBSTAT_VTAB"))))
    (home-page "https://www.sqlite.org/")
@@ -83,26 +84,6 @@ widely deployed SQL database engine in the world.  The source code for SQLite
 is in the public domain.")
    (license license:public-domain)))
 
-(define-public sqlite-3.26.0
-  (package (inherit sqlite)
-    (version "3.26.0")
-    (source (origin
-              (method url-fetch)
-              (uri (let ((numeric-version
-                          (match (string-split version #\.)
-                            ((first-digit other-digits ...)
-                             (string-append first-digit
-                                            (string-pad-right
-                                             (string-concatenate
-                                              (map (cut string-pad <> 2 #\0)
-                                                   other-digits))
-                                             6 #\0))))))
-                     (string-append "https://sqlite.org/2018/sqlite-autoconf-"
-                                    numeric-version ".tar.gz")))
-              (sha256
-               (base32
-                "0pdzszb4sp73hl36siiv3p300jvfvbcdxi2rrmkwgs6inwznmajx"))))))
-
 ;; This is used by Qt.
 (define-public sqlite-with-column-metadata
   (package/inherit sqlite
diff --git a/gnu/packages/squirrel.scm b/gnu/packages/squirrel.scm
index 2c3ed6e570..1b9489882f 100644
--- a/gnu/packages/squirrel.scm
+++ b/gnu/packages/squirrel.scm
@@ -71,7 +71,7 @@
                 (find-files "../squirrel3/include")))
              #t)))))
     (native-inputs
-     `(("cmake" ,cmake)
+     `(("cmake" ,cmake-minimal)
        ("python-sphinx" ,python-sphinx)))
     (home-page "https://squirrel-lang.org/")
     (synopsis "High level imperative, object-oriented programming language")
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 010ed40707..596bc55a12 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -111,7 +111,7 @@ applications.")
 (define-public libssh2
   (package
    (name "libssh2")
-   (version "1.8.2")
+   (version "1.9.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -119,21 +119,13 @@ applications.")
                    version ".tar.gz"))
             (sha256
              (base32
-              "0rqd37pc80nm2pz4sa2m9pfc48axys7jwq1l7z0vii5nyvchg0q8"))
-            (patches
-             (search-patches "libssh2-fix-build-failure-with-gcrypt.patch"))))
+              "1zfsz9nldakfz61d2j70pk29zlmj7w2vv46s9l3x2prhcgaqpyym"))))
    (build-system gnu-build-system)
    ;; The installed libssh2.pc file does not include paths to libgcrypt and
    ;; zlib libraries, so we need to propagate the inputs.
    (propagated-inputs `(("libgcrypt" ,libgcrypt)
                         ("zlib" ,zlib)))
-   (arguments `(#:configure-flags `("--with-libgcrypt")
-                #:phases (modify-phases %standard-phases
-                           (replace 'bootstrap
-                             (lambda _
-                               (invoke "autoreconf" "-v"))))))
-   (native-inputs `(("autoconf" ,autoconf)
-                    ("automake" ,automake)))
+   (arguments `(#:configure-flags `("--with-libgcrypt")))
    (synopsis "Client-side C library implementing the SSH2 protocol")
    (description
     "libssh2 is a library intended to allow software developers access to
@@ -143,24 +135,6 @@ a server that supports the SSH-2 protocol.")
    (license license:bsd-3)
    (home-page "https://www.libssh2.org/")))
 
-;; XXX A hidden special obsolete libssh2 for temporary use in the curl package.
-;; <https://bugs.gnu.org/34927>
-(define-public libssh2-1.8.0
-  (hidden-package
-    (package
-      (inherit libssh2)
-      (version "1.8.0")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://www.libssh2.org/download/libssh2-"
-                      version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1m3n8spv79qhjq4yi0wgly5s5rc8783jb1pyra9bkx1md0plxwrr"))
-                (patches
-                 (search-patches "libssh2-fix-build-failure-with-gcrypt.patch")))))))
-
 (define-public openssh
   (package
    (name "openssh")
diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index 6d6caab0ad..7bb71dce13 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -81,15 +81,14 @@ fundamental object types for C.")
 (define-public sssd
   (package
     (name "sssd")
-    (version "1.16.2")
+    (version "1.16.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://releases.pagure.org/SSSD/sssd/"
                                   "sssd-" version ".tar.gz"))
-              (patches (search-patches "sssd-curl-compat.patch"))
               (sha256
                (base32
-                "032ppk57qs1lnvz7pb7lw9ldwm9i1yagh9fzgqgn6na3bg61ynzy"))))
+                "0ngr7cgimyjc6flqkm7psxagp1m4jlzpqkn28pliifbmdg6i5ckb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -130,10 +129,6 @@ fundamental object types for C.")
            (lambda _
              (substitute* "src/tests/responder_socket_access-tests.c"
                (("tcase_add_test\\(tc_utils, resp_str_to_array_test\\);") ""))
-             ;; XXX: These tests fail with recent versions of ldb.  See
-             ;; <https://pagure.io/SSSD/sssd/issue/3563>.
-             (substitute* "Makefile.in"
-               (("sysdb-tests\\$\\(EXEEXT\\)") ""))
              #t)))))
     (inputs
      `(("augeas" ,augeas)
diff --git a/gnu/packages/stb.scm b/gnu/packages/stb.scm
index df31bd0f86..5444347644 100644
--- a/gnu/packages/stb.scm
+++ b/gnu/packages/stb.scm
@@ -26,8 +26,8 @@
 (define stb
   ;; stb is a collection of libraries developed within the same repository.
   ;; When updating this, remember to change versions below as appropriate.
-  (let ((commit "e6afb9cbae4064da8c3e69af3ff5c4629579c1d2")
-        (revision "0"))
+  (let ((commit "2c2908f50515dcd939f24be261c3ccbcd277bb49")
+        (revision "1"))
     (package
       (name "stb")
       (home-page "https://github.com/nothings/stb")
@@ -39,7 +39,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "079nsn9bnb8c0vfq26g5l53q6gzx19a5x9q2nb55mpcljxsgxnmf"))
+                  "1z753rscqc4clp0rd57bw68i60kz694y1z52bwv6slzmkgds1cki"))
                 (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -92,12 +92,12 @@ the C programming language.")
 ;; converted to macros as outlined in <https://bugs.gnu.org/32155>.
 (define-public stb-image
   (make-stb-header-package
-   "stb-image" "2.19"
+   "stb-image" "2.22"
    "stb-image is a small and self-contained library for image loading or
 decoding from file or memory.  A variety of formats are supported."))
 
 (define-public stb-image-write
   (make-stb-header-package
-   "stb-image-write" "1.09"
+   "stb-image-write" "1.13"
    "stb-image-write is a small library for writing image files to the
 C@tie{}@code{stdio} interface."))
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index aa7d34acc1..5c702e3362 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -108,7 +108,7 @@
                (string-append "-DXFS_INCLUDE_DIR="
                               (assoc-ref %build-inputs "xfsprogs") "/include")
                "-DCMAKE_INSTALL_LOCALSTATEDIR=/var"
-               "-DENABLE_SHARED=ON"
+               "-DBUILD_SHARED_LIBS=ON"
                "-DWITH_SYSTEM_ROCKSDB=ON"
                "-DWITH_SYSTEM_BOOST=ON"
                "-DWITH_PYTHON3=ON"
@@ -236,11 +236,6 @@
                  (("^add_ceph_test\\(osd-copy-from\\.sh.*$") "\n")
                  (("^add_ceph_test\\(osd-fast-mark-down\\.sh.*$") "\n"))
                #t)))
-         (add-before 'configure 'gcc-workaround
-           (lambda _
-             (unsetenv "C_INCLUDE_PATH")
-             (unsetenv "CPLUS_INCLUDE_PATH")
-             #t))
          (add-before 'check 'set-check-environment
            (lambda _
              ;; Run tests in parallel.
@@ -284,12 +279,22 @@
                            (wrap-program (string-append out "/bin/" executable)
                              `("PYTHONPATH" ":" prefix (,PYTHONPATH))))
                          scripts)
+               #t)))
+         (add-before 'validate-runpath 'remove-test-executables
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; FIXME: The BUILD_SHARED_LIBS CMake flag causes the test executables
+               ;; to link the bundled googletest dynamically, which in turn causes
+               ;; RUNPATH validation failures because 'libgtest.so' and friends do
+               ;; not get absolute RUNPATH entries.  The next version of Ceph can use
+               ;; an external googletest; for now just remove the test executables.
+               (for-each delete-file (find-files (string-append out "/bin")
+                                                 "ceph_(test|perf)"))
                #t))))))
     (outputs
      '("out" "lib"))
     (native-inputs
-     `(("gcc" ,gcc-7)                      ;7 or later is required
-       ("gperf" ,gperf)
+     `(("gperf" ,gperf)
        ("pkg-config" ,pkg-config)
        ("python-cython" ,python-cython)
        ("python-sphinx" ,python-sphinx)
diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm
index 61f6a8ccfe..b1b17fc68d 100644
--- a/gnu/packages/swig.scm
+++ b/gnu/packages/swig.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -50,7 +51,14 @@
            ;; Required since Perl 5.26.0's removal of the current
            ;; working directory from @INC.
            ;; TODO Try removing this for later versions of SWIG.
-           (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)))))
+           (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t))
+         (add-before 'configure 'workaround-gcc-bug
+           (lambda _
+             ;; XXX: Don't add the -isystem flag, or GCCs #include_next
+             ;; won't be able to find <stdlib.h>.
+             (substitute* "configure"
+               (("-isystem ") "-I"))
+             #t)))))
     (native-inputs `(("boost" ,boost)
                      ("pcre" ,pcre "bin")))       ;for 'pcre-config'
     (inputs `(;; Provide these to run the corresponding tests.
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index da8787285f..9de3ee57e4 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -63,8 +63,7 @@
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "avahi")
-                                    "/include/avahi-compat-libdns_sd/:"
-                                    (getenv "CPLUS_INCLUDE_PATH")))
+                                    "/include/avahi-compat-libdns_sd"))
              ;; See https://github.com/symless/synergy-core/pull/6359/
              (substitute* "src/gui/src/ScreenSetupView.cpp"
                (("#include <QtGui>" m)
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 4840ac4e10..21ca185066 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -43,14 +43,14 @@
 (define-public tcl
   (package
     (name "tcl")
-    (version "8.6.8")
+    (version "8.6.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/tcl/Tcl/"
                                   version "/tcl" version "-src.tar.gz"))
               (sha256
                (base32
-                "0sprsg7wnraa4cbwgbcliylm6p0rspfymxn8ww02pr4ca70v0g64"))))
+                "0kjzj7mkzfnb7ksxanbibibfpciyvsh5ffdlhs0bmfc75kgd435d"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -138,14 +138,15 @@ X11 GUIs.")
 (define-public tk
   (package
     (name "tk")
-    (version "8.6.8")
+    (version "8.6.9.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/tcl/Tcl/"
-                                 version "/tk" version "-src.tar.gz"))
+                                 (version-prefix version 3) "/tk"
+                                 version "-src.tar.gz"))
              (sha256
               (base32
-               "0cvvznjwfn0i9vj9cw3wg8svx25ha34gg57m4xd1k5fyinhbrrs9"))
+               "1d7bfkxpacy33w5nahf73lkwxqpff44w1jplg7i2gmwgiaawvjwg"))
              (patches (search-patches "tk-find-library.patch"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 913ff5157d..1e26fc3965 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -260,12 +260,12 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                                       "&id=" revision))
                   (file-name (string-append "texlive-bin-" name))
                   (sha256 (base32 hash)))))
-             (arch-revision "e1975bce0b9d270d7c9773c5beb7e87d61ee8f57"))
+             (arch-revision "c4b99aba97213ea554b6592a4916d3c7394a6d7b"))
          (append (search-patches  "texlive-bin-CVE-2018-17407.patch"
                                   "texlive-bin-luatex-poppler-compat.patch")
                  (list
-                  (arch-patch "pdftex-poppler0.72.patch" arch-revision
-                              "0p46b6xxxg2s3hx67r0wpz16g3qygx65hpc581xs3jz5pvsiq3y7")
+                  (arch-patch "pdftex-poppler0.76.patch" arch-revision
+                              "15ypbh21amfsdxy7ca825x28lkmmkklxk1w660gpgvzdi7s70h0b")
                   (arch-patch "xetex-poppler-fixes.patch" arch-revision
                               "1jj1p5zkjljb7id9pjv29cw0cf8mwrgrh4ackgzz9c200vaqpsvx")))))))
    (build-system gnu-build-system)
@@ -316,9 +316,6 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
     `(#:out-of-source? #t
       #:configure-flags
        `("--disable-native-texlive-build"
-         ;; XXX: This is needed because recent Poppler requires C++11 or later.
-         ;; Remove after switch to GCC >= 6.
-         "CXXFLAGS=-std=gnu++11"
          "--with-system-cairo"
          "--with-system-freetype2"
          "--with-system-gd"
@@ -360,11 +357,24 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
             #t))
         (add-after 'unpack 'use-code-for-new-poppler
           (lambda _
-            (copy-file "texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc"
+            (copy-file "texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc"
                        "texk/web2c/pdftexdir/pdftoepdf.cc")
-            (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.72.0.cc"
+            (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc"
                        "texk/web2c/pdftexdir/pdftosrc.cc")
             #t))
+        (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler
+          (lambda _
+            ;; Adjust for deprecated types in Poppler 0.73 and later.
+            (substitute* (append
+                          (find-files "texk/web2c/luatexdir/" "\\.(cc|w)$")
+                          '("texk/web2c/pdftexdir/pdftosrc.cc"))
+              (("GBool") "bool")
+              (("gFalse") "false")
+              (("gTrue") "true")
+              (("getCString") "c_str")
+              (("Guint") "unsigned int")
+              (("Guchar") "unsigned char"))
+            #t))
         (add-after 'unpack 'disable-failing-test
           (lambda _
             ;; FIXME: This test fails on 32-bit architectures since Glibc 2.28:
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index cbb0c317dd..1edeea2425 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -32,15 +32,14 @@
 (define-public texinfo
   (package
     (name "texinfo")
-    (version "6.5")
+    (version "6.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/texinfo/texinfo-"
                                   version ".tar.xz"))
-              (patches (search-patches "texinfo-perl-compat.patch"))
               (sha256
                (base32
-                "0qjzvbvnv9003xdrcpi3jp7y68j4hq2ciw9frh2hghh698zlnxvp"))))
+                "0rixv4c301djr0d0cnsxs8c1wjndi6bf9vi5axz6mwjkv80cmfcv"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("perl" ,perl)))
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index 9aad36e587..c75ed6f2cd 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -117,7 +117,7 @@ expressions.")
     (source
      (origin
       (method url-fetch)
-      (uri (pypi-uri "pytz" version ".tar.gz"))
+      (uri (pypi-uri "pytz" version))
       (sha256
        (base32
         "0hg1r2c41gnmljdsdmdgy6kb1zkfmxsf49imd96g8znp4cyxsiyp"))))
@@ -166,17 +166,31 @@ Pendulum instances.")
 (define-public python-dateutil
   (package
     (name "python-dateutil")
-    (version "2.7.3")
+    (version "2.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-dateutil" version))
        (sha256
         (base32
-         "1f7h54lg0w2ckch7592xpjkh8dg87k2br256h0iw49zn6bg02w72"))))
+         "17nsfhy4xdz1khrfxa61vd7pmvd5z0wa3zb6v4gb4kfnykv0b668"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      ;; Delete tests that depend on "freezegun" to avoid a
+                      ;; circular dependency.
+                      (delete-file "dateutil/test/test_utils.py")
+                      (delete-file "dateutil/test/test_rrule.py")
+
+                      ;; XXX: Fails to get timezone from /etc/localtime.
+                      (delete-file "dateutil/test/test_tz.py")
+
+                      (invoke "pytest" "-vv"))))))
     (native-inputs
-     `(("python-setuptools-scm" ,python-setuptools-scm)))
+     `(("python-pytest" ,python-pytest)
+       ("python-setuptools-scm" ,python-setuptools-scm)))
     (propagated-inputs
      `(("python-six" ,python-six)))
     (home-page "https://dateutil.readthedocs.io/en/stable/")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 93c79d63e4..4f7b67cf46 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
@@ -70,7 +70,7 @@
 (define-public libtasn1
   (package
     (name "libtasn1")
-    (version "4.13")
+    (version "4.14")
     (source
      (origin
       (method url-fetch)
@@ -78,7 +78,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "1jlc1iahj8k3haz28j55nzg7sgni5h41vqy461i1bpbx6668wlky"))))
+        "025sqnlzji78ss2fi78dajc0v0h5fi02wp39hws41sn8qnjlnq4y"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -162,7 +162,7 @@ living in the same process.")
 (define-public gnutls
   (package
     (name "gnutls")
-    (version "3.6.5")
+    (version "3.6.9")
     (source (origin
              (method url-fetch)
              (uri
@@ -174,16 +174,7 @@ living in the same process.")
              (patches (search-patches "gnutls-skip-trust-store-test.patch"))
              (sha256
               (base32
-               "0ddvg97dyrh8dkffv1mdc0knxx5my3qdbzv97s4a6jggmk9wwgh7"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                 ;; XXX: The generated configure script in GnuTLS 3.6.5
-                 ;; apparently does not know about Guile 2.2.
-                 (substitute* "configure"
-                   (("guile_versions_to_search=\"2\\.0 1\\.8\"")
-                    "guile_versions_to_search=\"2.2 2.0 1.8\""))
-                 #t))))
+               "1jqz5s3lv8sa53348cfi9nr5pw5l55n8m40b8msdvv0pb2jzqca3"))))
     (build-system gnu-build-system)
     (arguments
      `(; Ensure we don't keep a reference to this buggy software.
@@ -201,6 +192,15 @@ living in the same process.")
              ;; independently.  This seems suboptimal.
              "--with-default-trust-store-dir=/etc/ssl/certs"
 
+             ;; Tell the build system that we want Guile bindings installed to
+             ;; the output instead of Guiles own module directory.
+             (string-append "--with-guile-site-dir="
+                            "$(datarootdir)/guile/site/$(GUILE_EFFECTIVE_VERSION)")
+             (string-append "--with-guile-site-ccache-dir="
+                            "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache")
+             (string-append "--with-guile-extension-dir="
+                            "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions")
+
              ;; FIXME: Temporarily disable p11-kit support since it is not
              ;; working on mips64el.
              "--without-p11-kit")
@@ -269,8 +269,8 @@ required structures.")
 (define-public openssl
   (package
    (name "openssl")
-   (replacement openssl/fixed)
-   (version "1.0.2p")
+   (version "1.1.1c")
+   (replacement openssl-1.1.1d)
    (source (origin
              (method url-fetch)
              (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -282,13 +282,12 @@ required structures.")
                                        "/openssl-" version ".tar.gz")))
              (sha256
               (base32
-               "003xh9f898i56344vpvpxxxzmikivxig4xwlm7vbi7m8n43qxaah"))
-             (patches (search-patches "openssl-runpath.patch"
-                                      "openssl-c-rehash-in.patch"))))
+               "142c7zdlz06hjrrvinb9f276czc78bnkyhd9xma621qmmmwk1yzn"))
+             (patches (search-patches "openssl-1.1-c-rehash-in.patch"))))
    (build-system gnu-build-system)
    (outputs '("out"
-              "doc"                               ;1.5MiB of man3 pages
-              "static"))                          ;6MiB of .a files
+              "doc"         ;6.8 MiB of man3 pages and full HTML documentation
+              "static"))    ;6.4 MiB of .a files
    (native-inputs `(("perl" ,perl)))
    (arguments
     `(#:disallowed-references (,perl)
@@ -301,41 +300,27 @@ required structures.")
       #:disallowed-references ,(list (canonical-package perl))
       #:phases
       (modify-phases %standard-phases
-        (add-before
-         'configure 'patch-Makefile.org
-         (lambda* (#:key outputs #:allow-other-keys)
-           ;; The default MANDIR is some unusual place.  Fix that.
-           (let ((out (assoc-ref outputs "out")))
-             (patch-makefile-SHELL "Makefile.org")
-             (substitute* "Makefile.org"
-               (("^MANDIR[[:blank:]]*=.*$")
-                (string-append "MANDIR = " out "/share/man\n")))
-             #t)))
-        (replace
-         'configure
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out")))
-             (invoke "./config"
-                     "shared"                 ;build shared libraries
-                     "--libdir=lib"
-
-                     ;; The default for this catch-all directory is
-                     ;; PREFIX/ssl.  Change that to something more
-                     ;; conventional.
-                     (string-append "--openssldir=" out
-                                    "/share/openssl-" ,version)
-
-                     (string-append "--prefix=" out)))))
-        (add-after
-         'install 'make-libraries-writable
-         (lambda* (#:key outputs #:allow-other-keys)
-           ;; Make libraries writable so that 'strip' does its job.
-           (let ((out (assoc-ref outputs "out")))
-             (for-each (lambda (file)
-                         (chmod file #o644))
-                       (find-files (string-append out "/lib")
-                                   "\\.so"))
-             #t)))
+        (replace 'configure
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                   (lib (string-append out "/lib")))
+              ;; It's not a shebang so patch-source-shebangs misses it.
+              (substitute* "config"
+                (("/usr/bin/env")
+                 (string-append (assoc-ref %build-inputs "coreutils")
+                                "/bin/env")))
+              (invoke "./config"
+                      "shared"       ;build shared libraries
+                      "--libdir=lib"
+
+                      ;; The default for this catch-all directory is
+                      ;; PREFIX/ssl.  Change that to something more
+                      ;; conventional.
+                      (string-append "--openssldir=" out
+                                     "/share/openssl-" ,version)
+
+                      (string-append "--prefix=" out)
+                      (string-append "-Wl,-rpath," lib)))))
         (add-after 'install 'move-static-libraries
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Move static libraries to the "static" output.
@@ -348,31 +333,20 @@ required structures.")
                           (delete-file file))
                         (find-files lib "\\.a$"))
               #t)))
-        (add-after 'install 'move-man3-pages
+        (add-after 'install 'move-extra-documentation
           (lambda* (#:key outputs #:allow-other-keys)
-            ;; Move section 3 man pages to "doc".
-            (let* ((out    (assoc-ref outputs "out"))
-                   (man3   (string-append out "/share/man/man3"))
-                   (doc    (assoc-ref outputs "doc"))
-                   (target (string-append doc "/share/man/man3")))
-              (mkdir-p target)
-              (for-each (lambda (file)
-                          (rename-file file
-                                       (string-append target "/"
-                                                      (basename file))))
-                        (find-files man3))
-              (delete-file-recursively man3)
-              #t)))
-        (add-before
-         'patch-source-shebangs 'patch-tests
-         (lambda* (#:key inputs native-inputs #:allow-other-keys)
-           (let ((bash (assoc-ref (or native-inputs inputs) "bash")))
-             (substitute* (find-files "test" ".*")
-               (("/bin/sh")
-                (string-append bash "/bin/sh"))
-               (("/bin/rm")
-                "rm"))
-             #t)))
+               ;; Move man3 pages and full HTML documentation to "doc".
+               (let* ((out    (assoc-ref outputs "out"))
+                      (man3   (string-append out "/share/man/man3"))
+                      (html (string-append out "/share/doc/openssl"))
+                      (doc    (assoc-ref outputs "doc"))
+                      (man-target (string-append doc "/share/man/man3"))
+                      (html-target (string-append doc "/share/doc/openssl")))
+                 (copy-recursively man3 man-target)
+                 (delete-file-recursively man3)
+                 (copy-recursively html html-target)
+                 (delete-file-recursively html)
+                 #t)))
         (add-after
          'install 'remove-miscellany
          (lambda* (#:key outputs #:allow-other-keys)
@@ -398,21 +372,11 @@ required structures.")
    (license license:openssl)
    (home-page "https://www.openssl.org/")))
 
-(define-public openssl/fixed
-  (hidden-package
-   (package
-     (inherit openssl)
-     (source (origin
-               (inherit (package-source openssl))
-               (patches (append (origin-patches (package-source openssl))
-                                (search-patches "openssl-CVE-2019-1559.patch"))))))))
-
-(define-public openssl-next
-  (package
-    (inherit openssl)
-    (name "openssl")
-    (version "1.1.1d")
-    (source (origin
+(define openssl-1.1.1d
+  (package/inherit
+   openssl
+   (version "1.1.1d")
+   (source (origin
              (method url-fetch)
              (uri (list (string-append "https://www.openssl.org/source/openssl-"
                                        version ".tar.gz")
@@ -421,58 +385,86 @@ required structures.")
                         (string-append "ftp://ftp.openssl.org/source/old/"
                                        (string-trim-right version char-set:letter)
                                        "/openssl-" version ".tar.gz")))
-              (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
+             (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
+             (sha256
+              (base32
+               "1whinyw402z3b9xlb3qaxv4b9sk4w1bgh9k0y8df1z4x3yy92fhy"))))))
+
+(define-public openssl-1.0
+  (package
+    (inherit openssl)
+    (name "openssl")
+    (version "1.0.2s")
+    (source (origin
+              (method url-fetch)
+              (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
-                "1whinyw402z3b9xlb3qaxv4b9sk4w1bgh9k0y8df1z4x3yy92fhy"))))
+                "15mbmg8hf7s12vr3v2bdc0pi9y4pdbnsxhzk4fyyap42jaa5rgfa"))
+              (patches (search-patches "openssl-runpath.patch"
+                                       "openssl-c-rehash-in.patch"))))
     (outputs '("out"
-               "doc"        ; 6.8 MiB of man3 pages and full HTML documentation
-               "static"))   ; 6.4 MiB of .a files
+               "doc"                    ;1.5MiB of man3 pages
+               "static"))               ;6MiB of .a files
     (arguments
      (substitute-keyword-arguments (package-arguments openssl)
        ((#:phases phases)
         `(modify-phases ,phases
-           (delete 'patch-tests)          ; These two phases are not needed by
-           (delete 'patch-Makefile.org)   ; OpenSSL 1.1.
-
-           ;; Override configure phase since -rpath is now a configure option.
-           (replace 'configure
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (lib (string-append out "/lib")))
-                 ;; It's not a shebang so patch-source-shebangs misses it.
-                 (substitute* "config"
-                   (("/usr/bin/env")
-                    (string-append (assoc-ref %build-inputs "coreutils")
-                                   "/bin/env")))
-                 (invoke "./config"
-                         "shared"       ;build shared libraries
-                         "--libdir=lib"
-
-                         ;; The default for this catch-all directory is
-                         ;; PREFIX/ssl.  Change that to something more
-                         ;; conventional.
-                         (string-append "--openssldir=" out
-                                        "/share/openssl-" ,version)
-
-                         (string-append "--prefix=" out)
-                         (string-append "-Wl,-rpath," lib)))))
-
-           (delete 'move-man3-pages)
-           (add-after 'install 'move-extra-documentation
+           (add-before 'patch-source-shebangs 'patch-tests
+             (lambda* (#:key inputs native-inputs #:allow-other-keys)
+               (let ((bash (assoc-ref (or native-inputs inputs) "bash")))
+                 (substitute* (find-files "test" ".*")
+                   (("/bin/sh")
+                    (string-append bash "/bin/sh"))
+                   (("/bin/rm")
+                    "rm"))
+                 #t)))
+           (add-before 'configure 'patch-Makefile.org
              (lambda* (#:key outputs #:allow-other-keys)
-               ;; Move man3 pages and full HTML documentation to "doc".
-               (let* ((out    (assoc-ref outputs "out"))
-                      (man3   (string-append out "/share/man/man3"))
-                      (html (string-append out "/share/doc/openssl"))
-                      (doc    (assoc-ref outputs "doc"))
-                      (man-target (string-append doc "/share/man/man3"))
-                      (html-target (string-append doc "/share/doc/openssl")))
-                 (copy-recursively man3 man-target)
-                 (delete-file-recursively man3)
-                 (copy-recursively html html-target)
-                 (delete-file-recursively html)
+               ;; The default MANDIR is some unusual place.  Fix that.
+               (let ((out (assoc-ref outputs "out")))
+                 (patch-makefile-SHELL "Makefile.org")
+                 (substitute* "Makefile.org"
+                   (("^MANDIR[[:blank:]]*=.*$")
+                    (string-append "MANDIR = " out "/share/man\n")))
                  #t)))
+        (replace 'configure
+          ;; Override this phase because OpenSSL 1.0 does not understand -rpath.
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out")))
+              (invoke "./config"
+                      "shared"                 ;build shared libraries
+                      "--libdir=lib"
+
+                      ;; The default for this catch-all directory is
+                      ;; PREFIX/ssl.  Change that to something more
+                      ;; conventional.
+                      (string-append "--openssldir=" out
+                                     "/share/openssl-" ,version)
+
+                      (string-append "--prefix=" out)))))
+        (delete 'move-extra-documentation)
+        (add-after 'install 'move-man3-pages
+          (lambda* (#:key outputs #:allow-other-keys)
+            ;; Move section 3 man pages to "doc".
+            (let* ((out    (assoc-ref outputs "out"))
+                   (man3   (string-append out "/share/man/man3"))
+                   (doc    (assoc-ref outputs "doc"))
+                   (target (string-append doc "/share/man/man3")))
+              (mkdir-p target)
+              (for-each (lambda (file)
+                          (rename-file file
+                                       (string-append target "/"
+                                                      (basename file))))
+                        (find-files man3))
+              (delete-file-recursively man3)
+              #t)))
            ;; XXX: Duplicate this phase to make sure 'version' evaluates
            ;; in the current scope and not the inherited one.
            (replace 'remove-miscellany
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 4ef46df50b..573fa6f8cc 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2016, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
@@ -1390,6 +1390,15 @@ projects, from individuals to large-scale enterprise operations.")
              (patches (search-patches "rcs-5.9.4-noreturn.patch"))))
     (build-system gnu-build-system)
     (native-inputs `(("ed" ,ed)))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'disable-t810
+                    ;; See https://savannah.gnu.org/bugs/index.php?52288
+                    ;; Back-porting the fix is non-trivial, so disable for now.
+                    (lambda _
+                      (substitute* "tests/Makefile"
+                        ((" t810 \\\\\n") ""))
+                     #t)))))
     (home-page "https://www.gnu.org/software/rcs/")
     (synopsis "Per-file local revision control system")
     (description
@@ -1942,7 +1951,7 @@ by rclone usable with git-annex.")
     (inputs
      `(("openssl" ,openssl)
        ("zlib" ,zlib)
-       ("sqlite" ,sqlite-3.26.0)))
+       ("sqlite" ,sqlite)))
     (arguments
      `(#:configure-flags (list "--with-openssl=auto"
                                "--disable-internal-sqlite")
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 94254d0c78..374de42600 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2517,6 +2517,10 @@ Other features include a live preview and live streaming.")
                (base32
                 "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
     (build-system gnu-build-system)
+    (arguments
+     ;; libsmpeg fails to build with -std=c++11, which is the default with
+     ;; GCC 7.  Also, 'configure' does CXXFLAGS=$CFLAGS, hence this hack.
+     '(#:configure-flags '("CFLAGS=-O2 -g -std=c++03")))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
@@ -2633,14 +2637,14 @@ supported players in addition to this package.")
 (define-public handbrake
   (package
     (name "handbrake")
-    (version "1.1.2")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.handbrake.fr/releases/"
                                   version "/HandBrake-" version "-source.tar.bz2"))
               (sha256
                (base32
-                "0bny0hwlr55g2c69rsamv0xvwmfh1s4a582b9vq20xv5ly84m6ms"))
+                "03clkknaq3mz84p85cvr21gsy9b8vv2g4vvyfz44hz8la253jfqi"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove "contrib" and source not necessary for
@@ -2654,11 +2658,13 @@ supported players in addition to this package.")
                     ;; which would lead to fetching and building of these
                     ;; libraries.  Use our own instead.
                     (("MODULES \\+= contrib") "# MODULES += contrib"))
-                  #t))))
+                  #t))
+              (patches (search-patches "handbrake-opt-in-nvenc.patch"))))
     (build-system  glib-or-gtk-build-system)
     (native-inputs
      `(("automake" ,automake)           ;gui subpackage must be bootstrapped
        ("autoconf" ,autoconf)
+       ("cmake" ,cmake-minimal) ;TODO: could probably strip check from make/configure.py
        ("curl" ,curl)                   ;not actually used, but tested for
        ("intltool" ,intltool)
        ("libtool" ,libtool)
@@ -2691,12 +2697,14 @@ supported players in addition to this package.")
        ("libvpx" ,libvpx)
        ("libxml2" ,libxml2)
        ("libx264" ,libx264)
+       ("speex" ,speex)
        ("x265" ,x265)
        ("zlib" ,zlib)))
     (arguments
      `(#:tests? #f             ;tests require Ruby and claim to be unsupported
        #:configure-flags
-       (list (string-append "CPPFLAGS=-I"
+       (list "--disable-gtk-update-checks"
+             (string-append "CPPFLAGS=-I"
                             (assoc-ref %build-inputs "libxml2")
                             "/include/libxml2")
              "LDFLAGS=-lx265")
@@ -2823,6 +2831,7 @@ post-processing of video formats like MPEG2, H.264/AVC, and VC-1.")
                            "code-archive-downloads/v2/"
                            "code.google.com/mp4v2/mp4v2-" version ".tar.bz2"))
        (file-name (string-append name "-" version ".tar.bz2"))
+       (patches (search-patches "libmp4v2-c++11.patch"))
        (sha256
         (base32
          "0f438bimimsvxjbdp4vsr8hjw2nwggmhaxgcw07g2z361fkbj683"))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index d60044f65b..532f8ff95c 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -62,6 +62,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -106,16 +107,14 @@
 (define-public qemu
   (package
     (name "qemu")
-    (version "3.1.0")
+    (version "4.1.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.qemu.org/qemu-"
                                  version ".tar.xz"))
-             (patches (search-patches "qemu-CVE-2018-16872.patch"
-                                      "qemu-CVE-2019-6778.patch"))
              (sha256
               (base32
-               "1z5bd5nfyjvhfi1s95labc82y4hjdjjkdabw931362ls0zghh1ba"))))
+               "1ih9v6gxgild3m4g80ld4dr3wp9db3bpy203k73fxgc9hqhn0vk5"))))
     (build-system gnu-build-system)
     (arguments
      '(;; Running tests in parallel can occasionally lead to failures, like:
@@ -179,13 +178,24 @@ exec smbd $@")))
                (chmod "samba-wrapper" #o755)
                (install-file "samba-wrapper" libexec))
              #t))
-         (add-before 'check 'disable-test-qga
+         (add-before 'configure 'prevent-network-configuration
            (lambda _
+             ;; Prevent the build from trying to use git to fetch from the net.
+             (substitute* "Makefile"
+               (("@./config.status")
+                "")) #t))
+         (add-before 'check 'disable-unusable-tests
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (substitute* "tests/Makefile.include"
                ;; Comment out the test-qga test, which needs /sys and
                ;; fails within the build environment.
                (("check-unit-.* tests/test-qga" all)
                 (string-append "# " all)))
+             (substitute* "tests/Makefile.include"
+               ;; Comment out the test-char test, which needs networking and
+               ;; fails within the build environment.
+               (("check-unit-.* tests/test-char" all)
+                (string-append "# " all)))
              #t)))))
     (inputs                                       ; TODO: Add optional inputs.
      `(("alsa-lib" ,alsa-lib)
@@ -417,6 +427,15 @@ manage system or application containers.")
              (substitute* "config.h.in"
                (("/bin/sh") (which "sh")))
              #t))
+         (add-before 'configure 'patch-libtirpc-file-names
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; libvirt uses an m4 macro instead of pkg-config to determine where
+             ;; the RPC headers are located.  Tell it to look in the right place.
+             (substitute* "configure"
+               (("/usr/include/tirpc")  ;defined in m4/virt-xdr.m4
+                (string-append (assoc-ref inputs "libtirpc")
+                               "/include/tirpc")))
+             #t))
          (add-before 'configure 'disable-broken-tests
            (lambda _
              (let ((tests (list "commandtest"      ; hangs idly
@@ -443,8 +462,9 @@ manage system or application containers.")
        ("dbus" ,dbus)
        ("libpcap" ,libpcap)
        ("libnl" ,libnl)
+       ("libtirpc" ,libtirpc)           ;for <rpc/rpc.h>
        ("libuuid" ,util-linux)
-       ("lvm2" ,lvm2)                   ; for libdevmapper
+       ("lvm2" ,lvm2)                   ;for libdevmapper
        ("curl" ,curl)
        ("openssl" ,openssl)
        ("cyrus-sasl" ,cyrus-sasl)
@@ -673,7 +693,13 @@ domains, their live performance and resource utilization statistics.")
              (setenv "C_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "libnl")
                                     "/include/libnl3:"
-                                    (getenv "C_INCLUDE_PATH")))
+                                    ;; Also add the kernel headers here so that GCC
+                                    ;; treats them as "system headers".  Otherwise
+                                    ;; the build fails with -Werror because parasite.c
+                                    ;; includes both <linux/fs.h> and <sys/mount.h>,
+                                    ;; which define some of the same constants.
+                                    (assoc-ref inputs "kernel-headers")
+                                    "/include"))
              ;; Prevent xmlto from failing the install phase.
              (substitute* "Documentation/Makefile"
                (("XMLTO.*:=.*")
@@ -1273,7 +1299,7 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
     (native-inputs
      `(("dev86" ,dev86)
        ("bison" ,bison)
-       ("cmake" ,cmake)
+       ("cmake" ,cmake-minimal)
        ("figlet" ,figlet)
        ("flex" ,flex)
        ("gettext" ,gettext-minimal)
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 9260a2cf9f..a924bcc107 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -32,7 +32,6 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages freedesktop)
-  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages pkg-config)
@@ -95,18 +94,10 @@ and for the GLSL.std.450 extended instruction set.
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; FIXME: Tests fail.
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'fixgcc7
-           (lambda _
-             (unsetenv "C_INCLUDE_PATH")
-             (unsetenv "CPLUS_INCLUDE_PATH")
-             #t)))
        #:configure-flags (list (string-append "-DSPIRV-Headers_SOURCE_DIR="
                                (assoc-ref %build-inputs "spirv-headers")))))
     (inputs `(("spirv-headers" ,spirv-headers)))
-    (native-inputs `(("gcc" ,gcc-7)
-                     ("pkg-config" ,pkg-config)
+    (native-inputs `(("pkg-config" ,pkg-config)
                      ("python" ,python)))
     (home-page "https://github.com/KhronosGroup/SPIRV-Tools")
     (synopsis "API and commands for processing SPIR-V modules")
@@ -347,7 +338,7 @@ API.")
      `(("googletest" ,googletest)
        ("python" ,python)))
     (native-inputs
-     `(("cmake" ,cmake)
+     `(("cmake" ,cmake-minimal)
        ("glslang-source" ,(package-source glslang))
        ("pkg-config" ,pkg-config)
        ("spirv-headers-source" ,(package-source spirv-headers))
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 46b5ea7327..f84320f116 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -384,10 +384,7 @@ driven and does not detract you from your daily work.")
     (arguments
      `(#:tests? #f                      ; no tests
        #:make-flags (list "gtk-webkit"
-                          (string-append
-                           "CC="
-                           (assoc-ref %build-inputs "gcc-7")
-                           "/bin/gcc")
+                          "CC=gcc"
                           (string-append "PREFIX=" %output))
        #:phases
        (modify-phases %standard-phases
@@ -398,10 +395,9 @@ driven and does not detract you from your daily work.")
     (inputs
      `(("glib-networking" ,glib-networking)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk-2.26)))
+       ("webkitgtk" ,webkitgtk)))
     (native-inputs
-     `(("gcc-7" ,gcc-7)   ; needed because webkitgtk-2.24 and above are compiled with gcc-7
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://next.atlas.engineer")
     (synopsis "Infinitely extensible web-browser (user interface only)")
     (description "Next is a keyboard-oriented, extensible web-browser
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5c8e5c97c6..ea6f946011 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -771,6 +771,7 @@ current version of any major web browser.")
               (sha256
                (base32
                 "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab"))
+              (patches (search-patches "rapidjson-gcc-compat.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -949,11 +950,13 @@ high performance.")
                 "04pfagb7ppq3yibx4lhazd1v9nwkxdfkyy2rgcrmrf3mldsirga1"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+
+       ;; For tests.
+       ("python" ,python-wrapper)))
     (inputs
      `(("libidn2" ,libidn2)
-       ("libunistring" ,libunistring)
-       ("python-2" ,python-2)))
+       ("libunistring" ,libunistring)))
     (home-page "https://github.com/rockdaboot/libpsl")
     (synopsis "C library for the Publix Suffix List")
     (description
@@ -2017,15 +2020,15 @@ MIME type directly to the browser, without being processed through Catalyst.")
 (define-public perl-catalyst-runtime
   (package
     (name "perl-catalyst-runtime")
-    (version "5.90119")
+    (version "5.90124")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+       (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
                            "Catalyst-Runtime-" version ".tar.gz"))
        (sha256
         (base32
-         "1iw7x9rqk3sz2hm1bw01blz5vwm7zlljdf4xj3r8vz54f1yggzqr"))))
+         "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)))
@@ -2048,6 +2051,7 @@ MIME type directly to the browser, without being processed through Catalyst.")
        ("perl-moosex-methodattributes" ,perl-moosex-methodattributes)
        ("perl-namespace-clean" ,perl-namespace-clean)
        ("perl-path-class" ,perl-path-class)
+       ("perl-perlio-utf8-strict" ,perl-perlio-utf8_strict)
        ("perl-plack" ,perl-plack)
        ("perl-plack-middleware-fixmissingbodyinredirect"
         ,perl-plack-middleware-fixmissingbodyinredirect)
@@ -2136,15 +2140,15 @@ table based report in a variety of formats (CSV, HTML, etc.).")
 (define-public perl-catalyst-view-json
   (package
     (name "perl-catalyst-view-json")
-    (version "0.36")
+    (version "0.37")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Catalyst-View-JSON-" version ".tar.gz"))
        (sha256
         (base32
-         "0x943j1n2r0zqanyzdrs1xsnn8ayn2wqskn7h144xcqa6v6gcisl"))))
+         "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -6516,7 +6520,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
 (define-public nghttp2
   (package
     (name "nghttp2")
-    (version "1.35.1")
+    (version "1.39.1")
     (source
      (origin
        (method url-fetch)
@@ -6525,13 +6529,12 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
                            "nghttp2-" version ".tar.xz"))
        (sha256
         (base32
-         "0fi6qg2w82636wixwkqy7bclpgxslmvg82r431hs8h6aqc4mnzwv"))))
+         "0j0lk37k8k3f61r9nw647hg4b22z1753l36n3xrp9x01civ614b7"))))
     (build-system gnu-build-system)
     (outputs (list "out"
                    "lib"))              ; only libnghttp2
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("gcc" ,gcc-7)                   ; 1.35.0 requires GCC6 or later
 
        ;; Required by tests.
        ("cunit" ,cunit)
@@ -6563,9 +6566,6 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
                (("@prefix@")
                 (assoc-ref outputs "lib")))
              #t))
-         (add-before 'configure 'work-around-bug-30756
-           (lambda _
-             (for-each unsetenv '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) #t))
          (add-before 'check 'set-timezone-directory
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 4864495adf..3169c7d15a 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -121,14 +121,14 @@ engine that uses Wayland for graphics output.")
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.20.5")
+    (version "2.26.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "147r7an41920zl4x9srdva7fxvw2znjin5ldjkhay1cndv9gih0m"))))
+                "0mfikjfjhwcnrxbzdyh3fl9bbs2azgbdnx8h5910h41b3n022jvb"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -181,7 +181,7 @@ engine that uses Wayland for graphics output.")
        ("gperf" ,gperf)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+       ("python" ,python-wrapper)
        ("gtk-doc" ,gtk-doc) ; For documentation generation
        ("docbook-xml" ,docbook-xml) ; For documentation generation
        ("ruby" ,ruby)))
@@ -190,6 +190,7 @@ engine that uses Wayland for graphics output.")
        ("libsoup" ,libsoup)))
     (inputs
      `(("at-spi2-core" ,at-spi2-core)
+       ("bubblewrap" ,bubblewrap)
        ("enchant" ,enchant)
        ("geoclue" ,geoclue)
        ("gst-plugins-base" ,gst-plugins-base)
@@ -201,15 +202,20 @@ engine that uses Wayland for graphics output.")
        ("libjpeg" ,libjpeg)
        ("libnotify" ,libnotify)
        ("libpng" ,libpng)
+       ("libseccomp" ,libseccomp)
        ("libsecret" ,libsecret)
        ("libtasn1" ,libtasn1)
        ("libwebp" ,libwebp)
+       ("libwpe" ,libwpe)
        ("libxcomposite" ,libxcomposite)
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
        ("libxt" ,libxt)
        ("mesa" ,mesa)
-       ("sqlite" ,sqlite)))
+       ("openjpeg" ,openjpeg)
+       ("sqlite" ,sqlite)
+       ("wpebackend-fdo" ,wpebackend-fdo)
+       ("xdg-dbus-proxy" ,xdg-dbus-proxy)))
     (home-page "https://www.webkitgtk.org/")
     (synopsis "Web content engine for GTK+")
     (description
@@ -222,41 +228,3 @@ HTML/CSS applications to full-fledged web browsers.")
                    license:lgpl2.1+
                    license:bsd-2
                    license:bsd-3))))
-
-;; This version of webkitgtk needs to be kept separate, because it requires a
-;; newer version of GCC than our default compiler, and this causes problems
-;; when linked with C++ libraries built using our default compiler.  For now,
-;; we use this newer webkitgtk only for selected packages, e.g. epiphany.
-(define-public webkitgtk-2.26
-  (package/inherit webkitgtk
-    (name "webkitgtk")
-    (version "2.26.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://www.webkitgtk.org/releases/"
-                                  name "-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0mfikjfjhwcnrxbzdyh3fl9bbs2azgbdnx8h5910h41b3n022jvb"))))
-    (native-inputs
-     `(("gcc" ,gcc-7)  ; webkitgtk-2.22 requires gcc-6 or newer
-       ,@(package-native-inputs webkitgtk)))
-    (inputs
-     `(("bubblewrap" ,bubblewrap)
-       ("libseccomp" ,libseccomp)
-       ("libwpe" ,libwpe)
-       ("openjpeg" ,openjpeg)
-       ("wpebackend-fdo" ,wpebackend-fdo)
-       ("xdg-dbus-proxy" ,xdg-dbus-proxy)
-       ,@(package-inputs webkitgtk)))
-    (arguments
-     (substitute-keyword-arguments (package-arguments webkitgtk)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-before 'configure 'work-around-gcc-7-include-path-issue
-             ;; FIXME: Work around a problem with gcc-7 includes (see
-             ;; <https://bugs.gnu.org/30756>).
-             (lambda _
-               (unsetenv "C_INCLUDE_PATH")
-               (unsetenv "CPLUS_INCLUDE_PATH")
-               #t))))))))
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index e47979d026..48ddf55e3c 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -90,7 +90,6 @@
   #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages logging)
   #:use-module (gnu packages serialization)
-  #:use-module (gnu packages commencement) ; TODO remove when default gcc version >=7
   #:use-module (guix download)
   #:use-module (guix git-download))
 
@@ -1143,10 +1142,6 @@ project derived from the original Calm Window Manager.")
        ("glibmm" ,glibmm)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (arguments
-     `(#:configure-flags (list
-                          (string-append "--prefix=" %output)
-                          "CXXFLAGS=-std=c++11")))
     (home-page "http://projects.l3ib.org/nitrogen/")
     (synopsis "Background browser and setter for X windows")
     (description
@@ -1404,15 +1399,7 @@ modules for building a Wayland compositor.")
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
-       (list (string-append "-Dout=" (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         ;; TODO remove when issue #30756 is resolved
-         (add-before 'configure 'fix-gcc
-           (lambda _
-             (unsetenv "C_INCLUDE_PATH")
-             (unsetenv "CPLUS_INCLUDE_PATH")
-             #t)))))
+       (list (string-append "-Dout=" (assoc-ref %outputs "out")))))
     (inputs `(("fmt" ,fmt)
               ("gtkmm" ,gtkmm)
               ("jsoncpp" ,jsoncpp)
@@ -1423,8 +1410,7 @@ modules for building a Wayland compositor.")
               ("pulseaudio" ,pulseaudio)
               ("spdlog" ,spdlog)
               ("wayland" ,wayland)))
-    (native-inputs `(("gcc-toolchain" ,gcc-toolchain-7) ; TODO remove when default gcc version >=7
-                     ("glib:bin" ,glib "bin")
+    (native-inputs `(("glib:bin" ,glib "bin")
                      ("pkg-config" ,pkg-config)
                      ("wayland-protocols" ,wayland-protocols)))
     (home-page "https://github.com/Alexays/Waybar")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 0b40ca6909..619c9b102a 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -354,7 +354,7 @@ following the mouse.")
 (define-public pixman
   (package
     (name "pixman")
-    (version "0.36.0")
+    (version "0.38.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -362,7 +362,7 @@ following the mouse.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1blzrx50ssdv0pn56hcv2v0zw0vrjwj1sx22pkgjls1p9n6rr88w"))
+                "1ryxzdf048x7wsx4dlvrr1p00gzwfs7lybnhgc7ygbj0dvyxcrns"))
               (patches (search-patches "pixman-CVE-2016-5296.patch"))))
     (build-system gnu-build-system)
     (inputs
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 3603bee4b7..6b927f700e 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -66,20 +66,19 @@
 (define-public expat
   (package
     (name "expat")
-    (replacement expat/fixed)
-    (version "2.2.6")
+    (version "2.2.7")
     (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.bz2")
+                                          version "/expat-" version ".tar.xz")
                            (string-append
                             "https://github.com/libexpat/libexpat/releases/download/R_"
                             (string-map dot->underscore version)
-                            "/expat-" version ".tar.bz2")))
+                            "/expat-" version ".tar.xz")))
                 (sha256
                  (base32
-                  "1wl1x93b5w457ddsdgj0lh7yjq4q6l7wfbgwhagkc8fm2qkkrd0p")))))
+                  "1y5yax6bq8p9xk49zqkd62pxk8bq266wrgbrqgaxp3wsrw5g9qrh")))))
     (build-system gnu-build-system)
     (home-page "https://libexpat.github.io/")
     (synopsis "Stream-oriented XML parser library written in C")
@@ -89,14 +88,6 @@ 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/fixed
-  (package
-    (inherit expat)
-    (source
-     (origin
-       (inherit (package-source expat))
-       (patches (search-patches "expat-CVE-2018-20843.patch"))))))
-
 (define-public libebml
   (package
     (name "libebml")
@@ -124,14 +115,14 @@ hierarchical form with variable field lengths.")
 (define-public libxml2
   (package
     (name "libxml2")
-    (version "2.9.8")
+    (version "2.9.9")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0ci7is75bwqqw2p32vxvrk6ds51ik7qgx73m920rakv5jlayax0b"))))
+               "0wd881jzvqayx0ihzba29jl80k06xj9ywp16kxacdqs3064p1ywl"))))
     (build-system gnu-build-system)
     (outputs '("out" "static"))
     (arguments
@@ -146,6 +137,12 @@ hierarchical form with variable field lengths.")
                                     (rename-file ar (string-append dst "/"
                                                                    (basename ar))))
                                   (find-files src "\\.a$"))
+
+                        ;; Remove reference to the static library from the .la
+                        ;; file such that Libtool does the right thing when both
+                        ;; the shared and static variants are available.
+                        (substitute* (string-append src "/libxml2.la")
+                          (("^old_library='libxml2.a'") "old_library=''"))
                         #t))))))
     (home-page "http://www.xmlsoft.org/")
     (synopsis "C parser for XML")
@@ -167,6 +164,7 @@ project (but it is usable outside of the Gnome platform).")
     (license license:x11)))
 
 (define-public python-libxml2
+  ;; TODO: Merge with 'python-libxml2/fixed' on the next rebuild cycle.
   (package/inherit libxml2
     (name "python-libxml2")
     (build-system python-build-system)
@@ -194,20 +192,32 @@ project (but it is usable outside of the Gnome platform).")
     (inputs `(("libxml2" ,libxml2)))
     (synopsis "Python bindings for the libxml2 library")))
 
+(define-public python-libxml2/fixed
+  ;; This variant fixes a crash when processing UTF-8 sequences:
+  ;;    <https://bugs.gnu.org/37468>
+  ;; TODO: Merge with 'python-libxml2' on the next rebuild cycle.
+  (package/inherit
+   python-libxml2
+   (version (string-append (package-version python-libxml2) "-1"))
+   (source (origin
+             (inherit (package-source libxml2))
+             (patches (cons (search-patch "python-libxml2-utf8.patch")
+                            (origin-patches (package-source libxml2))))))))
+
 (define-public python2-libxml2
   (package-with-python2 python-libxml2))
 
 (define-public libxslt
   (package
     (name "libxslt")
-    (version "1.1.32")
+    (version "1.1.33")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0q2l6m56iv3ysxgm2walhg4c9wp7q183jb328687i9zlp85csvjj"))
+               "1j1q1swnsy8jgi9x7mclvkrqhfgn09886gdlr9wzk7a08i8n0dlf"))
              (patches (search-patches "libxslt-generated-ids.patch"))))
     (build-system gnu-build-system)
     (home-page "http://xmlsoft.org/XSLT/index.html")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e4050a1425..273788f615 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -211,14 +211,14 @@ which can be read by any architecture.")
 (define-public xorgproto
   (package
     (name "xorgproto")
-    (version "2018.4")
+    (version "2019.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://xorg/individual/proto/"
                                   "xorgproto-" version ".tar.bz2"))
               (sha256
                (base32
-                "180mqkp70i44rkmj430pmn9idssvffrgv4y5h19fm698a7h8bs7y"))))
+                "16yll1kaffnslik5sizlw3qrigj1gpsgfgyq6903g3mwdixamnm6"))))
     (build-system gnu-build-system)
     (propagated-inputs
      ;; To get util-macros in (almost?) all package inputs.
@@ -1208,7 +1208,7 @@ hit when running single-threaded.")
 (define-public libsm
   (package
     (name "libsm")
-    (version "1.2.2")
+    (version "1.2.3")
     (source
       (origin
         (method url-fetch)
@@ -1218,7 +1218,7 @@ hit when running single-threaded.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1gc7wavgs435g9qkp9jw4lhmaiq6ip9llv49f054ad6ryp4sib0b"))))
+            "1fwwfq9v3sqmpzpscymswxn76xhxnysa24pfim1mcpxhvjcl89id"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("libice" ,libice))) ; SMlib.h includes ICElib.h
@@ -1296,7 +1296,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
 (define-public libxdmcp
   (package
     (name "libxdmcp")
-    (version "1.1.2")
+    (version "1.1.3")
     (source
       (origin
         (method url-fetch)
@@ -1306,7 +1306,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1qp4yhxbfnpj34swa0fj635kkihdkwaiw7kf55cg5zqqg630kzl1"))))
+            "0ab53h0rkq721ihk5hi469x500f3pgbkm1wy01yf24x5m923nli0"))))
     (build-system gnu-build-system)
     (inputs
       `(("libbsd" ,libbsd)
@@ -1322,7 +1322,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
 (define-public libxft
   (package
     (name "libxft")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
       (origin
         (method url-fetch)
@@ -1332,7 +1332,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0k6wzi5rzs0d0n338ms8n8lfyhq914hw4yl2j7553wqxfqjci8zm"))))
+            "05lja9s54090xwh31r0bqms4v3pimng5xr09g2rdnafx2vk6hp12"))))
     (build-system gnu-build-system)
     (propagated-inputs
      ;; xft.pc refers to all these.
@@ -1381,7 +1381,7 @@ configuration files.")
 (define-public libxmu
   (package
     (name "libxmu")
-    (version "1.1.2")
+    (version "1.1.3")
     (source
       (origin
         (method url-fetch)
@@ -1391,7 +1391,7 @@ configuration files.")
                ".tar.bz2"))
         (sha256
           (base32
-            "02wx6jw7i0q5qwx87yf94fsn3h0xpz1k7dz1nkwfwm1j71ydqvkm"))))
+            "0cdpqnx6258i4l6qhphvkdiyspysg0i5caqjy820kp63wwjk4d4w"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxt" ,libxt)
@@ -2385,6 +2385,18 @@ XC-APPGROUP, XTEST.")
         (base32
          "0xca343ff12wh6nsq76r0nbsfrm8dypjrzm4fqz9vv9v8i8kfrp1"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'pedantry
+                    (lambda _
+                      ;; XXX: libevdev includes kernel headers, which causes this
+                      ;; compile test to fail with:
+                      ;; ...-headers-4.14.67/include/asm-generic/posix_types.h:88:14:
+                      ;;error: ISO C90 does not support ‘long long’ [-Werror=long-long]
+                      (substitute* "test/Makefile.in"
+                        (("-pedantic -Werror -std=c89")
+                         "-pedantic -Werror -std=c99"))
+                      #t)))))
     (native-inputs `(("python" ,python)))
     (home-page "https://www.freedesktop.org/wiki/Software/libevdev/")
     (synopsis "Wrapper library for evdev devices")
@@ -4300,7 +4312,7 @@ a display running X server.")
 (define-public xtrans
   (package
     (name "xtrans")
-    (version "1.3.5")
+    (version "1.4.0")
     (source
       (origin
         (method url-fetch)
@@ -4310,7 +4322,7 @@ a display running X server.")
                ".tar.bz2"))
         (sha256
           (base32
-            "00c3ph17acnsch3gbdmx33b9ifjnl5w7vx8hrmic1r1cjcv3pgdd"))))
+            "0wyp0yc6gi72hwc3kjmvm3vkj9p6s407cb6dxx37jh9wb68l8z1p"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
@@ -4499,7 +4511,7 @@ cannot be adequately worked around on the client side of the wire.")
 (define-public libxdamage
   (package
     (name "libxdamage")
-    (version "1.1.4")
+    (version "1.1.5")
     (source
       (origin
         (method url-fetch)
@@ -4509,7 +4521,7 @@ cannot be adequately worked around on the client side of the wire.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1bamagq7g6s0d23l8rb3nppj8ifqj05f7z9bhbs4fdg8az3ffgvw"))))
+            "0igaw2akjf712y3rv7lx473jigxmcv9rs9y8sbrvbhya8f30cd5p"))))
     (build-system gnu-build-system)
     (propagated-inputs
       ;; These are all in the Requires or Requires.private field of xdamage.pc
@@ -4527,7 +4539,7 @@ cannot be adequately worked around on the client side of the wire.")
 (define-public libxext
   (package
     (name "libxext")
-    (version "1.3.3")
+    (version "1.3.4")
     (source
       (origin
         (method url-fetch)
@@ -4537,7 +4549,7 @@ cannot be adequately worked around on the client side of the wire.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0dbfn5bznnrhqzvkrcmw4c44yvvpwdcsrvzxf4rk27r36b9x865m"))))
+            "0azqxllcsfxc3ilhz6kwc6x7m8wc477p59ir9p0yrsldx766zbar"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("xorgproto" ,xorgproto)))
@@ -4773,7 +4785,7 @@ common definitions and porting layer.")
 (define-public libice
   (package
     (name "libice")
-    (version "1.0.9")
+    (version "1.0.10")
     (source
       (origin
         (method url-fetch)
@@ -4783,7 +4795,7 @@ common definitions and porting layer.")
                ".tar.bz2"))
         (sha256
           (base32
-            "00p2b6bsg6kcdbb39bv46339qcywxfl4hsrz8asm4hy6q7r34w4g"))))
+            "0j638yvmyna2k4mz465jywgdybgdchdqppfx6xfazg7l5khxr1kg"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("xorgproto" ,xorgproto)))
@@ -4801,7 +4813,7 @@ common definitions and porting layer.")
 (define-public libxau
   (package
     (name "libxau")
-    (version "1.0.8")
+    (version "1.0.9")
     (source
       (origin
         (method url-fetch)
@@ -4811,7 +4823,7 @@ common definitions and porting layer.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1wm4pv12f36cwzhldpp7vy3lhm3xdcnp4f184xkxsp7b18r7gm7x"))))
+            "1v3krc6x0zliaa66qq1bf9j60x5nqfy68v8axaiglxpnvgqcpy6c"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("xorgproto" ,xorgproto)))
@@ -4900,7 +4912,7 @@ new API's in libXft, or the legacy API's in libX11.")
 (define-public libxi
   (package
     (name "libxi")
-    (version "1.7.9")
+    (version "1.7.10")
     (source
       (origin
         (method url-fetch)
@@ -4910,7 +4922,7 @@ new API's in libXft, or the legacy API's in libX11.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0idg1wc01hndvaa820fvfs7phvd1ymf0lldmq6386i7rhkzvirn2"))))
+            "0q8hz3slga3w3ch8wp0k7ay9ilhz315qnab0w1y2x9w3cf7hv8rn"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("xorgproto" ,xorgproto)
@@ -4927,7 +4939,7 @@ new API's in libXft, or the legacy API's in libX11.")
 (define-public libxrandr
   (package
     (name "libxrandr")
-    (version "1.5.1")
+    (version "1.5.2")
     (source
       (origin
         (method url-fetch)
@@ -4937,7 +4949,7 @@ new API's in libXft, or the legacy API's in libX11.")
                ".tar.bz2"))
         (sha256
           (base32
-            "06pmphx8lp3iywqnh88fvbfb0d8xgkx0qpvan49akpja1vxfgy8z"))))
+            "08z0mqywrm7ij8bxlfrx0d2wy6kladdmkva1nw5k6qix82z0xsla"))))
     (build-system gnu-build-system)
     (propagated-inputs
       ;; In accordance with xrandr.pc.
@@ -5217,7 +5229,7 @@ draggable titlebars and borders.")
 (define-public libx11
   (package
     (name "libx11")
-    (version "1.6.6")
+    (version "1.6.8")
     (source
       (origin
         (method url-fetch)
@@ -5227,7 +5239,7 @@ draggable titlebars and borders.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0ks1mxlda7nxfmffihi15ljsn50q8dknl33i2xag8xzc80fiizk5"))))
+            "1mbkwhhprhf49s2iwx7kiliprsdvd690zk44x3h53ql9q52si2dj"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ;8 MiB of man pages + XML
@@ -5288,7 +5300,7 @@ draggable titlebars and borders.")
 (define-public libxt
   (package
     (name "libxt")
-    (version "1.1.5")
+    (version "1.2.0")
     (source
       (origin
         (method url-fetch)
@@ -5298,7 +5310,7 @@ draggable titlebars and borders.")
                ".tar.bz2"))
         (sha256
           (base32
-           "06lz6i7rbrp19kgikpaz4c97fw7n31k2h2aiikczs482g2zbdvj6"))
+           "0cbqlyssr8aia88c8i7z59z9d0kp3p2hp6683xhz9ndyv8qza7dk"))
         (patches (search-patches "libxt-guix-search-paths.patch"))))
     (build-system gnu-build-system)
     (outputs '("out"
diff --git a/gnu/system.scm b/gnu/system.scm
index c860c22433..37573fd153 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -724,6 +724,10 @@ fi\n")))
        ;; to certain networks.  Some discussion at
        ;; https://lists.gnu.org/archive/html/help-guix/2017-09/msg00037.html
        ("hostname" ,(plain-file "hostname" (operating-system-host-name os)))
+       ;; Some programs (e.g., GLib) look at /etc/timezone to find the
+       ;; name of the current timezone.  For details, see
+       ;; https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00166.html
+       ("timezone" ,(plain-file "timezone" (operating-system-timezone os)))
        ("localtime" ,(file-append tzdata "/share/zoneinfo/"
                                   (operating-system-timezone os)))
        ("sudoers" ,(operating-system-sudoers-file os))))))
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index ee116c5a4c..ca88fadddf 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -48,7 +48,7 @@
 
   ;; Do not use `@' to avoid introducing circular dependencies.
   (let ((module (resolve-interface '(gnu packages cmake))))
-    (module-ref module 'cmake)))
+    (module-ref module 'cmake-minimal)))
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 370d185545..b29f2f4ecf 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -90,7 +90,7 @@
                       (outputs '("out"))
                       (configure-flags ''())
                       (search-paths '())
-                      (build-type "plain")
+                      (build-type "debugoptimized")
                       (tests? #t)
                       (test-target "test")
                       (glib-or-gtk? #f)
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index e5f3197b0a..4df0bb4904 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -25,6 +25,7 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 format)
+  #:use-module (ice-9 ftw)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-34)
@@ -58,19 +59,14 @@ See https://reproducible-builds.org/specs/source-date-epoch/."
   (setenv "SOURCE_DATE_EPOCH" "1")
   #t)
 
-(define (first-subdirectory dir)
-  "Return the path of the first sub-directory of DIR."
-  (file-system-fold (lambda (path stat result)
-                      (string=? path dir))
-                    (lambda (path stat result) result) ; leaf
-                    (lambda (path stat result) result) ; down
-                    (lambda (path stat result) result) ; up
-                    (lambda (path stat result)         ; skip
-                      (or result path))
-                    (lambda (path stat errno result)   ; error
-                      (error "first-subdirectory" (strerror errno)))
-                    #f
-                    dir))
+(define (first-subdirectory directory)
+  "Return the file name of the first sub-directory of DIRECTORY."
+  (match (scandir directory
+                  (lambda (file)
+                    (and (not (member file '("." "..")))
+                         (file-is-directory? (string-append directory "/"
+                                                            file)))))
+    ((first . _) first)))
 
 (define* (set-paths #:key target inputs native-inputs
                     (search-paths '()) (native-search-paths '())
@@ -735,23 +731,64 @@ which cannot be found~%"
 
 (define* (install-license-files #:key outputs
                                 (license-file-regexp %license-file-regexp)
+                                out-of-source?
                                 #:allow-other-keys)
   "Install license files matching LICENSE-FILE-REGEXP to 'share/doc'."
+  (define (find-source-directory package)
+    ;; For an out-of-source build, guess the source directory location
+    ;; relative to the current directory.  Return #f on failure.
+    (match (scandir ".."
+                    (lambda (file)
+                      (and (not (member file '("." ".." "build")))
+                           (file-is-directory?
+                            (string-append "../" file)))))
+      (()                                         ;hmm, no source
+       #f)
+      ((source)                                   ;only one other file
+       (string-append "../" source))
+      ((directories ...)                          ;pick the most likely one
+       ;; This happens for example with libstdc++, which lives within the GCC
+       ;; source tree.
+       (any (lambda (directory)
+              (and (string-prefix? package directory)
+                   (string-append "../" directory)))
+            directories))))
+
+  (define (copy-to-directories directories sub-directory)
+    (lambda (file)
+      (for-each (if (file-is-directory? file)
+                    (cut copy-recursively file <>)
+                    (cut install-file file <>))
+                (map (cut string-append <> "/" sub-directory)
+                     directories))))
+
   (let* ((regexp    (make-regexp license-file-regexp))
          (out       (or (assoc-ref outputs "out")
                         (match outputs
                           (((_ . output) _ ...)
                            output))))
          (package   (strip-store-file-name out))
-         (directory (string-append out "/share/doc/" package))
-         (files     (scandir "." (lambda (file)
-                                   (regexp-exec regexp file)))))
-    (format #t "installing ~a license files~%" (length files))
-    (for-each (lambda (file)
-                (if (file-is-directory? file)
-                    (copy-recursively file directory)
-                    (install-file file directory)))
-              files)
+         (outputs   (match outputs
+                      (((_ . outputs) ...)
+                       outputs)))
+         (source    (if out-of-source?
+                        (find-source-directory
+                         (package-name->name+version package))
+                        "."))
+         (files     (and source
+                         (scandir source
+                                  (lambda (file)
+                                    (regexp-exec regexp file))))))
+    (if files
+        (begin
+          (format #t "installing ~a license files from '~a'~%"
+                  (length files) source)
+          (for-each (copy-to-directories outputs
+                                         (string-append "share/doc/"
+                                                        package))
+                    (map (cut string-append source "/" <>) files)))
+        (format (current-error-port)
+                "failed to find license files~%"))
     #t))
 
 (define %standard-phases
@@ -784,34 +821,37 @@ in order.  Return #t if all the PHASES succeeded, #f otherwise."
       (+ (time-second diff)
          (/ (time-nanosecond diff) 1e9))))
 
-  (setvbuf (current-output-port) _IOLBF)
-  (setvbuf (current-error-port) _IOLBF)
+  (setvbuf (current-output-port) 'line)
+  (setvbuf (current-error-port) 'line)
 
   ;; Encoding/decoding errors shouldn't be silent.
   (fluid-set! %default-port-conversion-strategy 'error)
 
-  ;; The trick is to #:allow-other-keys everywhere, so that each procedure in
-  ;; PHASES can pick the keyword arguments it's interested in.
-  (every (match-lambda
-           ((name . proc)
-            (let ((start (current-time time-monotonic)))
-              (format #t "starting phase `~a'~%" name)
-              (let ((result (apply proc args))
-                    (end    (current-time time-monotonic)))
-                (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%"
-                        name result
-                        (elapsed-time end start))
-
-                ;; Issue a warning unless the result is #t.
-                (unless (eqv? result #t)
-                  (format (current-error-port) "\
+  (guard (c ((invoke-error? c)
+             (report-invoke-error c)
+             (exit 1)))
+    ;; The trick is to #:allow-other-keys everywhere, so that each procedure in
+    ;; PHASES can pick the keyword arguments it's interested in.
+    (every (match-lambda
+             ((name . proc)
+              (let ((start (current-time time-monotonic)))
+                (format #t "starting phase `~a'~%" name)
+                (let ((result (apply proc args))
+                      (end    (current-time time-monotonic)))
+                  (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%"
+                          name result
+                          (elapsed-time end start))
+
+                  ;; Issue a warning unless the result is #t.
+                  (unless (eqv? result #t)
+                    (format (current-error-port) "\
 ## WARNING: phase `~a' returned `~s'.  Return values other than #t
 ## are deprecated.  Please migrate this package so that its phase
 ## procedures report errors by raising an exception, and otherwise
 ## always return #t.~%"
-                          name result))
+                            name result))
 
-                ;; Dump the environment variables as a shell script, for handy debugging.
-                (system "export > $NIX_BUILD_TOP/environment-variables")
-                result))))
-         phases))
+                  ;; Dump the environment variables as a shell script, for handy debugging.
+                  (system "export > $NIX_BUILD_TOP/environment-variables")
+                  result))))
+           phases)))
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 3dac43c18a..4bc0156a88 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -237,7 +237,7 @@ unpacking."
   "Install the source code of IMPORT-PATH to the primary output directory.
 Compiled executable files (Go \"commands\") should have already been installed
 to the store based on $GOBIN in the build phase.
-XXX We can't make us of compiled libraries (Go \"packages\")."
+XXX We can't make use of compiled libraries (Go \"packages\")."
   (when install-source?
     (if (string-null? import-path)
         ((display "WARNING: The Go import path is unset.\n")))
diff --git a/guix/build/meson-build-system.scm b/guix/build/meson-build-system.scm
index d0975fcab0..8043a84abb 100644
--- a/guix/build/meson-build-system.scm
+++ b/guix/build/meson-build-system.scm
@@ -108,6 +108,7 @@ for example libraries only needed for the tests."
   ;; from the gnu-build-system.  If the glib-or-gtk? key is #f (the default)
   ;; then the extra phases will be removed again in (guix build-system meson).
   (modify-phases glib-or-gtk:%standard-phases
+    (delete 'bootstrap)
     (replace 'configure configure)
     (replace 'build build)
     (replace 'check check)
diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm
index 5bb0ba49d5..09bd8465c8 100644
--- a/guix/build/python-build-system.scm
+++ b/guix/build/python-build-system.scm
@@ -1,10 +1,11 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +32,7 @@
   #:export (%standard-phases
             add-installed-pythonpath
             site-packages
+            python-version
             python-build))
 
 ;; Commentary:
@@ -146,7 +148,7 @@
       (format #t "test suite not run~%"))
   #t)
 
-(define (get-python-version python)
+(define (python-version python)
   (let* ((version     (last (string-split python #\-)))
          (components  (string-split version #\.))
          (major+minor (take components 2)))
@@ -157,7 +159,7 @@
   (let* ((out (assoc-ref outputs "out"))
          (python (assoc-ref inputs "python")))
     (string-append out "/lib/python"
-                   (get-python-version python)
+                   (python-version python)
                    "/site-packages/")))
 
 (define (add-installed-pythonpath inputs outputs)
@@ -186,11 +188,9 @@ when running checks after installing the package."
 
 (define* (wrap #:key inputs outputs #:allow-other-keys)
   (define (list-of-files dir)
-    (map (cut string-append dir "/" <>)
-         (or (scandir dir (lambda (f)
-                            (let ((s (stat (string-append dir "/" f))))
-                              (eq? 'regular (stat:type s)))))
-             '())))
+    (find-files dir (lambda (file stat)
+                      (and (eq? 'regular (stat:type stat))
+                           (not (wrapper? file))))))
 
   (define bindirs
     (append-map (match-lambda
@@ -203,7 +203,7 @@ when running checks after installing the package."
          (python (assoc-ref inputs "python"))
          (var `("PYTHONPATH" prefix
                 ,(cons (string-append out "/lib/python"
-                                      (get-python-version python)
+                                      (python-version python)
                                       "/site-packages")
                        (search-path-as-string->list
                         (or (getenv "PYTHONPATH") ""))))))
@@ -223,7 +223,7 @@ installed with setuptools."
   (let* ((out (assoc-ref outputs "out"))
          (python (assoc-ref inputs "python"))
          (site-packages (string-append out "/lib/python"
-                                       (get-python-version python)
+                                       (python-version python)
                                        "/site-packages"))
          (easy-install-pth (string-append site-packages "/easy-install.pth"))
          (new-pth (string-append site-packages "/" name ".pth")))
@@ -251,16 +251,21 @@ installed with setuptools."
   #t)
 
 (define %standard-phases
-  ;; 'configure' phase is not needed.
+  ;; The build phase only builds C extensions and copies the Python sources,
+  ;; while the install phase byte-compiles and copies them to the prefix
+  ;; directory.  The tests are run after the install phase because otherwise
+  ;; the cached .pyc generated during the tests execution seem to interfere
+  ;; with the byte compilation of the install phase.
   (modify-phases gnu:%standard-phases
     (add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980)
     (add-after 'ensure-no-mtimes-pre-1980 'enable-bytecode-determinism
       enable-bytecode-determinism)
     (delete 'bootstrap)
-    (delete 'configure)
-    (replace 'install install)
-    (replace 'check check)
+    (delete 'configure)                 ;not needed
     (replace 'build build)
+    (delete 'check)                     ;moved after the install phase
+    (replace 'install install)
+    (add-after 'install 'check check)
     (add-after 'install 'wrap wrap)
     (add-before 'strip 'rename-pth-file rename-pth-file)))
 
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 3c84d3893f..f2fdb4d9d1 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -396,17 +396,11 @@ the returned procedure is called."
     ((_ (proc args ...) body ...)
      (define-as-needed proc (lambda* (args ...) body ...)))
     ((_ variable value)
-     (begin
-       (when (module-defined? the-scm-module 'variable)
-         (re-export variable))
-
-       (define variable
-         (if (module-defined? the-scm-module 'variable)
-             (module-ref the-scm-module 'variable)
-             value))
-
-       (unless (module-defined? the-scm-module 'variable)
-         (export variable))))))
+     (if (module-defined? the-scm-module 'variable)
+         (module-re-export! (current-module) '(variable))
+         (begin
+           (module-define! (current-module) 'variable value)
+           (module-export! (current-module) '(variable)))))))
 
 
 ;;;
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index 5fe3286843..b8be73ead4 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -1,8 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -87,7 +89,13 @@
             patch-/usr/bin/file
             fold-port-matches
             remove-store-references
+            wrapper?
             wrap-program
+            wrap-script
+
+            wrap-error?
+            wrap-error-program
+            wrap-error-type
 
             invoke
             invoke-error?
@@ -96,10 +104,33 @@
             invoke-error-exit-status
             invoke-error-term-signal
             invoke-error-stop-signal
+            report-invoke-error
+
+            invoke/quiet
 
             locale-category->string))
 
+
+;;;
+;;; Guile 2.0 compatibility later.
+;;;
 
+;; The bootstrap Guile is Guile 2.0, so provide a compatibility layer.
+(cond-expand
+  ((and guile-2 (not guile-2.2))
+   (define (setvbuf port mode . rest)
+     (apply (@ (guile) setvbuf) port
+            (match mode
+              ('line _IOLBF)
+              ('block _IOFBF)
+              ('none _IONBF)
+              (_ mode))                           ;an _IO* integer
+            rest))
+
+   (module-replace! (current-module) '(setvbuf)))
+  (else #f))
+
+
 ;;;
 ;;; Directories.
 ;;;
@@ -600,6 +631,11 @@ Where every <*-phase-name> is an expression evaluating to a symbol, and
     ((_ phases (add-after old-phase-name new-phase-name new-phase))
      (alist-cons-after old-phase-name new-phase-name new-phase phases))))
 
+
+;;;
+;;; Program invocation.
+;;;
+
 (define-condition-type &invoke-error &error
   invoke-error?
   (program      invoke-error-program)
@@ -621,6 +657,68 @@ if the exit code is non-zero; otherwise return #t."
                          (stop-signal (status:stop-sig code))))))
     #t))
 
+(define* (report-invoke-error c #:optional (port (current-error-port)))
+  "Report to PORT about C, an '&invoke-error' condition, in a human-friendly
+way."
+  (format port "command~{ ~s~} failed with ~:[signal~;status~] ~a~%"
+          (cons (invoke-error-program c)
+                (invoke-error-arguments c))
+          (invoke-error-exit-status c)
+          (or (invoke-error-exit-status c)
+              (invoke-error-term-signal c)
+              (invoke-error-stop-signal c))))
+
+(define (open-pipe-with-stderr program . args)
+  "Run PROGRAM with ARGS in an input pipe, but, unlike 'open-pipe*', redirect
+both its standard output and standard error to the pipe.  Return two value:
+the pipe to read PROGRAM's data from, and the PID of the child process running
+PROGRAM."
+  ;; 'open-pipe*' doesn't attempt to capture stderr in any way, which is why
+  ;; we need to roll our own.
+  (match (pipe)
+    ((input .  output)
+     (match (primitive-fork)
+       (0
+        (dynamic-wind
+          (const #t)
+          (lambda ()
+            (close-port input)
+            (dup2 (fileno output) 1)
+            (dup2 (fileno output) 2)
+            (apply execlp program program args))
+          (lambda ()
+            (primitive-exit 127))))
+       (pid
+        (close-port output)
+        (values input pid))))))
+
+(define (invoke/quiet program . args)
+  "Invoke PROGRAM with ARGS and capture PROGRAM's standard output and standard
+error.  If PROGRAM succeeds, print nothing and return the unspecified value;
+otherwise, raise a '&message' error condition that includes the status code
+and the output of PROGRAM."
+  (let-values (((pipe pid)
+                (apply open-pipe-with-stderr program args)))
+    (let loop ((lines '()))
+      (match (read-line pipe)
+        ((? eof-object?)
+         (close-port pipe)
+         (match (waitpid pid)
+           ((_ . status)
+            (unless (zero? status)
+              (let-syntax ((G_ (syntax-rules ()   ;for xgettext
+                                 ((_ str) str))))
+                (raise (condition
+                        (&message
+                         (message (format #f (G_ "'~a~{ ~a~}' exited \
+with status ~a; output follows:~%~%~{  ~a~%~}")
+                                          program args
+                                          (or (status:exit-val status)
+                                              status)
+                                          (reverse lines)))))))))))
+        (line
+         (loop (cons line lines)))))))
+
 
 ;;;
 ;;; Text substitution (aka. sed).
@@ -987,8 +1085,8 @@ known as `nuke-refs' in Nixpkgs."
         ;; We cannot use `regexp-exec' here because it cannot deal with
         ;; strings containing NUL characters.
         (format #t "removing store references from `~a'...~%" file)
-        (setvbuf in _IOFBF 65536)
-        (setvbuf out _IOFBF 65536)
+        (setvbuf in 'block 65536)
+        (setvbuf out 'block 65536)
         (fold-port-matches (lambda (match result)
                              (put-bytevector out (string->utf8 store))
                              (put-u8 out (char->integer #\/))
@@ -1003,6 +1101,18 @@ known as `nuke-refs' in Nixpkgs."
                              (put-u8 out (char->integer char))
                              result))))))
 
+(define-condition-type &wrap-error &error
+  wrap-error?
+  (program    wrap-error-program)
+  (type       wrap-error-type))
+
+(define (wrapper? prog)
+  "Return #t if PROG is a wrapper as produced by 'wrap-program'."
+  (and (file-exists? prog)
+       (let ((base (basename prog)))
+         (and (string-prefix? "." base)
+              (string-suffix? "-real" base)))))
+
 (define* (wrap-program prog #:rest vars)
   "Make a wrapper for PROG.  VARS should look like this:
 
@@ -1100,6 +1210,120 @@ with definitions for VARS."
         (chmod prog-tmp #o755)
         (rename-file prog-tmp prog))))
 
+(define wrap-script
+  (let ((interpreter-regex
+         (make-regexp
+          (string-append "^#! ?(/[^ ]+/bin/("
+                         (string-join '("python[^ ]*"
+                                        "Rscript"
+                                        "perl"
+                                        "ruby"
+                                        "bash"
+                                        "sh") "|")
+                         "))( ?.*)")))
+        (coding-line-regex
+         (make-regexp
+          ".*#.*coding[=:][[:space:]]*([-a-zA-Z_0-9.]+)")))
+    (lambda* (prog #:key (guile (which "guile")) #:rest vars)
+      "Wrap the script PROG such that VARS are set first.  The format of VARS
+is the same as in the WRAP-PROGRAM procedure.  This procedure differs from
+WRAP-PROGRAM in that it does not create a separate shell script.  Instead,
+PROG is modified directly by prepending a Guile script, which is interpreted
+as a comment in the script's language.
+
+Special encoding comments as supported by Python are recreated on the second
+line.
+
+Note that this procedure can only be used once per file as Guile scripts are
+not supported."
+      (define update-env
+        (match-lambda
+          ((var sep '= rest)
+           `(setenv ,var ,(string-join rest sep)))
+          ((var sep 'prefix rest)
+           `(let ((current (getenv ,var)))
+              (setenv ,var (if current
+                               (string-append ,(string-join rest sep)
+                                              ,sep current)
+                               ,(string-join rest sep)))))
+          ((var sep 'suffix rest)
+           `(let ((current (getenv ,var)))
+              (setenv ,var (if current
+                               (string-append current ,sep
+                                              ,(string-join rest sep))
+                               ,(string-join rest sep)))))
+          ((var '= rest)
+           `(setenv ,var ,(string-join rest ":")))
+          ((var 'prefix rest)
+           `(let ((current (getenv ,var)))
+              (setenv ,var (if current
+                               (string-append ,(string-join rest ":")
+                                              ":" current)
+                               ,(string-join rest ":")))))
+          ((var 'suffix rest)
+           `(let ((current (getenv ,var)))
+              (setenv ,var (if current
+                               (string-append current ":"
+                                              ,(string-join rest ":"))
+                               ,(string-join rest ":")))))))
+      (let-values (((interpreter args coding-line)
+                    (call-with-ascii-input-file prog
+                      (lambda (p)
+                        (let ((first-match
+                               (false-if-exception
+                                (regexp-exec interpreter-regex (read-line p)))))
+                          (values (and first-match (match:substring first-match 1))
+                                  (and first-match (match:substring first-match 3))
+                                  (false-if-exception
+                                   (and=> (regexp-exec coding-line-regex (read-line p))
+                                          (lambda (m) (match:substring m 0))))))))))
+        (if interpreter
+            (let* ((header (format #f "\
+#!~a --no-auto-compile
+#!#; ~a
+#\\-~s
+#\\-~s
+"
+                                   guile
+                                   (or coding-line "Guix wrapper")
+                                   (cons 'begin (map update-env
+                                                     (match vars
+                                                       ((#:guile _ . vars) vars)
+                                                       (_ vars))))
+                                   `(let ((cl (command-line)))
+                                      (apply execl ,interpreter
+                                             (car cl)
+                                             (cons (car cl)
+                                                   (append
+                                                    ',(string-split args #\space)
+                                                    cl))))))
+                   (template (string-append prog ".XXXXXX"))
+                   (out      (mkstemp! template))
+                   (st       (stat prog))
+                   (mode     (stat:mode st)))
+              (with-throw-handler #t
+                (lambda ()
+                  (call-with-ascii-input-file prog
+                    (lambda (p)
+                      (format out header)
+                      (dump-port p out)
+                      (close out)
+                      (chmod template mode)
+                      (rename-file template prog)
+                      (set-file-time prog st))))
+                (lambda (key . args)
+                  (format (current-error-port)
+                          "wrap-script: ~a: error: ~a ~s~%"
+                          prog key args)
+                  (false-if-exception (delete-file template))
+                  (raise (condition
+                          (&wrap-error (program prog)
+                                       (type key))))
+                  #f)))
+            (raise (condition
+                    (&wrap-error (program prog)
+                                 (type 'no-interpreter-found)))))))))
+
 
 ;;;
 ;;; Locales.
diff --git a/guix/download.scm b/guix/download.scm
index b24aaa0a86..47c8087732 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -36,6 +36,7 @@
   #:use-module (srfi srfi-26)
   #:export (%mirrors
             url-fetch
+            url-fetch/executable
             url-fetch/tarbomb
             url-fetch/zipbomb
             download-to-store))
@@ -419,8 +420,10 @@
 (define* (built-in-download file-name url
                             #:key system hash-algo hash
                             mirrors content-addressed-mirrors
+                            executable?
                             (guile 'unused))
-  "Download FILE-NAME from URL using the built-in 'download' builder.
+  "Download FILE-NAME from URL using the built-in 'download' builder.  When
+EXECUTABLE? is true, make the downloaded file executable.
 
 This is an \"out-of-band\" download in that the returned derivation does not
 explicitly depend on Guile, GnuTLS, etc.  Instead, the daemon performs the
@@ -432,6 +435,7 @@ download by itself using its own dependencies."
                     #:system system
                     #:hash-algo hash-algo
                     #:hash hash
+                    #:recursive? executable?
                     #:sources (list mirrors content-addressed-mirrors)
 
                     ;; Honor the user's proxy and locale settings.
@@ -442,7 +446,10 @@ download by itself using its own dependencies."
                     #:env-vars `(("url" . ,(object->string url))
                                  ("mirrors" . ,mirrors)
                                  ("content-addressed-mirrors"
-                                  . ,content-addressed-mirrors))
+                                  . ,content-addressed-mirrors)
+                                 ,@(if executable?
+                                       '(("executable" . "1"))
+                                       '()))
 
                     ;; Do not offload this derivation because we cannot be
                     ;; sure that the remote daemon supports the 'download'
@@ -453,11 +460,13 @@ download by itself using its own dependencies."
 (define* (url-fetch url hash-algo hash
                     #:optional name
                     #:key (system (%current-system))
-                    (guile (default-guile)))
+                    (guile (default-guile))
+                    executable?)
   "Return a fixed-output derivation that fetches URL (a string, or a list of
 strings denoting alternate URLs), which is expected to have hash HASH of type
 HASH-ALGO (a symbol).  By default, the file name is the base name of URL;
-optionally, NAME can specify a different file name.
+optionally, NAME can specify a different file name.  When EXECUTABLE? is true,
+make the downloaded file executable.
 
 When one of the URL starts with mirror://, then its host part is
 interpreted as the name of a mirror scheme, taken from %MIRROR-FILE.
@@ -488,10 +497,21 @@ in the store."
                              #:system system
                              #:hash-algo hash-algo
                              #:hash hash
+                             #:executable? executable?
                              #:mirrors %mirror-file
                              #:content-addressed-mirrors
                              %content-addressed-mirror-file)))))
 
+(define* (url-fetch/executable url hash-algo hash
+                               #:optional name
+                               #:key (system (%current-system))
+                               (guile (default-guile)))
+  "Like 'url-fetch', but make the downloaded file executable."
+  (url-fetch url hash-algo hash name
+             #:system system
+             #:guile guile
+             #:executable? #t))
+
 (define* (url-fetch/tarbomb url hash-algo hash
                             #:optional name
                             #:key (system (%current-system))
diff --git a/guix/gexp.scm b/guix/gexp.scm
index e788fc5981..44db75b7c2 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -663,8 +663,7 @@ names and file names suitable for the #:allowed-references argument to
                      (guile-for-build (%guile-for-build))
                      (effective-version "2.2")
 
-                     deprecation-warnings
-                     (pre-load-modules? #t))      ;transitional
+                     deprecation-warnings)
   "*Note: This API is subject to change; use at your own risk!*
 
 Lower EXP, a gexp, instantiating it for SYSTEM and TARGET.  Return a
@@ -731,8 +730,6 @@ derivations--e.g., code evaluated for its side effects."
                                                        #:module-path module-path
                                                        #:extensions extensions
                                                        #:guile guile
-                                                       #:pre-load-modules?
-                                                       pre-load-modules?
                                                        #:deprecation-warnings
                                                        deprecation-warnings)
                                      (return #f))))
@@ -776,12 +773,6 @@ derivations--e.g., code evaluated for its side effects."
                            leaked-env-vars
                            local-build? (substitutable? #t)
                            (properties '())
-
-                           ;; TODO: This parameter is transitional; it's here
-                           ;; to avoid a full rebuild.  Remove it on the next
-                           ;; rebuild cycle.
-                           (pre-load-modules? #t)
-
                            deprecation-warnings
                            (script-name (string-append name "-builder")))
   "Return a derivation NAME that runs EXP (a gexp) with GUILE-FOR-BUILD (a
@@ -865,9 +856,7 @@ The other arguments are as for 'derivation'."
                                               #:effective-version
                                               effective-version
                                               #:deprecation-warnings
-                                              deprecation-warnings
-                                              #:pre-load-modules?
-                                              pre-load-modules?))
+                                              deprecation-warnings))
 
                        (graphs   (if references-graphs
                                      (lower-reference-graphs references-graphs
@@ -1349,11 +1338,7 @@ last one is created from the given <scheme-file> object."
                            (guile (%guile-for-build))
                            (module-path %load-path)
                            (extensions '())
-                           (deprecation-warnings #f)
-
-                           ;; TODO: This flag is here to prevent a full
-                           ;; rebuild.  Remove it on the next rebuild cycle.
-                           (pre-load-modules? #t))
+                           (deprecation-warnings #f))
   "Return a derivation that builds a tree containing the `.go' files
 corresponding to MODULES.  All the MODULES are built in a context where
 they can refer to each other.  When TARGET is true, cross-compile MODULES for
@@ -1393,11 +1378,8 @@ TARGET, a GNU triplet."
                (let* ((base   (basename entry ".scm"))
                       (output (string-append output "/" base ".go")))
                  (format #t "[~2@a/~2@a] Compiling '~a'...~%"
-                         (+ 1 processed
-                              (ungexp-splicing (if pre-load-modules?
-                                                   (gexp ((ungexp total)))
-                                                   (gexp ()))))
-                         (ungexp (* total (if pre-load-modules? 2 1)))
+                         (+ 1 processed (ungexp total))
+                         (ungexp (* total 2))
                          entry)
 
                  (ungexp-splicing
@@ -1421,6 +1403,26 @@ TARGET, a GNU triplet."
                    processed
                    entries)))
 
+         (define* (load-from-directory directory
+                                       #:optional (loaded 0))
+           "Load all the source files found in DIRECTORY."
+           ;; XXX: This works around <https://bugs.gnu.org/15602>.
+           (let ((entries (map (cut string-append directory "/" <>)
+                               (scandir directory regular?))))
+             (fold (lambda (file loaded)
+                     (if (file-is-directory? file)
+                         (load-from-directory file loaded)
+                         (begin
+                           (format #t "[~2@a/~2@a] Loading '~a'...~%"
+                                   (+ 1 loaded) (ungexp (* 2 total))
+                                   file)
+                           (save-module-excursion
+                            (lambda ()
+                              (primitive-load file)))
+                           (+ 1 loaded))))
+                   loaded
+                   entries)))
+
          (setvbuf (current-output-port)
                   (cond-expand (guile-2.2 'line) (else _IOLBF)))
 
@@ -1456,32 +1458,7 @@ TARGET, a GNU triplet."
          (mkdir (ungexp output))
          (chdir (ungexp modules))
 
-         (ungexp-splicing
-          (if pre-load-modules?
-              (gexp ((define* (load-from-directory directory
-                                                   #:optional (loaded 0))
-                       "Load all the source files found in DIRECTORY."
-                       ;; XXX: This works around <https://bugs.gnu.org/15602>.
-                       (let ((entries (map (cut string-append directory "/" <>)
-                                           (scandir directory regular?))))
-                         (fold (lambda (file loaded)
-                                 (if (file-is-directory? file)
-                                     (load-from-directory file loaded)
-                                     (begin
-                                       (format #t "[~2@a/~2@a] Loading '~a'...~%"
-                                               (+ 1 loaded)
-                                               (ungexp (* 2 total))
-                                               file)
-                                       (save-module-excursion
-                                        (lambda ()
-                                          (primitive-load file)))
-                                       (+ 1 loaded))))
-                               loaded
-                               entries)))
-
-                     (load-from-directory ".")))
-              (gexp ())))
-
+         (load-from-directory ".")
          (process-directory "." (ungexp output) 0))))
 
     ;; TODO: Pass MODULES as an environment variable.
diff --git a/guix/packages.scm b/guix/packages.scm
index b92ed0ab0c..f2c94c7bc2 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -505,11 +506,17 @@ specifies modules in scope when evaluating SNIPPET."
     (and=> (file-extension file-name)
            (cut string-every char-set:hex-digit <>)))
 
+  (define (checkout? directory)
+    ;; Return true if DIRECTORY is a checkout (git, svn, etc).
+    (string-suffix? "-checkout" directory))
+
   (define (tarxz-name file-name)
     ;; Return a '.tar.xz' file name based on FILE-NAME.
-    (let ((base (if (numeric-extension? file-name)
-                    original-file-name
-                    (file-sans-extension file-name))))
+    (let ((base (cond ((numeric-extension? file-name)
+                       original-file-name)
+                      ((checkout? file-name)
+                       (string-drop-right file-name 9))
+                      (else (file-sans-extension file-name)))))
       (string-append base
                      (if (equal? (file-extension base) "tar")
                          ".xz"
@@ -642,13 +649,11 @@ specifies modules in scope when evaluating SNIPPET."
 
     (let ((name (tarxz-name original-file-name)))
       (gexp->derivation name build
-                        ;; TODO: Remove this on the next rebuild cycle.
-                        #:pre-load-modules? #f
-
                         #:graft? #f
                         #:system system
-                        #:deprecation-warnings #t ;to avoid a rebuild
-                        #:guile-for-build guile-for-build))))
+                        #:guile-for-build guile-for-build
+                        #:properties `((type . origin)
+                                       (patches . ,(length patches)))))))
 
 (define (transitive-inputs inputs)
   "Return the closure of INPUTS when considering the 'propagated-inputs'
@@ -762,23 +767,29 @@ in INPUTS and their transitive propagated inputs."
        (transitive-inputs inputs)))
 
 (define package-transitive-supported-systems
-  (mlambdaq (package)
-    "Return the intersection of the systems supported by PACKAGE and those
+  (let ()
+    (define supported-systems
+      (mlambda (package system)
+        (parameterize ((%current-system system))
+          (fold (lambda (input systems)
+                  (match input
+                    ((label (? package? package) . _)
+                     (lset-intersection string=? systems
+                                        (supported-systems package system)))
+                    (_
+                     systems)))
+                (package-supported-systems package)
+                (bag-direct-inputs (package->bag package))))))
+
+    (lambda* (package #:optional (system (%current-system)))
+      "Return the intersection of the systems supported by PACKAGE and those
 supported by its dependencies."
-    (fold (lambda (input systems)
-            (match input
-              ((label (? package? p) . _)
-               (lset-intersection
-                string=? systems (package-transitive-supported-systems p)))
-              (_
-               systems)))
-          (package-supported-systems package)
-          (bag-direct-inputs (package->bag package)))))
+      (supported-systems package system))))
 
 (define* (supported-package? package #:optional (system (%current-system)))
   "Return true if PACKAGE is supported on SYSTEM--i.e., if PACKAGE and all its
 dependencies are known to build on SYSTEM."
-  (member system (package-transitive-supported-systems package)))
+  (member system (package-transitive-supported-systems package system)))
 
 (define (bag-direct-inputs bag)
   "Same as 'package-direct-inputs', but applied to a bag."
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 535f181bfd..cfe0a37c42 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -29,7 +29,7 @@
   #:use-module (guix search-paths)
   #:use-module (guix build utils)
   #:use-module (guix monads)
-  #:use-module ((guix gexp) #:select (lower-inputs))
+  #:use-module ((guix gexp) #:select (lower-object))
   #:use-module (guix scripts)
   #:use-module (guix scripts build)
   #:use-module (gnu build linux-container)
@@ -40,7 +40,8 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages commencement)
   #:use-module (gnu packages guile)
-  #:use-module ((gnu packages bootstrap) #:select (%bootstrap-guile))
+  #:use-module ((gnu packages bootstrap)
+                #:select (bootstrap-executable %bootstrap-guile))
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
   #:use-module (ice-9 rdelim)
@@ -616,8 +617,7 @@ Otherwise, return the derivation for the Bash package."
       (package->derivation bash))
      ;; Use the bootstrap Bash instead.
      ((and container? bootstrap?)
-      (interned-file
-       (search-bootstrap-binary "bash" system)))
+      (lower-object (bootstrap-executable "bash" system)))
      (else
       (return #f)))))
 
@@ -750,7 +750,7 @@ message if any test fails."
                    (container?
                     (let ((bash-binary
                            (if bootstrap?
-                               bash
+                               (derivation->output-path bash)
                                (string-append (derivation->output-path bash)
                                               "/bin/sh"))))
                       (launch-environment/container #:command command
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 2543f0c0b5..920d6c01fe 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -574,9 +574,9 @@ the image."
   "Return the C compiler that uses the bootstrap toolchain.  This is used only
 by '--bootstrap', for testing purposes."
   (define bootstrap-toolchain
-    (list (first (assoc-ref %bootstrap-inputs "gcc"))
-          (first (assoc-ref %bootstrap-inputs "binutils"))
-          (first (assoc-ref %bootstrap-inputs "libc"))))
+    (list (first (assoc-ref (%bootstrap-inputs) "gcc"))
+          (first (assoc-ref (%bootstrap-inputs) "binutils"))
+          (first (assoc-ref (%bootstrap-inputs) "libc"))))
 
   (c-compiler bootstrap-toolchain
               #:guile %bootstrap-guile))
diff --git a/guix/self.scm b/guix/self.scm
index 142c834137..207e80d842 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -733,6 +733,7 @@ Info manual."
                  (filter-map (match-lambda
                                (('guix 'scripts _ ..1) #f)
                                (('guix 'man-db) #f)
+                               (('guix 'tests _ ...) #f)
                                (name name))
                              (scheme-modules* source "guix"))
                  (list *core-modules*)
diff --git a/guix/tests.scm b/guix/tests.scm
index 66d60e964e..ff31bcad44 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -23,12 +23,18 @@
   #:use-module (guix packages)
   #:use-module (guix base32)
   #:use-module (guix serialization)
+  #:use-module (guix monads)
+  #:use-module ((guix utils) #:select (substitute-keyword-arguments))
+  #:use-module ((guix build utils) #:select (mkdir-p))
   #:use-module (gcrypt hash)
   #:use-module (guix build-system gnu)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bootstrap)
+  #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-64)
   #:use-module (rnrs bytevectors)
+  #:use-module (ice-9 match)
   #:use-module (ice-9 binary-ports)
   #:use-module (web uri)
   #:export (open-connection-for-tests
@@ -42,6 +48,8 @@
             shebang-too-long?
             with-environment-variable
 
+            search-bootstrap-binary
+
             mock
             %test-substitute-urls
             test-assertm
@@ -50,7 +58,9 @@
             with-derivation-narinfo
             with-derivation-substitute
             dummy-package
-            dummy-origin))
+            dummy-origin
+
+            gnu-make-for-tests))
 
 ;;; Commentary:
 ;;;
@@ -83,6 +93,35 @@
 
       store)))
 
+(define (bootstrap-binary-file program system)
+  "Return the absolute file name where bootstrap binary PROGRAM for SYSTEM is
+stored."
+  (string-append (dirname (search-path %load-path
+                                       "gnu/packages/bootstrap.scm"))
+                 "/bootstrap/" system "/" program))
+
+(define (search-bootstrap-binary file-name system)
+  "Search the bootstrap binary FILE-NAME for SYSTEM.  Raise an error if not
+found."
+  ;; Note: Keep bootstrap binaries on the local file system so that the 'guix'
+  ;; package can provide them as inputs and copy them to the right place.
+  (let* ((system (match system
+                   ("x86_64-linux" "i686-linux")
+                   (_ system)))
+         (file   (bootstrap-binary-file file-name system)))
+    (if (file-exists? file)
+        file
+        (with-store store
+          (run-with-store store
+            (mlet %store-monad ((drv (origin->derivation
+                                      (bootstrap-executable file-name system))))
+              (mbegin %store-monad
+                (built-derivations (list drv))
+                (begin
+                  (mkdir-p (dirname file))
+                  (copy-file (derivation->output-path drv) file)
+                  (return file)))))))))
+
 (define (call-with-external-store proc)
   "Call PROC with an open connection to the external store or #f it there is
 no external store to talk to."
@@ -364,6 +403,33 @@ default values, and with EXTRA-FIELDS set as specified."
                    (sha256 (base32 (make-string 52 #\x))))))
     (origin (inherit o) extra-fields ...)))
 
+(define gnu-make-for-tests
+  ;; This is a variant of 'gnu-make-boot0' that can be built with minimal
+  ;; resources.
+  (package-with-bootstrap-guile
+   (package
+     (inherit gnu-make)
+     (name "make-test-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")
+                    #t))
+                (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-for-tests))))
+
 ;; Local Variables:
 ;; eval: (put 'call-with-derivation-narinfo 'scheme-indent-function 1)
 ;; eval: (put 'call-with-derivation-substitute 'scheme-indent-function 2)
diff --git a/po/doc/guix-manual.de.po b/po/doc/guix-manual.de.po
index 7a598cfc64..227fe67906 100644
--- a/po/doc/guix-manual.de.po
+++ b/po/doc/guix-manual.de.po
@@ -1999,7 +1999,7 @@ msgstr "Wie ein solches entsteht."
 #: doc/guix.texi:184 doc/guix.texi:2039 doc/guix.texi:2041
 #, no-wrap
 msgid "Keyboard Layout and Networking and Partitioning"
-msgstr "Tastaturbelegung und Netzwerkanbindung und Partitionierung"
+msgstr "Tastaturbelegung@comma{} Netzwerkanbindung und Partitionierung"
 
 #. type: menuentry
 #: doc/guix.texi:184 doc/guix.texi:2039
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index f629034d61..9c492997cf 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -37,6 +37,8 @@ gnu/installer/timezone.scm
 gnu/installer/user.scm
 gnu/installer/utils.scm
 gnu/machine/ssh.scm
+gnu/packages/bootstrap.scm
+guix/build/utils.scm
 guix/scripts.scm
 guix/scripts/build.scm
 guix/discovery.scm
@@ -83,6 +85,4 @@ guix/profiles.scm
 guix/git.scm
 guix/deprecation.scm
 guix/derivations.scm
-gnu/build/bootloader.scm
 nix/nix-daemon/guix-daemon.cc
-
diff --git a/tests/build-utils.scm b/tests/build-utils.scm
index 46fe8ea2c0..61e6c44e63 100644
--- a/tests/build-utils.scm
+++ b/tests/build-utils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2015, 2016, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,8 +21,6 @@
 (define-module (test-build-utils)
   #:use-module (guix tests)
   #:use-module (guix build utils)
-  #:use-module ((gnu build bootloader)
-                #:select (invoke/quiet))
   #:use-module ((guix utils)
                 #:select (%current-system call-with-temporary-directory))
   #:use-module (gnu packages)
@@ -144,4 +143,105 @@
     (invoke/quiet "sh" "-c" "echo This is another error. >&2 ; false")
     #f))
 
+(let ((script-contents "\
+#!/anything/cabbage-bash-1.2.3/bin/sh
+
+echo hello world"))
+
+  (test-equal "wrap-script, simple case"
+    (string-append
+     (format #f "\
+#!GUILE --no-auto-compile
+#!#; Guix wrapper
+#\\-~s
+#\\-~s
+"
+             '(begin (let ((current (getenv "GUIX_FOO")))
+                       (setenv "GUIX_FOO"
+                               (if current
+                                   (string-append "/some/path:/some/other/path"
+                                                  ":" current)
+                                   "/some/path:/some/other/path"))))
+             '(let ((cl (command-line)))
+                (apply execl "/anything/cabbage-bash-1.2.3/bin/sh"
+                       (car cl)
+                       (cons (car cl)
+                             (append '("") cl)))))
+     script-contents)
+    (call-with-temporary-directory
+     (lambda (directory)
+       (let ((script-file-name (string-append directory "/foo")))
+         (call-with-output-file script-file-name
+           (lambda (port)
+             (format port script-contents)))
+         (chmod script-file-name #o777)
+
+         (mock ((guix build utils) which (const "GUILE"))
+               (wrap-script script-file-name
+                            `("GUIX_FOO" prefix ("/some/path"
+                                                 "/some/other/path"))))
+         (let ((str (call-with-input-file script-file-name get-string-all)))
+           (with-directory-excursion directory
+             (delete-file "foo"))
+           str))))))
+
+(let ((script-contents "\
+#!/anything/cabbage-bash-1.2.3/bin/python3 -and -args
+# vim:fileencoding=utf-8
+print('hello world')"))
+
+  (test-equal "wrap-script, with encoding declaration"
+    (string-append
+     (format #f "\
+#!MYGUILE --no-auto-compile
+#!#; # vim:fileencoding=utf-8
+#\\-~s
+#\\-~s
+"
+             '(begin (let ((current (getenv "GUIX_FOO")))
+                       (setenv "GUIX_FOO"
+                               (if current
+                                   (string-append "/some/path:/some/other/path"
+                                                  ":" current)
+                                   "/some/path:/some/other/path"))))
+             `(let ((cl (command-line)))
+                (apply execl "/anything/cabbage-bash-1.2.3/bin/python3"
+                       (car cl)
+                       (cons (car cl)
+                             (append '("" "-and" "-args") cl)))))
+     script-contents)
+    (call-with-temporary-directory
+     (lambda (directory)
+       (let ((script-file-name (string-append directory "/foo")))
+         (call-with-output-file script-file-name
+           (lambda (port)
+             (format port script-contents)))
+         (chmod script-file-name #o777)
+
+         (wrap-script script-file-name
+                      #:guile "MYGUILE"
+                      `("GUIX_FOO" prefix ("/some/path"
+                                           "/some/other/path")))
+         (let ((str (call-with-input-file script-file-name get-string-all)))
+           (with-directory-excursion directory
+             (delete-file "foo"))
+           str))))))
+
+(test-assert "wrap-script, raises condition"
+  (call-with-temporary-directory
+   (lambda (directory)
+     (let ((script-file-name (string-append directory "/foo")))
+       (call-with-output-file script-file-name
+         (lambda (port)
+           (format port "This is not a script")))
+       (chmod script-file-name #o777)
+       (catch 'srfi-34
+         (lambda ()
+           (wrap-script script-file-name
+                        #:guile "MYGUILE"
+                        `("GUIX_FOO" prefix ("/some/path"
+                                             "/some/other/path"))))
+         (lambda (type obj)
+           (wrap-error? obj)))))))
+
 (test-end)
diff --git a/tests/builders.scm b/tests/builders.scm
index 8b8ef013e7..fdcf38ded3 100644
--- a/tests/builders.scm
+++ b/tests/builders.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,7 +28,8 @@
   #:use-module (gcrypt hash)
   #:use-module (guix tests)
   #:use-module ((guix packages)
-                #:select (package-derivation package-native-search-paths))
+                #:select (package?
+                          package-derivation package-native-search-paths))
   #:use-module (gnu packages bootstrap)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
@@ -39,23 +40,6 @@
 (define %store
   (open-connection-for-tests))
 
-(define %bootstrap-inputs
-  ;; Use the bootstrap inputs so it doesn't take ages to run these tests.
-  ;; This still involves building Make, Diffutils, and Findutils.
-  ;; XXX: We're relying on the higher-level `package-derivations' here.
-  (and %store
-       (map (match-lambda
-             ((name package)
-              (list name (package-derivation %store package))))
-            (@@ (gnu packages commencement) %boot0-inputs))))
-
-(define %bootstrap-search-paths
-  ;; Search path specifications that go with %BOOTSTRAP-INPUTS.
-  (append-map (match-lambda
-               ((name package _ ...)
-                (package-native-search-paths package)))
-              (@@ (gnu packages commencement) %boot0-inputs)))
-
 (define url-fetch*
   (store-lower url-fetch))
 
@@ -94,22 +78,4 @@
 (test-assert "gnu-build-system"
   (build-system? gnu-build-system))
 
-(when (or (not (network-reachable?)) (shebang-too-long?))
-  (test-skip 1))
-(test-assert "gnu-build"
-  (let* ((url      "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
-         (hash     (nix-base32-string->bytevector
-                    "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))
-         (tarball  (url-fetch* %store url 'sha256 hash
-                               #:guile %bootstrap-guile))
-         (build    (gnu-build %store "hello-2.8"
-                              `(("source" ,tarball)
-                                ,@%bootstrap-inputs)
-                              #:guile %bootstrap-guile
-                              #:search-paths %bootstrap-search-paths))
-         (out      (derivation->output-path build)))
-    (and (build-derivations %store (list (pk 'hello-drv build)))
-         (valid-path? %store out)
-         (file-exists? (string-append out "/bin/hello")))))
-
 (test-end "builders")
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 00cedef32c..6a7fad85b5 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -29,7 +29,6 @@
   #:use-module (guix tests http)
   #:use-module ((guix packages) #:select (package-derivation base32))
   #:use-module ((guix build utils) #:select (executable-file?))
-  #:use-module ((gnu packages) #:select (search-bootstrap-binary))
   #:use-module (gnu packages bootstrap)
   #:use-module ((gnu packages guile) #:select (guile-1.8))
   #:use-module (srfi srfi-1)
diff --git a/tests/grafts.scm b/tests/grafts.scm
index 6fd3d5e171..a12c6a5911 100644
--- a/tests/grafts.scm
+++ b/tests/grafts.scm
@@ -24,7 +24,6 @@
   #:use-module (guix utils)
   #:use-module (guix grafts)
   #:use-module (guix tests)
-  #:use-module ((gnu packages) #:select (search-bootstrap-binary))
   #:use-module (gnu packages bootstrap)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-64)
diff --git a/tests/graph.scm b/tests/graph.scm
index c4c5096226..b7732ec709 100644
--- a/tests/graph.scm
+++ b/tests/graph.scm
@@ -153,9 +153,9 @@ edges."
                        (match nodes
                          (((labels names) ...)
                           names))))
-               (match %bootstrap-inputs
+               (match (%bootstrap-inputs)
                  (((labels packages) ...)
-                  (map package-full-name packages))))))))
+                  (map package-full-name (filter package? packages)))))))))
 
 (test-assert "bag DAG, including origins"
   (let-values (((backend nodes+edges) (make-recording-backend)))
diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh
index 78f82eafe2..758f18cc36 100644
--- a/tests/guix-daemon.sh
+++ b/tests/guix-daemon.sh
@@ -141,7 +141,7 @@ daemon_pid=$!
 
 GUIX_DAEMON_SOCKET="$socket" \
 guile -c '
-  (use-modules (guix) (gnu packages) (guix tests))
+  (use-modules (guix) (guix tests))
 
   (with-store store
     (let* ((build  (add-text-to-store store "build.sh"
@@ -165,7 +165,7 @@ kill "$daemon_pid"
 # honored.
 
 client_code='
-  (use-modules (guix) (gnu packages) (guix tests) (srfi srfi-34))
+  (use-modules (guix) (guix tests) (srfi srfi-34))
 
   (with-store store
     (let* ((build  (add-text-to-store store "build.sh"
diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh
index a670db36be..fb1c1a022d 100644
--- a/tests/guix-environment.sh
+++ b/tests/guix-environment.sh
@@ -156,7 +156,7 @@ if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
 then
     # Compute the build environment for the initial GNU Make.
     guix environment --bootstrap --no-substitutes --search-paths --pure \
-         -e '(@@ (gnu packages commencement) gnu-make-boot0)' > "$tmpdir/a"
+         -e '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/a"
 
     # Make sure bootstrap binaries are in the profile.
     profile=`grep "^export PATH" "$tmpdir/a" | sed -r 's|^.*="(.*)/bin"|\1|'`
@@ -177,30 +177,15 @@ then
     # Make sure that the shell spawned with '--exec' sees the same environment
     # as returned by '--search-paths'.
     guix environment --bootstrap --no-substitutes --pure \
-         -e '(@@ (gnu packages commencement) gnu-make-boot0)' \
+         -e '(@ (guix tests) gnu-make-for-tests)' \
          -- /bin/sh -c 'echo $PATH $CPATH $LIBRARY_PATH' > "$tmpdir/b"
     ( . "$tmpdir/a" ; echo $PATH $CPATH $LIBRARY_PATH ) > "$tmpdir/c"
     cmp "$tmpdir/b" "$tmpdir/c"
 
     rm "$tmpdir"/*
 
-    # Compute the build environment for the initial GNU Findutils.
-    guix environment --bootstrap --no-substitutes --search-paths --pure \
-         -e '(@@ (gnu packages commencement) findutils-boot0)' > "$tmpdir/a"
-    profile=`grep "^export PATH" "$tmpdir/a" | sed -r 's|^.*="(.*)/bin"|\1|'`
-
-    # Make sure the bootstrap binaries are all listed where they belong.
-    grep -E "^export PATH=\"$profile/bin\""         "$tmpdir/a"
-    grep -E "^export CPATH=\"$profile/include\""    "$tmpdir/a"
-    grep -E "^export LIBRARY_PATH=\"$profile/lib\"" "$tmpdir/a"
-    for dep in bootstrap-binaries-0 gcc-bootstrap-0 glibc-bootstrap-0 \
-				    make-boot0
-    do
-	guix gc --references "$profile" | grep "$dep"
-    done
-
     # The following test assumes 'make-boot0' has a "debug" output.
-    make_boot0_debug="`guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)' | grep -e -debug`"
+    make_boot0_debug="`guix build -e '(@ (guix tests) gnu-make-for-tests)' | grep -e -debug`"
     test "x$make_boot0_debug" != "x"
 
     # Make sure the "debug" output is not listed.
@@ -210,7 +195,7 @@ then
     # Compute the build environment for the initial GNU Make, but add in the
     # bootstrap Guile as an ad-hoc addition.
     guix environment --bootstrap --no-substitutes --search-paths --pure	\
-         -e '(@@ (gnu packages commencement) gnu-make-boot0)'		\
+         -e '(@ (guix tests) gnu-make-for-tests)'		\
          --ad-hoc guile-bootstrap > "$tmpdir/a"
     profile=`grep "^export PATH" "$tmpdir/a" | sed -r 's|^.*="(.*)/bin"|\1|'`
 
@@ -227,14 +212,14 @@ then
     # Make sure a package list with plain package objects and package+output
     # tuples can be used with -e.
     expr_list_test_code="
-(list (@@ (gnu packages commencement) gnu-make-boot0)
+(list (@ (guix tests) gnu-make-for-tests)
       (list (@ (gnu packages bootstrap) %bootstrap-guile) \"out\"))"
 
     guix environment --bootstrap --ad-hoc --no-substitutes --search-paths \
          --pure -e "$expr_list_test_code" > "$tmpdir/a"
     profile=`grep "^export PATH" "$tmpdir/a" | sed -r 's|^.*="(.*)/bin"|\1|'`
 
-    for dep in make-boot0 guile-bootstrap
+    for dep in make-test-boot0 guile-bootstrap
     do
 	guix gc --references "$profile" | grep "$dep"
     done
diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh
index 82c346dd4c..48a94865e1 100644
--- a/tests/guix-package-net.sh
+++ b/tests/guix-package-net.sh
@@ -57,7 +57,7 @@ test -L "$profile" && test -L "$profile-1-link"
 ! test -f "$profile-2-link"
 test -f "$profile/bin/guile"
 
-boot_make="(@@ (gnu packages commencement) gnu-make-boot0)"
+boot_make="(@ (guix tests) gnu-make-for-tests)"
 boot_make_drv="`guix build -e "$boot_make" | grep -v -e -debug`"
 guix package --bootstrap -p "$profile" -i "$boot_make_drv"
 test -L "$profile-2-link"
diff --git a/tests/packages.scm b/tests/packages.scm
index 836d446657..423c5061aa 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,6 +37,7 @@
   #:use-module (guix build-system)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
+  #:use-module (guix memoization)
   #:use-module (guix profiles)
   #:use-module (guix scripts package)
   #:use-module (gnu packages)
@@ -336,18 +338,55 @@
   ;; Here GNU-BUILD-SYSTEM adds implicit inputs that build only on
   ;; %SUPPORTED-SYSTEMS.  Thus the others must be ignored.
   (let ((p (dummy-package "foo"
+               (build-system gnu-build-system)
+               (supported-systems
+                `("does-not-exist" "foobar" ,@%supported-systems)))))
+    (parameterize ((%current-system "armhf-linux")) ; a traditionally-bootstrapped architecture
+      (package-transitive-supported-systems p))))
+
+(test-equal "package-transitive-supported-systems: reduced binary seed, implicit inputs"
+  '("x86_64-linux" "i686-linux")
+
+  ;; Here GNU-BUILD-SYSTEM adds implicit inputs that build only on
+  ;; %SUPPORTED-SYSTEMS.  Thus the others must be ignored.
+  (let ((p (dummy-package "foo"
              (build-system gnu-build-system)
              (supported-systems
               `("does-not-exist" "foobar" ,@%supported-systems)))))
-    (package-transitive-supported-systems p)))
+    (parameterize ((%current-system "x86_64-linux"))
+      (package-transitive-supported-systems p))))
 
 (test-assert "supported-package?"
-  (let ((p (dummy-package "foo"
-             (build-system gnu-build-system)
-             (supported-systems '("x86_64-linux" "does-not-exist")))))
+  (let* ((d (dummy-package "dep"
+              (build-system trivial-build-system)
+              (supported-systems '("x86_64-linux"))))
+         (p (dummy-package "foo"
+              (build-system gnu-build-system)
+              (inputs `(("d" ,d)))
+              (supported-systems '("x86_64-linux" "armhf-linux")))))
+    (and (supported-package? p "x86_64-linux")
+         (not (supported-package? p "i686-linux"))
+         (not (supported-package? p "armhf-linux")))))
+
+(test-assert "supported-package? vs. system-dependent graph"
+  ;; The inputs of a package can depend on (%current-system).  Thus,
+  ;; 'supported-package?' must make sure that it binds (%current-system)
+  ;; appropriately before traversing the dependency graph.  In the example
+  ;; below, 'supported-package?' must thus return true for both systems.
+  (let* ((p0a (dummy-package "foo-arm"
+                (build-system trivial-build-system)
+                (supported-systems '("armhf-linux"))))
+         (p0b (dummy-package "foo-x86_64"
+                (build-system trivial-build-system)
+                (supported-systems '("x86_64-linux"))))
+         (p   (dummy-package "bar"
+                (build-system trivial-build-system)
+                (inputs
+                 (if (string=? (%current-system) "armhf-linux")
+                     `(("foo" ,p0a))
+                     `(("foo" ,p0b)))))))
     (and (supported-package? p "x86_64-linux")
-         (not (supported-package? p "does-not-exist"))
-         (not (supported-package? p "i686-linux")))))
+         (supported-package? p "armhf-linux"))))
 
 (test-skip (if (not %store) 8 0))
 
@@ -918,9 +957,9 @@
 (when (or (not (network-reachable?)) (shebang-too-long?))
   (test-skip 1))
 (test-assert "GNU Make, bootstrap"
-  ;; GNU Make is the first program built during bootstrap; we choose it
-  ;; here so that the test doesn't last for too long.
-  (let ((gnu-make (@@ (gnu packages commencement) gnu-make-boot0)))
+  ;; GNU-MAKE-FOR-TESTS can be built cheaply; we choose it here so that the
+  ;; test doesn't last for too long.
+  (let ((gnu-make gnu-make-for-tests))
     (and (package? gnu-make)
          (or (location? (package-location gnu-make))
              (not (package-location gnu-make)))
diff --git a/tests/profiles.scm b/tests/profiles.scm
index eef93e24cf..a4e28672b5 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -239,11 +239,10 @@
 (unless (network-reachable?) (test-skip 1))
 (test-assertm "profile-derivation relative symlinks, two entries"
   (mlet* %store-monad
-      ((gnu-make-boot0 -> (@@ (gnu packages commencement) gnu-make-boot0))
-       (manifest -> (packages->manifest
-                     (list %bootstrap-guile gnu-make-boot0)))
+      ((manifest -> (packages->manifest
+                     (list %bootstrap-guile gnu-make-for-tests)))
        (guile       (package->derivation %bootstrap-guile))
-       (make        (package->derivation gnu-make-boot0))
+       (make        (package->derivation gnu-make-for-tests))
        (drv         (profile-derivation manifest
                                         #:relative-symlinks? #t
                                         #:hooks '()
diff --git a/tests/search-paths.scm b/tests/search-paths.scm
index 8dad424415..767a80b76c 100644
--- a/tests/search-paths.scm
+++ b/tests/search-paths.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,17 +29,17 @@
 
 (test-equal "evaluate-search-paths, separator is #f"
   (string-append %top-srcdir
-                 "/gnu/packages/bootstrap/aarch64-linux")
+                 "/gnu/packages/aux-files/linux-libre")
 
   ;; The following search path spec should evaluate to a single item: the
   ;; first directory that matches the "-linux$" pattern in
   ;; gnu/packages/bootstrap.
   (let ((spec (search-path-specification
                (variable "CHBOUIB")
-               (files '("gnu/packages/bootstrap"))
+               (files '("gnu/packages/aux-files"))
                (file-type 'directory)
                (separator #f)
-               (file-pattern "-linux$"))))
+               (file-pattern "^linux"))))
     (match (evaluate-search-paths (list spec)
                                   (list %top-srcdir))
       (((spec* . value))
diff --git a/tests/union.scm b/tests/union.scm
index 5a6a4033fc..a8387edf42 100644
--- a/tests/union.scm
+++ b/tests/union.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -94,8 +95,9 @@
                          `(,name ,(package-derivation %store package))))
 
                        ;; Purposefully leave duplicate entries.
-                       (append %bootstrap-inputs
-                               (take %bootstrap-inputs 3))))
+                       (filter (compose package? cadr)
+                               (append %bootstrap-inputs-for-tests
+                                       (take %bootstrap-inputs-for-tests 3)))))
          (builder `(begin
                      (use-modules (guix build union))
                      (union-build (assoc-ref %outputs "out")