summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk47
-rw-r--r--gnu/packages/admin.scm38
-rw-r--r--gnu/packages/adns.scm8
-rw-r--r--gnu/packages/aspell.scm14
-rw-r--r--gnu/packages/autotools.scm445
-rw-r--r--gnu/packages/backup.scm120
-rw-r--r--gnu/packages/base.scm89
-rw-r--r--gnu/packages/bash.scm51
-rw-r--r--gnu/packages/bdw-gc.scm56
-rw-r--r--gnu/packages/bioinformatics.scm8
-rw-r--r--gnu/packages/bison.scm4
-rw-r--r--gnu/packages/bittorrent.scm2
-rw-r--r--gnu/packages/boost.scm340
-rw-r--r--gnu/packages/bootstrap.scm108
-rw-r--r--gnu/packages/calendar.scm54
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/check.scm230
-rw-r--r--gnu/packages/chromium.scm6
-rw-r--r--gnu/packages/cmake.scm254
-rw-r--r--gnu/packages/commencement.scm1516
-rw-r--r--gnu/packages/compression.scm147
-rw-r--r--gnu/packages/cran.scm10
-rw-r--r--gnu/packages/crypto.scm4
-rw-r--r--gnu/packages/cups.scm559
-rw-r--r--gnu/packages/curl.scm172
-rw-r--r--gnu/packages/cyrus-sasl.scm70
-rw-r--r--gnu/packages/databases.scm2
-rw-r--r--gnu/packages/dbm.scm4
-rw-r--r--gnu/packages/dejagnu.scm100
-rw-r--r--gnu/packages/diffoscope.scm7
-rw-r--r--gnu/packages/django.scm6
-rw-r--r--gnu/packages/djvu.scm15
-rw-r--r--gnu/packages/docbook.scm46
-rw-r--r--gnu/packages/documentation.scm73
-rw-r--r--gnu/packages/ed.scm12
-rw-r--r--gnu/packages/elf.scm6
-rw-r--r--gnu/packages/emacs.scm2
-rw-r--r--gnu/packages/file.scm24
-rw-r--r--gnu/packages/fontutils.scm14
-rw-r--r--gnu/packages/freedesktop.scm11
-rw-r--r--gnu/packages/fribidi.scm4
-rw-r--r--gnu/packages/gawk.scm67
-rw-r--r--gnu/packages/gcc.scm65
-rw-r--r--gnu/packages/gd.scm15
-rw-r--r--gnu/packages/geo.scm1
-rw-r--r--gnu/packages/gettext.scm5
-rw-r--r--gnu/packages/ghostscript.scm412
-rw-r--r--gnu/packages/gl.scm117
-rw-r--r--gnu/packages/glib.scm392
-rw-r--r--gnu/packages/gnome.scm501
-rw-r--r--gnu/packages/gnupg.scm110
-rw-r--r--gnu/packages/gnuzilla.scm28
-rw-r--r--gnu/packages/graphics.scm114
-rw-r--r--gnu/packages/graphviz.scm39
-rw-r--r--gnu/packages/gsasl.scm4
-rw-r--r--gnu/packages/gstreamer.scm31
-rw-r--r--gnu/packages/gtk.scm457
-rw-r--r--gnu/packages/guile.scm55
-rw-r--r--gnu/packages/haskell.scm43
-rw-r--r--gnu/packages/icu4c.scm163
-rw-r--r--gnu/packages/image.scm115
-rw-r--r--gnu/packages/inkscape.scm120
-rw-r--r--gnu/packages/java.scm44
-rw-r--r--gnu/packages/jemalloc.scm66
-rw-r--r--gnu/packages/kerberos.scm13
-rw-r--r--gnu/packages/libbsd.scm39
-rw-r--r--gnu/packages/libevent.scm6
-rw-r--r--gnu/packages/libffi.scm29
-rw-r--r--gnu/packages/libidn.scm10
-rw-r--r--gnu/packages/libreoffice.scm1
-rw-r--r--gnu/packages/libsigsegv.scm4
-rw-r--r--gnu/packages/libunistring.scm30
-rw-r--r--gnu/packages/libusb.scm4
-rw-r--r--gnu/packages/linux.scm408
-rw-r--r--gnu/packages/llvm.scm28
-rw-r--r--gnu/packages/lxde.scm2
-rw-r--r--gnu/packages/m4.scm37
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/make-bootstrap.scm6
-rw-r--r--gnu/packages/man.scm52
-rw-r--r--gnu/packages/maths.scm146
-rw-r--r--gnu/packages/matrix.scm4
-rw-r--r--gnu/packages/messaging.scm2
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/nettle.scm6
-rw-r--r--gnu/packages/networking.scm6
-rw-r--r--gnu/packages/ninja.scm6
-rw-r--r--gnu/packages/node.scm16
-rw-r--r--gnu/packages/nss.scm20
-rw-r--r--gnu/packages/onc-rpc.scm9
-rw-r--r--gnu/packages/openldap.scm124
-rw-r--r--gnu/packages/package-management.scm2
-rw-r--r--gnu/packages/patches/autotrace-glib-compat.patch50
-rw-r--r--gnu/packages/patches/bash-completion-directories.patch20
-rw-r--r--gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch231
-rw-r--r--gnu/packages/patches/binutils-CVE-2021-45078.patch257
-rw-r--r--gnu/packages/patches/cmake-curl-certificates.patch15
-rw-r--r--gnu/packages/patches/coreutils-ls.patch117
-rw-r--r--gnu/packages/patches/curl-easy-lock.patch31
-rw-r--r--gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch25
-rw-r--r--gnu/packages/patches/gash-utils-ls-test.patch25
-rw-r--r--gnu/packages/patches/gcc-10-tree-sra-union-handling.patch33
-rw-r--r--gnu/packages/patches/gettext-libunicode-update.patch99
-rw-r--r--gnu/packages/patches/ghc-testsuite-grep-compat.patch39
-rw-r--r--gnu/packages/patches/ghostscript-no-header-creationdate.patch20
-rw-r--r--gnu/packages/patches/ghostscript-no-header-id.patch29
-rw-r--r--gnu/packages/patches/ghostscript-no-header-uuid.patch11
-rw-r--r--gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch4
-rw-r--r--gnu/packages/patches/gnupg-CVE-2022-34903.patch54
-rw-r--r--gnu/packages/patches/gnutls-guile-eintr-eagain.patch56
-rw-r--r--gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch51
-rw-r--r--gnu/packages/patches/gobject-introspection-cc.patch11
-rw-r--r--gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch36
-rw-r--r--gnu/packages/patches/inkscape-poppler-compat.patch45
-rw-r--r--gnu/packages/patches/jsoncpp-pkg-config-version.patch24
-rw-r--r--gnu/packages/patches/libffi-3.3-powerpc-fixes.patch138
-rw-r--r--gnu/packages/patches/libffi-float128-powerpc64le.patch58
-rw-r--r--gnu/packages/patches/libssh2-CVE-2019-17498.patch126
-rw-r--r--gnu/packages/patches/libtool-grep-compat.patch51
-rw-r--r--gnu/packages/patches/libtool-skip-tests2.patch4
-rw-r--r--gnu/packages/patches/libwpd-gcc-compat.patch17
-rw-r--r--gnu/packages/patches/libxml2-parent-pointers.patch228
-rw-r--r--gnu/packages/patches/libxml2-terminating-newline.patch33
-rw-r--r--gnu/packages/patches/libxml2-xpath-recursion-limit.patch20
-rw-r--r--gnu/packages/patches/linux-pam-unix_chkpwd.patch9
-rw-r--r--gnu/packages/patches/llvm-8-missing-include.patch17
-rw-r--r--gnu/packages/patches/m4-gnulib-libio.patch128
-rw-r--r--gnu/packages/patches/mesa-skip-tests.patch19
-rw-r--r--gnu/packages/patches/mm-common-reproducible-tarball.patch40
-rw-r--r--gnu/packages/patches/openjdk-10-hotspot-pointer-comparison.patch15
-rw-r--r--gnu/packages/patches/openjdk-10-hotspot-stack-size.patch28
-rw-r--r--gnu/packages/patches/openjdk-9-hotspot-pointer-comparison.patch27
-rw-r--r--gnu/packages/patches/openjdk-9-hotspot-stack-size.patch28
-rw-r--r--gnu/packages/patches/pciutils-hurd-configure.patch35
-rw-r--r--gnu/packages/patches/pciutils-hurd-fix.patch23
-rw-r--r--gnu/packages/patches/python-2.7-expat-compat.patch59
-rw-r--r--gnu/packages/patches/source-highlight-gcc-compat.patch74
-rw-r--r--gnu/packages/patches/swig-support-gcc-12.patch16
-rw-r--r--gnu/packages/patches/texinfo-headings-single.patch21
-rw-r--r--gnu/packages/patches/util-linux-CVE-2021-3995.patch146
-rw-r--r--gnu/packages/patches/util-linux-CVE-2021-3996.patch233
-rw-r--r--gnu/packages/patches/zlib-cc.patch21
-rw-r--r--gnu/packages/patches/zlib-correct-crc32-inputs.patch44
-rw-r--r--gnu/packages/pciutils.scm51
-rw-r--r--gnu/packages/pcre.scm159
-rw-r--r--gnu/packages/pdf.scm148
-rw-r--r--gnu/packages/perl.scm10
-rw-r--r--gnu/packages/plotutils.scm12
-rw-r--r--gnu/packages/polkit.scm202
-rw-r--r--gnu/packages/pretty-print.scm1
-rw-r--r--gnu/packages/pulseaudio.scm102
-rw-r--r--gnu/packages/python-check.scm4
-rw-r--r--gnu/packages/python-web.scm2
-rw-r--r--gnu/packages/python-xyz.scm167
-rw-r--r--gnu/packages/python.scm5
-rw-r--r--gnu/packages/radio.scm4
-rw-r--r--gnu/packages/readline.scm47
-rw-r--r--gnu/packages/ruby.scm29
-rw-r--r--gnu/packages/rust.scm8
-rw-r--r--gnu/packages/samba.scm14
-rw-r--r--gnu/packages/security-token.scm10
-rw-r--r--gnu/packages/serialization.scm26
-rw-r--r--gnu/packages/shells.scm67
-rw-r--r--gnu/packages/sphinx.scm14
-rw-r--r--gnu/packages/sqlite.scm20
-rw-r--r--gnu/packages/ssh.scm9
-rw-r--r--gnu/packages/statistics.scm6
-rw-r--r--gnu/packages/swig.scm4
-rw-r--r--gnu/packages/syndication.scm2
-rw-r--r--gnu/packages/tcl.scm8
-rw-r--r--gnu/packages/tex.scm2179
-rw-r--r--gnu/packages/texinfo.scm7
-rw-r--r--gnu/packages/tls.scm319
-rw-r--r--gnu/packages/version-control.scm744
-rw-r--r--gnu/packages/video.scm6
-rw-r--r--gnu/packages/vulkan.scm8
-rw-r--r--gnu/packages/web-browsers.scm6
-rw-r--r--gnu/packages/web.scm136
-rw-r--r--gnu/packages/webkit.scm3
-rw-r--r--gnu/packages/wm.scm55
-rw-r--r--gnu/packages/xdisorg.scm32
-rw-r--r--gnu/packages/xiph.scm4
-rw-r--r--gnu/packages/xml.scm157
-rw-r--r--gnu/packages/xorg.scm91
-rw-r--r--gnu/services/cups.scm101
-rw-r--r--gnu/services/dbus.scm11
-rw-r--r--gnu/services/security-token.scm9
-rw-r--r--gnu/system/pam.scm10
188 files changed, 7461 insertions, 9153 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index d05f9ff557..bad2714cf0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -10,7 +10,7 @@
 # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
-# Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 # Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
@@ -889,7 +889,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/audiofile-hurd.patch 			\
   %D%/packages/patches/audiofile-function-signature.patch	\
   %D%/packages/patches/automake-skip-amhello-tests.patch	\
-  %D%/packages/patches/autotrace-glib-compat.patch		\
   %D%/packages/patches/avahi-localstatedir.patch		\
   %D%/packages/patches/avidemux-install-to-lib.patch		\
   %D%/packages/patches/awesome-reproducible-png.patch		\
@@ -919,12 +918,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/beancount-disable-googleapis-fonts.patch	\
   %D%/packages/patches/beignet-correct-file-names.patch		\
   %D%/packages/patches/bidiv-update-fribidi.patch		\
-  %D%/packages/patches/binutils-2.37-file-descriptor-leak.patch	\
   %D%/packages/patches/binutils-boot-2.20.1a.patch		\
   %D%/packages/patches/binutils-loongson-workaround.patch	\
   %D%/packages/patches/binutils-mingw-w64-timestamp.patch	\
   %D%/packages/patches/binutils-mingw-w64-deterministic.patch	\
-  %D%/packages/patches/binutils-CVE-2021-45078.patch		\
   %D%/packages/patches/bloomberg-bde-cmake-module-path.patch	\
   %D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch	\
   %D%/packages/patches/bpftrace-disable-bfd-disasm.patch	\
@@ -984,19 +981,15 @@ dist_patch_DATA =						\
   %D%/packages/patches/cool-retro-term-wctype.patch		\
   %D%/packages/patches/coreutils-gnulib-tests.patch		\
   %D%/packages/patches/coq-fix-envvars.patch			\
-  %D%/packages/patches/coreutils-ls.patch			\
   %D%/packages/patches/cpuinfo-system-libraries.patch		\
   %D%/packages/patches/cpulimit-with-glib-2.32.patch		\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crda-optional-gcrypt.patch		\
   %D%/packages/patches/clucene-contribs-lib.patch               \
   %D%/packages/patches/cube-nocheck.patch			\
-  %D%/packages/patches/curl-easy-lock.patch			\
   %D%/packages/patches/curl-use-ssl-cert-env.patch		\
   %D%/packages/patches/cursynth-wave-rand.patch			\
   %D%/packages/patches/cvs-CVE-2017-12836.patch		\
-  %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch		\
-  %D%/packages/patches/cyrus-sasl-CVE-2019-19906.patch		\
   %D%/packages/patches/c++-gsl-find-system-gtest.patch		\
   %D%/packages/patches/c++-gsl-move-array-bounds-tests.patch	\
   %D%/packages/patches/date-output-pkg-config-files.patch	\
@@ -1106,7 +1099,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/ganeti-pyyaml-compat.patch		\
   %D%/packages/patches/ganeti-shepherd-master-failover.patch	\
   %D%/packages/patches/ganeti-shepherd-support.patch		\
-  %D%/packages/patches/gash-utils-ls-test.patch			\
   %D%/packages/patches/gawk-shell.patch				\
   %D%/packages/patches/gcc-arm-bug-71399.patch			\
   %D%/packages/patches/gcc-arm-link-spec-fix.patch		\
@@ -1150,6 +1142,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-12-strmov-store-file-names.patch	\
   %D%/packages/patches/gcc-10-cross-environment-variables.patch \
   %D%/packages/patches/gcc-12-cross-environment-variables.patch \
+  %D%/packages/patches/gcc-10-tree-sra-union-handling.patch	\
   %D%/packages/patches/gcolor3-update-libportal-usage.patch	\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
   %D%/packages/patches/gd-brect-bounds.patch			\
@@ -1163,9 +1156,11 @@ dist_patch_DATA =						\
   %D%/packages/patches/geeqie-clutter.patch			\
   %D%/packages/patches/genimage-mke2fs-test.patch		\
   %D%/packages/patches/geoclue-config.patch			\
+  %D%/packages/patches/gettext-libunicode-update.patch		\
   %D%/packages/patches/ghc-4.patch				\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch	\
   %D%/packages/patches/ghc-testsuite-dlopen-pie.patch		\
+  %D%/packages/patches/ghc-testsuite-grep-compat.patch		\
   %D%/packages/patches/ghc-language-haskell-extract-ghc-8.10.patch	\
   %D%/packages/patches/ghostscript-no-header-id.patch		\
   %D%/packages/patches/ghostscript-no-header-uuid.patch		\
@@ -1214,12 +1209,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/gnome-session-support-elogind.patch	\
   %D%/packages/patches/gnome-todo-libportal.patch		\
   %D%/packages/patches/gnome-tweaks-search-paths.patch		\
-  %D%/packages/patches/gnupg-CVE-2022-34903.patch		\
   %D%/packages/patches/gnupg-default-pinentry.patch		\
   %D%/packages/patches/gnupg-1-build-with-gcc10.patch		\
   %D%/packages/patches/gnutls-skip-trust-store-test.patch	\
   %D%/packages/patches/gnutls-cross.patch			\
-  %D%/packages/patches/gnutls-guile-eintr-eagain.patch		\
   %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
   %D%/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch \
   %D%/packages/patches/gobject-introspection-cc.patch		\
@@ -1299,7 +1292,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch	\
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
-  %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch\
+  %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch	\
+  %D%/packages/patches/icedtea-7-hotspot-pointer-comparison.patch	\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
   %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
   %D%/packages/patches/idris-test-ffi008.patch			\
@@ -1308,6 +1302,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/imagemagick-ReadDCMImage-fix.patch	\
   %D%/packages/patches/imagemagick-ReadDCMPixels-fix.patch	\
   %D%/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch	\
+  %D%/packages/patches/inkscape-poppler-compat.patch		\
   %D%/packages/patches/instead-use-games-path.patch		\
   %D%/packages/patches/intel-xed-fix-nondeterminism.patch	\
   %D%/packages/patches/intltool-perl-compatibility.patch	\
@@ -1320,7 +1315,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/jami-fix-esc-bug.patch			\
   %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
   %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
-  %D%/packages/patches/jsoncpp-pkg-config-version.patch		\
   %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
   %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
   %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
@@ -1346,8 +1340,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/julia-tracker-16-compat.patch		\
   %D%/packages/patches/julia-allow-parallel-build.patch		\
-  %D%/packages/patches/libffi-3.3-powerpc-fixes.patch		\
-  %D%/packages/patches/libffi-float128-powerpc64le.patch	\
   %D%/packages/patches/libobjc2-unbundle-robin-map.patch	\
   %D%/packages/patches/librime-fix-build-with-gcc10.patch	\
   %D%/packages/patches/libvirt-add-install-prefix.patch	\
@@ -1422,7 +1414,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch	\
   %D%/packages/patches/libquicktime-ffmpeg.patch 		\
   %D%/packages/patches/librecad-support-for-boost-1.76.patch	\
-  %D%/packages/patches/libssh2-CVE-2019-17498.patch 		\
   %D%/packages/patches/libtar-CVE-2013-4420.patch 		\
   %D%/packages/patches/libtgvoip-disable-sse2.patch 		\
   %D%/packages/patches/libtgvoip-disable-webrtc.patch 		\
@@ -1430,6 +1421,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libtirpc-CVE-2021-46828.patch		\
   %D%/packages/patches/libtirpc-hurd.patch			\
   %D%/packages/patches/libtommath-fix-linkage.patch		\
+  %D%/packages/patches/libtool-grep-compat.patch		\
   %D%/packages/patches/libtool-skip-tests2.patch		\
   %D%/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch \
   %D%/packages/patches/libusb-0.1-disable-tests.patch		\
@@ -1438,10 +1430,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/libutils-remove-damaging-includes.patch	\
   %D%/packages/patches/libvdpau-va-gl-unbundle.patch		\
   %D%/packages/patches/libvpx-CVE-2016-2818.patch		\
-  %D%/packages/patches/libxml2-parent-pointers.patch		\
-  %D%/packages/patches/libxml2-terminating-newline.patch	\
-  %D%/packages/patches/libxml2-xpath-recursion-limit.patch	\
   %D%/packages/patches/libxml2-xpath0-Add-option-xpath0.patch	\
+  %D%/packages/patches/libwpd-gcc-compat.patch			\
   %D%/packages/patches/libxslt-generated-ids.patch		\
   %D%/packages/patches/libxt-guix-search-paths.patch		\
   %D%/packages/patches/lierolibre-check-unaligned-access.patch	\
@@ -1453,6 +1443,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/linphone-desktop-without-sdk.patch           \
   %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \
   %D%/packages/patches/linux-pam-no-setfsuid.patch		\
+  %D%/packages/patches/linux-pam-unix_chkpwd.patch		\
   %D%/packages/patches/linuxdcpp-openssl-1.1.patch		\
   %D%/packages/patches/lirc-localstatedir.patch			\
   %D%/packages/patches/lirc-reproducible-build.patch		\
@@ -1461,6 +1452,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/llvm-3.6-fix-build-with-gcc-10.patch	\
   %D%/packages/patches/llvm-3.x.1-fix-build-with-gcc.patch	\
   %D%/packages/patches/llvm-8-fix-build-with-gcc-10.patch	\
+  %D%/packages/patches/llvm-8-missing-include.patch		\
   %D%/packages/patches/llvm-9-fix-bitcast-miscompilation.patch	\
   %D%/packages/patches/llvm-9-fix-lpad-miscompilation.patch	\
   %D%/packages/patches/llvm-9-fix-scev-miscompilation.patch	\
@@ -1501,7 +1493,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mercurial-hg-extension-path.patch	\
   %D%/packages/patches/mercurial-openssl-compat.patch		\
   %D%/packages/patches/mesa-opencl-all-targets.patch		\
-  %D%/packages/patches/mesa-skip-tests.patch			\
   %D%/packages/patches/meson-allow-dirs-outside-of-prefix.patch	\
   %D%/packages/patches/mhash-keygen-test-segfault.patch		\
   %D%/packages/patches/mia-fix-boost-headers.patch		\
@@ -1514,6 +1505,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
+  %D%/packages/patches/mm-common-reproducible-tarball.patch	\
   %D%/packages/patches/mpc123-initialize-ao.patch		\
   %D%/packages/patches/mpg321-CVE-2019-14247.patch		\
   %D%/packages/patches/mpg321-gcc-10.patch			\
@@ -1527,7 +1519,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/musl-cross-locale.patch			\
   %D%/packages/patches/mutt-store-references.patch		\
-  %D%/packages/patches/m4-gnulib-libio.patch			\
   %D%/packages/patches/ncompress-fix-softlinks.patch		\
   %D%/packages/patches/ncftp-reproducible.patch			\
   %D%/packages/patches/netcdf-date-time.patch			\
@@ -1572,7 +1563,11 @@ dist_patch_DATA =						\
   %D%/packages/patches/openbox-python3.patch			\
   %D%/packages/patches/opencascade-oce-glibc-2.26.patch		\
   %D%/packages/patches/openfoam-4.1-cleanup.patch			\
+  %D%/packages/patches/openjdk-9-hotspot-pointer-comparison.patch	\
+  %D%/packages/patches/openjdk-9-hotspot-stack-size.patch	\
   %D%/packages/patches/openjdk-10-idlj-reproducibility.patch	\
+  %D%/packages/patches/openjdk-10-hotspot-pointer-comparison.patch	\
+  %D%/packages/patches/openjdk-10-hotspot-stack-size.patch	\
   %D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch	\
   %D%/packages/patches/openmpi-mtl-priorities.patch		\
   %D%/packages/patches/openssh-hurd.patch			\
@@ -1593,8 +1588,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/pam-krb5-CVE-2020-10595.patch		\
   %D%/packages/patches/pango-skip-libthai-test.patch		\
   %D%/packages/patches/password-store-tree-compat.patch		\
-  %D%/packages/patches/pciutils-hurd-configure.patch		\
-  %D%/packages/patches/pciutils-hurd-fix.patch			\
   %D%/packages/patches/pjproject-install-libpjsua2.patch	\
   %D%/packages/patches/pokerth-boost.patch			\
   %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch		\
@@ -1669,6 +1662,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/pyqt-configure.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-expat-compat.patch		\
   %D%/packages/patches/python-2.7-search-paths.patch		\
   %D%/packages/patches/python-2.7-site-prefixes.patch		\
   %D%/packages/patches/python-2.7-source-date-epoch.patch	\
@@ -1826,6 +1820,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/syslinux-strip-gnu-property.patch	\
   %D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch	\
   %D%/packages/patches/snappy-add-inline-for-GCC.patch		\
+  %D%/packages/patches/source-highlight-gcc-compat.patch	\
   %D%/packages/patches/sphinxbase-fix-doxygen.patch		\
   %D%/packages/patches/spice-vdagent-glib-2.68.patch		\
   %D%/packages/patches/sssd-optional-systemd.patch		\
@@ -1835,6 +1830,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/superlu-dist-awpm-grid.patch		\
   %D%/packages/patches/superlu-dist-scotchmetis.patch		\
   %D%/packages/patches/supertux-unbundle-squirrel.patch		\
+  %D%/packages/patches/swig-support-gcc-12.patch		\
   %D%/packages/patches/swish-e-search.patch			\
   %D%/packages/patches/swish-e-format-security.patch		\
   %D%/packages/patches/symmetrica-bruch.patch			\
@@ -1855,6 +1851,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tcsh-fix-autotest.patch			\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
   %D%/packages/patches/tensorflow-c-api-fix.patch		\
+  %D%/packages/patches/texinfo-headings-single.patch		\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
   %D%/packages/patches/telegram-purple-adjust-test.patch	\
   %D%/packages/patches/texi2html-document-encoding.patch	\
@@ -1934,8 +1931,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/upx-CVE-2021-20285.patch		\
   %D%/packages/patches/ustr-fix-build-with-gcc-5.patch		\
   %D%/packages/patches/util-linux-tests.patch			\
-  %D%/packages/patches/util-linux-CVE-2021-3995.patch		\
-  %D%/packages/patches/util-linux-CVE-2021-3996.patch		\
   %D%/packages/patches/valgrind-enable-arm.patch			\
   %D%/packages/patches/valgrind-fix-default-debuginfo-path.patch	\
   %D%/packages/patches/vboot-utils-fix-format-load-address.patch	\
@@ -1992,6 +1987,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/xterm-370-explicit-xcursor.patch		\
   %D%/packages/patches/xygrib-fix-finding-data.patch		\
   %D%/packages/patches/yggdrasil-extra-config.patch	\
+  %D%/packages/patches/zlib-cc.patch				\
+  %D%/packages/patches/zlib-correct-crc32-inputs.patch		\
   %D%/packages/patches/zig-use-system-paths.patch
 
 MISC_DISTRO_FILES =				\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 5fb621e027..7bc6f67ded 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -826,14 +826,14 @@ re-executing them as necessary.")
 (define-public inetutils
   (package
     (name "inetutils")
-    (version "2.0")
+    (version "2.3")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/inetutils/inetutils-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0j1nb69bhg29cm4xkqqjh2ln1zqcj2lnpm92v638lpwrs11dypxl"))))
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/inetutils/inetutils-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1dj4ilxy1wrfxhxc85iya3x28h1mhjpqc5nv862xcq3ww2gqkv8w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--localstatedir=/var"
@@ -857,19 +857,21 @@ re-executing them as necessary.")
        ;; Make sure that canonical "coreutils" package is not referred.
        #:make-flags
        (list (string-append "CPPFLAGS=-DPATHDEF_CP=\\\""
-                            (assoc-ref %build-inputs "coreutils*")
-                            "/bin/cp\\\""))
+                            (search-input-file %build-inputs "bin/cp")
+                            "\\\""))
        ;; On some systems, 'libls.sh' may fail with an error such as:
        ;; "Failed to tell switch -a apart from -A".
        #:parallel-tests? #f))
-    (inputs `(("coreutils*" ,coreutils)
-              ("shadow" ,shadow)    ;for login (used in telnetd and rlogind)
-              ("ncurses" ,ncurses)
-              ("readline" ,readline)))        ;for 'ftp'
-    (native-inputs (if (member (%current-system)
-                               (package-supported-systems net-tools))
-                       `(("netstat" ,net-tools))  ;for tests
-                       '()))
+    (inputs
+     (list coreutils
+           shadow                     ;for login (used in telnetd and rlogind)
+           ncurses
+           readline))                   ;for 'ftp'
+    (native-inputs
+     (if (member (%current-system)
+                 (package-supported-systems net-tools))
+         (list net-tools)               ;for tests
+         '()))
     (home-page "https://www.gnu.org/software/inetutils/")
     (synopsis "Basic networking utilities")
     (description
@@ -1464,7 +1466,7 @@ connection alive.")
        (list config perl file))
 
       (inputs `(("inetutils" ,inetutils)
-                ("bash" ,(canonical-package bash-minimal)) ;for wrap-program
+                ("bash" ,bash-minimal)
                 ,@(if (hurd-target?) '()
                       `(("net-tools" ,net-tools)
                         ("iproute" ,iproute)))
diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm
index 5703016549..913d885af4 100644
--- a/gnu/packages/adns.scm
+++ b/gnu/packages/adns.scm
@@ -65,7 +65,7 @@ scripts.")
 (define-public c-ares
   (package
     (name "c-ares")
-    (version "1.17.2")
+    (version "1.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -73,12 +73,10 @@ scripts.")
                     ".tar.gz"))
               (sha256
                (base32
-                "0gcincjvpll2qmlc906jx6mfq97s87mgi0zby0753ki0rr2ch0s8"))))
+                "1kxviskwsaa7dcgscvssxa8ps88pdq7kq4z93gxvz7sam2l54z8s"))))
     (build-system gnu-build-system)
     (arguments
-     '(;; FIXME: Some tests require network access
-       #:tests? #f
-       #:phases
+     '(#:phases
        (modify-phases %standard-phases
          (add-before 'check 'filter-live-tests
            (lambda _
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index ec0dafbc7a..d2737ee79a 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -47,7 +47,6 @@
   (package
     (name "aspell")
     (version "0.60.8")
-    (replacement aspell/replacement)
     (source
      (origin
       (method url-fetch)
@@ -56,7 +55,8 @@
       (sha256
        (base32
         "1wi60ankalmh8ds7nplz434jd7j94gdvbahdwsr539rlad8pxdzr"))
-      (patches (search-patches "aspell-default-dict-dir.patch"))))
+      (patches (search-patches "aspell-default-dict-dir.patch"
+                               "aspell-CVE-2019-25051.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -93,16 +93,6 @@ documents written in the UTF-8 encoding and its ability to use multiple
 dictionaries, including personal ones.")
     (license lgpl2.1+)))
 
-;; Replacement package with security fixes.
-(define aspell/replacement
-  (package
-    (inherit aspell)
-    (source
-     (origin
-       (inherit (package-source aspell))
-       (patches (append (origin-patches (package-source aspell))
-                        (search-patches "aspell-CVE-2019-25051.patch")))))))
-
 ;;;
 ;;; Dictionaries.
 ;;;
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 118f25ba09..a35c8c7667 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -6,12 +6,13 @@
 ;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,6 +41,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (ice-9 match)
@@ -51,55 +53,55 @@
     (version "2.69")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnu/autoconf/autoconf-"
-                          version ".tar.xz"))
-      (sha256
-       (base32
-        "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4"))))
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/autoconf/autoconf-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4"))))
     (build-system gnu-build-system)
     (inputs
-     `(("bash" ,bash-minimal)
-       ("perl" ,perl)
-       ("m4" ,m4)))
+     (list bash-minimal m4 perl))
     (native-inputs
      (list perl m4))
     (arguments
-     `(;; XXX: testsuite: 209 and 279 failed.  The latter is an impurity.  It
-       ;; should use our own "cpp" instead of "/lib/cpp".
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         ,@(if (%current-target-system)
-               '((add-after 'install 'patch-non-shebang-references
-                    (lambda* (#:key build inputs outputs #:allow-other-keys)
-                      ;; `patch-shebangs' patches shebangs only, and the Perl
-                      ;; scripts use a re-exec feature that references the
-                      ;; build hosts' perl.  Also, BASH and M4 store references
-                      ;; hide in the scripts.
-                      (let ((bash (assoc-ref inputs "bash"))
-                            (m4 (assoc-ref inputs "m4"))
-                            (perl (assoc-ref inputs "perl"))
-                            (out  (assoc-ref outputs "out"))
-                            (store-directory (%store-directory)))
-                        (substitute* (find-files (string-append out "/bin"))
-                          (((string-append store-directory "/[^/]*-bash-[^/]*"))
-                           bash)
-                          (((string-append store-directory "/[^/]*-m4-[^/]*"))
-                           m4)
-                          (((string-append store-directory "/[^/]*-perl-[^/]*"))
-                           perl))))))
-               '())
-         (add-after 'install 'unpatch-shebangs
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Scripts that "autoconf -i" installs (config.guess,
-             ;; config.sub, and install-sh) must use a regular shebang
-             ;; rather than a reference to the store.  Restore it.
-             (let* ((out (assoc-ref outputs "out"))
-                    (build-aux (string-append
-                                out "/share/autoconf/build-aux")))
-               (substitute* (find-files build-aux)
-                 (("^#!.*/bin/sh") "#!/bin/sh"))))))))
+     (list
+      ;; XXX: testsuite: 209 and 279 failed.  The latter is an impurity.  It
+      ;; should use our own "cpp" instead of "/lib/cpp".
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@(if (%current-target-system)
+                 '((add-after 'install 'patch-non-shebang-references
+                     (lambda* (#:key build inputs #:allow-other-keys)
+                       ;; `patch-shebangs' patches shebangs only, and the Perl
+                       ;; scripts use a re-exec feature that references the
+                       ;; build hosts' perl.  Also, BASH and M4 store references
+                       ;; hide in the scripts.
+                       (let ((bash (dirname (dirname
+                                             (search-input-file inputs "bin/bash"))))
+                             (m4 (dirname (dirname
+                                           (search-input-file inputs "bin/m4"))))
+                             (perl (dirname (dirname
+                                             (search-input-file inputs "bin/perl"))))
+                             (store-directory (%store-directory)))
+                         (substitute* (find-files (string-append #$output "/bin"))
+                           (((string-append store-directory "/[^/]*-bash-[^/]*"))
+                            bash)
+                           (((string-append store-directory "/[^/]*-m4-[^/]*"))
+                            m4)
+                           (((string-append store-directory "/[^/]*-perl-[^/]*"))
+                            perl))))))
+                 '())
+          (add-after 'install 'unpatch-shebangs
+            (lambda _
+              ;; Scripts that "autoconf -i" installs (config.guess,
+              ;; config.sub, and install-sh) must use a regular shebang
+              ;; rather than a reference to the store.  Restore it.
+              (let ((build-aux (string-append #$output
+                                              "/share/autoconf/build-aux")))
+                (substitute* (find-files build-aux)
+                  (("^#!.*/bin/sh") "#!/bin/sh"))))))))
     (home-page "https://www.gnu.org/software/autoconf/")
     (synopsis "Create source code configuration scripts")
     (description
@@ -129,17 +131,17 @@ know anything about Autoconf or M4.")
         ;; FIXME: To run the test suite, fix all the instances where scripts
         ;; generates "#! /bin/sh" shebangs.
         #f)
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           (add-before 'check 'prepare-tests
-             (lambda _
-               (for-each patch-shebang
-                         (append (find-files "tests"
-                                             (lambda (file stat)
-                                               (executable-file? file)))
-                                 (find-files "bin"
-                                             (lambda (file stat)
-                                               (executable-file? file)))))))))))))
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-before 'check 'prepare-tests
+              (lambda _
+                (for-each patch-shebang
+                          (append (find-files "tests"
+                                              (lambda (file stat)
+                                                (executable-file? file)))
+                                  (find-files "bin"
+                                              (lambda (file stat)
+                                                (executable-file? file)))))))))))))
 
 (define-public autoconf autoconf-2.69)
 
@@ -203,70 +205,65 @@ know anything about Autoconf or M4.")
 use our own Bash instead of /bin/sh in shebangs.  For that reason, it should
 only be used internally---users should not end up distributing `configure'
 files with a system-specific shebang."
-  (package (inherit autoconf)
+  (package
+    (inherit autoconf)
     (name (string-append (package-name autoconf) "-wrapper"))
     (build-system trivial-build-system)
-    (inputs `(("guile"
-               ;; XXX: Kludge to hide the circular dependency.
-               ,(module-ref (resolve-interface '(gnu packages guile))
-                            'guile-3.0/fixed))
-              ("autoconf" ,autoconf)
-              ("bash" ,bash-minimal)))
+    (inputs
+     (list
+      ;; XXX: Kludge to hide the circular dependency.
+      (module-ref (resolve-interface '(gnu packages guile))
+                  'guile-3.0/fixed)
+      autoconf
+      bash-minimal))
     (arguments
-     '(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out      (assoc-ref %outputs "out"))
-                (bin      (string-append out "/bin"))
-                (autoconf (string-append
-                           (assoc-ref %build-inputs "autoconf")
-                           "/bin/autoconf"))
-                (guile    (string-append
-                           (assoc-ref %build-inputs "guile")
-                           "/bin/guile"))
-                (sh       (string-append
-                           (assoc-ref %build-inputs "bash")
-                           "/bin/sh"))
+     (list
+      #:modules '((guix build utils))
+      #:builder
+      #~(begin
+          (use-modules (guix build utils))
+          (let ((bin      (string-append #$output "/bin"))
+                (autoconf (search-input-file %build-inputs "/bin/autoconf"))
+                (guile    (search-input-file %build-inputs "/bin/guile"))
+                (sh       (search-input-file %build-inputs "/bin/sh"))
                 (modules  ((compose dirname dirname dirname)
                            (search-path %load-path
                                         "guix/build/utils.scm"))))
-           (mkdir-p bin)
-
-           ;; Symlink all the binaries but `autoconf'.
-           (with-directory-excursion bin
-             (for-each (lambda (file)
-                         (unless (string=? (basename file) "autoconf")
-                           (symlink file (basename file))))
-                       (find-files (dirname autoconf) ".*")))
-
-           ;; Add an `autoconf' binary that wraps the real one.
-           (call-with-output-file (string-append bin "/autoconf")
-             (lambda (port)
-               ;; Shamefully, Guile can be used in shebangs only if a
-               ;; single argument is passed (-ds); otherwise it gets
-               ;; them all as a single argument and fails to parse them.
-               (format port "#!~a
+            (mkdir-p bin)
+
+            ;; Symlink all the binaries but `autoconf'.
+            (with-directory-excursion bin
+              (for-each (lambda (file)
+                          (unless (string=? (basename file) "autoconf")
+                            (symlink file (basename file))))
+                        (find-files (dirname autoconf) ".*")))
+
+            ;; Add an `autoconf' binary that wraps the real one.
+            (call-with-output-file (string-append bin "/autoconf")
+              (lambda (port)
+                ;; Shamefully, Guile can be used in shebangs only if a
+                ;; single argument is passed (-ds); otherwise it gets
+                ;; them all as a single argument and fails to parse them.
+                (format port "#!~a
 export GUILE_LOAD_PATH=\"~a\"
 export GUILE_LOAD_COMPILED_PATH=\"~a\"
 exec ~a --no-auto-compile \"$0\" \"$@\"
 !#~%"
-                       sh modules modules guile)
-               (write
-                `(begin
-                   (use-modules (guix build utils))
-                   (let ((result (apply system* ,autoconf
-                                        (cdr (command-line)))))
-                     (when (and (file-exists? "configure")
-                                (not (file-exists? "/bin/sh")))
-                       ;; Patch regardless of RESULT, because `autoconf
-                       ;; -Werror' can both create a `configure' file and
-                       ;; return a non-zero exit code.
-                       (patch-shebang "configure"))
-                     (exit (status:exit-val result))))
-                port)))
-           (chmod (string-append bin "/autoconf") #o555)
-           #t))))
+                        sh modules modules guile)
+                (write
+                 `(begin
+                    (use-modules (guix build utils))
+                    (let ((result (apply system* ,autoconf
+                                         (cdr (command-line)))))
+                      (when (and (file-exists? "configure")
+                                 (not (file-exists? "/bin/sh")))
+                        ;; Patch regardless of RESULT, because `autoconf
+                        ;; -Werror' can both create a `configure' file and
+                        ;; return a non-zero exit code.
+                        (patch-shebang "configure"))
+                      (exit (status:exit-val result))))
+                 port)))
+            (chmod (string-append bin "/autoconf") #o555)))))
 
     ;; Do not show it in the UI since it's meant for internal use.
     (properties '((hidden? . #t)))))
@@ -324,107 +321,104 @@ output is indexed in many ways to simplify browsing.")
 (define-public automake
   (package
     (name "automake")
-    (version "1.16.3")
+    (version "1.16.5")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/automake/automake-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-                "0fmz2fhmzcpacnprl5msphvaflwiy0hvpgmqlgfny72ddijzfazz"))
-             (patches
-              (search-patches "automake-skip-amhello-tests.patch"))))
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/automake/automake-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0sdl32qxdy7m06iggmkkvf7j520rmmgbsjzbm7fgnxwxdp6mh7gh"))
+              (patches
+               (search-patches "automake-skip-amhello-tests.patch"))))
     (build-system gnu-build-system)
     (inputs
-     `(("autoconf" ,autoconf-wrapper)
-       ("bash" ,bash-minimal)
-       ("perl" ,perl)))
+     (list autoconf-wrapper bash-minimal perl))
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
-       ("perl" ,perl)))
+     (list autoconf-wrapper perl))
     (native-search-paths
      (list (search-path-specification
             (variable "ACLOCAL_PATH")
             (files '("share/aclocal")))))
     (arguments
-     `(#:modules ((guix build gnu-build-system)
+     (list
+      #:modules '((guix build gnu-build-system)
                   (guix build utils)
                   (srfi srfi-1)
                   (srfi srfi-26)
                   (rnrs io ports))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'patch-source-shebangs 'patch-tests-shebangs
-           (lambda _
-             (let ((sh (which "sh")))
-               (substitute* (find-files "t" "\\.(sh|tap)$")
-                 (("#![[:blank:]]?/bin/sh")
-                  (string-append "#!" sh)))
-
-               ;; Set these variables for all the `configure' runs
-               ;; that occur during the test suite.
-               (setenv "SHELL" sh)
-               (setenv "CONFIG_SHELL" sh)
-               #t)))
-
-           (add-before 'check 'skip-test
-             (lambda _
-               ;; This test requires 'etags' and fails if it's missing.
-               ;; Skip it.
-               (substitute* "t/tags-lisp-space.sh"
-                 (("^required.*" all)
-                  (string-append "exit 77\n" all "\n")))
-               #t))
-
-           ,@(if (%current-target-system)
-                 `((add-after 'install 'patch-non-shebang-references
-                     (lambda* (#:key build inputs outputs #:allow-other-keys)
-                     ;; `patch-shebangs' patches shebangs only, and the Perl
-                     ;; scripts use a re-exec feature that references the
-                     ;; build hosts' perl.  Also, AUTOCONF and BASH store
-                     ;; references hide in the scripts.
-                       (let ((autoconf (assoc-ref inputs "autoconf"))
-                             (bash (assoc-ref inputs "bash"))
-                             (perl (assoc-ref inputs "perl"))
-                             (out  (assoc-ref outputs "out"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'patch-source-shebangs 'patch-tests-shebangs
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (let ((sh (search-input-file (or native-inputs inputs) "bin/sh")))
+                (substitute* (find-files "t" "\\.(sh|tap)$")
+                  (("#![[:blank:]]?/bin/sh")
+                   (string-append "#!" sh)))
+
+                ;; Set these variables for all the `configure' runs
+                ;; that occur during the test suite.
+                (setenv "SHELL" sh)
+                (setenv "CONFIG_SHELL" sh))))
+          (add-before 'check 'skip-test
+            (lambda _
+              ;; This test requires 'etags' and fails if it's missing.
+              ;; Skip it.
+              (substitute* "t/tags-lisp-space.sh"
+                (("^required.*" all)
+                 (string-append "exit 77\n" all "\n")))))
+
+          #$@(if (%current-target-system)
+                 '((add-after 'install 'patch-non-shebang-references
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       ;; `patch-shebangs' patches shebangs only, and the Perl
+                       ;; scripts use a re-exec feature that references the
+                       ;; build hosts' perl.  Also, AUTOCONF and BASH store
+                       ;; references hide in the scripts.
+                       (let ((autoconf
+                              (dirname (dirname
+                                        (search-input-file inputs "bin/autoconf"))))
+                             (bash
+                              (dirname (dirname
+                                        (search-input-file inputs "bin/bash"))))
+                             (perl
+                              (dirname (dirname
+                                        (search-input-file inputs "bin/perl"))))
                              (store-directory (%store-directory)))
-                         (substitute* (find-files (string-append out "/bin"))
+                         (substitute* (find-files (string-append #$output "/bin"))
                            (((string-append store-directory "/[^/]*-autoconf-[^/]*"))
                             autoconf)
                            (((string-append store-directory "/[^/]*-bash-[^/]*"))
                             bash)
                            (((string-append store-directory "/[^/]*-perl-[^/]*"))
-                            perl))
-                         #t))))
+                            perl))))))
                  '())
 
-         ;; Files like `install-sh', `mdate.sh', etc. must use
-         ;; #!/bin/sh, otherwise users could leak erroneous shebangs
-         ;; in the wild.  See <http://bugs.gnu.org/14201> for an
-         ;; example.
-         (add-after 'install 'unpatch-shebangs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (dir (string-append out "/share")))
-               (define (starts-with-shebang? file)
-                 (equal? (call-with-input-file file
-                           (lambda (p)
-                             (list (get-u8 p) (get-u8 p))))
-                         (map char->integer '(#\# #\!))))
-
-               (for-each (lambda (file)
-                           (when (and (starts-with-shebang? file)
-                                      (executable-file? file))
-                             (format #t "restoring shebang on `~a'~%"
-                                     file)
-                             (substitute* file
-                               (("^#!.*/bin/sh")
-                                "#!/bin/sh")
-                               (("^#!.*/bin/env(.*)$" _ args)
-                                (string-append "#!/usr/bin/env"
-                                               args)))))
-                         (find-files dir ".*"))
-               #t))))))
+          ;; Files like `install-sh', `mdate.sh', etc. must use
+          ;; #!/bin/sh, otherwise users could leak erroneous shebangs
+          ;; in the wild.  See <http://bugs.gnu.org/14201> for an
+          ;; example.
+          (add-after 'install 'unpatch-shebangs
+            (lambda _
+              (let ((dir (string-append #$output "/share")))
+                (define (starts-with-shebang? file)
+                  (equal? (call-with-input-file file
+                            (lambda (p)
+                              (list (get-u8 p) (get-u8 p))))
+                          (map char->integer '(#\# #\!))))
+
+                (for-each (lambda (file)
+                            (when (and (starts-with-shebang? file)
+                                       (executable-file? file))
+                              (format #t "restoring shebang on `~a'~%"
+                                      file)
+                              (substitute* file
+                                (("^#!.*/bin/sh")
+                                 "#!/bin/sh")
+                                (("^#!.*/bin/env(.*)$" _ args)
+                                 (string-append "#!/usr/bin/env"
+                                                args)))))
+                          (find-files dir ".*"))))))))
     (home-page "https://www.gnu.org/software/automake/")
     (synopsis "Making GNU standards-compliant Makefiles")
     (description
@@ -434,42 +428,30 @@ intuitive format and then Automake works with Autoconf to produce a robust
 Makefile, simplifying the entire process for the developer.")
     (license gpl2+)))                      ; some files are under GPLv3+
 
-(define-public automake-1.16.5
-  (package
-    (inherit automake)
-    (version "1.16.5")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/automake/automake-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-                "0sdl32qxdy7m06iggmkkvf7j520rmmgbsjzbm7fgnxwxdp6mh7gh"))
-             (patches
-              (search-patches "automake-skip-amhello-tests.patch"))))))
-
 (define-public libtool
   (package
     (name "libtool")
-    (version "2.4.6")
+    (version "2.4.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/libtool/libtool-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw"))
-              (patches (search-patches "libtool-skip-tests2.patch"))))
+                "0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))
+              (patches (search-patches "libtool-skip-tests2.patch"
+                                       "libtool-grep-compat.patch"))))
     (build-system gnu-build-system)
     (propagated-inputs (list m4))
-    (native-inputs `(("m4" ,m4)
-                     ("perl" ,perl)
-                     ;; XXX: this shouldn't be necessary, but without it test
-                     ;; 102 fails because it cannot find ltdl/libltdl.la.
-                     ("libltdl" ,libltdl)
-                     ("help2man" ,help2man) ;because we modify ltmain.sh
-                     ("automake" ,automake)      ;some tests rely on 'aclocal'
-                     ("autoconf" ,autoconf-wrapper))) ;others on 'autom4te'
+    (native-inputs
+     (list m4
+           perl
+           ;; XXX: this shouldn't be necessary, but without it test
+           ;; 102 fails because it cannot find ltdl/libltdl.la.
+           libltdl
+           help2man             ; because we modify ltmain.sh
+           automake             ; some tests rely on 'aclocal'
+           autoconf-wrapper))   ; others on 'autom4te'
 
     (arguments
      `(;; Libltdl is provided as a separate package, so don't install it here.
@@ -485,18 +467,18 @@ Makefile, simplifying the entire process for the developer.")
        #:phases
        (modify-phases %standard-phases
          (add-before 'check 'pre-check
-           (lambda* (#:key inputs native-inputs #:allow-other-keys)
+           (lambda* (#:key inputs native-inputs parallel-tests? #:allow-other-keys)
              ;; Run the test suite in parallel, if possible.
              (setenv "TESTSUITEFLAGS"
                      (string-append
                       "-j"
-                      (number->string (parallel-job-count))))
+                      (if parallel-tests?
+                        (number->string (parallel-job-count))
+                        "1")))
            ;; Patch references to /bin/sh.
-           (let ((bash (assoc-ref (or native-inputs inputs) "bash")))
+           (let ((/bin/sh (search-input-file (or native-inputs inputs) "bin/sh")))
              (substitute* "tests/testsuite"
-               (("/bin/sh")
-                (string-append bash "/bin/sh")))
-             #t)))
+               (("/bin/sh") /bin/sh)))))
          ;; These files may be copied into source trees by libtoolize,
          ;; therefore they must not point to store file names that would be
          ;; leaked with tarballs generated by make dist.
@@ -508,8 +490,7 @@ Makefile, simplifying the entire process for the developer.")
                            (format #t "restoring shebang on `~a'~%" file)
                            (substitute* file
                              (("^#!.*/bin/sh") "#!/bin/sh")))
-                         (find-files dir ".*"))
-               #t))))))
+                         (find-files dir))))))))
 
     (synopsis "Generic shared library support tools")
     (description
@@ -519,18 +500,6 @@ complexity of working with shared libraries across platforms.")
     (license gpl3+)
     (home-page "https://www.gnu.org/software/libtool/")))
 
-(define-public libtool-2.4.7
-  (package
-    (inherit libtool)
-    (version "2.4.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/libtool/libtool-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))))))
-
 (define-public config
   (let ((revision "1")
         (commit "c8ddc8472f8efcadafc1ef53ca1d863415fddd5f"))
@@ -585,20 +554,20 @@ configuration in nearly all GNU packages (and many others).")
   ;; Libtool's extensive test suite isn't run.
   (package
     (name "libltdl")
-    (version "2.4.6")
+    (version "2.4.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/libtool/libtool-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw"))))
+                "0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-ltdl-install") ;really install it
        #:phases (modify-phases %standard-phases
                   (add-before 'configure 'change-directory
-                    (lambda _ (chdir "libltdl") #t)))))
+                    (lambda _ (chdir "libltdl"))))))
 
     (synopsis "System-independent dlopen wrapper of GNU libtool")
     (description (package-description libtool))
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 0d03d2e87f..d0d89bd910 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
@@ -239,7 +239,7 @@ backups (called chunks) to allow easy burning to CD/DVD.")
 (define-public libarchive
   (package
     (name "libarchive")
-    (version "3.5.1")
+    (version "3.6.1")
     (source
      (origin
        (method url-fetch)
@@ -250,7 +250,7 @@ backups (called chunks) to allow easy burning to CD/DVD.")
                                  version ".tar.xz")))
        (sha256
         (base32
-         "16r95rlmikll1k8vbhh06vq6x3srkc10hzxjjf3021mjs2ld65qf"))))
+         "1rj8q5v26lxxr8x4b4nqbrj7p06qvl91hb8cdxi3xx3qp771lhas"))))
     (build-system gnu-build-system)
     (inputs
      (list bzip2
@@ -261,69 +261,59 @@ backups (called chunks) to allow easy burning to CD/DVD.")
            zlib
            `(,zstd "lib")))
     (arguments
-     `(#:configure-flags '("--disable-static")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'patch-pwd
-           (lambda _
-             (substitute* "Makefile"
-               (("/bin/pwd") (which "pwd")))
-             #t))
-         (replace 'check
-           (lambda* (#:key (tests? #t) #:allow-other-keys)
-             (if tests?
-		 ;; XXX: The test_owner_parse, test_read_disk, and
-		 ;; 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
-                 (begin
-                   (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")
+     (list
+      #:configure-flags #~'("--disable-static")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'patch-pwd
+            (lambda _
+              (substitute* "Makefile"
+                (("/bin/pwd") (which "pwd")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (if tests?
+		  ;; XXX: The test_owner_parse, test_read_disk, and
+		  ;; test_write_disk_lookup tests expect user 'root' to
+		  ;; exist, but the chroot's /etc/passwd doesn't have
+		  ;; it.  Turn off those tests.
+                  (begin
+		    ;; 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.
-		   (invoke "./libarchive_test" "^test_*_disk*")
-		   (invoke "./bsdcpio_test" "^test_owner_parse")
-		   (invoke "./bsdtar_test"))
-                 ;; Tests may be disabled if cross-compiling.
-                 (format #t "Test suite not run.~%"))))
-         (add-after 'install 'add--L-in-libarchive-pc
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (lib     (string-append out "/lib"))
-                    (nettle  (assoc-ref inputs "nettle"))
-                    (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")))
-               ;; 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")
-                  (string-append "-L" libxml2 "/lib -lxml2"))
-                 (("-llzma")
-                  (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))))))
+		    ;; XXX: This glob disables too much.
+		    (invoke "./libarchive_test" "^test_*_disk*")
+		    (invoke "./bsdcpio_test" "^test_owner_parse")
+		    (invoke "./bsdtar_test"))
+                  ;; Tests may be disabled if cross-compiling.
+                  (format #t "Test suite not run.~%"))))
+          (add-after 'install 'add--L-in-libarchive-pc
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((out     #$output)
+                     (lib     (string-append out "/lib"))
+                     (nettle  (assoc-ref inputs "nettle"))
+                     (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")))
+                ;; 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")
+                   (string-append "-L" libxml2 "/lib -lxml2"))
+                  (("-llzma")
+                   (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")))))))))
     (home-page "https://libarchive.org/")
     (synopsis "Multi-format archive and compression library")
     (description
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 4bdc3e7792..291f2e15f0 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1,16 +1,16 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
-;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019, 2022 Ricardo Wurmus <rekado@elephly.net>
@@ -20,6 +20,7 @@
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -105,14 +106,14 @@ command-line arguments, multiple languages, and so on.")
 (define-public grep
   (package
    (name "grep")
-   (version "3.6")
+   (version "3.8")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/grep/grep-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0gipv6bzkm1aihj0ncqpyh164xrzgcxcv9r1kwzyk2g1mzl1azk6"))
+              "10n3mc9n1xmg85hpxyr4wiqzfp27ffxzwhvkv021j27vnk0pr3a9"))
             (patches (search-patches "grep-timing-sensitive-test.patch"))))
    (build-system gnu-build-system)
    (native-inputs (list perl))                   ;some of the tests require it
@@ -293,14 +294,14 @@ interactive means to merge two files.")
 (define-public findutils
   (package
    (name "findutils")
-   (version "4.8.0")
+   (version "4.9.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/findutils/findutils-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0r3i72hnw0a30khlczi9k2c51aamaj6kfmp5mk3844nrjxz7n4jp"))
+              "1zk2sighc26bfdsm97bv7cd1cnvq7r4gll4zqpnp0rs3kp0bigx2"))
             (patches (search-patches "findutils-localstatedir.patch"))))
    (build-system gnu-build-system)
    (arguments
@@ -328,16 +329,14 @@ used to apply commands with arbitrarily long arguments.")
 (define-public coreutils
   (package
    (name "coreutils")
-   (version "8.32")
+   (version "9.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/coreutils/coreutils-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1yjcrh5hw70c0yn8zw55pd6j51dj90anpq8mmg649ps9g3gdhn24"))
-            (patches (search-patches "coreutils-ls.patch"
-                                     "coreutils-gnulib-tests.patch"))))
+              "08q4b0w7mwfxbqjs712l6wrwl2ijs7k50kssgbryg9wbsw8g98b1"))))
    (build-system gnu-build-system)
    (inputs `(,acl                                 ;TODO: add SELinux
              ,attr                                ;for xattrs in ls, mv, etc
@@ -513,17 +512,15 @@ change.  GNU make offers many powerful extensions over the standard utility.")
 (define-public binutils
   (package
    (name "binutils")
-   (version "2.37")
+   (version "2.38")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/binutils/binutils-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "1m3b2rdfv1dmdpd0bzg1hy7i8a2qng53szc6livyi3nh6101mz37"))
-      (patches (search-patches "binutils-loongson-workaround.patch"
-                               "binutils-2.37-file-descriptor-leak.patch"
-                               "binutils-CVE-2021-45078.patch"))))
+       (base32 "1y0fb4qgxaxfyf81x9fqq9w5609mkah0b7wm1f7ab9kpy0fcf3h7"))
+      (patches (search-patches "binutils-loongson-workaround.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:out-of-source? #t   ;recommended in the README
@@ -552,7 +549,16 @@ change.  GNU make offers many powerful extensions over the standard utility.")
                           "--enable-compressed-debug-sections=all"
                           "--enable-lto"
                           "--enable-separate-code"
-                          "--enable-threads")))
+                          "--enable-threads")
+      ;; XXX: binutils 2.38 was released without generated manuals:
+      ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=28909>.  To avoid
+      ;; a circular dependency on texinfo, prevent the build system from
+      ;; creating the manuals by calling "true" instead of "makeinfo" ...
+      #:make-flags '("MAKEINFO=true")))
+
+   ;; ... and "hide" this package such that users who install binutils get
+   ;; the version with documentation defined below.
+   (properties '((hidden? . #t)))
 
    (synopsis "Binary utilities: bfd gas gprof ld")
    (description
@@ -565,6 +571,16 @@ included.")
    (license gpl3+)
    (home-page "https://www.gnu.org/software/binutils/")))
 
+(define-public binutils+documentation
+  (package/inherit binutils
+    (native-inputs
+     (list texinfo))
+    (arguments
+     (substitute-keyword-arguments (package-arguments binutils)
+       ((#:make-flags flags ''())
+        ''())))
+    (properties '())))
+
 ;; FIXME: ath9k-firmware-htc-binutils.patch do not apply on 2.34 because of a
 ;; big refactoring of xtensa-modules.c (commit 567607c11fbf7105 upstream).
 ;; Keep this version around until the patch is updated.
@@ -586,7 +602,7 @@ included.")
    (properties '())))
 
 (define-public binutils-gold
-  (package/inherit binutils
+  (package/inherit binutils+documentation
     (name "binutils-gold")
     (arguments
      (substitute-keyword-arguments (package-arguments binutils)
@@ -694,13 +710,13 @@ the store.")
   ;; version 2.28, GNU/Hurd used a different glibc branch.
   (package
    (name "glibc")
-   (version "2.33")
+   (version "2.35")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
             (sha256
              (base32
-              "1zvp0qdfbdyqrzydz18d9zg3n5ygy8ps7cmny1bvsp8h1q05c99f"))
+              "0bpm1kfi09dxl4c6aanc5c9951fmf6ckkzay60cx7k37dcpp68si"))
             (patches (search-patches "glibc-ldd-powerpc.patch"
                                      "glibc-ldd-x86_64.patch"
                                      "glibc-dl-cache.patch"
@@ -738,10 +754,15 @@ the store.")
       #:validate-runpath? #f
 
       #:modules ((ice-9 ftw)
+                 (srfi srfi-1)
                  (srfi srfi-26)
                  (guix build utils)
                  (guix build gnu-build-system))
 
+      ;; Strip binaries but preserve the symbol table needed by Valgrind:
+      ;; <https://lists.gnu.org/archive/html/help-guix/2022-03/msg00036.html>.
+      #:strip-flags '("--strip-debug")
+
       #:configure-flags
       (list "--sysconfdir=/etc"
 
@@ -848,13 +869,34 @@ the store.")
                  (add-after 'install 'move-static-libs
                    (lambda* (#:key outputs #:allow-other-keys)
                      ;; Move static libraries to the "static" output.
+                     ;; Note: As of GNU libc 2.34, the contents of some ".a"
+                     ;; files have been moved into "libc.so", and *both* empty
+                     ;; ".so" and ".a" files have been introduced to avoid
+                     ;; breaking existing executables and existing builds
+                     ;; respectively.  The intent of the seemingly redundant
+                     ;; empty ".a" files is to avoid newly-compiled executables
+                     ;; from having dependencies on the empty shared libraries,
+                     ;; and as such, it is useful to have these ".a" files in
+                     ;; OUT in addition to STATIC.
+
+                     ;; XXX: It might be better to determine whether a static
+                     ;; library is empty by some criterion (such as their file
+                     ;; size equaling eight bytes) rather than hardcoding them
+                     ;; by name.
+                     (define empty-static-libraries
+                       '("libpthread.a" "libdl.a" "libutil.a" "libanl.a"))
+                     (define (empty-static-library? file)
+                       (any (lambda (s)
+                              (string=? file s)) empty-static-libraries))
+
                      (define (static-library? file)
                        ;; Return true if FILE is a static library.  The
                        ;; "_nonshared.a" files are referred to by libc.so,
                        ;; libpthread.so, etc., which are in fact linker
                        ;; scripts.
                        (and (string-suffix? ".a" file)
-                            (not (string-contains file "_nonshared"))))
+                            (not (string-contains file "_nonshared"))
+                            (not (empty-static-library? file))))
 
                      (define (linker-script? file)
                        ;; Guess whether FILE, a ".a" file, is actually a
@@ -865,6 +907,7 @@ the store.")
                      (let* ((out    (assoc-ref outputs "out"))
                             (lib    (string-append out "/lib"))
                             (files  (scandir lib static-library?))
+                            (empty  (scandir lib empty-static-library?))
                             (static (assoc-ref outputs "static"))
                             (slib   (string-append static "/lib")))
                        (mkdir-p slib)
@@ -872,6 +915,10 @@ the store.")
                                    (rename-file (string-append lib "/" base)
                                                 (string-append slib "/" base)))
                                  files)
+                       (for-each (lambda (base)
+                                   (copy-file (string-append lib "/" base)
+                                              (string-append slib "/" base)))
+                                 empty)
 
                        ;; Usually libm.a is a linker script so we need to
                        ;; change the file names in there to refer to STATIC
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 86af26d648..8c447b0921 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -1,8 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2017, 2019-2020, 2022 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, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
@@ -74,7 +74,7 @@
         ...))
 
 (define %patch-series-5.1
-  ;; This is the current patches series for 5.0, generated using
+  ;; This is the current patches series for 5.1, generated using
   ;; 'download-patches' below.
   (patch-series
    (1 "1ymm8ppss6gyh9ifznjwiabrb4k91npd09c10y7mk66xp8yppc7b")
@@ -84,7 +84,15 @@
    (5 "19bdyigdr81824nxvqr6a7k0cax60wq7376j6b91afbnwvlvbjyc")
    (6 "051x8wlwrqk0yr0zg378vh824iklfl5g9pkmcdf62qp8gn9pvqbm")
    (7 "0fir80pp1gmlpadmqcgkrv4y119pc7xllchjzg05fd7px73viz5c")
-   (8 "1lfjgshk8i9vch92p5wgc9r90j3phw79aa7gbai89w183b2z6b7j")))
+   (8 "1lfjgshk8i9vch92p5wgc9r90j3phw79aa7gbai89w183b2z6b7j")
+   (9 "1vn36dzd9g4y1h3jiss6418crla0rbcd0d6wwsyv9d5l7aaxlp74")
+   (10 "0amfmvbzsand7bdypylkjdpcp88fa3cplfshn7vyzv2ff2rdgj52")
+   (11 "0yq24abb4fzfxqnwl20b330sxl9lr9ds0nc4yi30f81l94b1y6aq")
+   (12 "165bff97ffih49vfs4mkr5w3z5gn1w6zfyrf773iajkw6v48kw8h")
+   (13 "1bfmgv3lagbk3aq9a831d29xv7jz4sjq7jhn9hq89limyinvdb67")
+   (14 "1l43dw4kpddn7l41i8wmj406z9abxky1wb3rk8krcys33g4f0kka")
+   (15 "1w40vzadzx019v0zhs4q6yqycrk04x1k8xs6qb73vk7ny4p6jdqv")
+   (16 "0krqqljz4bkp9wrdnwfx51bxkb8rkwf8ivc93as1znx5fr7i96c8")))
 
 (define (download-patches store count)
   "Download COUNT Bash patches into store.  Return a list of
@@ -111,7 +119,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
                                   "-DSSH_SOURCE_BASHRC")
                                 " "))
          (configure-flags
-          ``("--with-installed-readline"
+          ``("--without-bash-malloc"
+             "--with-installed-readline"
              ,,(string-append "CPPFLAGS=" cppflags)
              ,(string-append
                "LDFLAGS=-Wl,-rpath -Wl,"
@@ -291,7 +300,7 @@ variant logs the history to syslog.")))
 (define-public bash-completion
   (package
     (name "bash-completion")
-    (version "2.8")
+    (version "2.11")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -299,38 +308,12 @@ variant logs the history to syslog.")))
                     version "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kgmflrr1ga9wfk770vmakna3nj46ylb5ky9ipd0v2k9ymq5a7y0"))
+                "1b0iz7da1sgifx1a5wdyx1kxbzys53v0kyk8nhxfipllmm5qka3k"))
               (patches
                (search-patches "bash-completion-directories.patch"))))
     (build-system gnu-build-system)
-    (native-inputs (list util-linux))
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after
-                   'install 'remove-redundant-completions
-                   (lambda* (#:key
-                             inputs native-inputs
-                             outputs #:allow-other-keys)
-                     ;; Util-linux comes with a bunch of completion files for
-                     ;; its own commands which are more sophisticated and
-                     ;; up-to-date than those of bash-completion.  Remove those
-                     ;; from bash-completion.
-                     (let* ((out         (assoc-ref outputs "out"))
-                            (util-linux  (assoc-ref (or native-inputs inputs)
-                                                    "util-linux"))
-                            (completions (string-append out
-                                                        "/share/bash-completion"
-                                                        "/completions"))
-                            (already     (find-files
-                                          (string-append
-                                           util-linux
-                                           "/etc/bash_completion.d"))))
-                       (with-directory-excursion completions
-                         (for-each (lambda (file)
-                                     (when (file-exists? file)
-                                       (delete-file file)))
-                                   (map basename already)))
-                       #t))))))
+     `(#:tests? #f))    ; Unclear how to make tests pass.
     (synopsis "Bash completions for common commands")
     (description
      "This package provides extensions that allow Bash to provide adapted
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index c812248e86..cfa037dec0 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.scm
@@ -3,7 +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, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -25,6 +25,7 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages pkg-config)
@@ -33,40 +34,41 @@
 (define-public libgc
   (package
    (name "libgc")
-   (version "8.0.4")
+   (version "8.0.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://github.com/ivmai/bdwgc/releases"
                                 "/download/v" version "/gc-" version ".tar.gz"))
             (sha256
              (base32
-              "1798rp3mcfkgs38ynkbg2p47bq59pisrc6mn0l20pb5iczf0ssj3"))))
+              "04ga3c95w5az5sznzm73j19lvvfpf6k4sgkpjqsmjxpsr6mi8j9v"))))
    (build-system gnu-build-system)
    (arguments
-    `(#:configure-flags
-      (list
-       ;; Install gc_cpp.h et al.
-       "--enable-cplusplus"
+    (list
+     #:configure-flags
+     #~(list
+        ;; Install gc_cpp.h et al.
+        "--enable-cplusplus"
 
-       ;; Work around <https://github.com/ivmai/bdwgc/issues/353>.
-       "--disable-munmap"
+        ;; Work around <https://github.com/ivmai/bdwgc/issues/353>.
+        "--disable-munmap"
 
-       ;; In GNU/Hurd systems during the 'check' phase,
-       ;; there is a deadlock caused by the 'gctest' test.
-       ;; To disable the error set "--disable-gcj-support"
-       ;; to configure script. See bug report and discussion:
-       ;; <https://lists.opendylan.org/pipermail/bdwgc/2017-April/006275.html>
-       ;; <https://lists.gnu.org/archive/html/bug-hurd/2017-01/msg00008.html>
-       ,@(if (target-hurd? (or (%current-system)
-                               (%current-target-system)))
-             '("--disable-gcj-support")
-             '()))))
+        ;; In GNU/Hurd systems during the 'check' phase,
+        ;; there is a deadlock caused by the 'gctest' test.
+        ;; To disable the error set "--disable-gcj-support"
+        ;; to configure script. See bug report and discussion:
+        ;; <https://lists.opendylan.org/pipermail/bdwgc/2017-April/006275.html>
+        ;; <https://lists.gnu.org/archive/html/bug-hurd/2017-01/msg00008.html>
+        #$@(if (target-hurd? (or (%current-system)
+                                 (%current-target-system)))
+               #~("--disable-gcj-support")
+               #~()))))
    (native-inputs (list pkg-config))
    (propagated-inputs
     (if (%current-target-system)
         ;; The build system refuses to check for compiler intrinsics when
         ;; cross-compiling, and demands using libatomic-ops instead.
-        `(("libatomic-ops" ,libatomic-ops))
+        (list libatomic-ops)
         '()))
    (outputs '("out" "debug"))
    (synopsis "The Boehm-Demers-Weiser conservative garbage collector
@@ -94,9 +96,11 @@ C or C++ programs, though that is not its primary goal.")
 (define-public libgc/static-libs
   (package/inherit
    libgc
-   (arguments (substitute-keyword-arguments (package-arguments libgc)
-                ((#:configure-flags flags ''())
-                 `(cons "--enable-static" ,flags))))
+   (arguments
+    (substitute-keyword-arguments (package-arguments libgc)
+      ((#:configure-flags flags #~'())
+       #~(cons "--enable-static" #$flags))))
+
    (properties '((hidden? . #t)))))
 
 (define-public libgc-7
@@ -117,9 +121,9 @@ C or C++ programs, though that is not its primary goal.")
     libgc
     (name "libgc-back-pointers")
     (arguments
-     `(#:make-flags
-       (list "CPPFLAGS=-DKEEP_BACK_PTRS=1")
-       ,@(package-arguments libgc)))
+     (substitute-keyword-arguments (package-arguments libgc)
+       ((#:make-flags _ #~'())
+        #~(list "CPPFLAGS=-DKEEP_BACK_PTRS=1"))))
     (synopsis "The BDW garbage collector, with back-pointer tracking")))
 
 (define-public libatomic-ops
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index f9904a0f56..f35412d4ec 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -3227,10 +3227,10 @@ data and settings.")
                                              texlive-fonts-ec
                                              texlive-latex-examplep
                                              texlive-hyperref
-                                             texlive-latex-ms
+                                             texlive-ms
                                              texlive-latex-natbib
-                                             texlive-bibtex ; style files used by natbib
-                                             texlive-pgf    ; tikz
+                                             texlive-bibtex ;style files used by natbib
+                                             texlive-pgf    ;tikz
                                              texlive-latex-verbatimbox)))
        ("imagemagick" ,imagemagick)))
     (home-page "https://dorina.mdc-berlin.de/public/rajewsky/discrover/")
@@ -13517,7 +13517,7 @@ to an artifact/contaminant file.")
     (inputs
      (list openmpi zlib))
     (native-inputs
-     `(("texlive" ,(texlive-updmap.cfg (list texlive-latex-graphics
+     `(("texlive" ,(texlive-updmap.cfg (list texlive-graphics
                                              texlive-fonts-ec
                                              texlive-hyperref)))))
     (home-page "https://www.ebi.ac.uk/~zerbino/velvet/")
diff --git a/gnu/packages/bison.scm b/gnu/packages/bison.scm
index 5fd25452ff..6cd7abe420 100644
--- a/gnu/packages/bison.scm
+++ b/gnu/packages/bison.scm
@@ -33,7 +33,7 @@
 (define-public bison
   (package
     (name "bison")
-    (version "3.7.6")
+    (version "3.8.2")
     (source
      (origin
       (method url-fetch)
@@ -41,7 +41,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "1kzkxrd3z4262k2sbxmyh9k5g5r2lakw0gv44l2hb4i1wbhqrmk7"))))
+        "1wjvbbzrr16k1jlby3l436an3kvv492h08arbnf0gwgprha05flv"))))
     (build-system gnu-build-system)
     (arguments
      '(;; Building in parallel on many-core systems may cause an error such as
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index db5237c997..4fc250e7b6 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -526,7 +526,7 @@ features.")
     (native-inputs
      (list intltool python-wheel
            (if (string-prefix? "x86_64-" (%current-system))
-               librsvg-bootstrap
+               librsvg
                librsvg-2.40)))
     ;; TODO: Enable tests.
     ;; After "pytest-twisted" is packaged, HOME is set, and an X server is
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 40e4ca399e..d2b676cc73 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -12,12 +12,11 @@
 ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org>
-;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2021, 2022 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
-;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -38,6 +37,7 @@
 (define-module (gnu packages boost)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -68,122 +68,155 @@
 (define-public boost
   (package
     (name "boost")
-    (version "1.77.0")
+    (version "1.80.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://boostorg.jfrog.io/artifactory/main/release/"
                                   version "/source/boost_"
                                   (version-with-underscores version) ".tar.bz2"))
+              (patches
+               (list (boost-patch
+                      ;; Boost.Filesystem directory iterators may fail to
+                      ;; construct for a network share on Windows prior to 10:
+                      ;; https://github.com/boostorg/filesystem/pull/246,
+                      ;; https://github.com/boostorg/filesystem/issues/245
+                      "0001-filesystem-win-fix-dir-it-net-share.patch" version
+                      "067hhylqkzzdbqzc1hkbpaqmvz248lxqrdhb2yi6iq9qabsik3lk")
+                     (boost-patch
+                      ;; In Boost.Filesystem on Windows, weakly_canonical fails
+                      ;; to process paths that start with the "\\?\" prefix:
+                      ;; https://github.com/boostorg/filesystem/issues/247
+                      "0002-filesystem-fix-weakly-canonical-long-paths.patch" version
+                      "00w3albf8527glclx85p5b2ml3vr06xpwwmfyzg005v1cp8avcpi")
+                     (boost-patch
+                      ;; Boost.Unordered containers are not in a valid state
+                      ;; after moving:
+                      ;; https://github.com/boostorg/unordered/issues/139
+                      "0003-unordered-valid-after-move.patch" version
+                      "0dw839w22cawqawfpsx7j7v9y0x2vn66m732iidpxvdxbjn2kzva")
+                     (boost-patch
+                      ;; Fixed a missing include on POSIX systems that don't
+                      ;; support *at APIs:
+                      ;; https://github.com/boostorg/filesystem/issues/250
+                      "0004-filesystem-posix-fix-no-at-apis-missing-include.patch" version
+                      "09k8k3b1306jkjls12wfghj820n828j6aaxzmcr0wpnjhp8fzi1v")))
               (sha256
                (base32
-                "0m08hhk3l7zvzajyk39qlw566q3fhixayhc2j11328qf0gy8b7zw"))))
+                "1h00qp4z5k6lfz310xjwsmqs8fwxi6ngas51169cafz4h9fmc68y"))))
     (build-system gnu-build-system)
-    (inputs (list icu4c zlib))
+    (inputs
+     (append
+      (list icu4c zlib)
+      (if (%current-target-system)
+          '()
+          (list python-minimal-wrapper))))
     (native-inputs
-     `(("perl" ,perl)
-       ,@(if (%current-target-system)
-             '()
-             `(("python" ,python-minimal-wrapper)))
-       ("tcsh" ,tcsh)))
+     (list perl tcsh))
     (arguments
-     `(#:imported-modules ((guix build python-build-system)
+     (list
+      #:imported-modules `((guix build python-build-system)
                            ,@%gnu-build-system-modules)
-       #:modules (((guix build python-build-system) #:select (python-version))
+      #:modules `(((guix build python-build-system) #:select (python-version))
                   ,@%gnu-build-system-modules)
-       #:tests? #f
-       #:make-flags
-       (list "threading=multi" "link=shared"
+      #:tests? #f
+      #:configure-flags
+      #~(let ((icu (dirname (dirname (search-input-file
+                                      %build-inputs "bin/uconv")))))
+          (list
+           ;; Auto-detection looks for ICU only in traditional
+           ;; install locations.
+           (string-append "--with-icu=" icu)
+           ;; Ditto for Python.
+           #$@(if (%current-target-system)
+                  #~()
+                  #~((let ((python (dirname (dirname (search-input-file
+                                                      %build-inputs
+                                                      "bin/python")))))
+                       (string-append "--with-python-root=" python)
+                       (string-append "--with-python=" python
+                                      "/bin/python")
+                       (string-append "--with-python-version="
+                                      (python-version python)))))
+           "--with-toolset=gcc"))
+      #:make-flags
+      #~(list "threading=multi" "link=shared"
 
-             ;; Set the RUNPATH to $libdir so that the libs find each other.
-             (string-append "linkflags=-Wl,-rpath="
-                            (assoc-ref %outputs "out") "/lib")
-             ,@(if (%current-target-system)
-                   `("--user-config=user-config.jam"
-                     ;; Python is not supported when cross-compiling.
-                     "--without-python"
-                     "binary-format=elf"
-                     "target-os=linux"
-                     ,@(cond
-                        ((string-prefix? "arm" (%current-target-system))
-                         '("abi=aapcs"
-                           "address-model=32"
-                           "architecture=arm"))
-                        ((string-prefix? "aarch64" (%current-target-system))
-                         '("abi=aapcs"
-                           "address-model=64"
-                           "architecture=arm"))
-                        (else '())))
-                   '()))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'bootstrap)
-         (replace 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((icu (assoc-ref inputs "icu4c"))
-                   (python (assoc-ref inputs "python"))
-                   (out (assoc-ref outputs "out")))
-               (substitute* '("libs/config/configure"
-                              "libs/spirit/classic/phoenix/test/runtest.sh"
-                              "tools/build/src/engine/execunix.cpp")
-                 (("/bin/sh") (which "sh")))
-
-               (setenv "SHELL" (which "sh"))
-               (setenv "CONFIG_SHELL" (which "sh"))
+              ;; Set the RUNPATH to $libdir so that the libs find each other.
+              (string-append "linkflags=-Wl,-rpath="
+                             #$output "/lib")
+              #$@(if (%current-target-system)
+                     #~("--user-config=user-config.jam"
+                        ;; Python is not supported when cross-compiling.
+                        "--without-python"
+                        "binary-format=elf"
+                        "target-os=linux"
+                        #$@(cond
+                            ((string-prefix? "arm" (%current-target-system))
+                             #~("abi=aapcs"
+                                "address-model=32"
+                                "architecture=arm"))
+                            ((string-prefix? "aarch64" (%current-target-system))
+                             #~("abi=aapcs"
+                                "address-model=64"
+                                "architecture=arm"))
+                            (else #~())))
+                     #~()))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-shells
+            (lambda _
+              (substitute* '("libs/config/configure"
+                             "libs/spirit/classic/phoenix/test/runtest.sh"
+                             "tools/build/src/engine/execunix.cpp")
+                (("/bin/sh") (which "sh")))))
+          (delete 'bootstrap)
+          (replace 'configure
+            (lambda* (#:key (configure-flags ''()) #:allow-other-keys)
+              (setenv "SHELL" (which "sh"))
+              (setenv "CONFIG_SHELL" (which "sh"))
 
-               ,@(if (%current-target-system)
-                     `((call-with-output-file "user-config.jam"
+              #$@(if (%current-target-system)
+                     #~((call-with-output-file "user-config.jam"
                           (lambda (port)
                             (format port
                                     "using gcc : cross : ~a-c++ ;"
-                                    ,(%current-target-system)))))
-                     '())
+                                    #$(%current-target-system)))))
+                     #~())
 
-               ;; Change an #ifdef __MACH__ that really targets macOS.
-               (substitute* "boost/test/utils/timer.hpp"
-                 (("defined\\(__MACH__\\)")
-                  "(defined __MACH__ && !defined __GNU__)"))
-
-               (invoke "./bootstrap.sh"
-                       (string-append "--prefix=" out)
-                       ;; Auto-detection looks for ICU only in traditional
-                       ;; install locations.
-                       (string-append "--with-icu=" icu)
-                       ;; Ditto for Python.
-                       ,@(if (%current-target-system)
-                             '()
-                             `((string-append "--with-python-root=" python)
-                               (string-append "--with-python=" python "/bin/python")
-                               (string-append "--with-python-version="
-                                              (python-version python))))
-                       "--with-toolset=gcc"))))
-         (replace 'build
-           (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "./b2"
-                    (format #f "-j~a" (parallel-job-count))
-                    make-flags)))
-         (replace 'install
-           (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "./b2" "install" make-flags)))
-         ,@(if (%current-target-system)
-               '()
-               '((add-after 'install 'provide-libboost_python
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (python-version (python-version
-                                              (assoc-ref inputs "python")))
-                             (libboost_pythonNN.so
-                              (string-append "libboost_python"
-                                             (string-join (string-split
-                                                           python-version #\.)
-                                                          "")
-                                             ".so")))
-                        (with-directory-excursion (string-append out "/lib")
-                          (symlink libboost_pythonNN.so "libboost_python.so")
-                          ;; Some packages only look for the major version.
-                          (symlink libboost_pythonNN.so
-                                   (string-append "libboost_python"
-                                                  (string-take python-version 1)
-                                                  ".so")))))))))))
+              (apply invoke "./bootstrap.sh"
+                     (string-append "--prefix=" #$output)
+                     configure-flags)))
+          (replace 'build
+            (lambda* (#:key make-flags #:allow-other-keys)
+              (apply invoke "./b2"
+                     (format #f "-j~a" (parallel-job-count))
+                     make-flags)))
+          (replace 'install
+            (lambda* (#:key make-flags #:allow-other-keys)
+              (apply invoke "./b2" "install" make-flags)))
+          #$@(if (%current-target-system)
+                 #~()
+                 #~((add-after 'install 'provide-libboost_python
+                      (lambda* (#:key make-flags inputs outputs #:allow-other-keys)
+                        (let* ((static? (member "link=static" make-flags))
+                               (libext (if static? ".a" ".so"))
+                               (python (dirname (dirname (search-input-file
+                                                          inputs "bin/python"))))
+                               (python-version (python-version python))
+                               (libboost_pythonNN
+                                (string-append "libboost_python"
+                                               (string-join (string-split
+                                                             python-version #\.)
+                                                            "")
+                                               libext)))
+                          (with-directory-excursion (string-append #$output "/lib")
+                            (symlink libboost_pythonNN
+                                     (string-append "libboost_python" libext))
+                            ;; Some packages only look for the major version.
+                            (symlink libboost_pythonNN
+                                     (string-append "libboost_python"
+                                                    (string-take python-version 1)
+                                                    libext)))))))))))
 
     (home-page "https://www.boost.org")
     (synopsis "Peer-reviewed portable C++ source libraries")
@@ -285,23 +318,7 @@ across a broad spectrum of applications.")
     (arguments
      (substitute-keyword-arguments (package-arguments boost)
        ((#:make-flags flags)
-        `(cons "link=static" (delete "link=shared" ,flags)))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'provide-libboost_python
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (python-version (python-version
-                                       (assoc-ref inputs "python")))
-                      (libboost_pythonNN.a
-                       (string-append "libboost_python"
-                                      (string-join (string-split
-                                                    python-version #\.)
-                                                   "")
-                                      ".a")))
-                 (with-directory-excursion (string-append out "/lib")
-                   (symlink libboost_pythonNN.a "libboost_python.a"))
-                 #t)))))))))
+        #~(cons "link=static" (delete "link=shared" #$flags)))))))
 
 (define-public boost-for-mysql
   ;; Older version for MySQL 5.7.23.
@@ -317,43 +334,33 @@ across a broad spectrum of applications.")
               (sha256
                (base32
                 "1jj1aai5rdmd72g90a3pd8sw9vi32zad46xv5av8fhnr48ir6ykj"))))
-    (arguments (substitute-keyword-arguments (package-arguments boost)
-      ((#:phases phases)
-       `(modify-phases ,phases
-          (replace 'configure
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let ((icu (assoc-ref inputs "icu4c"))
-                    (out (assoc-ref outputs "out")))
+    (arguments
+     (substitute-keyword-arguments (package-arguments boost)
+       ((#:configure-flags _ #~'())
+        #~(let ((icu (dirname (dirname (search-input-file
+                                        %build-inputs "bin/uconv")))))
+            (list
+             ;; Auto-detection looks for ICU only in traditional
+             ;; install locations.
+             (string-append "--with-icu=" icu)
+             "--with-toolset=gcc")))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (replace 'patch-shells
+              (lambda _
                 (substitute* (append
-                               (find-files "tools/build/src/engine/" "execunix\\.c.*")
-                               '("libs/config/configure"
-                                 "libs/spirit/classic/phoenix/test/runtest.sh"
-                                 "tools/build/doc/bjam.qbk"
-                                 "tools/build/src/engine/Jambase"))
-                  (("/bin/sh") (which "sh")))
-
-                (setenv "SHELL" (which "sh"))
-                (setenv "CONFIG_SHELL" (which "sh"))
-
-                ,@(if (%current-target-system)
-                    `((call-with-output-file "user-config.jam"
-                        (lambda (port)
-                          (format port
-                                  "using gcc : cross : ~a-c++ ;"
-                                  ,(%current-target-system)))))
-                    '())
-
-                (invoke "./bootstrap.sh"
-                        (string-append "--prefix=" out)
-                        ;; Auto-detection looks for ICU only in traditional
-                        ;; install locations.
-                        (string-append "--with-icu=" icu)
-                        "--with-toolset=gcc"))))
-          (delete 'provide-libboost_python)))
-      ((#:make-flags make-flags)
-       `(cons* "--without-python" ,make-flags))))
-    (native-inputs
-     (alist-delete "python" (package-native-inputs boost)))
+                              (find-files "tools/build/src/engine/" "execunix\\.c.*")
+                              '("libs/config/configure"
+                                "libs/spirit/classic/phoenix/test/runtest.sh"
+                                "tools/build/doc/bjam.qbk"
+                                "tools/build/src/engine/Jambase"))
+                  (("/bin/sh") (which "sh")))))
+            (delete 'provide-libboost_python)))
+       ((#:make-flags make-flags)
+        #~(cons* "--without-python" #$make-flags))))
+    (inputs
+     (modify-inputs (package-inputs boost)
+       (delete "python-minimal-wrapper")))
     (properties '((hidden? . #t)))))
 
 (define-public boost-sync
@@ -421,22 +428,19 @@ signals and slots system.")
   (package
     (inherit boost)
     (name "boost-mpi")
-    (native-inputs
-     `(("perl" ,perl)
-       ,@(if (%current-target-system)
-             '()
-             `(("python" ,python-wrapper)))
-       ("openmpi" , openmpi)))
+    (inputs
+     (modify-inputs (package-inputs boost)
+       (append openmpi)))
     (arguments
      (substitute-keyword-arguments (package-arguments boost)
-      ((#:phases phases)
-       `(modify-phases ,phases
-          (add-after 'configure 'update-jam
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let ((output-port (open-file "project-config.jam" "a")))
-                (display "using mpi ;" output-port)
-                (newline output-port)
-                (close output-port))))))))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (add-after 'configure 'update-jam
+              (lambda* (#:key inputs outputs #:allow-other-keys)
+                (let ((output-port (open-file "project-config.jam" "a")))
+                  (display "using mpi ;" output-port)
+                  (newline output-port)
+                  (close output-port))))))))
     (home-page "https://www.boost.org")
     (synopsis "Message Passing Interface (MPI) library for C++")))
 
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index d2914fb5a7..b76efb6fdc 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019 Carl Dong <contact@carldong.me>
 ;;; Copyright © 2019 Léo Le Bouter <lle-bout@zaclys.net>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
@@ -61,8 +61,6 @@
             %bootstrap-gcc
             %bootstrap-glibc
             %bootstrap-inputs
-            %bootstrap-mescc-tools
-            %bootstrap-mes
 
             %bootstrap-inputs-for-tests))
 
@@ -929,112 +927,12 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
     (home-page #f)
     (license gpl3+)))
 
-(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)))
+     `(("linux-libre-headers" ,%bootstrap-linux-libre-headers)))
     (_
      `(("libc" ,%bootstrap-glibc)
        ("gcc" ,%bootstrap-gcc)
@@ -1046,7 +944,7 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
 (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.)
+  ;; used before the Mes-based full-source bootstrap.)
   `(("libc" ,%bootstrap-glibc)
     ("gcc" ,%bootstrap-gcc)
     ("binutils" ,%bootstrap-binutils)
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 715d158241..80740d8bc1 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Peng Mei Yu <pengmeiyu@riseup.net>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
 
 (define-module (gnu packages calendar)
   #:use-module (gnu packages)
+  #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix git-download)
   #:use-module (guix packages)
@@ -130,32 +132,32 @@ the <tz.h> library for handling time zones and leap seconds.")
                 "13ycghsi4iv8mnm0xv97bs0x6qvfhdxkw20n3yhcc7bg6n0bg122"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f ; test suite appears broken
-       #:parallel-build? #f             ;may cause GIR generation failure
-       #:configure-flags '("-DSHARED_ONLY=true"
-                           ;; required by evolution-data-server
-                           "-DGOBJECT_INTROSPECTION=true"
-                           "-DICAL_GLIB_VAPI=true")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook-reference
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "doc/reference/libical-glib/libical-glib-docs.sgml.in"
-               (("http://www.oasis-open.org/docbook/xml/4.3/")
-                (string-append (assoc-ref inputs "docbook-xml")
-                               "/xml/dtd/docbook/")))))
-         (add-before 'configure 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; TODO: libical 3.1.0 supports using TZDIR instead of a hard-coded
-             ;; zoneinfo database.  When that is released we can drop
-             ;; the tzdata dependency.
-             (let ((tzdata (assoc-ref inputs "tzdata")))
-               (substitute* "src/libical/icaltz-util.c"
-                 (("\\\"/usr/share/zoneinfo\\\",")
-                  (string-append "\"" tzdata "/share/zoneinfo\""))
-                 (("\\\"/usr/lib/zoneinfo\\\",") "")
-                 (("\\\"/etc/zoneinfo\\\",") "")
-                 (("\\\"/usr/share/lib/zoneinfo\\\"") ""))))))))
+     (list
+      #:configure-flags #~(list "-DSHARED_ONLY=true"
+                                ;; required by evolution-data-server
+                                "-DGOBJECT_INTROSPECTION=true"
+                                "-DICAL_GLIB_VAPI=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-docbook-reference
+            (lambda _
+              (substitute* "doc/reference/libical-glib/libical-glib-docs.sgml.in"
+                (("http://www.oasis-open.org/docbook/xml/4.3/")
+                 (string-append #$(this-package-native-input "docbook-xml")
+                                "/xml/dtd/docbook/")))))
+          (add-before 'configure 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define zoneinfo (search-input-directory inputs "share/zoneinfo"))
+              ;; The timezones test fails if TZDIR is not set, for some
+              ;; reason.  If only TZDIR is set, tests checking the timezone
+              ;; fallback fail, so also patch the source.
+              (setenv "TZDIR" zoneinfo) ;for tests
+              (substitute* "src/libical/icaltz-util.c"
+                (("\\\"/usr/share/zoneinfo\\\",")
+                 (format #f "~s" zoneinfo))
+                (("\\\"/usr/lib/zoneinfo\\\",") "")
+                (("\\\"/etc/zoneinfo\\\",") "")
+                (("\\\"/usr/share/lib/zoneinfo\\\"") "")))))))
     (native-inputs
      (list docbook-xml-4.3
            gobject-introspection
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index b8dfe96e6d..6372e7ff08 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -131,7 +131,7 @@ that was originally contributed to Debian.")
     ;; XXX We used to refer to the nss package here, but that eventually caused
     ;; module cycles.  The below is a quick copy-paste job that must be kept in
     ;; sync manually.  Surely there's a better way…?
-    (version "3.81")
+    (version "3.82")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -142,7 +142,7 @@ that was originally contributed to Debian.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "19ncvhz45dhr0nmymwkxspq9l44gaafkspxiwxbqs1hpnqxmzgx8"))
+                "0wqmgibacxf5i3jlm8jl50qasv2spwx07ixlscz9byf2f8xnggrj"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 2286944ed2..3ee8fd9b01 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -90,6 +90,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
+  #:use-module (guix deprecation)
   #:use-module (srfi srfi-1))
 
 (define-public pict
@@ -813,13 +814,13 @@ but it works for any C/C++ project.")
 (define-public python-parameterized
   (package
     (name "python-parameterized")
-    (version "0.7.4")
+    (version "0.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "parameterized" version))
        (sha256
-        (base32 "1444fdz5bj0k10nmhxv0bv2gfrfisi7hfzqdndb0pvhf4g3qq3qr"))))
+        (base32 "0p1vhfw552rgd7gb2vy4l4l4k8mnbdz7f3chgzvk0r0qsqvzzfs1"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -974,57 +975,54 @@ standard library.")
 (define-public python-pytest
   (package
     (name "python-pytest")
-    (version "6.2.5")
+    (version "7.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest" version))
        (sha256
         (base32
-         "12cyi0lnyaq8sdqfnqlppd76gkw6zcg10gyih5knx9v611l3c6qk"))))
+         "0f8c31v5r2kgjixvy267n0nhc4xsy65g3n9lz1i1377z5pn5ydjg"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'pretend-version
-           ;; The version string is usually derived via setuptools-scm, but
-           ;; without the git metadata available, the version string is set to
-           ;; '0.0.0'.
-           (lambda _
-             (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)))
-         (replace 'check
-           (lambda* (#:key (tests? #t) #:allow-other-keys)
-             (setenv "TERM" "dumb")     ;attempt disabling markup tests
-             (if tests?
-                 (invoke "pytest" "-vv" "-k"
-                         (string-append
-                          ;; This test involves the /usr directory, and fails.
-                          " not test_argcomplete"
-                          ;; These test do not honor the isatty detection and
-                          ;; fail.
-                          " and not test_code_highlight"
-                          " and not test_color_yes"))
-                 (format #t "test suite not run~%")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'pretend-version
+            ;; The version string is usually derived via setuptools-scm, but
+            ;; without the git metadata available, the version string is set to
+            ;; '0.0.0'.
+            (lambda _
+              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
+                      #$(package-version this-package))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (setenv "TERM" "dumb")    ;attempt disabling markup tests
+              (if tests?
+                  (invoke "pytest" "-vv" "-k"
+                          (string-append
+                           ;; This test involves the /usr directory, and fails.
+                           " not test_argcomplete"
+                           ;; These test do not honor the isatty detection and
+                           ;; fail.
+                           " and not test_code_highlight"
+                           " and not test_color_yes"))
+                  (format #t "test suite not run~%")))))))
     (propagated-inputs
-     `(("python-attrs" ,python-attrs-bootstrap)
-       ("python-iniconfig" ,python-iniconfig)
-       ("python-more-itertools" ,python-more-itertools)
-       ("python-packaging" ,python-packaging-bootstrap)
-       ("python-pluggy" ,python-pluggy)
-       ("python-py" ,python-py)
-       ("python-six" ,python-six-bootstrap)
-       ("python-toml" ,python-toml)
-       ("python-wcwidth" ,python-wcwidth)))
+     (list python-attrs-bootstrap
+           python-iniconfig
+           python-packaging-bootstrap
+           python-pluggy
+           python-py
+           python-tomli))
     (native-inputs
-     `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
-       ("bash" ,bash)
-       ("python-hypothesis" ,python-hypothesis)
-       ("python-nose" ,python-nose)
-       ("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest-bootstrap)
-       ("python-setuptools-scm" ,python-setuptools-scm)
-       ("python-toml" ,python-toml)
-       ("python-xmlschema" ,python-xmlschema)))
+     ;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
+     (list bash
+           python-hypothesis
+           python-nose
+           python-pytest-bootstrap
+           python-setuptools-scm
+           python-xmlschema))
     (home-page "https://docs.pytest.org/en/latest/")
     (synopsis "Python testing library")
     (description
@@ -1033,14 +1031,15 @@ and functions, detailed info on failing assert statements, modular fixtures,
 and many external plugins.")
     (license license:expat)))
 
-(define-public python-pytest-6 python-pytest)
+(define-deprecated python-pytest-6 python-pytest)
+(export python-pytest-6)
 
 (define-public python-pytest-bootstrap
   (package
     (inherit python-pytest)
     (name "python-pytest-bootstrap")
     (native-inputs (list python-iniconfig python-setuptools-scm
-                         python-toml))
+                         python-tomli))
     (arguments `(#:tests? #f))))
 
 (define-public python-pytest-assume
@@ -1270,13 +1269,13 @@ Python's @code{random.seed}.")
 (define-public python-pytest-mock
   (package
     (name "python-pytest-mock")
-    (version "3.6.1")
+    (version "3.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-mock" version))
        (sha256
-        (base32 "0qhfmd05z3g88bnwq6644jl6p5wy01i4yy7h8883z9jjih2pl8a0"))
+        (base32 "18pwr0qhr2z5rpfz7930986s55hh1gnmmq4m09q5h99rai2kzw3p"))
        (modules '((guix build utils)))
        (snippet
         ;; Some tests do a string match on Pytest output, and fails when
@@ -1316,44 +1315,26 @@ same arguments.")
 (define-public python-pytest-xdist
   (package
     (name "python-pytest-xdist")
-    (version "2.1.0")
+    (version "2.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-xdist" version))
        (sha256
         (base32
-         "0wh6pn66nncfs6ay0n863bgyriwsgppn8flx5l7551j1lbqkinc2"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Remove pre-compiled .pyc files from source.
-           (for-each delete-file-recursively
-                     (find-files "." "__pycache__" #:directories? #t))
-           (for-each delete-file (find-files "." "\\.pyc$"))
-           #t))))
+         "1psf5dqxvc38qzxvc305mkg5xpdmdkbkkfiyqlmdnkgh7z5dx025"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f ; Lots of tests fail.
-       #:phases
+     '(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-setup-py
-           (lambda _
-             ;; Relax pytest requirement.
-             (substitute* "setup.py"
-               (("pytest>=6\\.0\\.0") "pytest"))))
          (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+           (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (add-installed-pythonpath inputs outputs)
                (invoke "pytest" "-vv"
                        "-n" (number->string (parallel-job-count)))))))))
-    (native-inputs
-     (list python-setuptools-scm))
-    (propagated-inputs
-     (list python-execnet python-pytest python-py python-pytest-forked))
-    (home-page
-     "https://github.com/pytest-dev/pytest-xdist")
+    (native-inputs (list python-setuptools-scm python-filelock python-pytest))
+    (propagated-inputs (list python-execnet python-pytest-forked))
+    (home-page "https://github.com/pytest-dev/pytest-xdist")
     (synopsis
      "Plugin for py.test with distributed testing and loop-on-failing modes")
     (description
@@ -1365,31 +1346,17 @@ program code to a remote location, executes there, and then syncs the
 result back.")
     (license license:expat)))
 
-(define-public python-pytest-xdist-next
-  (package/inherit python-pytest-xdist
-    (name "python-pytest-xdist")
-    (version "2.5.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pytest-xdist" version))
-       (sha256
-        (base32
-         "1psf5dqxvc38qzxvc305mkg5xpdmdkbkkfiyqlmdnkgh7z5dx025"))))
-    (propagated-inputs (list python-execnet python-pytest
-                             python-pytest-forked-next))))
-
 (define-public python-pytest-timeout
   (package
     (name "python-pytest-timeout")
-    (version "2.0.2")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-timeout" version))
        (sha256
         (base32
-         "04l1cd2qyp3fbccw95a8nqg682r647v7yil8807dgs7xv9a8pyg6"))))
+         "1nf339zg6qam3681f72j9c8fbqk8qcilna92psmzh4n60isa0z60"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -1412,7 +1379,7 @@ timeout has been exceeded.")
 (define-public python-pytest-forked
   (package
     (name "python-pytest-forked")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method git-fetch)               ;for tests
@@ -1422,29 +1389,24 @@ timeout has been exceeded.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1aip4kx50ynvykl7kq2mlbsi82vx701dvb8mm64lhp69bbv105rc"))))
+         "0j9bbjny7h3b4fig6l26f26c697r67mm62fzdd9m9rqyy2bmnqjs"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-setuptools-scm
+         (add-before 'build 'pretend-version
            (lambda _
-             (substitute* "setup.py"
-               (("use_scm_version=True")
-                (format #f "version=~s" ,version))
-               (("setup_requires=\\['setuptools_scm'\\],.*")
-                ""))))
+             (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)))
          (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+           (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (add-installed-pythonpath inputs outputs)
                (invoke "pytest" "-vv")))))))
     (native-inputs
      ;; XXX: The bootstrap variant of Pytest is used to ensure the
      ;; 'hypothesis' plugin is not in the environment (due to
      ;; <http://issues.guix.gnu.org/25235>), which would cause the test suite
      ;; to fail (see: https://github.com/pytest-dev/pytest-forked/issues/54).
-     `(("python-pytest" ,python-pytest-bootstrap)))
+     (list python-pytest-bootstrap python-setuptools-scm))
     (home-page "https://github.com/pytest-dev/pytest-forked")
     (synopsis "Pytest plugin to run tests in isolated forked subprocesses")
     (description "This package provides a Pytest plugin which enables running
@@ -1453,23 +1415,6 @@ can be useful to isolate tests against undesirable global environment
 side-effects (such as setting environment variables).")
     (license license:expat)))
 
-(define-public python-pytest-forked-next
-  (package
-    (inherit python-pytest-forked)
-    (name "python-pytest-forked")
-    (version "1.4.0")
-    (source
-     (origin
-       (method git-fetch)               ;for tests
-       (uri (git-reference
-             (url "https://github.com/pytest-dev/pytest-forked")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0j9bbjny7h3b4fig6l26f26c697r67mm62fzdd9m9rqyy2bmnqjs"))))
-    (native-inputs (list python-pytest-bootstrap python-setuptools-scm))))
-
 (define-public python-scripttest
   (package
     (name "python-scripttest")
@@ -1742,18 +1687,20 @@ have failed since the last commit or what tests are currently failing.")))
 (define-public python-coverage
   (package
     (name "python-coverage")
-    (version "5.2.1")
+    (version "6.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "coverage" version))
        (sha256
         (base32
-         "16z8i18msgs8k74n73dj9x49wzkl0vk4vq8k5pl1bsj70y7b4k53"))))
+         "157vndwrzyv9ypn2w3b6g8gv7vw07v994hq8nxasdb75k3ry2apc"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
      '(#:tests? #f))
+    (propagated-inputs
+     (list python-tomli))
     (home-page "https://coverage.readthedocs.io")
     (synopsis "Code coverage measurement for Python")
     (description
@@ -2025,20 +1972,24 @@ instantly.")
 (define-public python-hypothesis
   (package
     (name "python-hypothesis")
-    (version "6.0.2")
+    (version "6.54.5")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "hypothesis" version))
               (sha256
                (base32
-                "0wj7ip779naf2n076nylf2gi0sjz68z1ir9d9r2rgs7br18naqdf"))))
+                "1ivyrjpnahvj359pfndnk8x3h0gw37kqm02fmnzibx4mas15d44a"))))
     (build-system python-build-system)
     (arguments
      ;; XXX: Tests are not distributed with the PyPI archive.
-     '(#:tests? #f))
+     (list #:tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               ;; XXX: hypothesis requires pytest at runtime, but we can
+               ;; not propagate it due to a circular dependency.
+               (delete 'sanity-check))))
     (propagated-inputs
-     `(("python-attrs" ,python-attrs-bootstrap)
-       ("python-sortedcontainers" ,python-sortedcontainers)))
+     (list python-attrs-bootstrap python-exceptiongroup python-sortedcontainers))
     (synopsis "Library for property based testing")
     (description "Hypothesis is a library for testing your Python code against a
 much larger range of examples than you would ever want to write by hand.  It’s
@@ -2047,20 +1998,8 @@ seamlessly into your existing Python unit testing work flow.")
     (home-page "https://github.com/HypothesisWorks/hypothesis")
     (license license:mpl2.0)))
 
-;;; TODO: Make the default python-hypothesis in the next rebuild cycle.
-(define-public python-hypothesis-next
-  (package
-    (inherit python-hypothesis)
-    (version "6.43.3")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "hypothesis" version))
-              (sha256
-               (base32
-                "0d67dlc5a47i48fxzmji2mnybzby0h1wdscmj54555fghcyp1045"))))
-    (propagated-inputs
-     (modify-inputs (package-propagated-inputs python-hypothesis)
-       (append python-pytest)))))       ;to satisfy the sanity-check phase
+(define-deprecated python-hypothesis-next python-hypothesis)
+(export python-hypothesis-next)
 
 (define-public python-hypothesmith
   (package
@@ -2858,7 +2797,7 @@ portable to just about any platform.")
 (define-public libfaketime
   (package
     (name "libfaketime")
-    (version "0.9.9")
+    (version "0.9.10")
     (home-page "https://github.com/wolfcw/libfaketime")
     (source (origin
               (method git-fetch)
@@ -2867,7 +2806,7 @@ portable to just about any platform.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1gi1xciqga5hl2xlk7rc3j8wy47ag97pi7ngmdl6ny1d11b2wn1z"))
+                "112l7x2gv4f47hpffpb8djfwvgrs8w5h9s266h1fshi1c916x10d"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -3006,7 +2945,7 @@ grew out of the @dfn{Vc} project.")
 (define-public python-pyfakefs
   (package
     (name "python-pyfakefs")
-    (version "3.7.1")
+    (version "4.6.3")
     (source (origin
               (method url-fetch)
               ;; We use the PyPI URL because there is no proper release
@@ -3015,22 +2954,13 @@ grew out of the @dfn{Vc} project.")
               (uri (pypi-uri "pyfakefs" version))
               (sha256
                (base32
-                "1cp2yw96fa2qkgi39xa3nlr3inf8wb5rgh9kdq53256ca2r8pdhy"))
+                "18bcv8yalg80zgigx40fk692yr3wf9ch1hkb0cdplqspyry2mwbd"))
               (patches (search-patches
                         "python-pyfakefs-remove-bad-test.patch"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-testsuite
-           (lambda _
-             ;; Time difference is larger than expected.
-             (substitute* "pyfakefs/tests/fake_filesystem_unittest_test.py"
-               (("(\\s+)def test_copy_real_file" all indent)
-                (string-append
-                  indent
-                  "@unittest.skip('disabled by guix')\n"
-                  all)))))
          ;; The default test suite does not run these extra tests.
          (add-after 'check 'check-pytest-plugin
            (lambda _
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 77c51a00c6..07fd2375d7 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -907,7 +907,7 @@
     (inputs
      (list alsa-lib
            atk
-           at-spi2-atk
+           at-spi2-core
            cups
            curl
            dbus
@@ -921,8 +921,8 @@
            gdk-pixbuf
            glib
            gtk+
-           harfbuzz-3
-           icu4c-71
+           harfbuzz
+           icu4c
            jsoncpp
            lcms
            libevent
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 87fde01f63..7f51c02b8a 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -31,6 +31,7 @@
 (define-module (gnu packages cmake)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
@@ -99,8 +100,7 @@ using the CMake build system.")
       (lambda _
         (delete-file "Auxiliary/cmake-mode.el")
         (substitute* "Auxiliary/CMakeLists.txt"
-          ((".*cmake-mode.el.*") ""))
-        #t))
+          ((".*cmake-mode.el.*") ""))))
     ,@(if (target-x86-32?)
           '((add-after 'unpack 'skip-cpack-txz-test
               (lambda _
@@ -124,8 +124,7 @@ using the CMake build system.")
               "Source/cmExecProgramCommand.cxx"
               "Tests/CMakeLists.txt"
               "Tests/RunCMake/File_Generate/RunCMakeTest.cmake")
-          (("/bin/sh") (which "sh")))
-        #t))))
+          (("/bin/sh") (which "sh")))))))
 
 (define %common-disabled-tests
   '(;; This test copies libgcc_s.so.1 from GCC and tries to modify its RPATH,
@@ -143,6 +142,8 @@ using the CMake build system.")
     ;; be available along with the required headers.
     "Utilities/cmlibarchive/libarchive/archive_getdate.c"
     "Utilities/cmlibarchive/libarchive/archive_getdate.h"
+    ;; ELF headers.
+    "Utilities/cmelf"
     ;; CMake header wrappers.
     "Utilities/cm3p"))
 
@@ -151,7 +152,7 @@ using the CMake build system.")
 (define-public cmake-bootstrap
   (package
     (name "cmake-bootstrap")
-    (version "3.21.4")
+    (version "3.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://cmake.org/files/v"
@@ -159,71 +160,71 @@ using the CMake build system.")
                                   "/cmake-" version ".tar.gz"))
               (sha256
                (base32
-                "0y2rk316j9m1iqimgwah0z1ii3ggli65dw6hdn4ckx0mqaahlmyr"))
+                "0ax83yfis1n74llqhckrbgzcp82pfwx039xs2dgq06nvlivy4ca9"))
               (patches (search-patches "cmake-curl-certificates.patch"))))
     (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"
-               ;; 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))
+     (list
+      #:test-target "test"
+      #:configure-flags
+      #~(let ((parallel-job-count (number->string (parallel-job-count))))
+          (list "--verbose"
+                (string-append "--parallel=" parallel-job-count)
+                (string-append "--prefix=" #$output)
+                "--system-libs"
+                ;; 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))
 
-               ;; By default CMake is built without any optimizations.  Use
-               ;; the recommended Release target for a ~2.5x speedup.
-               "--" "-DCMAKE_BUILD_TYPE=Release"))
-       #:make-flags
-       (let ((skipped-tests
-              (list ,@%common-disabled-tests
-                    "CTestTestSubdir" ; This test fails to build 2 of the 3 tests.
-                    ;; This test fails when ARGS (below) is in use, see
-                    ;; <https://gitlab.kitware.com/cmake/cmake/issues/17165>.
-                    "CTestCoverageCollectGCOV")))
-         (list
-          (string-append
-           ;; These arguments apply for the tests only.
-           "ARGS=-j " (number->string (parallel-job-count))
-           " --output-on-failure"
-           " --exclude-regex ^\\(" (string-join skipped-tests "\\|") "\\)$")))
-       #:phases
-       (modify-phases %standard-phases
-         ,@(%common-build-phases)
-         (add-before 'configure 'set-paths
-           (lambda _
-             ;; Help cmake's bootstrap process to find system libraries
-             (begin
-               (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
-               (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH")
-                                                (getenv "C_INCLUDE_PATH")))
-               #t)))
-         ;; CMake uses its own configure script.
-         (replace 'configure
-           (lambda* (#:key (configure-flags '()) #:allow-other-keys)
-             (apply invoke "./configure" configure-flags))))))
+                ;; By default CMake is built without any optimizations.  Use
+                ;; the recommended Release target for a ~2.5x speedup.
+                "--" "-DCMAKE_BUILD_TYPE=Release"))
+      #:make-flags
+      #~(let ((skipped-tests
+               (list #$@%common-disabled-tests
+                     "CTestTestSubdir" ; This test fails to build 2 of the 3 tests.
+                     ;; This test fails when ARGS (below) is in use, see
+                     ;; <https://gitlab.kitware.com/cmake/cmake/issues/17165>.
+                     "CTestCoverageCollectGCOV")))
+          (list
+           (string-append
+            ;; These arguments apply for the tests only.
+            "ARGS=-j " (number->string (parallel-job-count))
+            " --output-on-failure"
+            " --exclude-regex ^\\(" (string-join skipped-tests "\\|") "\\)$")))
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@(%common-build-phases)
+          (add-before 'configure 'set-paths
+            (lambda _
+              ;; Help cmake's bootstrap process to find system libraries
+              (begin
+                (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+                (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH")
+                                                 (getenv "C_INCLUDE_PATH"))))))
+          ;; CMake uses its own configure script.
+          (replace 'configure
+            (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+              (apply invoke "./configure" configure-flags))))))
     (inputs
-     `(("bzip2" ,bzip2)
-       ("curl" ,curl)
-       ("expat" ,expat)
-       ("file" ,file)
-       ("libarchive" ,libarchive)
-       ,@(if (hurd-target?)
-             '()
-             `(("libuv" ,libuv)))       ;not supported on the Hurd
-       ("rhash" ,rhash)
-       ("zlib" ,zlib)))
+     (append
+      (if (hurd-target?)
+          '()
+          (list libuv))                 ;not supported on the Hurd
+      (list bzip2
+            curl
+            expat
+            file
+            jsoncpp
+            libarchive
+            rhash
+            zlib)))
     (native-search-paths
      (list (search-path-specification
             (variable "CMAKE_PREFIX_PATH")
@@ -284,49 +285,45 @@ and workspaces that can be used in the compiler environment of your choice.")
                                     "Utilities"
                                     lstat)
                   #t))))
-    (inputs
-     (modify-inputs (package-inputs cmake-bootstrap)
-       (prepend jsoncpp)))
     (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags
-       (list "-DCMAKE_USE_SYSTEM_LIBRARIES=ON"
-             (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-"
-                            ,(version-major+minor (package-version
-                                                   cmake-bootstrap))))
+     (list
+      #:configure-flags
+      #~(list "-DCMAKE_USE_SYSTEM_LIBRARIES=ON"
+              (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-"
+                             #$(version-major+minor (package-version
+                                                     cmake-bootstrap))))
 
-       ;; This is the CMake used in cmake-build-system.  Ensure compiler
-       ;; optimizations are enabled to save size and CPU cycles.
-       #:build-type "Release"
-       #:phases
-       (modify-phases %standard-phases
-         ,@(%common-build-phases)
-         (add-after 'install 'delete-help-documentation
-           (lambda* (#:key outputs #:allow-other-keys)
-             (delete-file-recursively
-               (string-append (assoc-ref outputs "out")
+      ;; This is the CMake used in cmake-build-system.  Ensure compiler
+      ;; optimizations are enabled to save size and CPU cycles.
+      #:build-type "Release"
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@(%common-build-phases)
+          (add-after 'install 'delete-help-documentation
+            (lambda _
+              (delete-file-recursively
+               (string-append #$output
                               "/share/cmake-"
-                              ,(version-major+minor
+                              #$(version-major+minor
                                  (package-version cmake-bootstrap))
-                              "/Help"))
-             #t))
-         (replace 'check
-           (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
-             (let ((skipped-tests (list ,@%common-disabled-tests
-                                        ;; This test requires the bundled libuv.
-                                        "BootstrapTest")))
-               (if tests?
-                   (begin
-                     (invoke "ctest" "-j" (if parallel-tests?
-                                              (number->string (parallel-job-count))
-                                              "1")
-                             "--exclude-regex"
-                             (string-append "^(" (string-join skipped-tests "|") ")$")))
-                   (format #t "test suite not run~%"))
-               #t))))
-        ,@(if (%current-target-system)
-              '()
-              `(#:cmake ,cmake-bootstrap))))))
+                              "/Help"))))
+          (replace 'check
+            (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (let ((skipped-tests (list #$@%common-disabled-tests
+                                         ;; This test requires the bundled libuv.
+                                         "BootstrapTest")))
+                (if tests?
+                    (begin
+                      (invoke "ctest" "-j" (if parallel-tests?
+                                               (number->string (parallel-job-count))
+                                               "1")
+                              "--exclude-regex"
+                              (string-append "^(" (string-join skipped-tests "|") ")$")))
+                    (format #t "test suite not run~%"))))))
+      #:cmake (if (%current-target-system)
+                  cmake-minimal-cross
+                  cmake-bootstrap)))))
 
 ;;; The "user-facing" CMake, now with manuals and HTML documentation.
 (define-public cmake
@@ -363,27 +360,25 @@ and workspaces that can be used in the compiler environment of your choice.")
        ((#:build-type _ #f) "RelWithDebInfo")
 
        ((#:configure-flags flags ''())
-        `(append (list "-DSPHINX_INFO=ON" "-DSPHINX_MAN=ON" "-DSPHINX_HTML=ON"
-                       (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-"
-                                      ,(version-major+minor (package-version
-                                                             cmake-minimal)))
-                       "-DCMAKE_INFO_DIR=share/info"
-                       "-DCMAKE_MAN_DIR=share/man")
-                 ,flags))
+        #~(append (list "-DSPHINX_INFO=ON" "-DSPHINX_MAN=ON" "-DSPHINX_HTML=ON"
+                        (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-"
+                                       #$(version-major+minor (package-version
+                                                               cmake-minimal)))
+                        "-DCMAKE_INFO_DIR=share/info"
+                        "-DCMAKE_MAN_DIR=share/man")
+                  #$flags))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (delete 'delete-help-documentation)
-           (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)))))))))
+        #~(modify-phases #$phases
+            (delete 'delete-help-documentation)
+            (add-after 'install 'move-html-doc
+              (lambda _
+                (let ((html (string-append "/share/doc/cmake-"
+                                           #$(version-major+minor
+                                              (package-version cmake-minimal))
+                                           "/html")))
+                  (copy-recursively (string-append #$output html)
+                                    (string-append #$output:doc html))
+                  (delete-file-recursively (string-append #$output html)))))))))
     (inputs
      (modify-inputs (package-inputs cmake-minimal)
        (prepend ncurses)))              ;required for ccmake
@@ -411,13 +406,12 @@ and workspaces that can be used in the compiler environment of your choice.")
     (outputs '("out"))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'chdir-elisp
-           ;; Elisp directory is not in root of the source.
-           (lambda _
-             (chdir "Auxiliary")
-             #t)))))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'chdir-elisp
+                 ;; Elisp directory is not in root of the source.
+                 (lambda _
+                   (chdir "Auxiliary"))))))
     (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/commencement.scm b/gnu/packages/commencement.scm
index 60b06c0901..b54c21b258 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -5,9 +5,9 @@
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017, 2018, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019-2022 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
@@ -92,7 +92,7 @@
 (define bootar
   (package
     (name "bootar")
-    (version "1a")
+    (version "1b")
     (source (origin
               (method url-fetch)
               (uri (list (string-append
@@ -102,7 +102,7 @@
                           version ".ses")))
               (sha256
                (base32
-                "0mvp6vgx0q316fvy3z2lddlc5xgq5np3bm1fypgvj6dnayibg9np"))))
+                "0cf5vj5yxfvkgzvjvh2l7b2nz5ji5l534n9g4mfp8f5jsjqdrqjc"))))
     (build-system gnu-build-system)
     (arguments
      `(#:implicit-inputs? #f
@@ -121,9 +121,10 @@
                       (guile (string-append guile-dir "/bin/guile")))
                  (invoke guile "--no-auto-compile" source)
                  (chdir "bootar"))))
-           (replace 'configure (bootstrap-configure ,version "." "scripts"))
-           (replace 'build (bootstrap-build "."))
-           (replace 'install (bootstrap-install "." "scripts"))))))
+           (replace 'configure (bootstrap-configure "Bootar" ,version
+                                                    '(".") "scripts"))
+           (replace 'build (bootstrap-build '(".")))
+           (replace 'install (bootstrap-install '(".") "scripts"))))))
     (inputs `(("guile" ,%bootstrap-guile)))
     (home-page "https://git.ngyro.com/bootar")
     (synopsis "Tar decompression and extraction in Guile Scheme")
@@ -143,9 +144,6 @@ pure Scheme to Tar and decompression in one easy step.")
   (package
     (inherit gash)
     (name "gash-boot")
-    (source (origin
-              (inherit (package-source gash))
-              (snippet #f)))            ;discard snippet for Guile 3.0 support
     (arguments
      `(#:implicit-inputs? #f
        #:tests? #f
@@ -157,9 +155,10 @@ pure Scheme to Tar and decompression in one easy step.")
          (use-modules (guix build gnu-bootstrap))
          (modify-phases %standard-phases
            (replace 'configure
-             (bootstrap-configure ,(package-version gash) "gash" "scripts"))
-           (replace 'build (bootstrap-build "gash"))
-           (replace 'install (bootstrap-install "gash" "scripts"))
+             (bootstrap-configure "Gash" ,(package-version gash)
+                                  '("gash") "scripts"))
+           (replace 'build (bootstrap-build '("gash")))
+           (replace 'install (bootstrap-install '("gash") "scripts"))
            (add-after 'install 'install-symlinks
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
@@ -174,10 +173,6 @@ pure Scheme to Tar and decompression in one easy step.")
   (package
     (inherit gash-utils)
     (name "gash-utils-boot")
-    (source (origin
-              (inherit (package-source gash-utils))
-              (patches '())
-              (snippet #f)))            ;discard snippet for Guile 3.0 support
     (arguments
      `(#:implicit-inputs? #f
        #:tests? #f
@@ -209,9 +204,9 @@ pure Scheme to Tar and decompression in one easy step.")
                              (substitute* target
                                (("@UTILITY@") script))))
                          '("awk" "basename" "cat" "chmod" "cmp" "command"
-                           "compress" "cp" "cut" "diff" "dirname" "expr"
-                           "false" "find" "grep" "head" "ln" "ls" "mkdir"
-                           "mv" "printf" "pwd" "reboot" "rm" "rmdir"
+                           "compress" "cp" "cut" "diff" "dirname" "env"
+                           "expr" "false" "find" "grep" "head" "ln" "ls"
+                           "mkdir" "mv" "printf" "pwd" "reboot" "rm" "rmdir"
                            "sed" "sleep" "sort" "tar" "test" "touch" "tr"
                            "true" "uname" "uniq" "wc" "which"))
                (format #t "Creating scripts/[.in~%")
@@ -220,10 +215,11 @@ pure Scheme to Tar and decompression in one easy step.")
                  (("@UTILITY@") "testb"))
                (delete-file "scripts/template.in")))
            (replace 'configure
-             (bootstrap-configure ,(package-version gash-utils)
-                                  "gash" "scripts"))
-           (replace 'build (bootstrap-build "gash"))
-           (replace 'install (bootstrap-install "gash" "scripts"))
+             (bootstrap-configure "Gash-Utils" ,(package-version gash-utils)
+                                  '("gash" "gash-utils") "scripts"))
+           (replace 'build (bootstrap-build '("gash" "gash-utils")))
+           (replace 'install
+             (bootstrap-install '("gash" "gash-utils") "scripts"))
            ;; XXX: The scripts should add Gash to their load paths and
            ;; this phase should not exist.
            (add-after 'install 'copy-gash
@@ -247,7 +243,19 @@ pure Scheme to Tar and decompression in one easy step.")
                  (copy-file (string-append gash-godir "/gash/compat.go")
                             (string-append godir "/gash/compat.go"))
                  (copy-recursively (string-append gash-godir "/gash/compat")
-                                   (string-append godir "/gash/compat")))))))))
+                                   (string-append godir "/gash/compat")))))
+           ;; We need an external echo.
+           (add-after 'install 'make-echo
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (gash (assoc-ref inputs "gash")))
+                 (with-output-to-file (string-append out "/bin/echo")
+                   (lambda ()
+                     (display (string-append "#!" gash "/bin/gash\n"))
+                     (newline)
+                     (display "echo \"$@\"")
+                     (newline)))
+                 (chmod (string-append out "/bin/echo") #o755))))))))
     (inputs `(("gash" ,gash-boot)
               ("guile" ,%bootstrap-guile)))
     (native-inputs `(("bootar" ,bootar)))))
@@ -258,186 +266,237 @@ pure Scheme to Tar and decompression in one easy step.")
     ("bootar" ,bootar)
     ("guile" ,%bootstrap-guile)))
 
-(define %bootstrap-mes-rewired
+(define bootstrap-seeds
   (package
-    (inherit mes)
-    (name "bootstrap-mes-rewired")
-    (version "0.19")
-    (source #f)
-    (native-inputs `(("mes" ,%bootstrap-mes)
-                     ("gash" ,gash-boot)))
-    (inputs '())
-    (propagated-inputs '())
-    (outputs '("out"))
+    (name "bootstrap-seeds")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (list
+                    (string-append "mirror://gnu/guix/mirror/"
+                                   "bootstrap-seeds-" version ".tar.gz")
+                    (string-append
+                     "https://lilypond.org/janneke/guix/20220501/"
+                     "bootstrap-seeds-" version ".tar.gz")))
+       (sha256
+        (base32
+         "0scz2bx8fd8c821h6y1j3x6ywgxxns7iinyn9z32dnkiacfdcpfn"))))
+    (native-inputs (list bootar))
     (build-system trivial-build-system)
     (arguments
-     `(#:guile ,%bootstrap-guile
-       #:modules ((guix build utils))
-
-       #:builder (begin
-                   (use-modules (guix build utils)
-                                (srfi srfi-26))
-
-                   (let* ((mes (assoc-ref %build-inputs "mes"))
-                          (gash (assoc-ref %build-inputs "gash"))
-                          (mes-bin (string-append mes "/bin"))
-                          (guile (string-append mes-bin "/mes"))
-                          (mes-module (string-append mes "/share/mes/module"))
-                          (out (assoc-ref %outputs "out"))
-                          (bin (string-append out "/bin"))
-                          (mescc (string-append bin "/mescc"))
-                          (module (string-append out "/share/mes/module")))
-                     (define (rewire file)
-                       (substitute* file
-                         ((mes) out)
-                         (("/gnu/store[^ ]+mes-minimal-[^/)}\"]*") out)
-                         (("/gnu/store[^ ]+guile-[^/]*/bin/guile") guile)
-                         (("/gnu/store[^ ]+bash-[^/)}\"]*") gash)))
-
-                     (mkdir-p bin)
-                     (for-each (lambda (file) (install-file file bin))
-                               (find-files mes-bin))
-                     (mkdir-p module)
-                     (copy-recursively (string-append mes-module "/mes")
-                                       (string-append module "/mes"))
-                     (copy-recursively (string-append mes-module "/srfi")
-                                       (string-append module "/srfi"))
-                     (for-each rewire
-                               ;; Cannot easily rewire "mes" because it
-                               ;; contains NUL characters; would require
-                               ;; remove-store-references alike trick
-                               (filter (negate (cut string-suffix? "/mes" <>))
-                                       (find-files bin)))
-                     (rewire (string-append module "/mes/boot-0.scm"))
-
-                     (delete-file mescc)
-                     (with-output-to-file mescc
-                       (lambda _
-                         (display (string-append
-                                   "\
-#! " gash "/bin/sh
-LANG=C
-LC_ALL=C
-export LANG LC_ALL
-
-MES_PREFIX=${MES_REWIRED_PREFIX-" out "/share/mes}
-MES=" bin "/mes
-export MES MES_PREFIX
-
-MES_ARENA=${MES_REWIRED_ARENA-10000000}
-MES_MAX_ARENA=${MES_REWIRED_ARENA-10000000}
-MES_STACK=${MES_REWIRED_STACK-1000000}
-export MES_ARENA MES_MAX_ARENA MES_STACK
-
-$MES -e '(mescc)' module/mescc.scm -- \"$@\"
-"))))
-                     (chmod mescc #o555)
-
-                     (with-directory-excursion module
-                       (chmod "mes/base.mes" #o644)
-                       (copy-file "mes/base.mes" "mes/base.mes.orig")
-                       (let ((base.mes (open-file "mes/base.mes" "a")))
-                         (display "
-;; A fixed map, from Mes 0.21, required to bootstrap Mes 0.21
-(define (map f h . t)
-  (if (or (null? h)
-          (and (pair? t) (null? (car t)))
-          (and (pair? t) (pair? (cdr t)) (null? (cadr t)))) '()
-      (if (null? t) (cons (f (car h)) (map f (cdr h)))
-          (if (null? (cdr t))
-              (cons (f (car h) (caar t)) (map f (cdr h) (cdar t)))
-              (if (null? (cddr t))
-                  (cons (f (car h) (caar t) (caadr t)) (map f (cdr h) (cdar t) (cdadr t)))
-                  (error 'unsupported (cons* 'map-4: f h t))b )))))
-" base.mes)
-                         (close base.mes))
-
-                       (chmod "mes/guile.mes" #o644)
-                       (copy-file "mes/guile.mes" "mes/guile.mes.orig")
-                       (let ((guile.mes (open-file "mes/guile.mes" "a")))
-                         (display "
-;; After booting guile.scm; use Mes 0.21; especially: MesCC 0.21
-(let* ((self (car (command-line)))
-       (prefix (dirname (dirname self))))
-  (set! %moduledir (string-append prefix \"/mes/module/\"))
-  (setenv \"%numbered_arch\" \"true\"))
+     (list #:guile %bootstrap-guile
+           #:modules '((guix build utils))
+           #:builder
+           #~(begin
+               (use-modules (guix build utils))
+               (let ((source #$(package-source this-package))
+                     (tar #$(this-package-native-input "bootar"))
+                     (out #$output))
+                 (setenv "PATH" (string-append tar "/bin:"))
+                 (invoke "tar" "xvf" source)
+                 (mkdir-p out)
+                 (copy-recursively "bootstrap-seeds" out)))))
+    (home-page "https://github.com/oriansj/bootstrap-seeds")
+    (synopsis "The initial bootstrap seeds: 357-byte hex0 and kaem shell")
+    (description
+     "This package provides pre-built binaries of the bootstrap seeds.  It
+contains a hex0-seed and an optional kaem-minimal shell.  The size of the hex0
+seeds are for knight: 250 bytes, x86-linux: 357 bytes, x86_64-linux: 431
+bytes, and aarch64-linux 526 bytes.  These can be used to build stage0: hex0,
+hex1, hex2, M1, and M2-Planet.")
+    (license license:gpl3+)))
 
-" guile.mes)
-                         (close guile.mes)))
-                     #t))))))
+(define stage0-posix
+  ;; The initial bootstrap package: no binary inputs except those from
+  ;; `bootstrap-seeds, for x86 a 357 byte binary seed: `x86/hex0-seed'.
+  (let* ((mescc-tools-version "1.4.0")
+         (m2-planet-version "1.9.0")
+         (mescc-tools
+          (origin
+            (method url-fetch)
+            (uri (list
+                  (string-append
+                   "mirror://gnu/guix/mirror/"
+                   "mescc-tools-" mescc-tools-version ".tar.gz")
+                  (string-append
+                   "https://lilypond.org/janneke/guix/20220502/"
+                   "mescc-tools-" mescc-tools-version ".tar.gz")))
+            (sha256
+             (base32
+              "1xi6f48pf5bhajhfis189gpizxij7nbp1vzvsb1aafhz4skkiqvg"))))
+         (m2-planet
+          (origin
+            (method url-fetch)
+            (uri (list
+                  (string-append
+                   "mirror://gnu/guix/mirror/"
+                   "M2-Planet-" m2-planet-version ".tar.gz")
+                  (string-append
+                   "https://lilypond.org/janneke/guix/20220502/"
+                   "M2-Planet-" m2-planet-version ".tar.gz")))
+            (sha256
+             (base32
+              "1xrn69sc5nz4hwaishqyrcidp1ncxwib9zswl45x378ddz3mmk7g")))))
+    (package
+      (name "stage0-posix")
+      (version "1.4")
+      (source (origin
+                (method url-fetch)
+                (uri (list
+                      (string-append "mirror://gnu/guix/mirror/"
+                                     "stage0-posix-" version ".tar.gz")
+                      (string-append
+                       "https://lilypond.org/janneke/guix/20220502/"
+                       "stage0-posix-" version ".tar.gz")))
+                (sha256
+                 (base32
+                  "1ammifkj33205qrpfm84yb1c99lwgbn4jsl1hd08aab8c9ffz6p4"))))
+      (supported-systems '("i686-linux" "x86_64-linux"
+                           "aarch64-linux"
+                           "riscv64-linux"))
+      (native-inputs
+       `(("bootstrap-seeds" ,bootstrap-seeds)
+         ,@(%boot-gash-inputs)))
+      (build-system trivial-build-system)
+      (arguments
+       (list
+        #:guile %bootstrap-guile
+        #:modules '((guix build utils))
+        #:builder
+        #~(begin
+            (use-modules (guix build utils))
+            (let* ((bootstrap-seeds #$(this-package-native-input
+                                       "bootstrap-seeds"))
+                   (source #$(package-source this-package))
+                   (tar #$(this-package-native-input "bootar"))
+                   (bash #$(this-package-native-input "bash"))
+                   (coreutils #$(this-package-native-input "coreutils"))
+                   (guile #$(this-package-input "guile"))
+                   (out #$output)
+                   (bindir (string-append out "/bin"))
+                   (target (or #$(%current-target-system)
+                               #$(%current-system)))
+                   (stage0-cpu
+                    (cond
+                     ((or #$(target-x86-64?) #$(target-x86-32?))
+                      "x86")
+                     (#$(target-aarch64?)
+                      "AArch64")
+                     (#$(target-riscv64?)
+                      "riscv64")
+                     (else
+                      (error "stage0-posix: system not supported" target))))
+                   (kaem (string-append "../bootstrap-seeds/POSIX/"
+                                        stage0-cpu "/kaem-optional-seed")))
+              (setenv "PATH" (string-append tar "/bin:"
+                                            coreutils "/bin:"
+                                            bash "/bin"))
+              (invoke "tar" "xvf" source)
+              (chdir (string-append "stage0-posix-" #$version))
+              (copy-recursively bootstrap-seeds "bootstrap-seeds")
+              (invoke "tar" "xvf" #$mescc-tools)
+              (rmdir "mescc-tools")
+              (symlink (string-append "mescc-tools-" #$mescc-tools-version)
+                       "mescc-tools")
+              (invoke "tar" "xvf" #$m2-planet)
+              (rmdir "M2-Planet")
+              (symlink (string-append "M2-Planet-" #$m2-planet-version)
+                       "M2-Planet")
+              (rmdir "M2libc")
+              (symlink "M2-Planet/M2libc" "M2libc")
+              (mkdir-p bindir)
+              (with-directory-excursion stage0-cpu
+                (with-output-to-file "mes-m2.kaem"
+                  (lambda _ (display "")))
+                (with-output-to-file "mescc-tools-extra.kaem"
+                  (lambda _ (display "")))
+                (invoke kaem "kaem.run"))
+              (with-directory-excursion "bin"
+                (install-file "hex2" bindir)
+                (install-file "M1" bindir)
+                (install-file "blood-elf" bindir)
+                (install-file "kaem" bindir)
+                (install-file "get_machine" bindir)
+                (install-file "M2-Planet" bindir))))))
+      (home-page "https://github.com/oriansj/stage0-posix/")
+      (synopsis "The initial bootstrap package, builds stage0 up to M2-Planet")
+      (description "Starting from the 357-byte hex0-seed binary provided by
+the bootstrap-seeds, the stage0-posix package first builds hex0 and then all
+the way up: hex1, catm, hex2, M0, cc_x86, M1, M2, get_machine (that's all of
+MesCC-Tools), and finally M2-Planet.")
+      (license license:gpl3+))))
 
 (define mes-boot
   (package
     (inherit mes)
     (name "mes-boot")
-    (version "0.22")
+    (version "0.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mes/"
                                   "mes-" version ".tar.gz"))
               (sha256
                (base32
-                "0p1jsrrmcbc0zrvbvnjbb6iyxr0in71km293q8qj6gnar6bw09av"))))
+                "00lrpm4x5qg0l840zhbf9mr67mqhp8gljcl24j5dy0y109gf32w2"))))
     (inputs '())
     (propagated-inputs '())
+    (supported-systems '("i686-linux" "x86_64-linux"))
     (native-inputs
-     `(("nyacc-source" ,(origin (inherit (package-source nyacc-0.99))
-                                (snippet #f)))
-       ("mes" ,%bootstrap-mes-rewired)
-       ("mescc-tools" ,%bootstrap-mescc-tools)
+     `(("m2-planet" ,stage0-posix)
+       ("nyacc-source" ,(bootstrap-origin
+                         (origin (inherit (package-source nyacc-1.00.2))
+                                 (snippet #f))))
        ,@(%boot-gash-inputs)))
     (arguments
-     `(#:implicit-inputs? #f
-       #:tests? #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")))
-               (with-directory-excursion ".."
-                 (invoke "tar" "-xvf" nyacc-source)))))
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref %outputs "out"))
-                   (gash (assoc-ref %build-inputs "bash"))
-                   (mes (assoc-ref %build-inputs "mes"))
-                   (dir (with-directory-excursion ".." (getcwd))))
-               (setenv "AR" (string-append "gash " (getcwd) "/scripts/mesar"))
-               (setenv "BASH" (string-append gash "/bin/bash"))
-               (setenv "CC" (string-append mes "/bin/mescc"))
-               (setenv "GUILE_LOAD_PATH"
-                       (string-append
-                        mes "/share/mes/module"
-                        ":" dir "/nyacc-0.99.0/module"))
-               (invoke "gash" "configure.sh"
-                       (string-append "--prefix=" out)
-                       (string-append "--host=i686-linux-gnu")))))
-         (replace 'build
-           (lambda _
-             (invoke "sh" "bootstrap.sh")))
-         (delete 'check)
-         (replace 'install
-           (lambda _
-             (substitute* "install.sh"  ; show some progress
-               ((" -xf") " -xvf")
-               (("^( *)((cp|mkdir|tar) [^']*[^\\])\n" all space cmd)
-                (string-append space "echo '" cmd "'\n"
-                               space cmd "\n")))
-             (invoke "sh" "install.sh")
-             ;; Keep ASCII output, for friendlier comparison and bisection
-             (let* ((out (assoc-ref %outputs "out"))
-                    (cache (string-append out "/lib/cache")))
-               (define (objects-in-dir dir)
-                 (find-files dir
-                             (lambda (name stat)
-                               (and (equal? (dirname name) dir)
-                                    (or (string-suffix? ".o" name)
-                                        (string-suffix? ".s" name))))))
-               (for-each (lambda (x) (install-file x cache))
-                         (append (objects-in-dir ".")
-                                 (objects-in-dir "mescc-lib")))))))))
+     (list
+      #:implicit-inputs? #f
+      #:tests? #f
+      #:guile %bootstrap-guile
+      #:strip-binaries? #f              ;no strip yet
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'unpack-seeds
+            (lambda _
+              (let ((nyacc-source #$(this-package-native-input "nyacc-source")))
+                (with-directory-excursion ".."
+                  (invoke "tar" "-xvf" nyacc-source)))))
+          (replace 'configure
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let ((out #$output)
+                    (gash #$(this-package-native-input "bash"))
+                    (dir (with-directory-excursion ".." (getcwd))))
+                (setenv "GUILE_LOAD_PATH" (string-append
+                                           dir "/nyacc-1.00.2/module"))
+                (invoke "gash" "configure.sh"
+                        (string-append "--prefix=" out)
+                        "--host=i686-linux-gnu"))))
+          (replace 'build
+            (lambda _
+              (invoke "gash" "bootstrap.sh")))
+          (delete 'check)
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* "install.sh" ; show some progress
+                ((" -xf") " -xvf")
+                (("^( *)((cp|mkdir|tar) [^']*[^\\])\n" all space cmd)
+                 (string-append space "echo '" cmd "'\n"
+                                space cmd "\n")))
+              (invoke "gash" "install.sh")
+              ;; Keep ASCII output, for friendlier comparison and bisection
+              (let* ((out #$output)
+                     (cache (string-append out "/lib/cache")))
+                (define (objects-in-dir dir)
+                  (find-files dir
+                              (lambda (name stat)
+                                (and (equal? (dirname name) dir)
+                                     (or (string-suffix? ".M1" name)
+                                         (string-suffix? ".hex2" name)
+                                         (string-suffix? ".o" name)
+                                         (string-suffix? ".s" name))))))
+                (for-each (lambda (x) (install-file x cache))
+                          (append (objects-in-dir "m2")
+                                  (objects-in-dir ".")
+                                  (objects-in-dir "mescc-lib")))))))))
     (native-search-paths
      (list (search-path-specification
             (variable "C_INCLUDE_PATH")
@@ -452,7 +511,7 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
 
 
 (define tcc-boot0
-  ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11
+  ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 30
   ;; 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
@@ -461,82 +520,83 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
   (package
     (inherit tcc)
     (name "tcc-boot0")
-    (version "0.9.26-1103-g6e62e0e")
+    (version "0.9.26-1136-g5bba73cc")
     (source (origin
               (method url-fetch)
-              (uri (list (string-append "mirror://gnu/guix/mirror/tcc-"
-                                        version ".tar.gz")
-                         (string-append
-                          "http://lilypond.org/janneke/mes/20191117/"
-                          "/tcc-" version ".tar.gz")))
+              (uri (list
+                    (string-append "mirror://gnu/guix/mirror/"
+                                   "tcc-" version ".tar.gz")
+                    (string-append "https://lilypond.org/janneke/tcc/"
+                                   "tcc-" version ".tar.gz")))
               (sha256
                (base32
-                "1qbybw7mxbgkv3sazvz1v7c8byq998vk8f1h25ik8w3d2l63lxng"))))
+                "1y2f04qwdqg7dgxiscbf0ibybx2gclniwbbcsxpayazzii2cvji3"))))
     (build-system gnu-build-system)
     (supported-systems '("i686-linux" "x86_64-linux"))
     (inputs '())
     (propagated-inputs '())
     (native-inputs
      `(("mes" ,mes-boot)
-       ("nyacc-source" ,(origin (inherit (package-source nyacc-0.99))
-                                (snippet #f)))
-       ("mescc-tools" ,%bootstrap-mescc-tools)
+       ("mescc-tools" ,stage0-posix)
+       ("nyacc-source" ,(bootstrap-origin
+                         (origin (inherit (package-source nyacc-1.00.2))
+                                 (snippet #f))))
        ,@(%boot-gash-inputs)))
     (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:validate-runpath? #f           ; no dynamic executables
-       #:strip-binaries? #f             ; no strip yet
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-seeds
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source")))
-               (with-directory-excursion ".."
-                 (invoke "tar" "-xvf" nyacc-source)))))
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref %outputs "out"))
-                    (dir (with-directory-excursion ".." (getcwd)))
-                    (interpreter "/lib/mes-loader"))
-
-               (setenv "prefix" out)
-               (setenv "GUILE_LOAD_PATH"
-                       (string-append dir "/nyacc-0.99.0/module"))
-
-               (substitute* "conftest.c"
-                 (("volatile") ""))
-
-               (invoke "sh" "configure"
-                       "--cc=mescc"
-                       (string-append "--prefix=" out)
-                       (string-append "--elfinterp=" interpreter)
-                       "--crtprefix=."
-                       "--tccdir=."))))
-         (replace 'build
-           (lambda _
-             (substitute* "bootstrap.sh" ; Show some progress
-               (("^( *)((cp|ls|mkdir|rm|[.]/tcc|[.]/[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd)
-                (string-append space "echo \"" cmd "\"\n"
-                               space cmd "\n")))
-             (invoke "sh" "bootstrap.sh")))
-         (replace 'check
-           (lambda _
-             ;; fail fast tests
-             (system* "./tcc" "--help") ; --help exits 1
-             ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen")
-             ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment")
-             ;; TODO: add sensible check target (without depending on make)
-             ;; (invoke "sh" "check.sh")
-             #t))
-         (replace 'install
-           (lambda _
-             (substitute* "install.sh"  ; Show some progress
-               (("^( *)((cp|ls|mkdir|rm|tar|./[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd)
-                (string-append space "echo \"" cmd "\"\n"
-                               space cmd "\n")))
-
-             (invoke "sh" "install.sh"))))))
+     (list
+      #:implicit-inputs? #f
+      #:guile %bootstrap-guile
+      #:validate-runpath? #f            ; no dynamic executables
+      #:strip-binaries? #f              ; no strip yet
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'unpack-extra-sources
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((nyacc-source #$(this-package-native-input "nyacc-source")))
+                (with-directory-excursion ".."
+                  (invoke "tar" "-xvf" nyacc-source)))))
+          (replace 'configure
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((out #$output)
+                     (dir (with-directory-excursion ".." (getcwd)))
+                     (interpreter "/lib/mes-loader")
+                     (mes #$(this-package-native-input "mes"))
+                     (mescc (string-append mes "/bin/mescc")))
+                (substitute* "conftest.c"
+                  (("volatile") ""))
+                (setenv "prefix" out)
+                (setenv "GUILE_LOAD_PATH"
+                        (string-append dir "/nyacc-1.00.2/module"))
+                (invoke "sh" "configure"
+                        "--cc=mescc"
+                        (string-append "--prefix=" out)
+                        (string-append "--elfinterp=" interpreter)
+                        "--crtprefix=."
+                        "--tccdir=."))))
+          (replace 'build
+            (lambda _
+              (substitute* "bootstrap.sh" ; Show some progress
+                (("^( *)((cp|ls|mkdir|rm|[.]/tcc|[.]/[$][{program_prefix[}]tcc) [^\"]*[^\\])\n" all space cmd)
+                 (string-append space "echo \"" cmd "\"\n"
+                                space cmd "\n")))
+              (invoke "sh" "bootstrap.sh")))
+          (replace 'check
+            (lambda _
+              ;; fail fast tests
+              (system* "./tcc" "--help") ; --help exits 1
+              ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen")
+              ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment")
+              ;; TODO: add sensible check target (without depending on make)
+              ;; (invoke "sh" "check.sh")
+              ))
+          (replace 'install
+            (lambda _
+              (substitute* "install.sh" ; Show some progress
+                (("^( *)((cp|ls|mkdir|rm|tar|./[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd)
+                 (string-append space "echo \"" cmd "\"\n"
+                                space cmd "\n")))
+
+              (invoke "sh" "install.sh"))))))
     (native-search-paths
      (list (search-path-specification
             (variable "C_INCLUDE_PATH")
@@ -657,152 +717,6 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
     ("tcc" ,tcc-boot0)
     ,@(%boot-gash-inputs)))
 
-(define bzip2-mesboot
-  ;; The initial bzip2
-  (package
-    (inherit bzip2)
-    (name "bzip2-mesboot")
-    (version (package-version bzip2))
-    (source (bootstrap-origin (package-source bzip2)))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-tcc0-inputs))
-    (outputs '("out"))
-    (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
-       #:make-flags (list "CC=tcc -I ." "AR=tcc -ar" "bzip2"
-                          (string-append "PREFIX="
-                                         (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'scripted-patch
-           (lambda _
-             (substitute* "Makefile"
-               (("\tln " all)
-                (string-append "\t#" all)))
-             (substitute* "bzip2.c"
-               (("struct utimbuf uTimBuf;" all)
-                (string-append "// " all))
-               (("uTimBuf[.]" all)
-                (string-append "// " all))
-               (("retVal = utime [(] dstName, &uTimBuf [)];" all)
-                (string-append "retVal = 0; // " all)))))
-         (replace 'configure
-           (lambda _
-             (with-output-to-file "utime.h"
-               (lambda _ (display "
-#define fchown(filedes, owner, group) 0
-#define fchmod(filedes, mode) 0
-")))))
-         (replace 'check
-           (lambda _
-             (invoke "./bzip2" "--help")))
-         ;; FIXME: no compressing gzip yet
-         (delete 'compress-documentation))))))
-
-(define bash-mesboot0
-  ;; The initial Bash
-  (package
-    (inherit static-bash)
-    (name "bash-mesboot0")
-    (version "2.05b")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/bash/bash-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1r1z2qdw3rz668nxrzwa14vk2zcn00hw7mpjn384picck49d80xs"))))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-tcc0-inputs))
-    (outputs '("out"))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:parallel-build? #f
-       #:strip-binaries? #f             ; no strip yet
-       #:configure-flags
-       (list "--build=i686-unknown-linux-gnu"
-             "--host=i686-unknown-linux-gnu"
-
-             "--without-bash-malloc"
-             "--disable-readline"
-             "--disable-history"
-             "--disable-help-builtin"
-             "--disable-progcomp"
-             "--disable-net-redirections"
-             "--disable-nls"
-
-             ;; Pretend 'dlopen' is missing so we don't build loadable
-             ;; modules and related code.
-             "ac_cv_func_dlopen=no")
-       #:make-flags '("bash")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'setenv
-           (lambda _
-             (let* ((gash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append gash "/bin/gash")))
-               (setenv "CONFIG_SHELL" shell)
-               (setenv "SHELL" shell)
-               (setenv "CC" "tcc")
-               (setenv "LD" "tcc")
-               (setenv "AR" "tcc -ar")
-               (setenv "CFLAGS" "-D _POSIX_VERSION=1"))))
-         (add-after 'unpack 'scripted-patch
-           (lambda _
-             (substitute* "Makefile.in"
-               (("mksyntax\\.c\n") "mksyntax.c -lgetopt\n")
-               (("buildversion[.]o\n") "buildversion.o -lgetopt\n")
-               ;; No size in Gash
-               (("\tsize ") "#\tsize"))
-             (substitute* "lib/sh/oslib.c"
-               (("int name, namelen;") "char *name; int namelen;"))
-             (substitute* "lib/sh/snprintf.c"
-               (("^#if (defined [(]HAVE_LOCALE_H[)])" all define) (string-append "#if 0 //" define)))
-             (substitute* "configure"
-               ((" egrep") " grep"))))
-         (replace 'configure
-           (lambda* (#:key configure-flags #:allow-other-keys)
-             (let ((configure-flags (filter (lambda (x)
-                                              (and (not (string-prefix? "CONFIG_SHELL=" x))
-                                                   (not (string-prefix? "SHELL=" x))))
-                                            configure-flags)))
-               (format (current-error-port)
-                       "running ./configure ~a\n" (string-join configure-flags)))
-             (apply invoke (cons "./configure" configure-flags))))
-         (add-after 'configure 'configure-fixups
-           (lambda _
-             (substitute* "config.h"
-               (("#define GETCWD_BROKEN 1") "#undef GETCWD_BROKEN"))
-             (let ((config.h (open-file "config.h" "a")))
-               (display "
-// tcc: error: undefined symbol 'enable_hostname_completion'
-#define enable_hostname_completion(on_or_off) 0
-
-// /gnu/store/…-tcc-boot0-0.9.26-6.c004e9a/lib/libc.a: error: 'sigprocmask' defined twice
-#define HAVE_POSIX_SIGNALS 1
-#define endpwent(x) 0
-"
-                        config.h)
-               (close config.h))))
-         (replace 'check
-           (lambda _
-             (invoke "./bash" "--version")))
-         (replace 'install
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bin (string-append out "/bin")))
-               (mkdir-p bin)
-               (copy-file "bash" (string-append bin "/bash"))
-               (copy-file "bash" (string-append bin "/sh"))))))))))
-
 (define tcc-boot
   ;; The final tcc.
   (package
@@ -819,8 +733,7 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
     (build-system gnu-build-system)
     (inputs '())
     (propagated-inputs '())
-    (native-inputs `(("bzip2" ,bzip2-mesboot)
-                     ,@(%boot-tcc0-inputs)))
+    (native-inputs (%boot-tcc0-inputs))
     (arguments
      `(#:implicit-inputs? #f
        #:guile ,%bootstrap-guile
@@ -828,14 +741,6 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
        #:strip-binaries? #f             ; no strip yet
        #:phases
        (modify-phases %standard-phases
-         ;; tar xvf ..bz2 gives
-         ;; bzip2: PANIC -- internal consistency error
-         (replace 'unpack
-           (lambda* (#:key source #:allow-other-keys)
-             (copy-file source "tarball.tar.bz2")
-             (invoke "bzip2" "-d" "tarball.tar.bz2")
-             (invoke "tar" "xvf" "tarball.tar")
-             (chdir (string-append "tcc-" ,version))))
          (add-after 'unpack 'scripted-patch
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "libtcc.c"
@@ -897,8 +802,8 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
                                   (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")
+                (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"
@@ -939,56 +844,9 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
          ;; FIXME: no compressing gzip yet
          (delete 'compress-documentation))))))
 
-(define sed-mesboot0
-  ;; The initial sed.
-  (package
-    (inherit sed)
-    (name "sed-mesboot0")
-    (version "1.18")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/sed/sed-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1hyv7i82jd0q18xcql51ylc8jwadp3gb3irgcqlis3v61p35jsv2"))))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-tcc0-inputs))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:parallel-build? #f
-       #:configure-flags '("CC=tcc")
-       #:make-flags '("CC=tcc" "extra_objs=" "DEFS=-D HAVE_BCOPY")
-       #:strip-binaries? #f             ; no strip yet
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'scripted-patch
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (substitute* "configure"
-                 (("/bin/sh") shell)))))
-         (replace 'check
-           (lambda _
-             (invoke "./sed" "--version")))
-         (replace 'install
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bin (string-append out "/bin")))
-               (install-file "sed" bin)))))))))
-
 (define (%boot-tcc-inputs)
-  `(("bash" ,bash-mesboot0)
-    ("bzip2" ,bzip2-mesboot)
-    ("gzip" ,gzip-mesboot)
+  `(("gzip" ,gzip-mesboot)
     ("patch" ,patch-mesboot)
-    ("sed" ,sed-mesboot0)
-    ;; Place lower than sed so we don't override it.
-    ("gash-utils" ,gash-utils-boot)
     ("tcc" ,tcc-boot)
     ,@(alist-delete "tcc" (%boot-tcc0-inputs))))
 
@@ -997,14 +855,17 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
   (package
     (inherit binutils)
     (name "binutils-mesboot0")
-    (version "2.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/binutils/binutils-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1w8xp7k44bkijr974x9918i4p1sw4g2fcd5mxvspkjpg38m214ds"))))
+    (version "2.20.1a")
+    (source (bootstrap-origin
+             (origin
+               (method url-fetch)
+               (uri (string-append "mirror://gnu/binutils/binutils-"
+                                   version ".tar.bz2"))
+               (patches (search-patches "binutils-boot-2.20.1a.patch"))
+               (patch-guile %bootstrap-guile)
+               (sha256
+                (base32
+                 "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi")))))
     (inputs '())
     (propagated-inputs '())
     (native-inputs (%boot-tcc-inputs))
@@ -1016,40 +877,21 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\"
        #:parallel-build? #f
        #:strip-binaries? #f             ; no strip yet
        #:configure-flags
-       (let ((out (assoc-ref %outputs "out")))
-         `("--disable-nls"
+       (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=i386-unknown-linux"
-           "--host=i386-unknown-linux"
-           "--target=i386-unknown-linux"
-           "--with-sysroot=/"
-           ,(string-append "--prefix=" out)))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'setenv
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (setenv "CONFIG_SHELL" shell)
-               (setenv "SHELL" shell)
-               (setenv "AR" "tcc -ar")
-               (setenv "RANLIB" "true")
-               (setenv "CC" "tcc -D __GLIBC_MINOR__=6"))))
-         (add-after 'unpack 'scripted-patch
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "bfd/configure"
-               (("^sed -e '/SRC-POTFILES.*" all)
-                "echo -e 'all:\\n\\ttrue\\n\\ninstall:\\n\\ttrue\\n' > po/Makefile\n"))))
-         (replace 'configure           ; needs classic invocation of configure
-           (lambda* (#:key configure-flags #:allow-other-keys)
-             (format (current-error-port)
-                     "running ./configure ~a\n" (string-join configure-flags))
-             (apply system* "./configure" configure-flags)
-             (substitute* "config.status"
-               (("[.]//dev/null") "/dev/null"))
-             (invoke "sh" "./config.status"))))))))
+           "--build=i686-unknown-linux-gnu"
+           "--host=i686-unknown-linux-gnu"
+           "--with-sysroot=/"))))))
 
 (define gcc-core-mesboot0
   ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C
@@ -1176,7 +1018,6 @@ ac_cv_c_float_format='IEEE (little-endian)'
 
 (define (%boot-mesboot-core-inputs)
   `(("binutils" ,binutils-mesboot0)
-    ("gawk" ,gawk-mesboot0)
     ("gcc" ,gcc-core-mesboot0)
     ,@(alist-delete "tcc" (%boot-tcc-inputs))))
 
@@ -1207,72 +1048,6 @@ ac_cv_c_float_format='IEEE (little-endian)'
                (copy-recursively "include" out)
                (copy-recursively headers out)))))))))
 
-(define gawk-mesboot0
-  ;; The initial Gawk.
-  (package
-    (inherit gawk)
-    (name "gawk-mesboot0")
-    (version "3.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/gawk/gawk-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "087s7vpc8zawn3l7bwv9f44bf59rc398hvaiid63klw6fkbvabr3"))))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-tcc-inputs))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:configure-flags '("--build=i686-unknown-linux-gnu"
-                           "--host=i686-unknown-linux-gnu"
-                           "--disable-nls")
-       #:make-flags '("gawk")
-       #:parallel-build? #f
-       #:parallel-tests? #f
-       #:strip-binaries? #f             ; no strip yet
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'scripted-patch
-           (lambda _
-             (substitute* "Makefile.in"
-               (("date ") "echo today ")
-               ((" autoheader") "true")
-               ((" -lm ") " "))
-             (substitute* "test/Makefile.in"
-               (("^bigtest:.*") "bigtest: basic\n")
-               (("( |\t)(childin|convfmt|fflush|longwrds|math|negexp)" all sep) sep))))
-         (add-before 'configure 'setenv
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (setenv "CONFIG_SHELL" shell)
-               (setenv "SHELL" shell)
-               (setenv "CC" "tcc")
-               (setenv "CPP" "tcc -E")
-               (setenv "LD" "tcc")
-               (setenv "ac_cv_func_getpgrp_void" "yes")
-               (setenv "ac_cv_func_tzset" "yes"))))
-         (replace 'configure           ; needs classic invocation of configure
-           (lambda* (#:key configure-flags #:allow-other-keys)
-             (let* ((out (assoc-ref %outputs "out"))
-                    (configure-flags
-                     `(,@configure-flags
-                       ,(string-append "--prefix=" out))))
-               (format (current-error-port) "running ./configure ~a\n" (string-join configure-flags))
-               (system* "touch" "configure") ; aclocal.m4 is newer than configure
-               (apply invoke (cons "./configure" configure-flags)))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin")))
-               (install-file "gawk" bin)
-               (symlink "gawk" (string-append bin "/awk"))))))))))
-
 (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
@@ -1417,97 +1192,6 @@ ac_cv_c_float_format='IEEE (little-endian)'
     ("libc" ,glibc-mesboot0)
     ,@(alist-delete "gcc" (%boot-mesboot-core-inputs))))
 
-(define tar-mesboot
-  ;; Initial tar with support for xz compression.
-  (package
-    (inherit tar)
-    (name "tar-mesboot")
-    (version  "1.22")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/tar/tar-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "19nvix64y95n5v6rr5g9g3fn08zz85cb5anzd7csfv4a4sz9lw4y"))))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-mesboot0-inputs))
-    (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
-       #:configure-flags '("--build=i686-unknown-linux-gnu"
-                           "--host=i686-unknown-linux-gnu"
-                           "--disable-nls")
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key configure-flags #:allow-other-keys)
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (setenv "CONFIG_SHELL" shell)
-               (setenv "SHELL" shell)
-               (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv")
-               (setenv "gl_cv_func_rename_dest_works" "yes")
-               (format (current-error-port)
-                       "running ./configure ~a\n" (string-join configure-flags))
-               (apply invoke (cons "./configure" configure-flags)))))
-         (add-after 'unpack 'scripted-patch
-           (lambda _
-             (let* ((bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (substitute* "configure"
-                 ((" /bin/sh") shell)))
-             (substitute* "Makefile.in"
-               (("^SUBDIRS = doc") "SUBDIRS ="))))
-         (replace 'install
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bin (string-append out "/bin")))
-               (install-file "src/tar" bin)))))))))
-
-(define grep-mesboot
-  ;; The initial grep.
-  (package
-    (inherit grep)
-    (name "grep-mesboot")
-    (version "2.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/grep/grep-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1w862l80lgc5mxvpiy4cfwk761d6xxavn0m3xd2l7xs2kmzvp6lq"))))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-mesboot0-inputs))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:parallel-build? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-configure
-           (lambda _
-             (let* ((bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (substitute* "configure"
-                 ((" [|][|] ./config.status") " || sh ./config.status")))))
-         (replace 'install
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bin (string-append out "/bin")))
-               (install-file "grep" bin)
-               (symlink "grep" (string-append bin "/egrep"))
-               (symlink "grep" (string-append bin "/fgrep"))))))))))
-
 (define binutils-mesboot1
   (package
     (inherit binutils-mesboot0)
@@ -1523,46 +1207,7 @@ ac_cv_c_float_format='IEEE (little-endian)'
              "--build=i686-unknown-linux-gnu"
              "--host=i686-unknown-linux-gnu"
              "--with-sysroot=/"
-             ,(string-append "--prefix=" out))))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'setenv
-             (lambda _
-               (let* ((out (assoc-ref %outputs "out"))
-                      (bash (assoc-ref %build-inputs "bash"))
-                      (shell (string-append bash "/bin/bash")))
-                 (setenv "CONFIG_SHELL" shell))))))))))
-
-(define coreutils-mesboot0
-  (package
-    (inherit coreutils)
-    (name "coreutils-mesboot0")
-    ;; The latest .gz release of Coreutils is 8.13; which does not build with gcc-2.95.3:
-    ;; randperm.c: In function `sparse_swap':
-    ;; randperm.c:117: invalid lvalue in unary `&'
-    (version "5.0")                     ; 2003-04
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/coreutils/coreutils-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "10wq6k66i8adr4k08p0xmg87ff4ypiazvwzlmi7myib27xgffz62"))))
-    (native-inputs (%boot-mesboot0-inputs))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (arguments
-     `(#:implicit-inputs? #f
-       #:tests? #f                      ; WARNING: `perl' is needed, ...
-       #:parallel-build? #f
-       #:strip-binaries? #f   ; strip: unrecognized option `--only-keep-debug'
-       #:guile ,%bootstrap-guile
-       #:configure-flags
-       '("--disable-doc"
-         "LIBS=-lc -lnss_files -lnss_dns -lresolv"
-         "ac_cv_func_gethostbyname=no"
-         "gl_cv_func_rename_dest_works=yes")))))
+             ,(string-append "--prefix=" out))))))))
 
 (define gnu-make-mesboot
   (package
@@ -1596,150 +1241,11 @@ ac_cv_c_float_format='IEEE (little-endian)'
                     (bin (string-append out "/bin")))
                (install-file "make" bin)))))))))
 
-(define gawk-mesboot
-  (package
-    (inherit gawk)
-    (name "gawk-mesboot")
-    (version "3.1.8")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/gawk/gawk-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1"))))
-    (native-inputs `(,@(%boot-mesboot0-inputs)
-                     ("mesboot-headers" ,mesboot-headers)))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (arguments
-     `(#:implicit-inputs? #f
-       #:parallel-build? #f
-       #:guile ,%bootstrap-guile
-       #:configure-flags '("ac_cv_func_connect=no")
-       #:make-flags '("gawk")
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "./gawk" "--version")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin")))
-               (install-file "gawk" bin)
-               (symlink "gawk" (string-append bin "/awk"))))))))))
-
-(define sed-mesboot
-  (package
-    (inherit sed)
-    (name "sed-mesboot")
-    (version "4.0.6")                   ; 2003-04
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/sed/sed-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0861ij94cqc4vaaki6r2wlapwcmhpx4ggp4r70f46mb21a8fkvf1"))))
-    (native-inputs (%boot-mesboot0-inputs))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (propagated-inputs '())
-    (arguments
-     `(#:implicit-inputs? #f
-       #:parallel-build? #f
-       #:guile ,%bootstrap-guile
-       #:tests? #f                      ; 8to7 fails
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack '/bin/sh
-           (lambda _
-             (let* ((bash (assoc-ref %build-inputs "bash"))
-                    (shell (string-append bash "/bin/bash")))
-               (substitute* "testsuite/Makefile.tests"
-                 (("^SHELL = /bin/sh")
-                  (string-append "SHELL = " shell)))))))))))
-
-(define bash-mesboot
-  (package
-    (inherit bash-mesboot0)
-    (version "4.4")
-    (name "bash-mesboot")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/bash/bash-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq"))))
-    (inputs '())
-    (propagated-inputs '())
-    (native-inputs (%boot-mesboot0-inputs))
-    (outputs '("out"))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:parallel-build? #f
-       #:configure-flags
-       '("--build=i686-unknown-linux-gnu"
-         "--host=i686-unknown-linux-gnu"
-
-         "--without-bash-malloc"
-         "--disable-readline"
-         "--disable-history"
-         "--disable-help-builtin"
-         "--disable-progcomp"
-         "--disable-net-redirections"
-         "--disable-nls"
-
-         ;; Pretend 'dlopen' is missing so we don't build loadable
-         ;; modules and related code.
-         "ac_cv_func_dlopen=no")
-       #:make-flags '("bash")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'scripted-patch
-           (lambda _
-             (substitute* "shell.c"
-               ((";;") ";"))))
-         (add-before 'configure 'setenv
-           (lambda _
-             (setenv "AWK" "gawk")
-             (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv")
-             (setenv "gl_cv_func_rename_dest_works" "yes")))
-         (add-after 'configure 'configure-fixups
-           (lambda _
-             (let ((config.h (open-file "config.h" "a")))
-               (display (string-append "
-#define enable_hostname_completion(on_or_off) 0
-")
-                        config.h)
-               (close config.h))))
-         (replace 'check
-           (lambda _
-             (invoke "./bash" "--version")))
-         (replace 'install
-           (lambda _
-             (let* ((out (assoc-ref %outputs "out"))
-                    (bin (string-append out "/bin")))
-               (mkdir-p bin)
-               (copy-file "bash" (string-append bin "/bash"))
-               (copy-file "bash" (string-append bin "/sh"))))))))))
-
 (define (%boot-mesboot1-inputs)
-  `(("bash" ,bash-mesboot)
-    ("binutils" ,binutils-mesboot1)
-    ("coreutils" ,coreutils-mesboot0)
-    ("gawk" ,gawk-mesboot)
-    ("grep" ,grep-mesboot)
+  `(("binutils" ,binutils-mesboot1)
     ("make" ,gnu-make-mesboot)
-    ("sed" ,sed-mesboot)
-    ("tar" ,tar-mesboot)
     ,@(fold alist-delete (%boot-mesboot0-inputs)
-            '("bash" "binutils" "bootar" "coreutils" "gash"
-              "gawk" "grep" "guile" "make" "sed" "tar"))))
+            '("binutils" "make"))))
 
 (define gmp-boot
   (let ((version "4.3.2"))
@@ -1933,57 +1439,22 @@ ac_cv_c_float_format='IEEE (little-endian)'
   `(("gcc" ,gcc-mesboot1)
     ,@(alist-delete "gcc" (%boot-mesboot1-inputs))))
 
-(define xz-mesboot
-  ;; Finally, we can build xz.
-  (package
-    (inherit xz)
-    (name "xz-mesboot")
-    (version "5.0.0")
-    (source (bootstrap-origin
-             (origin
-               (method url-fetch)
-               (uri (list (string-append "http://tukaani.org/xz/xz-" version
-                                         ".tar.gz")
-                          (string-append "http://multiprecision.org/guix/xz-"
-                                         version ".tar.gz")))
-               (sha256
-                (base32
-                 "0kf40ggbs1vaaj5s9k4csycahzqcf65n20pa6lngqhm6j0cj3agb")))))
-    (supported-systems '("i686-linux" "x86_64-linux"))
-    (inputs '())
-    (outputs '("out"))
-    (propagated-inputs '())
-    (native-inputs (%boot-mesboot2-inputs))
-    (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:parallel-build? #f
-       #:configure-flags
-       `("--disable-assembler"
-         "--disable-shared"
-         "--enable-small"
-         "--disable-threads"
-         "--disable-xzdec"
-         "--disable-lzmadec"
-         "--disable-lzmainfo"
-         "--disable-lzma-links"
-         "--disable-scripts"
-         "--disable-doc"
-         "--disable-nls"
-         "--disable-symbol-versions"
-         ;; configure disqualifies BASH, CPP, GCC and GREP
-         ;; all of which seem fine for the build
-         "ac_cv_prog_cc_c99=-std=gnu9x"
-         "ac_cv_path_GREP=grep"
-         "gl_cv_posix_shell=bash"
-         "ac_cv_have_decl_optreset=no"
-         "CPPFLAGS=-D__GNUC__=1")))))
-
 (define hello-mesboot
-  ;; Check for Scheme-only bootstrap.
+  ;; Check for Scheme-only bootstrap.  Note that newer versions of Hello
+  ;; break due to the way that newer versions of Gnulib handle
+  ;; "limits.h".  Hence, we stick to 2.10.
   (package
     (inherit hello)
     (name "hello-mesboot")
+    (version "2.10")
+    (source
+     (origin
+       (inherit (package-source hello))
+       (uri (string-append "mirror://gnu/hello/hello-" version
+                           ".tar.gz"))
+       (sha256
+        (base32
+         "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
     (supported-systems '("i686-linux" "x86_64-linux"))
     (inputs '())
     (propagated-inputs '())
@@ -2003,76 +1474,51 @@ ac_cv_c_float_format='IEEE (little-endian)'
 
 (define binutils-mesboot
   (package
-    (inherit binutils)
+    (inherit binutils-mesboot1)
     (name "binutils-mesboot")
-    (version "2.20.1a")
-    (source (bootstrap-origin
-             (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/binutils/binutils-"
-                                   version ".tar.bz2"))
-               (patches (search-patches "binutils-boot-2.20.1a.patch"))
-               (sha256
-                (base32
-                 "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi")))))
+    (native-inputs (%boot-mesboot2-inputs))))
+
+;; Sadly we have to introduce Gawk here.  The "versions.awk" script of
+;; glibc 2.16.0 is too complicated for Gash-Utils.  This is the version
+;; of Gawk used previously during bootstrap.  It's possible that a newer
+;; version would work, too, but this one was already ready to go.
+(define gawk-mesboot
+  (package
+    (inherit gawk)
+    (name "gawk-mesboot")
+    (version "3.1.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gawk/gawk-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1"))))
+    (native-inputs (%boot-mesboot2-inputs))
+    (supported-systems '("i686-linux" "x86_64-linux"))
     (inputs '())
     (propagated-inputs '())
-    (native-inputs `(("xz" ,xz-mesboot)
-                     ,@(%boot-mesboot2-inputs)))
-    (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
-       `("CC=gcc"
-         "CXX=false"
-         "RANLIB=true"
-         "--disable-doc"
-         "--disable-nls"
-         "--disable-shared"
-         "--disable-werror"
-         "--build=i686-unknown-linux-gnu"
-         "--host=i686-unknown-linux-gnu"
-         "--with-sysroot=/"
-         ;; checking for grep that handles long lines and -e
-         "ac_cv_path_GREP=grep")
-       ;; FIXME: ac_cv_path_GREP=grep doesn't seem to be forwarded to
-       ;; cascading configure's?
-       #:make-flags '("ac_cv_path_GREP=grep")
+       #:guile ,%bootstrap-guile
+       #:configure-flags '("ac_cv_func_connect=no")
+       #:make-flags '("gawk")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'scripted-patch
+         (replace 'check
            (lambda _
-             ;; sed-mesboot0 cannot build these
-             (copy-file "binutils/Makefile.in" "binutils/Makefile.in.orig")
-             (substitute* "binutils/Makefile.in"
-               ;; binutils/binutils uses an amazingly complex install
-               ;; command, using FOR, SED, READ, IF, ECHO, SED, SED, AWK,
-               ;; READ, and then LIBTOOL (to do something like
-               ;; `mkdir $DESTDIR$bindir; cp readline $DESTDIR$bindir ...')
-
-               ;; Some tool [debugme!] cannot handle two escaped newlines
-               ;; (bash?), and the install stops after $(am__EXEEXT_11)
-               ;; ("objcopy"), so $(am__EXEEXT_13) ("readelf") and others do
-               ;; not get installed.  Remove the stray newline:
-               (("^\t@BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ .*") ""))
-             (substitute* "opcodes/Makefile.in"
-               (("^SUBDIRS = [.] po") "SUBDIRS = ."))
-             (substitute* "binutils/Makefile.in"
-               (("^SUBDIRS = doc po") "SUBDIRS ="))
-             (substitute* "gas/Makefile.in"
-               (("^SUBDIRS = doc po") "SUBDIRS ="))
-             (substitute* "gprof/Makefile.in"
-               (("^SUBDIRS = po") "SUBDIRS ="))
-             (substitute* "ld/Makefile.in"
-               (("^SUBDIRS = po") "SUBDIRS =")))))))))
+             (invoke "./gawk" "--version")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (install-file "gawk" bin)
+               (symlink "gawk" (string-append bin "/awk"))))))))))
 
 (define (%boot-mesboot3-inputs)
   `(("binutils" ,binutils-mesboot)
-    ("xz" ,xz-mesboot)
+    ("gawk" ,gawk-mesboot)
     ,@(alist-delete "binutils" (%boot-mesboot2-inputs))))
 
 (define glibc-headers-mesboot
@@ -2149,6 +1595,11 @@ ac_cv_c_float_format='IEEE (little-endian)'
                       (out (assoc-ref outputs "out")))
                   (apply invoke "make" make-flags)
                   (copy-recursively kernel-headers out))))
+            (add-before 'configure 'remove-bashism
+              (lambda _
+                (substitute* "sysdeps/unix/make-syscalls.sh"
+                  (("\\$[{]vdso_symver//\\./_[}]")
+                   "$(echo $vdso_symver | sed -e 's/\\./_/g')"))))
             (replace 'configure
               (lambda* (#:key configure-flags #:allow-other-keys)
                 (format (current-error-port) "running ../configure ~a\n"
@@ -2194,6 +1645,17 @@ SHELL := " shell "
                 (list (string-append "SHELL=" bash "/bin/sh"))))
            ((#:phases phases)
             #~(modify-phases #$phases
+                (add-after 'unpack 'simplify-intl-tests
+                  (lambda _
+                    ;; The bootstrap Guile (2.0.9) crashes trying to
+                    ;; perform a regex on non-ASCII text.  This gets
+                    ;; triggered by 'intl/po2test.sed' running over
+                    ;; 'po/de.po'.  If we ever remove the bootstrap
+                    ;; Guile or add pure-Scheme regex to Gash, this can
+                    ;; be removed.
+                    (substitute* '("catgets/Makefile"
+                                   "intl/Makefile")
+                      (("de\\.po") "en_GB.po"))))
                 (replace 'install
                   (lambda* (#:key outputs make-flags #:allow-other-keys)
                     (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers"))
@@ -2215,8 +1677,8 @@ SHELL := " shell "
     (name "gcc-mesboot1-wrapper")
     (source #f)
     (inputs '())
-    (native-inputs `(("bash" ,bash-mesboot)
-                     ("coreutils" ,coreutils-mesboot0)
+    (native-inputs `(("bash" ,gash-boot)
+                     ("coreutils" ,gash-utils-boot)
                      ("libc" ,glibc-mesboot)
                      ("gcc" ,gcc-mesboot1)))
     (arguments
@@ -2354,8 +1816,8 @@ exec " gcc "/bin/" program
     (version (package-version gcc-mesboot))
     (source #f)
     (inputs '())
-    (native-inputs `(("bash" ,bash-mesboot)
-                     ("coreutils" ,coreutils-mesboot0)
+    (native-inputs `(("bash" ,gash-boot)
+                     ("coreutils" ,gash-utils-boot)
                      ("libc" ,glibc-mesboot)
                      ("gcc" ,gcc-mesboot)))))
 
@@ -2364,24 +1826,74 @@ exec " gcc "/bin/" program
     ("gcc" ,gcc-mesboot)
     ,@(fold alist-delete (%boot-mesboot4-inputs) '("gcc" "gcc-wrapper"))))
 
-(define coreutils-mesboot
+(define (mesboot-package name pkg)
   (package
-    (inherit coreutils)
-    (name "coreutils-mesboot")
-    (source (bootstrap-origin (package-source coreutils)))
+    (inherit pkg)
+    (name name)
+    (source (bootstrap-origin (package-source pkg)))
     (native-inputs (%boot-mesboot5-inputs))
     (supported-systems '("i686-linux" "x86_64-linux"))
     (inputs '())
     (propagated-inputs '())
     (arguments
-     `(#:implicit-inputs? #f
-       #:guile ,%bootstrap-guile
-       #:tests? #f))))
+     (ensure-keyword-arguments (package-arguments pkg)
+                               `(#:implicit-inputs? #f
+                                 #:guile ,%bootstrap-guile
+                                 #:tests? #f)))))
+
+;; These packages are needed to complete the rest of the bootstrap.
+;; In the future, Gash et al. could handle it directly, but it's not
+;; ready yet.
+(define bash-mesboot (mesboot-package "bash-mesboot" static-bash))
+(define sed-mesboot (mesboot-package "sed-mesboot" sed))
+
+;; "sed" from Gash-Utils lacks the 'w' command as of 0.2.0.
+(define coreutils-mesboot
+  (let ((pkg (mesboot-package "coreutils-mesboot" coreutils)))
+    (package
+      (inherit pkg)
+      (native-inputs
+       `(("sed" ,sed-mesboot)
+         ,@(package-native-inputs pkg))))))
+
+(define grep-mesboot
+  (let ((pkg (mesboot-package "grep-mesboot" grep)))
+    (package
+      (inherit pkg)
+      (native-inputs
+       `(("sed" ,sed-mesboot)
+         ,@(package-native-inputs pkg))))))
+
+;; The XZ implementation in Bootar cannot decompress 'tar'.
+(define xz-mesboot
+  (let ((pkg (mesboot-package "xz-mesboot" xz)))
+    (package
+      (inherit pkg)
+      (arguments
+       (ensure-keyword-arguments (package-arguments pkg)
+                                 ;; XXX: This fails even though the
+                                 ;; actual runpaths seem fine.
+                                 `(#:validate-runpath? #f))))))
+
+;; We don't strictly need Tar here, but it allows us to get rid of
+;; Bootar and Gash-Utils and continue with the standard GNU tools.
+(define tar-mesboot
+  (let ((pkg (mesboot-package "tar-mesboot" tar)))
+    (package
+      (inherit pkg)
+      (native-inputs
+       `(("xz" ,xz-mesboot)
+         ,@(package-native-inputs pkg))))))
 
 (define (%boot-mesboot6-inputs)
-  `(("coreutils" ,coreutils-mesboot)
+  `(("bash" ,bash-mesboot)
+    ("coreutils" ,coreutils-mesboot)
+    ("grep" ,grep-mesboot)
+    ("sed" ,sed-mesboot)
+    ("tar" ,tar-mesboot)
+    ("xz" ,xz-mesboot)
     ,@(fold alist-delete (%boot-mesboot5-inputs)
-            '("coreutils" "kernel-headers"))))
+            '("bash" "coreutils" "bootar" "kernel-headers"))))
 
 (define (%bootstrap-inputs+toolchain)
   ;; The traditional bootstrap-inputs.  For the i686-linux, x86_64-linux
@@ -2552,6 +2064,7 @@ exec " gcc "/bin/" program
        #:implicit-inputs? #f
        #:guile ,%bootstrap-guile
        #:configure-flags '("--disable-bzlib")
+       #:make-flags '("CFLAGS+=-std=c11")
        #:strip-binaries? #f
        #:validate-runpath? #f
        ,@(package-arguments file)))))
@@ -2707,7 +2220,13 @@ exec " gcc "/bin/" program
                       (lambda _
                         (substitute* "libstdc++-v3/configure"
                           (("g\\+\\+ -v") "true"))))))))
-             (_ (package-arguments lib)))))
+             (_ (package-arguments lib)))
+
+         ;; Explicitly add #:modules so MAKE-LIBSTDC++ can be changed
+         ;; without a full bootstrap.
+         #:modules ((guix build gnu-build-system)
+                    (guix build utils))))
+
       (inputs (%boot0-inputs))
       (native-inputs '()))))
 
@@ -2760,7 +2279,18 @@ exec " gcc "/bin/" program
     (inherit gcc)
     (name "gcc-cross-boot0")
     (outputs (delete "debug" (package-outputs gcc)))
-    (source (bootstrap-origin (package-source gcc)))
+    (source
+     (bootstrap-origin
+      (origin
+        (inherit (package-source gcc))
+        (snippet
+         #~(begin
+             ;; XXX: The GCC test suite contains files with non-ASCII file
+             ;; names, which cannot be repacked by BOOTSTRAP-ORIGIN.  Nor
+             ;; can it be deleted from Guile, so resort to this evil hack.
+             #$(origin-snippet (package-source gcc))
+             (system* #$(file-append coreutils-boot0 "/bin/rm") "-rf"
+                      "gcc/testsuite/go.test/test/fixedbugs/issue27836.dir"))))))
     (arguments
      `(#:guile ,%bootstrap-guile
        #:implicit-inputs? #f
@@ -2916,7 +2446,9 @@ exec " gcc "/bin/" program
     (arguments
      `(#:guile ,%bootstrap-guile
        #:implicit-inputs? #f
-       ,@(package-arguments m4)))))
+       ,@(package-arguments m4)
+       ;; Ignore test failure in gnulib for armhf/aarch64.
+       #:tests? ,(not (target-arm?))))))
 
 (define bison-boot0
   ;; This Bison is needed to build MiG so we need it early in the process.
@@ -2995,7 +2527,18 @@ memoized as a function of '%current-system'."
     (arguments
      `(#:guile ,%bootstrap-guile
        #:implicit-inputs? #f
-       ,@(package-arguments linux-libre-headers)))
+       ,@(substitute-keyword-arguments (package-arguments linux-libre-headers)
+           ((#:phases phases)
+            `(modify-phases ,phases
+               (add-after 'unpack 'lower-version-requirements
+                 (lambda _
+                   ;; Pacify version checks so it works with the bootstrap
+                   ;; toolchain, since we are not building the full kernel.
+                   (substitute* "scripts/min-tool-version.sh"
+                     (("echo 5\\.1\\.0")  ;GCC
+                      "echo 4.8.4")
+                     (("echo 2\\.23\\.0") ;binutils
+                      "echo 2.20.1")))))))))
     (native-inputs
      `(("perl" ,perl-boot0)
 
@@ -3090,6 +2633,7 @@ memoized as a function of '%current-system'."
   ;; Also, use (%BOOT0-INPUTS) to avoid building Perl once more.
   (package
     (inherit texinfo)
+    (source (bootstrap-origin (package-source texinfo)))
     (native-inputs '())
     (inputs `(,@(%boot0-inputs)
               ("perl" ,perl-boot0)))
@@ -3157,8 +2701,7 @@ memoized as a function of '%current-system'."
      `(,@(%boot0-inputs)
        ("expat" ,expat-sans-tests)))              ;remove OpenSSL, zlib, etc.
     (native-inputs                                ;and pkg-config
-     `(("sitecustomize.py" ,(local-file (search-auxiliary-file
-                                         "python/sitecustomize.py")))))
+     `())
     (arguments
      `(#:implicit-inputs? #f
        #:guile ,%bootstrap-guile
@@ -3184,6 +2727,13 @@ memoized as a function of '%current-system'."
                ;; Prevent the 'ossaudiodev' extension from being
                ;; built, since it requires Linux headers.
                (("'linux', ") ""))))
+         (add-after 'install 'remove-tests
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file-recursively
+               (string-append (assoc-ref outputs "out")
+                              "/lib/python"
+                              ,(version-major+minor version)
+                              "/test"))))
          ,@(if (hurd-system?)
                `((add-before 'build 'fix-regen
                    (lambda* (#:key inputs #:allow-other-keys)
@@ -3191,11 +2741,14 @@ memoized as a function of '%current-system'."
                        (substitute* "Lib/plat-generic/regen"
                          (("/usr/include/")
                           (string-append libc "/include/")))))))
-               '())
-         (add-after 'install 'install-sitecustomize.py
-           ,(customize-site version)))))
+               '()))))
     (native-search-paths
-     (list (guix-pythonpath-search-path version)))))
+     (list (search-path-specification
+            (variable "PYTHONPATH")
+            (files (list (string-append
+                           "lib/python"
+                           (version-major+minor version)
+                           "/site-packages"))))))))
 
 (define/system-dependent ld-wrapper-boot0
   ;; The first 'ld' wrapper, defined with 'define/system-dependent' because
@@ -3462,7 +3015,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
 (define libstdc++
   ;; Intermediate libstdc++ that will allow us to build the final GCC
   ;; (remember that GCC-BOOT0 cannot build libstdc++.)
-  (let ((lib (make-libstdc++ gcc)))
+  (let ((lib (make-libstdc++ gcc-boot0)))
     (package
       (inherit lib)
       (source (bootstrap-origin (package-source lib)))
@@ -3492,6 +3045,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   ;; Zlib used by GCC-FINAL.
   (package
     (inherit zlib)
+    (source (bootstrap-origin (package-source zlib)))
     (arguments
      `(#:guile ,%bootstrap-guile
        #:implicit-inputs? #f
@@ -3529,6 +3083,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
        ;; positive, so turn it off.
        #:validate-runpath? #f
 
+       ;; Additional modules for the libstdc++ phase below.
+       #:modules ((srfi srfi-1)
+                  (srfi srfi-26)
+                  ,@%gnu-build-system-modules)
+
        ,@(substitute-keyword-arguments (package-arguments gcc)
            ((#:make-flags flags)
             ;; Since $LIBRARY_PATH is not honored, add the relevant flags.
@@ -3566,7 +3125,26 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
                                            (package-full-name lib "-")
                                            char-set:letter)
                                          ,(package-name lib)))
-                             (list gmp-6.0 mpfr mpc))))))))))
+                             (list gmp-6.0 mpfr mpc)))))
+                (add-after 'unpack 'fix-build-with-external-libstdc++
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (let ((libstdc++ (assoc-ref inputs "libstdc++")))
+                      ;; Fix a regression in GCC 11 where the libstc++ input
+                      ;; shadows glibc headers when building libstdc++.  An
+                      ;; upstream fix was added in GCC 11.3.0, but it only
+                      ;; hides system include directories, not those on
+                      ;; CPLUS_INCLUDE_PATH.  See discussion at
+                      ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100017>.
+                      (substitute* "libstdc++-v3/src/c++17/Makefile.in"
+                        (("AM_CXXFLAGS = ")
+                         (string-append "CPLUS_INCLUDE_PATH = "
+                                        (string-join
+                                         (remove (cut string-prefix? libstdc++ <>)
+                                                 (string-split
+                                                  (getenv "CPLUS_INCLUDE_PATH")
+                                                  #\:))
+                                         ":")
+                                        "\nAM_CXXFLAGS = ")))))))))))
 
     ;; 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
@@ -3877,10 +3455,10 @@ is the GNU Compiler Collection.")
   (make-gcc-toolchain gcc-9))
 
 (define-public gcc-toolchain-10
-  gcc-toolchain)
+  (make-gcc-toolchain gcc-10))
 
 (define-public gcc-toolchain-11
-  (make-gcc-toolchain gcc-11))
+  gcc-toolchain)
 
 (define-public gcc-toolchain-12
   (make-gcc-toolchain gcc-12))
@@ -3888,7 +3466,7 @@ is the GNU Compiler Collection.")
 (define-public gcc-toolchain-aka-gcc
   ;; It's natural for users to try "guix install gcc".  This package
   ;; automatically "redirects" them to 'gcc-toolchain'.
-  (deprecated-package "gcc" gcc-toolchain-10))
+  (deprecated-package "gcc" gcc-toolchain-11))
 
 
 (define-public gdc-toolchain-10
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 684979018c..501db8f38b 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2019, 2020 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2016, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2016, 2018-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
@@ -35,6 +35,7 @@
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Ahmad Jarara <git@ajarara.io>
+;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -99,53 +100,55 @@
 (define-public zlib
   (package
     (name "zlib")
-    (version "1.2.11")
+    (version "1.2.12")
     (source
      (origin
-      (method url-fetch)
-      (uri (list (string-append "http://zlib.net/zlib-"
+       (method url-fetch)
+       (uri (list (string-append "http://zlib.net/zlib-"
                                  version ".tar.gz")
-                 (string-append "mirror://sourceforge/libpng/zlib/"
-                                version "/zlib-" version ".tar.gz")))
-      (sha256
-       (base32
-        "18dighcs333gsvajvvgqp8l4cx7h1x7yx9gd5xacnk80spyykrf3"))))
+                  (string-append "mirror://sourceforge/libpng/zlib/"
+                                 version "/zlib-" version ".tar.gz")))
+       (patches (search-patches "zlib-cc.patch"
+                                "zlib-correct-crc32-inputs.patch"))
+       (sha256
+        (base32
+         "1n9na4fq4wagw1nzsfjr6wyly960jfa94460ncbf6p1fac44i14i"))))
     (build-system gnu-build-system)
     (outputs '("out" "static"))
     (arguments
-     `(#:make-flags
-       ,(if (target-mingw?)
-            `(list ,(string-append "PREFIX=" (%current-target-system) "-")
-                   "BINARY_PATH = $(prefix)/bin"
-                   "INCLUDE_PATH = $(prefix)/include"
-                   "LIBRARY_PATH = $(prefix)/lib"
-                   "SHARED_MODE = 1"
-                   (string-append "prefix = " (assoc-ref %outputs "out")))
-            ''())
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Zlib's home-made `configure' fails when passed
-             ;; extra flags like `--enable-fast-install', so we need to
-             ;; invoke it with just what it understand.
-             (let ((out (assoc-ref outputs "out")))
-               ;; 'configure' doesn't understand '--host'.
-               ,@(if (%current-target-system)
-                     `((setenv "CHOST" ,(%current-target-system)))
-                     '())
-               ,@(if (target-mingw?)
-                     `((rename-file "win32/Makefile.gcc" "Makefile"))
-                     `((invoke "./configure"
-                               (string-append "--prefix=" out)))))))
-         (add-after 'install 'move-static-library
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (static (assoc-ref outputs "static")))
-               (with-directory-excursion (string-append out "/lib")
-                 (install-file "libz.a" (string-append static "/lib"))
-                 (delete-file "libz.a")
-                 #t)))))))
+     (list
+      #:make-flags
+      (if (target-mingw?)
+          #~(list #$(string-append "PREFIX=" (%current-target-system) "-")
+                  "BINARY_PATH = $(prefix)/bin"
+                  "INCLUDE_PATH = $(prefix)/include"
+                  "LIBRARY_PATH = $(prefix)/lib"
+                  "SHARED_MODE = 1"
+                  (string-append "prefix = " #$output))
+          #~'())
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda _
+              ;; Zlib's home-made `configure' fails when passed
+              ;; extra flags like `--enable-fast-install', so we need to
+              ;; invoke it with just what it understand.
+              (setenv "CC" #$(cc-for-target))
+              ;; 'configure' doesn't understand '--host'.
+              #$@(if (%current-target-system)
+                     #~((setenv "CHOST" #$(%current-target-system)))
+                     #~())
+
+              #$@(if (target-mingw?)
+                     #~((rename-file "win32/Makefile.gcc" "Makefile"))
+                     #~((invoke "./configure"
+                                (string-append "--prefix=" #$output))))))
+          (add-after 'install 'move-static-library
+            (lambda _
+              (with-directory-excursion (string-append #$output "/lib")
+                (install-file "libz.a" (string-append #$output:static
+                                                      "/lib"))
+                (delete-file "libz.a")))))))
     (home-page "https://zlib.net/")
     (synopsis "Compression library")
     (description
@@ -244,43 +247,28 @@ adding and extracting files to/from a tar archive.")
 (define-public gzip
   (package
    (name "gzip")
-   (version "1.10")
+   (version "1.12")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gzip/gzip-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1h6p374d3j8d4cdfydzls021xa2yby8myc0h8d6m8bc7k6ncq9c4"))))
+              "0mhrx5wk9gazmxdw7vmbpg036yzqqhsww6h12kwf2dzn37jh6pnf"))))
    (build-system gnu-build-system)
    (synopsis "General file (de)compression (using lzw)")
    (arguments
     ;; FIXME: The test suite wants `less', and optionally Perl.
     '(#:tests? #f
+      #:configure-flags '("ac_cv_prog_LESS=\"less\"")
       #:phases
       (modify-phases %standard-phases
-        (add-after 'unpack 'patch-for-glibc-2.28
-          (lambda _
-            ;; Adjust the bundled gnulib to work with glibc 2.28.  See e.g.
-            ;; "m4-gnulib-libio.patch".  This is a phase rather than patch
-            ;; or snippet to work around <https://bugs.gnu.org/32347>.
-            (substitute* (find-files "lib" "\\.c$")
-              (("#if defined _IO_ftrylockfile")
-               "#if defined _IO_EOF_SEEN"))
-            (substitute* "lib/stdio-impl.h"
-              (("^/\\* BSD stdio derived implementations")
-               (string-append "#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n"
-                              "# define _IO_IN_BACKUP 0x100\n"
-                              "#endif\n\n"
-                              "/* BSD stdio derived implementations")))
-            #t))
         (add-after 'unpack 'use-absolute-name-of-gzip
           (lambda* (#:key outputs #:allow-other-keys)
             (substitute* "gunzip.in"
-              (("exec gzip")
+              (("exec 'gzip'")
                (string-append "exec " (assoc-ref outputs "out")
-                              "/bin/gzip")))
-            #t)))))
+                              "/bin/gzip"))))))))
    (description
     "GNU Gzip provides data compression and decompression utilities; the
 typical extension is \".gz\".  Unlike the \"zip\" format, it compresses a single
@@ -496,7 +484,7 @@ compressed with pbzip2 can be decompressed with bzip2).")
 (define-public xz
   (package
    (name "xz")
-   (version "5.2.5")
+   (version "5.2.6")
    (source (origin
             (method url-fetch)
             (uri (list (string-append "http://tukaani.org/xz/xz-" version
@@ -505,7 +493,7 @@ compressed with pbzip2 can be decompressed with bzip2).")
                                       version ".tar.gz")))
             (sha256
              (base32
-              "045s9agl3bpv3swlwydhgsqh7791957vmgw2plw8f1rks07r3x7n"))))
+              "185kj56a996d04d943xisvpifvnsbr7iplyf2nyjxkbvw6z5l452"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
@@ -623,14 +611,14 @@ some compression ratio).")
 (define-public lzip
   (package
     (name "lzip")
-    (version "1.22")
+    (version "1.23")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/lzip/lzip-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0j59hx72258334rmkwn57ahr6s69nlrx0a5ip1jw2fbiwr12sd63"))))
+               "03985xc696210irdzv475mlvf30ylahni3msanfz4ppivm3w14j7"))))
     (build-system gnu-build-system)
     (home-page "https://www.nongnu.org/lzip/lzip.html")
     (synopsis "Lossless data compressor based on the LZMA algorithm")
@@ -1590,28 +1578,21 @@ or junctions, and always follows hard links.")
 (define-public zstd
   (package
     (name "zstd")
-    (version "1.5.0")
+    (version "1.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/facebook/zstd/releases/download/"
                            "v" version "/zstd-" version ".tar.gz"))
        (sha256
-        (base32 "150y541303vnvfhd8wkbih00lfvvm98rd12yijwlbkqzg3xgp52i"))))
+        (base32 "1l1zm1imcc2ixayykyh4y421shdj3pzp7g2xm2k2js8jmipxahkw"))))
     (build-system gnu-build-system)
-    (outputs '("out"                    ;1.2MiB executables and documentation
+    (outputs '("out"                    ;1.5MiB executables and documentation
                "lib"                    ;1.2MiB shared library and headers
                "static"))               ;1.2MiB static library
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'remove-bogus-check
-           (lambda _
-             ;; lib/Makefile falsely claims that no .pc file can be created.
-             (substitute* "lib/Makefile"
-               (("error configured .*dir ")
-                "true "))
-             #t))
          (add-after 'unpack 'patch-command-file-names
            ;; Don't require hard requirements to be in $PATH.
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1768,7 +1749,6 @@ Compression ratios of 2:1 to 3:1 are common for text files.")
   (package (inherit zip)
     (name "unzip")
     (version "6.0")
-    (replacement unzip/fixed)
     (source
      (origin
        (method url-fetch)
@@ -1814,7 +1794,9 @@ Compression ratios of 2:1 to 3:1 are common for text files.")
                                 "unzip-zipbomb-part3.patch"
 
                                 ;; https://github.com/madler/unzip/issues/2
-                                "unzip-32bit-zipbomb-fix.patch"))))
+                                "unzip-32bit-zipbomb-fix.patch"
+
+                                "unzip-CVE-2022-0529+CVE-2022-0530.patch"))))
     (build-system gnu-build-system)
     ;; no inputs; bzip2 is not supported, since not compiled with BZ_NO_STDIO
     (arguments
@@ -1859,15 +1841,6 @@ recreates the stored directory structure by default.")
     (license (license:non-copyleft "file://LICENSE"
                                    "See LICENSE in the distribution."))))
 
-(define unzip/fixed
-  (package (inherit unzip)
-    (source
-     (origin
-       (inherit (package-source unzip))
-       (patches (append
-                  (origin-patches (package-source unzip))
-                  (search-patches "unzip-CVE-2022-0529+CVE-2022-0530.patch")))))))
-
 (define-public ziptime
   (let ((commit "2a5bc9dfbf7c6a80e5f7cb4dd05b4036741478bc")
         (revision "0"))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5cdb37075e..123c677938 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -31497,13 +31497,13 @@ package online.")
             texlive-amsmath
             texlive-booktabs
             texlive-etoolbox
-            texlive-generic-iftex
-            texlive-latex-fancyhdr
-            texlive-latex-fancyvrb
+            texlive-iftex
+            texlive-fancyhdr
+            texlive-fancyvrb
             texlive-latex-geometry
-            texlive-latex-graphics
+            texlive-graphics
             texlive-latex-threeparttable
-            texlive-latex-titlesec
+            texlive-titlesec
             texlive-latex-upquote
             texlive-listings
             texlive-polyglossia
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 9dcffd8dd4..0158e03032 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -898,7 +898,7 @@ SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.")
 (define-public rhash
   (package
     (name "rhash")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
@@ -907,7 +907,7 @@ SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.")
        (file-name (string-append "rhash-" version ".tar.gz"))
        (sha256
         (base32
-         "0qpc1fq7gdxxl11zya1gqhl9628jjk3x60q9sna43w0yz7sh03b0"))))
+         "0glaghjvwh9ziiqf599v0fdr6jrgc7lcnriq0h7r41k3jrkglh0y"))))
     (build-system gnu-build-system)
     (arguments
      (list #:configure-flags
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index d3b1f179b6..9ed1c87caf 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages groff)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -129,109 +130,102 @@ driver is known to work with these printers:
 (define-public cups-filters
   (package
     (name "cups-filters")
-    (version "1.28.9")
-    (source(origin
-              (method url-fetch)
-              (uri
-               (string-append "https://openprinting.org/download/cups-filters/"
-                              "cups-filters-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1bk0x1rrb8wqbhh5c979ppgy6s2kqss8mjdlahgcjvd79wm3fs9g"))
-              (modules '((guix build utils)))
-              (snippet
-               ;; install backends, banners and filters to cups-filters output
-               ;; directory, not the cups server directory
-               '(begin
-                  (substitute* "Makefile.in"
-                    (("CUPS_DATADIR = @CUPS_DATADIR@")
-                     "CUPS_DATADIR = $(PREFIX)/share/cups")
-                    (("pkgcupsserverrootdir = \\$\\(CUPS_SERVERROOT\\)")
-                     "pkgcupsserverrootdir = $(PREFIX)")
-                    ;; Choose standard directories notably so that binaries are
-                    ;; stripped.
-                    (("pkgbackenddir = \\$\\(CUPS_SERVERBIN\\)/backend")
-                     "pkgbackenddir = $(PREFIX)/lib/cups/backend")
-                    (("pkgfilterdir = \\$\\(CUPS_SERVERBIN\\)/filter")
-                     "pkgfilterdir = $(PREFIX)/lib/cups/filter"))
-                  ;; Find bannertopdf data such as the print test page in our
-                  ;; output directory, not CUPS's prefix.
-                  (substitute* "configure"
-                    (("\\{CUPS_DATADIR\\}/data")
-                     "{prefix}/share/cups/data"))
-                  #t))))
+    (version "1.28.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://openprinting.org/download/cups-filters/"
+                       "cups-filters-" version ".tar.xz"))
+       (sha256
+        (base32 "12s7s2jgnh4q7ws7r2is6xp3pqq818jhnm4vpyzyywmvkxvfq1x9"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Install backends, banners and filters to cups-filters output
+        ;; directory, not the cups server directory.
+        #~(begin
+            (substitute* "Makefile.in"
+              (("CUPS_DATADIR = @CUPS_DATADIR@")
+               "CUPS_DATADIR = $(PREFIX)/share/cups")
+              (("pkgcupsserverrootdir = \\$\\(CUPS_SERVERROOT\\)")
+               "pkgcupsserverrootdir = $(PREFIX)")
+              ;; Choose standard directories notably so that binaries are
+              ;; stripped.
+              (("^pkg(.*)dir = \\$\\(CUPS_SERVERBIN\\)/(.*)" _ type suffix)
+               (format #f "pkg~adir = $(PREFIX)/lib/cups/~a" type suffix)))
+            ;; Find bannertopdf data such as the print test page in our
+            ;; output directory, not CUPS's prefix.
+            (substitute* "configure"
+              (("\\{CUPS_DATADIR\\}/data")
+               "{prefix}/share/cups/data"))))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list (string-append "PREFIX=" %output))
-       #:configure-flags
-       `("--disable-driverless" ; TODO: enable this
-         "--disable-mutool"     ; depends on yet another PDF library (mupdf)
-
-         ;; Look for the "domain socket of CUPS" in /var/run/cups.
-         "--localstatedir=/var"
-
-         ;; Free software for the win.
-         "--with-acroread-path=evince"
-
-         ,(string-append "--with-test-font-path="
-                         (assoc-ref %build-inputs "font-dejavu")
-                         "/share/fonts/truetype/DejaVuSans.ttf")
-         ,(string-append "--with-gs-path="
-                         (assoc-ref %build-inputs "ghostscript")
-                         "/bin/gsc")
-         ,(string-append "--with-shell="
-                         (assoc-ref %build-inputs "bash")
-                         "/bin/bash")
-         ,(string-append "--with-rcdir="
-                         (assoc-ref %outputs "out") "/etc/rc.d"))
-
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'patch-foomatic-hardcoded-file-names
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Foomatic has hardcoded file names we need to fix.
-                      (let ((out (assoc-ref outputs "out"))
-                            (gs  (assoc-ref inputs "ghostscript")))
-                        (substitute* "filter/foomatic-rip/foomaticrip.c"
-                          (("/usr/local/lib/cups/filter")
-                           (string-append out "/lib/cups/filter")))
-                        #t)))
-                  (add-after 'install 'wrap-filters
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Some filters expect to find things in $PATH.  We cannot
-                      ;; just hard-code all absolute file names in the source
-                      ;; because foomatic-rip, for example, has tests like
-                      ;; 'startswith(cmd, "gs")'.
-                      (let ((out         (assoc-ref outputs "out"))
-                            (ghostscript (assoc-ref inputs "ghostscript"))
-                            (grep        (assoc-ref inputs "grep")))
-                        (for-each (lambda (file)
-                                    (wrap-program file
-                                      `("PATH" ":" prefix
-                                        (,(string-append ghostscript "/bin:"
-                                                         grep "/bin")))))
-                                  (find-files (string-append
-                                               out "/lib/cups/filter")))
-                        #t))))))
+     (list #:make-flags
+           #~(list (string-append "PREFIX=" #$output))
+           #:configure-flags
+           #~(list "--disable-mutool"  ; needs yet another PDF library (mupdf)
+
+                   ;; Look for the "domain socket of CUPS" in /var/run/cups.
+                   "--localstatedir=/var"
+
+                   ;; Free software for the win.
+                   "--with-acroread-path=evince"
+
+                   (string-append "--with-test-font-path="
+                                  #$(this-package-input "font-dejavu")
+                                  "/share/fonts/truetype/DejaVuSans.ttf")
+                   (string-append "--with-gs-path="
+                                  #$(this-package-input "ghostscript-with-cups")
+                                  "/bin/gsc")
+                   (string-append "--with-shell="
+                                  (assoc-ref %build-inputs "bash")
+                                  "/bin/bash")
+                   (string-append "--with-rcdir="
+                                  #$output "/etc/rc.d"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-foomatic-hardcoded-file-names
+                 (lambda _
+                   ;; Foomatic has hard-coded file names we need to fix.
+                   (substitute* "filter/foomatic-rip/foomaticrip.c"
+                     (("/usr/local(/lib/cups/filter)" _ file)
+                      (string-append #$output file)))))
+               (add-after 'install 'wrap-filters
+                 (lambda _
+                   ;; Some filters expect to find things in $PATH.  We cannot
+                   ;; just hard-code all absolute file names in the source
+                   ;; because foomatic-rip, for example, has tests like
+                   ;; 'startswith(cmd, "gs")'.
+                   (for-each
+                    (lambda (file)
+                      (wrap-program file
+                        `("PATH" ":" prefix
+                          (,(string-append
+                             #$(this-package-input "ghostscript-with-cups")
+                             "/bin:"
+                             #$(this-package-input "grep") "/bin")))))
+                    (find-files (string-append #$output
+                                               "/lib/cups/filter"))))))))
     (native-inputs
-     (list `(,glib "bin") ; for gdbus-codegen
+     (list `(,glib "bin")               ; for gdbus-codegen
            pkg-config))
     (inputs
-     `(("avahi"        ,avahi)
-       ("fontconfig"   ,fontconfig)
-       ("freetype"     ,freetype)
-       ("font-dejavu"  ,font-dejavu)    ; also needed by test suite
-       ("ghostscript"  ,ghostscript/cups)
-       ("grep"         ,grep)
-       ("ijs"          ,ijs)
-       ("dbus"         ,dbus)
-       ("lcms"         ,lcms)
-       ("libjpeg"      ,libjpeg-turbo)
-       ("libpng"       ,libpng)
-       ("libtiff"      ,libtiff)
-       ("glib"         ,glib)
-       ("qpdf"         ,qpdf)
-       ("poppler"      ,poppler)
-       ("cups-minimal" ,cups-minimal)))
+     (list avahi
+           fontconfig
+           freetype
+           font-dejavu                  ; also needed by test suite
+           ghostscript/cups
+           grep
+           ijs
+           dbus
+           lcms
+           libjpeg-turbo
+           libpng
+           libtiff
+           glib
+           qpdf
+           poppler
+           cups-minimal))
     (home-page "https://wiki.linuxfoundation.org/openprinting/cups-filters")
     (synopsis "OpenPrinting CUPS filters and backends")
     (description
@@ -254,84 +248,84 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
 (define-public cups-minimal
   (package
     (name "cups-minimal")
-    (version "2.3.3op2")
+    (version "2.4.2")
     (source
      (origin
        (method git-fetch)
-       ;; Version maintained by the OpenPrinting organization, NOT a fork.  The
-       ;; CUPS author tracks the current Apple CUPS sources and includes common
-       ;; changes and bug fixes for GNU/Linux.  See its README and for example
-       ;; <https://github.com/apple/cups/issues/5917#issuecomment-819465891>.
        (uri (git-reference
              (url "https://github.com/OpenPrinting/cups")
              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
+       ;; Avoid NAME confusion: these are the complete CUPS sources.
+       (file-name (git-file-name "cups" version))
        (sha256
-        (base32 "126d6kd3pkhmsvbcflkcpk3y30iqlkdqyvrk9aqq88vbxzjd5ia6"))))
+        (base32 "01nn6ij7kpf2vzikinn7mk4crjx4ab8m4pplvsccc8gg30a2q9y9"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       '("--disable-launchd"
-         "--disable-systemd"
-         "--disable-avahi"
-         "--disable-dnssd")
-       ;; Seven tests fail, mostly because of files that are provided by the
-       ;; cups-filters package.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'never-cupsAdminGetServerSettings
-           ;; Instead of querying the daemon directly, this part of CUPS assumes
-           ;; that (1) it has access to a cupsd.conf under CUPS_SERVERROOT, and
-           ;; (2) the file's contents apply to the running daemon.  (1) is false
-           ;; at least on Guix Systems resulting in extremely long delays when
-           ;; loading the Web interface's /admin page.  (2) isn't valid anywhere
-           ;; because it ignores, e.g., -c FILE.
-           ;; Upstream considers this code on ‘life support’ so just neuter it.
-	   (lambda _
-	     (substitute* "cgi-bin/admin.c"
-	       (("!cupsAdminGetServerSettings" match)
-		(string-append "0 && " match)))))
-         (add-after 'unpack 'remove-Web-UI-server-settings
-           ;; The /admin page's server configuration form is questionable for
-           ;; the same reason as cupsAdminGetServerSettings, and won't work at
-           ;; all on Guix Systems.  Remove it entirely.
-           (lambda _
-             ;; SUBSTITUTE* and a patch both have (dis)advantages.  This is
-             ;; shorter & should ensure that no translation is forgotten.
-             (substitute* (find-files "templates" "^admin\\.tmpl$")
-               ((" class=\"halves\"") "")
-               (("<FORM.* ACTION=\"/jobs.*</FORM>" match)
-                (string-append match "</P>{BROKEN? "))
-               (("</FORM>}" match)
-                (string-append match "}")))))
-         (add-before 'configure 'patch-makedefs
-           (lambda _
-             (substitute* "Makedefs.in"
-               (("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@")
-               (("/bin/sh") (which "sh")))
-             #t))
-         (add-before 'build 'patch-tests
-           (lambda _
-             (substitute* "tools/ippeveprinter.c"
-               (("#  else /\\* HAVE_AVAHI \\*/")
-                "#elif defined(HAVE_AVAHI)"))
-             #t)))))
+     (list #:configure-flags
+           ;; This package isn't maximally minimal: "--with-components=libcups"
+           ;; breaks cups-filters.  Disable some other unnecessary features.
+           #~(list "--without-icondir"
+                   "--without-languages"
+                   "--without-menudir")
+           ;; Seven tests fail, mostly because of files that are provided by the
+           ;; cups-filters package.
+           #:tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'never-cupsAdminGetServerSettings
+                 ;; Rather than just ask the daemon, this part of CUPS assumes
+                 ;; that (1) it has access to a cupsd.conf under CUPS_SERVERROOT
+                 ;; and (2) the file's contents apply to the running daemon.
+                 ;; (1) is false at least on Guix Systems resulting in extremely
+                 ;; long delays when loading the Web interface's /admin page.
+                 ;; (2) is never valid: it ignores, e.g., -c FILE.  Upstream
+                 ;; considers this code on ‘life support’ so just neuter it.
+	         (lambda _
+	           (substitute* "cgi-bin/admin.c"
+	             (("!cupsAdminGetServerSettings" match)
+		      (string-append "0 && " match)))))
+               (add-after 'unpack 'remove-Web-UI-server-settings
+                 ;; The /admin page's server configuration form is questionable
+                 ;; for the same reason as cupsAdminGetServerSettings, and won't
+                 ;; work at all on Guix Systems.  Remove it entirely.
+                 (lambda _
+                   ;; SUBSTITUTE* & patches both have (dis)advantages.  This is
+                   ;; shorter & should ensure that no translation is forgotten.
+                   (substitute* (find-files "templates" "^admin\\.tmpl$")
+                     ((" class=\"halves\"") "")
+                     (("<FORM.* ACTION=\"/jobs.*</FORM>" match)
+                      (string-append match "</P>{BROKEN? "))
+                     (("</FORM>}" match)
+                      (string-append match "}")))))
+               (add-before 'configure 'patch-makedefs
+                 (lambda _
+                   (substitute* "Makedefs.in"
+                     (("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@")
+                     (("/bin/sh") (which "sh")))))
+               (add-before 'check 'skip-failing-tests
+                 (lambda _
+                   (substitute* "test/run-stp-tests.sh"
+                     ;; The number of error/warning lines differs, probably due
+                     ;; to a missing font.  Substitute the last observed count.
+                     (("(\\$count != )33" _ prefix)
+                      (string-append prefix "39"))))))))
     (native-inputs
      (list pkg-config))
     (inputs
      (list zlib gnutls))
-    (home-page "https://openprinting.github.io/")
+    (home-page "https://openprinting.github.io/cups")
     (synopsis "The Common Unix Printing System")
     (description
-     "CUPS is a printing system that uses the Internet Printing Protocol
-(@dfn{IPP}).  It provides System V and BSD command-line interfaces, as well
-as a Web interface and a C programming interface to manage printers and print
-jobs.  It supports printing to both local (parallel, serial, USB) and
-networked printers, and printers can be shared from one computer to another.
-Internally, CUPS uses PostScript Printer Description (@dfn{PPD}) files to
-describe printer capabilities and features, and a wide variety of generic and
-device-specific programs to convert and print many types of files.")
+     "CUPS is a printing system that uses @acronym{IPP, the Internet Printing
+Protocol} to talk to printers and network clients.  It also provides the old
+@command{lp} and @command{lpr} commands, a Web interface, and a C programming
+interface to manage printers and print jobs.
+
+CUPS can print to both local (USB, serial, even parallel) and networked
+printers.  Almost any modern printer supports IPP@tie{}Everywhere, sometimes
+sold as AirPrint, and is supported out of the box.  Older printers can be
+supported through legacy PPD-based printer drivers called ``printer
+applications''.  These must be installed separately.")
     ;; CUPS is Apache 2.0 with exceptions, see the NOTICE file.
     (license license:asl2.0)))
 
@@ -341,127 +335,124 @@ device-specific programs to convert and print many types of files.")
     (arguments
      (substitute-keyword-arguments (package-arguments cups-minimal)
        ((#:tests? _ #t)
-        ;; Three tests fail:
-        ;; * two tests in ipp-1.1.test related to "RFC 2911 section 3.2.6:
-        ;;   Get-Jobs Operation"
-        ;; * test of number of error/warning messages, probably related to a
-        ;;   missing font.
-        #f)
-       ((#:configure-flags _ '())
-        `(list "--disable-launchd"
-               "--disable-systemd"))
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           (add-before 'check 'patch-tests
-             (lambda _
-               (let ((filters (assoc-ref %build-inputs "cups-filters"))
-                     (catpath (string-append
-                               (assoc-ref %build-inputs "coreutils") "/bin/"))
-                     (testdir (string-append (getcwd) "/tmp/")))
-                 (mkdir testdir)
-                 (substitute* "test/run-stp-tests.sh"
-                   ((" *BASE=/tmp/") (string-append "BASE=" testdir))
-
-                   ;; Allow installation of filters from the output directory
-                   ;; and from cups-filters.
-                   (("for dir in /usr/libexec/cups/filter /usr/lib/cups/filter")
-                    (string-append
-                     "for dir in "
-                     (assoc-ref %outputs "out") "/lib/cups/filter "
-                     filters "/lib/cups/filter"))
-
-                   ;; Check for charsets in the default cups-filters output.
-                   (("/usr/share/cups/charsets")
-                    (string-append filters "/share/cups/charsets"))
-
-                   ;; Install additional required filters.
-                   (("instfilter texttopdf texttopdf pdf")
-                    (string-append
-                     "instfilter texttopdf texttopdf pdf;"
-                     "instfilter imagetoraster imagetoraster raster;"
-                     "instfilter gstoraster gstoraster raster;"
-                     "instfilter urftopdf urftopdf pdf;"
-                     "instfilter rastertopdf rastertopdf pdf;"
-                     "instfilter pstopdf pstopdf pdf"))
-
-                   ;; Specify the location of the lpstat binary.
-                   (("description=\"`lpstat -l")
-                    "description=\"`../systemv/lpstat -l")
-
-                   ;; Patch the shebangs of embedded scripts.
-                   (("#!/bin/sh") (string-append "#!" (which "sh")))
-
-                   ;; Also link MIME definitions from cups-filters
-                   ;; to enable the additional filters for the test suite.
-                   (("ln -s \\$root/conf/mime\\.types")
-                    (string-append
-                     "ln -s " filters
-                     "/share/cups/mime/cupsfilters.types $BASE/share/mime; "
-                     "ln -s $root/conf/mime.types"))
-                   (("ln -s \\$root/conf/mime\\.convs")
-                    (string-append
-                     "ln -s " filters
-                     "/share/cups/mime/cupsfilters.convs $BASE/share/mime; "
-                     "ln -s $root/conf/mime.convs")))
-
-                 ;; Fix the search path for the "cat" command.
-                 (substitute* "cups/testfile.c"
-                   (("cupsFileFind\\(\"cat\", \"/bin\"")
-                    (string-append "cupsFileFind(\"cat\", \"" catpath "\""))
-                   (("cupsFileFind\\(\"cat\", \"/bin:/usr/bin\"")
-                    (string-append "cupsFileFind(\"cat\", \"" catpath "\""))))))
-           (add-after 'install 'install-cups-filters-symlinks
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out"))
-                     (cups-filters (assoc-ref inputs "cups-filters")))
-                 ;; Charsets.
-                 (symlink
-                  (string-append cups-filters "/share/cups/charsets")
-                  (string-append out "/share/charsets"))
-
-                 ;; MIME types, driver files, and PPDs.
-                 (for-each
-                  (lambda (f)
-                    (symlink (string-append cups-filters f)
-                             (string-append out f)))
-                  '("/share/cups/mime/cupsfilters.types"
-                    "/share/cups/mime/cupsfilters.convs"
-                    "/share/cups/drv/cupsfilters.drv"
-                    "/share/ppd"))
-
-                 ;; Filters.
-                 (for-each
-                  (lambda (f)
-                    (symlink f
-                             (string-append out "/lib/cups/filter"
-                                            (basename f))))
-                  (find-files (string-append cups-filters "/lib/cups/filter")))
-
-                 ;; Backends.
-                 (for-each
-                  (lambda (f)
-                    (symlink (string-append cups-filters f)
-                             (string-append out "/lib/cups/backend/"
-                                            (basename f))))
-                  '("/lib/cups/backend/parallel"
-                    "/lib/cups/backend/serial"))
-
-                 ;; Banners.
-                 (let ((banners "/share/cups/banners"))
-                   (delete-file-recursively (string-append out banners))
-                   (symlink (string-append cups-filters banners)
-                            (string-append out banners)))
-
-                 ;; Assorted data.
-                 (let ((data "/share/cups/data"))
-                   (delete-file-recursively (string-append out data))
-                   (symlink (string-append cups-filters data)
-                            (string-append out data))))))))))
+        #t)
+       ((#:configure-flags flags #~'())
+        #~(append #$flags
+                  (list "--with-languages=all"))) ; no ‘=all’ means none(!)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-before 'check 'patch-tests
+              (lambda* (#:key outputs #:allow-other-keys)
+                (let ((filters #$(this-package-input "cups-filters"))
+                      (catpath (string-append
+                                #$(this-package-input "coreutils") "/bin/"))
+                      (testdir (string-append (getcwd) "/tmp/")))
+                  (mkdir testdir)
+                  (substitute* "test/run-stp-tests.sh"
+                    ((" *BASE=/tmp/") (string-append "BASE=" testdir))
+
+                    ;; Allow installation of filters from the output directory
+                    ;; and from cups-filters.
+                    (("for dir in /usr/libexec/cups/filter /usr/lib/cups/filter")
+                     (string-append
+                      "for dir in "
+                      (assoc-ref outputs "out") "/lib/cups/filter "
+                      filters "/lib/cups/filter"))
+
+                    ;; Check for charsets in the default cups-filters output.
+                    (("/usr/share/cups/charsets")
+                     (string-append filters "/share/cups/charsets"))
+
+                    ;; Install additional required filters.
+                    (("instfilter texttopdf texttopdf pdf")
+                     (string-append
+                      "instfilter texttopdf texttopdf pdf;"
+                      "instfilter imagetoraster imagetoraster raster;"
+                      "instfilter gstoraster gstoraster raster;"
+                      "instfilter urftopdf urftopdf pdf;"
+                      "instfilter rastertopdf rastertopdf pdf;"
+                      "instfilter pstopdf pstopdf pdf"))
+
+                    ;; Specify the location of the lpstat binary.
+                    (("description=\"`lpstat -l")
+                     "description=\"`../systemv/lpstat -l")
+
+                    ;; Patch the shebangs of embedded scripts.
+                    (("#!/bin/sh") (string-append "#!" (which "sh")))
+
+                    ;; Also link MIME definitions from cups-filters
+                    ;; to enable the additional filters for the test suite.
+                    (("ln -s \\$root/conf/mime\\.types")
+                     (string-append
+                      "ln -s " filters
+                      "/share/cups/mime/cupsfilters.types $BASE/share/mime; "
+                      "ln -s $root/conf/mime.types"))
+                    (("ln -s \\$root/conf/mime\\.convs")
+                     (string-append
+                      "ln -s " filters
+                      "/share/cups/mime/cupsfilters.convs $BASE/share/mime; "
+                      "ln -s $root/conf/mime.convs")))
+
+                  ;; Fix the search path for the "cat" command.
+                  (substitute* "cups/testfile.c"
+                    (("cupsFileFind\\(\"cat\", \"/bin\"")
+                     (string-append "cupsFileFind(\"cat\", \"" catpath "\""))
+                    (("cupsFileFind\\(\"cat\", \"/bin:/usr/bin\"")
+                     (string-append "cupsFileFind(\"cat\", \"" catpath "\""))))))
+            (add-after 'install 'install-cups-filters-symlinks
+              (lambda* (#:key inputs outputs #:allow-other-keys)
+                (let ((out (assoc-ref outputs "out"))
+                      (cups-filters #$(this-package-input "cups-filters")))
+                  ;; Charsets.
+                  (symlink
+                   (string-append cups-filters "/share/cups/charsets")
+                   (string-append out "/share/charsets"))
+
+                  ;; MIME types, driver files, and PPDs.
+                  (for-each
+                   (lambda (f)
+                     (symlink (string-append cups-filters f)
+                              (string-append out f)))
+                   '("/share/cups/mime/cupsfilters.types"
+                     "/share/cups/mime/cupsfilters.convs"
+                     "/share/cups/drv/cupsfilters.drv"
+                     "/share/ppd"))
+
+                  ;; Filters.
+                  (for-each
+                   (lambda (f)
+                     (symlink f
+                              (string-append out "/lib/cups/filter"
+                                             (basename f))))
+                   (find-files (string-append cups-filters "/lib/cups/filter")))
+
+                  ;; Backends.
+                  (for-each
+                   (lambda (f)
+                     (symlink (string-append cups-filters f)
+                              (string-append out "/lib/cups/backend/"
+                                             (basename f))))
+                   '("/lib/cups/backend/parallel"
+                     "/lib/cups/backend/serial"))
+
+                  ;; Banners.
+                  (let ((banners "/share/cups/banners"))
+                    (delete-file-recursively (string-append out banners))
+                    (symlink (string-append cups-filters banners)
+                             (string-append out banners)))
+
+                  ;; Assorted data.
+                  (let ((data "/share/cups/data"))
+                    (delete-file-recursively (string-append out data))
+                    (symlink (string-append cups-filters data)
+                             (string-append out data))))))))))
     (inputs
-     `(("avahi" ,avahi)
-       ("gnutls" ,gnutls)
-       ("cups-filters" ,cups-filters)
-       ("zlib"  ,zlib)))))
+     (list avahi
+           coreutils
+           cups-filters
+           gnutls
+           linux-pam
+           zlib))))
 
 (define-public cups-pk-helper
   (package
@@ -492,7 +483,7 @@ device-specific programs to convert and print many types of files.")
     (native-inputs
      (list intltool pkg-config `(,glib "bin")))
     (inputs
-     (list glib polkit-duktape cups-minimal))
+     (list glib polkit cups-minimal))
     (home-page "https://www.freedesktop.org/wiki/Software/cups-pk-helper/")
     (synopsis "PolicyKit helper to configure CUPS with fine-grained privileges")
     (description
@@ -504,14 +495,14 @@ should only be used as part of the Guix cups-pk-helper service.")
 (define-public hplip
   (package
     (name "hplip")
-    (version "3.21.10")
+    (version "3.22.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/hplip/hplip/" version
                                   "/hplip-" version ".tar.gz"))
               (sha256
                (base32
-                "0q3adcp8iygravp4bq4gw14jk20c5rhnawj1333qyw8yvlghw8yy"))
+                "0461pv3hgbmjxrz7y1kplnp1sp97hagzad7gc1qr2h5cqm3ybsbv"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index d82d94abff..c91e268ef5 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -62,113 +62,81 @@
 
 (define-public curl
   (package
-   (name "curl")
-   (version "7.79.1")
-   (replacement curl-7.84.0)
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "https://curl.se/download/curl-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "129n9hi7rbg3s112chyadhp4y27ppb5i65n12wm77aw2255zf1h6"))
-             (patches (search-patches "curl-use-ssl-cert-env.patch"))))
-   (build-system gnu-build-system)
-   (outputs '("out"
-              "doc"))                             ;1.2 MiB of man3 pages
-   (inputs (list gnutls libidn mit-krb5
-                 `(,nghttp2 "lib") zlib))
-   (native-inputs
-     `(("nghttp2" ,nghttp2)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-minimal-wrapper)))
-   (native-search-paths
-    ;; These variables are introduced by curl-use-ssl-cert-env.patch.
-    (list $SSL_CERT_DIR
-          $SSL_CERT_FILE
-          ;; Note: This search path is respected by the `curl` command-line
-          ;; tool only.  Patching libcurl to read it too would bring no
-          ;; advantages and require maintaining a more complex patch.
-          (search-path-specification
-           (variable "CURL_CA_BUNDLE")
-           (file-type 'regular)
-           (separator #f)                         ;single entry
-           (files '("etc/ssl/certs/ca-certificates.crt")))))
-   (arguments
-    `(#:disallowed-references ("doc")
-      #:configure-flags (list "--with-gnutls"
-                              (string-append "--with-gssapi="
-                                             (assoc-ref %build-inputs "mit-krb5"))
-                              "--disable-static")
+    (name "curl")
+    (version "7.85.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://curl.se/download/curl-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1rjbn0h5rddclhvxb8p5gddxszcrpbf5cw1whx6wnj4s9dnlmdc8"))
+              (patches (search-patches "curl-use-ssl-cert-env.patch"))))
+    (build-system gnu-build-system)
+    (outputs '("out"
+               "doc"))                  ;1.2 MiB of man3 pages
+    (inputs
+     (list gnutls libidn mit-krb5 `(,nghttp2 "lib") zlib))
+    (native-inputs
+     (list nghttp2 perl pkg-config python-minimal-wrapper))
+    (native-search-paths
+     ;; These variables are introduced by curl-use-ssl-cert-env.patch.
+     (list $SSL_CERT_DIR
+           $SSL_CERT_FILE
+           ;; Note: This search path is respected by the `curl` command-line
+           ;; tool only.  Patching libcurl to read it too would bring no
+           ;; advantages and require maintaining a more complex patch.
+           (search-path-specification
+            (variable "CURL_CA_BUNDLE")
+            (file-type 'regular)
+            (separator #f)              ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))))
+    (arguments
+     (list
+      #:disallowed-references '("doc")
+      #:configure-flags
+      #~(list "--with-gnutls"
+              (string-append "--with-gssapi="
+                             (dirname (dirname
+                                       (search-input-file
+                                        %build-inputs "lib/libgssrpc.so"))))
+              "--disable-static")
       #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'do-not-record-configure-flags
-          (lambda _
-            ;; Do not save the configure options to avoid unnecessary references.
-            (substitute* "curl-config.in"
-              (("@CONFIGURE_OPTIONS@")
-               "\"not available\""))))
-        (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"))
-                 (doc (assoc-ref outputs "doc")))
-             (mkdir-p (string-append doc "/share/man"))
-             (rename-file (string-append out "/share/man/man3")
-                          (string-append doc "/share/man/man3")))))
-        (replace 'check
-          (lambda* (#:key tests? #:allow-other-keys)
-            (substitute* "tests/runtests.pl"
-              (("/bin/sh") (which "sh")))
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-record-configure-flags
+            (lambda _
+              ;; Do not save the configure options to avoid unnecessary references.
+              (substitute* "curl-config.in"
+                (("@CONFIGURE_OPTIONS@")
+                 "\"not available\""))))
+          (add-after 'install 'move-man3-pages
+            (lambda _
+              ;; Move section 3 man pages to "doc".
+              (mkdir-p (string-append #$output:doc "/share/man"))
+              (rename-file (string-append #$output "/share/man/man3")
+                           (string-append #$output:doc "/share/man/man3"))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (substitute* "tests/runtests.pl"
+                (("/bin/sh") (which "sh")))
 
-            (when tests?
-              ;; The top-level "make check" does "make -C tests quiet-test", which
-              ;; is too quiet.  Use the "test" target instead, which is more
-              ;; verbose.
-              (invoke "make" "-C" "tests" "test")))))))
-   (synopsis "Command line tool for transferring data with URL syntax")
-   (description
-    "curl is a command line tool for transferring data with URL syntax,
+              (when tests?
+                ;; The top-level "make check" does "make -C tests quiet-test", which
+                ;; is too quiet.  Use the "test" target instead, which is more
+                ;; verbose.
+                (invoke "make" "-C" "tests" "test")))))))
+    (synopsis "Command line tool for transferring data with URL syntax")
+    (description
+     "curl is a command line tool for transferring data with URL syntax,
 supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP,
 LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP.
 curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP
 form based upload, proxies, cookies, file transfer resume, user+password
 authentication (Basic, Digest, NTLM, Negotiate, kerberos...), proxy
 tunneling, and so on.")
-   (license (license:non-copyleft "file://COPYING"
-                                  "See COPYING in the distribution."))
-   (home-page "https://curl.haxx.se/")))
-
-;; Replacement package with fixes for multiple vulnerabilities.
-;; See <https://curl.se/docs/security.html>.
-(define curl-7.84.0
-  (package
-    (inherit curl)
-    (version "7.84.0")
-    (source (origin
-              (inherit (package-source curl))
-              (uri (string-append "https://curl.se/download/curl-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1f2xgj0wvys9xw50h7vcbaraavjr9rxx9n06x2xfbgs7ym1qn49d"))
-              (patches (append (origin-patches (package-source curl))
-                               (search-patches "curl-easy-lock.patch")))))
-    (arguments (substitute-keyword-arguments (package-arguments curl)
-                 ((#:phases phases)
-                  (cond
-                   ((not (target-64bit?))
-                    #~(modify-phases #$phases
-                        (add-after 'unpack 'tweak-lib3026-test
-                          (lambda _
-                            ;; Have that test create a hundred threads, not a
-                            ;; thousand.
-                            (substitute* "tests/libtest/lib3026.c"
-                              (("NUM_THREADS .*$")
-                               "NUM_THREADS 100\n"))))))
-                   (else phases)))))))
+    (license (license:non-copyleft "file://COPYING"
+                                   "See COPYING in the distribution."))
+    (home-page "https://curl.haxx.se/")))
 
 (define-public curl-minimal
   (deprecated-package "curl-minimal" curl))
@@ -178,10 +146,10 @@ tunneling, and so on.")
     (arguments
      (substitute-keyword-arguments (package-arguments curl)
        ((#:configure-flags flags)
-        `(cons "--with-libssh2" ,flags))))
+        #~(cons "--with-libssh2" #$flags))))
     (inputs
-     `(("libssh2" ,libssh2)
-       ,@(package-inputs curl)))
+     (modify-inputs (package-inputs curl)
+       (prepend libssh2)))
     (properties `((hidden? . #t)))))
 
 (define-public kurly
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
index 2cd18f3e5e..70d579c127 100644
--- a/gnu/packages/cyrus-sasl.scm
+++ b/gnu/packages/cyrus-sasl.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,55 +27,48 @@
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages tls)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu))
 
 (define-public cyrus-sasl
   (package
-   (name "cyrus-sasl")
-   (version "2.1.27")
-   (source (origin
-            (method url-fetch)
-            (uri (list (string-append
-                        "https://cyrusimap.org/releases/cyrus-sasl-"
-                        version ".tar.gz")
-                       (string-append
-                        "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-"
-                        version ".tar.gz")))
-            (sha256 (base32
-                     "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6"))
-            (patches (search-patches "cyrus-sasl-ac-try-run-fix.patch"
-                                     "cyrus-sasl-CVE-2019-19906.patch"))))
-   (build-system gnu-build-system)
-   (native-inputs
-     (list autoconf automake libtool))
-   (inputs (list gdbm openssl))
-   (propagated-inputs
-    (list ;; cyrus-sasl.pc refers to -lkrb5, so propagate it.
-          mit-krb5))
-   (arguments
-    '(#:configure-flags (list (string-append "--with-plugindir="
-                                             (assoc-ref %outputs "out")
-                                             "/lib/sasl2"))
+    (name "cyrus-sasl")
+    (version "2.1.28")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/cyrusimap/cyrus-sasl"
+                                  "/releases/download/cyrus-sasl-" version
+                                  "/cyrus-sasl-" version ".tar.gz"))
+              (sha256
+               (base32
+                "135kbgyfpa1mwqp5dm223yr6ddzi4vjm7cr414d7rmhys2mwdkvw"))))
+    (build-system gnu-build-system)
+    (inputs (list gdbm mit-krb5 openssl))
+    (arguments
+     (list
+      #:configure-flags #~(list (string-append "--with-plugindir="
+                                               (assoc-ref %outputs "out")
+                                               "/lib/sasl2")
+                                ;; When cross-compiling the build system is
+                                ;; unable to determine whether SPNEGO is
+                                ;; supported; Kerberos does, so enable it.
+                                #$@(if (%current-target-system)
+                                       '("ac_cv_gssapi_supports_spnego=yes")
+                                       '()))
 
       ;; The 'plugins' directory has shared source files, such as
       ;; 'plugin_common.c'.  When building the shared libraries there, libtool
       ;; ends up doing "ln -s plugin_common.lo plugin_common.o", which can
       ;; fail with EEXIST when building things in parallel.
-      #:parallel-build? #f
-
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'autogen
-          (lambda _
-            (invoke "autoreconf" "-vif"))))))
-   (synopsis "Simple Authentication Security Layer implementation")
-   (description
-    "SASL (Simple Authentication Security Layer) is an Internet
+      #:parallel-build? #f))
+    (synopsis "Simple Authentication Security Layer implementation")
+    (description
+     "SASL (Simple Authentication Security Layer) is an Internet
 standards-track method for remote computers to authenticate.  The Cyrus SASL
 library makes supporting various SASL mechanisms easy for both client and
 server writers.")
-   (license (license:non-copyleft "file://COPYING"
-                                  "See COPYING in the distribution."))
-   (home-page "https://cyrusimap.org/sasl/")))
+    (license (license:non-copyleft "file://COPYING"
+                                   "See COPYING in the distribution."))
+    (home-page "https://cyrusimap.org/sasl/")))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 84aa0f5ebc..cd7bf5e8f0 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -3556,7 +3556,7 @@ PickleShare.")
         (search-patches "python-apsw-3.39.2.1-test-fix.patch"))))
     (build-system python-build-system)
     (native-inputs (list unzip))
-    (inputs (list sqlite-next))         ;SQLite 3.39 required.
+    (inputs (list sqlite))
     (arguments
      (list #:phases
            #~(modify-phases %standard-phases
diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm
index 8b6804aa92..8c49094697 100644
--- a/gnu/packages/dbm.scm
+++ b/gnu/packages/dbm.scm
@@ -164,14 +164,14 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 (define-public gdbm
   (package
     (name "gdbm")
-    (version "1.20")
+    (version "1.23")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gdbm/gdbm-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "14m22j0zndd42yc0ps0bcnnjj2iq7agnp66sl882lj5k91bc1sis"))))
+                "1kfapds42j1sjq6wl7fygipw5904wpbfa5kwppj3mwgz44fhicbl"))))
     (arguments `(#:configure-flags '("--enable-libgdbm-compat"
                                      "--disable-static")))
     (build-system gnu-build-system)
diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm
index 08be5a8afd..579a1a7a40 100644
--- a/gnu/packages/dejagnu.scm
+++ b/gnu/packages/dejagnu.scm
@@ -1,7 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flasher.co.il>
+;;; Copyright © 2016, 2017, 2022 Efraim Flashner <efraim@flasher.co.il>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,60 +23,72 @@
 (define-module (gnu packages dejagnu)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (guix licenses)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages tcl))
 
 (define-public dejagnu
   (package
     (name "dejagnu")
-    (version "1.6.2")
+    (version "1.6.3")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnu/dejagnu/dejagnu-"
-                          version ".tar.gz"))
-      (sha256
-       (base32
-        "0qfj2wd4qk1yn9yzam6g8nmyxfazcc0knjyyibycb2ainkhp21hd"))))
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/dejagnu/dejagnu-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1qx2cv6qkxbiqg87jh217jb62hk3s7dmcs4cz1llm2wmsynfznl7"))))
     (build-system gnu-build-system)
-    (inputs (list expect))
+    (inputs (list bash-minimal expect))
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             ;; Note: The test-suite *requires* /dev/pts among the
-             ;; `build-chroot-dirs' of the build daemon when
-             ;; building in a chroot.  See
-             ;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036>
-             ;; for details.
-             (if (and (directory-exists? "/dev/pts")
-                      (directory-exists? "/proc"))
-                 (begin
-                  ;; Provide `runtest' with a log name, otherwise it
-                  ;; tries to run `whoami', which fails when in a chroot.
-                  (setenv "LOGNAME" "guix-builder")
+     (list
+      ;; Do an out-of-source build to work-around a non-deterministic bug in Expect:
+      ;; <https://lists.gnu.org/archive/html/bug-dejagnu/2021-06/msg00013.html>.
+      #:out-of-source? #true
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-/bin/sh
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Patch embedded /bin/sh references.
+              (let ((/bin/sh (search-input-file inputs "/bin/sh")))
+                (substitute* "dejagnu"
+                  (("exec /bin/sh")
+                   (string-append "exec " /bin/sh)))
+                (substitute* (find-files "testsuite/report-card.all")
+                  (("/bin/sh") /bin/sh)))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; Note: The test-suite *requires* /dev/pts among the
+              ;; `build-chroot-dirs' of the build daemon when
+              ;; building in a chroot.  See
+              ;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036>
+              ;; for details.
+              (when tests?
+                (if (and (directory-exists? "/dev/pts")
+                         (directory-exists? "/proc"))
+                    (begin
+                      ;; Provide `runtest' with a log name, otherwise it
+                      ;; tries to run `whoami', which fails when in a chroot.
+                      (setenv "LOGNAME" "guix-builder")
 
-                  ;; The test-suite needs to have a non-empty stdin:
-                  ;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>.
-                  (unless (zero? (system "make check < /dev/zero"))
-                    (error "make check failed")))
-                 (display "test suite cannot be run, skipping\n"))
-             #t))
-         (add-after 'install 'post-install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Use the right `expect' binary.
-             (let ((out    (assoc-ref outputs "out"))
-                   (expect (assoc-ref inputs "expect")))
-               (substitute* (string-append out "/bin/runtest")
-                 (("^mypath.*$" all)
-                  (string-append all
-                                 "export PATH="
-                                 expect "/bin:$PATH\n")))
-               #t))))))
-    (home-page
-     "https://www.gnu.org/software/dejagnu/")
+                      ;; The test-suite needs to have a non-empty stdin:
+                      ;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>.
+                      (unless (zero? (system "make check < /dev/zero"))
+                        (error "make check failed")))
+                    (display "test suite cannot be run, skipping\n")))))
+          (add-after 'install 'post-install
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Use the right `expect' binary.
+              (let ((expect (search-input-file inputs "/bin/expect")))
+                (substitute* (string-append #$output "/bin/runtest")
+                  (("^mypath.*$" all)
+                   (string-append all
+                                  "export PATH="
+                                  (dirname expect) ":$PATH\n")))))))))
+    (home-page "https://www.gnu.org/software/dejagnu/")
     (synopsis "GNU software testing framework")
     (description
      "DejaGnu is a framework for testing software.  In effect, it serves as
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 27a8aa7b46..3c4650e7a8 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -35,7 +35,6 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpio)
   #:use-module (gnu packages dbm)
-  #:use-module (gnu packages file)      ;for 'file-next'
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gnome)
@@ -173,11 +172,7 @@
              docx2txt
              dtc
              e2fsprogs
-             ffmpeg
-
-             ;; XXX: Must be the same version as python-magic uses;
-             ;; remove when 'file' is updated.
-             file-next)
+             ffmpeg)
 
        (match (%current-system)
               ;; fpc is only available on x86 currently.
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index d73a1bb94b..0684ccf36f 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -409,9 +409,7 @@ size and quality.")
                                         " and not test_urls_cache_is_cleared")))
                (format #t "test suite not run~%")))))))
     (native-inputs
-     (list python-django python-setuptools-scm
-           ;; For tests.
-           python-pytest-xdist-next))
+     (list python-django python-setuptools-scm python-pytest-xdist))
     (propagated-inputs
      (list python-pytest))
     (home-page "https://pytest-django.readthedocs.org/")
@@ -1233,7 +1231,7 @@ FileFields during tests.")
                      (invoke "pip" "--no-cache-dir" "--no-input"
                              "install" "--no-deps" "--prefix" #$output whl)))))))
     (native-inputs
-     (list openldap-2.6 python-wheel python-setuptools-scm python-toml
+     (list openldap python-wheel python-setuptools-scm python-toml
 
            ;; These can be removed after <https://bugs.gnu.org/46848>.
            python-pypa-build python-pip))
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index 92b4b6dce7..245e5858cf 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -151,7 +151,6 @@ a continuous layout.")
        (sha256
         (base32 "0c595yziz81c9izf9s5sskd00qmgz2n1hp2vdcgg0dx81g3xfidb"))))
     (build-system gnu-build-system)
-    (arguments (list #:tests? #f))      ;requires Python 2
     (native-inputs (list gettext-minimal pkg-config))
     (inputs
      (list djvulibre
@@ -160,6 +159,20 @@ a continuous layout.")
            poppler
            poppler-data
            `(,util-linux "lib")))       ;for libuuid
+    (arguments
+     `(#:test-target "test"
+       #:tests? #f                                ;requires Python 2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             (substitute* "tests/test-xmp-broken.py"
+               ;; Error message changed in recent versions of XML parser
+               (("XML parsing failure")
+                "Error in XMLValidator"))))
+         (add-before 'check 'set-home-for-tests
+           (lambda _
+             (setenv "HOME" "/tmp"))))))
     (synopsis "PDF to DjVu converter")
     (description
      "@code{pdf2djvu} creates DjVu files from PDF files.
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index ae0ea07dbf..149144c145 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Andrew Whatson <whatson@gmail.com>
@@ -153,7 +153,8 @@ by no means limited to these applications.)  This package provides XML DTDs.")
                 "18hgwvmywh6a5jh38szjmg3hg2r4v5lb6r3ydc3rd8cp9wg61i5c"))))))
 
 (define-public docbook-xml-4.1.2
-  (package (inherit docbook-xml)
+  (package
+    (inherit docbook-xml)
     (version "4.1.2")
     (source (origin
               (method url-fetch)
@@ -167,13 +168,22 @@ by no means limited to these applications.)  This package provides XML DTDs.")
        #:builder
        (begin
          (use-modules (guix build utils))
-         (let ((source (assoc-ref %build-inputs "source"))
-               (unzip  (string-append (assoc-ref %build-inputs "unzip")
-                                      "/bin/unzip"))
-               (dtd    (string-append (assoc-ref %outputs "out")
-                                      "/xml/dtd/docbook")))
+         (let* ((source (assoc-ref %build-inputs "source"))
+                (unzip  (string-append (assoc-ref %build-inputs "unzip")
+                                       "/bin/unzip"))
+                (xmlcatalog  (string-append (assoc-ref %build-inputs "libxml2")
+                                            "/bin/xmlcatalog"))
+                (dtd    (string-append (assoc-ref %outputs "out")
+                                       "/xml/dtd/docbook"))
+                (catalog.xml (string-append dtd "/catalog.xml")))
            (mkdir-p dtd)
-           (invoke unzip source "-d" dtd)))))))
+           (invoke unzip source "-d" dtd)
+           ;; Create a minimal XML catalog, to use with libxml2 tools.
+           (invoke xmlcatalog "--noout" "--create" catalog.xml)
+           (invoke xmlcatalog "--noout" "--add" "public"
+                   "-//OASIS//DTD DocBook XML V4.1.2//EN"
+                   (string-append dtd "/docbookx.dtd") catalog.xml)))))
+    (native-inputs (list libxml2 unzip))))
 
 (define-public docbook-xsl
   (package
@@ -482,29 +492,25 @@ the in DocBook SGML DTDs.")
                                              texlive-latex-changebar
                                              texlive-latex-colortbl
                                              texlive-latex-fancybox
-                                             texlive-latex-fancyhdr
-                                             texlive-latex-fancyvrb
+                                             texlive-fancyhdr
+                                             texlive-fancyvrb
                                              texlive-latex-float
                                              texlive-latex-footmisc
                                              texlive-hyperref
                                              texlive-latex-jknapltx
-
-                                             ;; TODO: Use non-deprecated name on
-                                             ;; next rebuild cycle.
-                                             texlive-latex-listings
-
+                                             texlive-listings
                                              texlive-latex-multirow
                                              texlive-latex-overpic
-                                             texlive-latex-pdfpages
-                                             texlive-latex-refcount
-                                             texlive-latex-subfigure
-                                             texlive-latex-titlesec
+                                             texlive-pdfpages
+                                             texlive-refcount
+                                             texlive-subfigure
+                                             texlive-titlesec
                                              texlive-wasysym
 
                                              texlive-fonts-rsfs
                                              texlive-stmaryrd
 
-                                             texlive-generic-iftex)))
+                                             texlive-iftex)))
        ("imagemagick" ,imagemagick)     ;for convert
        ("inkscape" ,inkscape/stable)    ;for svg conversion
        ("docbook" ,docbook-xml)
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 585a295fb4..e002905fb7 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
-;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.counoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -187,48 +187,51 @@ markup) can be customized and extended by the user.")
 (define-public doxygen
   (package
     (name "doxygen")
-    (version "1.9.1")
+    (version "1.9.5")
     (home-page "https://www.doxygen.nl/")
     (source (origin
-             (method url-fetch)
-             (uri (list (string-append home-page "files/doxygen-"
-                                       version ".src.tar.gz")
-                        (string-append "mirror://sourceforge/doxygen/rel-"
-                                       version "/doxygen-" version
-                                       ".src.tar.gz")))
-             (sha256
-              (base32
-               "1lcif1qi20gf04qyjrx7x367669g17vz2ilgi4cmamp1whdsxbk7"))))
+              (method url-fetch)
+              (uri (list (string-append home-page "files/doxygen-"
+                                        version ".src.tar.gz")
+                         (string-append "mirror://sourceforge/doxygen/rel-"
+                                        version "/doxygen-" version
+                                        ".src.tar.gz")))
+              (sha256
+               (base32
+                "1v1f9cp5lyymg7xmw0ldnzi7ql8agbaqam1xdyljk0lrbnrm9d2m"))))
     (build-system cmake-build-system)
     (native-inputs
-     (list bison flex libxml2 ;provides xmllint for the tests
-           python))             ;for creating the documentation
+     (list bison
+           flex
+           libxml2                      ;provides xmllint for the tests
+           python))                     ;for creating the documentation
     (inputs
-     `(("bash" ,bash-minimal)))
+     (list bash-minimal))
     (arguments
      ;; Force cmake to use iconv header from cross-libc instead of the one
      ;; from native libc.
-     `(,@(if (%current-target-system)
-             '(#:configure-flags
-               (list (string-append "-DICONV_INCLUDE_DIR="
-                                    (assoc-ref %build-inputs "cross-libc")
-                                    "/include")))
-             '())
-       #:test-target "tests"
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'disable-bibtex-test
-                    (lambda _
-                      ;; Disable test that requires bibtex to avoid a
-                      ;; circular dependency.
-                      (for-each delete-file-recursively
-                                '("testing/012" "testing/012_cite.dox"))))
-                  (add-before 'configure 'patch-sh
-                              (lambda* (#:key inputs #:allow-other-keys)
-                                (substitute* "src/portable.cpp"
-                                  (("/bin/sh")
-                                   (string-append
-                                    (assoc-ref inputs "bash") "/bin/sh")))
-                                #t)))))
+     (list
+      #:configure-flags
+      (if (%current-target-system)
+          #~(list (string-append "-DICONV_INCLUDE_DIR="
+                                 (assoc-ref %build-inputs "cross-libc")
+                                 "/include"))
+          #~'())
+      #:test-target "tests"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-bibtex-test
+            (lambda _
+              ;; Disable test that requires bibtex to avoid a
+              ;; circular dependency.
+              (for-each delete-file-recursively
+                        '("testing/012" "testing/012_cite.dox"))))
+          (add-before 'configure 'patch-sh
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((/bin/sh (search-input-file inputs "/bin/sh")))
+                (substitute* "src/portable.cpp"
+                  (("/bin/sh")
+                   /bin/sh))))))))
     (synopsis "Generate documentation from annotated sources")
     (description "Doxygen is the de facto standard tool for generating
 documentation from annotated C++ sources, but it also supports other popular
diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm
index a42ba40102..31c41fa5ef 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, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,31 +22,31 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages compression))
 
 (define-public ed
   (package
     (name "ed")
-    (version "1.17")
+    (version "1.18")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/ed/ed-"
                                  version ".tar.lz"))
              (sha256
               (base32
-               "0m2yrkfjjraakxr98nsiakqrn351h99n706x9asgmdi57j43kpki"))))
+               "0krb8rsb0cd8mgz0c5pqgnjbbrj7zjl7mf9099r8gi80k2nyza5c"))))
     (build-system gnu-build-system)
     (native-inputs (list lzip))
     (arguments
-     '(#:configure-flags '("CC=gcc")
+     `(#:configure-flags (list ,(string-append "CC=" (cc-for-target)))
        #:phases
        (modify-phases %standard-phases
          (add-before 'patch-source-shebangs 'patch-test-suite
                      (lambda _
                        (substitute* "testsuite/check.sh"
-                         (("/bin/sh") (which "sh")))
-                       #t)))))
+                         (("/bin/sh") (which "sh"))))))))
     (home-page "https://www.gnu.org/software/ed/")
     (synopsis "Line-oriented text editor")
     (description
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 8cc2ff3637..acb9164e34 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -49,14 +49,14 @@
 (define-public elfutils
   (package
     (name "elfutils")
-    (version "0.183")
+    (version "0.187")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceware.org/elfutils/ftp/"
                                   version "/elfutils-" version ".tar.bz2"))
               (sha256
                (base32
-                "1igjfia9x8h6fmh9nbl8mpz0i24my5iixrji99qmi79hilh7qqy3"))
+                "1j2lsicm3dkj5n6spszr9qy5rqm48bqimmz03x6hry8hwvxhs2z7"))
               (patches (search-patches "elfutils-tests-ptrace.patch"))))
     (build-system gnu-build-system)
 
@@ -108,7 +108,7 @@
              '()))))
 
     (native-inputs (list m4))
-    (inputs (list zlib))
+    (inputs (list xz zlib))
     (home-page "https://sourceware.org/elfutils/")
     (synopsis "Collection of utilities and libraries to handle ELF files and
 DWARF data")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index ef6e9ae1f1..881109bb77 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -342,7 +342,7 @@
            libpng
            zlib
            (if (target-x86-64?)
-               librsvg-bootstrap
+               librsvg
                librsvg-2.40)
            libxpm
            libxml2
diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm
index 5e379d888b..9f1cd897d3 100644
--- a/gnu/packages/file.scm
+++ b/gnu/packages/file.scm
@@ -1,9 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016-2018, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
 ;;;
@@ -32,14 +31,14 @@
 (define-public file
   (package
     (name "file")
-    (version "5.39")
+    (version "5.42")
     (source (origin
               (method url-fetch)
-              (uri (string-append "ftp://ftp.astron.com/pub/file/file-"
+              (uri (string-append "http://ftp.astron.com/pub/file/file-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1lgs2w2sgamzf27kz5h7pajz7v62554q21fbs11n4mfrfrm2hpgh"))))
+                "1r5h74b3pbrlm05ijiyk0y28dyrcazpn2cy42lzhfx4w096znxn0"))))
    (build-system gnu-build-system)
 
    ;; When cross-compiling, this package depends upon a native install of
@@ -47,9 +46,6 @@
    (native-inputs (if (%current-target-system)
                       `(("self" ,this-package))
                       '()))
-
-   (properties
-    `((release-monitoring-url . "http://ftp.astron.com/pub/file/")))
    (synopsis "File type guesser")
    (description
     "The file command is a file type guesser, a command-line tool that tells
@@ -58,15 +54,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-public file-next
-  (package
-    (inherit file)
-    (version "5.41")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://ftp.astron.com/pub/file/file-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0gv027jgdr0hdkw7m9ck0nwhq583f4aa7vnz4dzdbxv4ng3k5r8k"))))))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 257c7d4e37..bedd8ead8c 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
@@ -84,14 +84,14 @@
 (define-public freetype
   (package
    (name "freetype")
-   (version "2.10.4")
+   (version "2.12.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://savannah/freetype/freetype-"
                           version ".tar.xz"))
       (sha256
-       (base32 "112pyy215chg7f7fmp2l9374chhhpihbh8wgpj5nj6avj3c59a46"))))
+       (base32 "0zqsqi092sxzvqc31b23n8ww9lcjgy8vz01g576z0k6caw0z4rj7"))))
    (build-system gnu-build-system)
    (arguments
     ;; The use of "freetype-config" is deprecated, but other packages still
@@ -111,7 +111,7 @@ It supports both bitmap and scalable formats, including TrueType, OpenType,
 Type1, CID, CFF, Windows FON/FNT, X11 PCF, and others.  It supports high-speed
 anti-aliased glyph bitmap generation with 256 gray levels.")
    (license license:freetype)           ; some files have other licenses
-   (home-page "https://www.freetype.org/")))
+   (home-page "https://freetype.org/")))
 
 (define-public opentype-sanitizer
   (package
@@ -226,7 +226,7 @@ them as it goes.")
            python-booleanoperations
            python-defcon
            python-fontmath
-           python-fonttools-next
+           python-fonttools
            python-lxml
            python-tqdm
            python-ufonormalizer
@@ -1015,14 +1015,14 @@ Font Format (WOFF).")
   (hidden-package
    (package
      (name "fontconfig-minimal")
-     (version "2.13.94")
+     (version "2.14.0")
      (source (origin
                (method url-fetch)
                (uri (string-append
                      "https://www.freedesktop.org/software/"
                      "fontconfig/release/fontconfig-" version ".tar.xz"))
                (sha256 (base32
-                        "0g004r0bkkqz00mpm3svnnxn7d83158q0yb9ggxryizxfg5m5w55"))
+                        "1b4v1r94ri44p4a3kbwd38ig5jgdgcfgwdfm6fqzvfvlki6bignw"))
                (patches (search-patches "fontconfig-cache-ignore-mtime.patch"))))
      (build-system gnu-build-system)
      ;; In Requires or Requires.private of fontconfig.pc.
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 97d8bc3dbc..2551c88761 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -29,8 +29,9 @@
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2021, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
-;;; Copyright © 2022 muradm <mail@muradm.net>
+;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
 ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1093,7 +1094,7 @@ fullscreen) or other display servers.")
 (define-public wayland-protocols
   (package
     (name "wayland-protocols")
-    (version "1.23")
+    (version "1.26")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1101,7 +1102,7 @@ fullscreen) or other display servers.")
                     "wayland-protocols-" version ".tar.xz"))
               (sha256
                (base32
-                "0xizccackgwszjhlq7jjiv2z2gwppljx0w32ga91bxlnby8z22kc"))))
+                "04vgllmpmrv14x3x64ns01vgwx4hriljayjkz9idgbv83i63hly5"))))
     (build-system meson-build-system)
     (inputs
      (list wayland))
@@ -1789,9 +1790,7 @@ share connections to real-time communication services without conflicting.")
            pkg-config
            vala))
     (inputs
-     ;; TODO: remove pango-next after it's the default.
-     (list gtk+
-           pango-next))
+     (list gtk+))
     (propagated-inputs
      ;; colord-gtk.pc refers to all these.
      (list colord gtk))
diff --git a/gnu/packages/fribidi.scm b/gnu/packages/fribidi.scm
index d3a6169b0b..6b10787b87 100644
--- a/gnu/packages/fribidi.scm
+++ b/gnu/packages/fribidi.scm
@@ -28,7 +28,7 @@
 (define-public fribidi
   (package
     (name "fribidi")
-    (version "1.0.9")
+    (version "1.0.12")
     (source
       (origin
         (method url-fetch)
@@ -37,7 +37,7 @@
                         "/download/v" version "/fribidi-" version
                          ".tar.xz"))
         (sha256
-         (base32 "1iz06r6ha2nrgbzbn4141r58a60a9s5qiaadjjhhvdkg0alpxr65"))))
+         (base32 "159l56c48rfcqa8mnxhnynngzlzmvr089ki7mjrppin8gzwk7lhc"))))
     (build-system gnu-build-system)
     (synopsis "Implementation of the Unicode bidirectional algorithm")
     (description
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index 9feaf059fb..9e30c7c1d4 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -29,6 +29,7 @@
   #:use-module (gnu packages libsigsegv)
   #:use-module (gnu packages multiprecision)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
@@ -38,55 +39,45 @@
 (define-public gawk
   (package
    (name "gawk")
-   (version "5.1.0")
+   (version "5.2.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gawk/gawk-" version
                                 ".tar.xz"))
             (sha256
-             (base32 "1gc2cccqy1x1bf6rhwlmd8q7dz7gnam6nwgl38bxapv6qm5flpyg"))))
+             (base32 "064hccnn6644bs96z8fcws1wkm32066j106a2plfh47gqb8vmpg4"))))
    (build-system gnu-build-system)
    (arguments
-    `(#:phases (modify-phases %standard-phases
-                 (add-before 'configure 'set-shell-file-name
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     ;; Refer to the right shell.
-                     (let ((bash (assoc-ref inputs "bash")))
-                       (substitute* "io.c"
-                         (("/bin/sh")
-                          (string-append bash "/bin/sh")))
+    (list #:phases
+          #~(modify-phases %standard-phases
+              (add-before 'configure 'set-shell-file-name
+                (lambda* (#:key inputs #:allow-other-keys)
+                  ;; Refer to the right shell.
+                  (let ((/bin/sh (search-input-file inputs "bin/sh")))
+                    (substitute* "io.c"
+                      (("/bin/sh") /bin/sh))
 
-                       ;; When cross-compiling, remove dependencies on the
-                       ;; `check-for-shared-lib-support' target, which tries
-                       ;; to run the cross-built `gawk'.
-                       ,@(if (%current-target-system)
-                             '((substitute* "extension/Makefile.in"
+                    ;; When cross-compiling, remove dependencies on the
+                    ;; `check-for-shared-lib-support' target, which tries
+                    ;; to run the cross-built `gawk'.
+                    #$@(if (%current-target-system)
+                           '((substitute* "extension/Makefile.in"
                                  (("^.*: check-for-shared-lib-support" match)
                                   (string-append "### " match))))
-                             '()))))
+                           '()))))
 
-                 (add-before 'check 'adjust-test-infrastructure
-                   (lambda _
-                     ;; Remove dependency on 'more' (from util-linux), which
-                     ;; would needlessly complicate bootstrapping.
-                     (substitute* "test/Makefile"
-                       (("\\| more") ""))
+              (add-before 'check 'adjust-test-infrastructure
+                (lambda _
+                  ;; Remove dependency on 'more' (from util-linux), which
+                  ;; would needlessly complicate bootstrapping.
+                  (substitute* "test/Makefile"
+                    (("\\| more") ""))
 
-                     ;; Silence a warning from bash about not being able
-                     ;; to change to an ISO-8859-1 locale.  The test itself
-                     ;; works fine, but newer versions of bash give a
-                     ;; locale warning which mangles the test output.
-                     (substitute* "test/localenl.sh"
-                       (("for LC_ALL in")
-                        "for LC in")
-                       (("export LC_ALL\n")
-                        "export LC_ALL=$LC 2>/dev/null\n"))
-
-                     ;; Adjust the shebang in that file since it is then diff'd
-                     ;; against the actual test output.
-                     (substitute* "test/watchpoint1.ok"
-                       (("#! /usr/bin/gawk")
-                        (string-append "#!" (which "gawk")))))))))
+                  ;; Adjust the shebang in that file since it is then diff'd
+                  ;; against the actual test output.
+                  (substitute* "test/watchpoint1.ok"
+                    (("#! /usr/bin/gawk")
+                     (string-append "#!" (which "gawk")))))))))
 
    (inputs (list libsigsegv
                  ;; Use the full-fledged Bash package, otherwise the test suite
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index bb8a922d53..c07fdd2c80 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
 ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
@@ -173,7 +173,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
                   "lib"                    ;libgcc_s, libgomp, etc. (15+ MiB)
                   "debug"))                ;debug symbols of run-time libraries
 
-       (inputs (list gmp mpfr mpc libelf zlib))
+       (inputs (list gmp mpfr mpc elfutils zlib))
 
        ;; GCC < 5 is one of the few packages that doesn't ship .info files.
        ;; Newer texinfos fail to build the manual, so we use an older one.
@@ -295,15 +295,13 @@ where the OS part is overloaded to denote a specific ABI---into GCC
                     (substitute* "gcc/config/aarch64/t-aarch64-linux"
                       (("lib64") "lib")))
 
-                  ;; TODO: Make this unconditional in core-updates.
                   ;; The STARTFILE_PREFIX_SPEC prevents gcc from finding the
                   ;; gcc:lib output, which causes ld to not find -lgcc_s.
-                  ,@(if (target-riscv64?)
-                     `((when (file-exists? "gcc/config/riscv")
-                         (substitute* "gcc/config/riscv/linux.h"
-                           (("define STARTFILE_PREFIX_SPEC")
-                           "define __STARTFILE_PREFIX_SPEC"))))
-                     '())
+                  (when (file-exists? "gcc/config/riscv")
+                    (substitute* '("gcc/config/riscv/linux.h"
+                                   "gcc/config/riscv/riscv.h")  ; GCC < 10
+                      (("define STARTFILE_PREFIX_SPEC")
+                      "define __STARTFILE_PREFIX_SPEC")))
 
                   (when (file-exists? "libbacktrace")
                     ;; GCC 4.8+ comes with libbacktrace.  By default it builds
@@ -658,16 +656,17 @@ It also includes runtime support libraries for these languages.")
 (define-public gcc-10
   (package
    (inherit gcc-8)
-   (version "10.3.0")
+   (version "10.4.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gcc/gcc-"
                                 version "/gcc-" version ".tar.xz"))
             (sha256
              (base32
-              "0i6378ig6h397zkhd7m4ccwjx5alvzrf2hm27p1pzwjhlv0h9x34"))
+              "1wg4xdizkksmwi66mvv2v4pk3ja8x64m7v9gzhykzd3wrmdpsaf9"))
             (patches (search-patches "gcc-9-strmov-store-file-names.patch"
-                                     "gcc-5.0-libvtv-runpath.patch"))
+                                     "gcc-5.0-libvtv-runpath.patch"
+                                     "gcc-10-tree-sra-union-handling.patch"))
             (modules '((guix build utils)))
             (snippet gcc-canadian-cross-objdump-snippet)))
    (properties
@@ -688,7 +687,8 @@ It also includes runtime support libraries for these languages.")
              (base32
               "0fdclcwf728wbq52vphfcjywzhpsjp3kifzj3pib3xcihs0z4z5l"))
             (patches (search-patches "gcc-9-strmov-store-file-names.patch"
-                                     "gcc-5.0-libvtv-runpath.patch"))
+                                     "gcc-5.0-libvtv-runpath.patch"
+                                     "gcc-10-tree-sra-union-handling.patch"))
             (modules '((guix build utils)))
             (snippet gcc-canadian-cross-objdump-snippet)))
 
@@ -718,7 +718,7 @@ It also includes runtime support libraries for these languages.")
 
 ;; Note: When changing the default gcc version, update
 ;;       the gcc-toolchain-* definitions.
-(define-public gcc gcc-10)
+(define-public gcc gcc-11)
 
 
 ;;;
@@ -821,8 +821,33 @@ using compilers other than GCC."
     (name "libstdc++")
     (arguments
      `(#:out-of-source? #t
+       #:modules ((srfi srfi-1)
+                  (srfi srfi-26)
+                  ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
+         ,@(if (version>=? (package-version gcc) "11")
+               '((add-after 'unpack 'hide-gcc-headers
+                   (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                     (let ((gcc (assoc-ref (or native-inputs inputs) "gcc")))
+                       ;; Fix a regression in GCC 11 where the GCC headers
+                       ;; shadows glibc headers when building libstdc++.  An
+                       ;; upstream fix was added in GCC 11.3.0, but it only
+                       ;; hides system include directories, not those on
+                       ;; CPLUS_INCLUDE_PATH.  See discussion at
+                       ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100017>
+                       ;; and the similar adjustment in GCC-FINAL.
+                       (substitute* "libstdc++-v3/src/c++17/Makefile.in"
+                         (("AM_CXXFLAGS = ")
+                          (string-append "CPLUS_INCLUDE_PATH = "
+                                         (string-join
+                                          (remove (cut string-prefix? gcc <>)
+                                                  (string-split
+                                                   (getenv "CPLUS_INCLUDE_PATH")
+                                                   #\:))
+                                          ":")
+                                         "\nAM_CXXFLAGS = ")))))))
+               '())
          ;; Force rs6000 (i.e., powerpc) libdir to be /lib and not /lib64.
          (add-before 'chdir 'fix-rs6000-libdir
            (lambda _
@@ -1128,7 +1153,7 @@ provides the GNU compiler for the Go programming language."))
   (custom-gcc gcc-12 "gcc-objc" '("objc")
               %objc-search-paths))
 
-(define-public gcc-objc gcc-objc-10)
+(define-public gcc-objc gcc-objc-11)
 
 (define %objc++-search-paths
   (list (search-path-specification
@@ -1178,7 +1203,7 @@ provides the GNU compiler for the Go programming language."))
   (custom-gcc gcc-12 "gcc-objc++" '("obj-c++")
               %objc++-search-paths))
 
-(define-public gcc-objc++ gcc-objc++-10)
+(define-public gcc-objc++ gcc-objc++-11)
 
 (define (make-libstdc++-doc gcc)
   "Return a package with the libstdc++ documentation for GCC."
@@ -1239,17 +1264,17 @@ provides the GNU compiler for the Go programming language."))
 (define-public isl
   (package
     (name "isl")
-    (version "0.23")
+    (version "0.24")
     (source (origin
              (method url-fetch)
              ;; Used to be at isl.gforge.inria.fr.
              (uri (list (string-append "mirror://sourceforge/libisl/isl-"
-                                       version ".tar.bz2")
+                                       version ".tar.xz")
                         (string-append %gcc-infrastructure
-                                       "isl-" version ".tar.bz2")))
+                                       "isl-" version ".tar.xz")))
              (sha256
               (base32
-               "0k91zck10zxs9sk3yrbb92y1j3w981w3fbwkfwd7kl779b0j52f5"))))
+               "1bgbk6n93qqn7w8v21kxf4x6dc3z0ypqrzvgfd46nhagak60ac84"))))
     (build-system gnu-build-system)
     (outputs '("out" "static"))
     (arguments
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 9e422dbe97..561e62a696 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -77,11 +77,11 @@
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("zlib" ,zlib)))
+     (list fontconfig
+           freetype
+           libjpeg-turbo
+           libpng
+           zlib))
     (home-page "https://www.libgd.org/")
     (synopsis "Library for the dynamic creation of images by programmers")
     (description
@@ -93,7 +93,10 @@ most anything else, on the fly.  While not restricted to use on the web, the
 most common applications of GD involve website development.")
     (license (non-copyleft "file://COPYING"
                            "See COPYING file in the distribution."))
-    (properties '((cpe-name . "libgd")))))
+    (properties '((cpe-name . "libgd")
+                  (upstream-name . "libgd")
+                  (release-monitoring-url
+                   . "https://github.com/libgd/libgd/releases")))))
 
 (define-public perl-gd
   (package
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 7789564c84..d210cd63b5 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -309,7 +309,6 @@ topology functions.")
            libshumate           
            libsoup
            libxml2
-           pango-next                   ;TODO: remove when it's the default
            rest-next
            webkitgtk))
     (synopsis "Graphical map viewer and wayfinding program")
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index d606acf798..bf4c98e36c 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -60,7 +60,8 @@
                                   version ".tar.gz"))
               (sha256
                (base32
-                "04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7"))))
+                "04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7"))
+              (patches (search-patches "gettext-libunicode-update.patch"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ;9 MiB of HTML
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index ca522e52ab..93c01a3beb 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2020, 2022 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
@@ -33,6 +33,7 @@
   #:use-module (gnu packages cups)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -41,6 +42,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
@@ -48,243 +50,214 @@
 
 (define-public lcms
   (package
-   (name "lcms")
-   (version "2.12")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://sourceforge/lcms/lcms/" version
-                                "/lcms2-" version ".tar.gz"))
-
-            (sha256 (base32
-                     "1x8hzq8kw16lgjxmqpnqah1p3hrqqhjpcl1ymiah8434x22kjrhq"))))
-   (build-system gnu-build-system)
-   (arguments
-    `(#:configure-flags '("--disable-static")))
-   (inputs `(("libjpeg" ,libjpeg-turbo)
-             ("libtiff" ,libtiff)
-             ("zlib" ,zlib)))
-   (synopsis "Little CMS, a small-footprint colour management engine")
-   (description
-    "Little CMS is a small-footprint colour management engine, with special
+    (name "lcms")
+    (version "2.13.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/lcms/lcms/"
+                                  (version-major+minor version)
+                                  "/lcms2-" version ".tar.gz"))
+              (sha256
+               (base32
+                "121v414bg2zk0fcwx0kigr2l6nxl88nmblfn3gq5lz5jwybffwyl"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
+    (inputs
+     (list libjpeg-turbo libtiff zlib))
+    (synopsis "Little CMS, a small-footprint colour management engine")
+    (description
+     "Little CMS is a small-footprint colour management engine, with special
 focus on accuracy and performance.  It uses the International Color
 Consortium standard (ICC), approved as ISO 15076-1.")
-   (license license:x11)
-   (home-page "https://www.littlecms.com/")
-   (properties '((cpe-name . "little_cms_color_engine")))))
+    (license license:x11)
+    (home-page "https://www.littlecms.com/")
+    (properties '((cpe-name . "little_cms_color_engine")))))
 
 (define-public libpaper
   (package
-   (name "libpaper")
-   (version "1.1.24")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append
-                   ;; Debian moved their libpaper-1.1.24 to archive.debian.net
-                   ;; but in the move the hash of their tarball changed.
-                   "http://pkgs.fedoraproject.org/repo/pkgs/libpaper/libpaper_"
-                   version ".tar.gz/5bc87d494ba470aba54f6d2d51471834/libpaper_"
-                   version ".tar.gz"))
-            (sha256 (base32
-                     "0zhcx67afb6b5r936w5jmaydj3ks8zh83n9rm5sv3m3k8q8jib1q"))))
-   (build-system gnu-build-system)
-   (native-inputs
-    (list automake)) ; For up to date 'config.guess' and 'config.sub'.
-   (arguments
-    `(#:configure-flags '("--disable-static")
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'fix-configure
-          (lambda* (#:key inputs native-inputs #:allow-other-keys)
-            ;; Replace outdated config.sub and config.guess:
-            (for-each (lambda (file)
-                        (install-file
-                         (string-append (assoc-ref
-                                         (or native-inputs inputs) "automake")
-                                        "/share/automake-"
-                                        ,(version-major+minor
-                                          (package-version automake))
-                                        "/" file) "."))
-                      '("config.sub" "config.guess"))
-            #t)))))
-   (synopsis "Library for handling paper sizes")
-   (description
-    "The paper library and accompanying files are intended to provide a simple
+    (name "libpaper")
+    (version "1.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/rrthomas/libpaper/releases"
+                                  "/download/v" version "/libpaper-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1cjs3bvzif433y9js8m9hlscgvsbihww4dq0d3vv58fn474wkffd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (list help2man))
+    (arguments
+     '(#:configure-flags '("--disable-static"
+                           ;; Tests require a relocatable build.
+                           "--enable-relocatable")))
+    (outputs '("out" "debug"))
+    (home-page "https://github.com/rrthomas/libpaper")
+    (synopsis "Library for handling paper sizes")
+    (description
+     "The paper library and accompanying files are intended to provide a simple
 way for applications to take actions based on a system- or user-specified
 paper size.")
-   (license license:gpl2)
-   (home-page "https://packages.qa.debian.org/libp/libpaper.html")))
+    ;; The library is LGPL3+, everything else GPL3+.
+    (license (list license:lgpl3+ license:gpl3+))))
 
 (define-public psutils
   (package
-   (name "psutils")
-   (version "17")
-   (source (origin
-            (method url-fetch)
-            (uri "ftp://ftp.knackered.org/pub/psutils/psutils.tar.gz")
-            (sha256 (base32
-                     "1r4ab1fvgganm02kmm70b2r1azwzbav2am41gbigpa2bb1wynlrq"))))
-   (build-system gnu-build-system)
-   (inputs (list perl))
-   (arguments
-    `(#:tests? #f ; none provided
-      #:phases
-      (modify-phases %standard-phases
-        (replace 'configure
-          (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
-           (let ((perl (assoc-ref inputs "perl"))
-                 (out (assoc-ref outputs "out")))
-            (copy-file "Makefile.unix" "Makefile")
-            (substitute* "Makefile"
-              (("/usr/local/bin/perl") (string-append perl "/bin/perl")))
-            (substitute* "Makefile"
-              (("/usr/local") out))
-            ;; for the install phase
-            (substitute* "Makefile"
-              (("-mkdir") "mkdir -p"))
-            ;; drop installation of non-free files
-            (substitute* "Makefile"
-              ((" install.include") "")))
-           #t)))))
-   (synopsis "Collection of utilities for manipulating PostScript documents")
-   (description
-    "PSUtils is a collection of utilities for manipulating PostScript
+    (name "psutils")
+    (version "2.09")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/rrthomas/psutils/releases"
+                                  "/download/v" version "/psutils-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1nmp0hb7c4a315vv1mqw2cbckvca8bzh1cv3gdvwwy24w9qba6p3"))))
+    (build-system gnu-build-system)
+    (inputs (list perl))
+    (native-inputs
+     (list libpaper))
+    (arguments
+     (list #:tests? #f           ;FIXME: requires files not present in tarball
+           #:configure-flags
+           ;; Help the build system locate Perl when cross-compiling.
+           (if (%current-target-system)
+               #~(list (string-append "ac_cv_path_PERL="
+                                      (search-input-file %build-inputs "bin/perl")))
+               #~'())))
+    (synopsis "Collection of utilities for manipulating PostScript documents")
+    (description
+     "PSUtils is a collection of utilities for manipulating PostScript
 documents.  Programs included are psnup, for placing out several logical pages
 on a single sheet of paper, psselect, for selecting pages from a document,
 pstops, for general imposition, psbook, for signature generation for booklet
 printing, and psresize, for adjusting page sizes.")
-   (license (license:non-copyleft "file://LICENSE"
-                                "See LICENSE in the distribution."))
-   (home-page "http://knackered.org/angus/psutils/")))
+    (home-page "https://github.com/rrthomas/psutils")
+    (license (list license:gpl3+
+                   ;; This file carries the "historical" psutils license (v1),
+                   ;; which is "effectively BSD 3-clause" (a quote from the file).
+                   (license:non-copyleft
+                    "file://extractres.in.in"
+                    "See extractres.in.in in the distribution.")))))
 
 (define-public ghostscript
   (package
     (name "ghostscript")
-    (version "9.54.0")
+    (version "9.56.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/ArtifexSoftware/"
-                            "ghostpdl-downloads/releases/download/gs"
-                            (string-delete #\. version)
-                            "/ghostscript-" version ".tar.xz"))
-        (sha256
-         (base32
-          "0fvfvv6di5s6j4sy4gaw65klm23dby39bkdjxxq4w3v0vqyb9dy2"))
-        (patches (search-patches "ghostscript-no-header-creationdate.patch"
-                                 "ghostscript-no-header-id.patch"
-                                 "ghostscript-no-header-uuid.patch"))
-        (modules '((guix build utils)))
-        (snippet
-          ;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so
-          ;; we leave it, at least for now.
-          ;; TODO Try unbundling ijs, which is developed alongside Ghostscript.
-          ;; Likewise for the thread-safe lcms2 fork called "lcms2art".
-         '(begin
-            (for-each delete-file-recursively '("freetype" "jbig2dec" "jpeg"
-                                                "libpng" "tiff" "zlib"))
-            #t))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/ArtifexSoftware/"
+                           "ghostpdl-downloads/releases/download/gs"
+                           (string-delete #\. version)
+                           "/ghostscript-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1r5qash65m6ignki6z72q4rlai9ka99xrxnmqd19n02has00cd6l"))
+       (patches (search-patches "ghostscript-no-header-creationdate.patch"
+                                "ghostscript-no-header-id.patch"
+                                "ghostscript-no-header-uuid.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so
+        ;; we leave it, at least for now.
+        ;; TODO Try unbundling ijs, which is developed alongside Ghostscript.
+        ;; Likewise for the thread-safe lcms2 fork called "lcms2art".
+        '(begin
+           (for-each delete-file-recursively '("freetype" "jbig2dec" "jpeg"
+                                               "libpng" "tiff" "zlib"))))))
     (build-system gnu-build-system)
-    (outputs '("out" "doc"))                  ;19 MiB of HTML/PS doc + examples
+    (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")
-             "--with-system-libtiff"
-             "LIBS=-lz"
-             (string-append "ZLIBDIR="
-                            (assoc-ref %build-inputs "zlib") "/include")
-             "--enable-dynamic"
-             "--disable-compile-inits"
-             (string-append "--with-fontpath="
-                            (assoc-ref %build-inputs "font-ghostscript")
-                            "/share/fonts/type1/ghostscript")
+     (list
+      #:disallowed-references '("doc")
+      #:configure-flags
+      #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
+              "--with-system-libtiff"
+              "LIBS=-lz"
+              (string-append "ZLIBDIR="
+                             (dirname (search-input-file %build-inputs
+                                                         "include/zlib.h")))
+              "--enable-dynamic"
+              "--disable-compile-inits"
+              (string-append "--with-fontpath="
+                             (search-input-directory
+                              %build-inputs
+                              "share/fonts/type1/ghostscript"))
 
-             ,@(if (%current-target-system)
-                   '(;; Specify the native compiler, which is used to build 'echogs'
-                     ;; and other intermediary tools when cross-compiling; see
-                     ;; <https://ghostscript.com/FAQ.html>.
-                     "CCAUX=gcc"
+              #$@(if (%current-target-system)
+                     '(;; Specify the native compiler, which is used to build 'echogs'
+                       ;; and other intermediary tools when cross-compiling; see
+                       ;; <https://ghostscript.com/FAQ.html>.
+                       "CCAUX=gcc"
 
-                     ;; Save 'config.log' etc. of the native build under
-                     ;; auxtmp/, useful for debugging.
-                     "--enable-save_confaux")
-                   '()))
-       #:phases
-       (modify-phases %standard-phases
-        (add-before 'configure 'create-output-directory
-          (lambda* (#:key outputs #:allow-other-keys)
-            ;; The configure script refuses to function if the directory
-            ;; specified as -rpath does not already exist.
-            (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
-            #t))
-        (add-after 'configure 'remove-doc-reference
-          (lambda _
-            ;; Don't retain a reference to the 'doc' output in 'gs'.
-            ;; The only use of this definition is in the output of
-            ;; 'gs --help', so this change is fine.
-            (substitute* "base/gscdef.c"
-              (("GS_DOCDIR")
-               "\"~/.guix-profile/share/doc/ghostscript\""))
-            #t))
-         (add-after 'configure 'patch-config-files
-           (lambda _
-             (substitute* "base/unixhead.mak"
-               (("/bin/sh") (which "sh")))
-             #t))
-         ,@(if (%current-target-system)
-               `((add-after 'configure 'add-native-lz
-                   (lambda _
-                     ;; Add missing '-lz' for native tools such as 'mkromfs'.
-                     (substitute* "Makefile"
-                       (("^AUXEXTRALIBS=(.*)$" _ value)
-                        (string-append "AUXEXTRALIBS = -lz " value "\n")))
-                     #t)))
-               '())
-         (replace 'build
-           (lambda _
-             ;; Build 'libgs.so', but don't build the statically-linked 'gs'
-             ;; binary (saves 22 MiB).
-             (invoke "make" "so" "-j"
-                     (number->string (parallel-job-count)))))
-         (replace 'install
-           (lambda _
-             (invoke "make" "soinstall")))
-         (add-after 'install 'create-gs-symlink
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               ;; Some programs depend on having a 'gs' binary available.
-               (symlink "gsc" (string-append out "/bin/gs"))
-               #t))))))
+                       ;; Save 'config.log' etc. of the native build under
+                       ;; auxtmp/, useful for debugging.
+                       "--enable-save_confaux")
+                     '()))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'create-output-directory
+            (lambda _
+              ;; The configure script refuses to function if the directory
+              ;; specified as -rpath does not already exist.
+              (mkdir-p (string-append #$output "/lib"))))
+          (add-after 'configure 'remove-doc-reference
+            (lambda _
+              ;; Don't retain a reference to the 'doc' output in 'gs'.
+              ;; The only use of this definition is in the output of
+              ;; 'gs --help', so this change is fine.
+              (substitute* "base/gscdef.c"
+                (("GS_DOCDIR")
+                 "\"~/.guix-profile/share/doc/ghostscript\""))))
+          (add-after 'configure 'patch-config-files
+            (lambda _
+              (substitute* "base/unixhead.mak"
+                (("/bin/sh") (which "sh")))))
+          #$@(if (%current-target-system)
+                 '((add-after 'configure 'add-native-lz
+                     (lambda _
+                       ;; Add missing '-lz' for native tools such as 'mkromfs'.
+                       (substitute* "Makefile"
+                         (("^AUXEXTRALIBS=(.*)$" _ value)
+                          (string-append "AUXEXTRALIBS = -lz " value "\n"))))))
+                 '())
+          (replace 'build
+            (lambda _
+              ;; Build 'libgs.so', but don't build the statically-linked 'gs'
+              ;; binary (saves 22 MiB).
+              (invoke "make" "so" "-j"
+                      (number->string (parallel-job-count)))))
+          (replace 'install
+            (lambda _
+              (invoke "make" "soinstall")))
+          (add-after 'install 'create-gs-symlink
+            (lambda _
+              ;; Some programs depend on having a 'gs' binary available.
+              (symlink "gsc" (string-append #$output "/bin/gs")))))))
     (native-inputs
-     `(("perl" ,perl)
-       ("pkg-config" ,pkg-config)       ;needed for freetype
-       ("python" ,python-minimal-wrapper)
-       ("tcl" ,tcl)
-
-       ;; When cross-compiling, some of the natively-built tools require all
-       ;; these libraries.
-       ,@(if (%current-target-system)
-             `(("zlib/native" ,zlib)
-               ("libjpeg/native" ,libjpeg-turbo))
-             '())))
+     (append
+      (list perl
+            pkg-config                  ;needed for freetype
+            python-minimal-wrapper
+            tcl)
+      ;; When cross-compiling, some of the natively-built tools require all
+      ;; these libraries.
+      (if (%current-target-system)
+          (list zlib libjpeg-turbo)
+          '())))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("font-ghostscript" ,font-ghostscript)
-       ("jbig2dec" ,jbig2dec)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpaper" ,libpaper)
-       ("libpng" ,libpng)
-       ("libtiff" ,libtiff)
-       ("zlib" ,zlib)))
+     (list fontconfig
+           freetype
+           font-ghostscript
+           jbig2dec
+           libjpeg-turbo
+           libpaper
+           libpng
+           libtiff
+           zlib))
     (synopsis "PostScript and PDF interpreter")
     (description
      "Ghostscript is an interpreter for the PostScript language and the PDF
@@ -297,15 +270,14 @@ output file formats and printers.")
 (define-public ghostscript/x
   (package/inherit ghostscript
     (name (string-append (package-name ghostscript) "-with-x"))
-    (inputs `(("libxext" ,libxext)
-              ("libxt" ,libxt)
-              ,@(package-inputs ghostscript)))))
+    (inputs (modify-inputs (package-inputs ghostscript)
+              (prepend libxext libxt)))))
 
 (define-public ghostscript/cups
   (package/inherit ghostscript
     (name "ghostscript-with-cups")
-    (inputs `(("cups" ,cups-minimal)
-              ,@(package-inputs ghostscript)))))
+    (inputs (modify-inputs (package-inputs ghostscript)
+              (prepend cups-minimal)))))
 
 (define-public ijs
   (package
@@ -388,14 +360,14 @@ Ghostscript.  It currently includes the 35 standard PostScript fonts.")
 (define-public libspectre
   (package
    (name "libspectre")
-   (version "0.2.9")
+   (version "0.2.10")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://libspectre.freedesktop.org/releases"
                                 "/libspectre-" version ".tar.gz"))
             (sha256
              (base32
-              "1vgvxp77d5d9chhx4i9cv9hifw4x10jgw6aw8l2v90dgnm99rbj9"))))
+              "01sdaakrv5js8r6gj2r1ankyl304161z060f25mrmz3b1ylb4q6g"))))
    (build-system gnu-build-system)
    (inputs (list ghostscript))
    (native-inputs (list pkg-config))
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 5f54aa7483..7810d1d8ae 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
-;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2021, 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -267,73 +267,72 @@ also known as DXTn or DXTC) for Mesa.")
 (define-public mesa
   (package
     (name "mesa")
-    (version "21.3.8")
+    (version "22.1.7")
     (source
-      (origin
-        (method url-fetch)
-        (uri (list (string-append "https://mesa.freedesktop.org/archive/"
-                                  "mesa-" version ".tar.xz")
-                   (string-append "ftp://ftp.freedesktop.org/pub/mesa/"
-                                  "mesa-" version ".tar.xz")
-                   (string-append "ftp://ftp.freedesktop.org/pub/mesa/"
-                                  version "/mesa-" version ".tar.xz")))
-        (sha256
-         (base32
-          "19wx5plk6z0hhi0zdzxjx8ynl3lhlc5mbd8vhwqyk92kvhxjf3g7"))
-        (patches
-         (search-patches "mesa-skip-tests.patch"))))
+     (origin
+       (method url-fetch)
+       (uri (list (string-append "https://mesa.freedesktop.org/archive/"
+                                 "mesa-" version ".tar.xz")
+                  (string-append "ftp://ftp.freedesktop.org/pub/mesa/"
+                                 "mesa-" version ".tar.xz")
+                  (string-append "ftp://ftp.freedesktop.org/pub/mesa/"
+                                 version "/mesa-" version ".tar.xz")))
+       (sha256
+        (base32
+         "12ax6lmshc8aqzw5ca7ab7f7z64n9nyzci4r1s6y1l0iryr8x0ys"))))
     (build-system meson-build-system)
     (propagated-inputs
-      (list ;; The following are in the Requires.private field of gl.pc.
-            libdrm
-            libvdpau
-            libx11
-            libxdamage
-            libxfixes
-            libxshmfence
-            libxxf86vm
-            xorgproto))
+     ;; The following are in the Requires.private field of gl.pc.
+     (list libdrm
+           libvdpau
+           libx11
+           libxdamage
+           libxfixes
+           libxshmfence
+           libxxf86vm
+           xorgproto))
     (inputs
-     (append (list expat
-                   elfutils                 ;libelf required for r600 when using llvm
-                   (force libva-without-mesa)
-                   libxml2
-                   libxrandr
-                   libxvmc
-                   wayland
-                   wayland-protocols)
-             ;; TODO: Resort alphabetically.
-             ;; Note: update the 'clang' input of mesa-opencl when bumping this.
-             (list llvm-11)))
+     (list elfutils                  ;libelf required for r600 when using llvm
+           expat
+           (force libva-without-mesa)
+           libxml2
+           libxrandr
+           libxvmc
+           ;; Note: update the 'clang' input of mesa-opencl when bumping this.
+           llvm
+           wayland
+           wayland-protocols))
     (native-inputs
-     (append (list bison
-                   flex
-                   gettext-minimal
-                   pkg-config
-                   python-wrapper
-                   python-libxml2                  ;for OpenGL ES 1.1 and 2.0 support
-                   python-mako
-                   (@ (gnu packages base) which))
-             ;; TODO: Resort alphabetically.
-             (list glslang)))
+     (list bison
+           flex
+           gettext-minimal
+           glslang
+           pkg-config
+           python-libxml2               ;for OpenGL ES 1.1 and 2.0 support
+           python-mako
+           python-wrapper
+           (@ (gnu packages base) which)))
     (outputs '("out" "bin"))
     (arguments
      `(#:configure-flags
        '(,@(match (%current-system)
              ("aarch64-linux"
               ;; TODO: Fix svga driver for non-Intel architectures.
-              '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl"))
+              '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,\
+panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl"))
              ("armhf-linux"
               ;; Freedreno FTBFS when built on a 64-bit machine.
-              '("-Dgallium-drivers=etnaviv,kmsro,lima,nouveau,panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl"))
+              '("-Dgallium-drivers=etnaviv,kmsro,lima,nouveau,panfrost,\
+r300,r600,swrast,tegra,v3d,vc4,virgl"))
              ((or "powerpc64le-linux" "powerpc-linux" "riscv64-linux")
               '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,swrast,virgl"))
              (_
-              '("-Dgallium-drivers=iris,nouveau,r300,r600,radeonsi,svga,swrast,virgl")))
+              '("-Dgallium-drivers=iris,nouveau,r300,r600,radeonsi,\
+svga,swrast,virgl")))
          ;; Enable various optional features.  TODO: opencl requires libclc,
          ;; omx requires libomxil-bellagio
          "-Dplatforms=x11,wayland"
-         "-Dglx=dri"        ;Thread Local Storage, improves performance
+         "-Dglx=dri"               ;Thread Local Storage, improves performance
          ;; "-Dopencl=true"
          ;; "-Domx=true"
          "-Dosmesa=true"
@@ -363,15 +362,7 @@ also known as DXTn or DXTC) for Mesa.")
          ;; Also enable the tests.
          "-Dbuild-tests=true"
 
-         ;; on non-intel systems, drop i915 and i965
-         ;; from the default dri drivers
-         ,@(match (%current-system)
-             ((or "x86_64-linux" "i686-linux")
-              '("-Ddri-drivers=i915,i965,nouveau,r200,r100"))
-             (_
-              '("-Ddri-drivers=nouveau,r200,r100")))
-
-                "-Dllvm=enabled")       ; default is x86/x86_64 only
+         "-Dllvm=enabled")              ; default is x86/x86_64 only
 
        ;; XXX: 'debugoptimized' causes LTO link failures on some drivers.  The
        ;; documentation recommends using 'release' for performance anyway.
@@ -420,10 +411,10 @@ also known as DXTn or DXTC) for Mesa.")
                     (substitute* "src/amd/common/meson.build"
                       (("and not with_platform_windows") "and with_platform_windows"))))
                  ("i686-linux"
-                  ;; Disable new test from Mesa 19 that fails on i686.  Upstream
-                  ;; report: <https://bugs.freedesktop.org/show_bug.cgi?id=110612>.
-                  `((substitute* "src/util/tests/format/meson.build"
-                      (("'u_format_test',") ""))))
+                  ;; This test is known to fail on i686 (see:
+                  ;; https://gitlab.freedesktop.org/mesa/mesa/-/issues/4091).
+                  `((substitute* "src/util/meson.build"
+                      ((".*'tests/u_debug_stack_test.cpp',.*") ""))))
                  ("aarch64-linux"
                   ;; The ir3_disasm test segfaults.
                   ;; The simplest way to skip it is to run a different test instead.
@@ -522,7 +513,7 @@ from software emulation to complete hardware acceleration for modern GPUs.")
        (prepend libclc)))
     (native-inputs
      (modify-inputs (package-native-inputs mesa)
-       (prepend clang-11)))))
+       (prepend clang)))))
 
 (define-public mesa-opencl-icd
   (package/inherit mesa-opencl
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 61040c91e7..7d3cdc7877 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -100,15 +100,15 @@
 (define dbus
   (package
     (name "dbus")
-    (version "1.12.20")
+    (version "1.14.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://dbus.freedesktop.org/releases/dbus/dbus-"
-                    version ".tar.gz"))
+                    version ".tar.xz"))
               (sha256
                (base32
-                "1zp5gpx61v1cpqf2zwb1cidhp9xylvw49d3zydkxqk6b1qa20xpp"))
+                "1m7bibavml4gx9d67j403l0kzd1a4z8lhrpxb2as3q4nfpiwrmyc"))
               (patches (search-patches "dbus-helper-search-path.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -212,7 +212,7 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
 (define glib
   (package
     (name "glib")
-    (version "2.70.2")
+    (version "2.72.3")
     (source
      (origin
        (method url-fetch)
@@ -221,7 +221,7 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                        name "/" (string-take version 4) "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "0vw08p4jllavp9qmlqg1yl1zanmy53yid46wipas6gfdhnf4al85"))
+        (base32 "1w25sf2wxkkah2p2w189q58mza3zv8z1fh2q1m82sldq4kva4faa"))
        (patches
         (search-patches "glib-appinfo-watch.patch"
                         "glib-skip-failing-test.patch"))
@@ -236,127 +236,122 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                "bin"                    ;executables; depends on Python
                "debug"))
     (arguments
-     `(#:disallowed-references
-       (,tzdata-for-tests
-        ;; Verify glib-mkenums, gtester, ... use the cross-compiled
-        ;; python.
-        ,@(if (%current-target-system)
-              (map (cut gexp-input <> #:native? #t)
-                   `(,(this-package-native-input "python")
-                     ,(this-package-native-input "python-wrapper")))
-              '()))
-       #:configure-flags ,#~(list "--default-library=both"
-                                  "-Dman=false"
-                                  "-Dselinux=disabled"
-                                  (string-append "--bindir="
-                                                 #$output:bin "/bin"))
-       #:phases
-       (modify-phases %standard-phases
-         ;; Needed to pass the test phase on slower ARM and i686 machines.
-         (add-after 'unpack 'increase-test-timeout
-           (lambda _
-             (substitute* "meson.build"
-               (("(test_timeout.*) = ([[:digit:]]+)" all first second)
-                (string-append first " = " second "0")))))
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (substitute* "gio/tests/meson.build"
-               ((".*'testfilemonitor'.*") ;marked as flaky
-                ""))
-             (with-directory-excursion "glib/tests"
-               (substitute* '("unix.c" "utils.c")
-                 (("[ \t]*g_test_add_func.*;") "")))
-             (with-directory-excursion "gio/tests"
-               (substitute* '("contenttype.c" "gdbus-address-get-session.c"
-                              "gdbus-peer.c" "appinfo.c" "desktop-app-info.c")
-                 (("[ \t]*g_test_add_func.*;") "")))
+     (list
+      #:disallowed-references
+      (cons tzdata-for-tests
+            ;; Verify glib-mkenums, gtester, ... use the cross-compiled
+            ;; python.
+            (if (%current-target-system)
+                (map (cut gexp-input <> #:native? #t)
+                     `(,(this-package-native-input "python")
+                       ,(this-package-native-input "python-wrapper")))
+                '()))
+      #:configure-flags #~(list "--default-library=both"
+                                "-Dman=false"
+                                "-Dselinux=disabled"
+                                (string-append "--bindir="
+                                               #$output:bin "/bin"))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Needed to pass the test phase on slower ARM and i686 machines.
+          (add-after 'unpack 'increase-test-timeout
+            (lambda _
+              (substitute* "meson.build"
+                (("(test_timeout.*) = ([[:digit:]]+)" all first second)
+                 (string-append first " = " second "0")))))
+          (add-after 'unpack 'disable-failing-tests
+            (lambda _
+              (substitute* "gio/tests/meson.build"
+                ((".*'testfilemonitor'.*") ;marked as flaky
+                 ""))
+              (with-directory-excursion "glib/tests"
+                (substitute* '("unix.c" "utils.c")
+                  (("[ \t]*g_test_add_func.*;") "")))
+              (with-directory-excursion "gio/tests"
+                (substitute* '("contenttype.c" "gdbus-address-get-session.c"
+                               "gdbus-peer.c" "appinfo.c" "desktop-app-info.c")
+                  (("[ \t]*g_test_add_func.*;") "")))
 
-             ,@(if (target-x86-32?)
-                   ;; Comment out parts of timer.c that fail on i686 due to
-                   ;; excess precision when building with GCC 10:
-                   ;; <https://gitlab.gnome.org/GNOME/glib/-/issues/820>.
-                   '((substitute* "glib/tests/timer.c"
-                       (("^  g_assert_cmpuint \\(micros.*" all)
-                        (string-append "//" all "\n"))
-                       (("^  g_assert_cmpfloat \\(elapsed, ==.*" all)
-                        (string-append "//" all "\n"))))
-                   '())))
-         ;; Python references are not being patched in patch-phase of build,
-         ;; despite using python-wrapper as input. So we patch them manually.
-         ;;
-         ;; These python scripts are both used during build and installed,
-         ;; so at first, use a python from 'native-inputs', not 'inputs'. When
-         ;; cross-compiling, the 'patch-shebangs' phase will replace
-         ;; the native python with a python from 'inputs'.
-         (add-after 'unpack 'patch-python-references
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (substitute* '("gio/gdbus-2.0/codegen/gdbus-codegen.in"
-                            "glib/gtester-report.in"
-                            "gobject/glib-genmarshal.in"
-                            "gobject/glib-mkenums.in")
-               (("@PYTHON@")
-                (search-input-file (or native-inputs inputs)
-                                   (string-append
-                                    "/bin/python"
-                                    ,(version-major+minor
-                                      (package-version python))))))))
-         (add-before 'check 'pre-check
-           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
-             ;; For tests/gdatetime.c.
-             (setenv "TZDIR"
-                     (search-input-directory (or native-inputs inputs)
-                                             "share/zoneinfo"))
-             ;; Some tests want write access there.
-             (setenv "HOME" (getcwd))
-             (setenv "XDG_CACHE_HOME" (getcwd))))
-         (add-after 'install 'move-static-libraries
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (static (assoc-ref outputs "static")))
-               (mkdir-p (string-append static "/lib"))
-               (for-each (lambda (a)
-                           (rename-file a (string-append static "/lib/"
-                                                         (basename a))))
-                         (find-files out "\\.a$")))))
-         (add-after 'install 'patch-pkg-config-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               ;; 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=.*")
-                  "")
-                 (("=\\$\\{bindir\\}/")
-                  "="))))))))
+              #$@(if (target-x86-32?)
+                     ;; Comment out parts of timer.c that fail on i686 due to
+                     ;; excess precision when building with GCC 10:
+                     ;; <https://gitlab.gnome.org/GNOME/glib/-/issues/820>.
+                     '((substitute* "glib/tests/timer.c"
+                         (("^  g_assert_cmpuint \\(micros.*" all)
+                          (string-append "//" all "\n"))
+                         (("^  g_assert_cmpfloat \\(elapsed, ==.*" all)
+                          (string-append "//" all "\n"))))
+                     '())))
+          ;; Python references are not being patched in patch-phase of build,
+          ;; despite using python-wrapper as input. So we patch them manually.
+          ;;
+          ;; These python scripts are both used during build and installed,
+          ;; so at first, use a python from 'native-inputs', not 'inputs'. When
+          ;; cross-compiling, the 'patch-shebangs' phase will replace
+          ;; the native python with a python from 'inputs'.
+          (add-after 'unpack 'patch-python-references
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (substitute* '("gio/gdbus-2.0/codegen/gdbus-codegen.in"
+                             "glib/gtester-report.in"
+                             "gobject/glib-genmarshal.in"
+                             "gobject/glib-mkenums.in")
+                (("@PYTHON@")
+                 (search-input-file (or native-inputs inputs)
+                                    (string-append
+                                     "/bin/python"
+                                     #$(version-major+minor
+                                        (package-version python))))))))
+          (add-before 'check 'pre-check
+            (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
+              ;; For tests/gdatetime.c.
+              (setenv "TZDIR"
+                      (search-input-directory (or native-inputs inputs)
+                                              "share/zoneinfo"))
+              ;; Some tests want write access there.
+              (setenv "HOME" (getcwd))
+              (setenv "XDG_CACHE_HOME" (getcwd))))
+          (add-after 'install 'move-static-libraries
+            (lambda _
+              (mkdir-p (string-append #$output:static "/lib"))
+              (for-each (lambda (a)
+                          (rename-file a (string-append #$output:static "/lib/"
+                                                        (basename a))))
+                        (find-files #$output "\\.a$"))))
+          (add-after 'install 'patch-pkg-config-files
+            (lambda* (#:key outputs #:allow-other-keys)
+              ;; 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 (search-input-file outputs "lib/pkgconfig/gio-2.0.pc")
+                        (search-input-file outputs "lib/pkgconfig/glib-2.0.pc"))
+                (("^bindir=.*")
+                 "")
+                (("=\\$\\{bindir\\}/")
+                 "=")))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("m4" ,m4)                       ; for installing m4 macros
-       ("perl" ,perl)                   ; needed by GIO tests
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)               ; For 'patch-python-references
-       ("python-wrapper" ,python-wrapper)
-       ("tzdata" ,tzdata-for-tests)))   ; for tests/gdatetime.c
-    (inputs
-     (list bash-completion
-           ;; "python", "python-wrapper" and "bash-minimal"
-           ;; are for the 'patch-shebangs' phase, to make
-           ;; sure the installed scripts end up with a correct shebang
-           ;; when cross-compiling.
-           python
+     (list dbus
+           gettext-minimal
+           m4                           ;for installing m4 macros
+           perl                         ;needed by GIO tests
+           pkg-config
+           python                       ;for 'patch-python-references
            python-wrapper
-           bash-minimal
-           dbus
-           libelf))
+           tzdata-for-tests))           ;for tests/gdatetime.c
+    (inputs
+     (list ;; "python", "python-wrapper" and "bash-minimal"
+      ;; are for the 'patch-shebangs' phase, to make
+      ;; sure the installed scripts end up with a correct shebang
+      ;; when cross-compiling.
+      bash-minimal
+      python
+      python-wrapper))
     (propagated-inputs
-     (list libffi ; in the Requires.private field of gobject-2.0.pc
-           pcre ; in the Requires.private field of glib-2.0.pc
-           `(,util-linux "lib") ;for libmount
-           zlib))         ; in the Requires.private field of glib-2.0.pc
+     (list libffi             ;in the Requires.private field of gobject-2.0.pc
+           pcre               ;in the Requires.private field of glib-2.0.pc
+           `(,util-linux "lib")  ;for libmount
+           zlib))                ;in the Requires.private field of glib-2.0.pc
     (native-search-paths
      ;; This variable is not really "owned" by GLib, but several related
      ;; packages refer to it: gobject-introspection's tools use it as a search
@@ -441,44 +436,41 @@ functions for strings and common data structures.")
 (define-public glib-with-documentation
   ;; glib's doc must be built in a separate package since it requires gtk-doc,
   ;; which in turn depends on glib.
-  (let ((base glib-next))
-    (package/inherit base
-      (properties (alist-delete 'hidden? (package-properties base)))
-      (outputs (cons "doc" (package-outputs base))) ; 20 MiB of GTK-Doc reference
-      (native-inputs
-       `(("docbook-xml-4.2" ,docbook-xml-4.2)
-         ("docbook-xml-4.5" ,docbook-xml)
-         ("docbook-xsl" ,docbook-xsl)
-         ("gtk-doc" ,gtk-doc)
-         ("libxml2" ,libxml2)
-         ("xsltproc" ,libxslt)
-         ,@(package-native-inputs base)))
-      (arguments
-       (substitute-keyword-arguments (package-arguments base)
-         ((#:configure-flags flags ''())
-          #~(cons "-Dgtk_doc=true"
-                  (delete "-Dman=false" #$flags)))
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-after 'unpack 'patch-docbook-xml
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (with-directory-excursion "docs"
-                   (substitute* (find-files "." "\\.xml$")
-                     (("http://www.oasis-open.org/docbook/xml/4\\.5/")
-                      (string-append (assoc-ref inputs "docbook-xml-4.5")
-                                     "/xml/dtd/docbook/"))
-                     (("http://www.oasis-open.org/docbook/xml/4\\.2/")
-                      (string-append (assoc-ref inputs "docbook-xml-4.2")
-                                     "/xml/dtd/docbook/"))))))
-             (add-after 'install 'move-doc
-               (lambda* (#:key outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (doc (assoc-ref outputs "doc"))
-                        (html (string-append "/share/gtk-doc")))
-                   (mkdir-p (string-append doc "/share"))
-                   (rename-file
-                    (string-append out html)
-                    (string-append doc html))))))))))))
+  (package/inherit glib
+    (properties (alist-delete 'hidden? (package-properties glib)))
+    (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
+    (native-inputs
+     `(("docbook-xml-4.2" ,docbook-xml-4.2)
+       ("docbook-xml-4.5" ,docbook-xml)
+       ("docbook-xsl" ,docbook-xsl)
+       ("gtk-doc" ,gtk-doc)
+       ("libxml2" ,libxml2)
+       ("xsltproc" ,libxslt)
+       ,@(package-native-inputs glib)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments glib)
+       ((#:configure-flags flags ''())
+        #~(cons "-Dgtk_doc=true"
+                (delete "-Dman=false" #$flags)))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (add-after 'unpack 'patch-docbook-xml
+              (lambda* (#:key inputs #:allow-other-keys)
+                (with-directory-excursion "docs"
+                  (substitute* (find-files "." "\\.xml$")
+                    (("http://www.oasis-open.org/docbook/xml/4\\.5/")
+                     (string-append (assoc-ref inputs "docbook-xml-4.5")
+                                    "/xml/dtd/docbook/"))
+                    (("http://www.oasis-open.org/docbook/xml/4\\.2/")
+                     (string-append (assoc-ref inputs "docbook-xml-4.2")
+                                    "/xml/dtd/docbook/"))))))
+            (add-after 'install 'move-doc
+              (lambda _
+                (let ((html "/share/gtk-doc"))
+                  (mkdir-p (string-append #$output:doc "/share"))
+                  (rename-file
+                   (string-append #$output html)
+                   (string-append #$output:doc html)))))))))))
 
 (define (python-extension-suffix python triplet)
   "Determine the suffix for C extensions for PYTHON when compiled
@@ -519,14 +511,14 @@ be used when cross-compiling."
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-    (version "1.66.1")
+    (version "1.72.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/"
                    "gobject-introspection/" (version-major+minor version)
                    "/gobject-introspection-" version ".tar.xz"))
              (sha256
-              (base32 "078n0q7b6z682mf4irclrksm73cyixq295mqnqifl9plwmgaai6x"))
+              (base32 "1g5aps3b20ck96ahy7fjl4nhp9nabkd9rlqd0s1qzn3111cqxzh2"))
              (patches (search-patches
                        "gobject-introspection-cc.patch"
                        "gobject-introspection-girepository.patch"
@@ -575,11 +567,7 @@ be used when cross-compiling."
        ("bison" ,bison)
        ("flex" ,flex)))
     (inputs
-     `(,@(if (%current-target-system)
-             `(("python" ,python))
-             `(("bison" ,bison)
-               ("flex" ,flex)
-               ("python" ,python-wrapper)))
+     `(("python" ,python)
        ("zlib" ,zlib)))
     (propagated-inputs
      (list glib
@@ -679,27 +667,25 @@ The intltool collection can be used to do these things:
 (define itstool
   (package
     (name "itstool")
-    (version "2.0.6")
+    (version "2.0.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://files.itstool.org/itstool/itstool-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1acjgf8zlyk7qckdk19iqaca4jcmywd7vxjbcs1mm6kaf8icqcv2"))))
+               "1jl7gsr7aclb9nvqazr039m86y7f7ivfhl2pixcrbfqjkb97r6kb"))))
     (build-system gnu-build-system)
     (inputs
      (list libxml2 python-libxml2 python))
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-program
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/itstool")))
-               (wrap-program prog
-                 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH"))))
-               #t))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'wrap-program
+            (lambda _
+              (wrap-program (string-append #$output "/bin/itstool")
+                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))))))))
     (home-page "https://itstool.org")
     (synopsis "Tool to translate XML documents with PO files")
     (description
@@ -859,7 +845,7 @@ by GDBus included in Glib.")
 (define glibmm
   (package
     (name "glibmm")
-    (version "2.70.0")
+    (version "2.72.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/glibmm/"
@@ -867,31 +853,29 @@ by GDBus included in Glib.")
                                   "/glibmm-" version ".tar.xz"))
               (sha256
                (base32
-                "085mzpphz71sh5wh71ppikwnxsgn4pk3s4bzz6ingj6wxn5gs240"))))
+                "1n2w2pcpbxjbsxynmar3i5ibr7src6gnrdxb9nn57p5miai4jxia"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
-     `(#:configure-flags
-       (list "-Dbuild-documentation=true")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (substitute* "tests/meson.build"
-               ;; This test uses /etc/fstab as an example file to read
-               ;; from; disable it.
-               (("[ \t]*.*giomm_simple.*$") "")
-               ;; This test does a DNS lookup, and then expects to be able
-               ;; to open a TLS session; just skip it.
-               (("[ \t]*.*giomm_tls_client.*$") ""))))
-         (add-after 'install 'move-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc")))
-               (mkdir-p (string-append doc "/share"))
-               (rename-file
-                (string-append out "/share/doc")
-                (string-append doc "/share/doc"))))))))
+     (list
+      #:configure-flags #~(list "-Dbuild-documentation=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-failing-tests
+            (lambda _
+              (substitute* "tests/meson.build"
+                ;; This test uses /etc/fstab as an example file to read from;
+                ;; disable it.
+                (("[ \t]*.*giomm_simple.*$") "")
+                ;; This test does a DNS lookup, and then expects to be able to
+                ;; open a TLS session; just skip it.
+                (("[ \t]*.*giomm_tls_client.*$") ""))))
+          (add-after 'install 'move-doc
+            (lambda _
+              (mkdir-p (string-append #$output:doc "/share"))
+              (rename-file
+               (string-append #$output "/share/doc")
+               (string-append #$output:doc "/share/doc")))))))
     (native-inputs
      (list graphviz
            doxygen
@@ -931,7 +915,7 @@ useful for C++.")
 (define-public python-pygobject
   (package
     (name "python-pygobject")
-    (version "3.40.1")
+    (version "3.42.2")
     (source
      (origin
        (method url-fetch)
@@ -940,7 +924,7 @@ useful for C++.")
                            "/pygobject-" version ".tar.xz"))
        (sha256
         (base32
-         "0d80g5kgf2i9cginyhalvb7ibfk9g30yilqzmcsw6h6byj8xbih0"))
+         "0my95gjnps093inzznbipkhf25cffbc32v9is2fq8wvh59g6ks5d"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -976,6 +960,8 @@ useful for C++.")
     (synopsis "Python bindings for GObject")
     (description
      "Python bindings for GLib, GObject, and GIO.")
+    (properties
+     '((upstream-name . "pygobject")))
     (license license:lgpl2.1+)))
 
 (define-public perl-glib
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 670f12fed9..c80c7fe921 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -372,9 +372,7 @@ features to enable users to create their discs easily and quickly.")
                                "-Denable-gtk-doc=false"
                                "-Dvapigen=false")))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list `(,glib "bin") pkg-config vala))
     (inputs
      (list glib glib-networking))
     (synopsis "Cloudproviders Integration API")
@@ -1155,7 +1153,10 @@ freedesktop.org desktop notification specification.")
                                   "mm-common-" version ".tar.xz"))
               (sha256
                (base32
-                "1x8yvjy0yg17qyhmqws8xh2k8dvzrhpwqz7j1cfwzalrb1i9c5g8"))))
+                "1x8yvjy0yg17qyhmqws8xh2k8dvzrhpwqz7j1cfwzalrb1i9c5g8"))
+              (patches
+               (search-patches
+                "mm-common-reproducible-tarball.patch"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -2449,7 +2450,7 @@ GNOME Desktop.")
 (define-public gdl
   (package
     (name "gdl")
-    (version "3.34.0")
+    (version "3.40.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2461,7 +2462,7 @@ GNOME Desktop.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "154qcr0x6f68f4q526y87imv0rscmp34n47nk1pp82rsq52h2zna"))))
+                "11hp93gqk7m64h84q5hndzlwj4w6hl0cbmzrk2pkdn04ikm2zj4v"))))
     (build-system gnu-build-system)
     (native-inputs
      (list autoconf
@@ -2671,7 +2672,7 @@ on the GNOME Desktop with a single simple application.")
 (define-public gsettings-desktop-schemas
   (package
     (name "gsettings-desktop-schemas")
-    (version "41.0")
+    (version "42.0")
     (source
      (origin
        (method url-fetch)
@@ -2680,7 +2681,7 @@ on the GNOME Desktop with a single simple application.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1v9jagk679m01nji0acirynxinziv036618c7xc49l4nwmr9ja3p"))))
+         "1li3fcqwnw20f4j0i21i88fygm0hli8gmzkn4apgf8ynkrd371k6"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -3474,7 +3475,7 @@ for dealing with different structured file formats.")
 (define-public librsvg
   (package
     (name "librsvg")
-    (version "2.50.7")
+    (version "2.54.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/librsvg/"
@@ -3482,7 +3483,7 @@ for dealing with different structured file formats.")
                                   "librsvg-" version ".tar.xz"))
               (sha256
                (base32
-                "1g3f8byg5w08fx1bka12mmpl59v6a4q2p827w6m2la6mijq63yzz"))
+                "0cs8qbn2khibb5w1r0f6cibfmkfb7zg713526vhc0hva7wj2l5ga"))
               (modules '((guix build utils)))
               (snippet
                '(begin (delete-file-recursively "vendor")))))
@@ -3495,61 +3496,57 @@ for dealing with different structured file formats.")
         (guix build utils)
         ((guix build gnu-build-system) #:prefix gnu:))
        #:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-cairo-rs" ,rust-cairo-rs-0.8)
-        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
-        ("rust-cast" ,rust-cast-0.2)
-        ("rust-cssparser" ,rust-cssparser-0.27)
+       (("rust-byteorder" ,rust-byteorder-1)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.15)
+        ("rust-cast" ,rust-cast-0.3)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-cssparser" ,rust-cssparser-0.28)
         ("rust-data-url" ,rust-data-url-0.1)
         ("rust-encoding" ,rust-encoding-0.2)
-        ("rust-float-cmp" ,rust-float-cmp-0.8)
-        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.8)
-        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
-        ("rust-gio" ,rust-gio-0.8)
-        ("rust-gio-sys" ,rust-gio-sys-0.9)
-        ("rust-glib" ,rust-glib-0.9)
-        ("rust-glib-sys" ,rust-glib-sys-0.9)
-        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
-        ("rust-itertools" ,rust-itertools-0.9)
-        ("rust-language-tags" ,rust-language-tags-0.2)
+        ("rust-float-cmp" ,rust-float-cmp-0.9)
+        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.15)
+        ("rust-gio" ,rust-gio-0.15)
+        ("rust-glib" ,rust-glib-0.15)
+        ("rust-itertools" ,rust-itertools-0.10)
+        ("rust-language-tags" ,rust-language-tags-0.3)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-locale-config" ,rust-locale-config-0.3)
         ("rust-markup5ever" ,rust-markup5ever-0.10)
-        ("rust-nalgebra" ,rust-nalgebra-0.21)
+        ("rust-nalgebra" ,rust-nalgebra-0.29)
         ("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-once-cell" ,rust-once-cell-1)
-        ("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-pango" ,rust-pango-0.8)
-        ("rust-pango-sys" ,rust-pango-sys-0.9)
-        ("rust-pangocairo" ,rust-pangocairo-0.9)
+        ("rust-pango" ,rust-pango-0.15)
+        ("rust-pangocairo" ,rust-pangocairo-0.15)
         ("rust-rayon" ,rust-rayon-1)
-        ("rust-rctree" ,rust-rctree-0.3)
+        ("rust-rctree" ,rust-rctree-0.4)
         ("rust-rgb" ,rust-rgb-0.8)
         ("rust-regex" ,rust-regex-1)
-        ("rust-selectors" ,rust-selectors-0.22)
+        ("rust-selectors" ,rust-selectors-0.23)
         ("rust-string-cache" ,rust-string-cache-0.8)
-        ("rust-tinyvec" ,rust-tinyvec-0.3)
+        ("rust-tinyvec" ,rust-tinyvec-1)
         ("rust-url" ,rust-url-2)
         ("rust-xml5ever" ,rust-xml5ever-0.16))
        #:cargo-development-inputs
-       (("rust-assert-cmd" ,rust-assert-cmd-1)
-        ("rust-cairo-rs" ,rust-cairo-rs-0.8)
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-assert-cmd" ,rust-assert-cmd-2)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.15)
         ("rust-chrono" ,rust-chrono-0.4)
         ("rust-criterion" ,rust-criterion-0.3)
-        ("rust-float-cmp" ,rust-float-cmp-0.8)
+        ("rust-glib" ,rust-glib-0.15)
+        ("rust-libc" ,rust-libc-0.2)
         ("rust-lopdf" ,rust-lopdf-0.26)
-        ("rust-png" ,rust-png-0.16)
-        ("rust-predicates" ,rust-predicates-1)
-        ("rust-tempfile" ,rust-tempfile-3))
+        ("rust-matches" ,rust-matches-0.1)
+        ("rust-png" ,rust-png-0.17)
+        ("rust-predicates" ,rust-predicates-2)
+        ("rust-proptest" ,rust-proptest-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-test-generator" ,rust-test-generator-0.3)
+        ("rust-yeslogic-fontconfig-sys" ,rust-yeslogic-fontconfig-sys-2))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "doc"
-               (substitute* "rsvg-docs.xml"
-                 (("http://www.oasis-open.org/docbook/xml/4.3/")
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/"))))))
          (add-after 'unpack 'prepare-for-build
            (lambda _
              ;; In lieu of #:make-flags
@@ -3590,30 +3587,6 @@ for dealing with different structured file formats.")
               (string-append vendor-dir "/" ,name "-" ,version ".tar.xz"))))
          (replace 'build
            (assoc-ref gnu:%standard-phases 'build))
-         (add-before 'check 'ignore-failing-tests
-           ;; stderr=```/tmp/guix-build-.../librsvg-2.50.1/rsvg-convert: line 150: ls: command not found
-           (lambda _
-             (substitute* "tests/src/cmdline/rsvg_convert.rs"
-               (("fn background_color_option_invalid_color_yields_error" all)
-                (string-append "#[ignore] " all))
-               (("fn empty_input_yields_error" all)
-                (string-append "#[ignore] " all))
-               (("fn empty_svg_yields_error" all)
-                (string-append "#[ignore] " all))
-               (("fn env_source_data_epoch_empty" all)
-                (string-append "#[ignore] " all))
-               (("fn env_source_data_epoch_no_digits" all)
-                (string-append "#[ignore] " all))
-               (("fn env_source_data_epoch_trailing_garbage" all)
-                (string-append "#[ignore] " all))
-               (("fn export_id_option_error" all)
-                (string-append "#[ignore] " all))
-               (("fn huge_zoom_factor_yields_error" all)
-                (string-append "#[ignore] " all))
-               (("fn multiple_input_files_not_allowed_for_png_output" all)
-                (string-append "#[ignore] " all))
-               (("fn stylesheet_option_error" all)
-                (string-append "#[ignore] " all)))))
          (replace 'check
            (lambda* args
              ((assoc-ref gnu:%standard-phases 'check)
@@ -3621,8 +3594,7 @@ for dealing with different structured file formats.")
          (replace 'install
            (assoc-ref gnu:%standard-phases 'install)))))
     (native-inputs
-     (list docbook-xml-4.3
-           `(,glib "bin")
+     (list `(,glib "bin")
            gobject-introspection
            pkg-config
            vala))
@@ -3638,34 +3610,6 @@ diagrams.")
     (home-page "https://wiki.gnome.org/LibRsvg")
     (license license:lgpl2.1+)))
 
-;; This copy of librsvg uses the bundled rust libraries. It is useful for
-;; packages which have too many dependencies to be rebuilt as frequently
-;; as the rust inputs are updated.
-;; TODO: Remove this package and use packaged rust libraries!
-(define-public librsvg-bootstrap
-  (package
-    (inherit librsvg)
-    (name "librsvg")
-    (version "2.50.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/librsvg/"
-                                  (version-major+minor version)  "/"
-                                  "librsvg-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1g3f8byg5w08fx1bka12mmpl59v6a4q2p827w6m2la6mijq63yzz"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (for-each delete-file (find-files "vendor" "\\.a$"))))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments librsvg)
-       ((#:vendor-dir _ "vendor") "vendor")
-       ((#:cargo-inputs _) '())
-       ((#:cargo-development-inputs _) '())))
-    (properties '((hidden? . #t)))))
-
 (define-public librsvg-2.40
   ;; This is the last version implemented in C.
   (package
@@ -4462,7 +4406,7 @@ passwords in the GNOME keyring.")
 (define-public vala
   (package
     (name "vala")
-    (version "0.54.2")
+    (version "0.56.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/vala/"
@@ -4470,62 +4414,9 @@ passwords in the GNOME keyring.")
                                   "vala-" version ".tar.xz"))
               (sha256
                (base32
-                "048k5c6c6y7jyb961krnrb7m0kghr0yrkpnfx3j5ckbx652yfkc8"))))
+                "0k0jj3xwjq222x0hbqqy5bykhgk1f1wsb85bqcdgsnbqn6dn3jb6"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     '(#:configure-flags '("--enable-coverage")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "doc/manual"
-               (substitute* '("manual.xml" "version.xml.in")
-                 (("http://www.oasis-open.org/docbook/xml/4.4/")
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/"))))))
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "CC" "gcc")
-             (substitute* "valadoc/tests/libvaladoc\
-/tests-extra-environment.sh"
-               (("export PKG_CONFIG_PATH=" m)
-                (string-append m "$PKG_CONFIG_PATH:"))))))))
-    (native-inputs
-     `(("bison" ,bison)
-       ("dbus" ,dbus)                   ; for dbus tests
-       ("docbook-xml" ,docbook-xml-4.4)
-       ("docbook-xsl" ,docbook-xsl)
-       ("flex" ,flex)
-       ("gobject-introspection" ,gobject-introspection) ; for gir tests
-       ("help2man" ,help2man)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("xsltproc" ,libxslt)))
-    (propagated-inputs
-     `(("glib" ,glib)                   ; required by libvala-0.40.pc
-       ("libgvc" ,graphviz)))
-    (home-page "https://wiki.gnome.org/Projects/Vala/")
-    (synopsis "Compiler using the GObject type system")
-    (description "Vala is a programming language using modern high level
-abstractions without imposing additional runtime requirements and without using
-a different ABI compared to applications and libraries written in C.  Vala uses
-the GObject type system and has additional code generation routines that make
-targeting the GNOME stack simple.")
-    (license license:lgpl2.1+)))
-
-(define-public vala-next
-  (package
-    (inherit vala)
-    (version "0.56.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/vala/"
-                                  (version-major+minor version) "/"
-                                  "vala-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1gwrnr0d0bqkh6m4bgz39mh3pcswcj43hyijlwgwp2bvpwhn41p1"))))
-    (arguments
      (list
       #:configure-flags #~(list "CC=gcc" "--enable-coverage")
       #:phases
@@ -4549,7 +4440,29 @@ targeting the GNOME stack simple.")
           ;; Wrapping the binaries breaks vala's behavior adaptations based on
           ;; the file name of the program executed (vala: compile and execute,
           ;; valac: compile into a binary).
-          (delete 'glib-or-gtk-wrap))))))
+          (delete 'glib-or-gtk-wrap))))
+    (native-inputs
+     (list bison
+           dbus                         ; for dbus tests
+           docbook-xml-4.4
+           docbook-xsl
+           flex
+           gobject-introspection        ; for gir tests
+           help2man
+           perl
+           pkg-config
+           libxslt))
+    (propagated-inputs
+     (list glib                         ; required by libvala-0.40.pc
+           graphviz))
+    (home-page "https://wiki.gnome.org/Projects/Vala/")
+    (synopsis "Compiler using the GObject type system")
+    (description "Vala is a programming language using modern high level
+abstractions without imposing additional runtime requirements and without using
+a different ABI compared to applications and libraries written in C.  Vala uses
+the GObject type system and has additional code generation routines that make
+targeting the GNOME stack simple.")
+    (license license:lgpl2.1+)))
 
 ;;; An older variant kept to build libsoup-minimal-2.
 (define-public vala-0.52
@@ -4724,16 +4637,16 @@ and RDP protocols.")
     (inputs
      (list gtk+ dbus))
     (native-inputs
-     `(("bash-completion" ,bash-completion)
-       ("libxslt" ,libxslt)                     ;for xsltproc
-       ("libxml2" ,libxml2)                     ;for XML_CATALOG_FILES
-       ("docbook-xml" ,docbook-xml-4.2)
-       ("docbook-xsl" ,docbook-xsl)
-       ("glib:bin" ,glib "bin")
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("vala" ,vala)))
+     (list bash-completion
+           libxslt                      ;for xsltproc
+           libxml2                      ;for XML_CATALOG_FILES
+           docbook-xml-4.2
+           docbook-xsl
+           `(,glib "bin")
+           gtk-doc/stable
+           pkg-config
+           python
+           vala))
     (arguments
      `(#:glib-or-gtk? #t
        #:configure-flags '("-Dgtk_doc=true")
@@ -4885,7 +4798,7 @@ indicators etc).")
 (define-public glib-networking
   (package
     (name "glib-networking")
-    (version "2.70.0")
+    (version "2.72.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/glib-networking/"
@@ -4893,7 +4806,7 @@ indicators etc).")
                                   "glib-networking-" version ".tar.xz"))
               (sha256
                (base32
-                "0dbg1na239mbavn4hknkax5sns9q2dbdnqw9wcpmhv58mzkhid36"))
+                "0s42l6dkajciqc99zp6dc9l8yv9g8w7d8mgv97l7h7drgd60hand"))
               (patches
                (search-patches "glib-networking-gnutls-binding.patch"))))
     (build-system meson-build-system)
@@ -4909,8 +4822,7 @@ indicators etc).")
                                   (search-patch
                                    "glib-networking-32-bit-time.patch")))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("gettext" ,gettext-minimal)))
+     (list pkg-config gettext-minimal))
     (inputs
      (list glib gnutls gsettings-desktop-schemas libproxy))
     (home-page "https://wiki.gnome.org/Projects/GLib")
@@ -4942,14 +4854,10 @@ from the GSettings schemas in gsettings-desktop-schemas.")
        #:configure-flags
        '("--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt")))
     (native-inputs
-     `(("glib-mkenums" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)))
+     (list `(,glib "bin") gobject-introspection pkg-config))
     (propagated-inputs
      ;; rest-0.7.pc refers to all these.
-     `(("glib"    ,glib)
-       ("libsoup" ,libsoup-minimal-2)
-       ("libxml2" ,libxml2)))
+     (list glib libsoup-minimal-2 libxml2))
     (home-page "https://www.gtk.org/")
     (synopsis "RESTful web api query library")
     (description
@@ -5046,7 +4954,7 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
 (define-public libsoup-minimal
   (package
     (name "libsoup-minimal")
-    (version "3.0.4")
+    (version "3.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -5054,7 +4962,7 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "0ysnvvfd2f6w2z6g31spqqb8wgyamixc7mryzbbpyw0z15g8plsv"))))
+                "1j7p3cz6hwi9js9rp0pbas7cdln97yg9v2l1nv5imhcr6p7r1pzb"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dgtk_doc=false")
@@ -5079,7 +4987,6 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
     (native-inputs
      (list `(,glib "bin") ;for glib-mkenums
            gobject-introspection
-           intltool
            pkg-config
            python-wrapper
            vala
@@ -5108,8 +5015,9 @@ and the GLib main loop, to integrate well with GNOME applications.")
 
 ;;; An older variant kept to build the 'rest' package.
 (define-public libsoup-minimal-2
-  (package/inherit libsoup-minimal
-    (version "2.72.0")
+  (package
+    (inherit libsoup-minimal)
+    (version "2.74.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -5117,7 +5025,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "11skbyw2pw32178q3h8pi7xqa41b2x4k6q4k9f75zxmh8s23y30p"))))
+                "0n8is108n0dn4dw7nm2wq9rydcm1vy47w40wywfrxqazdrjjg97h"))))
     (arguments
      (substitute-keyword-arguments (package-arguments libsoup-minimal)
        ((#:phases phases)
@@ -5495,65 +5403,68 @@ keyboard shortcuts.")
 (define-public colord-minimal
   (package
     (name "colord-minimal")
-    (version "1.4.5")
+    (version "1.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
                            "colord-" version ".tar.xz"))
        (sha256
-        (base32 "05sydi6qqqx1rrqwnga1vbg9srkf89wdcfw5w4p4m7r37m2flx5p"))))
+        (base32 "0vwfx06k1in8hci3kdxpc3c0bh81f1vl5bp7favd3rdz4wd661vl"))))
     (build-system meson-build-system)
     (arguments
-     '( ;; 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
-       #:glib-or-gtk? #t
-       #:configure-flags (list "-Dargyllcms_sensor=false" ;requires spotread
-                               "-Dbash_completion=false"
-                               "-Ddaemon_user=colord"
-                               "-Ddocs=false"
-                               "-Dlocalstatedir=/var"
-                               "-Dman=false"
-                               "-Dsane=true"
-                               "-Dsystemd=false") ;no systemd
-       #:phases
-       (modify-phases %standard-phases
-         (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'")))))
-         (add-before 'configure 'set-sqlite3-file-name
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; "colormgr dump" works by invoking the "sqlite3" command.
-             ;; Record its absolute file name.
-             (let ((sqlite (assoc-ref inputs "sqlite")))
-               (substitute* "client/cd-util.c"
-                 (("\"sqlite3\"")
-                  (string-append "\"" sqlite "/bin/sqlite3\"")))))))))
-    (native-inputs
-     `(("glib:bin" ,glib "bin")         ; for glib-compile-resources, etc.
-       ("gettext" ,gettext-minimal)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags #~(list "-Dargyllcms_sensor=false" ;requires spotread
+                                "-Dbash_completion=false"
+                                "-Ddaemon_user=colord"
+                                "-Ddocs=false"
+                                "-Dlocalstatedir=/var"
+                                "-Dman=false"
+                                "-Dsane=true"
+                                "-Dsystemd=false") ;no systemd
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-problematic-tests
+            (lambda _
+              ;; Skip the colord-test-private, which requires a *system* D-Bus
+              ;; session, which wants to run as root, among other requirements
+              ;; (see: https://github.com/hughsie/colord/issues/97).
+              (substitute* "lib/colord/meson.build"
+                ((".*test\\('colord-test-private'.*") ""))))
+          (add-before 'configure 'patch-build-system
+            (lambda _
+              (substitute* "rules/meson.build"
+                (("udev.get_pkgconfig_variable\\('udevdir'\\)")
+                 (string-append "'" #$output "/lib/udev'")))))
+          (add-before 'configure 'set-sqlite3-file-name
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; "colormgr dump" works by invoking the "sqlite3" command.
+              ;; Record its absolute file name.
+              (substitute* "client/cd-util.c"
+                (("\"sqlite3\"")
+                 (format #f "~s" (search-input-file inputs
+                                                    "bin/sqlite3")))))))))
+    (native-inputs
+     (list `(,glib "bin")               ; for glib-compile-resources, etc.
+           gettext-minimal
+           pkg-config
+           vala))
     (propagated-inputs
      ;; colord.pc refers to all these.
-     `(("glib" ,glib)
-       ("lcms" ,lcms)
-       ("udev" ,eudev)))
+     (list glib
+           lcms
+           eudev))
     (inputs
-     `(("dbus-glib" ,dbus-glib)
-       ("gobject-introspection" ,gobject-introspection)
-       ("gusb" ,gusb-minimal)
-       ("libgudev" ,libgudev)
-       ("libusb" ,libusb)
-       ("polkit" ,polkit)
-       ("python" ,python-wrapper)
-       ("sqlite" ,sqlite)
-       ("sane-backends" ,sane-backends)))
+     (list dbus-glib
+           gobject-introspection
+           gusb-minimal
+           libgudev
+           libusb
+           polkit
+           python-wrapper
+           sqlite
+           sane-backends))
     (home-page "https://www.freedesktop.org/software/colord/")
     (synopsis "Color management service")
     (description "Colord is a system service that makes it easy to manage,
@@ -5568,33 +5479,32 @@ output devices.")
      (substitute-keyword-arguments
          (package-arguments colord-minimal)
        ((#:configure-flags flags)
-        `(begin
-           (use-modules (srfi srfi-1))
-           (append '("-Dbash_completion=true"
-                     "-Ddocs=true"
-                     "-Dman=true"
-                     "-Dvapi=true")
-               (fold delete ,flags '("-Dbash_completion=false"
-                                     "-Ddocs=false"
-                                     "-Dman=false")))))
+        #~(begin
+            (use-modules (srfi srfi-1))
+            (append '("-Dbash_completion=true"
+                      "-Ddocs=true"
+                      "-Dman=true"
+                      "-Dvapi=true")
+                    (fold delete #$flags '("-Dbash_completion=false"
+                                           "-Ddocs=false"
+                                           "-Dman=false")))))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'fix-bash-completion-dir
-             (lambda* (#:key outputs #:allow-other-keys)
-               (substitute* "data/meson.build"
-                 (("bash_completion.get_pkgconfig_variable\
+        #~(modify-phases #$phases
+            (add-after 'unpack 'fix-bash-completion-dir
+              (lambda* (#:key outputs #:allow-other-keys)
+                (substitute* "data/meson.build"
+                  (("bash_completion.get_pkgconfig_variable\
 \\('completionsdir'\\)")
-                  (string-append "'" (assoc-ref outputs "out")
-                                 "/etc/bash_completion.d'")))))))))
+                   (string-append "'" #$output
+                                  "/etc/bash_completion.d'")))))))))
     (native-inputs
-     (append
-         `(("bash-completion" ,bash-completion)
-           ("docbook-xsl-ns" ,docbook-xsl-ns)
-           ("gtk-doc" ,gtk-doc/stable)
-           ("libxml2" ,libxml2)         ;for XML_CATALOG_FILES
-           ("libxslt" ,libxslt)
-           ("vala" ,vala))              ;for VAPI, needed by simple-scan
-         (package-native-inputs colord-minimal)))))
+     (modify-inputs (package-native-inputs colord-minimal)
+       (append bash-completion
+               docbook-xsl-ns
+               gtk-doc/stable
+               libxml2                  ;for XML_CATALOG_FILES
+               libxslt
+               vala)))))                ;for VAPI, needed by simple-scan
 
 (define-public geoclue
   (package
@@ -7257,16 +7167,13 @@ of running programs and invoke methods on those interfaces.")
         (base32 "19d46rkajvr0f04560vlrzwvac88x5j8ilvzwkawbn5vjg069kf8"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       (list
-        "--enable-doc")))
+     '(#:configure-flags '("--enable-doc")))
     (native-inputs
-     `(("ducktype" ,mallard-ducktype)
-       ("gettext" ,gettext-minimal)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("xmllint" ,libxml2)
-       ("xsltproc" ,libxslt)))
+     (list mallard-ducktype
+           gettext-minimal
+           itstool
+           libxml2
+           libxslt))
     (synopsis "XSL stylesheets for Yelp")
     (description "Yelp-XSL is a collection of programs and data files to help
 you build, maintain, and distribute documentation.  It provides XSLT stylesheets
@@ -7460,8 +7367,7 @@ metadata in photo and video files of various formats.")
            `(,glib "bin")
            itstool
            pkg-config
-           python
-           vala-next))
+           python))
     (inputs
      (list gcr
            gexiv2
@@ -7592,7 +7498,8 @@ configuration program to choose applications starting on login.")
 (define-public gjs
   (package
     (name "gjs")
-    (version "1.72.2")
+    ;; Note: We use a pre-release for compatibility with recent LibFFI.
+    (version "1.73.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7600,7 +7507,7 @@ configuration program to choose applications starting on login.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xrrv9lsi087yb9yf146a1aarf5yh6rf4jw9blx30zasvjdkgvnx"))
+                "0xfspsc1q4xm7p500lmy17b9csyaqps1kilylq8wjjd0fjqq8ayg"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -7631,7 +7538,7 @@ configuration program to choose applications starting on login.")
            xorg-server-for-tests))
     (propagated-inputs
      ;; These are all in the Requires.private field of gjs-1.0.pc.
-     (list cairo gobject-introspection mozjs-91))
+     (list cairo gobject-introspection mozjs))
     (inputs
      (list gtk+ readline))
     (synopsis "Javascript bindings for GNOME")
@@ -7771,10 +7678,12 @@ to display dialog boxes from the commandline and shell scripts.")
       #~(list
          ;; Otherwise, the RUNPATH will lack the final path component.
          (string-append "-Dc_link_args=-Wl,-rpath="
-                        #$output "/lib:"
-                        #$output "/lib/mutter-9")
+                        #$output "/lib,-rpath="
+                        #$output "/lib/mutter-10")
          ;; Disable systemd support.
          "-Dsystemd=false"
+         ;; Don't install tests.
+         "-Dinstalled_tests=false"
          ;; The following flags are needed for the bundled clutter
          (string-append "-Dxwayland_path="
                         (search-input-file %build-inputs "bin/Xwayland"))
@@ -7788,15 +7697,13 @@ to display dialog boxes from the commandline and shell scripts.")
       #:test-options '(list "--verbose")
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'adjust-runpath-linker-directives
+          (add-after 'unpack 'use-RUNPATH-instead-of-RPATH
             (lambda _
-              ;; By default Mutter uses RPATH instead of RUNPATH, which our
-              ;; customized linker script makes use of.  Some libraries are
-              ;; also installed under lib/mutter-10 and need to be added to
-              ;; the RUNPATH.
+              ;; The build system disables RUNPATH in favor of RPATH to work
+              ;; around a peculiarity of their CI system.  Ignore that.
               (substitute* "meson.build"
-                (("'-Wl,--disable-new-dtags'")
-                 (string-append "'-Wl,-rpath=" #$output "/lib/mutter-10'")))))
+                (("disable-new-dtags")
+                 "enable-new-dtags"))))
           (add-after 'unpack 'patch-dlopen-calls
             (lambda* (#:key inputs #:allow-other-keys)
               (substitute* "src/wayland/meta-wayland-egl-stream.c"
@@ -8105,7 +8012,6 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
            libphonenumber
            mit-krb5
            openldap
-           pango-next                   ;remove after it's the default
            webkitgtk))
     (synopsis "Store address books and calendars")
     (home-page "https://wiki.gnome.org/Apps/Evolution")
@@ -8404,8 +8310,7 @@ services.")
            libnma
            libsecret
            network-manager
-           openvpn
-           pango-next))                 ;remove after it's the default
+           openvpn))
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "OpenVPN plug-in for NetworkManager")
     (description
@@ -8455,8 +8360,7 @@ to virtual private networks (VPNs) via OpenVPN.")
            vpnc
            network-manager
            libnma
-           libsecret
-           pango-next))                 ;TODO: remove after it's the default
+           libsecret))                 ;TODO: remove after it's the default
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "VPNC plug-in for NetworkManager")
     (description
@@ -8508,8 +8412,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
            libxml2
            lz4
            network-manager
-           openconnect
-           pango-next))                 ;TODO: remove after it's the default
+           openconnect))
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "OpenConnect plug-in for NetworkManager")
     (description
@@ -8939,8 +8842,6 @@ usage and information about running processes.")
      (list eudev
            gsound
            libnotify
-           ;; TODO: Delete pango-next after it's the default.
-           pango-next
            python-dbus
            upower))
     (synopsis "GNOME Bluetooth subsystem")
@@ -9657,10 +9558,9 @@ files.")
            python
            vala))
     (inputs
-     (list gtk libadwaita libhandy
-           ;; XXX: Ensure pango-next is used instead of the equally propagated
-           ;; 'pango'.
-           pango-next))
+     (list gtk
+           libadwaita
+           libhandy))
     (synopsis "Disk usage analyzer for GNOME")
     (description
      "Baobab (Disk Usage Analyzer) is a graphical application to analyse disk
@@ -9673,7 +9573,7 @@ is complete it provides a graphical representation of each selected folder.")
 (define-public gnome-backgrounds
   (package
     (name "gnome-backgrounds")
-    (version "41.0")
+    (version "42.0")
     (source
      (origin
        (method url-fetch)
@@ -9682,7 +9582,7 @@ is complete it provides a graphical representation of each selected folder.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0i9id5z72dqddh94648zylyf41amqq5lhny8sbyg1v8v4q6sr88x"))))
+         "0p99q434c8qgj5wxcma9jj4dh1ff9x984ncs31vmz725kyhf2zsc"))))
     (build-system meson-build-system)
     (native-inputs (list gettext-minimal))
     (home-page "https://gitlab.gnome.org/GNOME/gnome-backgrounds")
@@ -9979,7 +9879,7 @@ world.")
        ;; XXX: Find out exactly which ones are needed and why.
        ("font-abattis-cantarell"            ,font-abattis-cantarell)
        ("font-dejavu"               ,font-dejavu)
-       ("at-spi2-core"              ,at-spi2-core-minimal)
+       ("at-spi2-core"              ,at-spi2-core)
        ("dbus"                      ,dbus)
        ("dconf"                     ,dconf)
        ("desktop-file-utils"        ,desktop-file-utils)
@@ -10197,8 +10097,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
            gettext-minimal
            `(,glib "bin")               ; for glib-compile-resources
            itstool
-           pkg-config
-           vala-next))
+           pkg-config))
     (inputs
      (list geoclue
            geocode-glib-with-libsoup2
@@ -10252,9 +10151,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
            gsettings-desktop-schemas
            libadwaita
            libdazzle
-           libgweather4-with-libsoup2
-           ;; Remove pango-next when it's the default.
-           pango-next))
+           libgweather4-with-libsoup2))
     (home-page "https://wiki.gnome.org/Apps/Calendar")
     (synopsis "GNOME's calendar application")
     (description
@@ -10678,7 +10575,7 @@ is suitable as a default application in a Desktop environment.")
      (list autoconf automake
            `(,gtk+ "bin") intltool pkg-config))
     (inputs
-     (list gtksourceview libsm))
+     (list gtksourceview-4 libsm))
     (home-page "https://wiki.gnome.org/Apps/Xpad")
     (synopsis "Virtual sticky note")
     (description
@@ -11855,7 +11752,7 @@ higher level porcelain stuff.")
            gsettings-desktop-schemas
            gspell
            gtk+
-           gtksourceview
+           gtksourceview-4
            json-glib
            libdazzle
            libgee
@@ -12171,7 +12068,7 @@ integrate seamlessly with the GNOME desktop.")
            gsettings-desktop-schemas
            gtk+
            gtk-vnc
-           gtksourceview
+           gtksourceview-4
            json-glib
            libarchive
            libgudev
@@ -13062,7 +12959,7 @@ your data.")
            libgda
            libhandy
            libsoup
-           pango-next))
+           pango))
     (propagated-inputs
      (list gtksourceview-4))              ; required for source view
     (home-page "https://wiki.gnome.org/Apps/Gtranslator")
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index f9f39d6116..e81c89f719 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2017, 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Fredrik Salomonsson <plattfot@posteo.net>
@@ -91,7 +91,7 @@
 (define-public libgpg-error
   (package
     (name "libgpg-error")
-    (version "1.42")
+    (version "1.45")
     (source
      (origin
       (method url-fetch)
@@ -99,7 +99,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "08syj8mlarww8mh8x3s0x6hjqbnxp2lkg3hab57qqpv1dh7yf1zw"))))
+        "09haz1kk48b8q0hd58g98whylah0fp121yfgjms7pzsbzgj8w3sp"))))
     (build-system gnu-build-system)
     (arguments
      (if (%current-target-system)
@@ -142,7 +142,7 @@
                              (_ #t)))
                           (#t #t)))))))
          '()))
-    (native-inputs `(("gettext" ,gettext-minimal)))
+    (native-inputs (list gettext-minimal))
     (home-page "https://gnupg.org")
     (synopsis "Library of error values for GnuPG components")
     (description
@@ -157,14 +157,14 @@ Daemon and possibly more in the future.")
 (define-public libgcrypt
   (package
     (name "libgcrypt")
-    (version "1.8.8")
+    (version "1.10.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1xasrh9zxhgj2n5n8dvpzbwn1mzpmlzy270xhbq2gl8xk2xy4pc9"))))
+               "1pp9zyx02bzgzjzldxf0mx9kp3530xgaaqcz4n2cv100ddaaw57g"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error-host" ,libgpg-error)))
@@ -176,10 +176,20 @@ Daemon and possibly more in the future.")
      ;; 'configure' uses 'gpg-error-config' to determine the '-L' flag, and
      ;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one.
      `(#:configure-flags
-       (list (string-append "--with-gpg-error-prefix="
+       (list (string-append "--with-libgpg-error-prefix="
                             (assoc-ref %build-inputs "libgpg-error-host"))
-             ;; When cross-compiling, _gcry_mpih_lshift etc are undefined
-             ,@(if (%current-target-system) '("--disable-asm")
+             ,@(if (%current-target-system)
+                   ;; When cross-compiling, _gcry_mpih_lshift etc are undefined.
+                   `("--disable-asm"
+                     ;; libgcrypt is transitioning from gpg-error-config to
+                     ;; gpgrt-config, and in the process the
+                     ;; --with-libgpg-error-config prefix defined above is
+                     ;; not respected.  See <https://dev.gnupg.org/T5365>.
+                     ;; TODO: transition to pkg-config instead of these scripts.
+                     (string-append "ac_cv_path_GPGRT_CONFIG="
+                                    (assoc-ref %build-inputs
+                                               "libgpg-error-host")
+                                    "/bin/gpgrt-config"))
                    '()))))
     (outputs '("out" "debug"))
     (home-page "https://gnupg.org/")
@@ -282,10 +292,7 @@ compatible to GNU Pth.")
     (name "gnupg")
     ;; Note: The 2.2.X releases are Long Term Support (LTS), so stick to it
     ;; for our stable 'gnupg'.
-    ;; Note2: 2.2.33 currently suffers from regressions, so do not update to it
-    ;; (see: https://dev.gnupg.org/T5742).
-    (version "2.2.32")
-    (replacement gnupg/fixed)
+    (version "2.2.37")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
@@ -293,7 +300,7 @@ compatible to GNU Pth.")
               (patches (search-patches "gnupg-default-pinentry.patch"))
               (sha256
                (base32
-                "0506gv54z10c96z5821z9p0ksibk1pfilsmag39ffqrcz0sinmxj"))))
+                "0wd8mhb3sp1bjf0pabk1cil2hrd7cgdi0b0ccrc0d2919a5r5y4m"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
@@ -309,37 +316,39 @@ compatible to GNU Pth.")
            readline
            sqlite
            zlib))
-   (arguments
-    `(#:configure-flags '(;; Otherwise, the test suite looks for the `gpg`
-                          ;; executable in its installation directory in
-                          ;; /gnu/store before it has been installed.
-                          "--enable-gnupg-builddir-envvar"
-                          "--enable-all-tests")
+    (arguments
+     (list
+      #:configure-flags #~'(;; Otherwise, the test suite looks for the `gpg`
+                            ;; executable in its installation directory in
+                            ;; /gnu/store before it has been installed.
+                            "--enable-gnupg-builddir-envvar"
+                            "--enable-all-tests")
       #:phases
-      (modify-phases %standard-phases
-        (add-before 'configure 'patch-paths
-          (lambda* (#:key inputs #:allow-other-keys)
-            (substitute* "scd/scdaemon.c"
-              (("\"(libpcsclite\\.so[^\"]*)\"" _ name)
-               (string-append "\"" (assoc-ref inputs "pcsc-lite")
-                              "/lib/" name "\"")))))
-        (add-after 'build 'patch-scheme-tests
-          (lambda _
-            (substitute* (find-files "tests" ".\\.scm$")
-              (("/usr/bin/env gpgscm")
-               (string-append (getcwd) "/tests/gpgscm/gpgscm")))))
-        (add-before 'build 'patch-test-paths
-          (lambda _
-            (substitute* '("tests/inittests"
-                           "tests/pkits/inittests"
-                           "tests/Makefile"
-                           "tests/pkits/common.sh"
-                           "tests/pkits/Makefile")
-             (("/bin/pwd") (which "pwd")))
-            (substitute* "common/t-exectool.c"
-              (("/bin/cat") (which "cat"))
-              (("/bin/true") (which "true"))
-              (("/bin/false") (which "false"))))))))
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((libpcsclite.so (search-input-file inputs
+                                                       "lib/libpcsclite.so")))
+                (substitute* "scd/scdaemon.c"
+                  (("libpcsclite\\.so")
+                   libpcsclite.so)))))
+          (add-after 'build 'patch-scheme-tests
+            (lambda _
+              (substitute* (find-files "tests" ".\\.scm$")
+                (("/usr/bin/env gpgscm")
+                 (string-append (getcwd) "/tests/gpgscm/gpgscm")))))
+          (add-before 'build 'patch-test-paths
+            (lambda _
+              (substitute* '("tests/inittests"
+                             "tests/pkits/inittests"
+                             "tests/Makefile"
+                             "tests/pkits/common.sh"
+                             "tests/pkits/Makefile")
+                (("/bin/pwd") (which "pwd")))
+              (substitute* "common/t-exectool.c"
+                (("/bin/cat") (which "cat"))
+                (("/bin/true") (which "true"))
+                (("/bin/false") (which "false"))))))))
     (home-page "https://gnupg.org/")
     (synopsis "GNU Privacy Guard")
     (description
@@ -353,15 +362,6 @@ libskba (working with X.509 certificates and CMS data).")
     (properties '((ftp-server . "ftp.gnupg.org")
                   (ftp-directory . "/gcrypt/gnupg")))))
 
-(define gnupg/fixed
-  (package
-    (inherit gnupg)
-    (source (origin
-              (inherit (package-source gnupg))
-              (patches
-                (append (origin-patches (package-source gnupg))
-                        (search-patches "gnupg-CVE-2022-34903.patch")))))))
-
 (define-public gnupg-1
   (package (inherit gnupg)
     (version "1.4.23")
@@ -387,13 +387,13 @@ libskba (working with X.509 certificates and CMS data).")
 (define-public gpgme
   (package
     (name "gpgme")
-    (version "1.15.1")
+    (version "1.18.0")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2"))
       (sha256
-       (base32 "1bg13l5s8x9p1v0jyv29n84bay27pflindpzjsc9gj7i4wdkrg7f"))))
+       (base32 "17hfigfnq6xz45b5xrp299f68b5mwx0aysd51sx5v4nf8yp4w79n"))))
     (build-system gnu-build-system)
     (native-inputs
      (list gnupg))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 0c701fb77e..e05970f98c 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -51,6 +51,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system mozilla)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
@@ -205,7 +206,7 @@ fractional-second-digits-append-item.js")
            rust
            `(,rust "cargo")))
     (inputs
-     (list icu4c-71 readline zlib))
+     (list icu4c readline zlib))
     (propagated-inputs
      (list nspr))                ; in the Requires.private field of mozjs-*.pc
     (home-page
@@ -244,7 +245,7 @@ in C/C++.")
                   (delete-file
                    "non262/Intl/DateTimeFormat/tz-environment-variable.js"))))))))
     (inputs (modify-inputs (package-inputs mozjs)
-              (replace "icu4c" icu4c)))))
+              (replace "icu4c" icu4c-69)))))
 
 (define-public mozjs-78
   (package
@@ -264,6 +265,25 @@ in C/C++.")
      (substitute-keyword-arguments (package-arguments mozjs)
        ((#:phases phases)
         #~(modify-phases #$phases
+            (add-after 'unpack 'patch-for-python-3.10
+              (lambda _
+                ;; Some classes were moved from collections to collections.abc
+                ;; in Python 3.10.
+                (substitute* "python/mozbuild/mozbuild/util.py"
+                  (("collections\\.Sequence")
+                   "collections.abc.Sequence"))
+                (substitute* "python/mozbuild/mozbuild/makeutil.py"
+                  (("from collections import Iterable")
+                   "from collections.abc import Iterable"))
+                (substitute* "python/mozbuild/mozbuild/backend/configenvironment.py"
+                  (("from collections import Iterable, OrderedDict")
+                   "from collections import OrderedDict\n\
+from collections.abc import Iterable"))
+                (substitute*
+                    "testing/mozbase/manifestparser/manifestparser/filters.py"
+                  (("from collections import defaultdict, MutableSequence")
+                   "from collections import defaultdict\n\
+from collections.abc import MutableSequence"))))
             (replace 'configure
               (lambda* (#:key configure-flags #:allow-other-keys)
                 ;; The configure script does not accept environment variables as
@@ -346,7 +366,7 @@ in C/C++.")
            rust
            `(,rust "cargo")))
     (inputs
-     (list icu4c readline zlib))))
+     (list icu4c-69 readline zlib))))
 
 (define mozilla-compare-locales
   (origin
@@ -663,7 +683,7 @@ in C/C++.")
     (name "icecat")
     (version %icecat-version)
     (source icecat-source)
-    (build-system gnu-build-system)
+    (build-system mozilla-build-system)
     (inputs
      (list alsa-lib
            bzip2
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index d4300f01da..41ef0d8bfb 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -310,60 +310,54 @@ objects!")
     (license license:lgpl2.1+)))
 
 (define-public autotrace
-  (let ((commit "travis-20190624.59")
-        (version-base "0.40.0"))
-    (package
-      (name "autotrace")
-      (version (string-append version-base "-"
-                              (if (string-prefix? "travis-" commit)
-                                  (string-drop commit 7)
-                                  commit)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/autotrace/autotrace")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (patches (search-patches "autotrace-glib-compat.patch"))
-                (sha256
-                 (base32
-                  "0mk4yavy42dj0pszr1ggnggpvmzs4ds46caa9wr55cqsypn7bq6s"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases (modify-phases %standard-phases
-                    ;; See: https://github.com/autotrace/autotrace/issues/27.
-                    (add-after 'unpack 'include-spline.h-header
-                      (lambda _
-                        (substitute* "Makefile.am"
-                          ((".*src/types.h.*" all)
-                           (string-append all "\t\tsrc/spline.h \\\n")))
-                        #t))
-                    ;; See: https://github.com/autotrace/autotrace/issues/26.
-                    (replace 'check
-                      (lambda _
-                        (invoke "sh" "tests/runtests.sh"))))))
-      (native-inputs
-       `(("which" ,which)
-         ("pkg-config" ,pkg-config)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("intltool" ,intltool)
-         ("libtool" ,libtool)
-         ("gettext" ,gettext-minimal)))
-      (inputs
-       `(("glib" ,glib)
-         ("libjpeg" ,libjpeg-turbo)
-         ("libpng" ,libpng)
-         ("imagemagick" ,imagemagick)
-         ("pstoedit" ,pstoedit)))
-      (home-page "https://github.com/autotrace/autotrace")
-      (synopsis "Bitmap to vector graphics converter")
-      (description "AutoTrace is a utility for converting bitmap into vector
+  (package
+    (name "autotrace")
+    (version "0.31.9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/autotrace/autotrace")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0fsg13pg72ac51l3fkzvyf7h9mzbvfxp9vfjfiwkyvx6hbm83apj"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags #~'("--disable-static")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-pkg-config-file
+                 (lambda _
+                   ;; autotrace can be built against either GraphicsMagick or
+                   ;; ImageMagick.  However the pkg-config file refers to
+                   ;; non-existent MAGICK_ variables instead of GRAPHICSMAGICK_
+                   ;; or IMAGEMAGICK_; fix that.
+                   (substitute* "autotrace.pc.in"
+                     (("@MAGICK_(LIBS|CFLAGS)@" _ var)
+                      (string-append "@IMAGEMAGICK_" var "@"))))))))
+    (native-inputs
+     (list which
+           autoconf
+           automake
+           libtool
+           intltool
+           pkg-config
+           procps))                     ;for tests
+    (inputs
+     (list glib
+           imagemagick
+           libjpeg-turbo
+           libpng
+           pstoedit))
+    (home-page "https://github.com/autotrace/autotrace")
+    (synopsis "Bitmap to vector graphics converter")
+    (description "AutoTrace is a utility for converting bitmap into vector
 graphics.  It can trace outlines and midlines, effect color reduction or
 despeckling and has support for many input and output formats.  It can be used
 with the @command{autotrace} utility or as a C library, @code{libautotrace}.")
-      (license (list license:gpl2+         ;for the utility itself
-                     license:lgpl2.1+))))) ;for use as a library
+    (license (list license:gpl2+        ;for the utility itself
+                   license:lgpl2.1+)))) ;for use as a library
 
 (define-public embree
   (package
@@ -807,7 +801,7 @@ exception-handling library.")
 (define-public lib2geom
   (package
     (name "lib2geom")
-    (version "1.1")
+    (version "1.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -816,7 +810,7 @@ exception-handling library.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "03bx9k1m4bfhmx0ldsg0bks6i8h7fmvl5vbg6gmpq0bk0nkmpnmv"))))
+                "0dq981g894hmvhd6rmfl1w32mksg9hpvpjs1qvfxrnz87rhkknj8"))))
     (build-system cmake-build-system)
     (arguments
      `(#:imported-modules ((guix build python-build-system)
@@ -873,20 +867,6 @@ basic geometries.")
     ;; https://gitlab.com/inkscape/inkscape/issues/784).
     (license license:gpl3+)))
 
-(define-public lib2geom-1.2
-  (package
-    (inherit lib2geom)
-    (version "1.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://gitlab.com/inkscape/lib2geom")
-                    (commit version)))
-              (file-name (git-file-name "lib2geom" version))
-              (sha256
-               (base32
-                "0dq981g894hmvhd6rmfl1w32mksg9hpvpjs1qvfxrnz87rhkknj8"))))))
-
 (define-public python-booleanoperations
   (package
     (name "python-booleanoperations")
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 51c1de3932..a938800d04 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -67,7 +67,7 @@
 (define-public graphviz
   (package
     (name "graphviz")
-    (version "2.49.0")
+    (version "5.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.com/api/v4/projects/4207231"
@@ -75,21 +75,14 @@
                                   version "/graphviz-" version ".tar.xz"))
               (sha256
                (base32
-                "042s6mbi681pwgffqww2ap780230nrsrfpfiz9a41dcjb5a0m524"))))
+                "0nkc90c3cvhvjy7z08f56l0fagkyaq63g6zszrr02bbsfxb7796s"))))
     (build-system gnu-build-system)
     (arguments
      ;; FIXME: rtest/rtest.sh is a ksh script (!).  Add ksh as an input.
      (list #:tests? #f
            #:phases
            #~(modify-phases %standard-phases
-               (add-after 'install 'move-docs
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out"))
-                         (doc (assoc-ref outputs "doc")))
-                     (mkdir-p (string-append doc "/share/graphviz"))
-                     (rename-file (string-append out "/share/graphviz/doc")
-                                  (string-append doc "/share/graphviz/doc")))))
-               (add-after 'move-docs 'move-guile-bindings
+               (add-after 'install 'move-guile-bindings
                  (lambda* (#:key outputs #:allow-other-keys)
                    (let* ((out (assoc-ref outputs "out"))
                           (lib (string-append out "/lib"))
@@ -104,19 +97,19 @@
                                   (string-append extdir
                                                  "/libgv_guile.so"))))))))
     (inputs
-     `(("libXrender" ,libxrender)
-       ("libX11" ,libx11)
-       ("gts" ,gts)
-       ("gd" ,gd)
-       ("guile" ,guile-3.0)                       ;Guile bindings
-       ("pango" ,pango)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("libltdl" ,libltdl)
-       ("libXaw" ,libxaw)
-       ("expat" ,expat)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)))
+     (list libxrender
+           libx11
+           gts
+           gd
+           guile-3.0                    ;Guile bindings
+           pango
+           fontconfig
+           freetype
+           libltdl
+           libxaw
+           expat
+           libjpeg-turbo
+           libpng))
     (native-inputs
      (list bison swig pkg-config))
     (outputs '("out" "doc"))                      ; 5 MiB of html + pdfs
diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm
index 70624f9c59..2923bd6465 100644
--- a/gnu/packages/gsasl.scm
+++ b/gnu/packages/gsasl.scm
@@ -77,14 +77,14 @@ the underlying security implementation.")
 (define-public gsasl
   (package
    (name "gsasl")
-   (version "2.0.1")
+   (version "2.2.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gsasl/gsasl-" version
                                 ".tar.gz"))
             (sha256
              (base32
-              "0yhvq3n6smgnc7fp0smmly8d248248xr7q2apbcbqhc80117ab1j"))))
+              "0nbp62isfdfrsnp34vfkwinfjyw9x05clacvsn2c8vcpp7inif3r"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags '("--with-gssapi-impl=mit"
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 943f46eeb5..aa49f89155 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -245,10 +245,7 @@ and very fast.")
              (chdir "libvisual")
              #t)))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("libintl" ,intltool)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal intltool libtool pkg-config))
     (inputs
      (list sdl))
     (native-search-paths
@@ -300,20 +297,20 @@ applications that want audio visualisation and audio visualisation plugins.")
              (chdir "libvisual-plugins")
              #t)))))
     (native-inputs
-     `(("bison" ,bison)
-       ("flex" ,flex)
-       ("gettext" ,gettext-minimal)
-       ("libintl" ,intltool)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
+     (list bison
+           flex
+           gettext-minimal
+           intltool
+           libtool
+           pkg-config))
     (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("esound" ,esound)
-       ("librsvg" ,librsvg)
-       ("gtk+" ,gtk+-2)
-       ("jack" ,jack-2)
-       ("libx11" ,libx11)
-       ("libxext" ,libxext)))
+     (list alsa-lib
+           esound
+           librsvg
+           gtk+-2
+           jack-2
+           libx11
+           libxext))
     (propagated-inputs
      (list libvisual))
     (synopsis "Audio visualisation library")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 61e271ab19..590b56ea6a 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -191,7 +191,7 @@ tools have full access to view and control running applications.")
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)))
     (inputs
-     `(("bash-minimal" ,bash-minimal)
+     `(("bash-minimal" ,bash-minimal)   ;for glib-or-gtk-wrap
        ("drm" ,libdrm)
        ("ghostscript" ,ghostscript)
        ("libspectre" ,libspectre)
@@ -243,67 +243,41 @@ output.  Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.")
 
 (define-public harfbuzz
   (package
-   (name "harfbuzz")
-   (version "2.8.2")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                 "/releases/download/" version "/harfbuzz-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "1rvv86wpm3y04fqns1655268rhvhvms469837709v2z2bhwn316m"))))
-   (build-system gnu-build-system)
-   (outputs '("out"
-              "bin")) ; 160K, only hb-view depend on cairo
-   (inputs
-    (list cairo))
-   (propagated-inputs
-    ;; There are all in the Requires or Requires.private field of '.pc'.
-    (list glib graphite2 icu4c))
-   (native-inputs
-    `(("glib:bin" ,glib "bin")          ;for glib-mkenums
-      ("gobject-introspection" ,gobject-introspection)
-      ("pkg-config" ,pkg-config)
-      ("python" ,python-wrapper)
-      ("which" ,which)))
-   (arguments
-    `(#:configure-flags `("--with-graphite2"
-                          "--with-gobject"
-                          ,(string-append
-                            "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
-   (synopsis "OpenType text shaping engine")
-   (description
-    "HarfBuzz is an OpenType text shaping engine.")
-   (license (license:x11-style "file://COPYING"
-                       "See 'COPYING' in the distribution."))
-   (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
-
-(define-public harfbuzz-3
-  (package
-    (inherit harfbuzz)
-    (version "3.4.0")
+    (name "harfbuzz")
+    (version "5.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                  "/releases/download/" version
-                                  "/harfbuzz-" version ".tar.xz"))
+                                  "/releases/download/" version "/harfbuzz-"
+                                  version ".tar.xz"))
               (sha256
                (base32
-                "0lprrl8iih8ji1n17xwm5llz05a1hv4g04b7a3y229dq9myahn3i"))))))
-
-(define-public harfbuzz-4
-  (package
-    (inherit harfbuzz)
-    (version "4.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                  "/releases/download/" version
-                                  "/harfbuzz-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0c5mzwgz43d37h75p4b6cgjg4v24jdd96i7gjpgxirn8qks2i5m4"))))))
+                "01agx06abnb0sv6m685i65ghi07zw8dx4n89sslam0c7cvdrbnrf"))))
+    (build-system gnu-build-system)
+    (outputs '("out"
+               "bin"))                  ;160K, only hb-view depend on cairo
+    (inputs
+     (list cairo))
+    (propagated-inputs
+     ;; There are all in the Requires or Requires.private field of '.pc'.
+     (list glib graphite2 icu4c))
+    (native-inputs
+     (list `(,glib "bin")               ;for glib-mkenums
+           gobject-introspection
+           pkg-config
+           python-wrapper
+           which))
+    (arguments
+     (list #:configure-flags
+           #~(list "--with-graphite2"
+                   "--with-gobject"
+                   (string-append "--bindir=" #$output:bin "/bin"))))
+    (synopsis "OpenType text shaping engine")
+    (description
+     "HarfBuzz is an OpenType text shaping engine.")
+    (license (license:x11-style "file://COPYING"
+                                "See 'COPYING' in the distribution."))
+    (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
 
 (define-public libdatrie
   (package
@@ -338,7 +312,7 @@ representing trie.  Trie is a kind of digital search tree.")
 (define-public libthai
   (package
     (name "libthai")
-    (version "0.1.28")
+    (version "0.1.29")
     (source
      (origin
        (method url-fetch)
@@ -346,7 +320,7 @@ representing trie.  Trie is a kind of digital search tree.")
         (string-append "https://linux.thai.net/pub/thailinux/software/"
                        "libthai/libthai-" version ".tar.xz"))
        (sha256
-        (base32 "04g93bgxrcnay9fglpq2lj9nr7x1xh06i60m7haip8as9dxs3q7z"))))
+        (base32 "1kab1w6i1fb76807xrwjfac8n2nky8jbvkhpnh117qahrdywr07w"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -371,7 +345,7 @@ applications.")
 (define-public pango
   (package
     (name "pango")
-    (version "1.48.10")
+    (version "1.50.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/pango/"
@@ -380,7 +354,7 @@ applications.")
               (patches (search-patches "pango-skip-libthai-test.patch"))
               (sha256
                (base32
-                "166wxhsjb6hb0dk7wkkdcmpvasl9n0a0aa64mdgagzfdidwzbq91"))))
+                "1yjm28qnq4v3dm8nj59cmhjiszv6x4h4j0y4fhqh4v0lvmcnyqng"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t             ; To wrap binaries and/or compile schemas
@@ -396,26 +370,26 @@ applications.")
                         (("\\[ 'test-harfbuzz'.*") "")))))))
     (propagated-inputs
      ;; These are all in Requires or Requires.private of the '.pc' files.
-     `(("cairo" ,cairo)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("fribidi" ,fribidi)
-       ("glib" ,glib)
-       ("harfbuzz" ,harfbuzz)
-       ("libthai" ,libthai)
-       ;; Some packages, such as Openbox, expect Pango to be built with the
-       ;; optional libxft support.
-       ("libxft" ,libxft)
-       ("libxrender" ,libxrender)))
+     (list cairo
+           fontconfig
+           freetype
+           fribidi
+           glib
+           harfbuzz
+           libthai
+           ;; Some packages, such as Openbox, expect Pango to be built with the
+           ;; optional libxft support.
+           libxft
+           libxrender))
     (inputs
      (list bash-minimal zlib))
     (native-inputs
-     `(("glib" ,glib "bin")                             ; glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc.
-       ("help2man" ,help2man)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list `(,glib "bin")               ;glib-mkenums, etc.
+           gobject-introspection        ;g-ir-compiler, etc.
+           help2man
+           perl
+           pkg-config
+           python-wrapper))
     (synopsis "Text and font handling library")
     (description "Pango is a library for laying out and rendering of text, with
 an emphasis on internationalization.  Pango can be used anywhere that text
@@ -425,22 +399,6 @@ handling for GTK+-2.x.")
     (home-page "https://pango.gnome.org/")
     (license license:lgpl2.0+)))
 
-;; TODO: Make this the default package in next release cycle.
-(define-public pango-next
-  (package
-    (inherit pango)
-    (name "pango-next")                 ;to avoid profile conflicts
-    (version "1.50.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/pango/"
-                                  (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
-              (patches (search-patches "pango-skip-libthai-test.patch"))
-              (sha256
-               (base32
-                "0qn1a7ccs3p5vc6swbqm6hdzka879l0gp9220lq4bcf2gpl67bgl"))))))
-
 (define-public pango-1.42
   (package
    (inherit pango)
@@ -487,9 +445,7 @@ handling for GTK+-2.x.")
                #~(begin
                    (substitute* "pango/pangocairo-font.c"
                      (("cairo_user_font_face_set_render_color_glyph_func")
-                      "cairo_user_font_face_set_render_glyph_func"))))))
-    (inputs (modify-inputs (package-inputs pango)
-               (prepend harfbuzz-4)))))
+                      "cairo_user_font_face_set_render_glyph_func"))))))))
 
 (define-public pangox-compat
   (package
@@ -657,8 +613,8 @@ printing and other features typical of a source code editor.")
            glib-next
            gtk
            libxml2
-           pcre2
-           pango-next))
+           pango
+           pcre2))
     (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
     (synopsis "GNOME source code widget")
     (description "GtkSourceView is a text widget that extends the standard
@@ -685,7 +641,6 @@ highlighting and other features typical of a source code editor.")
     (propagated-inputs
      (modify-inputs (package-propagated-inputs gtksourceview)
        (replace "gtk" gtk+)
-       (replace "pango-next" pango)
        (replace "glib" glib)))))
 
 (define-public gtksourceview-3
@@ -710,7 +665,7 @@ highlighting and other features typical of a source code editor.")
 (define-public gdk-pixbuf
   (package
     (name "gdk-pixbuf")
-    (version "2.42.4")
+    (version "2.42.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -718,7 +673,7 @@ highlighting and other features typical of a source code editor.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0k9f9177qxaryaxprwrhqnv5p2gdq4a8i6y05gm98qa8izc5v77y"))))
+                "1iplb43nn74pp3w1wjwwn522i9man6jia85k6j8v4494rcxfmb44"))))
     (build-system meson-build-system)
     (outputs '("out" "debug"))
     (arguments
@@ -726,57 +681,42 @@ highlighting and other features typical of a source code editor.")
        #:configure-flags '("-Dinstalled_tests=false")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook
-           (lambda* (#:key native-inputs inputs #:allow-other-keys)
-             (with-directory-excursion "docs"
-               (substitute* "meson.build"
-                 (("http://docbook.sourceforge.net/release/xsl/current/")
-                  (string-append (assoc-ref ,(if (%current-target-system)
-                                                 '(or native-inputs inputs)
-                                                 'inputs) "docbook-xsl")
-                                 "/xml/xsl/docbook-xsl-1.79.2/")))
-               (substitute* (find-files "." "\\.xml$")
-                 (("http://www.oasis-open.org/docbook/xml/4\\.3/")
-                  (string-append (assoc-ref ,(if (%current-target-system)
-                                                 '(or native-inputs inputs)
-                                                 'inputs) "docbook-xml")
-                                 "/xml/dtd/docbook/"))))))
          (add-before 'configure 'disable-failing-tests
            (lambda _
              (substitute* "tests/meson.build"
                (("\\[ 'pixbuf-fail', \\['conform', 'slow'\\], \\],")
                 ""))))
          ;; The slow tests take longer than the specified timeout.
-         ,@(if (any (cute string=? <> (%current-system))
-                    '("armhf-linux" "aarch64-linux"))
+         ,@(if (target-arm? (%current-system))
                '((replace 'check
-                   (lambda _
-                     (invoke "meson" "test" "--timeout-multiplier" "5"))))
+                   (lambda* (#:key tests? #:allow-other-keys)
+                     (when tests?
+                       (invoke "meson" "test" "--timeout-multiplier" "5")))))
                '()))))
     (propagated-inputs
-     (list ;; Required by gdk-pixbuf-2.0.pc
-           glib
-           ;; Required by gdk-pixbuf-xlib-2.0.pc
-           ;; TODO: Remove on core-updates.
-           libx11
-           ;; Used for testing and required at runtime.
-           shared-mime-info))
+     (list glib                         ;in Requires of gdk-pixbuf-2.0.pc
+
+           ;; These are in Requires.private of gdk-pixbuf-2.0.pc
+           libjpeg-turbo
+           libpng
+           libtiff
+           shared-mime-info))           ;required at runtime, too
     (inputs
-     `(,@(if (%current-target-system)
-             `(("bash-minimal" ,bash-minimal)) ; for glib-or-gtk-wrap
-             '())
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng"  ,libpng)
-       ("libtiff" ,libtiff)))
+     (if (%current-target-system)
+         (list bash-minimal)            ;for glib-or-gtk-wrap
+         '()))
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.3)
-       ("docbook-xsl" ,docbook-xsl)
-       ("gettext" ,gettext-minimal)
-       ("glib" ,glib "bin")                             ; glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc.
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("xsltproc" ,libxslt)))
+     (list gettext-minimal
+           `(,glib "bin")               ;glib-mkenums, etc.
+           gobject-introspection        ;g-ir-compiler, etc.
+           perl
+           pkg-config
+
+           ;; For the documentation.
+           docbook-xml-4.3
+           docbook-xsl
+           libxml2                      ;for XML_CATALOG_FILES
+           libxslt))                    ;for xsltproc
     (native-search-paths
      ;; This file is produced by the gdk-pixbuf-loaders-cache-file
      ;; profile hook.
@@ -821,11 +761,11 @@ ever use this library.")
     (license license:lgpl2.1+)))
 
 ;;; A minimal variant used to prevent a cycle with Inkscape.
-(define-public at-spi2-core-minimal
+(define-public at-spi2-core
   (hidden-package
    (package
      (name "at-spi2-core")
-     (version "2.40.0")
+     (version "2.45.90")
      (source (origin
                (method url-fetch)
                (uri (string-append "mirror://gnome/sources/" name "/"
@@ -833,33 +773,44 @@ ever use this library.")
                                    name "-" version ".tar.xz"))
                (sha256
                 (base32
-                 "0a9l6cfxynjn6jcp29d72i75xbkrzs1l5kmqcwmfal801b9sg5j1"))))
+                 "03dba3c6m3sfapkkbbgzvbi1qcmrrlppydxjjs1m8ds9qb9hl1g9"))))
      (build-system meson-build-system)
      (arguments
-      '(#:glib-or-gtk? #t    ; To wrap binaries and/or compile schemas
-        #:phases
-        (modify-phases %standard-phases
-          (add-after 'install 'check
-            (lambda _
-              (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
-              ;; Run test-suite under a dbus session.
-              (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
-                      (string-append %output "/share"))
-              ;; Don't fail on missing  '/etc/machine-id'.
-              (setenv "DBUS_FATAL_WARNINGS" "0") ;
-              (invoke "dbus-launch" "ninja" "test")))
-          (delete 'check))))
+      (list
+       #:glib-or-gtk? #t              ;to wrap binaries and/or compile schemas
+       #:phases
+       #~(modify-phases %standard-phases
+           (delete 'check)
+           (add-after 'install 'check
+             (lambda _
+               (setenv "HOME" (getenv "TMPDIR")) ;xfconfd requires a writable HOME
+               ;; Run test-suite under a dbus session.
+               (setenv "XDG_DATA_DIRS"  ;for finding org.xfce.Xfconf.service
+                       (string-append #$output "/share:" (getenv "XDG_DATA_DIRS")))
+               ;; Don't fail on missing  '/etc/machine-id'.
+               (setenv "DBUS_FATAL_WARNINGS" "0")
+               (with-directory-excursion (string-append "../at-spi2-core-"
+                                                        #$version "")
+                 (invoke "dbus-run-session" "--" "ci/run-registryd-tests.sh")
+                 (substitute* "ci/run-tests.sh"
+                   (("ps auxwww") "")   ;avoid a dependency on procps
+                   (("meson test -C _build")
+                    "meson test -C ../build")) ;adjust build directory
+                 (invoke "dbus-run-session" "--" "ci/run-tests.sh")))))))
      (inputs
-      (list bash-minimal))
+      (list bash-minimal libxml2))
      (propagated-inputs
       ;; atspi-2.pc refers to all these.
       (list dbus glib libx11 libxi libxtst))
      (native-inputs
-      `(("gettext" ,gettext-minimal)
-        ("glib" ,glib "bin")
-        ("gobject-introspection" ,gobject-introspection)
-        ("pkg-config" ,pkg-config)
-        ("python" ,python-wrapper)))
+      (list gettext-minimal
+            `(,glib "bin")
+            gobject-introspection
+            gsettings-desktop-schemas
+            pkg-config
+            python-dbusmock
+            python-pytest
+            python-wrapper))
      (synopsis "Assistive Technology Service Provider Interface, core components")
      (description
       "The Assistive Technology Service Provider Interface, core components,
@@ -867,86 +818,45 @@ is part of the GNOME accessibility project.")
      (license license:lgpl2.1+)
      (home-page "https://wiki.gnome.org/Accessibility/"))))
 
-(define-public at-spi2-core
-  (package/inherit at-spi2-core-minimal
-    (outputs (cons "doc" (package-outputs at-spi2-core-minimal)))
+(define-public at-spi2-core-with-documentation
+  (package/inherit at-spi2-core
+    (outputs (cons "doc" (package-outputs at-spi2-core)))
     (arguments
-     (substitute-keyword-arguments (package-arguments at-spi2-core-minimal)
+     (substitute-keyword-arguments (package-arguments at-spi2-core)
        ((#:configure-flags flags ''())
-        `(cons ,(if (%current-target-system)
-                    "-Ddocs=false"
-                    "-Ddocs=true")
-               ,flags))
+        #~(cons #$(if (%current-target-system)
+                      "-Ddocs=false"
+                      "-Ddocs=true")
+                #$flags))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'set-documentation-path
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; Ensure that the cross-references point to the "doc" output.
-               (substitute* "doc/libatspi/meson.build"
-                 (("docpath =.*")
-                  (string-append "docpath = '" (assoc-ref outputs "doc")
-                                 "/share/gtk-doc/html'\n")))))
-           (add-before 'install 'prepare-doc-directory
-             (lambda* (#:key outputs #:allow-other-keys)
-               (mkdir-p (string-append (assoc-ref outputs "doc") "/share"))))
-           ,@(if (%current-target-system)
-                 '()
-                 '((add-after 'install 'move-documentation
-                     (lambda* (#:key outputs #:allow-other-keys)
-                       (let ((out (assoc-ref outputs "out"))
-                             (doc (assoc-ref outputs "doc")))
-                         (copy-recursively
-                          (string-append out "/share/gtk-doc")
-                          (string-append doc "/share/gtk-doc"))
-                         (delete-file-recursively
-                          (string-append out "/share/gtk-doc")))))))))))
+        #~(modify-phases #$phases
+            (add-after 'unpack 'set-documentation-path
+              (lambda _
+                ;; Ensure that the cross-references point to the "doc" output.
+                (substitute* "doc/libatspi/meson.build"
+                  (("docpath =.*")
+                   (string-append "docpath = '" #$output:doc
+                                  "/share/gtk-doc/html'\n")))))
+            (add-before 'install 'prepare-doc-directory
+              (lambda _
+                (mkdir-p (string-append #$output:doc "/share"))))
+            #$@(if (%current-target-system)
+                   #~()
+                   #~((add-after 'install 'move-documentation
+                        (lambda _
+                          (copy-recursively
+                           (string-append #$output "/share/gtk-doc")
+                           (string-append #$output:doc "/share/gtk-doc"))
+                          (delete-file-recursively
+                           (string-append #$output "/share/gtk-doc"))))))))))
     (native-inputs
-     (append `(("docbook-xml" ,docbook-xml-4.3)
-               ("gtk-doc" ,gtk-doc/stable)
-               ("libxml2" ,libxml2))    ;for XML_CATALOG_FILES
-         (package-native-inputs at-spi2-core-minimal)))
+     (modify-inputs (package-native-inputs at-spi2-core)
+       (append docbook-xml-4.3 gtk-doc/stable)))
     (properties (alist-delete 'hidden?
-                              (package-properties at-spi2-core-minimal)))))
+                              (package-properties at-spi2-core)))))
 
 (define-public at-spi2-atk
-  (package
-    (name "at-spi2-atk")
-    (version "2.38.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (version-major+minor version)  "/"
-                                  name "-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0ks6r9sx27l80n3a7yjmkilxv48cqj183wc7cap3caw2myjhi86g"))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       ;; Compiling tests requires "libxml2" to be in 'inputs'.
-       ,@(if (%current-target-system)
-             `(#:configure-flags '("-Dtests=false"))
-             '())
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           ;; Run test-suite under a dbus session.
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "meson" "test"))))))
-    (propagated-inputs
-     (list at-spi2-core-minimal)) ; required by atk-bridge-2.0.pc
-    (inputs
-     (list atk glib))
-    (native-inputs
-     (list dbus ; For tests
-           gobject-introspection libxml2 pkg-config))
-    (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
-    (description
-     "The Assistive Technology Service Provider Interface
-is part of the GNOME accessibility project.")
-    (license license:lgpl2.1+)
-    (home-page "https://wiki.gnome.org/Accessibility/")))
+  (deprecated-package "at-spi2-atk" at-spi2-core))
 
 (define-public gtk+-2
   (package
@@ -969,7 +879,7 @@ is part of the GNOME accessibility project.")
     (propagated-inputs
      (list atk cairo
            (if (target-x86-64?)
-             librsvg-bootstrap
+             librsvg
              librsvg-2.40)
            glib pango))
     (inputs
@@ -1011,6 +921,12 @@ is part of the GNOME accessibility project.")
                (("g_test_add_func \\(\"/recent-manager.*;") ""))
              (substitute* "gtk/tests/defaultvalue.c"
                (("return g_test_run\\(\\);") ""))
+             ;; These require XPM support in Gdk-Pixbuf which is obsolete.
+             (substitute* "gtk/tests/textbuffer.c"
+               (("g_test_add_func.*test_fill_empty\\);")
+                "")
+               (("g_test_add_func.*test_tag\\);")
+                ""))
              #t))
          (add-before 'check 'pre-check
            (lambda _
@@ -1062,14 +978,12 @@ application suites.")
                                 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
     (propagated-inputs
      (list atk
-           at-spi2-atk
+           at-spi2-core
            cairo
            fribidi
            fontconfig
            freetype
-           (if (target-x86-64?)
-             librsvg-bootstrap
-             librsvg-2.40)
+           (librsvg-for-system)
            glib
            libcloudproviders-minimal
            libepoxy
@@ -1089,11 +1003,11 @@ application suites.")
            wayland
            wayland-protocols))
     (inputs
-     (list colord-minimal ;to prevent a cycle with inkscape
+     (list colord-minimal               ;to prevent a cycle with inkscape
            cups
            graphene
            harfbuzz
-           iso-codes/official ;XXX TODO core-updates: use iso-codes
+           iso-codes
            json-glib-minimal
            libxml2
            rest))
@@ -1150,8 +1064,7 @@ application suites.")
                 "tree-performance text children derive"))
              (substitute* "testsuite/reftests/Makefile.in"
                (("TEST_PROGS = gtk-reftest")
-                "TEST_PROGS = "))
-             #t))
+                "TEST_PROGS = "))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running X server.
@@ -1162,8 +1075,7 @@ application suites.")
              ;; Tests look for $XDG_RUNTIME_DIR.
              (setenv "XDG_RUNTIME_DIR" (getcwd))
              ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             #t))
+             (setenv "DBUS_FATAL_WARNINGS" "0")))
          (add-after 'install 'move-desktop-files
            ;; Move desktop files into 'bin' to avoid cycle references.
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1171,8 +1083,7 @@ application suites.")
                    (bin (assoc-ref outputs "bin")))
                (mkdir-p (string-append bin "/share"))
                (rename-file (string-append out "/share/applications")
-                            (string-append bin "/share/applications"))
-               #t))))))
+                            (string-append bin "/share/applications"))))))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUIX_GTK3_PATH")
@@ -1330,6 +1241,7 @@ application suites.")
            iso-codes
            json-glib
            libcloudproviders            ;for cloud-providers support
+           libgudev                     ;for gstreamer-gl
            libjpeg-turbo
            libpng
            libtiff
@@ -1340,7 +1252,7 @@ application suites.")
      ;; Following dependencies are referenced in .pc files.
      (list cairo
            fontconfig
-           librsvg-bootstrap
+           (librsvg-for-system)
            glib
            graphene
            libepoxy
@@ -1355,7 +1267,7 @@ application suites.")
            libxkbcommon
            libxrandr
            libxrender
-           pango-next
+           pango
            vulkan-headers
            vulkan-loader                ;for vulkan graphics API support
            wayland                      ;for wayland display-backend
@@ -1747,10 +1659,8 @@ library.")
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
-       #:configure-flags
-       (list
-        "-Dbuild-documentation=true")
+     '(#:glib-or-gtk? #t
+       #:configure-flags '("-Dbuild-documentation=true")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'move-doc
@@ -1760,19 +1670,18 @@ library.")
                (mkdir-p (string-append doc "/share"))
                (rename-file
                 (string-append out "/share/doc")
-                (string-append doc "/share/doc"))
-               #t))))))
+                (string-append doc "/share/doc"))))))))
     (native-inputs
-     `(("dot" ,graphviz)
-       ("doxygen" ,doxygen)
-       ("m4" ,m4)
-       ("mm-common" ,mm-common)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("xsltproc" ,libxslt)))
+     (list doxygen
+           graphviz                     ;for 'dot'
+           libxslt                      ;for 'xsltproc'
+           m4
+           mm-common
+           perl
+           pkg-config
+           python))
     (propagated-inputs
-     (list cairo cairomm glibmm pango-next))
+     (list cairo cairomm glibmm pango))
     (home-page "https://pango.gnome.org//")
     (synopsis "C++ interface to the Pango text rendering library")
     (description
@@ -1784,7 +1693,7 @@ library.")
   (package
     (inherit pangomm)
     (name "pangomm")
-    (version "2.46.0")
+    (version "2.46.2")
     (source
      (origin
        (method url-fetch)
@@ -1793,7 +1702,7 @@ library.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "06zczkaxf5p5kjgnzrfylzi40w9a8lxpndgs7rpn12qrsq27sy6k"))))
+        (base32 "1x56xb4k1d9g88a1d9rlcvy97mmj39rib6c3wfzpff04vjs2li2p"))))
     (propagated-inputs
      (list cairomm-1.14 glibmm-2.64 pango))))
 
@@ -1937,7 +1846,7 @@ tutorial.")
   (package
     (inherit gtkmm)
     (name "gtkmm")
-    (version "3.24.5")
+    (version "3.24.6")
     (source
      (origin
        (method url-fetch)
@@ -1946,7 +1855,7 @@ tutorial.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1ri2msp3cmzi6r65ghwb8gfavfaxv0axpwi3q60nm7v8hvg36qw5"))))
+        (base32 "1mhi3ws43l051fha4zssfpykraa1qc2hd408l2xk65jfjhp18gjb"))))
     (propagated-inputs
      `(("atkmm-2.28" ,atkmm-2.28)
        ("cairomm-1.14" ,cairomm-1.14)
@@ -2008,7 +1917,7 @@ printing and other features typical of a source code editor.")
 (define-public python-pycairo
   (package
     (name "python-pycairo")
-    (version "1.20.0")
+    (version "1.21.0")
     (source
      (origin
       (method url-fetch)
@@ -2016,7 +1925,7 @@ printing and other features typical of a source code editor.")
                           version "/pycairo-" version ".tar.gz"))
       (sha256
        (base32
-        "1326aa2ybhhhrvz3n4p22z5sic25m016ddb5yq0hvbprnw6a35an"))))
+        "0jxpyibpjadw8ah1mqbhvryr795myiznb1ikm8wgjbamibqhf695"))))
     (build-system python-build-system)
     (native-inputs
      (list pkg-config python-pytest))
@@ -2026,6 +1935,8 @@ printing and other features typical of a source code editor.")
     (synopsis "Python bindings for cairo")
     (description
      "Pycairo is a set of Python bindings for the Cairo graphics library.")
+    (properties
+     '((upstream-name . "pycairo")))
     (license license:lgpl3+)))
 
 ;; Pycairo no longer supports Python 2 since version 1.19.0, so we stick
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index fcdf75051c..92ab20ff08 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018 Amirouche <amirouche@hypermove.net>
@@ -310,15 +310,15 @@ without requiring the source code to be rewritten.")
   (package
     (inherit guile-2.2)
     (name "guile")
-    (version "3.0.7")
+    (version "3.0.8")
     (source (origin
               (inherit (package-source guile-2.2))
-              (patches '())     ; We no longer need the patches.
               (uri (string-append "mirror://gnu/guile/guile-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1dwiwsrpm4f96alfnz6wibq378242z4f16vsxgy1n9r00v3qczgm"))
+                "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys"))
+              (patches (search-patches "guile-cross-compilation.patch"))
               ;; Replace the snippet because the oom-test still
               ;; fails on some 32-bit architectures.
               (snippet '(begin
@@ -334,6 +334,11 @@ without requiring the source code to be rewritten.")
        (delete "gmp" "libltdl")))
     (arguments
      (substitute-keyword-arguments (package-arguments guile-2.0)
+       ;; Guile 3.0.8 is bit-reproducible when built in parallel, thanks to
+       ;; its multi-stage build process for cross-module inlining, except when
+       ;; cross-compiling.
+       ((#:parallel-build? _ #f)
+        (not (%current-target-system)))
        ((#:configure-flags flags ''())
         ;; XXX: JIT-enabled Guile crashes in obscure ways on GNU/Hurd.
         `(cons* ,@(if (hurd-target?)
@@ -369,6 +374,16 @@ without requiring the source code to be rewritten.")
                          (("^GUILE_OPTIMIZATIONS.*")
                           "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
                  '())
+           ,@(if (target-ppc32?)
+               `((replace 'adjust-bootstrap-flags
+                   (lambda _
+                     ;; Upstream knows about suggested solution.
+                     ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
+                     ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977223#46
+                     (substitute* "stage0/Makefile.in"
+                       (("^GUILE_OPTIMIZATIONS.*")
+                        "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
+               '())
            ,@(if (or (target-ppc32?)
                      (target-riscv64?))
                `((add-after 'unpack 'skip-failing-fdes-test
@@ -388,37 +403,7 @@ without requiring the source code to be rewritten.")
             (files '("lib/guile/3.0/site-ccache"
                      "share/guile/site/3.0")))))))
 
-(define-public guile-3.0-latest
-  (package
-    (inherit guile-3.0)
-    (version "3.0.8")
-    (source (origin
-              (inherit (package-source guile-3.0))
-              (uri (string-append "mirror://gnu/guile/guile-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys"))
-              (patches (search-patches "guile-cross-compilation.patch"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments guile-3.0)
-       ;; Guile 3.0.8 is bit-reproducible when built in parallel, thanks to
-       ;; its multi-stage build process for cross-module inlining, except when
-       ;; cross-compiling.
-       ((#:parallel-build? _ #f)
-        (not (%current-target-system)))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           ,@(if (target-ppc32?)
-               `((replace 'adjust-bootstrap-flags
-                   (lambda _
-                     ;; Upstream knows about suggested solution.
-                     ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214
-                     ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977223#46
-                     (substitute* "stage0/Makefile.in"
-                       (("^GUILE_OPTIMIZATIONS.*")
-                        "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n")))))
-               '())))))))
+(define-public guile-3.0-latest guile-3.0)
 
 (define-public guile-3.0/fixed
   ;; A package of Guile that's rarely changed.  It is the one used in the
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 8a3c8d44c7..ed2eaea984 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -423,7 +423,11 @@ libraries are included in this package.")
     (inputs
      `(("gmp" ,gmp)
        ("ncurses" ,ncurses)
-       ("libffi" ,libffi)
+
+       ;; Use a LibFFI variant without static trampolines to work around
+       ;; <https://gitlab.haskell.org/ghc/ghc/-/issues/20051>.
+       ("libffi" ,libffi-sans-static-trampolines)
+
        ("ghc-testsuite"
         ,(origin
            (method url-fetch)
@@ -587,7 +591,9 @@ interactive environment for the functional language Haskell.")
     (supported-systems '("i686-linux" "x86_64-linux"))
     (outputs '("out" "doc"))
     (inputs
-     (list gmp ncurses libffi))
+     ;; Use a LibFFI variant without static trampolines to work around
+     ;; <https://gitlab.haskell.org/ghc/ghc/-/issues/20051>.
+     (list gmp ncurses libffi-sans-static-trampolines))
     (native-inputs
      `(("perl" ,perl)
        ("python" ,python-2)                ; for tests
@@ -757,10 +763,17 @@ interactive environment for the functional language Haskell.")
            (uri (string-append
                  "https://www.haskell.org/ghc/dist/"
                  version "/" name "-" version "-testsuite.tar.xz"))
-           (patches (search-patches "ghc-testsuite-dlopen-pie.patch"))
+           (patches (search-patches "ghc-testsuite-dlopen-pie.patch"
+                                    "ghc-testsuite-grep-compat.patch"))
            (sha256
             (base32
-             "0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))))
+             "0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))
+           (modules '((guix build utils)))
+           (snippet
+            ;; collections.Iterable was moved to collections.abc in Python 3.10.
+            '(substitute* "testsuite/driver/testlib.py"
+               (("collections\\.Iterable")
+                "collections.abc.Iterable")))))
        ,@(filter (match-lambda
                    (("ghc-bootstrap" . _) #f)
                    (("ghc-testsuite" . _) #f)
@@ -832,10 +845,17 @@ interactive environment for the functional language Haskell.")
            (uri (string-append
                  "https://www.haskell.org/ghc/dist/"
                  version "/ghc-" version "-testsuite.tar.xz"))
-           (patches (search-patches "ghc-testsuite-dlopen-pie.patch"))
+           (patches (search-patches "ghc-testsuite-dlopen-pie.patch"
+                                    "ghc-testsuite-grep-compat.patch"))
            (sha256
             (base32
-             "0c55pj2820q26rikhpf636sn4mjgqsxjrl94vsywrh79dxp3k14z"))))
+             "0c55pj2820q26rikhpf636sn4mjgqsxjrl94vsywrh79dxp3k14z"))
+           (modules '((guix build utils)))
+           (snippet
+            ;; collections.Iterable was moved to collections.abc in Python 3.10.
+            '(substitute* "testsuite/driver/testlib.py"
+               (("collections\\.Iterable")
+                "collections.abc.Iterable")))))
        ("git" ,git-minimal/fixed)                 ; invoked during tests
        ,@(filter (match-lambda
                    (("ghc-bootstrap" . _) #f)
@@ -884,10 +904,17 @@ interactive environment for the functional language Haskell.")
            (uri (string-append
                  "https://www.haskell.org/ghc/dist/"
                  version "/ghc-" version "-testsuite.tar.xz"))
-           (patches (search-patches "ghc-testsuite-dlopen-pie.patch"))
+           (patches (search-patches "ghc-testsuite-dlopen-pie.patch"
+                                    "ghc-testsuite-grep-compat.patch"))
            (sha256
             (base32
-             "1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz"))))
+             "1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz"))
+           (modules '((guix build utils)))
+           (snippet
+            ;; collections.Iterable was moved to collections.abc in Python 3.10.
+            '(substitute* "testsuite/driver/testlib.py"
+               (("collections\\.Iterable")
+                "collections.abc.Iterable")))))
        ("git" ,git-minimal/fixed)                 ; invoked during tests
        ,@(filter (match-lambda
                    (("ghc-bootstrap" . _) #f)
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index 94a72fac15..2e00b6ba26 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2017, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
@@ -40,75 +40,7 @@
 
 (define-public icu4c
   (package
-   (name "icu4c")
-   (version "69.1")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append
-                  "https://github.com/unicode-org/icu/releases/download/release-"
-                  (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
-                  "/icu4c-"
-                  (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
-                  "-src.tgz"))
-            (sha256
-             (base32 "0icps0avkwy5df3wwc5kybxcg63hcgk4phdh9g244g0xrmx7pfjc"))))
-   (build-system gnu-build-system)
-   ;; When cross-compiling, this package needs a source directory of a
-   ;; native-build of itself.
-   (native-inputs
-    `(("python" ,python-minimal)
-      ,@(if (%current-target-system)
-            `(("icu4c-build-root" ,icu4c-build-root))
-            '())))
-   (inputs
-    (list perl))
-   (arguments
-    `(#:configure-flags
-      (list
-       "--enable-rpath"
-        ,@(if (%current-target-system)
-              '((string-append "--with-cross-build="
-                                (assoc-ref %build-inputs "icu4c-build-root")))
-              '()))
-      #: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))
-        ,@(if (target-riscv64?)
-            `((add-after 'unpack 'disable-failing-test
-                ;; It is unknown why this test is failing.
-                (lambda _
-                  (substitute* "source/test/intltest/numbertest_api.cpp"
-                    (("(TESTCASE_AUTO\\(unitUsage\\));" all)
-                     (string-append "//" all))))))
-            '())
-        (add-after 'install 'avoid-coreutils-reference
-          ;; Don't keep a reference to the build tools.
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              (substitute* (find-files (string-append out "/lib/icu")
-                                       "\\.inc$")
-                (("INSTALL_CMD=.*/bin/install") "INSTALL_CMD=install"))
-              #t))))))
-   (synopsis "International Components for Unicode")
-   (description
-    "ICU is a set of C/C++ and Java libraries providing Unicode and
-globalisation support for software applications.  This package contains the
-C/C++ part.")
-   (license x11)
-   (home-page "http://site.icu-project.org/")))
-
-(define-public icu4c-71
-  (package
-    (inherit icu4c)
+    (name "icu4c")
     (version "71.1")
     (source (origin
               (method url-fetch)
@@ -119,8 +51,59 @@ C/C++ part.")
                     (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
                     "-src.tgz"))
               (sha256
-               (base32
-                "1gqywaqj9jmdwrng9lm6inyqmi5j2cz36db9dcqg3yk13zjyd9v7"))))))
+               (base32 "1gqywaqj9jmdwrng9lm6inyqmi5j2cz36db9dcqg3yk13zjyd9v7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     (append (list python-minimal)
+             (if (%current-target-system)
+                 ;; When cross-compiling, this package needs a source directory
+                 ;; of a native-build of itself.
+                 (list icu4c-build-root)
+                 '())))
+    (inputs
+     (list perl))
+    (arguments
+     (list
+      #:configure-flags
+      #~(list
+         "--enable-rpath"
+         #$@(if (%current-target-system)
+                #~((string-append "--with-cross-build="
+                                  #+(this-package-native-input
+                                     "icu4c-build-root")))
+                #~()))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir-to-source
+            (lambda _ (chdir "source")))
+          (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="))))
+          #$@(if (target-riscv64?)
+                 #~((add-after 'unpack 'disable-failing-test
+                      ;; It is unknown why this test is failing.
+                      (lambda _
+                        (substitute* "source/test/intltest/numbertest_api.cpp"
+                          (("(TESTCASE_AUTO\\(unitUsage\\));" all)
+                           (string-append "//" all))))))
+                 #~())
+          (add-after 'install 'avoid-coreutils-reference
+            ;; Don't keep a reference to the build tools.
+            (lambda _
+              (substitute* (find-files (string-append #$output "/lib/icu")
+                                       "\\.inc$")
+                (("INSTALL_CMD=.*/bin/install") "INSTALL_CMD=install")))))))
+    (synopsis "International Components for Unicode")
+    (description
+     "ICU is a set of C/C++ and Java libraries providing Unicode and
+globalisation support for software applications.  This package contains the
+C/C++ part.")
+    (license x11)
+    (home-page "http://site.icu-project.org/")))
 
 (define-public icu4c-70
   (package
@@ -152,6 +135,22 @@ C/C++ part.")
                     (string-append "//" all))))))))
        (package-arguments icu4c)))))
 
+(define-public icu4c-69
+  (package
+    (inherit icu4c)
+    (version "69.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/unicode-org/icu/releases/download/release-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+                    "/icu4c-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+                    "-src.tgz"))
+              (sha256
+               (base32
+                "0icps0avkwy5df3wwc5kybxcg63hcgk4phdh9g244g0xrmx7pfjc"))))))
+
 (define-public icu4c-67
   (package
     (inherit icu4c)
@@ -190,17 +189,15 @@ C/C++ part.")
     (name "icu4c-build-root")
     (arguments
      (substitute-keyword-arguments (package-arguments icu4c)
-       ((#:tests? _ '())
-        #f)
-       ((#:out-of-source? _ '())
-        #t)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (copy-recursively "../build" out)
-                 #t)))))))
+       ((#:tests? _ #f)
+         #f)
+        ((#:out-of-source? _ #t)
+         #t)
+        ((#:phases phases)
+         #~(modify-phases #$phases
+             (replace 'install
+               (lambda _
+                 (copy-recursively "../build" #$output)))))))
     (native-inputs '())))
 
 (define-public java-icu4j
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 557a89aa6b..ce48b9fefe 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -569,28 +569,26 @@ extracting icontainer icon files.")
 (define-public libtiff
   (package
    (name "libtiff")
-   (version "4.3.0")
+   (version "4.4.0")
    (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.osgeo.org/libtiff/tiff-"
-                           version ".tar.gz"))
+                           version ".tar.xz"))
        (sha256
         (base32
-         "1j3snghqjbhwmnm5vz3dr1zm68dj15mgbx1wqld7vkl7n2nfaihf"))))
+         "1h8xrcpbyf9id2hw2ms0cmpgx0li8gladjzj82ycgk28018pnc29"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                           ;1.8 MiB of HTML documentation
    (arguments
-    ;; Instead of using --docdir, this package has its own --with-docdir.
-    `(#:configure-flags
-      (list (string-append "--with-docdir="
-                           (assoc-ref %outputs "doc")
-                           "/share/doc/"
-                           ,name "-" ,(package-version this-package))
-            "--disable-static")))
-   (inputs `(("zlib" ,zlib)
-             ("libjpeg" ,libjpeg-turbo)))
+    (list #:configure-flags
+          ;; Instead of using --docdir, this package has its own --with-docdir.
+          #~(list (string-append "--with-docdir=" #$output:doc "/share/doc/"
+                                 #$name "-" #$(package-version this-package))
+                "--disable-static")))
+   (inputs
+    (list libjpeg-turbo xz zlib))
    (synopsis "Library for handling TIFF files")
    (description
     "Libtiff provides support for the Tag Image File Format (TIFF), a format
@@ -599,6 +597,8 @@ Included are a library, libtiff, for reading and writing TIFF and a small
 collection of tools for doing simple manipulations of TIFF images.")
    (license (license:non-copyleft "file://COPYRIGHT"
                                   "See COPYRIGHT in the distribution."))
+   (properties
+    '((upstream-name . "tiff")))
    (home-page "http://www.simplesystems.org/libtiff/")))
 
 (define-public leptonica
@@ -673,26 +673,12 @@ arithmetic ops.")
                (base32
                 "0dwa24kjqyg9hmm40fh048sdxfpnasz43l2rm8wlkw1qbdlpd517"))))
     (build-system gnu-build-system)
-    (arguments '(#:configure-flags '("--disable-static")
-                 #:phases (modify-phases %standard-phases
-                            (add-before 'bootstrap 'force-bootstrap
-                              (lambda _
-                                ;; XXX: jbig2dec 0.18 was released with
-                                ;; a broken configure script, so we
-                                ;; recreate the build system here.
-                                ;; Remove the autoconf inputs below
-                                ;; when deleting this code.
-                                (delete-file "configure")
-                                (delete-file "autogen.sh")
-                                #t)))))
+    (arguments '(#:configure-flags '("--disable-static")))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("python" ,python-minimal-wrapper)))     ;for tests
+     (list python-minimal-wrapper))     ;for tests
     (synopsis "Decoder of the JBIG2 image compression format")
     (description
-      "JBIG2 is designed for lossy or lossless encoding of @code{bilevel} (1-bit
+     "JBIG2 is designed for lossy or lossless encoding of @code{bilevel} (1-bit
 monochrome) images at moderately high resolution, and in particular scanned
 paper documents.  In this domain it is very efficient, offering compression
 ratios on the order of 100:1.
@@ -782,17 +768,17 @@ images of initially unknown height.")
 (define-public openjpeg-data
   (package
     (name "openjpeg-data")
-    (version "2020.11.30")
+    (version "2021.09.26")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
          (url "https://github.com/uclouvain/openjpeg-data")
-         (commit "cd724fb1f93e6af41ebc68c4904f4bf2a4cd1e60")))
+         (commit "1f3d093030f9a0b43353ec6b48500f65786ff57a")))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1q2swh4g9r9haqs075fyk42aclqcs9q51lqqzfb57lisszminpwm"))))
+        (base32 "13jpdaqk7mngk0xw6xbh9zgipip6n25spvqd97hwpfna1zyh8lzh"))))
     (build-system copy-build-system)
     (synopsis "Test files for OpenJPEG")
     (description "OpenJPEG-Data contains all files required to run the openjpeg
@@ -804,7 +790,7 @@ test suite, including conformance tests (following Rec. ITU-T T.803 | ISO/IEC
 (define-public openjpeg
   (package
     (name "openjpeg")
-    (version "2.4.0")
+    (version "2.5.0")
     (source
      (origin
        (method git-fetch)
@@ -813,7 +799,7 @@ test suite, including conformance tests (following Rec. ITU-T T.803 | ISO/IEC
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "143dvy5g6v6129lzvl0r8mrgva2fppkn0zl099qmi9yi9l9h7yyf"))))
+        (base32 "0xvcxlzqlylnjsyl1j64d7rgzv68ihm4qy6fpdrix3xzbqb3fjpz"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -1656,49 +1642,44 @@ is hereby granted."))))
 (define-public libjpeg-turbo
   (package
     (name "libjpeg-turbo")
-    (version "2.0.5")
+    (version "2.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/libjpeg-turbo/"
                                   version "/libjpeg-turbo-" version ".tar.gz"))
               (sha256
                (base32
-                "0pbv6pc97kbj7ib31qcwi7lnmm9xg5y3b11aasmkhfjvf7rgdy0n"))))
+                "0arl61ici38ann5xjidwdzkhmjdp1r95x4x4zinnh4qs2fhjdvfk"))))
     (build-system cmake-build-system)
     (native-inputs
      (list nasm))
     (arguments
-     `(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR:PATH=lib"
-                           "-DENABLE_STATIC=0"
-                           ;; djpeg-shared-3x2-float-prog-cmp fails on 32-bit PPC.
-                           ,@(if (string=? "powerpc-linux" (%current-system))
-                               `("-DFLOATTEST=NO")
-                               '())
-                           ;; The build system probes for the current CPU, but
-                           ;; that fails when cross-compiling.
-                           ,@(let ((target (%current-target-system)))
-                               (if target
-                                   (cond
-                                    ((string-prefix? "arm" target)
-                                     `("-DCMAKE_SYSTEM_PROCESSOR=arm"))
-                                    ((string-prefix? "aarch64" target)
-                                     `("-DCMAKE_SYSTEM_PROCESSOR=aarch64"))
-                                    ((string-prefix? "i686" target)
-                                     `("-DCMAKE_SYSTEM_PROCESSOR=x86"))
-                                    ((string-prefix? "x86_64" target)
-                                     `("-DCMAKE_SYSTEM_PROCESSOR=x86_64"))
-                                    ;; 32-bit and 64-bit
-                                    ((string-prefix? "powerpc" target)
-                                     `("-DCMAKE_SYSTEM_PROCESSOR=powerpc"))
-                                    ((string-prefix? "riscv64" target)
-                                     `("-DCMAKE_SYSTEM_PROCESSOR=riscv64"))
-                                    (else '()))
-                                   '())))
-       ,@(if (%current-target-system)
-             '()
-             ;; Use a special "bootstrap" CMake for the native build to work
-             ;; around a circular dependency between CMake and this package.
-             `(#:cmake ,cmake-bootstrap))))
+     (list #:configure-flags
+           #~'("-DCMAKE_INSTALL_LIBDIR:PATH=lib"
+               "-DENABLE_STATIC=0"
+               ;; djpeg-shared-3x2-float-prog-cmp fails on 32-bit PPC.
+               #$@(if (string=? "powerpc-linux" (%current-system))
+                      '("-DFLOATTEST=NO")
+                      '())
+               ;; The build system probes for the current CPU, but
+               ;; that fails when cross-compiling.
+               #$@(let ((target (%current-target-system)))
+                    (if target
+                        (cond ((string-prefix? "arm" target)
+                               '("-DCMAKE_SYSTEM_PROCESSOR=arm"))
+                              ((string-prefix? "aarch64" target)
+                               '("-DCMAKE_SYSTEM_PROCESSOR=aarch64"))
+                              ((string-prefix? "i686" target)
+                               '("-DCMAKE_SYSTEM_PROCESSOR=x86"))
+                              ((string-prefix? "x86_64" target)
+                               '("-DCMAKE_SYSTEM_PROCESSOR=x86_64"))
+                              ;; 32-bit and 64-bit
+                              ((string-prefix? "powerpc" target)
+                               '("-DCMAKE_SYSTEM_PROCESSOR=powerpc"))
+                              ((string-prefix? "riscv64" target)
+                               '("-DCMAKE_SYSTEM_PROCESSOR=riscv64"))
+                              (else '()))
+                        '())))))
     (home-page "https://libjpeg-turbo.org/")
     (synopsis "SIMD-accelerated JPEG image handling library")
     (description "libjpeg-turbo is a JPEG image codec that accelerates baseline
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 2e43835e4f..ba9ef8b1d1 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages graphics)
@@ -60,15 +61,16 @@
   (hidden-package
    (package
      (name "inkscape")
-     (version "1.1.1")
+     (version "1.2.1")
      (source
       (origin
         (method url-fetch)
         (uri (string-append "https://media.inkscape.org/dl/"
                             "resources/file/"
                             "inkscape-" version ".tar.xz"))
+        (patches (search-patches "inkscape-poppler-compat.patch"))
         (sha256
-         (base32 "1bvqg5xfs3m6r7qfdhmgzwhd1hx8wvg3nhvhmalwzcdm6ffhpjmf"))
+         (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))
         (modules '((guix build utils)
                    (ice-9 format)))
         (snippet
@@ -175,6 +177,20 @@ endif()~%~%"
               (substitute* "testfiles/cli_tests/CMakeLists.txt"
                 (("add_cli_test\\(export-latex")
                  "message(TEST_DISABLED: export-latex"))))
+          (add-after 'unpack 'disable-vertical-glyph-tests
+            (lambda _
+              ;; FIXME: These tests fail with newer Pango and Harfbuzz:
+              ;;   https://gitlab.com/inkscape/inkscape/-/issues/2917
+              ;;   https://gitlab.com/inkscape/inkscape/-/issues/3554
+              ;; Simply providing older versions don't work, as we need
+              ;; the full GTK stack; we could use package-input-rewriting
+              ;; but then have to also downgrade pangomm and disable tests
+              ;; in librsvg and GTK+.  Just ignore for now.
+              (substitute* "testfiles/rendering_tests/CMakeLists.txt"
+                (("test-glyph-y-pos") "")
+                (("text-glyphs-combining") "")
+                (("text-glyphs-vertical") "")
+                (("test-rtl-vertical") ""))))
           (add-after 'unpack 'set-home
             ;; Mute Inkscape warnings during tests.
             (lambda _
@@ -190,45 +206,51 @@ endif()~%~%"
           (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
             (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
           (add-after 'install 'wrap-program
-            ;; Ensure Python is available at runtime.
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out")))
-                (wrap-program (string-append out "/bin/inkscape")
-                  `("GUIX_PYTHONPATH" ":" prefix
-                    (,(getenv "GUIX_PYTHONPATH"))))))))))
+             ;; Ensure Python is available at runtime.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-program (string-append out "/bin/inkscape")
+                   `("GUIX_PYTHONPATH" prefix
+                     (,(getenv "GUIX_PYTHONPATH")))
+                   ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
+                   ;; its own icons in pure environments.
+                   `("GDK_PIXBUF_MODULE_FILE" =
+                     (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
      (inputs
-      `(("aspell" ,aspell)
-        ("autotrace" ,autotrace)
-        ("gdl" ,gdl-minimal)
-        ("gtkmm" ,gtkmm-3)
-        ("gtk" ,gtk+)
-        ("gtkspell3" ,gtkspell3)
-        ("gsl" ,gsl)
-        ("poppler" ,poppler)
-        ("lib2geom" ,lib2geom)
-        ("libjpeg" ,libjpeg-turbo)
-        ("libpng" ,libpng)
-        ("libxml2" ,libxml2)
-        ("libxslt" ,libxslt)
-        ("libgc" ,libgc)
-        ("libsoup" ,libsoup-minimal-2)
-        ("libcdr" ,libcdr)
-        ("libvisio" ,libvisio)
-        ("libwpd" ,libwpd)
-        ("libwpg" ,libwpg)
-        ("freetype" ,freetype)
-        ("popt" ,popt)
-        ("potrace" ,potrace)
-        ("lcms" ,lcms)
-        ("boost" ,boost)
-        ("python" ,python-wrapper)
-        ("python-scour" ,python-scour)
-        ("python-pyserial" ,python-pyserial)
-        ("python-numpy" ,python-numpy)
-        ("python-lxml" ,python-lxml)))
+      (list aspell
+            autotrace
+            bash-minimal
+            gdl-minimal
+            gtkmm-3
+            gtk+
+            gtkspell3
+            gsl
+            poppler
+            lib2geom
+            libjpeg-turbo
+            libpng
+            libxml2
+            libxslt
+            libgc
+            librsvg                     ;for the pixbuf loader
+            libsoup-minimal-2
+            libcdr
+            libvisio
+            libwpd
+            libwpg
+            freetype
+            popt
+            potrace
+            lcms
+            boost
+            python-wrapper
+            python-scour
+            python-pyserial
+            python-numpy
+            python-lxml))
      (native-inputs
-      (list imagemagick                  ;for tests
-            intltool
+      (list gettext-minimal
+            imagemagick                  ;for tests
             `(,glib "bin")
             googletest
             perl
@@ -254,24 +276,4 @@ as the native format.")
                            "inkscape-" version ".tar.xz"))
        (sha256
         (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))))
-    (build-system cmake-build-system)
-    (arguments
-     (substitute-keyword-arguments (package-arguments inkscape/stable)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'wrap-program
-             ;; Ensure Python is available at runtime.
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (wrap-program (string-append out "/bin/inkscape")
-                   `("GUIX_PYTHONPATH" prefix
-                     (,(getenv "GUIX_PYTHONPATH")))
-                   ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
-                   ;; its own icons in pure environments.
-                   `("GDK_PIXBUF_MODULE_FILE" =
-                     (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))))
-    (inputs (modify-inputs (package-inputs inkscape/stable)
-              (replace "lib2geom" lib2geom-1.2)
-              (append bash-minimal
-                      librsvg)))        ;for the pixbuf loader
     (properties (alist-delete 'hidden? (package-properties inkscape/stable)))))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 91a729b7ad..8b3b172ae9 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -903,15 +903,23 @@ supports sufficient parts of Java 7 to build Icedtea 2.x.")
                      "openjdk.src/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c")
                  (("#include <sys/sysctl.h>")
                   "#include <linux/sysctl.h>"))
+
+               ;; XXX 'ldd' in glibc 2.35 segfaults upon reading
+               ;;   openjdk.build-boot/lib/amd64/libnio.so (!).
+               ;; It is only used as a verification step, so ignore it;
+               ;; try removing this substitution for newer versions of glibc.
+               (substitute* "openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
+                 (("\\$\\(LDD\\) \\$1 &&")
+                  ""))
+
                ;; It looks like the "h = 31 * h + c" line of the jsum()
                ;; function gets miscompiled. After a few iterations of the loop
                ;; the result of "31 * h" is always 0x8000000000000000.
-               ;; Bad optimization maybe...
-               ;; Transform "31 * h + c" into a convoluted "32 * h + c - h"
-               ;; as a workaround.
-               (substitute* "openjdk.src/hotspot/src/share/vm/memory/dump.cpp"
-                 (("h = 31 \\* h \\+ c;")
-                  "jlong h0 = h;\nfor(int i = 0; i < 5; i++) h += h;\nh += c - h0;"))))
+               ;; Disable optimizations of dump.cpp as a workaround.
+               (substitute* "openjdk.src/hotspot/make/linux/makefiles/gcc.make"
+                 (("OPT_CFLAGS/NOOPT.*" all)
+                  (string-append all "\n"
+                                 "OPT_CFLAGS/dump.o += -O0")))))
            (add-after 'unpack 'fix-x11-extension-include-path
              (lambda* (#:key inputs #:allow-other-keys)
                (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
@@ -1287,7 +1295,8 @@ supports sufficient parts of Java 7 to build Icedtea 2.x.")
               (base32
                "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
              (patches (search-patches
-                       "icedtea-7-hotspot-aarch64-use-c++98.patch"))))
+                       "icedtea-7-hotspot-aarch64-use-c++98.patch"
+                       "icedtea-7-hotspot-pointer-comparison.patch"))))
          ("ant" ,ant-bootstrap)
          ("attr" ,attr)
          ("classpath" ,classpath-devel)
@@ -1527,6 +1536,9 @@ new Date();"))
               (sha256
                (base32
                 "01ihmyf7k5z17wbr7xig7y40l9f01d5zjgkcmawn1102hw5kchpq"))
+              (patches (search-patches
+                        "openjdk-9-hotspot-pointer-comparison.patch"
+                        "openjdk-9-hotspot-stack-size.patch"))
               (modules '((guix build utils)))
               (snippet
                `(begin
@@ -1717,12 +1729,12 @@ new Date();"))
                (base32
                 "0zywq2203b4hx4jms9vbwvjcj1d3k2v3qpx4s33729fkpmid97r4"))
               (patches (search-patches
-                        "openjdk-10-idlj-reproducibility.patch"))
+                        "openjdk-10-idlj-reproducibility.patch"
+                        "openjdk-10-hotspot-pointer-comparison.patch"
+                        "openjdk-10-hotspot-stack-size.patch"))
               (modules '((guix build utils)))
               (snippet
-               `(begin
-                  (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
-                  #t))))
+               '(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))))
     (arguments
      (substitute-keyword-arguments (package-arguments openjdk9)
        ((#:phases phases)
@@ -2051,6 +2063,7 @@ new Date();"))
               (sha256
                (base32
                 "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
+              (patches (search-patches "openjdk-10-hotspot-stack-size.patch"))
               (modules '((guix build utils)))
               (snippet
                `(begin
@@ -2103,6 +2116,7 @@ new Date();"))
                     (url "https://github.com/openjdk/jdk13u")
                     (commit (string-append "jdk-" version "-ga"))))
               (file-name (git-file-name name version))
+              (patches (search-patches "openjdk-10-hotspot-stack-size.patch"))
               (sha256
                (base32
                 "0wrrr0d7lz1v8qqm752mn4gz5l2vpl2kmx4ac3ysvk4mljc924hp"))
@@ -2147,6 +2161,7 @@ new Date();"))
                     (url "https://github.com/openjdk/jdk14u")
                     (commit (string-append "jdk-" version "-ga"))))
               (file-name (git-file-name name version))
+              (patches (search-patches "openjdk-10-hotspot-stack-size.patch"))
               (sha256
                (base32
                 "07k9bsbxwyf2z2n50z96nvhsdai916mxdxcr5lm44jz7f6xrwfq6"))
@@ -2199,7 +2214,8 @@ new Date();"))
                (base32
                 "168cr08nywp0q3vyj8njkhsmmnyd8rz9r58hk4xhzdzc6bdfkl1i"))
               (patches
-                (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
+               (search-patches "openjdk-15-xcursor-no-dynamic.patch"
+                               "openjdk-10-hotspot-stack-size.patch"))))
     (inputs
      (cons `("libxcursor" ,libxcursor) ; for our patch to work
            (package-inputs openjdk14)))
@@ -2226,8 +2242,8 @@ new Date();"))
               (sha256
                (base32
                 "1ggddsbsar4dj2fycfqqqagqil7prhb30afvq6933rz7pa9apm2f"))
-              (patches
-                (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
+              (patches (search-patches "openjdk-15-xcursor-no-dynamic.patch"
+                                       "openjdk-10-hotspot-stack-size.patch"))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("openjdk15:jdk" ,openjdk15 "jdk")
diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index 2e25780257..c8e355ccb3 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2021 Ryan Sundberg <ryan@arctype.co>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,16 +26,17 @@
   #:use-module (ice-9 match)
   #:use-module ((guix licenses) #:select (bsd-2))
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu))
 
-(define-public jemalloc-4.5.0
+(define-public jemalloc
   (package
     (name "jemalloc")
-    (version "4.5.0")
+    (version "5.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -42,26 +44,29 @@
                     version "/jemalloc-" version ".tar.bz2"))
               (sha256
                (base32
-                "10373xhpc10pgmai9fkc1z0rs029qlcb3c0qfnvkbwdlcibdh2cl"))))
+                "1apyxjd1ixy4g8xkr61p0ny8jiz8vyv1j0k4nxqkxpqrf4g2vf1d"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'delete-thp-test
-           ;; This test does not check if transparent huge pages are supported
-           ;; on the system before running the test.
-           (lambda _
-             (substitute* "Makefile.in"
-               (("\\$\\(srcroot\\)test/unit/pages.c \\\\") "\\"))
-             #t)))
-       #:configure-flags
-       '(,@(match (%current-system)
-             ((or "i686-linux" "x86_64-linux")
-              '())
-             ("powerpc-linux"
-              (list "--disable-thp" "CPPFLAGS=-maltivec"))
-             (_
-              (list "--disable-thp"))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'delete-thp-test
+            ;; This test does not check if transparent huge pages are supported
+            ;; on the system before running the test.
+            (lambda _
+              (substitute* "Makefile.in"
+                (("\\$\\(srcroot\\)test/unit/pages.c \\\\") "\\")))))
+      #:configure-flags
+      ;; Disable the thread local storage model in jemalloc 5 to prevent
+      ;; shared libraries linked to libjemalloc from crashing on dlopen()
+      ;; https://github.com/jemalloc/jemalloc/issues/937
+      #~'("--disable-initial-exec-tls"
+          #$@(match (%current-system)
+               ("powerpc-linux"
+                (list "CPPFLAGS=-maltivec"))
+               (_
+                '())))))
+    (inputs (list perl))
     ;; Install the scripts to a separate output to avoid referencing Perl and
     ;; Bash in the default output, saving ~75 MiB on the closure.
     (outputs '("out" "bin"))
@@ -71,24 +76,3 @@
      "This library providing a malloc(3) implementation that emphasizes
 fragmentation avoidance and scalable concurrency support.")
     (license bsd-2)))
-
-(define-public jemalloc
-  (package
-    (inherit jemalloc-4.5.0)
-    (version "5.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/jemalloc/jemalloc/releases/download/"
-                    version "/jemalloc-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "1xl7z0vwbn5iycg7amka9jd6hxd8nmfk7nahi4p9w2bnw9f0wcrl"))))
-    (arguments
-      (substitute-keyword-arguments (package-arguments jemalloc-4.5.0)
-        ;; Disable the thread local storage model in jemalloc 5 to prevent
-        ;; shared libraries linked to libjemalloc from crashing on dlopen()
-        ;; https://github.com/jemalloc/jemalloc/issues/937
-        ((#:configure-flags base-configure-flags '())
-         `(cons "--disable-initial-exec-tls" ,base-configure-flags))))
-    (inputs (list perl))))
diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm
index 9454a5983e..9f258009c6 100644
--- a/gnu/packages/kerberos.scm
+++ b/gnu/packages/kerberos.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,7 +58,7 @@
 (define-public mit-krb5
   (package
     (name "mit-krb5")
-    (version "1.19.2")
+    (version "1.20")
     (source (origin
               (method url-fetch)
               (uri (list
@@ -70,7 +71,7 @@
               (patches (search-patches "mit-krb5-hurd.patch"))
               (sha256
                (base32
-                "0snz1jm2w4dkk65zcz953jmmv9mqa30fanch2bk8r3rs9vp3yi8h"))))
+                "0bz16sh0vgzlpy2kx5acmpyy181hl83a1alz7wbk06457kfjn0ky"))))
     (build-system gnu-build-system)
     (native-inputs
      (list bison perl tcl))                   ;required for some tests
@@ -102,11 +103,13 @@
              (chdir "src")))
          (add-before 'check 'pre-check
            (lambda* (#:key inputs native-inputs #:allow-other-keys)
-             (let ((perl (assoc-ref (or native-inputs inputs) "perl")))
+             (let ((perl (search-input-file (or native-inputs inputs)
+                                            "bin/perl")))
                (substitute* "plugins/kdb/db2/libdb2/test/run.test"
-                 (("/bin/cat") (string-append perl "/bin/perl"))
+                 (("/bin/cat") perl)
                  (("D/bin/sh") (string-append "D" (which "sh")))
-                 (("bindir=/bin/.") (string-append "bindir=" perl "/bin")))))))))
+                 (("bindir=/bin/.") (string-append "bindir="
+                                                   (dirname perl))))))))))
     (synopsis "MIT Kerberos 5")
     (description
      "Massachusetts Institute of Technology implementation of Kerberos.
diff --git a/gnu/packages/libbsd.scm b/gnu/packages/libbsd.scm
index 16a7e8fd89..79f1389081 100644
--- a/gnu/packages/libbsd.scm
+++ b/gnu/packages/libbsd.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,22 +21,52 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix licenses)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (gnu packages crypto))
 
 (define-public libbsd
   (package
     (name "libbsd")
-    (version "0.10.0")
+    (version "0.11.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libbsd.freedesktop.org/releases/"
                                   "libbsd-" version ".tar.xz"))
               (sha256
                (base32
-                "11x8q45jvjvf2dvgclds64mscyg10lva33qinf2hwgc84v3svf1l"))))
+                "1pxmk42brddk43bj8lp4a64f9iwhc5ii91y6w7k97xpaf8qqzcqr"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--disable-static")))
+     (list #:configure-flags #~'("--disable-static")
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'install 'embed-absolute-libmd-references
+                          (lambda* (#:key inputs #:allow-other-keys)
+                            (let ((libmd (search-input-file inputs
+                                                            "lib/libmd.so")))
+                              ;; Add absolute references to libmd so it
+                              ;; does not need to be propagated.
+                              (with-directory-excursion #$output
+                                (substitute* "lib/libbsd.so"
+                                  (("^GROUP")
+                                   (string-append "SEARCH_DIR("
+                                                  (dirname libmd)
+                                                  ")\nGROUP")))
+                                (substitute* (find-files "lib/pkgconfig"
+                                                         "\\.pc$")
+                                  (("-lmd")
+                                   (string-append "-L" (dirname libmd)
+                                                  " -lmd")))))))
+                        (add-before 'check 'disable-pwcache-test
+                          (lambda _
+                            ;; This test expects the presence of a root
+                            ;; user and group, which do not exist in the
+                            ;; build container.
+                            (substitute* "test/Makefile"
+                              (("pwcache\\$\\(EXEEXT\\) ")
+                               "")))))))
+    (inputs
+     (list libmd))
     (synopsis "Utility functions from BSD systems")
     (description "This library provides useful functions commonly found on BSD
 systems, and lacking on others like GNU systems, thus making it easier to port
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index d807315906..57a98c4811 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -59,7 +59,7 @@
      '(#:configure-flags '("--disable-libevent-regress"
                            "--disable-openssl")))
     (inputs
-     `(("python" ,python-wrapper)))     ;for 'event_rpcgen.py'
+     (list python-wrapper))             ;for 'event_rpcgen.py'
     (native-inputs
      (list which))
     (home-page "https://libevent.org/")
@@ -105,14 +105,14 @@ limited support for fork events.")
 (define-public libuv
   (package
     (name "libuv")
-    (version "1.41.1")
+    (version "1.44.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dist.libuv.org/dist/v" version
                                   "/libuv-v" version ".tar.gz"))
               (sha256
                (base32
-                "0zb818sjwnxn5yv3qvkxaprjf037yqmjipk5i3a8rg1q4izhrnv5"))))
+                "1d1wy1061cf2mfygr2j6jbm0da2mhsf0l9yq4rjkqrsmijbdrz6c"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 6d16e6a03b..ecdeaf45cd 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -28,8 +28,10 @@
   #:use-module (gnu packages)
   #:use-module (guix licenses)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix utils)
   #:use-module (gnu packages check)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -43,17 +45,16 @@
 (define-public libffi
   (package
     (name "libffi")
-    (version "3.3")
+    (version "3.4.2")
     (source (origin
               (method url-fetch)
               (uri
-               (string-append "ftp://sourceware.org/pub/libffi/"
+               (string-append "https://github.com/libffi/libffi/releases"
+                              "/download/v" version "/"
                               name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj"))
-              (patches (search-patches "libffi-3.3-powerpc-fixes.patch"
-                                       "libffi-float128-powerpc64le.patch"))))
+                "081nx7wpzds168jbr59m34n6s3lyiq6r8zggvqxvlslsc4hvf3sl"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Prevent the build system from passing -march and -mtune to the
@@ -79,6 +80,17 @@ conversions for values passed between the two languages.")
     ;; See <https://github.com/atgreen/libffi/blob/master/LICENSE>.
     (license expat)))
 
+;; Provide a variant without static trampolines as some packages
+;; (particularly GHC < 9) cannot handle them.  See
+;; <https://github.com/libffi/libffi/pull/647> for a discussion.
+(define-public libffi-sans-static-trampolines
+  (hidden-package
+   (package/inherit libffi
+     (arguments
+      (substitute-keyword-arguments (package-arguments libffi)
+        ((#:configure-flags flags #~'())
+         #~(append #$flags '("--disable-exec-static-tramp"))))))))
+
 (define-public python-cffi
   (package
     (name "python-cffi")
@@ -111,7 +123,12 @@ conversions for values passed between the two languages.")
                                "linker_so='gcc -shared')")))
              (substitute* "testing/cffi0/test_ownlib.py"
                (("\"cc testownlib") "\"gcc testownlib"))
-             (invoke "py.test" "-v" "c/" "testing/")))
+             (invoke "pytest" "-v" "c/" "testing/"
+                     ;; Disable tests that fail (harmlessly) with glibc
+                     ;; 2.34 and later:
+                     ;; https://foss.heptapod.net/pypy/cffi/-/issues/528
+                     "-k" (string-append "not TestFFI.test_dlopen_handle "
+                                         "and not test_dlopen_handle"))))
          (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
diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm
index 7c8b77f6fb..b12b7937f0 100644
--- a/gnu/packages/libidn.scm
+++ b/gnu/packages/libidn.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
@@ -34,14 +34,14 @@
 (define-public libidn
   (package
    (name "libidn")
-   (version "1.37")
+   (version "1.41")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libidn/libidn-" version
                                 ".tar.gz"))
             (sha256
              (base32
-              "1hljls9rkilh04dwiwg388wk8djkac8idijrdysqq2nqbh6rg3iw"))))
+              "0ic9zlqqppwaqr3i0r8lb8f47rrazzc8d5pfgg8vs6mqciip0kc8"))))
    (build-system gnu-build-system)
    ;; FIXME: No Java and C# libraries are currently built.
    (arguments
@@ -60,14 +60,14 @@ Java libraries.")
 (define-public libidn2
   (package
     (name "libidn2")
-    (version "2.3.1")
+    (version "2.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/libidn/" name "-" version
                                   ".tar.gz"))
               (sha256
                (base32
-                "0b8gsksj2g9f4iywwdma3v4jcg7i9rqvdxfmclwvbf1n72a89xla"))))
+                "1c3fqgqwpnkf6z8nran6cd6cpzrc9r1awg1j9ga363f049srib7k"))))
     (inputs
      (list libunistring))
     (build-system gnu-build-system)
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 46eba12431..f58887c50b 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -238,6 +238,7 @@ spreadsheets and presentations.")
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/libwpd/libwpd/"
                           "libwpd-" version "/libwpd-" version ".tar.xz"))
+      (patches (search-patches "libwpd-gcc-compat.patch"))
       (sha256 (base32
                "02fx8bngslcj7i5g1gx2kiign4vp09wrmp5wpvix9igxcavb0r94"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/libsigsegv.scm b/gnu/packages/libsigsegv.scm
index 627447e876..ebbdd2ad90 100644
--- a/gnu/packages/libsigsegv.scm
+++ b/gnu/packages/libsigsegv.scm
@@ -26,14 +26,14 @@
 (define-public libsigsegv
   (package
    (name "libsigsegv")
-   (version "2.13")
+   (version "2.14")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "mirror://gnu/libsigsegv/libsigsegv-"
                   version ".tar.gz"))
             (sha256
-             (base32 "06c1qjiv69hjvbq06mcxdi5hzfadhy28sa83zxspqpxhfr0ywy5y"))))
+             (base32 "15d2r831xz94s7540nvb1gbfl062g7mrnj88m60wyr1kh10kkb6d"))))
    (build-system gnu-build-system)
    (home-page "https://www.gnu.org/software/libsigsegv/")
    (synopsis "Library for handling page faults")
diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm
index fda839be54..eccd053a35 100644
--- a/gnu/packages/libunistring.scm
+++ b/gnu/packages/libunistring.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2018, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
@@ -27,6 +27,7 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages base))
@@ -34,7 +35,7 @@
 (define-public libunistring
   (package
    (name "libunistring")
-   (version "0.9.10")
+   (version "1.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -42,7 +43,7 @@
                   version ".tar.xz"))
             (sha256
              (base32
-              "1mq57h06622m6qc5cv347fc3qk5mj840axw3c0vd7qmnwk1v53zb"))))
+              "0h97qx3c4970wvh25g51sjgz54xn37lrfy95dg97xmvmkys5basv"))))
    (propagated-inputs (libiconv-if-needed))
    (outputs '("out" "static"))
    (build-system gnu-build-system)
@@ -50,21 +51,20 @@
     ;; Work around parallel build issue whereby C files may be compiled before
     ;; config.h is built: see <http://hydra.gnu.org/build/59381/nixlog/2/raw> and
     ;; <http://lists.openembedded.org/pipermail/openembedded-core/2012-April/059850.html>.
-    '(#:parallel-build? #f
-      #:phases (modify-phases %standard-phases
-                 (add-after 'install 'move-static-library
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     (let ((out (assoc-ref outputs "out"))
-                           (static (assoc-ref outputs "static")))
-                       (with-directory-excursion (string-append out "/lib")
-                         (install-file "libunistring.a"
-                                       (string-append static "/lib"))
-                         (delete-file "libunistring.a")
-                         #t)))))))
+    (list
+      #:parallel-build? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'move-static-library
+            (lambda* (#:key outputs #:allow-other-keys)
+              (with-directory-excursion (string-append #$output "/lib")
+                (install-file "libunistring.a"
+                              (string-append #$output:static "/lib"))
+                (delete-file "libunistring.a")))))))
    (synopsis "C library for manipulating Unicode strings")
    (description
     "GNU libunistring is a library providing functions to manipulate
 Unicode strings and for manipulating C strings according to the Unicode
 standard.")
    (home-page "https://www.gnu.org/software/libunistring/")
-   (license (list lgpl3+ gpl2))))
+   (license (list lgpl3+ gpl2+))))
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 8a5967f7b4..baeebc3bc7 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -55,7 +55,7 @@
 (define-public libusb
   (package
     (name "libusb")
-    (version "1.0.24")
+    (version "1.0.25")
     (source
      (origin
       (method url-fetch)
@@ -63,7 +63,7 @@
                           "releases/download/v" version
                           "/libusb-" version ".tar.bz2"))
       (sha256
-       (base32 "0amilbi5qncdnrds3ji21vbiz1wvdm1fwp5qrxnk49xkyy2jdzby"))))
+       (base32 "0j88ym7afy4wj3x789zzxsr04asyjy0mw29gf31blzkrg8cyya4a"))))
     (build-system gnu-build-system)
 
     ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 867cee0763..3400740649 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -33,7 +33,7 @@
 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
-;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com>
 ;;; Copyright © 2019, 2020, 2021 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
@@ -641,11 +641,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-5.10.35
-  (make-linux-libre-headers "5.10.35" "gnu"
-                            "0q2rnchad55d49f3rajrkazz0fcjv1irwrdb1hwjnl01fzm2gjk3"))
+(define-public linux-libre-headers-5.15.49
+  (make-linux-libre-headers "5.15.49" "gnu"
+                            "13zqdcm4664vh7g57sxbfrlpsxm7zrma72mxdfdz7d9yndy2gfv8"))
 
-(define-public linux-libre-headers linux-libre-headers-5.10.35)
+(define-public linux-libre-headers linux-libre-headers-5.15.49)
 
 
 ;;;
@@ -1550,7 +1550,8 @@ which need to be installed separately.")
        (sha256
         (base32
          "1z4jayf69qyyxln1gl6ch4qxfd66ib1g42garnrv2d8i1drl0790"))
-       (patches (search-patches "linux-pam-no-setfsuid.patch"))))
+       (patches (search-patches "linux-pam-unix_chkpwd.patch"
+                                "linux-pam-no-setfsuid.patch"))))
 
     (build-system gnu-build-system)
     (native-inputs
@@ -1760,8 +1761,7 @@ providing the system administrator with some help in common tasks.")
 (define-public util-linux
   (package
     (name "util-linux")
-    (replacement util-linux/fixed)
-    (version "2.37.2")
+    (version "2.37.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/utils/"
@@ -1769,7 +1769,7 @@ providing the system administrator with some help in common tasks.")
                                   "util-linux-" version ".tar.xz"))
               (sha256
                (base32
-                "1ng9517c37mdp858425a4zyybma7dh7jrpd6z1z61yz7mb0n81va"))
+                "10svcnsqmrsd660bzcm7k6dm8sa7hkknhr3bag1nccwimlb6jkk3"))
               (patches (search-patches "util-linux-tests.patch"))
               (modules '((guix build utils)))
               (snippet
@@ -1786,102 +1786,101 @@ providing the system administrator with some help in common tasks.")
                "lib"            ;8.8 MiB shared libraries, headers and locales
                "static"))       ;2.9 MiB static .a libraries
     (arguments
-     `(#:configure-flags (list "--disable-use-tty-group"
-                               (string-append
-                                "--enable-fs-paths-default="
-                                "/run/setuid-programs"
-                                ":/run/current-system/profile/sbin")
-                               ;; Don't try to chown root:root mount and umount
-                               "--disable-makeinstall-chown"
-                               "--localstatedir=/var"
-                               (string-append "--localedir="
-                                              (assoc-ref %outputs "lib")
-                                              "/share/locale")
-                               ;; Install completions where our
-                               ;; bash-completion package expects them.
-                               (string-append "--with-bashcompletiondir="
-                                              (assoc-ref %outputs "out")
-                                              "/etc/bash_completion.d"))
-
-       ;; FIXME: For now we cannot reliably run tests on GNU/Hurd:
-       ;; <https://bugs.gnu.org/47791>.
-       #:tests? ,(and (not (%current-target-system))
-                      (not (string-suffix? "-gnu" (%current-system))))
+     (list #:configure-flags
+           #~(list "--disable-use-tty-group"
+                   (string-append
+                    "--enable-fs-paths-default="
+                    "/run/setuid-programs"
+                    ":/run/current-system/profile/sbin")
+                   ;; Don't try to chown root:root mount and umount
+                   "--disable-makeinstall-chown"
+                   "--localstatedir=/var"
+                   (string-append "--localedir=" #$output:lib
+                                  "/share/locale")
+                   ;; Install completions where our bash-completion package
+                   ;; expects them.
+                   (string-append "--with-bashcompletiondir=" #$output
+                                  "/etc/bash_completion.d"))
+
+           ;; FIXME: For now we cannot reliably run tests on GNU/Hurd:
+           ;; <https://bugs.gnu.org/47791>.
+           #:tests? (and (not (%current-target-system))
+                         (not (string-suffix? "-gnu" (%current-system))))
 
-       #:phases (modify-phases %standard-phases
-                  (add-before 'configure 'patch-build-scripts
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (substitute* "configure"
-                        ;; The build system assumes that we want to install
-                        ;; libraries below $exec_prefix when $libdir does not
-                        ;; match any of the "usual" locations.  Fix that.
-                        (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir")
-                         "usrlib_execdir=$libdir"))))
-                  (add-before 'build 'set-umount-file-name
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Tell 'eject' the right file name of 'umount'.
-                      (let ((out (assoc-ref outputs "out")))
-                        (substitute* "sys-utils/eject.c"
-                          (("\"/bin/umount\"")
-                           (string-append "\"" out "/bin/umount\""))))))
-                  (add-before 'check 'pre-check
-                    (lambda* (#:key native-inputs inputs #:allow-other-keys)
-                      (let ((services (search-input-file (or native-inputs inputs)
-                                                         "etc/services")))
-                        ;; Change the test to refer to the right file.
-                        (substitute* "tests/ts/misc/mcookie"
-                          (("/etc/services")
-                           services))
-
-                        ;; The C.UTF-8 locale does not exist in our libc.
-                        (substitute* "tests/ts/column/invalid-multibyte"
-                          (("C\\.UTF-8") "en_US.utf8")))))
-                  (add-before 'check 'disable-setarch-test
-                    (lambda _
-                      ;; The setarch tests are unreliable in QEMU's user-mode
-                      ;; emulation, which is our primary method of building
-                      ;; ARMv7 packages.  See
-                      ;; <https://github.com/karelzak/util-linux/issues/601>.
-                      (substitute* "tests/ts/misc/setarch"
-                        (("ts_init_subtest.*" all)
-                         (string-append
-                          all "\n"
-                          "ts_skip \"setarch tests are unreliable under QEMU\"")))))
-                  (add-before 'check 'disable-lsns-test
-                    (lambda _
-                      ;; The lsns tests can fail due to ioctl(_, NS_GET_USERNS)
-                      ;; returning ENOTTY, indicating this kernel does not
-                      ;; support user namespaces.  Curiously, this test can fail
-                      ;; on i686 even if the same test passes on x86_64 on the
-                      ;; same machine.  See <https://issues.guix.gnu.org/49933>.
-                      (delete-file "tests/ts/lsns/ioctl_ns")))
-                  (add-after 'install 'move-static-libraries
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((lib    (assoc-ref outputs "lib"))
-                            (static (assoc-ref outputs "static")))
-
-                        ;; Move static libraries to the "static" output.
-                        (mkdir-p (string-append static "/lib"))
-                        (with-directory-excursion lib
-                          (for-each (lambda (file)
-                                      (rename-file file
-                                                   (string-append static "/"
-                                                                  file)))
-                                    (find-files "lib" "\\.a$"))
-
-                          ;; Remove references to the static library from the '.la'
-                          ;; files so that Libtool does the right thing when both
-                          ;; the shared and static library is available.
-                          (substitute* (find-files "lib" "\\.la$")
-                            (("old_library=.*") "old_library=''\n"))))))
-                  (add-after 'install 'adjust-pkg-config-files
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((lib (assoc-ref outputs "lib")))
-                        ;; Drop the unused "prefix=" and "exec_prefix=" variables from
-                        ;; the pkg-config files to avoid a cyclic reference on "out".
-                        (substitute* (find-files (string-append lib "/lib/pkgconfig")
-                                                 "\\.pc$")
-                          (("^(exec_)?prefix=.*") ""))))))))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'configure 'patch-build-scripts
+                 (lambda _
+                   (substitute* "configure"
+                     ;; The build system assumes that we want to install
+                     ;; libraries below $exec_prefix when $libdir does not
+                     ;; match any of the "usual" locations.  Fix that.
+                     (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir")
+                      "usrlib_execdir=$libdir"))))
+               (add-before 'build 'set-umount-file-name
+                 (lambda _
+                   ;; Tell 'eject' the right file name of 'umount'.
+                   (substitute* "sys-utils/eject.c"
+                     (("\"/bin/umount\"")
+                      (string-append "\"" #$output "/bin/umount\"")))))
+               (add-before 'check 'pre-check
+                 (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                   (let ((services (search-input-file (or native-inputs inputs)
+                                                      "etc/services")))
+                     ;; Change the test to refer to the right file.
+                     (substitute* "tests/ts/misc/mcookie"
+                       (("/etc/services")
+                        services))
+
+                     ;; The C.UTF-8 locale does not exist in our libc.
+                     (substitute* "tests/ts/column/invalid-multibyte"
+                       (("C\\.UTF-8") "en_US.utf8")))))
+               (add-before 'check 'disable-setarch-test
+                 (lambda _
+                   ;; The setarch tests are unreliable in QEMU's user-mode
+                   ;; emulation, which is our primary method of building
+                   ;; ARMv7 packages.  See
+                   ;; <https://github.com/karelzak/util-linux/issues/601>.
+                   (substitute* "tests/ts/misc/setarch"
+                     (("ts_init_subtest.*" all)
+                      (string-append
+                       all "\n"
+                       "ts_skip \"setarch tests are unreliable under QEMU\"")))))
+               (add-before 'check 'disable-lsns-test
+                 (lambda _
+                   ;; The lsns tests can fail due to ioctl(_, NS_GET_USERNS)
+                   ;; returning ENOTTY, indicating this kernel does not
+                   ;; support user namespaces.  Curiously, this test can fail
+                   ;; on i686 even if the same test passes on x86_64 on the
+                   ;; same machine.  See <https://issues.guix.gnu.org/49933>.
+                   (delete-file "tests/ts/lsns/ioctl_ns")))
+               (add-after 'install 'move-static-libraries
+                 (lambda _
+                   (let ((lib    #$output:lib)
+                         (static #$output:static))
+
+                     ;; Move static libraries to the "static" output.
+                     (mkdir-p (string-append static "/lib"))
+                     (with-directory-excursion lib
+                       (for-each (lambda (file)
+                                   (rename-file file
+                                                (string-append static "/"
+                                                               file)))
+                                 (find-files "lib" "\\.a$"))
+
+                       ;; Remove references to the static library from the '.la'
+                       ;; files so that Libtool does the right thing when both
+                       ;; the shared and static library is available.
+                       (substitute* (find-files "lib" "\\.la$")
+                         (("old_library=.*") "old_library=''\n"))))))
+               (add-after 'install 'adjust-pkg-config-files
+                 (lambda _
+                   ;; Drop the unused "prefix=" and "exec_prefix=" variables from
+                   ;; the pkg-config files to avoid a cyclic reference on "out".
+                   (substitute* (find-files (string-append #$output:lib
+                                                           "/lib/pkgconfig")
+                                            "\\.pc$")
+                     (("^(exec_)?prefix=.*") "")))))))
     (inputs
      (list file                         ;for libmagic
            ncurses
@@ -1913,21 +1912,6 @@ block devices, UUIDs, TTYs, and many other tools.")
     (modify-inputs (package-inputs util-linux)
       (prepend eudev)))))
 
-;; This is mostly equivalent to the upstream release version v2.37.3, except
-;; that the upstream tarball was generated improperly, which breaks the build.
-;; There will not be a v2.37.3-fixed release or anything like that to fix it:
-;; https://github.com/util-linux/util-linux/issues/1577
-(define-public util-linux/fixed
-  (hidden-package
-    (package
-      (inherit util-linux)
-      (source (origin
-                (inherit (package-source util-linux))
-                (patches (append (search-patches "util-linux-CVE-2021-3995.patch"
-                                                 "util-linux-CVE-2021-3996.patch")
-                                 (origin-patches (package-source util-linux)))))))))
-
-
 (define-public ddate
   (package
     (name "ddate")
@@ -2008,38 +1992,35 @@ parameters.")
 (define-public procps
   (package
     (name "procps")
-    (version "3.3.16")
+    (version "4.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/procps-ng/Production/"
                                   "procps-ng-" version ".tar.xz"))
               (sha256
                (base32
-                "1br0g93ysqhlv13i1k4lfbimsgxnpy5rgs4lxfc9rkzdbpbaqplj"))))
+                "04v5q5cshzyhbwaw4n9l0k8faaz67n11z31vpfaiqynv9rwr4k8g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:modules ((guix build utils)
-                  (guix build gnu-build-system)
-                  (srfi srfi-1)
-                  (srfi srfi-26))
-       ,@(if (%current-target-system)
-             '(#:configure-flags
-               (list
-                "ac_cv_func_malloc_0_nonnull=yes"
-                "ac_cv_func_realloc_0_nonnull=yes"))
-             '())
-       #:phases
-       (modify-phases %standard-phases
-         (add-after
-          'install 'post-install
-          ;; Remove commands and man pages redudant with
-          ;; Coreutils.
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (dup (append-map (cut find-files out <>)
-                                    '("^kill" "^uptime"))))
-              (for-each delete-file dup)
-              #t))))))
+     (list #:modules '((guix build utils)
+                       (guix build gnu-build-system)
+                       (srfi srfi-1)
+                       (srfi srfi-26))
+           #:configure-flags
+           (if (%current-target-system)
+               #~'("ac_cv_func_malloc_0_nonnull=yes"
+                   "ac_cv_func_realloc_0_nonnull=yes")
+               #~'())
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'post-install
+                 ;; Remove commands and man pages redudant with
+                 ;; Coreutils.
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out #$output)
+                          (dup (append-map (cut find-files out <>)
+                                           '("^kill" "^uptime"))))
+                     (for-each delete-file dup)))))))
     (inputs (list ncurses))
     (home-page "https://gitlab.com/procps-ng/procps/")
     (synopsis "Utilities that give information about processes")
@@ -2591,16 +2572,14 @@ external rate conversion.")
 (define-public iptables
   (package
     (name "iptables")
-    (version "1.8.7")
+    (version "1.8.8")
     (source
      (origin
        (method url-fetch)
        (uri (list (string-append "mirror://netfilter.org/iptables/iptables-"
-                                 version ".tar.bz2")
-                  (string-append "https://www.netfilter.org/projects/iptables/"
-                                 "files/iptables-" version ".tar.bz2")))
+                                 version ".tar.bz2")))
        (sha256
-        (base32 "1w6qx3sxzkv80shk21f63rq41c84irpx68k62m2cv629n1mwj2f1"))))
+        (base32 "17w5a4znq8rdj5djcldmy6mbnxq1v88ibssk2mipc1kivj4miivi"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config flex bison))
@@ -2625,6 +2604,8 @@ This package also includes @command{ip6tables}, which is used to configure the
 IPv6 packet filter.
 
 Both commands are targeted at system administrators.")
+    (properties
+     '((release-monitoring-url . "https://www.netfilter.org/pub/iptables/")))
     (license license:gpl2+)))
 
 (define-public jitterentropy-rngd
@@ -2722,7 +2703,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
 (define-public iproute
   (package
     (name "iproute2")
-    (version "5.15.0")
+    (version "5.19.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2730,44 +2711,40 @@ that the Ethernet protocol is much simpler than the IP protocol.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "1zwin8sjnnwf2a9rjwzb3q8lkhcpy06s29sh05f5gxd7z6jy9qrq"))))
+                "14bp7mlyb5dizrzhd5hh5m9aq6xn1jlwaf9b5sjgglkzd96s7dr6"))))
     (build-system gnu-build-system)
     (arguments
-     `( ;; There is a test suite, but it wants network namespaces and sudo.
-       #:tests? #f
-       #:make-flags (let ((out (assoc-ref %outputs "out")))
-                      (list "DESTDIR="
-                            (string-append "CC=" ,(cc-for-target))
-                            "HOSTCC=gcc"
-                            (string-append "BASH_COMPDIR=" out
-                                           "/etc/bash_completion.d")
-                            (string-append "LIBDIR=" out "/lib")
-                            (string-append "HDRDIR=" out "/include")
-                            (string-append "SBINDIR=" out "/sbin")
-                            (string-append "CONFDIR=" out "/etc")
-                            (string-append "DOCDIR=" out "/share/doc/"
-                                           ,name "-" ,version)
-                            (string-append "MANDIR=" out "/share/man")))
-       #:phases (modify-phases %standard-phases
-                  (add-before 'install 'pre-install
-                    (lambda _
-                      ;; Don't attempt to create /var/lib/arpd.
-                      (substitute* "Makefile"
-                        (("^.*ARPDDIR.*$") ""))
-                      #t))
-                  (add-after 'unpack 'patch-configure
-                    (lambda _
-                      (let ((target ,(%current-target-system)))
-                        (substitute* "configure"
-                          (("pkg-config")
-                            (if target
-                              (string-append target "-pkg-config")
-                              "pkg-config")))
-                        #t))))))
+     (list
+      ;; There is a test suite, but it wants network namespaces and sudo.
+      #:tests? #f
+      #:make-flags
+      #~(let ((out #$output))
+          (list (string-append "CC=" #$(cc-for-target))
+                "HOSTCC=gcc"
+                (string-append "BASH_COMPDIR=" out
+                               "/etc/bash_completion.d")
+                (string-append "LIBDIR=" out "/lib")
+                (string-append "HDRDIR=" out "/include")
+                (string-append "SBINDIR=" out "/sbin")
+                (string-append "CONFDIR=" out "/etc")
+                (string-append "MANDIR=" out "/share/man")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda* (#:key (configure-flags #~'()) #:allow-other-keys)
+              ;; The configure script does not understand some of the
+              ;; default options of gnu-build-system.
+              (setenv "PKG_CONFIG" #$(pkg-config-for-target))
+              (apply invoke "./configure"
+                     "--prefix" #$output
+                     configure-flags)))
+          (add-before 'install 'pre-install
+            (lambda _
+              ;; Don't attempt to create /var/lib/arpd.
+              (substitute* "Makefile"
+                (("^.*ARPDDIR.*$") "")))))))
     (inputs
-     `(("db4" ,bdb)
-       ("iptables" ,iptables)
-       ("libmnl" ,libmnl)))
+     (list bdb iptables libmnl))
     (native-inputs
      (list bison flex pkg-config))
     ;; For tests.
@@ -2868,7 +2845,7 @@ configuration (iptunnel, ipmaddr).")
 (define-public libcap
   (package
     (name "libcap")
-    (version "2.62")
+    (version "2.64")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2876,7 +2853,7 @@ configuration (iptunnel, ipmaddr).")
                     "libcap2/libcap-" version ".tar.xz"))
               (sha256
                (base32
-                "18l3pngsbaahdjzz01rmzrjgcqny4zld685fkq96mq5yr6m5n30r"))))
+                "04qy0z6yhlljb29xxcb2srbdnymcrhsi28wrc705z3861cgmwin8"))))
     (build-system gnu-build-system)
     (arguments
      (list #:phases
@@ -5227,7 +5204,7 @@ Linux Device Mapper multipathing driver:
 (define-public libaio
   (package
     (name "libaio")
-    (version "0.3.112")
+    (version "0.3.113")
     (source (origin
               (method url-fetch)
               (uri (list
@@ -5235,37 +5212,16 @@ Linux Device Mapper multipathing driver:
                                    name "-" version ".tar.gz")))
               (sha256
                (base32
-                "14mlqdapjqq1dhpkdgy5z83mvsaz36fcxca7a4z6hinmr7r6415b"))))
+                "02r0g2vfv6kfljplm3ga93w4xw13q2wixbn9hwi7ahqdzp2x2i1c"))))
     (build-system gnu-build-system)
     (arguments
      (list #:make-flags
-           #~(let ((target #$(%current-target-system)))
-               ;; XXX TODO: Replace with simply #$OUTPUT on core-updates.
-               (list (string-append "prefix=" #$(if (%current-target-system)
-                                                    #~#$output
-                                                    #~%output))
-                     (string-append
-                      "CC=" (if target
-                                (string-append (assoc-ref %build-inputs
-                                                          "cross-gcc")
-                                               "/bin/" target "-gcc")
-                                "gcc"))))
+           #~(list (string-append "prefix=" #$output)
+                   (string-append "CC=" #$(cc-for-target)))
            #:test-target "partcheck"    ; need root for a full 'check'
            #:phases
            #~(modify-phases %standard-phases
-               (delete 'configure)    ; no configure script
-               ;; TODO: Make this phase unconditional on core-updates.
-               #$@(if (target-riscv64?)
-                    '((add-before 'check 'patch-for-riscv-support
-                        (lambda _
-                          ;; Taken from the upstream repo:
-                          ;; https://pagure.io/libaio/c/f322f467c3cd2ac4d8d08a19bd281eabb65433b1?branch=master
-                          (substitute* "harness/cases/16.t"
-                            (("(elif defined\\(__aarch64__\\))" all)
-                             (string-append all " || defined(__riscv)"))
-                            (("(endif /* __aarch64__)" all)
-                             (string-append all " || __riscv "))))))
-                    '()))))
+               (delete 'configure))))   ; no configure script
     (home-page "https://pagure.io/libaio")
     (synopsis "Linux-native asynchronous I/O access library")
     (description
@@ -5344,7 +5300,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
 (define-public bluez
   (package
     (name "bluez")
-    (version "5.64")
+    (version "5.65")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5352,7 +5308,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "0d6yl7l5zrlx5w3y503k72m9xsydx6gi1c65icchq1xknrjpwhxf"))))
+                "1m4n7nczjlbhb20bp2hwb2b85036xma5pqljmpk7ddalhgaa8r95"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -5377,24 +5333,26 @@ Bluetooth audio output devices like headphones or loudspeakers.")
                 (("tester_init\\(&argc, &argv\\);") "return 77;"))))
           (add-after 'install 'post-install
             (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let* ((out        #$output)
-                     (servicedir (string-append out "/share/dbus-1/services"))
+              (let* ((servicedir (string-append #$output
+                                                "/share/dbus-1/services"))
                      (service    "obexd/src/org.bluez.obex.service")
                      (rule       (string-append
-                                  out "/lib/udev/rules.d/97-hid2hci.rules")))
+                                  #$output "/lib/udev/rules.d/97-hid2hci.rules")))
                 ;; Install the obex dbus service file.
                 (substitute* service
                   (("/bin/false")
-                   (string-append out "/libexec/bluetooth/obexd")))
+                   (string-append #$output "/libexec/bluetooth/obexd")))
                 (install-file service servicedir)
                 ;; Fix paths in the udev rule.
                 (substitute* rule
                   (("hid2hci --method")
-                   (string-append out "/lib/udev/hid2hci --method"))
+                   (string-append #$output "/lib/udev/hid2hci --method"))
                   (("/sbin/udevadm")
                    (search-input-file inputs "/bin/udevadm")))))))))
     (native-inputs
-     (list pkg-config python-docutils gettext-minimal))
+     (list gettext-minimal
+           pkg-config
+           python-docutils))
     (inputs
      (list glib dbus eudev libical readline))
     (home-page "http://www.bluez.org/")
@@ -7230,7 +7188,7 @@ machines (PowerMac G4 is known to work).")
 (define-public libmnl
   (package
     (name "libmnl")
-    (version "1.0.4")
+    (version "1.0.5")
     (source
       (origin
         (method url-fetch)
@@ -7238,7 +7196,7 @@ machines (PowerMac G4 is known to work).")
                             "libmnl-" version ".tar.bz2"))
         (sha256
          (base32
-          "108zampspaalv44zn0ar9h386dlfixpd149bnxa5hsi8kxlqj7qp"))))
+          "09851ns07399rbz0y8slrlmnw3fn1nakr8d37pxjn5gkks8rnjr7"))))
     (build-system gnu-build-system)
     (home-page "https://www.netfilter.org/projects/libmnl/")
     (synopsis "Netlink utility library")
@@ -7247,6 +7205,8 @@ Netlink developers.  There are a lot of common tasks in parsing, validating,
 constructing of both the Netlink header and TLVs that are repetitive and easy to
 get wrong.  This library aims to provide simple helpers that allows you to
 re-use code and to avoid re-inventing the wheel.")
+    (properties
+     '((release-monitoring-url . "https://www.netfilter.org/pub/libmnl/")))
     (license license:lgpl2.1+)))
 
 (define-public libnftnl
@@ -7277,14 +7237,14 @@ used by nftables.")
 ;; variant to avoid accidental rebuilds of rust.
 (define-public libnftnl/fixed
   (package (inherit libnftnl)
-    (version "1.2.0")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://netfilter.org/libnftnl/"
                            "libnftnl-" version ".tar.bz2"))
        (sha256
-        (base32 "1xblq1cbcxhr6qmjpy98i1qdza148idgz99vbhjc7s4vzvfizc4h"))))
+        (base32 "0m82bmh8i24hwxmz7rxwxjll4904ghd2b1x1p5h8algrg6dyl5p9"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 49eb25db1f..b46cb06443 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -594,7 +594,7 @@ output), and Binutils.")
          "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
          "-DBUILD_SHARED_LIBS:BOOL=TRUE"
          "-DLLVM_ENABLE_FFI:BOOL=TRUE"
-         "-DLLVM_REQUIRES_RTTI=1"       ;for some third-party utilities
+         "-DLLVM_ENABLE_RTTI:BOOL=TRUE" ;for some third-party utilities
          "-DLLVM_INSTALL_UTILS=ON")     ;needed for rustc
       ;; Don't use '-g' during the build, to save space.
       #:build-type "Release"
@@ -634,11 +634,7 @@ of programming tools as well as libraries with equivalent functionality.")
           #~(modify-phases #$phases
               (add-after 'unpack 'change-directory
                 (lambda _
-                  (chdir "compiler-rt")))))))
-      (native-inputs
-       `(;; FIXME: libfuzzer fails to build with GCC 10.
-         ("gcc" ,gcc-11)
-         ,@(package-native-inputs template))))))
+                  (chdir "compiler-rt"))))))))))
 
 (define-public clang-14
   (let ((template
@@ -804,7 +800,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
             "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
             "-DBUILD_SHARED_LIBS:BOOL=TRUE"
             "-DLLVM_ENABLE_FFI:BOOL=TRUE"
-            "-DLLVM_REQUIRES_RTTI=1" ; For some third-party utilities
+            "-DLLVM_ENABLE_RTTI:BOOL=TRUE" ; For some third-party utilities
             "-DLLVM_INSTALL_UTILS=ON")) ; Needed for rustc.
        ;; Don't use '-g' during the build, to save space.
        #:build-type "Release"
@@ -883,23 +879,24 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
 (define-public llvm-11
   (package
     (inherit llvm-12)
-    (version "11.0.0")
+    (version "11.1.0")
     (source
      (origin
       (method url-fetch)
       (uri (llvm-uri "llvm" version))
+      (patches (search-patches "llvm-8-missing-include.patch"))
       (sha256
        (base32
-        "0s94lwil98w7zb7cjrbnxli0z7gklb312pkw74xs1d6zk346hgwi"))))))
+        "199yq3a214avcbi4kk2q0ajriifkvsr0l2dkx3a666m033ihi1ff"))))))
 
 (define-public clang-runtime-11
   (clang-runtime-from-llvm
    llvm-11
-   "0d5j5l8phwqjjscmk8rmqn0i2i0abl537gdbkagl8fjpzy1gyjip"))
+   "0x1j8ngf1zj63wlnns9vlibafq48qcm72p4jpaxkmkb4qw0grwfy"))
 
 (define-public clang-11
   (clang-from-llvm llvm-11 clang-runtime-11
-                   "02ajkij85966vd150iy246mv16dsaph1kfi0y8wnncp8w6nar5hg"
+                   "12sm91qx2m79cvj75a9aazf2x8xybjbd593dv6v7rxficpq8i0ha"
                    #:patches '("clang-11.0-libc-search-path.patch")
                    #:tools-extra
                    (origin
@@ -908,7 +905,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                                     (package-version llvm-11)))
                      (sha256
                       (base32
-                       "02bcwwn54661madhq4nxc069s7p7pj5gpqi8ww50w3anbpviilzy")))))
+                       "18n1w1hkv931xzq02b34wglbv6zd6sd0r5kb8piwvag7klj7qw3n")))))
 
 (define-public libomp-11
   (package
@@ -919,7 +916,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
               (uri (llvm-uri "openmp" version))
               (sha256
                (base32
-                "0k389d0g9zlfyzh1kpb3i5jdawzpn0hrdxzbjinpvdv7rbw4sw1d"))
+                "0bh5cswgpc79awlq8j5i7hp355adaac7s6zaz0zwp6mkflxli1yi"))
               (file-name (string-append "libomp-" version ".tar.xz"))))
     (native-inputs
      (modify-inputs (package-native-inputs libomp-12)
@@ -937,6 +934,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
      (origin
       (method url-fetch)
       (uri (llvm-uri "llvm" version))
+      (patches (search-patches "llvm-8-missing-include.patch"))
       (sha256
        (base32
         "1wydhbp9kyjp5y0rc627imxgkgqiv3dfirbqil9dgpnbaw5y7n65"))))
@@ -997,6 +995,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
         (base32
          "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))
        (patches (search-patches
+                 "llvm-8-missing-include.patch"
                  "llvm-9-fix-bitcast-miscompilation.patch"
                  "llvm-9-fix-scev-miscompilation.patch"
                  "llvm-9-fix-lpad-miscompilation.patch"))))
@@ -1056,7 +1055,8 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
               (sha256
                (base32
                 "1rvm5gqp5v8hfn17kqws3zhk94w4kxndal12bqa0y57p09nply24"))
-              (patches (search-patches "llvm-8-fix-build-with-gcc-10.patch"))))
+              (patches (search-patches "llvm-8-fix-build-with-gcc-10.patch"
+                                       "llvm-8-missing-include.patch"))))
     (license license:ncsa)))
 
 (define-public clang-runtime-8
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index 0657db6eb8..0291f50302 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -562,7 +562,7 @@ in LXDE.")
              (delete-file "configure"))))))
     (inputs
      (list gtk+
-           polkit-duktape))
+           polkit))
     (native-inputs
      (list pkg-config
            intltool
diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm
index 090f5578e3..fbc075a2cb 100644
--- a/gnu/packages/m4.scm
+++ b/gnu/packages/m4.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 © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,34 +28,40 @@
 (define-public m4
   (package
    (name "m4")
-   (version "1.4.18")
+   (version "1.4.19")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/m4/m4-"
                                 version ".tar.xz"))
-            (patches (search-patches "m4-gnulib-libio.patch"))
             (sha256
              (base32
-              "01sfjd5a4waqw83bibvmn522g69qfqvwig9i2qlgy154l1nfihgj"))))
+              "15mghcksh11saylpm86h1zkz4in0rbi0pk8i6nqxkdikdmfdxbk3"))))
    (build-system gnu-build-system)
    (arguments
     `(;; Explicitly disable tests when cross-compiling, otherwise 'make check'
       ;; proceeds and fails, unsurprisingly.
       #:tests? ,(not (%current-target-system))
-
       #:phases
       (modify-phases %standard-phases
-        (add-before 'check 'pre-check
-          (lambda* (#:key inputs #:allow-other-keys)
-            ;; Fix references to /bin/sh.
-            (let ((bash (assoc-ref inputs "bash")))
-              (for-each patch-shebang
-                        (find-files "tests" "\\.sh$"))
-              (substitute* (find-files "tests"
-                                       "posix_spawn")
-                (("/bin/sh")
-                 (format #f "~a/bin/sh" bash)))
-              #t))))))
+        (add-after 'unpack 'disable-test
+          (lambda _
+            ;; Test 5 raises SIGINT from a child and immediately returns
+            ;; code 71, and tests whether the child was killed by a signal.
+            ;; Since there is no signal handler for SIGINT in the build
+            ;; container, the parent sees the return code, and fails.
+            ;; XXX: For some reason adding signal handlers in Guile before
+            ;; running tests has no effect.
+            (substitute* "tests/test-execute.sh"
+              (("4 5 6")
+               "4 6"))))
+        (add-after 'unpack 'configure-shell
+          (lambda* (#:key native-inputs inputs #:allow-other-keys)
+            (let ((/bin/sh (search-input-file (or native-inputs inputs)
+                                              "/bin/sh")))
+              ;; Adjust hard-coded /bin/sh for tests.
+              (substitute* "lib/config.hin"
+                (("\"/bin/sh\"")
+                 (format #f "\"~a\"" /bin/sh)))))))))
    (synopsis "Macro processor")
    (description
     "GNU M4 is an implementation of the M4 macro language, which features
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 65d8060862..11cea9a547 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -3840,7 +3840,7 @@ tools and applications:
            gnutls
            gpgme
            gtk+
-           gtksourceview
+           gtksourceview-4
            gtkspell3
            libassuan ; in gpgme.pc Requires
            libcanberra
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 4ea97368a9..326ddf561e 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2018, 2019, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
@@ -388,6 +388,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                                              (package-arguments binutils))
                                   ((#:configure-flags flags _ ...)
                                    flags)))
+       #:make-flags ,(match (memq #:make-flags (package-arguments binutils))
+                       ((#:make-flags flags _ ...)
+                        flags)
+                       (_ ''()))
        #:strip-flags '("--strip-all")
        #:phases (modify-phases %standard-phases
                   (add-before 'configure 'all-static
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 50796df89e..9a3297fcaf 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@@ -338,36 +338,36 @@ on any distribution, and the nroff source is included."))))
   ;; input "locales" contain the original (English) text.
   (package
     (name "help2man")
-    (version "1.48.5")
+    (version "1.49.2")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnu/help2man/help2man-"
-                          version ".tar.xz"))
-      (sha256
-       (base32
-        "1gl24n9am3ivhql1gs9lffb415irg758fhxyk4ryssiflk5f8fb7"))))
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/help2man/help2man-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "0dnxx96lbcb8ab8yrdkqll14cl5n0bch8qpd9qj3c2ky78hhwbly"))))
     (build-system gnu-build-system)
-    (arguments `(;; There's no `check' target.
-                 #:tests? #f
-                 #:phases
-                 (modify-phases %standard-phases
-                   (add-after 'unpack 'patch-help2man-with-perl-gettext
-                     (lambda* (#:key inputs #:allow-other-keys)
-                       (let ((lib (assoc-ref inputs "perl-gettext"))
-                             (fmt "use lib '~a/lib/perl5/site_perl';~%~a"))
-                         (substitute* "help2man.PL"
-                           (("^use Locale::gettext.*$" load)
-                            (format #f fmt lib load))))
-                       #t)))))
+    (arguments
+     (list
+      #:tests? #f                       ;no `check' target
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-help2man-with-perl-gettext
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((lib #$(this-package-input "perl-gettext"))
+                    (fmt "use lib '~a/lib/perl5/site_perl';~%~a"))
+                (substitute* "help2man.PL"
+                  (("^use Locale::gettext.*$" load)
+                   (format #f fmt lib load)))))))))
     (inputs
-     `(("perl" ,perl)
-       ,@(if (%current-target-system)
-             '()
-             `(("perl-gettext" ,perl-gettext)))))
+     (append
+      (list perl)
+      (if (%current-target-system)
+          '()
+          (list perl-gettext))))
     (native-inputs
-     `(("perl" ,perl)
-       ("gettext" ,gettext-minimal)))
+     (list perl gettext-minimal))
     (home-page "https://www.gnu.org/software/help2man/")
     (synopsis "Automatically generate man pages from program --help")
     (description
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 94e14c8e49..aa15666a5c 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -26,7 +26,7 @@
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Nadya Voronova <voronovank@gmail.com>
 ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
-;;; Copyright © 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2018, 2020-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 Eric Brown <brown@fastmail.com>
 ;;; Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018 Amin Bandali <bandali@gnu.org>
@@ -526,14 +526,14 @@ precision floating point numbers.")
 (define-public gsl
   (package
     (name "gsl")
-    (version "2.7")
+    (version "2.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gsl/gsl-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0av04cpblphvvs3kl5rwphniarml503501vrpqw31rd0bmwg7fzg"))))
+                "0jxkxrnpys2j3rh8bzx0bmnh4w6xm28jd57rgxsjp0s863agpc6w"))))
     (build-system gnu-build-system)
     (arguments
      (let ((system (%current-system)))
@@ -4606,66 +4606,67 @@ parts of it.")
          "0r4sz3rn68fyc2paq0a04pgfi7iszpm95f6ggbzxpvjzx9qxbcql"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:test-target "test"
-       ;; DYNAMIC_ARCH is only supported on x86.  When it is disabled and no
-       ;; TARGET is specified, OpenBLAS will tune itself to the build host, so
-       ;; we need to disable substitutions.
-       #:substitutable?
-        ,(let ((system (or (%current-target-system) (%current-system))))
-           (or (string-prefix? "x86_64" system)
-               (string-prefix? "i686" system)
-               (string-prefix? "mips" system)
-               (string-prefix? "aarch64" system)))
-       #:make-flags
-       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-             "SHELL=bash"
-             "MAKE_NB_JOBS=0"           ;use jobserver for submakes
-             "NO_STATIC=1"              ;avoid a 67 MiB static archive
-
-             ;; This is the maximum number of threads OpenBLAS will ever use (that
-             ;; is, if $OPENBLAS_NUM_THREADS is greater than that, then NUM_THREADS
-             ;; is used.)  If we don't set it, the makefile sets it to the number
-             ;; of cores of the build machine, which is obviously wrong.
-             "NUM_THREADS=128"
-
-             ;; Build the library for all supported CPUs.  This allows
-             ;; switching CPU targets at runtime with the environment variable
-             ;; OPENBLAS_CORETYPE=<type>, where "type" is a supported CPU type.
-             ;; Unfortunately, this is not supported on all architectures,
-             ;; where it leads to failed builds.
-             ,@(let ((system (or (%current-target-system) (%current-system))))
-                 (cond
-                  ((or (string-prefix? "x86_64" system)
-                       (string-prefix? "i686" system)
-                       (string-prefix? "powerpc64le" system)
-                       (string-prefix? "aarch64" system))
-                   ;; Dynamic older enables a few extra CPU architectures that
-                   ;; were released before 2010.
-                   '("DYNAMIC_ARCH=1" "DYNAMIC_OLDER=1" "TARGET=GENERIC"))
-                  ;; On some of these architectures the CPU can't be detected.
-                  ;; On MIPS we force the "SICORTEX" TARGET, as for the other
-                  ;; two available MIPS targets special extended instructions
-                  ;; for Loongson cores are used.
-                  ((string-prefix? "mips" system)
-                   '("TARGET=SICORTEX"))
-                  ;; Failed to detect CPU.
-                  ((string-prefix? "armhf" system)
-                   '("TARGET=ARMV7"))
-                  ((string-prefix? "riscv64" system)
-                   '("TARGET=RISCV64_GENERIC"))
-                  (else '()))))
-       ;; no configure script
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before 'build 'set-extralib
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Get libgfortran found when building in utest.
-             (setenv "FEXTRALIB"
-                     (string-append
-                      "-L"
-                      (dirname
-                       (search-input-file inputs "/lib/libgfortran.so")))))))))
+     (list
+      #:test-target "test"
+      ;; DYNAMIC_ARCH is only supported on x86.  When it is disabled and no
+      ;; TARGET is specified, OpenBLAS will tune itself to the build host, so
+      ;; we need to disable substitutions.
+      #:substitutable?
+      (let ((system (or (%current-target-system) (%current-system))))
+        (or (string-prefix? "x86_64" system)
+            (string-prefix? "i686" system)
+            (string-prefix? "mips" system)
+            (string-prefix? "aarch64" system)))
+      #:make-flags
+      #~(list (string-append "PREFIX=" #$output)
+              "SHELL=bash"
+              "MAKE_NB_JOBS=0"          ;use jobserver for submakes
+              "NO_STATIC=1"             ;avoid a 67 MiB static archive
+
+              ;; This is the maximum number of threads OpenBLAS will ever use (that
+              ;; is, if $OPENBLAS_NUM_THREADS is greater than that, then NUM_THREADS
+              ;; is used.)  If we don't set it, the makefile sets it to the number
+              ;; of cores of the build machine, which is obviously wrong.
+              "NUM_THREADS=128"
+
+              ;; Build the library for all supported CPUs.  This allows
+              ;; switching CPU targets at runtime with the environment variable
+              ;; OPENBLAS_CORETYPE=<type>, where "type" is a supported CPU type.
+              ;; Unfortunately, this is not supported on all architectures,
+              ;; where it leads to failed builds.
+              #$@(let ((system (or (%current-target-system) (%current-system))))
+                   (cond
+                    ((or (string-prefix? "x86_64" system)
+                         (string-prefix? "i686" system)
+                         (string-prefix? "powerpc64le" system)
+                         (string-prefix? "aarch64" system))
+                     ;; Dynamic older enables a few extra CPU architectures that
+                     ;; were released before 2010.
+                     '("DYNAMIC_ARCH=1" "DYNAMIC_OLDER=1" "TARGET=GENERIC"))
+                    ;; On some of these architectures the CPU can't be detected.
+                    ;; On MIPS we force the "SICORTEX" TARGET, as for the other
+                    ;; two available MIPS targets special extended instructions
+                    ;; for Loongson cores are used.
+                    ((string-prefix? "mips" system)
+                     '("TARGET=SICORTEX"))
+                    ;; Failed to detect CPU.
+                    ((string-prefix? "armhf" system)
+                     '("TARGET=ARMV7"))
+                    ((string-prefix? "riscv64" system)
+                     '("TARGET=RISCV64_GENERIC"))
+                    (else '()))))
+      ;; no configure script
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-before 'build 'set-extralib
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Get libgfortran found when building in utest.
+              (setenv "FEXTRALIB"
+                      (string-append
+                       "-L"
+                       (dirname
+                        (search-input-file inputs "/lib/libgfortran.so")))))))))
     (inputs
      (list `(,gfortran "lib")))
     (native-inputs
@@ -4682,9 +4683,9 @@ parts of it.")
     (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux"))
     (arguments
      (substitute-keyword-arguments (package-arguments openblas)
-       ((#:make-flags flags '())
-        `(append (list "INTERFACE64=1" "LIBNAMESUFFIX=ilp64")
-                 ,flags))))
+       ((#:make-flags flags #~'())
+        #~(append (list "INTERFACE64=1" "LIBNAMESUFFIX=ilp64")
+                 #$flags))))
     (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
     (license license:bsd-3)))
 
@@ -5110,6 +5111,13 @@ with C89.")
     (build-system cmake-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'set-environment
+                    (lambda _
+                      ;; Pass "-fno-ipa-modref" flag to the compiler to work
+                      ;; around a test failure with GCC 11.  This is a
+                      ;; header-only library so these flags only affect tests.
+                      ;; See <https://github.com/g-truc/glm/pull/1087>.
+                      (setenv "CXXFLAGS" "-O2 -g -fno-ipa-modref")))
                   (replace 'install
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; Since version 0.9.9.6, 'make install' is not supported
@@ -5664,6 +5672,8 @@ set.")
                                      texlive-cm
                                      texlive-courier
                                      texlive-etoolbox
+                                     texlive-fancyhdr
+                                     texlive-fancyvrb
                                      texlive-helvetic
                                      texlive-jknappen
                                      texlive-sectsty
@@ -5675,8 +5685,6 @@ set.")
                                      texlive-latex-cmap
                                      texlive-latex-colortbl
                                      texlive-latex-etoc
-                                     texlive-latex-fancyhdr
-                                     texlive-latex-fancyvrb
                                      texlive-latex-float
                                      texlive-latex-fncychap
                                      texlive-latex-framed
@@ -5690,10 +5698,10 @@ set.")
                                      texlive-latex-parskip
                                      texlive-latex-stackengine
                                      texlive-latex-tabulary
-                                     texlive-latex-titlesec
                                      texlive-latex-tocloft
                                      texlive-latex-upquote
                                      texlive-latex-varwidth
+                                     texlive-titlesec
                                      texlive-ulem
                                      texlive-wasysym
                                      texlive-wrapfig))))
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 2ba6d8ba1f..fc62041685 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -185,9 +185,9 @@ homeserver and generally help bootstrap the ecosystem.")
                         "not test_upload_binary_file_object "
                         "and not test_connect_wrapper"))))))))
     (native-inputs
-     `(("python-pytest" ,python-pytest-6)
+     `(("python-pytest" ,python-pytest)
        ("python-hyperframe" ,python-hyperframe)
-       ("python-hypothesis" ,python-hypothesis-next)
+       ("python-hypothesis" ,python-hypothesis)
        ("python-hpack" ,python-hpack)
        ("python-faker" ,python-faker)
        ("python-pytest-aiohttp" ,python-pytest-aiohttp)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index f0814bf28a..43b4a66890 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1273,7 +1273,7 @@ of xmpppy.")
        ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
        ("gtk+" ,gtk+)
-       ("gtksourceview" ,gtksourceview)
+       ("gtksourceview" ,gtksourceview-4)
        ("gupnp-igd" ,gupnp-igd)
        ("libappindicator" ,libappindicator)
        ("libnice" ,libnice)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 66b4beae0c..079e233126 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -3762,7 +3762,7 @@ websites such as Libre.fm.")
            python-flask
            python-mock
            python-py7zr
-           python-pytest-6
+           python-pytest
            python-responses))
     (inputs
      (list bash-minimal
@@ -6196,7 +6196,7 @@ and as an LV2 plugin.")
       ("glibc" ,glibc)
       ("graphviz" ,graphviz)
       ("gtk+" ,gtk+)
-      ("gtksourceview" ,gtksourceview)
+      ("gtksourceview" ,gtksourceview-4)
       ("guile" ,guile-2.2)
       ("libaudec" ,libaudec)
       ("libcyaml" ,libcyaml)
@@ -6811,7 +6811,7 @@ streaming audio server.")
            gst-plugins-ugly
            gstreamer
            gtk+
-           gtksourceview ; undo, redo, multiline text fields
+           gtksourceview-4 ; undo, redo, multiline text fields
            hicolor-icon-theme
            keybinder-3.0 ; keybindings outside of GNOME
            librsvg
diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm
index 27bd9efc60..91c3cfc459 100644
--- a/gnu/packages/nettle.scm
+++ b/gnu/packages/nettle.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2021 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -77,14 +77,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.7.3")
+    (version "3.8.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/nettle/nettle-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1w5wwc3q0r97d2ifhx77cw7y8s20bm8x52is9j93p2h47yq5w7v6"))))
+                "1znb87fi4gd2jkwbca74fl64pr9lr0cm5i6p7zlcszfdfwmkwkrn"))))
     (arguments
      (substitute-keyword-arguments (package-arguments nettle-2)
        ((#:configure-flags flags)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 8aef0d19ee..ee4d91bd2a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -1160,7 +1160,7 @@ and SSH, and it can use both TCP and UDP as transport mechanisms.")
 (define-public socat
   (package
     (name "socat")
-    (version "1.7.4.1")
+    (version "1.7.4.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1168,7 +1168,7 @@ and SSH, and it can use both TCP and UDP as transport mechanisms.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "1sbmqqvni3ss9wyay6ik5v81kxffkra80mh4ypgj74g82iba5b1z"))))
+                "01w0hpqf5xmgn40s1ablfd4y67dlrx5y9zlx24spc1qm8h81hwyl"))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f))          ; no test suite
     (inputs (list openssl))
@@ -2490,7 +2490,7 @@ sockets in Perl.")
     (inputs
      (list dbus zlib))
     (arguments
-     `(#:phases
+     '(#:phases
        (modify-phases %standard-phases
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index 4c4a2f37a7..42c9309b82 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -31,7 +31,7 @@
 (define-public ninja
   (package
     (name "ninja")
-    (version "1.10.2")
+    (version "1.11.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -40,9 +40,9 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0mspq4mvx41qri2v2zlg2y3znx5gfw6d8s3czbcfpr2218qbpz55"))))
+                "14kshkxdn833nkz2qkzb3w531dcqj6haad90gxj70ic05lb7zx9f"))))
     (build-system gnu-build-system)
-    (inputs `(("python" ,python-wrapper)))
+    (inputs (list python-wrapper))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 4e9daa522d..cfa9379b6c 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -288,8 +288,8 @@
      (list c-ares
            http-parser
            icu4c
-           libuv
-           `(,nghttp2 "lib")
+           libuv-for-node
+           `(,nghttp2-for-node "lib")
            openssl-1.1
            zlib
            ;; Regular build-time dependencies.
@@ -308,8 +308,8 @@
            c-ares
            http-parser
            icu4c
-           libuv
-           `(,nghttp2 "lib")
+           libuv-for-node
+           `(,nghttp2-for-node "lib")
            openssl
            python-wrapper               ;for node-gyp (supports python3)
            zlib))
@@ -864,9 +864,9 @@ source files.")
      (list ;; Runtime dependencies for binaries used as a bootstrap.
            c-ares-for-node
            brotli
-           icu4c-71
+           icu4c
            libuv-for-node
-           `(,nghttp2 "lib")
+           `(,nghttp2-for-node "lib")
            openssl-1.1
            zlib
            ;; Regular build-time dependencies.
@@ -879,11 +879,11 @@ source files.")
      (list bash-minimal
            coreutils
            c-ares-for-node
-           icu4c-71
+           icu4c
            libuv-for-node
            llhttp-bootstrap
            brotli
-           `(,nghttp2 "lib")
+           `(,nghttp2-for-node "lib")
            openssl-1.1
            python-wrapper ;; for node-gyp (supports python3)
            zlib))))
diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 0d18592be4..a841ad4580 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -29,6 +29,7 @@
   #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system mozilla)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
@@ -49,7 +50,7 @@
               (sha256
                (base32
                 "177rxcf3lglabs7sgwcvf72ww4v56qa71lc495wl13sxs4f03vxy"))))
-    (build-system gnu-build-system)
+    (build-system mozilla-build-system)
     (inputs
      (list perl                         ;for 'compile-et.pl'
            bash-minimal))               ;for 'nspr-config'
@@ -69,16 +70,7 @@
       #~(list "--disable-static"
               "--enable-64bit"
               (string-append "LDFLAGS=-Wl,-rpath="
-                             (assoc-ref %outputs "out") "/lib")
-              ;; Mozilla deviates from Autotools conventions
-              ;; due to historical reasons.  Adjust to Mozilla conventions,
-              ;; otherwise the Makefile will try to use TARGET-gcc
-              ;; as a ‘native’ compiler.
-              #$@(if (%current-target-system)
-                     #~((string-append "--host="
-                                       #$(nix-system->gnu-triplet (%current-system)))
-                        (string-append "--target=" #$(%current-target-system)))
-                     #~()))
+                             (assoc-ref %outputs "out") "/lib"))
       ;; Use fixed timestamps for reproducibility.
       #:make-flags #~'("SH_DATE='1970-01-01 00:00:01'"
                        ;; This is epoch 1 in microseconds.
@@ -112,7 +104,7 @@ in the Mozilla clients.")
     (name "nss")
     ;; Also update and test the nss-certs package, which duplicates version and
     ;; source to avoid a top-level variable reference & module cycle.
-    (version "3.81")
+    (version "3.82")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -123,7 +115,7 @@ in the Mozilla clients.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "19ncvhz45dhr0nmymwkxspq9l44gaafkspxiwxbqs1hpnqxmzgx8"))
+                "0wqmgibacxf5i3jlm8jl50qasv2spwx07ixlscz9byf2f8xnggrj"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
@@ -186,7 +178,7 @@ in the Mozilla clients.")
                     ;; leading to test failures:
                     ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
                     ;; work around that, set the time to roughly the release date.
-                    (invoke "faketime" "2022-06-01" "./nss/tests/all.sh"))
+                    (invoke "faketime" "2022-09-01" "./nss/tests/all.sh"))
                   (format #t "test suite not run~%"))))
           (replace 'install
             (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index 873dc54c30..3372dc5cd3 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -39,12 +39,12 @@
   (package
     (name "libtirpc")
     (version "1.3.1")
-    (replacement libtirpc/fixed)
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/libtirpc/libtirpc/"
                                   version "/libtirpc-"
                                   version ".tar.bz2"))
+              (patches (search-patches "libtirpc-CVE-2021-46828.patch"))
               (sha256
                (base32
                 "05zf16ilwwkzv4cccaac32nssrj3rg444n9pskiwbgk6y359an14"))))
@@ -86,13 +86,6 @@ IPv4 and IPv6.  ONC RPC is notably used by the network file system (NFS).")
                               (assoc-ref %build-inputs "mit-krb5")
                               "/bin/krb5-config")))))))
 
-(define libtirpc/fixed
-  (package
-    (inherit libtirpc)
-    (source (origin
-              (inherit (package-source libtirpc))
-              (patches (search-patches "libtirpc-CVE-2021-46828.patch"))))))
-
 (define-public rpcbind
   (package
     (name "rpcbind")
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index c8a47e45d5..1b9dc94341 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -63,76 +63,14 @@
 
 (define-public openldap
   (package
-   (name "openldap")
-   (version "2.4.57")
-   (source (origin
-             (method url-fetch)
-             ;; See <http://www.openldap.org/software/download/> for a list of
-             ;; mirrors.
-             (uri (list (string-append
-                         "ftp://mirror.switch.ch/mirror/OpenLDAP/"
-                         "openldap-release/openldap-" version ".tgz")
-                        (string-append
-                         "https://www.openldap.org/software/download/OpenLDAP/"
-                         "openldap-release/openldap-" version ".tgz")
-                        (string-append
-                         "ftp://ftp.dti.ad.jp/pub/net/OpenLDAP/"
-                         "openldap-release/openldap-" version ".tgz")))
-             (sha256
-              (base32
-               "0nmlyqhc52v24b4awh914sczmvxbazgq2cnlycvb9dgcwvhlgfn7"))))
-   (build-system gnu-build-system)
-   (inputs (list bdb-5.3 cyrus-sasl gnutls libgcrypt zlib))
-   (native-inputs (list libtool groff bdb-5.3))
-   (arguments
-    `(#:tests? #f
-      #:configure-flags
-      '("--disable-static"
-        ,@(if (%current-target-system)
-              '("--with-yielding_select=yes"
-                "ac_cv_func_memcmp_working=yes")
-              '()))
-      ;; Disable install stripping as it breaks cross-compiling.
-      #:make-flags '("STRIP=")
-      #:phases
-      (modify-phases %standard-phases
-        ,@(if (%current-target-system)
-              '((add-before 'configure 'fix-cross-gcc
-                  (lambda* (#:key target #:allow-other-keys)
-                    (setenv "CC" (string-append target "-gcc"))
-                    #t)))
-              '())
-        (add-after 'install 'patch-sasl-path
-          ;; Give -L arguments for cyrus-sasl to avoid propagation.
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out"))
-                  (krb5 (assoc-ref inputs "mit-krb5"))) ;propagated from cyrus-sasl
-
-              ;; The ancient Libtool bundled with OpenLDAP copies the linker flags
-              ;; from Cyrus-SASL and embeds them into its own .la files.  Add an
-              ;; absolute reference to Kerberos so it does not have to be propagated.
-              (substitute* (map (lambda (f) (string-append out "/" f))
-                                '("lib/libldap.la" "lib/libldap_r.la"))
-                (("-lkrb5" lib)
-                 (string-append "-L" krb5 "/lib " lib)))
-              #t))))))
-   (synopsis "Implementation of the Lightweight Directory Access Protocol")
-   (description
-    "OpenLDAP is a free implementation of the Lightweight Directory Access Protocol.")
-   (license openldap2.8)
-   (home-page "https://www.openldap.org/")))
-
-;; TODO: Update the main package in the next rebuild cycle.
-(define-public openldap-2.6
-  (package
-    (inherit openldap)
-    (version "2.6.1")
+    (name "openldap")
+    (version "2.6.3")
     (source (origin
               (method url-fetch)
               ;; See <http://www.openldap.org/software/download/> for a list of
               ;; mirrors.
               (uri (list (string-append
-                          "http://mirror.eu.oneandone.net/software/openldap"
+                          "http://repository.linagora.org/OpenLDAP"
                           "/openldap-release/openldap-" version ".tgz")
                          (string-append
                           "https://www.openldap.org/software/download/OpenLDAP/"
@@ -142,27 +80,41 @@
                           "openldap-release/openldap-" version ".tgz")))
               (sha256
                (base32
-                "1wz6f3g3bbqgbbxs20zlappmmhapqbl791c0waibhz9djsk6wmwx"))))
+                "0ihddk8c6hg9lkjv0wk0w13g8kb75r8dfsn1n6b77mzk3pbs38nj"))))
+    (build-system gnu-build-system)
+    (inputs (list bdb-5.3 cyrus-sasl gnutls libgcrypt zlib))
+    (native-inputs (list libtool groff bdb-5.3))
     (arguments
-     (substitute-keyword-arguments (package-arguments openldap)
-       ((#:phases phases)
-        #~(modify-phases #$phases
-            (replace 'patch-sasl-path
-              ;; Give -L arguments for cyrus-sasl to avoid propagation.
-              (lambda* (#:key inputs #:allow-other-keys)
-                (let ((krb5 (search-input-file inputs "/lib/libkrb5.so")))
-                  (substitute* (string-append #$output "/lib/libldap.la")
-                    (("-lkrb5" lib)
-                     (string-append "-L" (dirname krb5) "/lib " lib))))))
-            (add-after 'install 'provide-ldap_r
-              (lambda _
-                ;; The re-entrant libldap_r no longer exists since 2.6
-                ;; as it has become the default: provide a linker alias
-                ;; for now.
-                (call-with-output-file (string-append #$output
-                                                      "/lib/libldap_r.so")
-                  (lambda (port)
-                    (format port "INPUT ( libldap.so )~%")))))))))))
+     (list
+      #:tests? #f
+      #:configure-flags
+      #~'("--disable-static"
+          #$@(if (%current-target-system)
+                 '("--with-yielding_select=yes"
+                   "ac_cv_func_memcmp_working=yes")
+                  '()))
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@(if (%current-target-system)
+                 '((add-before 'configure 'fix-cross-gcc
+                     (lambda* (#:key target #:allow-other-keys)
+                       (setenv "CC" (string-append target "-gcc"))
+                       (setenv "STRIP" (string-append target "-strip")))))
+                 '())
+          (add-after 'install 'provide-libldap_r
+            (lambda _
+              ;; The re-entrant libldap_r no longer exists since 2.6
+              ;; as it has become the default: provide a linker alias
+              ;; for now.
+              (call-with-output-file (string-append #$output
+                                                    "/lib/libldap_r.so")
+                (lambda (port)
+                  (format port "INPUT ( libldap.so )~%"))))))))
+    (synopsis "Implementation of the Lightweight Directory Access Protocol")
+    (description
+     "OpenLDAP is a free implementation of the Lightweight Directory Access Protocol.")
+    (license openldap2.8)
+    (home-page "https://www.openldap.org/")))
 
 (define-public nss-pam-ldapd
   (package
@@ -231,7 +183,7 @@ an LDAP server.")
                (setenv "SLAPD" slapd)
                (setenv "SCHEMA" schema)))))))
     (inputs
-     (list openldap-2.6 cyrus-sasl mit-krb5))
+     (list openldap cyrus-sasl mit-krb5))
     (propagated-inputs
      (list python-pyasn1 python-pyasn1-modules))
     (home-page "https://www.python-ldap.org/")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 2d1fe914e3..ca7c720778 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1992,7 +1992,7 @@ cp -r /tmp/locale/*/en_US.*")))
            libsoup-minimal-2
            libxau
            libxml2
-           p11-kit-next
+           p11-kit
            util-linux
            xdg-dbus-proxy))
     (propagated-inputs (list glib-networking gnupg gsettings-desktop-schemas))
diff --git a/gnu/packages/patches/autotrace-glib-compat.patch b/gnu/packages/patches/autotrace-glib-compat.patch
deleted file mode 100644
index e63dcedf83..0000000000
--- a/gnu/packages/patches/autotrace-glib-compat.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Fix build with GLib 2.68 and later.
-
-Taken from upstream pull request:
-https://github.com/autotrace/autotrace/pull/41
-
-diff --git a/src/autotrace.h b/src/autotrace.h
---- a/src/autotrace.h
-+++ b/src/autotrace.h
-@@ -23,6 +23,9 @@
- 
- #include <stdio.h>
- 
-+#include "types.h"
-+#include "color.h"
-+
- #ifdef __cplusplus
- extern "C" {
- #endif                          /* __cplusplus */
-@@ -35,9 +38,6 @@ extern "C" {
-  * Typedefs
-  * ===================================================================== */
- 
--#include "types.h"
--#include "color.h"
--
- /* Third degree is the highest we deal with.  */
-   enum _at_polynomial_degree {
-     AT_LINEARTYPE = 1,
-diff --git a/src/color.h b/src/color.h
---- a/src/color.h
-+++ b/src/color.h
-@@ -24,6 +24,10 @@
- #include <glib.h>
- #include <glib-object.h>
- 
-+#ifdef __cplusplus
-+extern "C" {
-+#endif                          /* __cplusplus */
-+
- typedef struct _at_color at_color;
- struct _at_color {
-   guint8 r;
-@@ -43,4 +47,7 @@ void at_color_free(at_color * color);
- GType at_color_get_type(void);
- #define AT_TYPE_COLOR (at_color_get_type ())
- 
-+#ifdef __cplusplus
-+}
-+#endif                          /* __cplusplus */
- #endif /* not AT_COLOR_H */
diff --git a/gnu/packages/patches/bash-completion-directories.patch b/gnu/packages/patches/bash-completion-directories.patch
index 021e34653b..a9b88203bd 100644
--- a/gnu/packages/patches/bash-completion-directories.patch
+++ b/gnu/packages/patches/bash-completion-directories.patch
@@ -4,24 +4,28 @@ up by the dynamic completion loader from there---whether they are
 part of bash-completion or installed by another package.
 
 On Guix systems, we want not only to search within bash-completion's own
-directory, but also in the user's profile and in the system profile.
+directory, but also in the user's profile and guix home profile, as well
+as in the system profile.
 This is what this patch does.
 
 
 --- a/bash_completion
 +++ b/bash_completion
-@@ -2016,7 +2016,13 @@ complete -F _minimal ''
+@@ -2173,7 +2173,15 @@ complete -F _minimal ''
  
  __load_completion()
  {
--    local -a dirs=( ${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions )
+-    local -a dirs=(${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions)
 +    local -a dirs=(
 +        ${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions
-+        "$HOME/.guix-profile/share/bash-completion/completions/$base"
-+        "$HOME/.guix-profile/etc/bash_completion.d/$base"
-+        "/run/current-system/profile/share/bash-completion/completions/$base"
-+        "/run/current-system/profile/etc/bash_completion.d/$base" )
++        "$HOME/.guix-profile/share/bash-completion/completions"
++        "$HOME/.guix-profile/etc/bash_completion.d"
++        "$HOME/.guix-home/profile/share/bash-completion/completions"
++        "$HOME/.guix-home/profile/etc/bash_completion.d"
++        "/run/current-system/profile/share/bash-completion/completions"
++        "/run/current-system/profile/etc/bash_completion.d" )
 +
-     local OIFS=$IFS IFS=: dir cmd="${1##*/}" compfile
+     local ifs=$IFS IFS=: dir cmd="${1##*/}" compfile
+     [[ -n $cmd ]] || return 1
      for dir in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share}; do
          dirs+=( $dir/bash-completion/completions )
diff --git a/gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch b/gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch
deleted file mode 100644
index 1fd3d3d9b7..0000000000
--- a/gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Mon, 26 Jul 2021 05:59:55 -0700
-Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
-
-Close the file descriptor if there is no archive plugin file descriptor
-to avoid running out of file descriptors on thin archives with many
-archive members.
-
-bfd/
-
-	PR ld/28138
-	* plugin.c (bfd_plugin_close_file_descriptor): Close the file
-	descriptor there is no archive plugin file descriptor.
-
-ld/
-
-	PR ld/28138
-	* testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
-	native build.
-
-	PR ld/28138
-	* testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
-	* testsuite/ld-plugin/pr28138.c: New file.
-	* testsuite/ld-plugin/pr28138-1.c: Likewise.
-	* testsuite/ld-plugin/pr28138-2.c: Likewise.
-	* testsuite/ld-plugin/pr28138-3.c: Likewise.
-	* testsuite/ld-plugin/pr28138-4.c: Likewise.
-	* testsuite/ld-plugin/pr28138-5.c: Likewise.
-	* testsuite/ld-plugin/pr28138-6.c: Likewise.
-	* testsuite/ld-plugin/pr28138-7.c: Likewise.
-
-(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
-(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
----
- bfd/plugin.c                       |  8 +++++++
- ld/testsuite/ld-plugin/lto.exp     | 34 ++++++++++++++++++++++++++++++
- ld/testsuite/ld-plugin/pr28138-1.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138-2.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138-3.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138-4.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138-5.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138-6.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138-7.c |  6 ++++++
- ld/testsuite/ld-plugin/pr28138.c   | 20 ++++++++++++++++++
- 10 files changed, 104 insertions(+)
- create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
- create mode 100644 ld/testsuite/ld-plugin/pr28138.c
-
-diff --git a/bfd/plugin.c b/bfd/plugin.c
-index 6cfa2b66470..3bab8febe88 100644
---- a/bfd/plugin.c
-+++ b/bfd/plugin.c
-@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
- 	     && !bfd_is_thin_archive (abfd->my_archive))
- 	abfd = abfd->my_archive;
- 
-+      /* Close the file descriptor if there is no archive plugin file
-+	 descriptor.  */
-+      if (abfd->archive_plugin_fd == -1)
-+	{
-+	  close (fd);
-+	  return;
-+	}
-+
-       abfd->archive_plugin_fd_open_count--;
-       /* Dup the archive plugin file descriptor for later use, which
- 	 will be closed by _bfd_archive_close_and_cleanup.  */
-diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
-index def69e43ab3..999d911ce6a 100644
---- a/ld/testsuite/ld-plugin/lto.exp
-+++ b/ld/testsuite/ld-plugin/lto.exp
-@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
-     }
- }
- 
-+run_cc_link_tests [list \
-+    [list \
-+	"Build pr28138.a" \
-+	"-T" "" \
-+	{pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
-+	 pr28138-6.c pr28138-7.c} {} "pr28138.a" \
-+    ] \
-+    [list \
-+	"Build pr28138.o" \
-+	"" "" \
-+	{pr28138.c} {} \
-+    ] \
-+]
-+
-+set exec_output [run_host_cmd "sh" \
-+			      "-c \"ulimit -n 20; \
-+			      $CC -Btmpdir/ld -o tmpdir/pr28138 \
-+			      tmpdir/pr28138.o tmpdir/pr28138.a\""]
-+set exec_output [prune_warnings $exec_output]
-+if [string match "" $exec_output] then {
-+    if { [isnative] } {
-+	set exec_output [run_host_cmd "tmpdir/pr28138" ""]
-+	if [string match "PASS" $exec_output] then {
-+	    pass "PR ld/28138"
-+	} else {
-+	    fail "PR ld/28138"
-+	}
-+    } else {
-+	pass "PR ld/28138"
-+    }
-+} else {
-+    fail "PR ld/28138"
-+}
-+
- set testname "Build liblto-11.a"
- remote_file host delete "tmpdir/liblto-11.a"
- set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
-diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
-new file mode 100644
-index 00000000000..51d119e1642
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-1.c
-@@ -0,0 +1,6 @@
-+extern int a0(void);
-+int
-+a1(void)
-+{
-+  return 1 + a0();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
-new file mode 100644
-index 00000000000..1120cd797e9
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-2.c
-@@ -0,0 +1,6 @@
-+extern int a1(void);
-+int
-+a2(void)
-+{
-+  return 1 + a1();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
-new file mode 100644
-index 00000000000..ec464947ee6
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-3.c
-@@ -0,0 +1,6 @@
-+extern int a2(void);
-+int
-+a3(void)
-+{
-+  return 1 + a2();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
-new file mode 100644
-index 00000000000..475701b2c5c
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-4.c
-@@ -0,0 +1,6 @@
-+extern int a3(void);
-+int
-+a4(void)
-+{
-+  return 1 + a3();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
-new file mode 100644
-index 00000000000..e24f86c363e
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-5.c
-@@ -0,0 +1,6 @@
-+extern int a4(void);
-+int
-+a5(void)
-+{
-+  return 1 + a4();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
-new file mode 100644
-index 00000000000..b5b938bdb21
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-6.c
-@@ -0,0 +1,6 @@
-+extern int a5(void);
-+int
-+a6(void)
-+{
-+  return 1 + a5();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
-new file mode 100644
-index 00000000000..4ef75bf0f0c
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138-7.c
-@@ -0,0 +1,6 @@
-+extern int a6(void);
-+int
-+a7(void)
-+{
-+  return 1 + a6();
-+}
-diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
-new file mode 100644
-index 00000000000..68252c9f382
---- /dev/null
-+++ b/ld/testsuite/ld-plugin/pr28138.c
-@@ -0,0 +1,20 @@
-+#include <stdio.h>
-+
-+extern int a7(void);
-+
-+int
-+a0(void)
-+{
-+  return 0;
-+}
-+
-+int
-+main()
-+{
-+  if (a7() == 7)
-+    {
-+      printf ("PASS\n");
-+      return 0;
-+    }
-+  return 1;
-+}
--- 
-2.27.0
diff --git a/gnu/packages/patches/binutils-CVE-2021-45078.patch b/gnu/packages/patches/binutils-CVE-2021-45078.patch
deleted file mode 100644
index fca692bdb5..0000000000
--- a/gnu/packages/patches/binutils-CVE-2021-45078.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-Fix CVE-2021-45078 (incomplete fix for CVE-2018-12699):
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45078
-https://sourceware.org/bugzilla/show_bug.cgi?id=28694
-
-Patch copied from upstream source repository:
-
-https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=161e87d12167b1e36193385485c1f6ce92f74f02
-
-From 161e87d12167b1e36193385485c1f6ce92f74f02 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 15 Dec 2021 11:48:42 +1030
-Subject: [PATCH] PR28694, Out-of-bounds write in stab_xcoff_builtin_type
-
-	PR 28694
-	* stabs.c (stab_xcoff_builtin_type): Make typenum unsigned.
-	Negate typenum earlier, simplifying bounds checking.  Correct
-	off-by-one indexing.  Adjust switch cases.
----
- binutils/stabs.c | 87 ++++++++++++++++++++++++------------------------
- 1 file changed, 43 insertions(+), 44 deletions(-)
-
-diff --git a/binutils/stabs.c b/binutils/stabs.c
-index 274bfb0e7fa..83ee3ea5fa4 100644
---- a/binutils/stabs.c
-+++ b/binutils/stabs.c
-@@ -202,7 +202,7 @@ static debug_type stab_find_type (void *, struct stab_handle *, const int *);
- static bool stab_record_type
-   (void *, struct stab_handle *, const int *, debug_type);
- static debug_type stab_xcoff_builtin_type
--  (void *, struct stab_handle *, int);
-+  (void *, struct stab_handle *, unsigned int);
- static debug_type stab_find_tagged_type
-   (void *, struct stab_handle *, const char *, int, enum debug_type_kind);
- static debug_type *stab_demangle_argtypes
-@@ -3496,166 +3496,167 @@ stab_record_type (void *dhandle ATTRIBUTE_UNUSED, struct stab_handle *info,
- 
- static debug_type
- stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info,
--			 int typenum)
-+			 unsigned int typenum)
- {
-   debug_type rettype;
-   const char *name;
- 
--  if (typenum >= 0 || typenum < -XCOFF_TYPE_COUNT)
-+  typenum = -typenum - 1;
-+  if (typenum >= XCOFF_TYPE_COUNT)
-     {
--      fprintf (stderr, _("Unrecognized XCOFF type %d\n"), typenum);
-+      fprintf (stderr, _("Unrecognized XCOFF type %d\n"), -typenum - 1);
-       return DEBUG_TYPE_NULL;
-     }
--  if (info->xcoff_types[-typenum] != NULL)
--    return info->xcoff_types[-typenum];
-+  if (info->xcoff_types[typenum] != NULL)
-+    return info->xcoff_types[typenum];
- 
--  switch (-typenum)
-+  switch (typenum)
-     {
--    case 1:
-+    case 0:
-       /* The size of this and all the other types are fixed, defined
- 	 by the debugging format.  */
-       name = "int";
-       rettype = debug_make_int_type (dhandle, 4, false);
-       break;
--    case 2:
-+    case 1:
-       name = "char";
-       rettype = debug_make_int_type (dhandle, 1, false);
-       break;
--    case 3:
-+    case 2:
-       name = "short";
-       rettype = debug_make_int_type (dhandle, 2, false);
-       break;
--    case 4:
-+    case 3:
-       name = "long";
-       rettype = debug_make_int_type (dhandle, 4, false);
-       break;
--    case 5:
-+    case 4:
-       name = "unsigned char";
-       rettype = debug_make_int_type (dhandle, 1, true);
-       break;
--    case 6:
-+    case 5:
-       name = "signed char";
-       rettype = debug_make_int_type (dhandle, 1, false);
-       break;
--    case 7:
-+    case 6:
-       name = "unsigned short";
-       rettype = debug_make_int_type (dhandle, 2, true);
-       break;
--    case 8:
-+    case 7:
-       name = "unsigned int";
-       rettype = debug_make_int_type (dhandle, 4, true);
-       break;
--    case 9:
-+    case 8:
-       name = "unsigned";
-       rettype = debug_make_int_type (dhandle, 4, true);
-       break;
--    case 10:
-+    case 9:
-       name = "unsigned long";
-       rettype = debug_make_int_type (dhandle, 4, true);
-       break;
--    case 11:
-+    case 10:
-       name = "void";
-       rettype = debug_make_void_type (dhandle);
-       break;
--    case 12:
-+    case 11:
-       /* IEEE single precision (32 bit).  */
-       name = "float";
-       rettype = debug_make_float_type (dhandle, 4);
-       break;
--    case 13:
-+    case 12:
-       /* IEEE double precision (64 bit).  */
-       name = "double";
-       rettype = debug_make_float_type (dhandle, 8);
-       break;
--    case 14:
-+    case 13:
-       /* This is an IEEE double on the RS/6000, and different machines
- 	 with different sizes for "long double" should use different
- 	 negative type numbers.  See stabs.texinfo.  */
-       name = "long double";
-       rettype = debug_make_float_type (dhandle, 8);
-       break;
--    case 15:
-+    case 14:
-       name = "integer";
-       rettype = debug_make_int_type (dhandle, 4, false);
-       break;
--    case 16:
-+    case 15:
-       name = "boolean";
-       rettype = debug_make_bool_type (dhandle, 4);
-       break;
--    case 17:
-+    case 16:
-       name = "short real";
-       rettype = debug_make_float_type (dhandle, 4);
-       break;
--    case 18:
-+    case 17:
-       name = "real";
-       rettype = debug_make_float_type (dhandle, 8);
-       break;
--    case 19:
-+    case 18:
-       /* FIXME */
-       name = "stringptr";
-       rettype = NULL;
-       break;
--    case 20:
-+    case 19:
-       /* FIXME */
-       name = "character";
-       rettype = debug_make_int_type (dhandle, 1, true);
-       break;
--    case 21:
-+    case 20:
-       name = "logical*1";
-       rettype = debug_make_bool_type (dhandle, 1);
-       break;
--    case 22:
-+    case 21:
-       name = "logical*2";
-       rettype = debug_make_bool_type (dhandle, 2);
-       break;
--    case 23:
-+    case 22:
-       name = "logical*4";
-       rettype = debug_make_bool_type (dhandle, 4);
-       break;
--    case 24:
-+    case 23:
-       name = "logical";
-       rettype = debug_make_bool_type (dhandle, 4);
-       break;
--    case 25:
-+    case 24:
-       /* Complex type consisting of two IEEE single precision values.  */
-       name = "complex";
-       rettype = debug_make_complex_type (dhandle, 8);
-       break;
--    case 26:
-+    case 25:
-       /* Complex type consisting of two IEEE double precision values.  */
-       name = "double complex";
-       rettype = debug_make_complex_type (dhandle, 16);
-       break;
--    case 27:
-+    case 26:
-       name = "integer*1";
-       rettype = debug_make_int_type (dhandle, 1, false);
-       break;
--    case 28:
-+    case 27:
-       name = "integer*2";
-       rettype = debug_make_int_type (dhandle, 2, false);
-       break;
--    case 29:
-+    case 28:
-       name = "integer*4";
-       rettype = debug_make_int_type (dhandle, 4, false);
-       break;
--    case 30:
-+    case 29:
-       /* FIXME */
-       name = "wchar";
-       rettype = debug_make_int_type (dhandle, 2, false);
-       break;
--    case 31:
-+    case 30:
-       name = "long long";
-       rettype = debug_make_int_type (dhandle, 8, false);
-       break;
--    case 32:
-+    case 31:
-       name = "unsigned long long";
-       rettype = debug_make_int_type (dhandle, 8, true);
-       break;
--    case 33:
-+    case 32:
-       name = "logical*8";
-       rettype = debug_make_bool_type (dhandle, 8);
-       break;
--    case 34:
-+    case 33:
-       name = "integer*8";
-       rettype = debug_make_int_type (dhandle, 8, false);
-       break;
-@@ -3664,9 +3665,7 @@ stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info,
-     }
- 
-   rettype = debug_name_type (dhandle, name, rettype);
--
--  info->xcoff_types[-typenum] = rettype;
--
-+  info->xcoff_types[typenum] = rettype;
-   return rettype;
- }
- 
--- 
-2.27.0
-
diff --git a/gnu/packages/patches/cmake-curl-certificates.patch b/gnu/packages/patches/cmake-curl-certificates.patch
index 7fe2615271..8dd93de724 100644
--- a/gnu/packages/patches/cmake-curl-certificates.patch
+++ b/gnu/packages/patches/cmake-curl-certificates.patch
@@ -4,22 +4,23 @@ at all: <https://issues.guix.gnu.org/issue/37371>.
 This changes CMake such that commands honor SSL_CERT_FILE and SSL_CERT_DIR
 as well as /etc/ssl/certs.
 
---- cmake-3.13.1/Source/cmCurl.cxx	2019-09-10 17:27:36.926907260 +0200
-+++ cmake-3.13.1/Source/cmCurl.cxx	2019-09-10 17:52:35.475903919 +0200
-@@ -2,11 +2,8 @@
+diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx
+index 28ee24dfe9..6b2bb09ff5 100644
+--- a/Source/cmCurl.cxx
++++ b/Source/cmCurl.cxx
+@@ -2,10 +2,7 @@
     file Copyright.txt or https://cmake.org/licensing for details.  */
  #include "cmCurl.h"
  
 -#if !defined(CMAKE_USE_SYSTEM_CURL) && !defined(_WIN32) &&                    \
 -  !defined(__APPLE__) && !defined(CURL_CA_BUNDLE) && !defined(CURL_CA_PATH)
  #  define CMAKE_FIND_CAFILE
- #  include "cmSystemTools.h"
 -#endif
  #include "cmStringAlgorithms.h"
+ #include "cmSystemTools.h"
  
- // curl versions before 7.21.5 did not provide this error code
-@@ -30,6 +27,19 @@
-     ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cafile);
+@@ -38,6 +35,19 @@ std::string cmCurlSetCAInfo(::CURL* curl, const std::string& cafile)
+     ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cafile.c_str());
      check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
    }
 +
diff --git a/gnu/packages/patches/coreutils-ls.patch b/gnu/packages/patches/coreutils-ls.patch
deleted file mode 100644
index 59cbbf00b5..0000000000
--- a/gnu/packages/patches/coreutils-ls.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-Patch taken from upstream to fix cross-compilation for aarch64.  This can be
-removed on the next coreutils release.
-
-From 10fcb97bd728f09d4a027eddf8ad2900f0819b0a Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Thu, 5 Mar 2020 17:25:29 -0800
-Subject: [PATCH] ls: restore 8.31 behavior on removed directories
-
-* NEWS: Mention this.
-* src/ls.c: Do not include <sys/sycall.h>
-(print_dir): Don't worry about whether the directory is removed.
-* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
-behavior.
----
- NEWS                          |  6 ++++++
- src/ls.c                      | 22 ----------------------
- tests/ls/removed-directory.sh | 10 ++--------
- 3 files changed, 8 insertions(+), 30 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index fdc8bf5db..653e7178b 100644
---- a/NEWS
-+++ b/NEWS
-@@ -2,6 +2,12 @@ GNU coreutils NEWS                                    -*- outline -*-
- 
- * Noteworthy changes in release ?.? (????-??-??) [?]
- 
-+** Changes in behavior
-+
-+  On GNU/Linux systems, ls no longer issues an error message on
-+  directory merely because it was removed.  This reverts a change
-+  that was made in release 8.32.
-+
- 
- * Noteworthy changes in release 8.32 (2020-03-05) [stable]
- 
-diff --git a/src/ls.c b/src/ls.c
-index 24b983287..4acf5f44d 100644
---- a/src/ls.c
-+++ b/src/ls.c
-@@ -49,10 +49,6 @@
- # include <sys/ptem.h>
- #endif
- 
--#ifdef __linux__
--# include <sys/syscall.h>
--#endif
--
- #include <stdio.h>
- #include <assert.h>
- #include <setjmp.h>
-@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
-   struct dirent *next;
-   uintmax_t total_blocks = 0;
-   static bool first = true;
--  bool found_any_entries = false;
- 
-   errno = 0;
-   dirp = opendir (name);
-@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
-       next = readdir (dirp);
-       if (next)
-         {
--          found_any_entries = true;
-           if (! file_ignored (next->d_name))
-             {
-               enum filetype type = unknown;
-@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
-           if (errno != EOVERFLOW)
-             break;
-         }
--#ifdef __linux__
--      else if (! found_any_entries)
--        {
--          /* If readdir finds no directory entries at all, not even "." or
--             "..", then double check that the directory exists.  */
--          if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1
--              && errno != EINVAL)
--            {
--              /* We exclude EINVAL as that pertains to buffer handling,
--                 and we've passed NULL as the buffer for simplicity.
--                 ENOENT is returned if appropriate before buffer handling.  */
--              file_failure (command_line_arg, _("reading directory %s"), name);
--            }
--          break;
--        }
--#endif
-       else
-         break;
- 
-diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh
-index e8c835dab..fe8f929a1 100755
---- a/tests/ls/removed-directory.sh
-+++ b/tests/ls/removed-directory.sh
-@@ -26,20 +26,14 @@ case $host_triplet in
-   *) skip_ 'non linux kernel' ;;
- esac
- 
--LS_FAILURE=2
--
--cat <<\EOF >exp-err || framework_failure_
--ls: reading directory '.': No such file or directory
--EOF
--
- cwd=$(pwd)
- mkdir d || framework_failure_
- cd d || framework_failure_
- rmdir ../d || framework_failure_
- 
--returns_ $LS_FAILURE ls >../out 2>../err || fail=1
-+ls >../out 2>../err || fail=1
- cd "$cwd" || framework_failure_
- compare /dev/null out || fail=1
--compare exp-err err || fail=1
-+compare /dev/null err || fail=1
- 
- Exit $fail
diff --git a/gnu/packages/patches/curl-easy-lock.patch b/gnu/packages/patches/curl-easy-lock.patch
deleted file mode 100644
index 137106f57c..0000000000
--- a/gnu/packages/patches/curl-easy-lock.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-This patch is taken from upstream master, and should probably be dropped
-with the next release.
-
-ihttps://github.com/curl/curl/commit/e2e7f54b7bea521fa8373095d0f43261a720cda0.patch
-
-From e2e7f54b7bea521fa8373095d0f43261a720cda0 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Mon, 27 Jun 2022 08:46:21 +0200
-Subject: [PATCH] easy_lock.h: include sched.h if available to fix build
-
-Patched-by: Harry Sintonen
-
-Closes #9054
----
- lib/easy_lock.h | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/lib/easy_lock.h b/lib/easy_lock.h
-index 819f50ce815b8..1f54289ceb2d3 100644
---- a/lib/easy_lock.h
-+++ b/lib/easy_lock.h
-@@ -36,6 +36,9 @@
- 
- #elif defined (HAVE_ATOMIC)
- #include <stdatomic.h>
-+#if defined(HAVE_SCHED_YIELD)
-+#include <sched.h>
-+#endif
- 
- #define curl_simple_lock atomic_bool
- #define CURL_SIMPLE_LOCK_INIT false
diff --git a/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch b/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch
deleted file mode 100644
index acdf682430..0000000000
--- a/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From dcc9f51cbd4ed622cfb0f9b1c141eb2ffe3b12f1 Mon Sep 17 00:00:00 2001
-From: Quanah Gibson-Mount <quanah@symas.com>
-Date: Tue, 18 Feb 2020 19:05:12 +0000
-Subject: [PATCH] Fix #587
-
-Off by one error in common.c, CVE-2019-19906.
-
-Thanks to Stephan Zeisberg for reporting
----
- lib/common.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/common.c b/lib/common.c
-index bc3bf1df..9969d6aa 100644
---- a/lib/common.c
-+++ b/lib/common.c
-@@ -190,7 +190,7 @@ int _sasl_add_string(char **out, size_t *alloclen,
- 
-   if (add==NULL) add = "(null)";
- 
--  addlen=strlen(add); /* only compute once */
-+  addlen=strlen(add)+1; /* only compute once */
-   if (_buf_alloc(out, alloclen, (*outlen)+addlen)!=SASL_OK)
-     return SASL_NOMEM;
- 
diff --git a/gnu/packages/patches/gash-utils-ls-test.patch b/gnu/packages/patches/gash-utils-ls-test.patch
deleted file mode 100644
index e1dfb9c23b..0000000000
--- a/gnu/packages/patches/gash-utils-ls-test.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-'ls.scm' monkey-patches (ice-9 getopt-long) to allow it to recognize '-1'
-as a valid option.  Unfortunately, monkey patching no longer works with
-Guile 3.0 due to inlining, so change the test to make do without '-1'.
-
-diff --git a/tests/core-utils.org b/tests/core-utils.org
-index d35ede8..22718e3 100644
---- a/tests/core-utils.org
-+++ b/tests/core-utils.org
-@@ -93,14 +93,11 @@
- * ls
- :script:
- #+begin_src sh
--  ls -1 tests/data/star
-+  ls tests/data/star
- #+end_src
- :stdout:
- #+begin_example
--  0
--  1
--  2
--  3
-+  0  1  2  3                                                                    
- #+end_example
- 
- * test-file
diff --git a/gnu/packages/patches/gcc-10-tree-sra-union-handling.patch b/gnu/packages/patches/gcc-10-tree-sra-union-handling.patch
new file mode 100644
index 0000000000..aae5fc9f72
--- /dev/null
+++ b/gnu/packages/patches/gcc-10-tree-sra-union-handling.patch
@@ -0,0 +1,33 @@
+Fix a regression in GCC 10/11/12 where some union structures
+could get miscompiled when optimizations are enabled:
+
+  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105860
+
+Taken from upstream:
+
+  https://gcc.gnu.org/g:16afe2e2862f3dd93c711d7f8d436dee23c6c34d
+
+diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
+index 09d951a261b..420329f63f6 100644
+--- a/gcc/tree-sra.c
++++ b/gcc/tree-sra.c
+@@ -1647,7 +1647,18 @@ build_ref_for_offset (location_t loc, tree base, poly_int64 offset,
+ static tree
+ build_reconstructed_reference (location_t, tree base, struct access *model)
+ {
+-  tree expr = model->expr, prev_expr = NULL;
++  tree expr = model->expr;
++  /* We have to make sure to start just below the outermost union.  */
++  tree start_expr = expr;
++  while (handled_component_p (expr))
++    {
++      if (TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == UNION_TYPE)
++	start_expr = expr;
++      expr = TREE_OPERAND (expr, 0);
++    }
++
++  expr = start_expr;
++  tree prev_expr = NULL_TREE;
+   while (!types_compatible_p (TREE_TYPE (expr), TREE_TYPE (base)))
+     {
+       if (!handled_component_p (expr))
diff --git a/gnu/packages/patches/gettext-libunicode-update.patch b/gnu/packages/patches/gettext-libunicode-update.patch
new file mode 100644
index 0000000000..2a67f4803a
--- /dev/null
+++ b/gnu/packages/patches/gettext-libunicode-update.patch
@@ -0,0 +1,99 @@
+https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commit;h=56dc658db752c2894861ee574866d507f12a17f8
+Due to the encoding it needs to be retrieved from a git clone.
+
+commit 56dc658db752c2894861ee574866d507f12a17f8
+Author: Bruno Haible <bruno@clisp.org>
+Date:   Sun Jan 2 15:43:41 2022 +0100
+
+    Update after gnulib changed.
+    
+    * gettext-tools/tests/msgcat-17: Update test for changed libunistring line
+    breaking behaviour.
+    * gettext-tools/tests/msgfilter-sr-latin-1: Likewise.
+    * gettext-tools/tests/msgmerge-11: Likewise.
+    * gettext-tools/tests/xgettext-python-1: Likewise.
+
+diff --git a/gettext-tools/tests/msgcat-17 b/gettext-tools/tests/msgcat-17
+index 8fecc4039..c4aa220b9 100755
+--- a/gettext-tools/tests/msgcat-17
++++ b/gettext-tools/tests/msgcat-17
+@@ -39,9 +39,9 @@ msgstr ""
+ #, c-format
+ msgid "write error of a big result on a too small disk% s% s"
+ msgstr ""
+-"Fehler beim Schreiben eines großen Ergebnisses auf eine zu kleine Platte% s"
+-"% smit der jederzeitigen Möglichkeit eines Fehlers in jedem Moment und an "
+-"jeder Stelle"
++"Fehler beim Schreiben eines großen Ergebnisses auf eine zu kleine "
++"Platte% s% smit der jederzeitigen Möglichkeit eines Fehlers in jedem Moment "
++"und an jeder Stelle"
+ EOF
+ 
+ : ${DIFF=diff}
+diff --git a/gettext-tools/tests/msgfilter-sr-latin-1 b/gettext-tools/tests/msgfilter-sr-latin-1
+index c1cc97875..29e68c04f 100755
+--- a/gettext-tools/tests/msgfilter-sr-latin-1
++++ b/gettext-tools/tests/msgfilter-sr-latin-1
+@@ -20,8 +20,8 @@ msgstr ""
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=CP1251\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :  (n%10>=2 && n"
+-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
++"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :  (n%10>=2 && "
++"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+ 
+ #: ../gettext-tools/lib/closeout.c:64
+ msgid "write error"
+@@ -332,8 +332,8 @@ msgstr ""
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :  (n%10>=2 && n"
+-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
++"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :  (n%10>=2 && "
++"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+ 
+ #: ../gettext-tools/lib/closeout.c:64
+ msgid "write error"
+diff --git a/gettext-tools/tests/msgmerge-11 b/gettext-tools/tests/msgmerge-11
+index ed49db95a..888855940 100755
+--- a/gettext-tools/tests/msgmerge-11
++++ b/gettext-tools/tests/msgmerge-11
+@@ -19,8 +19,8 @@ msgstr ""
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=ISO-8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+-"%100==4 ? 2 : 3);\n"
++"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
++"n%100==4 ? 2 : 3);\n"
+ 
+ #:foobar.c:29
+ #, c-format
+@@ -72,8 +72,8 @@ msgstr ""
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=ISO-8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+-"%100==4 ? 2 : 3);\n"
++"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
++"n%100==4 ? 2 : 3);\n"
+ 
+ #: foobar.c:32
+ #, fuzzy, c-format
+diff --git a/gettext-tools/tests/xgettext-python-1 b/gettext-tools/tests/xgettext-python-1
+index 4901c71e3..9695abda4 100755
+--- a/gettext-tools/tests/xgettext-python-1
++++ b/gettext-tools/tests/xgettext-python-1
+@@ -61,8 +61,8 @@ msgstr ""
+ #. interpret_ansic = false, interpret_unicode = false
+ msgid ""
+ "abc\\\n"
+-"\\\\def\\'ghi\\\"jkl\\a\\b\\f\\n\\r\\t\\v x\\040x\\x7ey"
+-"\\u0142\\U00010123\\N{LATIN SMALL LETTER Z}"
++"\\\\def\\'ghi\\\"jkl\\a\\b\\f\\n\\r\\t\\v "
++"x\\040x\\x7ey\\u0142\\U00010123\\N{LATIN SMALL LETTER Z}"
+ msgstr ""
+ 
+ #. interpret_ansic = true, interpret_unicode = true
diff --git a/gnu/packages/patches/ghc-testsuite-grep-compat.patch b/gnu/packages/patches/ghc-testsuite-grep-compat.patch
new file mode 100644
index 0000000000..a2bd5fcec4
--- /dev/null
+++ b/gnu/packages/patches/ghc-testsuite-grep-compat.patch
@@ -0,0 +1,39 @@
+Remove stray escapes to avoid warnings from grep 3.8 which breaks
+expected test output.
+
+diff --git a/testsuite/tests/hsc2hs/Makefile b/testsuite/tests/hsc2hs/Makefile
+--- a/testsuite/tests/hsc2hs/Makefile
++++ b/testsuite/tests/hsc2hs/Makefile
+@@ -47,5 +47,5 @@ T12504:
+ ifeq "$(WINDOWS)" "YES"
+ 	grep '{-# LINE 1 \"T12504\\\\path\\\\to\\\\$@\.hsc\" #-}' T12504/path/to/$@.hs
+ else
+-	grep '{-# LINE 1 \"T12504/path/to/$@\.hsc\" #-}' T12504/path/to/$@.hs
++	grep '{-# LINE 1 "T12504/path/to/$@\.hsc" #-}' T12504/path/to/$@.hs
+ endif
+diff --git a/testsuite/tests/numeric/should_run/T7014.primops b/testsuite/tests/numeric/should_run/T7014.primops
+--- a/testsuite/tests/numeric/should_run/T7014.primops
++++ b/testsuite/tests/numeric/should_run/T7014.primops
+@@ -1,8 +1,8 @@
+ and#
+ or#
+ uncheckedShift.*#
+-\+#
+-\-#
+++#
++-#
+ \*#
+ quotInt#
+ remInt#
+diff --git a/testsuite/tests/simplCore/should_compile/Makefile b/testsuite/tests/simplCore/should_compile/Makefile
+--- a/testsuite/tests/simplCore/should_compile/Makefile
++++ b/testsuite/tests/simplCore/should_compile/Makefile
+@@ -226,7 +226,7 @@ str-rules:
+ # g should have been collapsed into one defininition by CSE.
+ .PHONY: T13340
+ T13340:
+-	'$(TEST_HC)' $(TEST_HC_OPTS) -c -O T13340.hs -ddump-simpl -dsuppress-all | grep -c '\+#'
++	'$(TEST_HC)' $(TEST_HC_OPTS) -c -O T13340.hs -ddump-simpl -dsuppress-all | grep -c '+#'
+ 
+ 
+ # We expect to see all dictionaries specialized away.
diff --git a/gnu/packages/patches/ghostscript-no-header-creationdate.patch b/gnu/packages/patches/ghostscript-no-header-creationdate.patch
index b19f3ab5d9..493693b78d 100644
--- a/gnu/packages/patches/ghostscript-no-header-creationdate.patch
+++ b/gnu/packages/patches/ghostscript-no-header-creationdate.patch
@@ -6,11 +6,11 @@ not write out the "/ID" field (if that's permissible).
 Upstream does not want to do this.
 
 See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
-diff --git a/orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c b/bb/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
-index 0fb067e..b342e2c 100644
---- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
-+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
-@@ -305,6 +305,9 @@ pdf_initialize_ids(gx_device_pdf * pdev)
+diff --git a/devices/vector/gdevpdf.c b/devices/vector/gdevpdf.c
+index cb268f62e..c5abefde2 100644
+--- a/devices/vector/gdevpdf.c
++++ b/devices/vector/gdevpdf.c
+@@ -425,6 +425,9 @@ pdf_initialize_ids(gx_device_pdf * pdev)
       * date and time, rather than (for example) %%CreationDate from the
       * PostScript file.  We think this is wrong, but we do the same.
       */
@@ -20,9 +20,11 @@ index 0fb067e..b342e2c 100644
      {
          struct tm tms;
          time_t t;
---- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c
-+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c
-@@ -692,6 +692,9 @@
+diff --git a/devices/vector/gdevpdfe.c b/devices/vector/gdevpdfe.c
+index ec011d8ba..f083f1e93 100644
+--- a/devices/vector/gdevpdfe.c
++++ b/devices/vector/gdevpdfe.c
+@@ -696,6 +696,9 @@ pdf_write_document_metadata(gx_device_pdf *pdev, const byte digest[6])
              pdf_xml_attribute_name(s, "xmlns:xmp");
              pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/");
              pdf_xml_tag_end(s);
@@ -32,7 +34,7 @@ index 0fb067e..b342e2c 100644
              {
                  pdf_xml_tag_open_beg(s, "xmp:ModifyDate");
                  pdf_xml_tag_end(s);
-@@ -700,6 +701,9 @@
+@@ -704,6 +707,9 @@ pdf_write_document_metadata(gx_device_pdf *pdev, const byte digest[6])
                  pdf_xml_tag_close(s, "xmp:ModifyDate");
                  pdf_xml_newline(s);
              }
diff --git a/gnu/packages/patches/ghostscript-no-header-id.patch b/gnu/packages/patches/ghostscript-no-header-id.patch
index 45fc95fd6e..ef518b0fb2 100644
--- a/gnu/packages/patches/ghostscript-no-header-id.patch
+++ b/gnu/packages/patches/ghostscript-no-header-id.patch
@@ -6,38 +6,39 @@ not write out the "/ID" field (if that's permissible).
 Upstream does not want to do this.
 
 See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
-diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c
---- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c	2017-07-09 23:30:28.960479189 +0200
-+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c	2017-07-09 23:34:34.306524488 +0200
-@@ -1810,8 +1810,11 @@
+diff --git a/devices/vector/gdevpdf.c b/devices/vector/gdevpdf.c
+index c5abefde2..3859fc088 100644
+--- a/devices/vector/gdevpdf.c
++++ b/devices/vector/gdevpdf.c
+@@ -1909,8 +1909,11 @@ static int pdf_linearise(gx_device_pdf *pdev, pdf_linearisation_t *linear_params
       * +1 for the linearisation dict and +1 for the primary hint stream.
       */
      linear_params->FirsttrailerOffset = gp_ftell(linear_params->Lin_File.file);
--    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n        \n",
+-    gs_snprintf(LDict, sizeof(LDict), "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n        \n",
 -        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, 0);
-+    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
++    gs_snprintf(LDict, sizeof(LDict), "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
 +        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber);
 +    if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */
-+        gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID);
-+    gs_sprintf(LDict, "/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n        \n", 0);
++        gs_snprintf(LDict, sizeof(LDict), "/ID[%s%s]", fileID, fileID);
++    gs_snprintf(LDict, sizeof(LDict), "/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n        \n", 0);
      gp_fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file);
  
      /* Write document catalog (Part 4) */
-@@ -2346,8 +2349,11 @@
+@@ -2445,8 +2448,11 @@ static int pdf_linearise(gx_device_pdf *pdev, pdf_linearisation_t *linear_params
      if (code != 0)
          return_error(gs_error_ioerror);
  
--    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n",
+-    gs_snprintf(LDict, sizeof(LDict), "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n",
 -        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, mainxref);
-+    gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
++    gs_snprintf(LDict, sizeof(LDict), "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R",
 +        linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber);
 +    if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */
-+        gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID);
-+    gs_sprintf(LDict, "/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n", mainxref);
++        gs_snprintf(LDict, sizeof(LDict), "/ID[%s%s]", fileID, fileID);
++    gs_snprintf(LDict, sizeof(LDict), "/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n", mainxref);
      gp_fwrite(LDict, strlen(LDict), 1, linear_params->sfile);
  
      code = gp_fseek(linear_params->sfile, pdev->ResourceUsage[HintStreamObj].LinearisedOffset, SEEK_SET);
-@@ -3012,10 +3018,12 @@
+@@ -3139,10 +3145,12 @@ pdf_close(gx_device * dev)
              stream_puts(s, "trailer\n");
              pprintld3(s, "<< /Size %ld /Root %ld 0 R /Info %ld 0 R\n",
                    pdev->next_id, Catalog_id, Info_id);
diff --git a/gnu/packages/patches/ghostscript-no-header-uuid.patch b/gnu/packages/patches/ghostscript-no-header-uuid.patch
index f4b55764c8..b277a4bc2e 100644
--- a/gnu/packages/patches/ghostscript-no-header-uuid.patch
+++ b/gnu/packages/patches/ghostscript-no-header-uuid.patch
@@ -8,10 +8,11 @@ field value as "".
 Upstream does not want to do this.
 
 See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
-diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c
---- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c	2017-07-09 23:30:28.960479189 +0200
-+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c	2017-07-10 01:04:12.252478276 +0200
-@@ -620,7 +620,7 @@
+diff --git a/devices/vector/gdevpdfe.c b/devices/vector/gdevpdfe.c
+index f083f1e93..a19c64ac0 100644
+--- a/devices/vector/gdevpdfe.c
++++ b/devices/vector/gdevpdfe.c
+@@ -624,7 +624,7 @@ pdf_write_document_metadata(gx_device_pdf *pdev, const byte digest[6])
          return code;
  
      /* PDF/A XMP reference recommends setting UUID to empty. If not empty must be a URI */
@@ -20,7 +21,7 @@ diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscrip
          instance_uuid[0] = 0x00;
  
      cre_date_time_len = pdf_get_docinfo_item(pdev, "/CreationDate", cre_date_time, sizeof(cre_date_time));
-@@ -720,14 +720,17 @@
+@@ -730,14 +730,17 @@ pdf_write_document_metadata(gx_device_pdf *pdev, const byte digest[6])
              pdf_xml_tag_close(s, "rdf:Description");
              pdf_xml_newline(s);
  
diff --git a/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch b/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch
index e31f99a1ce..b02215550d 100644
--- a/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch
+++ b/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch
@@ -67,8 +67,8 @@ index fcd79fd554..1dd02aa449 100644
  
 diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c
 index 9d8a9ea8ae..3430582c09 100644
---- a/sysdeps/pthread/timer_create.c
-+++ b/sysdeps/pthread/timer_create.c
+--- a/rt/timer_create.c
++++ b/rt/timer_create.c
 @@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
        return -1;
      }
diff --git a/gnu/packages/patches/gnupg-CVE-2022-34903.patch b/gnu/packages/patches/gnupg-CVE-2022-34903.patch
deleted file mode 100644
index 19c055282a..0000000000
--- a/gnu/packages/patches/gnupg-CVE-2022-34903.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-https://dev.gnupg.org/T6027
-https://www.openwall.com/lists/oss-security/2022/06/30/1
-https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=34c649b3601383cd11dbc76221747ec16fd68e1b
-
-From 34c649b3601383cd11dbc76221747ec16fd68e1b Mon Sep 17 00:00:00 2001
-From: Werner Koch <wk@gnupg.org>
-Date: Tue, 14 Jun 2022 11:33:27 +0200
-Subject: [PATCH] g10: Fix garbled status messages in NOTATION_DATA
-
-* g10/cpr.c (write_status_text_and_buffer): Fix off-by-one
---
-
-Depending on the escaping and line wrapping the computed remaining
-buffer length could be wrong.  Fixed by always using a break to
-terminate the escape detection loop.  Might have happened for all
-status lines which may wrap.
-
-GnuPG-bug-id: T6027
----
- g10/cpr.c | 13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
-diff --git a/g10/cpr.c b/g10/cpr.c
-index 9bfdd3c34..fa8005d6f 100644
---- a/g10/cpr.c
-+++ b/g10/cpr.c
-@@ -372,20 +372,15 @@ write_status_text_and_buffer (int no, const char *string,
-             }
-           first = 0;
-         }
--      for (esc=0, s=buffer, n=len; n && !esc; s++, n--)
-+      for (esc=0, s=buffer, n=len; n; s++, n--)
-         {
-           if (*s == '%' || *(const byte*)s <= lower_limit
-               || *(const byte*)s == 127 )
-             esc = 1;
-           if (wrap && ++count > wrap)
--            {
--              dowrap=1;
--              break;
--            }
--        }
--      if (esc)
--        {
--          s--; n++;
-+            dowrap=1;
-+          if (esc || dowrap)
-+            break;
-         }
-       if (s != buffer)
-         es_fwrite (buffer, s-buffer, 1, statusfp);
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/gnutls-guile-eintr-eagain.patch b/gnu/packages/patches/gnutls-guile-eintr-eagain.patch
deleted file mode 100644
index e04c945158..0000000000
--- a/gnu/packages/patches/gnutls-guile-eintr-eagain.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Fixes <https://issues.guix.gnu.org/47867>.
-
-This fix was merged upstream
-in <https://gitlab.com/gnutls/gnutls/-/merge_requests/1417> and will
-be in GnuTLS 3.7.3.  Upstream commit:
-
-commit 110e2172dbef1fbdf7399dab1e80780847b61c0c
-Author: Ludovic Courtès <ludo@gnu.org>
-Date:   Sat Apr 24 22:02:14 2021 +0200
-
-    guile: Writes to record ports handle EAGAIN/EINTR transparently.
-
-diff --git a/guile/src/core.c b/guile/src/core.c
-index a13670fc7b..0926dc8a97 100644
---- a/guile/src/core.c
-+++ b/guile/src/core.c
-@@ -985,7 +985,10 @@ write_to_session_record_port (SCM port, const void *data, size_t size)
-       c_result = gnutls_record_send (c_session, (char *) data + c_sent,
-                                      size - c_sent);
-       if (EXPECT_FALSE (c_result < 0))
--        scm_gnutls_error (c_result, FUNC_NAME);
-+	{
-+	  if (c_result != GNUTLS_E_AGAIN && c_result != GNUTLS_E_INTERRUPTED)
-+	    scm_gnutls_error (c_result, FUNC_NAME);
-+	}
-       else
-         c_sent += c_result;
-     }
-@@ -1069,7 +1072,8 @@ read_from_session_record_port (SCM port, SCM dst, size_t start, size_t count)
- #undef FUNC_NAME
- 
- /* Return the file descriptor that backs PORT.  This function is called upon a
--   blocking read--i.e., 'read_from_session_record_port' returned -1.  */
-+   blocking read--i.e., 'read_from_session_record_port' or
-+   'write_to_session_record_port' returned -1.  */
- static int
- session_record_port_fd (SCM port)
- {
-@@ -1097,7 +1101,16 @@ write_to_session_record_port (SCM port, SCM src, size_t start, size_t count)
-   c_session = scm_to_gnutls_session (session, 1, FUNC_NAME);
-   data = (char *) SCM_BYTEVECTOR_CONTENTS (src) + start;
- 
--  result = gnutls_record_send (c_session, data, count);
-+  do
-+    result = gnutls_record_send (c_session, data, count);
-+  while (result == GNUTLS_E_INTERRUPTED
-+	 || (result == GNUTLS_E_AGAIN
-+	     && !SCM_GNUTLS_SESSION_TRANSPORT_IS_FD (c_session)));
-+
-+  if (result == GNUTLS_E_AGAIN
-+      && SCM_GNUTLS_SESSION_TRANSPORT_IS_FD (c_session))
-+    /* Tell Guile that reading would block.  */
-+    return (size_t) -1;
- 
-   if (EXPECT_FALSE (result < 0))
-     scm_gnutls_error (result, FUNC_NAME);
diff --git a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
index 956fa617c3..8bb86467c0 100644
--- a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
+++ b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
@@ -1,11 +1,14 @@
-# Names of libraries included in typelib files are opened by dlopen.  Here we 
-# add the full path.
-#
-# This patch was provided by Luca Bruno <lucabru@src.gnome.org>  for 
-# 'gobject-introspection' 1.40.0 in Nix.
-#
-# It has since been updated to work with newer versions of
-# gobject-introspection.
+Names of libraries included in typelib files are opened by dlopen.
+Here we add the full path.
+
+This patch was provided by Luca Bruno <lucabru@src.gnome.org>,
+for 'gobject-introspection' 1.40.0 in Nix.
+
+It has since been updated to work with newer versions of
+gobject-introspection.
+
+diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
+index 1d39ab84..e12ed24e 100644
 --- a/giscanner/scannermain.py
 +++ b/giscanner/scannermain.py
 @@ -95,6 +95,39 @@ def get_windows_option_group(parser):
@@ -48,10 +51,10 @@
  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")
+@@ -220,6 +253,10 @@ match the namespace prefix.""")
+     parser.add_option("", "--compiler",
+                       action="store", dest="compiler", default=None,
+                       help="the C compiler to use internally")
 +    parser.add_option("", "--fallback-library-path",
 +                      action="store", dest="fallback_libpath",
 +                      default=_get_default_fallback_libpath(),
@@ -59,6 +62,8 @@
  
      group = get_preprocessor_option_group(parser)
      parser.add_option_group(group)
+diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
+index 9f8ab5df..8aa37c99 100644
 --- a/giscanner/shlibs.py
 +++ b/giscanner/shlibs.py
 @@ -57,6 +57,14 @@ def _ldd_library_pattern(library_name):
@@ -76,7 +81,7 @@
  # 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):
+@@ -108,7 +116,8 @@ def _resolve_non_libtool(options, binary, libraries):
              output = output.decode("utf-8", "replace")
  
          shlibs = resolve_from_ldd_output(libraries, output)
@@ -86,7 +91,7 @@
  
  
  def sanitize_shlib_path(lib):
-@@ -115,19 +122,18 @@ def sanitize_shlib_path(lib):
+@@ -117,19 +126,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
@@ -111,7 +116,7 @@
      if len(patterns) == 0:
          return []
  
-@@ -139,8 +145,12 @@ def resolve_from_ldd_output(libraries, output):
+@@ -141,8 +149,12 @@ def resolve_from_ldd_output(libraries, output):
          if line.endswith(':'):
              continue
          for word in line.split():
@@ -126,10 +131,11 @@
                  if m:
                      del patterns[library]
                      shlibs.append(m.group())
-
+diff --git a/giscanner/utils.py b/giscanner/utils.py
+index 31c7ea48..630002a8 100644
 --- a/giscanner/utils.py
 +++ b/giscanner/utils.py
-@@ -111,17 +111,11 @@ def extract_libtool_shlib(la_file):
+@@ -114,16 +114,11 @@ def extract_libtool_shlib(la_file):
      if dlname is None:
          return None
  
@@ -141,8 +147,7 @@
 -        if libdir is None:
 -            return dlbasename
 -        return libdir + '/' + dlbasename
--    # From the comments in extract_libtool(), older libtools had
--    # a path rather than the raw dlname
+-    # Older libtools had a path rather than the raw dlname
 -    return os.path.basename(dlname)
 +    dlbasename = os.path.basename(dlname)
 +    libdir = _extract_libdir_field(la_file)
@@ -151,10 +156,12 @@
 +    return libdir + '/' + dlbasename
  
  
- def extract_libtool(la_file):
+ # Returns arguments for invoking libtool, if applicable, otherwise None
+diff --git a/tests/scanner/test_shlibs.py b/tests/scanner/test_shlibs.py
+index a8337c60..7f123103 100644
 --- a/tests/scanner/test_shlibs.py
 +++ b/tests/scanner/test_shlibs.py
-@@ -40,6 +64,7 @@ class TestLddParser(unittest.TestCase):
+@@ -40,7 +40,8 @@ class TestLddParser(unittest.TestCase):
  
          self.assertEqual(
              sanitize_shlib_path('/foo/bar'),
@@ -163,4 +170,4 @@
 +            '/foo/bar')
  
      def test_unresolved_library(self):
-output = ''
+         output = ''
diff --git a/gnu/packages/patches/gobject-introspection-cc.patch b/gnu/packages/patches/gobject-introspection-cc.patch
index 6a86b56b44..d3b1df82af 100644
--- a/gnu/packages/patches/gobject-introspection-cc.patch
+++ b/gnu/packages/patches/gobject-introspection-cc.patch
@@ -1,12 +1,13 @@
 Use gcc as the default C compiler if CC is not set.
 
-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 @@
+diff --git a/giscanner/__init__.py b/giscanner/__init__.py
+index 7c2f365a..607fe341 100644
+--- a/giscanner/__init__.py
++++ b/giscanner/__init__.py
+@@ -21,6 +21,8 @@ import os
  builddir = os.environ.get('UNINSTALLED_INTROSPECTION_BUILDDIR')
  if builddir is not None:
-     __path__.append(os.path.join(builddir, 'giscanner'))
+     __path__.append(os.path.join(builddir, 'giscanner'))  # type: ignore  # mypy issue #1422
 +if not 'CC' in os.environ:
 +    os.environ['CC'] = 'gcc'
  try:
diff --git a/gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch b/gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch
new file mode 100644
index 0000000000..deb305bd96
--- /dev/null
+++ b/gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch
@@ -0,0 +1,36 @@
+Avoid ordered comparison of pointer with integer to prevent compile error
+with GCC 11.
+
+diff --git a/src/share/vm/opto/lcm.cpp b/src/share/vm/opto/lcm.cpp
+--- a/src/share/vm/opto/lcm.cpp
++++ b/src/share/vm/opto/lcm.cpp
+@@ -60,7 +60,7 @@
+ // Check whether val is not-null-decoded compressed oop,
+ // i.e. will grab into the base of the heap if it represents NULL.
+ static bool accesses_heap_base_zone(Node *val) {
+-  if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops.
++  if (Universe::narrow_oop_base() != NULL) { // Implies UseCompressedOops.
+     if (val && val->is_Mach()) {
+       if (val->as_Mach()->ideal_Opcode() == Op_DecodeN) {
+         // This assumes all Decodes with TypePtr::NotNull are matched to nodes that
+diff --git a/src/share/vm/runtime/virtualspace.cpp b/src/share/vm/runtime/virtualspace.cpp
+--- a/src/share/vm/runtime/virtualspace.cpp
++++ b/src/share/vm/runtime/virtualspace.cpp
+@@ -527,7 +527,7 @@ ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment,
+                 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
+                  Universe::narrow_oop_use_implicit_null_checks()) ?
+                   lcm(os::vm_page_size(), alignment) : 0) {
+-  if (base() > 0) {
++  if (base() != NULL) {
+     MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap);
+   }
+ 
+@@ -546,7 +546,7 @@ ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size,
+                 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
+                  Universe::narrow_oop_use_implicit_null_checks()) ?
+                   lcm(os::vm_page_size(), prefix_align) : 0) {
+-  if (base() > 0) {
++  if (base() != NULL) {
+     MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap);
+   }
+ 
diff --git a/gnu/packages/patches/inkscape-poppler-compat.patch b/gnu/packages/patches/inkscape-poppler-compat.patch
new file mode 100644
index 0000000000..cb7d1c8eb3
--- /dev/null
+++ b/gnu/packages/patches/inkscape-poppler-compat.patch
@@ -0,0 +1,45 @@
+Fix build with Poppler 22.9.0.
+
+Taken from upstream:
+
+  https://gitlab.com/inkscape/inkscape/-/commit/fb00794923d19cfbb2ca4adca3ae8971553a06be
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
+index cca1e840966c7940a1af472025535042b07e3e0f..80d64c9b866d5d3dd095636a9a02571b89061af1 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -697,7 +697,11 @@ void PdfParser::opSetDash(Object args[], int /*numArgs*/)
+       _POPPLER_FREE(obj);
+     }
+   }
++#if POPPLER_CHECK_VERSION(22, 9, 0)
++  state->setLineDash(std::vector<double> (dash, dash + length), args[1].getNum());
++#else
+   state->setLineDash(dash, length, args[1].getNum());
++#endif
+   builder->updateStyle(state);
+ }
+ 
+diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
+index 12f71dd9214b95dbad6fdf7642a96cdd57f2c64a..9fc56fe63c2feee986ad1ff5018e679a0bacb665 100644
+--- a/src/extension/internal/pdfinput/svg-builder.cpp
++++ b/src/extension/internal/pdfinput/svg-builder.cpp
+@@ -389,10 +389,17 @@ void SvgBuilder::_setStrokeStyle(SPCSSAttr *css, GfxState *state) {
+     sp_repr_css_set_property(css, "stroke-miterlimit", os_ml.str().c_str());
+ 
+     // Line dash
+-    double *dash_pattern;
+     int dash_length;
+     double dash_start;
++#if POPPLER_CHECK_VERSION(22, 9, 0)
++    const double *dash_pattern;
++    const std::vector<double> &dash = state->getLineDash(&dash_start);
++    dash_pattern = dash.data();
++    dash_length = dash.size();
++#else
++    double *dash_pattern;
+     state->getLineDash(&dash_pattern, &dash_length, &dash_start);
++#endif
+     if ( dash_length > 0 ) {
+         Inkscape::CSSOStringStream os_array;
+         for ( int i = 0 ; i < dash_length ; i++ ) {
diff --git a/gnu/packages/patches/jsoncpp-pkg-config-version.patch b/gnu/packages/patches/jsoncpp-pkg-config-version.patch
deleted file mode 100644
index 3983cc300c..0000000000
--- a/gnu/packages/patches/jsoncpp-pkg-config-version.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Taken from upstream: https://github.com/open-source-parsers/jsoncpp/issues/1235.
-
-From ac2870298ed5b5a96a688d9df07461b31f83e906 Mon Sep 17 00:00:00 2001
-From: Derick Vigne <derickvigne@me.com>
-Date: Tue, 26 Jan 2021 14:59:12 -0500
-Subject: [PATCH] Fixed pkg-config Version
-
----
- pkg-config/jsoncpp.pc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pkg-config/jsoncpp.pc.in b/pkg-config/jsoncpp.pc.in
-index 632a377f5..2a2221069 100644
---- a/pkg-config/jsoncpp.pc.in
-+++ b/pkg-config/jsoncpp.pc.in
-@@ -5,7 +5,7 @@ includedir=@includedir_for_pc_file@
- 
- Name: jsoncpp
- Description: A C++ library for interacting with JSON
--Version: @JSONCPP_VERSION@
-+Version: @PROJECT_VERSION@
- URL: https://github.com/open-source-parsers/jsoncpp
- Libs: -L${libdir} -ljsoncpp
- Cflags: -I${includedir}
diff --git a/gnu/packages/patches/libffi-3.3-powerpc-fixes.patch b/gnu/packages/patches/libffi-3.3-powerpc-fixes.patch
deleted file mode 100644
index 971ed26180..0000000000
--- a/gnu/packages/patches/libffi-3.3-powerpc-fixes.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-This is a combination of the following 4 commits:
-https://github.com/libffi/libffi/commit/01a75ed76ea7e57f1b7a5c183e2b1e890e6aa0fd.patch
-https://github.com/libffi/libffi/commit/6663047f56c2932a6b10a790f4ac6666dd181326.patch
-https://github.com/libffi/libffi/commit/e50b9ef8b910fa642ef158f6642e60d54d7ad740.patch
-https://github.com/libffi/libffi/commit/4d6d2866ae43e55325e8ee96561221804602cd7a.patch
-
-From 2dbfa92a95e3bacabca431b89d2a5925e48a0e40 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Thu, 28 Nov 2019 12:42:41 +0000
-
-powerpc: fix build failure on power7 and older (#532)
-
-Build failure looks as:
-```
-libtool: compile:  powerpc-unknown-linux-gnu-gcc \
-    -O2 -mcpu=powerpc -mtune=powerpc -pipe ... -c src/powerpc/ffi.c ...
-In file included from src/powerpc/ffi.c:33:
-src/powerpc/ffi_powerpc.h:65:9: error: '__int128' is not supported on this target
-   65 | typedef __int128 float128;
-      |         ^~~~~~~~
-```
-
-The fix avoids using __int128 in favour of aligned char[16].
-
-Closes: https://github.com/libffi/libffi/issues/531
-Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-
-Address platforms with no __int128.
-
-powerpc64: Use memcpy to help platforms with no __int128. (#534)
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Update powerpc sysv assembly for ffi_powerpc.h changes (#541)
-
-Some of the flag bits were moved when adding powerpc64 vector support.
-
-Fixes #536
----
- src/powerpc/ffi_linux64.c | 12 ++++++------
- src/powerpc/ffi_powerpc.h |  2 +-
- src/powerpc/sysv.S        | 12 +++++-------
- 3 files changed, 12 insertions(+), 14 deletions(-)
-
-diff --git a/src/powerpc/ffi_linux64.c b/src/powerpc/ffi_linux64.c
-index de0d033..4d50878 100644
---- a/src/powerpc/ffi_linux64.c
-+++ b/src/powerpc/ffi_linux64.c
-@@ -547,9 +547,9 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
-               if (next_arg.ul == gpr_end.ul)
-                 next_arg.ul = rest.ul;
-               if (vecarg_count < NUM_VEC_ARG_REGISTERS64 && i < nfixedargs)
--                *vec_base.f128++ = **p_argv.f128;
-+		memcpy (vec_base.f128++, *p_argv.f128, sizeof (float128));
-               else
--                *next_arg.f128 = **p_argv.f128;
-+		memcpy (next_arg.f128, *p_argv.f128, sizeof (float128));
-               if (++next_arg.f128 == gpr_end.f128)
-                 next_arg.f128 = rest.f128;
-               vecarg_count++;
-@@ -680,9 +680,9 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
-                     {
-                       if (vecarg_count < NUM_VEC_ARG_REGISTERS64
-                           && i < nfixedargs)
--                        *vec_base.f128++ = *arg.f128++;
-+		        memcpy (vec_base.f128++, arg.f128, sizeof (float128));
-                       else
--                        *next_arg.f128 = *arg.f128++;
-+		        memcpy (next_arg.f128, arg.f128++, sizeof (float128));
-                       if (++next_arg.f128 == gpr_end.f128)
-                         next_arg.f128 = rest.f128;
-                       vecarg_count++;
-@@ -986,9 +986,9 @@ ffi_closure_helper_LINUX64 (ffi_cif *cif,
-                   do
-                     {
-                       if (pvec < end_pvec && i < nfixedargs)
--                        *to.f128 = *pvec++;
-+		        memcpy (to.f128, pvec++, sizeof (float128));
-                       else
--                        *to.f128 = *from.f128;
-+		        memcpy (to.f128, from.f128, sizeof (float128));
-                       to.f128++;
-                       from.f128++;
-                     }
-diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
-index 5ee2a70..8e2f2f0 100644
---- a/src/powerpc/ffi_powerpc.h
-+++ b/src/powerpc/ffi_powerpc.h
-@@ -62,7 +62,7 @@ typedef _Float128 float128;
- #elif defined(__FLOAT128__)
- typedef __float128 float128;
- #else
--typedef __int128 float128;
-+typedef char float128[16] __attribute__((aligned(16)));
- #endif
- 
- void FFI_HIDDEN ffi_closure_SYSV (void);
-diff --git a/src/powerpc/sysv.S b/src/powerpc/sysv.S
-index 1474ce7..df97734 100644
---- a/src/powerpc/sysv.S
-+++ b/src/powerpc/sysv.S
-@@ -104,17 +104,16 @@ ENTRY(ffi_call_SYSV)
- 	bctrl
- 
- 	/* Now, deal with the return value.  */
--	mtcrf	0x01,%r31 /* cr7  */
-+	mtcrf	0x03,%r31 /* cr6-cr7  */
- 	bt-	31,L(small_struct_return_value)
- 	bt-	30,L(done_return_value)
- #ifndef __NO_FPRS__
- 	bt-	29,L(fp_return_value)
- #endif
- 	stw	%r3,0(%r30)
--	bf+	28,L(done_return_value)
-+	bf+	27,L(done_return_value)
- 	stw	%r4,4(%r30)
--	mtcrf	0x02,%r31 /* cr6  */
--	bf	27,L(done_return_value)
-+	bf	26,L(done_return_value)
- 	stw     %r5,8(%r30)
- 	stw	%r6,12(%r30)
- 	/* Fall through...  */
-@@ -145,10 +144,9 @@ L(done_return_value):
- #ifndef __NO_FPRS__
- L(fp_return_value):
- 	.cfi_restore_state
--	bf	28,L(float_return_value)
-+	bf	27,L(float_return_value)
- 	stfd	%f1,0(%r30)
--	mtcrf   0x02,%r31 /* cr6  */
--	bf	27,L(done_return_value)
-+	bf	26,L(done_return_value)
- 	stfd	%f2,8(%r30)
- 	b	L(done_return_value)
- L(float_return_value):
--- 
-2.26.0
-
diff --git a/gnu/packages/patches/libffi-float128-powerpc64le.patch b/gnu/packages/patches/libffi-float128-powerpc64le.patch
deleted file mode 100644
index 4fd32b0102..0000000000
--- a/gnu/packages/patches/libffi-float128-powerpc64le.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From de93adfb6f48100946bba2c3abad2a77a0cfde0b Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Sun, 24 Nov 2019 09:52:01 +0100
-Subject: [PATCH] ffi_powerpc.h: fix build failure with powerpc7
-
-This is a patch pulled down from the following:
-https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch
-
-This issue is being hit on OpenBMC code when pulling the latest
-libffi tag and building on a P8 ppc64le machine. I verified this
-patch fixes the issue we are seeing.
-
-Below is the original commit message:
-
-Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7
-fails on:
-
-In file included from ../src/powerpc/ffi.c:33:0:
-../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target
- typedef _Float128 float128;
-         ^~~~~~~~~
-
-Fix this build failure by checking for __HAVE_FLOAT128 before using
-_Float128, as _Float128 is enabled only on specific conditions, see
-output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h:
-
- /* Defined to 1 if the current compiler invocation provides a
-    floating-point type with the IEEE 754 binary128 format, and this glibc
-    includes corresponding *f128 interfaces for it.  */
- #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
-     && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH
- # define __HAVE_FLOAT128 1
- #else
- # define __HAVE_FLOAT128 0
- #endif
-
-Fixes:
- - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
----
- src/powerpc/ffi_powerpc.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
-index 8e2f2f0e..960a5c42 100644
---- a/src/powerpc/ffi_powerpc.h
-+++ b/src/powerpc/ffi_powerpc.h
-@@ -57,7 +57,7 @@ typedef union
-   double d;
- } ffi_dblfl;
- 
--#if defined(__FLOAT128_TYPE__)
-+#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128)
- typedef _Float128 float128;
- #elif defined(__FLOAT128__)
- typedef __float128 float128;
diff --git a/gnu/packages/patches/libssh2-CVE-2019-17498.patch b/gnu/packages/patches/libssh2-CVE-2019-17498.patch
deleted file mode 100644
index 6f69e562e2..0000000000
--- a/gnu/packages/patches/libssh2-CVE-2019-17498.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-https://github.com/libssh2/libssh2/commit/dedcbd106f8e52d5586b0205bc7677e4c9868f9c.patch
-
-From dedcbd106f8e52d5586b0205bc7677e4c9868f9c Mon Sep 17 00:00:00 2001
-From: Will Cosgrove <will@panic.com>
-Date: Fri, 30 Aug 2019 09:57:38 -0700
-Subject: [PATCH] packet.c: improve message parsing (#402)
-
-* packet.c: improve parsing of packets
-
-file: packet.c
-
-notes:
-Use _libssh2_get_string API in SSH_MSG_DEBUG/SSH_MSG_DISCONNECT. Additional uint32 bounds check in SSH_MSG_GLOBAL_REQUEST.
----
- src/packet.c | 68 ++++++++++++++++++++++------------------------------
- 1 file changed, 29 insertions(+), 39 deletions(-)
-
-diff --git a/src/packet.c b/src/packet.c
-index 38ab62944..2e01bfc5d 100644
---- a/src/packet.c
-+++ b/src/packet.c
-@@ -419,8 +419,8 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
-                     size_t datalen, int macstate)
- {
-     int rc = 0;
--    char *message = NULL;
--    char *language = NULL;
-+    unsigned char *message = NULL;
-+    unsigned char *language = NULL;
-     size_t message_len = 0;
-     size_t language_len = 0;
-     LIBSSH2_CHANNEL *channelp = NULL;
-@@ -472,33 +472,23 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
- 
-         case SSH_MSG_DISCONNECT:
-             if(datalen >= 5) {
--                size_t reason = _libssh2_ntohu32(data + 1);
-+                uint32_t reason = 0;
-+                struct string_buf buf;
-+                buf.data = (unsigned char *)data;
-+                buf.dataptr = buf.data;
-+                buf.len = datalen;
-+                buf.dataptr++; /* advance past type */
- 
--                if(datalen >= 9) {
--                    message_len = _libssh2_ntohu32(data + 5);
-+                _libssh2_get_u32(&buf, &reason);
-+                _libssh2_get_string(&buf, &message, &message_len);
-+                _libssh2_get_string(&buf, &language, &language_len);
- 
--                    if(message_len < datalen-13) {
--                        /* 9 = packet_type(1) + reason(4) + message_len(4) */
--                        message = (char *) data + 9;
--
--                        language_len =
--                            _libssh2_ntohu32(data + 9 + message_len);
--                        language = (char *) data + 9 + message_len + 4;
--
--                        if(language_len > (datalen-13-message_len)) {
--                            /* bad input, clear info */
--                            language = message = NULL;
--                            language_len = message_len = 0;
--                        }
--                    }
--                    else
--                        /* bad size, clear it */
--                        message_len = 0;
--                }
-                 if(session->ssh_msg_disconnect) {
--                    LIBSSH2_DISCONNECT(session, reason, message,
--                                       message_len, language, language_len);
-+                    LIBSSH2_DISCONNECT(session, reason, (const char *)message,
-+                                       message_len, (const char *)language,
-+                                       language_len);
-                 }
-+
-                 _libssh2_debug(session, LIBSSH2_TRACE_TRANS,
-                                "Disconnect(%d): %s(%s)", reason,
-                                message, language);
-@@ -539,24 +529,24 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
-                 int always_display = data[1];
- 
-                 if(datalen >= 6) {
--                    message_len = _libssh2_ntohu32(data + 2);
--
--                    if(message_len <= (datalen - 10)) {
--                        /* 6 = packet_type(1) + display(1) + message_len(4) */
--                        message = (char *) data + 6;
--                        language_len = _libssh2_ntohu32(data + 6 +
--                                                        message_len);
--
--                        if(language_len <= (datalen - 10 - message_len))
--                            language = (char *) data + 10 + message_len;
--                    }
-+                    struct string_buf buf;
-+                    buf.data = (unsigned char *)data;
-+                    buf.dataptr = buf.data;
-+                    buf.len = datalen;
-+                    buf.dataptr += 2; /* advance past type & always display */
-+
-+                    _libssh2_get_string(&buf, &message, &message_len);
-+                    _libssh2_get_string(&buf, &language, &language_len);
-                 }
- 
-                 if(session->ssh_msg_debug) {
--                    LIBSSH2_DEBUG(session, always_display, message,
--                                  message_len, language, language_len);
-+                    LIBSSH2_DEBUG(session, always_display,
-+                                  (const char *)message,
-+                                  message_len, (const char *)language,
-+                                  language_len);
-                 }
-             }
-+
-             /*
-              * _libssh2_debug will actually truncate this for us so
-              * that it's not an inordinate about of data
-@@ -579,7 +569,7 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
-                 uint32_t len = 0;
-                 unsigned char want_reply = 0;
-                 len = _libssh2_ntohu32(data + 1);
--                if(datalen >= (6 + len)) {
-+                if((len <= (UINT_MAX - 6)) && (datalen >= (6 + len))) {
-                     want_reply = data[5 + len];
-                     _libssh2_debug(session,
-                                    LIBSSH2_TRACE_CONN,
diff --git a/gnu/packages/patches/libtool-grep-compat.patch b/gnu/packages/patches/libtool-grep-compat.patch
new file mode 100644
index 0000000000..46e5c6873d
--- /dev/null
+++ b/gnu/packages/patches/libtool-grep-compat.patch
@@ -0,0 +1,51 @@
+Don't escape forward slashes to prevent a warning from grep 3.8.
+
+diff --git a/tests/link-order.at b/tests/link-order.at
+--- a/tests/link-order.at
++++ b/tests/link-order.at
+@@ -99,12 +99,12 @@ aix* | interix*) ;;  # These systems have different path syntax
+   case $hardcode_direct$hardcode_direct_absolute in
+   yesno)
+     AT_CHECK([if $EGREP relinking stderr; then
+-         $EGREP " .*\/new\/lib/libb$shared_ext .*\/old\/lib/libcee$shared_ext" stdout
++         $EGREP " .*/new/lib/libb$shared_ext .*/old/lib/libcee$shared_ext" stdout
+        else :; fi], [0], [ignore], [], [echo "wrong link order"])
+     ;;
+   *)
+     AT_CHECK([if $EGREP relinking stderr; then
+-         $EGREP " -L.*\/new\/lib -lb -L.*\/old\/lib -lcee" stdout
++         $EGREP " -L.*/new/lib -lb -L.*/old/lib -lcee" stdout
+        else :; fi], [0], [ignore], [], [echo "wrong link order"])
+     ;;
+   esac
+diff --git a/tests/testsuite b/tests/testsuite
+--- a/tests/testsuite
++++ b/tests/testsuite
+@@ -20611,11 +20611,11 @@ aix* | interix*) ;;  # These systems have different path syntax
+   yesno)
+     { set +x
+ $as_echo "$at_srcdir/link-order.at:101: if \$EGREP relinking stderr; then
+-         \$EGREP \" .*\\/new\\/lib/libb\$shared_ext .*\\/old\\/lib/libcee\$shared_ext\" stdout
++         \$EGREP \" .*/new/lib/libb\$shared_ext .*/old/lib/libcee\$shared_ext\" stdout
+        else :; fi"
+ at_fn_check_prepare_notrace 'an embedded newline' "link-order.at:101"
+ ( $at_check_trace; if $EGREP relinking stderr; then
+-         $EGREP " .*\/new\/lib/libb$shared_ext .*\/old\/lib/libcee$shared_ext" stdout
++         $EGREP " .*/new/lib/libb$shared_ext .*/old/lib/libcee$shared_ext" stdout
+        else :; fi
+ ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+ at_status=$? at_failed=false
+@@ -20633,11 +20633,11 @@ $at_traceon; }
+   *)
+     { set +x
+ $as_echo "$at_srcdir/link-order.at:106: if \$EGREP relinking stderr; then
+-         \$EGREP \" -L.*\\/new\\/lib -lb -L.*\\/old\\/lib -lcee\" stdout
++         \$EGREP \" -L.*/new\\/lib -lb -L.*/old/lib -lcee\" stdout
+        else :; fi"
+ at_fn_check_prepare_notrace 'an embedded newline' "link-order.at:106"
+ ( $at_check_trace; if $EGREP relinking stderr; then
+-         $EGREP " -L.*\/new\/lib -lb -L.*\/old\/lib -lcee" stdout
++         $EGREP " -L.*/new/lib -lb -L.*/old/lib -lcee" stdout
+        else :; fi
+ ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+ at_status=$? at_failed=false
diff --git a/gnu/packages/patches/libtool-skip-tests2.patch b/gnu/packages/patches/libtool-skip-tests2.patch
index 3f86191b4f..91beaa903e 100644
--- a/gnu/packages/patches/libtool-skip-tests2.patch
+++ b/gnu/packages/patches/libtool-skip-tests2.patch
@@ -16,7 +16,7 @@ Skip the nopic test on ARM, MIPS and RISC-V systems.
 @@ -8741,7 +8741,7 @@
  
  { set +x
- $as_echo "$at_srcdir/demo.at:535: case \$host in
+ $as_echo "$at_srcdir/demo.at:513: case \$host in
 -hppa*|x86_64*|s390*)
 +hppa*|x86_64*|s390*|arm*|mips*|riscv*)
    # These hosts cannot use non-PIC shared libs
@@ -24,7 +24,7 @@ Skip the nopic test on ARM, MIPS and RISC-V systems.
  *-solaris*|*-sunos*)
 @@ -8766,7 +8766,7 @@
  "
- at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:535"
+ at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:513"
  ( $at_check_trace; case $host in
 -hppa*|x86_64*|s390*)
 +hppa*|x86_64*|s390*|arm*|mips*|riscv*)
diff --git a/gnu/packages/patches/libwpd-gcc-compat.patch b/gnu/packages/patches/libwpd-gcc-compat.patch
new file mode 100644
index 0000000000..ee206beafe
--- /dev/null
+++ b/gnu/packages/patches/libwpd-gcc-compat.patch
@@ -0,0 +1,17 @@
+Fix build with newer GCC.
+
+Taken from upstream:
+
+  https://sourceforge.net/p/libwpd/code/ci/333c8a26f231bea26ec3d56245315041bbf5577f/
+
+--- a/src/lib/WPXTable.h
++++ b/src/lib/WPXTable.h
+@@ -53,7 +53,7 @@
+ 	~WPXTable();
+ 	void insertRow();
+ 	void insertCell(unsigned char colSpan, unsigned char rowSpan, unsigned char borderBits);
+-	const WPXTableCell  *getCell(size_t i, size_t j)
++	const WPXTableCell  *getCell(std::size_t i, std::size_t j)
+ 	{
+ 		return &(m_tableRows[i])[j];
+ 	}
diff --git a/gnu/packages/patches/libxml2-parent-pointers.patch b/gnu/packages/patches/libxml2-parent-pointers.patch
deleted file mode 100644
index 1f0615c512..0000000000
--- a/gnu/packages/patches/libxml2-parent-pointers.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-Fix a regression in 2.9.12 where some corrupt XML structures were handled
-incorrectly:
-
-  https://gitlab.gnome.org/GNOME/libxml2/-/issues/255
-
-This is an amalgamation of these upstream commits:
-
-  https://gitlab.gnome.org/GNOME/libxml2/-/commit/85b1792e37b131e7a51af98a37f92472e8de5f3f
-  https://gitlab.gnome.org/GNOME/libxml2/-/commit/13ad8736d294536da4cbcd70a96b0a2fbf47070c
-
-diff --git a/HTMLtree.c b/HTMLtree.c
---- a/HTMLtree.c
-+++ b/HTMLtree.c
-@@ -744,7 +744,7 @@ void
- htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
- 	                 xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED,
-                          int format) {
--    xmlNodePtr root;
-+    xmlNodePtr root, parent;
-     xmlAttrPtr attr;
-     const htmlElemDesc * info;
- 
-@@ -755,6 +755,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-     }
- 
-     root = cur;
-+    parent = cur->parent;
-     while (1) {
-         switch (cur->type) {
-         case XML_HTML_DOCUMENT_NODE:
-@@ -762,13 +763,25 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-             if (((xmlDocPtr) cur)->intSubset != NULL) {
-                 htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
-             }
--            if (cur->children != NULL) {
-+            /* Always validate cur->parent when descending. */
-+            if ((cur->parent == parent) && (cur->children != NULL)) {
-+                parent = cur;
-                 cur = cur->children;
-                 continue;
-             }
-             break;
- 
-         case XML_ELEMENT_NODE:
-+            /*
-+             * Some users like lxml are known to pass nodes with a corrupted
-+             * tree structure. Fall back to a recursive call to handle this
-+             * case.
-+             */
-+            if ((cur->parent != parent) && (cur->children != NULL)) {
-+                htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
-+                break;
-+            }
-+
-             /*
-              * Get specific HTML info for that node.
-              */
-@@ -817,6 +830,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-                     (cur->name != NULL) &&
-                     (cur->name[0] != 'p')) /* p, pre, param */
-                     xmlOutputBufferWriteString(buf, "\n");
-+                parent = cur;
-                 cur = cur->children;
-                 continue;
-             }
-@@ -825,9 +839,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-                 (info != NULL) && (!info->isinline)) {
-                 if ((cur->next->type != HTML_TEXT_NODE) &&
-                     (cur->next->type != HTML_ENTITY_REF_NODE) &&
--                    (cur->parent != NULL) &&
--                    (cur->parent->name != NULL) &&
--                    (cur->parent->name[0] != 'p')) /* p, pre, param */
-+                    (parent != NULL) &&
-+                    (parent->name != NULL) &&
-+                    (parent->name[0] != 'p')) /* p, pre, param */
-                     xmlOutputBufferWriteString(buf, "\n");
-             }
- 
-@@ -842,9 +856,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-                 break;
-             if (((cur->name == (const xmlChar *)xmlStringText) ||
-                  (cur->name != (const xmlChar *)xmlStringTextNoenc)) &&
--                ((cur->parent == NULL) ||
--                 ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) &&
--                  (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) {
-+                ((parent == NULL) ||
-+                 ((xmlStrcasecmp(parent->name, BAD_CAST "script")) &&
-+                  (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) {
-                 xmlChar *buffer;
- 
-                 buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-@@ -902,13 +916,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-                 break;
-             }
- 
--            /*
--             * The parent should never be NULL here but we want to handle
--             * corrupted documents gracefully.
--             */
--            if (cur->parent == NULL)
--                return;
--            cur = cur->parent;
-+            cur = parent;
-+            /* cur->parent was validated when descending. */
-+            parent = cur->parent;
- 
-             if ((cur->type == XML_HTML_DOCUMENT_NODE) ||
-                 (cur->type == XML_DOCUMENT_NODE)) {
-@@ -939,9 +949,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-                     (cur->next != NULL)) {
-                     if ((cur->next->type != HTML_TEXT_NODE) &&
-                         (cur->next->type != HTML_ENTITY_REF_NODE) &&
--                        (cur->parent != NULL) &&
--                        (cur->parent->name != NULL) &&
--                        (cur->parent->name[0] != 'p')) /* p, pre, param */
-+                        (parent != NULL) &&
-+                        (parent->name != NULL) &&
-+                        (parent->name[0] != 'p')) /* p, pre, param */
-                         xmlOutputBufferWriteString(buf, "\n");
-                 }
-             }
-diff --git a/xmlsave.c b/xmlsave.c
---- a/xmlsave.c
-+++ b/xmlsave.c
-@@ -847,7 +847,7 @@ htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
- static void
- xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-     int format = ctxt->format;
--    xmlNodePtr tmp, root, unformattedNode = NULL;
-+    xmlNodePtr tmp, root, unformattedNode = NULL, parent;
-     xmlAttrPtr attr;
-     xmlChar *start, *end;
-     xmlOutputBufferPtr buf;
-@@ -856,6 +856,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-     buf = ctxt->buf;
- 
-     root = cur;
-+    parent = cur->parent;
-     while (1) {
-         switch (cur->type) {
-         case XML_DOCUMENT_NODE:
-@@ -868,7 +869,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-             break;
- 
-         case XML_DOCUMENT_FRAG_NODE:
--            if (cur->children != NULL) {
-+            /* Always validate cur->parent when descending. */
-+            if ((cur->parent == parent) && (cur->children != NULL)) {
-+                parent = cur;
-                 cur = cur->children;
-                 continue;
-             }
-@@ -887,7 +890,18 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-             break;
- 
-         case XML_ELEMENT_NODE:
--	    if ((cur != root) && (ctxt->format == 1) && (xmlIndentTreeOutput))
-+            /*
-+             * Some users like lxml are known to pass nodes with a corrupted
-+             * tree structure. Fall back to a recursive call to handle this
-+             * case.
-+             */
-+            if ((cur->parent != parent) && (cur->children != NULL)) {
-+                xmlNodeDumpOutputInternal(ctxt, cur);
-+                break;
-+            }
-+
-+	    if ((ctxt->level > 0) && (ctxt->format == 1) &&
-+                (xmlIndentTreeOutput))
- 		xmlOutputBufferWrite(buf, ctxt->indent_size *
- 				     (ctxt->level > ctxt->indent_nr ?
- 				      ctxt->indent_nr : ctxt->level),
-@@ -942,6 +956,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-                 xmlOutputBufferWrite(buf, 1, ">");
-                 if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n");
-                 if (ctxt->level >= 0) ctxt->level++;
-+                parent = cur;
-                 cur = cur->children;
-                 continue;
-             }
-@@ -1058,13 +1073,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-                 break;
-             }
- 
--            /*
--             * The parent should never be NULL here but we want to handle
--             * corrupted documents gracefully.
--             */
--            if (cur->parent == NULL)
--                return;
--            cur = cur->parent;
-+            cur = parent;
-+            /* cur->parent was validated when descending. */
-+            parent = cur->parent;
- 
-             if (cur->type == XML_ELEMENT_NODE) {
-                 if (ctxt->level > 0) ctxt->level--;
-diff --git a/xmlsave.c b/xmlsave.c
---- a/xmlsave.c
-+++ b/xmlsave.c
-@@ -890,6 +890,13 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-             break;
- 
-         case XML_ELEMENT_NODE:
-+	    if ((cur != root) && (ctxt->format == 1) &&
-+                (xmlIndentTreeOutput))
-+		xmlOutputBufferWrite(buf, ctxt->indent_size *
-+				     (ctxt->level > ctxt->indent_nr ?
-+				      ctxt->indent_nr : ctxt->level),
-+				     ctxt->indent);
-+
-             /*
-              * Some users like lxml are known to pass nodes with a corrupted
-              * tree structure. Fall back to a recursive call to handle this
-@@ -900,13 +907,6 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-                 break;
-             }
- 
--	    if ((ctxt->level > 0) && (ctxt->format == 1) &&
--                (xmlIndentTreeOutput))
--		xmlOutputBufferWrite(buf, ctxt->indent_size *
--				     (ctxt->level > ctxt->indent_nr ?
--				      ctxt->indent_nr : ctxt->level),
--				     ctxt->indent);
--
-             xmlOutputBufferWrite(buf, 1, "<");
-             if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
-                 xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix);
diff --git a/gnu/packages/patches/libxml2-terminating-newline.patch b/gnu/packages/patches/libxml2-terminating-newline.patch
deleted file mode 100644
index 3f5c88dd4e..0000000000
--- a/gnu/packages/patches/libxml2-terminating-newline.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Fix a regression in 2.9.12 where serializing empty HTML documents would
-not add a terminating newline.
-
-  https://gitlab.gnome.org/GNOME/libxml2/-/issues/266
-
-Taken from upstream:
-
-  https://gitlab.gnome.org/GNOME/libxml2/-/commit/92d9ab4c28842a09ca2b76d3ff2f933e01b6cd6f
-
-diff --git a/HTMLtree.c b/HTMLtree.c
---- a/HTMLtree.c
-+++ b/HTMLtree.c
-@@ -763,11 +763,15 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-             if (((xmlDocPtr) cur)->intSubset != NULL) {
-                 htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
-             }
--            /* Always validate cur->parent when descending. */
--            if ((cur->parent == parent) && (cur->children != NULL)) {
--                parent = cur;
--                cur = cur->children;
--                continue;
-+            if (cur->children != NULL) {
-+                /* Always validate cur->parent when descending. */
-+                if (cur->parent == parent) {
-+                    parent = cur;
-+                    cur = cur->children;
-+                    continue;
-+                }
-+            } else {
-+                xmlOutputBufferWriteString(buf, "\n");
-             }
-             break;
- 
diff --git a/gnu/packages/patches/libxml2-xpath-recursion-limit.patch b/gnu/packages/patches/libxml2-xpath-recursion-limit.patch
deleted file mode 100644
index 051196c635..0000000000
--- a/gnu/packages/patches/libxml2-xpath-recursion-limit.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Fix recursion accounting in XPath expressions:
-
-  https://gitlab.gnome.org/GNOME/libxml2/-/issues/264
-
-Taken from upstream:
-
-  https://gitlab.gnome.org/GNOME/libxml2/-/commit/3e1aad4fe584747fd7d17cc7b2863a78e2d21a77
-
-diff --git a/xpath.c b/xpath.c
---- a/xpath.c
-+++ b/xpath.c
-@@ -10983,7 +10983,7 @@ xmlXPathCompileExpr(xmlXPathParserContextPtr ctxt, int sort) {
-     }
- 
-     if (xpctxt != NULL)
--        xpctxt->depth -= 1;
-+        xpctxt->depth -= 10;
- }
- 
- /**
diff --git a/gnu/packages/patches/linux-pam-unix_chkpwd.patch b/gnu/packages/patches/linux-pam-unix_chkpwd.patch
new file mode 100644
index 0000000000..0e865ff18c
--- /dev/null
+++ b/gnu/packages/patches/linux-pam-unix_chkpwd.patch
@@ -0,0 +1,9 @@
+unix_chkpwd is designed to have a suid bit, but it's not possible to set it
+for files in the store.  This patch tells unix_pam.so to look for
+unix_chkpwd in setuid program directory on Guix System.
+
+--- a/modules/pam_unix/Makefile.in
++++ b/modules/pam_unix/Makefile.in
+@@ -651,1 +651,1 @@
+-	-DCHKPWD_HELPER=\"$(sbindir)/unix_chkpwd\" \
++	-DCHKPWD_HELPER=\"/run/setuid-programs/unix_chkpwd\" \
diff --git a/gnu/packages/patches/llvm-8-missing-include.patch b/gnu/packages/patches/llvm-8-missing-include.patch
new file mode 100644
index 0000000000..4d7ca6d332
--- /dev/null
+++ b/gnu/packages/patches/llvm-8-missing-include.patch
@@ -0,0 +1,17 @@
+Add missing include statement for compatibility with libstdc++ 11.
+
+Taken from upstream:
+
+  https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1
+
+diff --git a/utils/benchmark/src/benchmark_register.h b/utils/benchmark/src/benchmark_register.h
+--- a/utils/benchmark/src/benchmark_register.h
++++ b/utils/benchmark/src/benchmark_register.h
+@@ -1,6 +1,7 @@
+ #ifndef BENCHMARK_REGISTER_H
+ #define BENCHMARK_REGISTER_H
+ 
++#include <limits>
+ #include <vector>
+ 
+ #include "check.h"
diff --git a/gnu/packages/patches/m4-gnulib-libio.patch b/gnu/packages/patches/m4-gnulib-libio.patch
deleted file mode 100644
index a26622ccf3..0000000000
--- a/gnu/packages/patches/m4-gnulib-libio.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-Adjust the bundled gnulib to cope with removal of libio interface in
-glibc 2.28.
-
-Based on this upstream patch, without hunks that do not apply to m4:
-https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a71827c0bc5e0ec67af23edef4f15cee8e
-
-diff --git a/lib/fflush.c b/lib/fflush.c
-index 983ade0..a6edfa1 100644
---- a/lib/fflush.c
-+++ b/lib/fflush.c
-@@ -33,7 +33,7 @@
- #undef fflush
- 
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- 
- /* Clear the stream's ungetc buffer, preserving the value of ftello (fp).  */
- static void
-@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
- 
- #endif
- 
--#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
- 
- # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
-   if (stream == NULL || ! freading (stream))
-     return fflush (stream);
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- 
-   clear_ungetc_buffer_preserving_position (stream);
- 
-diff --git a/lib/fpending.c b/lib/fpending.c
-index c84e3a5..789f50e 100644
---- a/lib/fpending.c
-+++ b/lib/fpending.c
-@@ -32,7 +32,7 @@ __fpending (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   return fp->_IO_write_ptr - fp->_IO_write_base;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-   /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-diff --git a/lib/fpurge.c b/lib/fpurge.c
-index b1d417c..3aedcc3 100644
---- a/lib/fpurge.c
-+++ b/lib/fpurge.c
-@@ -62,7 +62,7 @@ fpurge (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   fp->_IO_read_end = fp->_IO_read_ptr;
-   fp->_IO_write_ptr = fp->_IO_write_base;
-   /* Avoid memory leak when there is an active ungetc buffer.  */
-diff --git a/lib/freadahead.c b/lib/freadahead.c
-index c2ecb5b..23ec76e 100644
---- a/lib/freadahead.c
-+++ b/lib/freadahead.c
-@@ -30,7 +30,7 @@ extern size_t __sreadahead (FILE *);
- size_t
- freadahead (FILE *fp)
- {
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   if (fp->_IO_write_ptr > fp->_IO_write_base)
-     return 0;
-   return (fp->_IO_read_end - fp->_IO_read_ptr)
-diff --git a/lib/freading.c b/lib/freading.c
-index 73c28ac..c24d0c8 100644
---- a/lib/freading.c
-+++ b/lib/freading.c
-@@ -31,7 +31,7 @@ freading (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   return ((fp->_flags & _IO_NO_WRITES) != 0
-           || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
-               && fp->_IO_read_base != NULL));
-diff --git a/lib/fseeko.c b/lib/fseeko.c
-index 0101ab5..193f4e8 100644
---- a/lib/fseeko.c
-+++ b/lib/fseeko.c
-@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- #endif
- 
-   /* These tests are based on fpurge.c.  */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   if (fp->_IO_read_end == fp->_IO_read_ptr
-       && fp->_IO_write_ptr == fp->_IO_write_base
-       && fp->_IO_save_base == NULL)
-@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
-           return -1;
-         }
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-       fp->_flags &= ~_IO_EOF_SEEN;
-       fp->_offset = pos;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
-index 78d896e..05c5752 100644
---- a/lib/stdio-impl.h
-+++ b/lib/stdio-impl.h
-@@ -18,6 +18,12 @@
-    the same implementation of stdio extension API, except that some fields
-    have different naming conventions, or their access requires some casts.  */
- 
-+/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this
-+   problem by defining it ourselves.  FIXME: Do not rely on glibc
-+   internals.  */
-+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-+# define _IO_IN_BACKUP 0x100
-+#endif
- 
- /* BSD stdio derived implementations.  */
- 
diff --git a/gnu/packages/patches/mesa-skip-tests.patch b/gnu/packages/patches/mesa-skip-tests.patch
deleted file mode 100644
index 7ff571dcf5..0000000000
--- a/gnu/packages/patches/mesa-skip-tests.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-This test fails on i686-linux. I couldn't come up with a regex that
-could be used to disable it just on i686-linux, so we disable it
-completely with this patch:
-
-https://gitlab.freedesktop.org/mesa/mesa/-/issues/4091
-
-diff --git a/src/util/meson.build b/src/util/meson.build
-index 319b22d9bf7..93790c72675 100644
---- a/src/util/meson.build
-+++ b/src/util/meson.build
-@@ -344,7 +344,7 @@ if with_tests
-     )
-   endif
- 
--  foreach t: ['bitset', 'register_allocate', 'u_debug_stack', 'u_qsort']
-+  foreach t: ['bitset', 'register_allocate', 'u_qsort']
-     test(
-       t,
-       executable(
diff --git a/gnu/packages/patches/mm-common-reproducible-tarball.patch b/gnu/packages/patches/mm-common-reproducible-tarball.patch
new file mode 100644
index 0000000000..f0890aaf57
--- /dev/null
+++ b/gnu/packages/patches/mm-common-reproducible-tarball.patch
@@ -0,0 +1,40 @@
+From 024c121c844a4ec920133eb3f7e6b6ee8044c0b6 Mon Sep 17 00:00:00 2001
+From: Vagrant Cascadian <vagrant@reproducible-builds.org>
+Date: Sat, 12 Dec 2020 04:05:56 +0000
+Original-Patch: https://bugs.debian.org/977177
+Subject: [PATCH] Set uid, username, gid, and group name on files in
+ generated tarball.
+
+The user and group may otherwise vary between builds on different systems.
+
+---
+ util/meson_aux/skeletonmm-tarball.py | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/util/meson_aux/skeletonmm-tarball.py b/util/meson_aux/skeletonmm-tarball.py
+index db9e650..89049b6 100755
+--- a/util/meson_aux/skeletonmm-tarball.py
++++ b/util/meson_aux/skeletonmm-tarball.py
+@@ -39,10 +39,18 @@ elif output_file.endswith('.gz'):
+ else:
+   mode = 'w'
+ 
++def reproducible(tarinfo):
++  # Set consistent user and group on files in the tar archive
++  tarinfo.uid = 0
++  tarinfo.uname = 'root'
++  tarinfo.gid = 0
++  tarinfo.gname = 'root'
++  return tarinfo
++
+ with tarfile.open(output_file, mode=mode) as tar_file:
+   os.chdir(source_dir) # Input filenames are relative to source_dir.
+   for file in sys.argv[3:]:
+-    tar_file.add(file)
++    tar_file.add(file, filter=reproducible)
+ # Errors raise exceptions. If an exception is raised, Meson+ninja will notice
+ # that the command failed, despite exit(0).
+ sys.exit(0)
+-- 
+2.29.2
+
diff --git a/gnu/packages/patches/openjdk-10-hotspot-pointer-comparison.patch b/gnu/packages/patches/openjdk-10-hotspot-pointer-comparison.patch
new file mode 100644
index 0000000000..2c64d06fbe
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-hotspot-pointer-comparison.patch
@@ -0,0 +1,15 @@
+Avoid ordered comparison of pointer with integer to prevent compile error
+with GCC 11.
+
+diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp
+--- a/src/hotspot/os/linux/os_linux.cpp
++++ b/src/hotspot/os/linux/os_linux.cpp
+@@ -2155,7 +2155,7 @@ void os::Linux::print_container_info(outputStream* st) {
+     }
+ 
+     p = OSContainer::cpu_cpuset_memory_nodes();
+-    if (p < 0)
++    if (p == NULL)
+       st->print("cpu_memory_nodes() failed\n");
+     else {
+       st->print("cpu_memory_nodes: %s\n", p);
diff --git a/gnu/packages/patches/openjdk-10-hotspot-stack-size.patch b/gnu/packages/patches/openjdk-10-hotspot-stack-size.patch
new file mode 100644
index 0000000000..2c246dbdbc
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-hotspot-stack-size.patch
@@ -0,0 +1,28 @@
+Dynamically allocate the stack since SIGSTKSZ is not constant since glibc 2.34.
+
+Backported from:
+
+  https://github.com/openjdk/jdk17u/commit/bb7c412e259893091210267252faf3c0a1be0969
+
+diff --git a/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c b/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c
+--- a/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c
++++ b/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c
+@@ -67,8 +67,17 @@ static void handler(int sig, siginfo_t *si, void *unused) {
+   longjmp(context, 1);
+ }
+ 
++static char* altstack = NULL;
++
+ void set_signal_handler() {
+-  static char altstack[SIGSTKSZ];
++  if (altstack == NULL) {
++    // Dynamically allocated in case SIGSTKSZ is not constant
++    altstack = malloc(SIGSTKSZ);
++    if (altstack == NULL) {
++      fprintf(stderr, "Test ERROR. Unable to malloc altstack space\n");
++      exit(7);
++    }
++  }
+ 
+   stack_t ss = {
+     .ss_size = SIGSTKSZ,
diff --git a/gnu/packages/patches/openjdk-9-hotspot-pointer-comparison.patch b/gnu/packages/patches/openjdk-9-hotspot-pointer-comparison.patch
new file mode 100644
index 0000000000..b90d736211
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-hotspot-pointer-comparison.patch
@@ -0,0 +1,27 @@
+Avoid ordered comparison of pointer with integer to prevent compile error
+with GCC 11.
+
+diff --git a/hotspot/src/share/vm/memory/virtualspace.cpp b/hotspot/src/share/vm/memory/virtualspace.cpp
+--- a/hotspot/src/share/vm/memory/virtualspace.cpp
++++ b/hotspot/src/share/vm/memory/virtualspace.cpp
+@@ -581,7 +581,7 @@ ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment, bool large)
+   assert(markOopDesc::encode_pointer_as_mark(&_base[size])->decode_pointer() == &_base[size],
+          "area must be distinguishable from marks for mark-sweep");
+ 
+-  if (base() > 0) {
++  if (base() != NULL) {
+     MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap);
+   }
+ }
+diff --git a/hotspot/src/share/vm/opto/lcm.cpp b/hotspot/src/share/vm/opto/lcm.cpp
+--- a/hotspot/src/share/vm/opto/lcm.cpp
++++ b/hotspot/src/share/vm/opto/lcm.cpp
+@@ -39,7 +39,7 @@
+ // Check whether val is not-null-decoded compressed oop,
+ // i.e. will grab into the base of the heap if it represents NULL.
+ static bool accesses_heap_base_zone(Node *val) {
+-  if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops.
++  if (Universe::narrow_oop_base() != NULL) { // Implies UseCompressedOops.
+     if (val && val->is_Mach()) {
+       if (val->as_Mach()->ideal_Opcode() == Op_DecodeN) {
+         // This assumes all Decodes with TypePtr::NotNull are matched to nodes that
diff --git a/gnu/packages/patches/openjdk-9-hotspot-stack-size.patch b/gnu/packages/patches/openjdk-9-hotspot-stack-size.patch
new file mode 100644
index 0000000000..27af0ab6c2
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-hotspot-stack-size.patch
@@ -0,0 +1,28 @@
+Dynamically allocate the stack since SIGSTKSZ is not constant since glibc 2.34.
+
+Backported from:
+
+  https://github.com/openjdk/jdk17u/commit/bb7c412e259893091210267252faf3c0a1be0969
+
+diff --git a/hotspot/test/runtime/StackGuardPages/exeinvoke.c b/hotspot/test/runtime/StackGuardPages/exeinvoke.c
+--- a/hotspot/test/runtime/StackGuardPages/exeinvoke.c
++++ b/hotspot/test/runtime/StackGuardPages/exeinvoke.c
+@@ -67,8 +67,17 @@ static void handler(int sig, siginfo_t *si, void *unused) {
+   longjmp(context, 1);
+ }
+ 
++static char* altstack = NULL;
++
+ void set_signal_handler() {
+-  static char altstack[SIGSTKSZ];
++  if (altstack == NULL) {
++    // Dynamically allocated in case SIGSTKSZ is not constant
++    altstack = malloc(SIGSTKSZ);
++    if (altstack == NULL) {
++      fprintf(stderr, "Test ERROR. Unable to malloc altstack space\n");
++      exit(7);
++    }
++  }
+ 
+   stack_t ss = {
+     .ss_size = SIGSTKSZ,
diff --git a/gnu/packages/patches/pciutils-hurd-configure.patch b/gnu/packages/patches/pciutils-hurd-configure.patch
deleted file mode 100644
index 226891a995..0000000000
--- a/gnu/packages/patches/pciutils-hurd-configure.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Add ability to detect GNU/Hurd when configuring.
-
-Adapted from https://git.hadrons.org/cgit/debian/pkgs/pciutils.git/tree/debian/patches/00-configure-hurd.patch
-
-From e39a3af22501234a91cf28e8c57b45f9379f9101 Mon Sep 17 00:00:00 2001
-From: Damien Zammit <damien@zamaudio.com>
-Date: Fri, 26 Oct 2018 09:24:04 -0400
-Subject: [PATCH 2/2] Add ability to detect GNU/Hurd when configuring
-
----
- lib/configure |    6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/lib/configure
-+++ b/lib/configure
-@@ -25,7 +25,7 @@ if [ -z "$HOST" ] ; then
- 		proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1`
- 		cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'`
- 	else
--		cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'`
-+		cpu=`uname -m | sed 's/^i.86-AT386/i386/;s/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'`
- 	fi
- 	if [ "$sys" = "DragonFly" ]
- 	then
-@@ -39,6 +39,10 @@ if [ -z "$HOST" ] ; then
- 	then
- 		sys=cygwin
- 	fi
-+	if [ "$sys" = "GNU" ]
-+	then
-+		sys=gnu
-+	fi
- 	HOST=${3:-$cpu-$sys}
- fi
- [ -n "$RELEASE" ] && rel="${RELEASE}"
diff --git a/gnu/packages/patches/pciutils-hurd-fix.patch b/gnu/packages/patches/pciutils-hurd-fix.patch
deleted file mode 100644
index f1979d4352..0000000000
--- a/gnu/packages/patches/pciutils-hurd-fix.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Fix a build error on GNU/Hurd for pciutils 3.7.0.
-
-commit 053cf6c8b2acafadf828912828336d90fe9b8696
-Author: Martin Mares <mj@ucw.cz>
-Date:   Sun May 31 11:53:28 2020 +0200
-
-    HURD backend should compile again
-    
-    Fixes a bug introduced by commit 82c06b47dea5a38075ce9d56f743360bc47b4c78.
-
-diff --git a/lib/hurd.c b/lib/hurd.c
-index 7b3b2ae..ccd92f6 100644
---- a/lib/hurd.c
-+++ b/lib/hurd.c
-@@ -307,7 +307,6 @@ hurd_fill_regions(struct pci_dev *d)
-       d->base_addr[i] |= regions[i].is_64 << 2;
-       d->base_addr[i] |= regions[i].is_prefetchable << 3;
- 
--      if (flags & PCI_FILL_SIZES)
--	d->size[i] = regions[i].size;
-+      d->size[i] = regions[i].size;
-     }
- }
diff --git a/gnu/packages/patches/python-2.7-expat-compat.patch b/gnu/packages/patches/python-2.7-expat-compat.patch
new file mode 100644
index 0000000000..9cbdf8bd6a
--- /dev/null
+++ b/gnu/packages/patches/python-2.7-expat-compat.patch
@@ -0,0 +1,59 @@
+Fix test failure with newer Expat:
+
+  https://bugs.python.org/issue46811
+
+This is a backport of this upstream commit:
+
+  https://github.com/python/cpython/commit/2cae93832f46b245847bdc252456ddf7742ef45e
+
+diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
+index 2eb642395b..1793f9365d 100644
+--- a/Lib/test/test_minidom.py
++++ b/Lib/test/test_minidom.py
+@@ -6,12 +6,14 @@ from StringIO import StringIO
+ from test import support
+ import unittest
+ 
++import pyexpat
+ import xml.dom
+ import xml.dom.minidom
+ import xml.parsers.expat
+ 
+ from xml.dom.minidom import parse, Node, Document, parseString
+ from xml.dom.minidom import getDOMImplementation
++from xml.parsers.expat import ExpatError
+ 
+ 
+ tstfile = support.findfile("test.xml", subdir="xmltestdata")
+@@ -1051,7 +1053,13 @@ class MinidomTest(unittest.TestCase):
+ 
+         # Verify that character decoding errors raise exceptions instead
+         # of crashing
+-        self.assertRaises(UnicodeDecodeError, parseString,
++        if pyexpat.version_info >= (2, 4, 5):
++            self.assertRaises(ExpatError, parseString,
++                    b'<fran\xe7ais></fran\xe7ais>')
++            self.assertRaises(ExpatError, parseString,
++                    b'<franais>Comment \xe7a va ? Tr\xe8s bien ?</franais>')
++        else:
++            self.assertRaises(UnicodeDecodeError, parseString,
+                 '<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>')
+ 
+         doc.unlink()
+diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
+index c75d55f05c..0855bc07ca 100644
+--- a/Lib/test/test_xml_etree.py
++++ b/Lib/test/test_xml_etree.py
+@@ -1482,12 +1482,6 @@ class BugsTest(unittest.TestCase):
+                 b"<?xml version='1.0' encoding='ascii'?>\n"
+                 b'<body>t&#227;g</body>')
+ 
+-    def test_issue3151(self):
+-        e = ET.XML('<prefix:localname xmlns:prefix="${stuff}"/>')
+-        self.assertEqual(e.tag, '{${stuff}}localname')
+-        t = ET.ElementTree(e)
+-        self.assertEqual(ET.tostring(e), b'<ns0:localname xmlns:ns0="${stuff}" />')
+-
+     def test_issue6565(self):
+         elem = ET.XML("<body><tag/></body>")
+         self.assertEqual(summarize_list(elem), ['tag'])
diff --git a/gnu/packages/patches/source-highlight-gcc-compat.patch b/gnu/packages/patches/source-highlight-gcc-compat.patch
new file mode 100644
index 0000000000..7b543dcf32
--- /dev/null
+++ b/gnu/packages/patches/source-highlight-gcc-compat.patch
@@ -0,0 +1,74 @@
+Fix various compatibility problems with newer GCC.
+
+This is an amalgamation of these upstream commits:
+
+  https://git.savannah.gnu.org/cgit/src-highlite.git/commit/?id=904949c9026cb772dc93fbe0947a252ef47127f4
+  https://git.savannah.gnu.org/cgit/src-highlite.git/commit/?id=ab9fe5cb9b85c5afab94f2a7f4b6d7d473c14ee9
+
+diff --git a/lib/srchilite/fileutil.cc b/lib/srchilite/fileutil.cc
+index 59a6d64..963178c 100644
+--- a/lib/srchilite/fileutil.cc
++++ b/lib/srchilite/fileutil.cc
+@@ -48,7 +48,7 @@ void set_file_util_verbose(bool b) {
+ // FIXME avoid using a global variable
+ std::string start_path;
+ 
+-string readFile(const string &fileName) throw (IOException) {
++string readFile(const string &fileName) {
+     ifstream file(fileName.c_str());
+ 
+     if (!file.is_open()) {
+diff --git a/lib/srchilite/fileutil.h b/lib/srchilite/fileutil.h
+index 7335a9b..042eb56 100644
+--- a/lib/srchilite/fileutil.h
++++ b/lib/srchilite/fileutil.h
+@@ -27,7 +27,7 @@ extern std::string start_path;
+  * @return the contents of the file
+  * @throw IOException
+  */
+-string readFile(const string &fileName) throw (IOException);
++string readFile(const string &fileName);
+ 
+ //char *read_file(const string &fileName);
+ 
+diff --git a/lib/tests/stdboosterror.h b/lib/tests/stdboosterror.h
+index 568545b..d59bfa6 100644
+--- a/lib/tests/stdboosterror.h
++++ b/lib/tests/stdboosterror.h
+@@ -4,7 +4,7 @@
+ #include <boost/regex/pattern_except.hpp>
+ 
+ static boost::regex_error
+-        std_boost_exception(boost::regex_error(boost::regex_constants::error_bad_pattern));
++        std_boost_exception = boost::regex_error(boost::regex_constants::error_bad_pattern);
+ 
+ /**
+  * returns the string representing a standard exception (which
+diff --git a/lib/tests/test_wordtokenizer_main.cpp b/lib/tests/test_wordtokenizer_main.cpp
+index 40e23b1..11ba389 100644
+--- a/lib/tests/test_wordtokenizer_main.cpp
++++ b/lib/tests/test_wordtokenizer_main.cpp
+@@ -11,6 +11,14 @@
+ using namespace std;
+ using namespace srchilite;
+ 
++/*
++ * We have to use 'std' namespaces because 'WordTokenizer::WordTokenizerResults::value_type'
++ * is an std::pair<std::string, std::string> in disguise. We have to place 'operator<<()'
++ * into the same namespace for ADL to work. Otherwise gcc-12 or clang-13 can't find the
++ * overload.
++ */
++namespace std {
++
+ static ostream &operator <<(ostream &os, const WordTokenizer::WordTokenizerResults::value_type &);
+ 
+ ostream &operator <<(ostream &os, const WordTokenizer::WordTokenizerResults::value_type &token) {
+@@ -23,6 +31,8 @@ ostream &operator <<(ostream &os, const WordTokenizer::WordTokenizerResults::val
+     return os;
+ }
+ 
++}
++
+ int main() {
+     WordTokenizer::WordTokenizerResults tokens;
+ 
\ No newline at end of file
diff --git a/gnu/packages/patches/swig-support-gcc-12.patch b/gnu/packages/patches/swig-support-gcc-12.patch
new file mode 100644
index 0000000000..ece7928aa2
--- /dev/null
+++ b/gnu/packages/patches/swig-support-gcc-12.patch
@@ -0,0 +1,16 @@
+Fix for https://github.com/swig/swig/issues/2145 made in unreleased upstream commit
+https://github.com/swig/swig/commit/76d5a9ec270a763c892ae28070e391cf99e0b7cd
+
+diff --git a/Examples/test-suite/nested_class.i b/Examples/test-suite/nested_class.i
+index b10c339493e..c778a12cf7c 100644
+--- a/Examples/test-suite/nested_class.i
++++ b/Examples/test-suite/nested_class.i
+@@ -201,7 +201,7 @@ struct Outer {
+     Integer xx;
+   } MultipleInstanceAnonDerived1, MultipleInstanceAnonDerived2, *MultipleInstanceAnonDerived3, MultipleInstanceAnonDerived4[2];
+ 
+-#if defined(__GNUC__) || defined(_MSC_VER) || defined(SWIG)
++#if (defined(__GNUC__) && __GNUC__ < 12) || defined(_MSC_VER) || defined(SWIG)
+ /* some compilers do not accept these */
+   struct : public InnerMultiple {
+     Integer xx;
diff --git a/gnu/packages/patches/texinfo-headings-single.patch b/gnu/packages/patches/texinfo-headings-single.patch
new file mode 100644
index 0000000000..5147449ddc
--- /dev/null
+++ b/gnu/packages/patches/texinfo-headings-single.patch
@@ -0,0 +1,21 @@
+Fix a regression in 6.8 where the 'single' headings option was not recognized.
+
+Taken from upstream:
+
+  https://git.savannah.gnu.org/cgit/texinfo.git/commit/?id=13a8894fe2faa45b04033d7122a8fe7939ce6aa2
+
+diff --git a/tp/Texinfo/XS/parsetexi/end_line.c b/tp/Texinfo/XS/parsetexi/end_line.c
+index 4556780052..3fc2065616 100644
+--- a/tp/Texinfo/XS/parsetexi/end_line.c
++++ b/tp/Texinfo/XS/parsetexi/end_line.c
+@@ -778,8 +778,8 @@ kdbinputstyle_invalid:
+     case CM_headings:
+       {
+         if (!strcmp (line, "off") || !strcmp (line, "on")
+-            || !strcmp (line, "double") || !strcmp (line, "singleafter")
+-            || !strcmp (line, "doubleafter"))
++            || !strcmp (line, "single") || !strcmp (line, "double")
++            || !strcmp (line, "singleafter") || !strcmp (line, "doubleafter"))
+           {
+             ADD_ARG(line);
+           }
diff --git a/gnu/packages/patches/util-linux-CVE-2021-3995.patch b/gnu/packages/patches/util-linux-CVE-2021-3995.patch
deleted file mode 100644
index 7faea83801..0000000000
--- a/gnu/packages/patches/util-linux-CVE-2021-3995.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-Fix CVE-2021-3995:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3995
-https://seclists.org/oss-sec/2022/q1/66
-
-Patch copied from upstream source repository:
-
-https://github.com/util-linux/util-linux/commit/f3db9bd609494099f0c1b95231c5dfe383346929
-
-From f3db9bd609494099f0c1b95231c5dfe383346929 Mon Sep 17 00:00:00 2001
-From: Karel Zak <kzak@redhat.com>
-Date: Wed, 24 Nov 2021 13:53:25 +0100
-Subject: [PATCH] libmount: fix UID check for FUSE umount [CVE-2021-3995]
-
-Improper UID check allows an unprivileged user to unmount FUSE
-filesystems of users with similar UID.
-
-Signed-off-by: Karel Zak <kzak@redhat.com>
----
- include/strutils.h            |  2 +-
- libmount/src/context_umount.c | 14 +++---------
- libmount/src/mountP.h         |  1 +
- libmount/src/optstr.c         | 42 +++++++++++++++++++++++++++++++++++
- 4 files changed, 47 insertions(+), 12 deletions(-)
-
-diff --git a/include/strutils.h b/include/strutils.h
-index 6e95707ea..a84d29594 100644
---- a/include/strutils.h
-+++ b/include/strutils.h
-@@ -106,8 +106,8 @@ static inline char *mem2strcpy(char *dest, const void *src, size_t n, size_t nma
- 	if (n + 1 > nmax)
- 		n = nmax - 1;
- 
-+	memset(dest, '\0', nmax);
- 	memcpy(dest, src, n);
--	dest[nmax-1] = '\0';
- 	return dest;
- }
- 
-diff --git a/libmount/src/context_umount.c b/libmount/src/context_umount.c
-index 173637a15..8773c65ff 100644
---- a/libmount/src/context_umount.c
-+++ b/libmount/src/context_umount.c
-@@ -453,10 +453,7 @@ static int is_fuse_usermount(struct libmnt_context *cxt, int *errsv)
- 	struct libmnt_ns *ns_old;
- 	const char *type = mnt_fs_get_fstype(cxt->fs);
- 	const char *optstr;
--	char *user_id = NULL;
--	size_t sz;
--	uid_t uid;
--	char uidstr[sizeof(stringify_value(ULONG_MAX))];
-+	uid_t uid, entry_uid;
- 
- 	*errsv = 0;
- 
-@@ -473,11 +470,7 @@ static int is_fuse_usermount(struct libmnt_context *cxt, int *errsv)
- 	optstr = mnt_fs_get_fs_options(cxt->fs);
- 	if (!optstr)
- 		return 0;
--
--	if (mnt_optstr_get_option(optstr, "user_id", &user_id, &sz) != 0)
--		return 0;
--
--	if (sz == 0 || user_id == NULL)
-+	if (mnt_optstr_get_uid(optstr, "user_id", &entry_uid) != 0)
- 		return 0;
- 
- 	/* get current user */
-@@ -494,8 +487,7 @@ static int is_fuse_usermount(struct libmnt_context *cxt, int *errsv)
- 		return 0;
- 	}
- 
--	snprintf(uidstr, sizeof(uidstr), "%lu", (unsigned long) uid);
--	return strncmp(user_id, uidstr, sz) == 0;
-+	return uid == entry_uid;
- }
- 
- /*
-diff --git a/libmount/src/mountP.h b/libmount/src/mountP.h
-index d43a83541..22442ec55 100644
---- a/libmount/src/mountP.h
-+++ b/libmount/src/mountP.h
-@@ -399,6 +399,7 @@ extern const struct libmnt_optmap *mnt_optmap_get_entry(
- 			     const struct libmnt_optmap **mapent);
- 
- /* optstr.c */
-+extern int mnt_optstr_get_uid(const char *optstr, const char *name, uid_t *uid);
- extern int mnt_optstr_remove_option_at(char **optstr, char *begin, char *end);
- extern int mnt_optstr_fix_gid(char **optstr, char *value, size_t valsz, char **next);
- extern int mnt_optstr_fix_uid(char **optstr, char *value, size_t valsz, char **next);
-diff --git a/libmount/src/optstr.c b/libmount/src/optstr.c
-index 921b9318e..16800f571 100644
---- a/libmount/src/optstr.c
-+++ b/libmount/src/optstr.c
-@@ -1076,6 +1076,48 @@ int mnt_optstr_fix_user(char **optstr)
- 	return rc;
- }
- 
-+/*
-+ * Converts value from @optstr addressed by @name to uid.
-+ *
-+ * Returns: 0 on success, 1 if not found, <0 on error
-+ */
-+int mnt_optstr_get_uid(const char *optstr, const char *name, uid_t *uid)
-+{
-+	char *value = NULL;
-+	size_t valsz = 0;
-+	char buf[sizeof(stringify_value(UINT64_MAX))];
-+	int rc;
-+	uint64_t num;
-+
-+	assert(optstr);
-+	assert(name);
-+	assert(uid);
-+
-+	rc = mnt_optstr_get_option(optstr, name, &value, &valsz);
-+	if (rc != 0)
-+		goto fail;
-+
-+	if (valsz > sizeof(buf) - 1) {
-+		rc = -ERANGE;
-+		goto fail;
-+	}
-+	mem2strcpy(buf, value, valsz, sizeof(buf));
-+
-+	rc = ul_strtou64(buf, &num, 10);
-+	if (rc != 0)
-+		goto fail;
-+	if (num > ULONG_MAX || (uid_t) num != num) {
-+		rc = -ERANGE;
-+		goto fail;
-+	}
-+	*uid = (uid_t) num;
-+
-+	return 0;
-+fail:
-+	DBG(UTILS, ul_debug("failed to convert '%s'= to number [rc=%d]", name, rc));
-+	return rc;
-+}
-+
- /**
-  * mnt_match_options:
-  * @optstr: options string
--- 
-2.34.0
-
diff --git a/gnu/packages/patches/util-linux-CVE-2021-3996.patch b/gnu/packages/patches/util-linux-CVE-2021-3996.patch
deleted file mode 100644
index 59edf5c7cf..0000000000
--- a/gnu/packages/patches/util-linux-CVE-2021-3996.patch
+++ /dev/null
@@ -1,233 +0,0 @@
-Fix CVE-2021-3996:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3996
-https://seclists.org/oss-sec/2022/q1/66
-
-Patch copied from upstream source repository:
-
-https://github.com/util-linux/util-linux/commit/018a10907fa9885093f6d87401556932c2d8bd2b
-
-From 018a10907fa9885093f6d87401556932c2d8bd2b Mon Sep 17 00:00:00 2001
-From: Karel Zak <kzak@redhat.com>
-Date: Tue, 4 Jan 2022 10:54:20 +0100
-Subject: [PATCH] libmount: fix (deleted) suffix issue [CVE-2021-3996]
-
-This issue is related to parsing the /proc/self/mountinfo file allows an
-unprivileged user to unmount other user's filesystems that are either
-world-writable themselves or mounted in a world-writable directory.
-
-The support for "(deleted)" is no more necessary as the Linux kernel does
-not use it in /proc/self/mountinfo and /proc/self/mount files anymore.
-
-Signed-off-by: Karel Zak <kzak@redhat.com>
----
- libmount/src/tab_parse.c                            |  5 -----
- tests/expected/findmnt/filter-options               |  1 -
- tests/expected/findmnt/filter-options-nameval-neg   |  3 +--
- tests/expected/findmnt/filter-types-neg             |  1 -
- tests/expected/findmnt/outputs-default              |  3 +--
- tests/expected/findmnt/outputs-force-tree           |  3 +--
- tests/expected/findmnt/outputs-kernel               |  3 +--
- tests/expected/libmount/tabdiff-mount               |  1 -
- tests/expected/libmount/tabdiff-move                |  1 -
- tests/expected/libmount/tabdiff-remount             |  1 -
- tests/expected/libmount/tabdiff-umount              |  1 -
- tests/expected/libmount/tabfiles-parse-mountinfo    | 11 -----------
- tests/expected/libmount/tabfiles-py-parse-mountinfo | 11 -----------
- tests/ts/findmnt/files/mountinfo                    |  1 -
- tests/ts/findmnt/files/mountinfo-nonroot            |  1 -
- tests/ts/libmount/files/mountinfo                   |  1 -
- 16 files changed, 4 insertions(+), 44 deletions(-)
-
-diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c
-index 917779ab6..4407f9c9c 100644
---- a/libmount/src/tab_parse.c
-+++ b/libmount/src/tab_parse.c
-@@ -227,11 +227,6 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, const char *s)
- 		goto fail;
- 	}
- 
--	/* remove "\040(deleted)" suffix */
--	p = (char *) endswith(fs->target, PATH_DELETED_SUFFIX);
--	if (p && *p)
--		*p = '\0';
--
- 	s = skip_separator(s);
- 
- 	/* (6) vfs options (fs-independent) */
-diff --git a/tests/expected/findmnt/filter-options b/tests/expected/findmnt/filter-options
-index 2606bce76..97b0ead0a 100644
---- a/tests/expected/findmnt/filter-options
-+++ b/tests/expected/findmnt/filter-options
-@@ -28,5 +28,4 @@ TARGET                       SOURCE           FSTYPE                OPTIONS
- /home/kzak/.gvfs             gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500
- /var/lib/nfs/rpc_pipefs      sunrpc           rpc_pipefs            rw,relatime
- /mnt/sounds                  //foo.home/bar/  cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--/mnt/foo                     /fooooo          bar                   rw,relatime
- rc=0
-diff --git a/tests/expected/findmnt/filter-options-nameval-neg b/tests/expected/findmnt/filter-options-nameval-neg
-index 5471d65af..f0467ef75 100644
---- a/tests/expected/findmnt/filter-options-nameval-neg
-+++ b/tests/expected/findmnt/filter-options-nameval-neg
-@@ -29,6 +29,5 @@ TARGET                         SOURCE                FSTYPE                OPTIO
- |-/home/kzak                   /dev/mapper/kzak-home ext4                  rw,noatime,barrier=1,data=ordered
- | `-/home/kzak/.gvfs           gvfs-fuse-daemon      fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500
- |-/var/lib/nfs/rpc_pipefs      sunrpc                rpc_pipefs            rw,relatime
--|-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--`-/mnt/foo                     /fooooo               bar                   rw,relatime
-+`-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
- rc=0
-diff --git a/tests/expected/findmnt/filter-types-neg b/tests/expected/findmnt/filter-types-neg
-index 2606bce76..97b0ead0a 100644
---- a/tests/expected/findmnt/filter-types-neg
-+++ b/tests/expected/findmnt/filter-types-neg
-@@ -28,5 +28,4 @@ TARGET                       SOURCE           FSTYPE                OPTIONS
- /home/kzak/.gvfs             gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500
- /var/lib/nfs/rpc_pipefs      sunrpc           rpc_pipefs            rw,relatime
- /mnt/sounds                  //foo.home/bar/  cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--/mnt/foo                     /fooooo          bar                   rw,relatime
- rc=0
-diff --git a/tests/expected/findmnt/outputs-default b/tests/expected/findmnt/outputs-default
-index 59495797b..01599355e 100644
---- a/tests/expected/findmnt/outputs-default
-+++ b/tests/expected/findmnt/outputs-default
-@@ -30,6 +30,5 @@ TARGET                         SOURCE                FSTYPE                OPTIO
- |-/home/kzak                   /dev/mapper/kzak-home ext4                  rw,noatime,barrier=1,data=ordered
- | `-/home/kzak/.gvfs           gvfs-fuse-daemon      fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500
- |-/var/lib/nfs/rpc_pipefs      sunrpc                rpc_pipefs            rw,relatime
--|-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--`-/mnt/foo                     /fooooo               bar                   rw,relatime
-+`-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
- rc=0
-diff --git a/tests/expected/findmnt/outputs-force-tree b/tests/expected/findmnt/outputs-force-tree
-index 59495797b..01599355e 100644
---- a/tests/expected/findmnt/outputs-force-tree
-+++ b/tests/expected/findmnt/outputs-force-tree
-@@ -30,6 +30,5 @@ TARGET                         SOURCE                FSTYPE                OPTIO
- |-/home/kzak                   /dev/mapper/kzak-home ext4                  rw,noatime,barrier=1,data=ordered
- | `-/home/kzak/.gvfs           gvfs-fuse-daemon      fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500
- |-/var/lib/nfs/rpc_pipefs      sunrpc                rpc_pipefs            rw,relatime
--|-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--`-/mnt/foo                     /fooooo               bar                   rw,relatime
-+`-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
- rc=0
-diff --git a/tests/expected/findmnt/outputs-kernel b/tests/expected/findmnt/outputs-kernel
-index 59495797b..01599355e 100644
---- a/tests/expected/findmnt/outputs-kernel
-+++ b/tests/expected/findmnt/outputs-kernel
-@@ -30,6 +30,5 @@ TARGET                         SOURCE                FSTYPE                OPTIO
- |-/home/kzak                   /dev/mapper/kzak-home ext4                  rw,noatime,barrier=1,data=ordered
- | `-/home/kzak/.gvfs           gvfs-fuse-daemon      fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500
- |-/var/lib/nfs/rpc_pipefs      sunrpc                rpc_pipefs            rw,relatime
--|-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--`-/mnt/foo                     /fooooo               bar                   rw,relatime
-+`-/mnt/sounds                  //foo.home/bar/       cifs                  rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
- rc=0
-diff --git a/tests/expected/libmount/tabdiff-mount b/tests/expected/libmount/tabdiff-mount
-index 420aeacd5..3c18f8dc4 100644
---- a/tests/expected/libmount/tabdiff-mount
-+++ b/tests/expected/libmount/tabdiff-mount
-@@ -1,3 +1,2 @@
- /dev/mapper/kzak-home on /home/kzak: MOUNTED
--/fooooo on /mnt/foo: MOUNTED
- tmpfs on /mnt/test/foo
bar: MOUNTED
-diff --git a/tests/expected/libmount/tabdiff-move b/tests/expected/libmount/tabdiff-move
-index 24f9bc791..95820d93e 100644
---- a/tests/expected/libmount/tabdiff-move
-+++ b/tests/expected/libmount/tabdiff-move
-@@ -1,3 +1,2 @@
- //foo.home/bar/ on /mnt/music: MOVED to /mnt/music
--/fooooo on /mnt/foo: UMOUNTED
- tmpfs on /mnt/test/foo
bar: UMOUNTED
-diff --git a/tests/expected/libmount/tabdiff-remount b/tests/expected/libmount/tabdiff-remount
-index 82ebeab39..876bfd953 100644
---- a/tests/expected/libmount/tabdiff-remount
-+++ b/tests/expected/libmount/tabdiff-remount
-@@ -1,4 +1,3 @@
- /dev/mapper/kzak-home on /home/kzak: REMOUNTED from 'rw,noatime,barrier=1,data=ordered' to 'ro,noatime,barrier=1,data=ordered'
- //foo.home/bar/ on /mnt/sounds: REMOUNTED from 'rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344' to 'ro,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344'
--/fooooo on /mnt/foo: UMOUNTED
- tmpfs on /mnt/test/foo
bar: UMOUNTED
-diff --git a/tests/expected/libmount/tabdiff-umount b/tests/expected/libmount/tabdiff-umount
-index a3e0fe48a..c7be725b9 100644
---- a/tests/expected/libmount/tabdiff-umount
-+++ b/tests/expected/libmount/tabdiff-umount
-@@ -1,3 +1,2 @@
- /dev/mapper/kzak-home on /home/kzak: UMOUNTED
--/fooooo on /mnt/foo: UMOUNTED
- tmpfs on /mnt/test/foo
bar: UMOUNTED
-diff --git a/tests/expected/libmount/tabfiles-parse-mountinfo b/tests/expected/libmount/tabfiles-parse-mountinfo
-index 47eb77006..d5ba5248e 100644
---- a/tests/expected/libmount/tabfiles-parse-mountinfo
-+++ b/tests/expected/libmount/tabfiles-parse-mountinfo
-@@ -351,17 +351,6 @@ id:     47
- parent: 20
- devno:  0:38
- ------ fs:
--source: /fooooo
--target: /mnt/foo
--fstype: bar
--optstr: rw,relatime
--VFS-optstr: rw,relatime
--FS-opstr: rw
--root:   /
--id:     48
--parent: 20
--devno:  0:39
-------- fs:
- source: tmpfs
- target: /mnt/test/foo
bar
- fstype: tmpfs
-diff --git a/tests/expected/libmount/tabfiles-py-parse-mountinfo b/tests/expected/libmount/tabfiles-py-parse-mountinfo
-index 47eb77006..d5ba5248e 100644
---- a/tests/expected/libmount/tabfiles-py-parse-mountinfo
-+++ b/tests/expected/libmount/tabfiles-py-parse-mountinfo
-@@ -351,17 +351,6 @@ id:     47
- parent: 20
- devno:  0:38
- ------ fs:
--source: /fooooo
--target: /mnt/foo
--fstype: bar
--optstr: rw,relatime
--VFS-optstr: rw,relatime
--FS-opstr: rw
--root:   /
--id:     48
--parent: 20
--devno:  0:39
-------- fs:
- source: tmpfs
- target: /mnt/test/foo
bar
- fstype: tmpfs
-diff --git a/tests/ts/findmnt/files/mountinfo b/tests/ts/findmnt/files/mountinfo
-index 475ea1a33..ff1e664a8 100644
---- a/tests/ts/findmnt/files/mountinfo
-+++ b/tests/ts/findmnt/files/mountinfo
-@@ -30,4 +30,3 @@
- 44 41 0:36 / /home/kzak/.gvfs rw,nosuid,nodev,relatime - fuse.gvfs-fuse-daemon gvfs-fuse-daemon rw,user_id=500,group_id=500
- 45 20 0:37 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw
- 47 20 0:38 / /mnt/sounds rw,relatime - cifs //foo.home/bar/ rw,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--48 20 0:39 / /mnt/foo\040(deleted) rw,relatime - bar /fooooo rw
-diff --git a/tests/ts/findmnt/files/mountinfo-nonroot b/tests/ts/findmnt/files/mountinfo-nonroot
-index e15b46701..87b421d2e 100644
---- a/tests/ts/findmnt/files/mountinfo-nonroot
-+++ b/tests/ts/findmnt/files/mountinfo-nonroot
-@@ -29,4 +29,3 @@
- 44 41 0:36 / /home/kzak/.gvfs rw,nosuid,nodev,relatime - fuse.gvfs-fuse-daemon gvfs-fuse-daemon rw,user_id=500,group_id=500
- 45 20 0:37 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw
- 47 20 0:38 / /mnt/sounds rw,relatime - cifs //foo.home/bar/ rw,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--48 20 0:39 / /mnt/foo\040(deleted) rw,relatime - bar /fooooo rw
-diff --git a/tests/ts/libmount/files/mountinfo b/tests/ts/libmount/files/mountinfo
-index c06307183..2b0174048 100644
---- a/tests/ts/libmount/files/mountinfo
-+++ b/tests/ts/libmount/files/mountinfo
-@@ -30,5 +30,4 @@
- 44 41 0:36 / /home/kzak/.gvfs rw,nosuid,nodev,relatime - fuse.gvfs-fuse-daemon gvfs-fuse-daemon rw,user_id=500,group_id=500
- 45 20 0:37 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw
- 47 20 0:38 / /mnt/sounds rw,relatime - cifs //foo.home/bar/ rw,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344
--48 20 0:39 / /mnt/foo\040(deleted) rw,relatime - bar /fooooo rw
- 49 20 0:56 / /mnt/test/foo
bar rw,relatime shared:323 - tmpfs tmpfs rw
--- 
-2.34.0
-
diff --git a/gnu/packages/patches/zlib-cc.patch b/gnu/packages/patches/zlib-cc.patch
new file mode 100644
index 0000000000..6b9666f5b4
--- /dev/null
+++ b/gnu/packages/patches/zlib-cc.patch
@@ -0,0 +1,21 @@
+Fix configure issue that discarded provided CC definition.
+
+Taken from upstream:
+
+  https://github.com/madler/zlib/commit/05796d3d8d5546cf1b4dfe2cd72ab746afae505d
+
+diff --git a/configure b/configure
+index 52ff4a04e..3fa3e8618 100755
+--- a/configure
++++ b/configure
+@@ -174,7 +174,10 @@ if test -z "$CC"; then
+   else
+     cc=${CROSS_PREFIX}cc
+   fi
++else
++  cc=${CC}
+ fi
++
+ cflags=${CFLAGS-"-O3"}
+ # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
+ case "$cc" in
diff --git a/gnu/packages/patches/zlib-correct-crc32-inputs.patch b/gnu/packages/patches/zlib-correct-crc32-inputs.patch
new file mode 100644
index 0000000000..8b09436e2b
--- /dev/null
+++ b/gnu/packages/patches/zlib-correct-crc32-inputs.patch
@@ -0,0 +1,44 @@
+Correct incorrect inputs provided to the CRC functions.
+
+Taken from upstream:
+
+  https://github.com/madler/zlib/commit/ec3df00224d4b396e2ac6586ab5d25f673caa4c2
+
+diff --git a/crc32.c b/crc32.c
+index a1bdce5c2..451887bc7 100644
+--- a/crc32.c
++++ b/crc32.c
+@@ -630,7 +630,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
+ #endif /* DYNAMIC_CRC_TABLE */
+ 
+     /* Pre-condition the CRC */
+-    crc ^= 0xffffffff;
++    crc = (~crc) & 0xffffffff;
+ 
+     /* Compute the CRC up to a word boundary. */
+     while (len && ((z_size_t)buf & 7) != 0) {
+@@ -749,7 +749,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
+ #endif /* DYNAMIC_CRC_TABLE */
+ 
+     /* Pre-condition the CRC */
+-    crc ^= 0xffffffff;
++    crc = (~crc) & 0xffffffff;
+ 
+ #ifdef W
+ 
+@@ -1077,7 +1077,7 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
+ #ifdef DYNAMIC_CRC_TABLE
+     once(&made, make_crc_table);
+ #endif /* DYNAMIC_CRC_TABLE */
+-    return multmodp(x2nmodp(len2, 3), crc1) ^ crc2;
++    return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff);
+ }
+ 
+ /* ========================================================================= */
+@@ -1112,5 +1112,5 @@ uLong crc32_combine_op(crc1, crc2, op)
+     uLong crc2;
+     uLong op;
+ {
+-    return multmodp(op, crc1) ^ crc2;
++    return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
+ }
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index 91e3fad33b..ea6bbb2702 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2022 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,7 +40,7 @@
 (define-public hwdata
   (package
     (name "hwdata")
-    (version "0.357")                   ;updated monthly
+    (version "0.360")                   ;updated monthly
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -48,7 +49,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0kvxpdx14w2myqm3dikjvr2mr4j6767y4v5j8v7kffwvcv0ga9gv"))))
+                "1jm0abqwcz02c3v6z7b4km4swk6yw6fpacip8cg8j7zipmwmhpbl"))))
     (build-system gnu-build-system)
     (outputs '("out" "iab" "oui" "pci" "pnp" "usb"))
     (arguments
@@ -80,20 +81,24 @@ Each database is contained in a specific package output, such as the
 (define-public pciutils
   (package
     (name "pciutils")
-    (version "3.7.0")
+    (version "3.8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "mirror://kernel.org/software/utils/pciutils/pciutils-"
                     version ".tar.xz"))
-              (patches (search-patches "pciutils-hurd-configure.patch"))
               (sha256
                (base32
-                "1ss0rnfsx8gvqjxaji4mvbhf9xyih4cadmgadbwwv8mnx1xvjh4x"))))
+                "01aglgw9ds9qiswcbi2lx90lswncikrlyv8mmp4haix8542bvvci"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'unbundle-pci.ids
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
+             (copy-file (search-input-file (or native-inputs inputs)
+                                           "share/hwdata/pci.ids")
+                        "pci.ids")))
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              ;; There's no 'configure' script, just a raw makefile.
@@ -116,50 +121,50 @@ Each database is contained in a specific package output, such as the
                 (string-append "PREFIX := " (assoc-ref outputs "out")
                                "\n"))
                (("^MANDIR:=.*$")
-                 ;; By default the thing tries to automatically
-                 ;; determine whether to use $prefix/man or
-                 ;; $prefix/share/man, and wrongly so.
+                ;; By default the thing tries to automatically
+                ;; determine whether to use $prefix/man or
+                ;; $prefix/share/man, and wrongly so.
                 (string-append "MANDIR := " (assoc-ref outputs "out")
                                "/share/man\n"))
 
                (("^SHARED=.*$")
                 ;; Build libpciutils.so.
                 "SHARED := yes\n")
+
                (("^ZLIB=.*$")
                 ;; Ask for zlib support, for 'pci.ids.gz' decompression.
                 "ZLIB := yes\n")
 
                (("^IDSDIR=.*$")
                 ;; Installation directory of 'pci.ids.gz'.
-                "IDSDIR = $(SHAREDIR)/hwdata\n"))))
+                "IDSDIR = $(SHAREDIR)/hwdata\n")
+
+               ;; Do not install the update script nor its man page.
+               ((".*INSTALL.*update-pciids .*") "")
+               (("update-pciids update-pciids.8 ") "")
+               (("(.*INSTALL.*)update-pciids.8(.*)" _ head tail)
+                (string-append head tail)))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Install the commands, library, and .pc files.
-             (invoke "make" "install" "install-lib")))
-
-         ,@(if (hurd-target?)
-               '((add-after 'unpack 'apply-hurd-patch
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     (let ((patch (assoc-ref inputs "hurd-patch")))
-                       (invoke "patch" "-p1" "--batch" "-i"
-                               patch)))))
-               '()))
+             (invoke "make" "install" "install-lib"))))
 
        ;; Make sure programs have an RPATH so they can find libpciutils.so.
-       #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
+       #:make-flags (list ,(string-append "CC="
+                                          (if (%current-target-system)
+                                              (cc-for-target)
+                                              "gcc"))
+                          (string-append "LDFLAGS=-Wl,-rpath="
                                          (assoc-ref %outputs "out") "/lib"))
 
        ;; No test suite.
        #:tests? #f))
     (native-inputs
-     (list which pkg-config))
+     (list `(,hwdata "pci") pkg-config which))
     (inputs
      `(,@(if (not (hurd-target?))
              `(("kmod" ,kmod))
              '())
-       ,@(if (hurd-target?)
-             `(("hurd-patch" ,(search-patch "pciutils-hurd-fix.patch")))
-             '())
        ("zlib" ,zlib)))
     (home-page "https://mj.ucw.cz/sw/pciutils/")
     (synopsis "Programs for inspecting and manipulating PCI devices")
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index fdc86e5047..7c53a27685 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -33,99 +33,102 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu))
 
 (define-public pcre
   (package
-   (name "pcre")
-   (version "8.45")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://sourceforge/pcre/pcre/"
-                                version "/pcre-" version ".tar.bz2"))
-            (sha256
-             (base32
-              "1f7zichy6iimmkfrqdl575sdlm795cyc75szgg1vc2xvsbf6zbjd"))))
-   (build-system gnu-build-system)
-   (outputs '("out"           ;library & headers
-              "bin"           ;depends on Readline (adds 20MiB to the closure)
-              "doc"           ;1.8 MiB of HTML
-              "static"))      ;1.8 MiB static libraries
-   (inputs (list bzip2 readline zlib))
-   (arguments
-    `(#:disallowed-references ("doc")
-      #:configure-flags '("--enable-utf"
-                          "--enable-pcregrep-libz"
-                          "--enable-pcregrep-libbz2"
-                          "--enable-pcretest-libreadline"
-                          "--enable-unicode-properties"
-                          "--enable-pcre16"
-                          "--enable-pcre32"
-                          ;; pcretest fails on powerpc32.
-                          ;; riscv64-linux is an unsupported architecture.
-                          ,@(if (or (target-ppc32?)
-                                    (target-riscv64?))
-                              '()
-                              `("--enable-jit")))
-      #:phases (modify-phases %standard-phases
-                 (add-after 'install 'move-static-libs
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     (let ((source (string-append (assoc-ref outputs "out") "/lib"))
-                           (static (string-append (assoc-ref outputs "static") "/lib")))
-                       (mkdir-p static)
-                       (for-each (lambda (lib)
-                                   (link lib (string-append static "/"
-                                                            (basename lib)))
-                                   (delete-file lib))
-                                 (find-files source "\\.a$"))))))))
-   (synopsis "Perl Compatible Regular Expressions")
-   (description
-    "The PCRE library is a set of functions that implement regular expression
+    (name "pcre")
+    (version "8.45")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/pcre/pcre/"
+                                  version "/pcre-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1f7zichy6iimmkfrqdl575sdlm795cyc75szgg1vc2xvsbf6zbjd"))))
+    (build-system gnu-build-system)
+    (outputs '("out"          ;library & headers
+               "bin"          ;depends on Readline (adds 20MiB to the closure)
+               "doc"          ;1.8 MiB of HTML
+               "static"))     ;1.8 MiB static libraries
+    (inputs (list bzip2 readline zlib))
+    (arguments
+     (list
+      #:disallowed-references '("doc")
+      #:configure-flags #~'("--enable-utf"
+                            "--enable-pcregrep-libz"
+                            "--enable-pcregrep-libbz2"
+                            "--enable-pcretest-libreadline"
+                            "--enable-unicode-properties"
+                            "--enable-pcre16"
+                            "--enable-pcre32"
+                            ;; pcretest fails on powerpc32.
+                            ;; riscv64-linux is an unsupported architecture.
+                            #$@(if (or (target-ppc32?) (target-riscv64?))
+                                   #~()
+                                   #~("--enable-jit")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'move-static-libs
+            (lambda _
+              (let ((source (string-append #$output "/lib"))
+                    (static (string-append #$output:static "/lib")))
+                (mkdir-p static)
+                (for-each (lambda (lib)
+                            (link lib (string-append static "/"
+                                                     (basename lib)))
+                            (delete-file lib))
+                          (find-files source "\\.a$"))))))))
+    (synopsis "Perl Compatible Regular Expressions")
+    (description
+     "The PCRE library is a set of functions that implement regular expression
 pattern matching using the same syntax and semantics as Perl 5.  PCRE has its
 own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
-   (license license:bsd-3)
-   (home-page "https://www.pcre.org/")))
+    (license license:bsd-3)
+    (home-page "https://www.pcre.org/")))
 
 (define-public pcre2
   (package
     (name "pcre2")
-    (version "10.37")
+    (version "10.40")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/pcre/pcre2/"
-                                  version "/pcre2-" version ".tar.bz2"))
+              (uri (string-append "https://github.com/PCRE2Project/pcre2"
+                                  "/releases/download/pcre2-" version
+                                  "/pcre2-" version ".tar.bz2"))
               (sha256
                (base32
-                "0w6jaswjmg3bc0wsw6msn5bvk66p90kf2asnnj9rhll0idpak5ad"))))
-   (build-system gnu-build-system)
-   (inputs (list bzip2 readline zlib))
-   (arguments
-    `(#:configure-flags '("--enable-unicode"
-                          "--enable-pcre2grep-libz"
-                          "--enable-pcre2grep-libbz2"
-                          "--enable-pcre2test-libreadline"
-                          "--enable-pcre2-16"
-                          "--enable-pcre2-32"
-                          ;; pcre2_jit_test fails on powerpc32.
-                          ;; riscv64-linux is an unsupported architecture.
-                          ,@(if (or (target-ppc32?)
-                                    (target-riscv64?))
-                              '()
-                              `("--enable-jit"))
-                          "--disable-static")
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'patch-paths
-          (lambda _
-            (substitute* "RunGrepTest"
-              (("/bin/echo") (which "echo"))))))))
-   (synopsis "Perl Compatible Regular Expressions")
-   (description
-    "The PCRE library is a set of functions that implement regular expression
+                "0s4x2l6g0sb9piwkr3sxqwdswz2g6bk1hhwngv0kv4w38wybir0l"))))
+    (build-system gnu-build-system)
+    (inputs (list bzip2 readline zlib))
+    (arguments
+     (list #:configure-flags
+           #~'("--enable-unicode"
+               "--enable-pcre2grep-libz"
+               "--enable-pcre2grep-libbz2"
+               "--enable-pcre2test-libreadline"
+               "--enable-pcre2-16"
+               "--enable-pcre2-32"
+               ;; pcre2_jit_test fails on powerpc32.
+               ;; riscv64-linux is an unsupported architecture.
+               #$@(if (or (target-ppc32?) (target-riscv64?))
+                      #~()
+                      #~("--enable-jit"))
+               "--disable-static")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-paths
+                 (lambda _
+                   (substitute* "RunGrepTest"
+                     (("/bin/echo") (which "echo"))))))))
+    (synopsis "Perl Compatible Regular Expressions")
+    (description
+     "The PCRE library is a set of functions that implement regular expression
 pattern matching using the same syntax and semantics as Perl 5.  PCRE has its
 own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
-   (license license:bsd-3)
-   (home-page "https://www.pcre.org/")))
+    (license license:bsd-3)
+    (home-page "https://www.pcre.org/")))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 73ae2c2d0f..3580476e33 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -82,6 +82,7 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages man)
   #:use-module (gnu packages markup)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
@@ -226,29 +227,30 @@ please install the @code{flyer-composer-gui} package.")))
 (define-public poppler
   (package
    (name "poppler")
-   (version "21.07.0")
+   (version "22.09.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://poppler.freedesktop.org/poppler-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1m54hsi8z6c13jdbjwz55flkra1mahmkw2igavbf8p86d2gv4sp2"))))
+              "0bhyli95h3dkirjc0ibh08s4nim6rn7f38sbfzdwln8k454gga6p"))))
    (build-system cmake-build-system)
    ;; FIXME:
    ;;  use libcurl:        no
-   (inputs `(("fontconfig" ,fontconfig)
-             ("freetype" ,freetype)
-             ("libjpeg" ,libjpeg-turbo)
-             ("libpng" ,libpng)
-             ("libtiff" ,libtiff)
-             ("lcms" ,lcms)
-             ("openjpeg" ,openjpeg)
-             ("zlib" ,zlib)
-
-             ;; To build poppler-glib (as needed by Evince), we need Cairo and
-             ;; GLib.  But of course, that Cairo must not depend on Poppler.
-             ("cairo" ,cairo-sans-poppler)))
+   (inputs (list fontconfig
+                 freetype
+                 libjpeg-turbo
+                 libpng
+                 libtiff
+                 lcms
+                 nss                              ;for 'pdfsig'
+                 openjpeg
+                 poppler-data
+                 zlib
+                 ;; To build poppler-glib (as needed by Evince), we need Cairo and
+                 ;; GLib.  But of course, that Cairo must not depend on Poppler.
+                 cairo-sans-poppler))
    (propagated-inputs
     ;; As per poppler-cairo and poppler-glib.pc.
     ;; XXX: Ideally we'd propagate Cairo too, but that would require a
@@ -257,24 +259,26 @@ please install the @code{flyer-composer-gui} package.")))
    (native-inputs
       (list pkg-config
             `(,glib "bin") ; glib-mkenums, etc.
-            gobject-introspection))
+            gobject-introspection
+            python))
    (arguments
-    `(#:tests? #f                      ;no test data provided with the tarball
-      #:configure-flags
-      (let* ((out (assoc-ref %outputs "out"))
-             (lib (string-append out "/lib")))
-        (list "-DENABLE_UNSTABLE_API_ABI_HEADERS=ON" ;to install header files
-              "-DENABLE_ZLIB=ON"
-              "-DENABLE_BOOST=OFF"      ;disable Boost to save size
-              (string-append "-DCMAKE_INSTALL_LIBDIR=" lib)
-              (string-append "-DCMAKE_INSTALL_RPATH=" lib)))
-      ,@(if (%current-target-system)
-            `(#:phases
-              (modify-phases %standard-phases
-                (add-after 'unpack 'set-PKG_CONFIG
-                  (lambda _
-                    (setenv "PKG_CONFIG" ,(pkg-config-for-target))))))
-            '())))
+    (list
+     ;; The Poppler test suite needs to be downloaded separately and contains
+     ;; non-free (and non-auditable) files, so we skip them.  See
+     ;; <https://lists.gnu.org/archive/html/guix-devel/2022-06/msg00394.html>.
+     #:tests? #f
+     #:configure-flags
+     #~(list "-DENABLE_UNSTABLE_API_ABI_HEADERS=ON" ;to install header files
+             "-DENABLE_ZLIB=ON"
+             "-DENABLE_BOOST=OFF"      ;disable Boost to save size
+             (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib")
+             (string-append "-DCMAKE_INSTALL_RPATH=" #$output "/lib"))
+     #:phases
+     (if (%current-target-system) #~%standard-phases
+         #~(modify-phases %standard-phases
+             (add-after 'unpack 'set-PKG_CONFIG
+               (lambda _
+                 (setenv "PKG_CONFIG" #$(pkg-config-for-target))))))))
    (synopsis "PDF rendering library")
    (description
     "Poppler is a PDF rendering library based on the xpdf-3.0 code base.")
@@ -840,46 +844,58 @@ line tools for batch rendering @command{pdfdraw}, rewriting files
 
 (define-public qpdf
   (package
-   (name "qpdf")
-   (version "10.0.1")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version
-                                "/qpdf-" version ".tar.gz"))
-            (sha256
-             (base32
-              "0yw2cpw7ygfd6jlgpwbi8vsnvv9p55zxp9h17x77z2qq733pf8jx"))))
-   (build-system gnu-build-system)
-   (arguments
-    `(#:disallowed-references (,perl)
+    (name "qpdf")
+    (version "10.6.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version
+                                  "/qpdf-" version ".tar.gz"))
+              (sha256
+               (base32
+                "049q94rzlcbdr09rvl8xfj3924mk7rfm35x8cg4nisl4lnr27z78"))
+              (modules '((guix build utils)))
+              (snippet
+               #~(begin
+                   ;; grep 3.8 emits a warning about 'egrep' being deprecated
+                   ;; which breaks some tests.  Adjust accordingly.
+                   ;; Try removing this for QPDF >= 11.
+                   (substitute* '("build-scripts/build-doc"
+                                  "qpdf/qtest/qpdf/diff-encrypted"
+                                  "qpdf/qtest/qpdf/diff-ignore-ID-version")
+                     (("egrep")
+                      "grep -E"))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:disallowed-references (list perl)
       #:phases
-      (modify-phases %standard-phases
-        (add-before 'configure 'patch-paths
-          (lambda _
-            (substitute* "make/libtool.mk"
-              (("SHELL=/bin/bash")
-               (string-append "SHELL=" (which "bash"))))
-            (substitute* (append
-                          '("qtest/bin/qtest-driver")
-                          (find-files "." "\\.test"))
-              (("/usr/bin/env") (which "env")))
-            #t)))))
-   (native-inputs
-    (list pkg-config perl))
-   (propagated-inputs
-    ;; In Requires.private of libqpdf.pc.
-    (list libjpeg-turbo zlib))
-   (synopsis "Command-line tools and library for transforming PDF files")
-   (description
-    "QPDF is a command-line program that does structural, content-preserving
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "make/libtool.mk"
+                (("SHELL=/bin/bash")
+                 (string-append "SHELL="
+                                (search-input-file inputs "/bin/bash"))))
+              (substitute*
+                  (append '("qtest/bin/qtest-driver")
+                      (find-files "." "\\.test"))
+                (("/usr/bin/env") (which "env"))))))))
+    (native-inputs
+     (list perl pkg-config))
+    (propagated-inputs
+     ;; In Requires.private of libqpdf.pc.
+     (list libjpeg-turbo zlib))
+    (synopsis "Command-line tools and library for transforming PDF files")
+    (description
+     "QPDF is a command-line program that does structural, content-preserving
 transformations on PDF files.  It could have been called something like
 pdf-to-pdf.  It includes support for merging and splitting PDFs and to
 manipulate the list of pages in a PDF file.  It is not a PDF viewer or a
 program capable of converting PDF into other formats.")
-   ;; Prior to the 7.0 release, QPDF was licensed under Artistic 2.0.
-   ;; Users can still choose to use the old license at their option.
-   (license (list license:asl2.0 license:clarified-artistic))
-   (home-page "http://qpdf.sourceforge.net/")))
+    ;; Prior to the 7.0 release, QPDF was licensed under Artistic 2.0.
+    ;; Users can still choose to use the old license at their option.
+    (license (list license:asl2.0 license:clarified-artistic))
+    (home-page "http://qpdf.sourceforge.net/")))
 
 (define-public qpdfview
   (package
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 6eab98ab74..dea2e138cb 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -96,14 +96,14 @@
   ;; Yeah, Perl...  It is required early in the bootstrap process by Linux.
   (package
     (name "perl")
-    (version "5.34.0")
+    (version "5.36.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/src/5.0/perl-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "16mywn5afpv1mczv9dlc1w84rbgjgrr0pyr4c0hhb2wnif0zq7jm"))
+               "02p0ljvxgay5g8s8j1kghdylkj581qx3qlwavlmgd5n3iapqaq72"))
              (patches (search-patches
                        "perl-no-sys-dirs.patch"
                        "perl-autosplit-default-time.patch"
@@ -242,10 +242,10 @@
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/arsv/perl-cross")
-                     (commit "1.3.6")))
-               (file-name (git-file-name "perl-cross" "1.3.6"))
+                     (commit "1.4")))
+               (file-name (git-file-name "perl-cross" "1.4"))
                (sha256
-                (base32 "0k5vyj40czbkfl7r3dcwxpc7dvdlp2xliaav358bviq3dq9vq9bb")))))
+                (base32 "1ydjvlhrk06ccyj4bm8by7xk90krsll2k380mc3x1mhfrc7r9gzy")))))
          '()))
     (native-search-paths (list (search-path-specification
                                 (variable "PERL5LIB")
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index a5e1a1ad55..4dcf4802a2 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -302,19 +302,19 @@ colors, styles, options and details.")
                   texlive-epsf
                   texlive-etoolbox
                   texlive-fonts-ec
-                  texlive-generic-infwarerr
-                  texlive-generic-kvdefinekeys
+                  texlive-infwarerr
+                  texlive-kvdefinekeys
                   texlive-grfext
                   texlive-hyperref
                   texlive-latex-base
                   texlive-latex-geometry
-                  texlive-latex-graphics
-                  texlive-latex-kvoptions
+                  texlive-graphics
+                  texlive-kvoptions
                   texlive-latex-media9
-                  texlive-latex-ocgx2
-                  texlive-latex-pdftexcmds
                   texlive-oberdiek      ;for ifluatex
+                  texlive-latex-ocgx2
                   texlive-latex-parskip
+                  texlive-pdftexcmds
                   texlive-tex-texinfo))))
     (inputs
      (list fftw
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index a5c1b0dc98..6fe7824a57 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -8,9 +8,9 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
 ;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,11 +28,11 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages polkit)
-  #:use-module ((guix licenses) #:select (lgpl2.0+))
-  #:use-module (guix packages)
-  #:use-module (guix gexp)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix memoization)
+  #:use-module ((guix licenses) #:select (lgpl2.0+))
+  #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (guix build utils)
   #:use-module (guix build-system cmake)
@@ -40,92 +40,130 @@
   #:use-module (guix build-system meson)
   #:use-module (gnu packages)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages docker)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages docbook)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages javascript)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
-  #:use-module (gnu packages xml)
-  #:export (polkit))
+  #:use-module (gnu packages xml))
 
-(define-public polkit-mozjs
+(define-public polkit
   (package
     (name "polkit")
     (version "121")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://www.freedesktop.org/software/polkit/releases/"
-                   name "-" version ".tar.gz"))
-             (patches (search-patches "polkit-disable-systemd.patch"))
-             (sha256
-              (base32
-               "1apz3bh7nbpmlp1cr00pb8z8wp0c7yb23ninb959jz3r38saxiwx"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                 ;; Disable a test that requires Python, D-Bus and a few
-                 ;; libraries and fails with "ERROR: timed out waiting for bus
-                 ;; process to terminate".
-                 (substitute* "test/meson.build"
-                   (("subdir\\('polkitbackend'\\)")
-                    ""))
-                 ;; Look up actions and rules from /etc/polkit ...
-                 (substitute* "src/polkitbackend/meson.build"
-                   (("'-DPACKAGE_SYSCONF_DIR=.*,")
-                    "'-DPACKAGE_SYSCONF_DIR=\"/etc\"',"))
-                 (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c"
-                   (("PACKAGE_DATA_DIR \"/polkit-1/actions\"")
-                    "PACKAGE_SYSCONF_DIR \"/polkit-1/actions\""))
-                 ;; ... but install package files below the prefix.
-                 (substitute* "meson.build"
-                   (("pk_sysconfdir = get_option\\('sysconfdir'\\)")
-                    "pk_sysconfdir = get_option('prefix') + '/etc'"))
-                 ;; Set the setuid helper's real location.
-                 (substitute* "src/polkitagent/polkitagentsession.c"
-                   (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"")
-                    "\"/run/setuid-programs/polkit-agent-helper-1\""))))))
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.freedesktop.org/software/polkit/releases/"
+                    name "-" version ".tar.gz"))
+              (patches (search-patches "polkit-disable-systemd.patch"))
+              (sha256
+               (base32
+                "1apz3bh7nbpmlp1cr00pb8z8wp0c7yb23ninb959jz3r38saxiwx"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; This is so that the default example rules files can be
+                  ;; installed along the package; otherwise it would fail
+                  ;; attempting to write to /etc.  Unlike with GNU Autotools,
+                  ;; Meson can't override the pkgsysconfdir value at install
+                  ;; time; instead, we rewrite the pkgsysconfdir references
+                  ;; in the build system to point to #$output/etc.
+                  ;; Look up actions and rules from /etc/polkit ...
+                  (substitute* "src/polkitbackend/meson.build"
+                    (("'-DPACKAGE_SYSCONF_DIR=.*,")
+                     "'-DPACKAGE_SYSCONF_DIR=\"/etc\"',"))
+                  (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c"
+                    (("PACKAGE_DATA_DIR \"/polkit-1/actions\"")
+                     "PACKAGE_SYSCONF_DIR \"/polkit-1/actions\""))
+                  ;; ... but install package files below the prefix.
+                  (substitute* "meson.build"
+                    (("pk_sysconfdir = get_option\\('sysconfdir'\\)")
+                     "pk_sysconfdir = get_option('prefix') + '/etc'"))
+                  ;; Set the setuid helper's real location.
+                  (substitute* "src/polkitagent/polkitagentsession.c"
+                    (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"")
+                     "\"/run/setuid-programs/polkit-agent-helper-1\""))))))
     (build-system meson-build-system)
+    (arguments
+     (list
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build syscalls))
+      #:modules '((guix build meson-build-system)
+                  (guix build syscalls)
+                  (guix build utils)
+                  (ice-9 match))
+      #:configure-flags
+      #~(list "--sysconfdir=/etc"
+              "-Dsession_tracking=libelogind"
+              "-Dman=true"
+              "-Dtests=true"
+              ;; Work around cross-compilation failure.  The build system
+              ;; probes for the _target_ gobject-introspection, but if we
+              ;; change it to native, Meson fails with:
+              ;;   ERROR: Pkg-config binary for machine
+              ;;   MachineChoice.BUILD not found, giving up.
+              ;; Just disable introspection for now.
+              #$@(if (%current-target-system)
+                     '("-Dintrospection=false")
+                     '()))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'patch-bash
+            (lambda _
+              (substitute* (list "subprojects/mocklibc-1.0/bin/mocklibc"
+                                 (string-append "../polkit-v." #$version
+                                                "/test/data/etc/passwd")
+                                 (string-append "../polkit-v." #$version
+                                                "/test/data/etc/polkit-1"
+                                                "/rules.d/10-testing.rules"))
+                (("/bin/(bash|false|true)" _ command)
+                 (which command)))))
+          (replace 'check
+            (lambda* (#:key tests? test-options #:allow-other-keys)
+              (when tests?
+                ;; Run the test suite through tini to ensure signals are
+                ;; properly handled and zombie processes reaped.
+                (match (primitive-fork)
+                  (0                    ;child process
+                   (set-child-subreaper!)
+                   ;; Use tini so that signals are properly handled and
+                   ;; doubly-forked processes get reaped; otherwise,
+                   ;; python-dbusmock would waste time polling for the dbus
+                   ;; processes it spawns to be reaped, in vain.
+                   (apply execlp "tini" "--"
+                          "meson" "--" "test" "-t" "0" "--print-errorlogs"
+                          test-options))
+                  (pid
+                   (match (waitpid pid)
+                     ((_ . status)
+                      (unless (zero? status)
+                        (error "`meson test' exited with status"
+                               status))))))))))))
     (inputs
-     (list elogind
-           expat
-           linux-pam
-           mozjs-91
-           nspr))
+     (list duktape expat elogind linux-pam nspr))
     (propagated-inputs
      (list glib))                       ;required by polkit-gobject-1.pc
     (native-inputs
-     (list pkg-config
-           gettext-minimal
-           perl
+     (list gettext-minimal
            `(,glib "bin")               ;for glib-mkenums
+           docbook-xsl                  ;for man page generation
            gobject-introspection
-           libxml2                      ;for man page generation
+           libxml2                      ;for XML_CATALOG_FILES
            libxslt                      ;for man page generation
-           docbook-xsl))                ;for man page generation
-    (arguments
-     (list #:configure-flags
-           #~'("--sysconfdir=/etc"
-               "-Dsession_tracking=libelogind"
-               "-Dman=true"
-               "-Dtests=true"
-               "-Djs_engine=mozjs"
-               ;; Work around broken gobject-introspection detection when
-               ;; cross-compiling.  The build system probes for the _target_
-               ;; gobject-introspection, but if we change it to native, Meson
-               ;; fails with:
-               ;; ERROR: Pkg-config binary for machine MachineChoice.BUILD
-               ;; not found, giving up.
-               ;; Just disable introspection for now.
-               #$@(if (%current-target-system)
-                      '("-Dintrospection=false")
-                      '()))))
+           perl
+           pkg-config
+           python
+           python-dbusmock
+           tini))
     (home-page "https://www.freedesktop.org/wiki/Software/polkit/")
     (synopsis "Authorization API for privilege management")
     (description "Polkit is an application-level toolkit for defining and
@@ -135,36 +173,6 @@ making process with respect to granting access to privileged operations
 for unprivileged applications.")
     (license lgpl2.0+)))
 
-;;; Variant of polkit built with Duktape, a lighter JavaScript engine compared
-;;; to mozjs.
-(define-public polkit-duktape
-  (let ((base polkit-mozjs))
-    (package/inherit base
-      (name "polkit-duktape")
-      (arguments
-       (substitute-keyword-arguments (package-arguments base)
-         ((#:configure-flags flags)
-          #~(delete "-Djs_engine=mozjs" #$flags))))
-      (inputs
-       (modify-inputs (package-inputs base)
-         (replace "mozjs" duktape))))))
-
-(define polkit-for-system
-  (mlambda (system)
-    "Return a polkit package that can be built for SYSTEM; that is, either the
-regular polkit that requires mozjs or its duktape variant."
-    (if (string-prefix? "x86_64" system)
-        polkit-mozjs
-        polkit-duktape)))
-
-;;; Define a top level polkit variable that can be built on any of the
-;;; supported platforms.  This is to work around the fact that our
-;;; mrustc-bootstrapped rust toolchain currently only supports the x86_64
-;;; architecture.
-(define-syntax polkit
-  (identifier-syntax (polkit-for-system
-                      (or (%current-target-system) (%current-system)))))
-
 (define-public polkit-qt
   (package
     (name "polkit-qt")
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 9745a9ba10..5752942e3b 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -266,6 +266,7 @@ to @code{IOStreams}.")
       (method url-fetch)
       (uri (string-append "mirror://gnu/src-highlite/source-highlight-"
                           version ".tar.gz"))
+      (patches (search-patches "source-highlight-gcc-compat.patch"))
       (sha256
        (base32
         "148w47k3zswbxvhg83z38ifi85f9dqcpg7icvvw1cm6bg21x4zrs"))))
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index 96ba13d484..bb5ebeb920 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,6 +35,7 @@
 (define-module (gnu packages pulseaudio)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix l:)
@@ -178,57 +180,55 @@ rates.")
 (define-public pulseaudio
   (package
     (name "pulseaudio")
-    (version "15.0")
+    (version "16.1")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://freedesktop.org/software/pulseaudio/releases/"
-                   name "-" version ".tar.xz"))
-             (sha256
-              (base32
-               "1851rg4h6sjwanvd294hn52z321rc6vbs4gbfrlw53597dx8h2x4"))
-             (modules '((guix build utils)))
-             (snippet
-              ;; Disable console-kit support by default since it's deprecated
-              ;; anyway.
-              '(begin
-                 (substitute* "src/daemon/default.pa.in"
-                   (("load-module module-console-kit" all)
-                    (string-append "#" all "\n")))
-                 #t))
-             (patches (search-patches
-                       "pulseaudio-fix-mult-test.patch"
-                       "pulseaudio-longer-test-timeout.patch"))))
+              (method url-fetch)
+              (uri (string-append
+                    "https://freedesktop.org/software/pulseaudio/releases/"
+                    name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1r2aa0g7al9jhrrbrnih6i3bfznd73kkbafrbzwpjyflj7735vwf"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Disable console-kit support by default since it's deprecated
+               ;; anyway.
+               '(substitute* "src/daemon/default.pa.in"
+                  (("load-module module-console-kit" all)
+                   (string-append "#" all "\n"))))
+              (patches (search-patches
+                        "pulseaudio-fix-mult-test.patch"
+                        "pulseaudio-longer-test-timeout.patch"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
-       (let ((out (assoc-ref %outputs "out")))
-         (list "-Doss-output=disabled"
-               "-Dlocalstatedir=/var"
-               (string-append "-Dudevrulesdir="
-                              out "/lib/udev/rules.d")
-               ;; Ensure the RUNPATH contains all installed library locations.
-               (string-append "-Dc_link_args=-Wl,-rpath="
-                              out "/lib/pulseaudio:"
-                              out "/lib:"
-                              out "/lib/pulse-" ,version "/modules")))
-       #:phases (modify-phases %standard-phases
-                 (add-before 'check 'pre-check
-                   (lambda _
-                     ;; 'tests/lock-autospawn-test.c' wants to create a file
-                     ;; under ~/.config/pulse.
-                     (setenv "HOME" (getcwd))
-                     ;; 'thread-test' needs more time on hydra and on slower
-                     ;; machines, so we set the default timeout to 120 seconds.
-                     (setenv "CK_DEFAULT_TIMEOUT" "120")
-                     #t)))))
+     (list
+      #:configure-flags
+      #~(list "-Doss-output=disabled"
+              "-Dlocalstatedir=/var"
+              (string-append "-Dudevrulesdir="
+                             #$output "/lib/udev/rules.d")
+              ;; Ensure the RUNPATH contains all installed library locations.
+              (string-append "-Dc_link_args=-Wl,-rpath="
+                             #$output "/lib/pulseaudio:"
+                             #$output "/lib:"
+                             #$output "/lib/pulse-" #$version "/modules"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; 'tests/lock-autospawn-test.c' wants to create a file
+              ;; under ~/.config/pulse.
+              (setenv "HOME" (getcwd))
+              ;; 'thread-test' needs more time on hydra and on slower
+              ;; machines, so we set the default timeout to 120 seconds.
+              (setenv "CK_DEFAULT_TIMEOUT" "120"))))))
     (inputs
      (list alsa-lib
            bluez
            sbc
            speexdsp
            libsndfile
-           jack-1 ; For routing the output to jack.
+           jack-1                       ; For routing the output to jack.
            dbus
            glib
            libltdl
@@ -241,16 +241,16 @@ rates.")
            libxcb
            libxtst
            elogind
-           eudev))         ;for the detection of hardware audio devices
+           eudev))                ;for the detection of hardware audio devices
     (native-inputs
-     `(("check" ,check)
-       ("doxygen" ,doxygen)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("m4" ,m4)
-       ("perl" ,perl)
-       ("perl-xml-parser" ,perl-xml-parser)
-       ("pkg-config" ,pkg-config)))
+     (list check
+           doxygen
+           gettext-minimal
+           `(,glib "bin")
+           m4
+           perl
+           perl-xml-parser
+           pkg-config))
     (propagated-inputs
      ;; 'libpulse*.la' contain `-ltdb' and `-lcap', so propagate them.
      (list libcap tdb))
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 2358e7448d..77ddaf00b0 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -172,9 +172,9 @@ tests in cram.")
                (add-installed-pythonpath inputs outputs)
                (invoke "pytest")))))))
     (native-inputs
-     (list python-pytest-flake8 python-pytest-xdist-next python-tabulate))
+     (list python-pytest-flake8 python-pytest-xdist python-tabulate))
     (propagated-inputs
-     (list python-pytest-6 python-six))
+     (list python-pytest python-six))
     (home-page "https://github.com/nicoulaj/pytest-csv")
     (synopsis "CSV reporter for Pytest")
     (description "This package provides a plugin for Pytest that enables a
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 255c5d67ec..9bdc139f21 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -1203,7 +1203,7 @@ and that could be anything you want.")
                (add-installed-pythonpath inputs outputs)
                (invoke "python" "-m" "pytest" "-vv" "test")))))))
     (native-inputs
-     (list python-hypothesis-next python-pytest))
+     (list python-hypothesis python-pytest))
     (propagated-inputs
      (list python-hpack python-hyperframe))
     (home-page "https://github.com/python-hyper/h2")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e149e8d6b2..72bb841208 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3088,6 +3088,7 @@ and is not compatible with JSON.")
     (build-system python-build-system)
     (arguments
      (list
+      #:tests? #f                       ;TODO: Circular dependency on pytest
       #:phases
       #~(modify-phases %standard-phases
           ;; XXX: PEP 517 manual build/install procedures copied from
@@ -3107,7 +3108,7 @@ and is not compatible with JSON.")
             (lambda* (#:key tests? #:allow-other-keys)
               (when tests?
                 (invoke "pytest" "-vv" "tests")))))))
-    (native-inputs (list python-flit-scm python-pypa-build python-pytest))
+    (native-inputs (list python-flit-scm python-pypa-build))
     (home-page "https://github.com/agronholm/exceptiongroup")
     (synopsis "PEP 654 backport from Python 3.11")
     (description "This is a backport of the @code{BaseExceptionGroup} and
@@ -3270,14 +3271,14 @@ port forwards using @acronym{UPnP, Universal Plug and Play}.")
 (define-public python-py
   (package
     (name "python-py")
-    (version "1.10.0")
+    (version "1.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "py" version))
        (sha256
         (base32
-         "1lqvkqk3b440g9z82gqbzlzas84wrm6ir8kplzhzavmn2pd1pf11"))))
+         "06c7m7sfcn7587xd4s2bng8m6q1gsfd3j93afhplfjq74r0mrisi"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: "ImportError: 'test' module incorrectly imported from
@@ -3974,14 +3975,14 @@ e.g. filters, callbacks and errbacks can all be promises.")
 (define-public python-markupsafe
   (package
     (name "python-markupsafe")
-    (version "2.0.1")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "MarkupSafe" version))
        (sha256
         (base32
-         "02k2ynmqvvd0z0gakkf8s4idyb606r7zgga41jrkhqmigy06fk2r"))))
+         "0jqxp5sfrc0byp6bk0gwdmildi4mck2gprp42afri3z4r5y1k4bz"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -5625,7 +5626,7 @@ writing C extensions for Python as easy as Python itself.")
 (define-public python-numpy
   (package
     (name "python-numpy")
-    (version "1.21.6")
+    (version "1.23.2")
     (source
      (origin
        (method url-fetch)
@@ -5634,7 +5635,7 @@ writing C extensions for Python as easy as Python itself.")
              version "/numpy-" version ".tar.gz"))
        (sha256
         (base32
-         "0b0c5y35rd3mvwfk5is1d5ppfw9nl4d2rgx9xkwh1p0w394wdvyl"))))
+         "00bx3idjwhmzkdawg2dx1bp0316ig37jfx0dm82bvyv1hbj013dp"))))
     (build-system python-build-system)
     (arguments
      (list
@@ -5656,7 +5657,10 @@ writing C extensions for Python as easy as Python itself.")
 [openblas]
 libraries = openblas
 library_dirs = ~a/lib
-include_dirs = ~:*~a/include~%" #$(this-package-input "openblas"))))))
+include_dirs = ~:*~a/include~%"
+                          (dirname (dirname
+                                    (search-input-file
+                                     inputs "include/openblas_config.h"))))))))
           (add-before 'build 'fix-executable-paths
             (lambda* (#:key inputs #:allow-other-keys)
               ;; Make /gnu/store/...-bash-.../bin/sh the default shell,
@@ -5680,7 +5684,11 @@ include_dirs = ~:*~a/include~%" #$(this-package-input "openblas"))))))
                               ;; These tests may fail on 32-bit systems (see:
                               ;; https://github.com/numpy/numpy/issues/18387).
                               "not test_float_remainder_overflow "
-                              "and not test_pareto"
+                              "and not test_pareto "
+                              ;; The 'test_rint_big_int' test fails on older
+                              ;; x86_64 CPUs such as the Core 2 Duo (see:
+                              ;; https://github.com/numpy/numpy/issues/22170).
+                              "and not test_rint_big_int "
                               ;; These tests seem to fail on machines without
                               ;; an FPU is still under investigation upstream.
                               ;; https://github.com/numpy/numpy/issues/20635
@@ -5690,9 +5698,10 @@ include_dirs = ~:*~a/include~%" #$(this-package-input "openblas"))))))
                                    '())))))))))
     (native-inputs
      (list python-cython
-           python-hypothesis-next
+           python-hypothesis
            python-pytest
            python-pytest-xdist
+           python-typing-extensions
            gfortran))
     (inputs (list bash openblas))
     (home-page "https://numpy.org")
@@ -5706,22 +5715,6 @@ capabilities.")
      '((upstream-name . "numpy")))
     (license license:bsd-3)))
 
-(define-public python-numpy-next
-  (package
-    (inherit python-numpy)
-    (name "python-numpy-next")
-    (version "1.22.3")
-    (source
-     (origin
-       (inherit (package-source python-numpy))
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/numpy/numpy/releases/download/v"
-             version "/numpy-" version ".tar.gz"))
-       (sha256
-        (base32
-         "19dw91pqbqcniw2z57kiyqs1qp56g7kqy1bdyv664g8s62sc01m9"))))))
-
 (define-public python-numpy-documentation
   (package
     (inherit python-numpy)
@@ -6975,31 +6968,43 @@ by pycodestyle.")
 (define-public python-distlib
   (package
     (name "python-distlib")
-    (version "0.3.1")
+    (version "0.3.5")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "distlib" version ".zip"))
+       (uri (pypi-uri "distlib" version))
        (sha256
         (base32
-         "1wdzv7fsjhrkhh1wfkarlhcwa8m00mgcpdsvknmf2qy8f9l13xpd"))))
+         "1zmjraasgqkz0gfv4mc4w4fj4k2fxj62h1pf5dgb5qqbqwvmgxx7"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'no-/bin/sh
-           (lambda _
-             (substitute* '("distlib/scripts.py" "tests/test_scripts.py")
-               (("/bin/sh") (which "sh")))
-             #t))
-         (add-before 'check 'prepare-test-env
-           (lambda _
-             (setenv "HOME" "/tmp")
-             ;; NOTE: Any value works, the variable just has to be present.
-             (setenv "SKIP_ONLINE" "1")
-             #t)))))
-    (native-inputs (list unzip))
-    (home-page "https://bitbucket.org/pypa/distlib")
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'build
+            (lambda _
+              ;; ZIP does not support timestamps before 1980.
+              (setenv "SOURCE_DATE_EPOCH" "315532800")
+              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
+          (add-before 'build 'no-/bin/sh
+            (lambda _
+              (substitute* '("distlib/scripts.py" "tests/test_scripts.py")
+                (("/bin/sh") (which "sh")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (setenv "HOME" "/tmp")
+              ;; NOTE: Any value works, the variable just has to be present.
+              (setenv "SKIP_ONLINE" "1")
+              (when tests?
+                (invoke "pytest" "-vv"))))
+          (replace 'install
+            (lambda _
+              (let ((whl (car (find-files "dist" "\\.whl$"))))
+                (invoke "pip" "--no-cache-dir" "--no-input"
+                        "install" "--no-deps" "--prefix" #$output whl)))))))
+    (native-inputs
+     (list python-pypa-build python-pytest))
+    (home-page "https://github.com/pypa/distlib")
     (synopsis "Distribution utilities")
     (description "Distlib is a library which implements low-level functions that
 relate to packaging and distribution of Python software.  It is intended to be
@@ -11319,13 +11324,13 @@ number of lines in the contained files easily.")
   (hidden-package
    (package
      (name "python-fonttools")
-     (version "4.28.5")
+     (version "4.37.1")
      (source (origin
                (method url-fetch)
                (uri (pypi-uri "fonttools" version ".zip"))
                (sha256
                 (base32
-                 "1jhl5n3rfqq7fznvsh6r80n7ylap1a7ppq1040y8cflhyz80ap2l"))))
+                 "1ryc1wca2v92wn24baryj5fr32lspl8rbsig32fnkxp1islf21j6"))))
      (build-system python-build-system)
      (native-inputs
       (list unzip))
@@ -11378,18 +11383,6 @@ from an XML-based format.")
            python-zopfli))
     (properties (alist-delete 'hidden? (package-properties python-fonttools)))))
 
-(define-public python-fonttools-next
-  (package
-    (inherit python-fonttools-full)
-    (version "4.32.0")
-    (source (origin
-              (inherit (package-source python-fonttools-full))
-              (method url-fetch)
-              (uri (pypi-uri "fonttools" version ".zip"))
-              (sha256
-               (base32
-                "14nk43z0dmznypm3zp4sdc04x1y608jawlnmwdkk32a947khvaar"))))))
-
 (define-public python-ly
   (package
     (name "python-ly")
@@ -13319,7 +13312,8 @@ time.")
      (list python-ipykernel
            ;; Adding ipywidgets would create a cycle.
            ;;python-ipywidgets
-           ;;python-pyppeteer    ;TODO: package me
+           ;; XXX: Disabled, not in guix.
+           ;;python-pyppeteer
            python-pytest
            python-pytest-xdist))
     (propagated-inputs
@@ -13345,14 +13339,14 @@ time.")
            texlive-caption
            texlive-enumitem
            texlive-fontspec
-           texlive-generic-iftex
+           texlive-iftex
            texlive-grffile
            texlive-hyperref
-           texlive-latex-fancyvrb
+           texlive-fancyvrb
            texlive-latex-float
            texlive-latex-geometry
            texlive-latex-jknapltx
-           texlive-latex-ms
+           texlive-ms
            texlive-latex-parskip
            texlive-latex-trimspaces
            texlive-latex-upquote
@@ -15071,27 +15065,27 @@ of @acronym{REGEXPs, regular expressions}.")
 (define-public python-mako
   (package
     (name "python-mako")
-    (version "1.1.3")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Mako" version))
        (sha256
         (base32
-         "09ywrmhr6gdyfx6d5727wwjnz73i6rklqcb4c14m7sqc830wi5c1"))))
+         "01q3gdqpxqcxdhacrzrwk6fjpd1krdr73i7cm4d2yja38zzsam7h"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (replace 'check
                     (lambda* (#:key tests? #:allow-other-keys)
                       (if tests?
-                          (invoke "nosetests" "-v")
+                          (invoke "pytest" "-vv")
                           (format #t "test suite not run~%"))
                       #t)))))
     (propagated-inputs
      (list python-markupsafe))
     (native-inputs
-     (list python-mock python-nose))
+     (list python-mock python-pytest))
     (home-page "https://www.makotemplates.org/")
     (synopsis "Templating language for Python")
     (description "Mako is a templating language for Python that compiles
@@ -15646,7 +15640,7 @@ way.")
                (base32
                 "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w"))))
     (build-system python-build-system)
-    (native-inputs (list python-pytest-6))
+    (native-inputs (list python-pytest))
     (home-page "https://software.clapper.org/munkres/")
     (synopsis "Implementation of the Munkres algorithm")
     (description "The Munkres module provides an implementation of the Munkres
@@ -15945,9 +15939,7 @@ syntax highlighting, markdown and more to the terminal.")
      (list which))
     (inputs
      ;; python-magic needs to be able to find libmagic.so.
-     ;; Use a newer version because 5.39 returns bogus for some archives
-     ;; (notably Chromium .crx extensions), which breaks e.g. 'diffoscope'.
-     (list file-next))
+     (list file))
     (synopsis "File type identification using libmagic")
     (description
      "This module uses ctypes to access the libmagic file type
@@ -16874,7 +16866,7 @@ strings require only one extra byte in addition to the strings themselves.")
                         ;; build system and new Rust dependencies.
                         "--ignore" "tests/test_preconf.py")))))))
     (native-inputs
-     (list python-hypothesis-next
+     (list python-hypothesis
            python-immutables
            python-msgpack
            python-poetry-core
@@ -21673,26 +21665,19 @@ with PEP 484 argument (and return) type annotations.")
 (define-public python-typing-extensions
   (package
     (name "python-typing-extensions")
-    (version "4.0.1")
+    (version "4.3.0")
     (source (origin
-              ;; The test script is missing from the PyPI archive.
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/python/typing")
-                    (commit version)))
-              (file-name (git-file-name name version))
+              (method url-fetch)
+              (uri (pypi-uri "typing_extensions" version))
               (sha256
                (base32
-                "0a35fh5wk9s538x0w3dz95y0avnhd2srzyv9s1a372711n8hdl4p"))))
+                "19n4l57qazwrbvxjrbxw2vvfyd0zbk8ivnwm4zmwfzzl69x6glp6"))))
     (build-system python-build-system)
     (arguments
      (list
       #:tests? #f       ;requires Python's test module, not available in Guix
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'enter-source-directory
-            (lambda _
-              (chdir "typing_extensions")))
           ;; XXX: PEP 517 manual build copied from python-isort.
           (replace 'build
             (lambda _
@@ -23097,25 +23082,19 @@ that is accessible to other projects developed in Cython.")
 (define-public python-sortedcontainers
   (package
     (name "python-sortedcontainers")
-    (version "2.1.0")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "sortedcontainers" version))
        (sha256
         (base32
-         "0fm0w5id2yhqld95hg2m636vjgkz377rvgdfqaxc25vbylr9lklp"))))
+         "126vpywl7aly6zir033a9indgyficlzl68qls61nn2y3djhabji5"))))
     (build-system python-build-system)
     (arguments
-     ;; FIXME: Tests require many extra dependencies, and would introduce
-     ;; a circular dependency on hypothesis, which uses this package.
+     ;; TODO: Circular dependency on pytest.
      '(#:tests? #f))
-    (propagated-inputs
-     `(("python-appdirs" ,python-appdirs)
-       ("python-distlib" ,python-distlib)
-       ("python-filelock" ,python-filelock)
-       ("python-six" ,python-six-bootstrap)))
-    (home-page "http://www.grantjenks.com/docs/sortedcontainers/")
+    (home-page "https://grantjenks.com/docs/sortedcontainers/")
     (synopsis "Sorted List, Sorted Dict, Sorted Set")
     (description
      "This package provides a sorted collections library, written in
@@ -26826,7 +26805,7 @@ By default it uses the open Python vulnerability database Safety DB.")
     (native-inputs
      `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
                                         texlive-fonts-ec
-                                        texlive-generic-iftex
+                                        texlive-iftex
                                         texlive-hyperref
                                         texlive-oberdiek
                                         texlive-lm
@@ -28271,7 +28250,7 @@ symbolic expressions in pure Python using the technique of logical unification."
          "0w9giq196wps7mbm47c4shdzs5yvwvqajqzkim2p92i51sm5qgvm"))))
     (build-system python-build-system)
     (native-inputs
-     (list python-pytest-6 python-toml))
+     (list python-pytest python-toml))
     (propagated-inputs
      (list python-logical-unification))
     (home-page "https://github.com/pythological/python-cons")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index edbdf7cfad..8adcfaf199 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -151,6 +151,7 @@
                                 "python-2.7-adjust-tests.patch"
                                 "python-cross-compile.patch"
                                 "python-2.7-CVE-2021-3177.patch"
+                                "python-2.7-expat-compat.patch"
                                 "python-2.7-no-static-lib.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -424,7 +425,7 @@ data types.")
   (package
     (inherit python-2)
     (name "python")
-    (version "3.9.9")
+    (version "3.9.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.python.org/ftp/python/"
@@ -438,7 +439,7 @@ data types.")
                         "python-3-no-static-lib.patch"))
               (sha256
                (base32
-                "09vd7g71i11iz5ydqghwc8kaxr0vgji94hhwwnj77h3kll28r0h6"))
+                "03q8lcb476a9n41nih9qvwf1fzfzjbvq6vj0cnmd458yixchqnqj"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 132cc95f12..f4c9d866df 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -570,7 +570,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
            (texlive-updmap.cfg (list texlive-amsfonts
                                      texlive-amsmath
                                      ;; TODO: Add newunicodechar.
-                                     texlive-latex-graphics))
+                                     texlive-graphics))
            xorg-server-for-tests))
     (inputs
      (list alsa-lib
@@ -780,7 +780,7 @@ to access different radio hardware.")
        ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
                                         texlive-amsmath
                                         ;; TODO: Add newunicodechar.
-                                        texlive-latex-graphics)))))
+                                        texlive-graphics)))))
     (inputs
      (list fftwf))
     (arguments
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index 5920f1c8e1..b6cdeb4f84 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019, 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,6 +27,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
@@ -51,7 +52,8 @@
 (define %patch-series-8.1
   (patch-series
    "8.1"
-   (1 "0i4ikdqgcjnb40y2ss3lm09rq56zih5rzma3bib50dk3d1d4cak8")))
+   (1 "0i4ikdqgcjnb40y2ss3lm09rq56zih5rzma3bib50dk3d1d4cak8")
+   (2 "1p15sfx5xg5k4lam12lyd0givk7dfjddqpnb1jdp3c4clray0nz5")))
 
 (define %patch-series-7.0
   (patch-series
@@ -79,27 +81,30 @@
               (patch-flags '("-p0"))))
     (build-system gnu-build-system)
     (propagated-inputs (list ncurses))
-    (arguments `(#:configure-flags
-                 (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
-                                      (assoc-ref %build-inputs "ncurses")
-                                      "/lib")
+    (arguments
+     (list #:configure-flags
+           #~(list (string-append
+                    "LDFLAGS=-Wl,-rpath -Wl,"
+                    (dirname (search-input-file %build-inputs
+                                                "lib/libncurses.so")))
 
-                       ;; This test does an 'AC_TRY_RUN', which aborts when
-                       ;; cross-compiling, so provide the correct answer.
-                       ,@(if (%current-target-system)
-                             '("bash_cv_wcwidth_broken=no")
-                             '())
-                       ;; MinGW: ncurses provides the termcap api.
-                       ,@(if (target-mingw?)
-                             '("bash_cv_termcap_lib=ncurses")
-                             '()))
+                   ;; This test does an 'AC_TRY_RUN', which aborts when
+                   ;; cross-compiling, so provide the correct answer.
+                   #$@(if (%current-target-system)
+                          '("bash_cv_wcwidth_broken=no")
+                          '())
+                   ;; MinGW: ncurses provides the termcap api.
+                   #$@(if (target-mingw?)
+                          '("bash_cv_termcap_lib=ncurses")
+                          '()))
 
-                 ,@(if (target-mingw?)
-                       ;; MinGW: termcap in ncurses
-                       ;; some SIG_* #defined in _POSIX
-                       '(#:make-flags '("TERMCAP_LIB=-lncurses"
-                                        "CPPFLAGS=-D_POSIX -D'chown(f,o,g)=0'"))
-                       '())))
+           #:make-flags
+           (if (target-mingw?)
+               ;; MinGW: termcap in ncurses
+               ;; some SIG_* #defined in _POSIX
+               #~'("TERMCAP_LIB=-lncurses"
+                   "CPPFLAGS=-D_POSIX -D'chown(f,o,g)=0'")
+               #~'())))
     (synopsis "Edit command lines while typing, with history support")
     (description
      "The GNU readline library allows users to edit command lines as they
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0fda93fd59..e1b71a0a1a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -155,8 +155,7 @@ a focus on simplicity and productivity.")
 (define-public ruby-2.7
   (package
     (inherit ruby-2.6)
-    (version "2.7.4")
-    (replacement ruby-2.7-fixed) ; security fixes
+    (version "2.7.6")
     (source
      (origin
        (inherit (package-source ruby-2.6))
@@ -165,7 +164,7 @@ a focus on simplicity and productivity.")
                            "/ruby-" version ".tar.gz"))
        (sha256
         (base32
-         "0nxwkxh7snmjqf787qsp4i33mxd1rbf9yzyfiky5k230i680jhrh"))))
+         "042xrdk7hsv4072bayz3f8ffqh61i8zlhvck10nfshllq063n877"))))
     (arguments
      `(#:test-target "test"
        #:configure-flags '("--enable-shared") ; dynamic linking
@@ -191,20 +190,6 @@ a focus on simplicity and productivity.")
     (native-inputs
      (list autoconf))))
 
-(define ruby-2.7-fixed
-  (package
-    (inherit ruby-2.7)
-    (version "2.7.6")
-    (source
-     (origin
-       (inherit (package-source ruby-2.7))
-       (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
-                           (version-major+minor version)
-                           "/ruby-" version ".tar.gz"))
-       (sha256
-        (base32
-         "042xrdk7hsv4072bayz3f8ffqh61i8zlhvck10nfshllq063n877"))))))
-
 (define-public ruby-3.0
   (package
     (inherit ruby-2.7)
@@ -5207,14 +5192,14 @@ across multiple CPU cores.")
 (define-public ruby-parser
   (package
     (name "ruby-parser")
-    (version "3.0.0.0")
+    (version "3.1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "parser" version))
        (sha256
         (base32
-         "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"))))
+         "08q20ckhn58m49lccf93p0yv7pkc7hymmcz3di762kb658d5fd38"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; tests not included in gem
@@ -8767,14 +8752,14 @@ neither too verbose nor too minimal.")
 (define-public ruby-sqlite3
   (package
     (name "ruby-sqlite3")
-    (version "1.4.2")
+    (version "1.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "sqlite3" version))
        (sha256
         (base32
-         "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
+         "1z1wa639c278bsipczn6kv8b13fj85pi8gk7x462chqx6k0wm0ax"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -8785,7 +8770,7 @@ neither too verbose nor too minimal.")
     (inputs
      (list sqlite))
     (native-inputs
-     (list ruby-hoe ruby-rake-compiler ruby-mini-portile))
+     (list ruby-hoe ruby-rake-compiler ruby-mini-portile-2))
     (synopsis "Interface with SQLite3 databases")
     (description
      "This module allows Ruby programs to interface with the SQLite3 database
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 25295a283e..d6e8795698 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -170,14 +170,6 @@
        ("zlib" ,zlib)))
     (native-inputs
      `(("bison" ,bison)
-       ;; A compiler bug in gcc 10/11/12/13 prevents us from using gcc-10.4. See:
-       ;; https://github.com/thepowersgang/mrustc/issues/266
-       ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105860
-       ("gcc" ,gcc-9)
-       ;; TODO: STARTFILE_PREFIX_SPEC is fixed on gcc<10 on core-updates.
-       ,@(if (target-riscv64?)
-           `(("gcc:lib" ,gcc-9 "lib"))
-           '())
        ("flex" ,flex)
        ("pkg-config" ,pkg-config)
        ;; Required for the libstd sources.
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 360c06d216..3247b3c25a 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -186,16 +186,16 @@ external dependencies.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.16.4")
+    (version "4.17.0rc3")             ;4.16.4 doesn't build with mit-krb5 1.20
     (source
      ;; For updaters: the current PGP fingerprint is
      ;; 81F5E2832BD2545A1897B713AA99442FB680B620.
      (origin
        (method url-fetch)
-       (uri (string-append "https://download.samba.org/pub/samba/stable/"
+       (uri (string-append "https://download.samba.org/pub/samba/rc/"
                            "samba-" version ".tar.gz"))
        (sha256
-        (base32 "0bvhqinxwpbwp4ayhd9q8ga0w89gnkl1m3nrwpj1fnhjzd4ghclm"))))
+        (base32 "1vi5vxv9cmy00wyrrr01xsdf4yc0fa96vj7980l51lnn90fgvj60"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -229,7 +229,7 @@ external dependencies.")
                         ;; a single directory to avoid RPATH issues.
                         (string-append "--libdir=" libdir)
                         (string-append "--with-privatelibdir=" libdir)
-                        "--with-system-mitkrb5" ;#$(this-package-input "mit-krb5")
+                        "--with-system-mitkrb5"
                         (string-append "--with-system-mitkdc="
                                        (search-input-file inputs "sbin/krb5kdc"))
                         "--with-experimental-mit-ad-dc"))))
@@ -293,14 +293,14 @@ Desktops into Active Directory environments using the winbind daemon.")
   ;; Version that rarely changes, depended on by libsoup.
   (hidden-package
    (package/inherit samba
-     (version "4.15.3")
+     (version "4.17.0rc3")            ;4.16.4 doesn't build with mit-krb5 1.20
      (source
       (origin
         (method url-fetch)
-        (uri (string-append "https://download.samba.org/pub/samba/stable/"
+        (uri (string-append "https://download.samba.org/pub/samba/rc/"
                             "samba-" version ".tar.gz"))
         (sha256
-         (base32 "1nrp85aya0pbbqdqjaqcw82cnzzys16yls37hi2h6mci8d09k4si")))))))
+         (base32 "1vi5vxv9cmy00wyrrr01xsdf4yc0fa96vj7980l51lnn90fgvj60")))))))
 
 (define-public talloc
   (package
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 6e94bfa534..d89714b577 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -55,6 +55,7 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages dns)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages graphviz)
@@ -226,23 +227,24 @@ with a PKCS #11 Cryptographic Token Interface.")
 (define-public pcsc-lite
   (package
     (name "pcsc-lite")
-    (version "1.9.3")
+    (version "1.9.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pcsclite.apdu.fr/files/"
                                   "pcsc-lite-" version ".tar.bz2"))
               (sha256
                (base32
-                "0n9y9m1wr5bwanpnylpdza3sf7lawi63jjizrl1aj5yxf4y46mk9"))))
+                "12923c6l5qzga1xlcxvm0vzbqrxnxq1qgzlrxf2y5gpcaz2q0bah"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"
                            "--disable-libsystemd")))
     (native-inputs
-     (list perl ; for pod2man
+     (list flex
+           perl                         ;for pod2man
            pkg-config))
     (inputs
-     `(("libudev" ,eudev)))
+     (list python eudev))
     (home-page "https://pcsclite.apdu.fr/")
     (synopsis "Middleware to access a smart card using PC/SC")
     (description
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 79c55e2b2f..ff94a21aae 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -39,6 +39,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
@@ -452,26 +453,16 @@ in which the loaded data is arranged in memory.")
 (define-public jsoncpp
   (package
     (name "jsoncpp")
-    (version "1.9.4")
+    (version "1.9.5")
     (home-page "https://github.com/open-source-parsers/jsoncpp")
     (source (origin
               (method git-fetch)
               (uri (git-reference (url home-page) (commit version)))
               (file-name (git-file-name name version))
-              (patches
-               (search-patches "jsoncpp-pkg-config-version.patch"))
               (sha256
                (base32
-                "0qnx5y6c90fphl9mj9d20j2dfgy6s5yr5l0xnzid0vh71zrp6jwv"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"
-                           ,@(if (%current-target-system)
-                                 `("-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF")
-                                 '()))
-       ,@(if (%current-target-system)
-             '()
-             `(#:cmake ,cmake-bootstrap))))
+                "06zss7z56ykzwcsfdxarmini63hkf8i8gx70q3yw9wb0bw7wj9rv"))))
+    (build-system meson-build-system)
     (synopsis "C++ library for interacting with JSON")
     (description "JsonCpp is a C++ library that allows manipulating JSON values,
 including serialization and deserialization to and from strings.  It can also
@@ -494,7 +485,14 @@ it a convenient format to store user input files.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1180ln8blrb0mwzpcf78k49hlki6di65q77rsvglf83kfcyh4d7z"))))))
+                "1180ln8blrb0mwzpcf78k49hlki6di65q77rsvglf83kfcyh4d7z"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags
+           #~'("-DBUILD_SHARED_LIBS:BOOL=YES"
+               #$@(if (%current-target-system)
+                      #~("-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF")
+                      #~()))))))
 
 (define-public json.sh
   (let ((commit "0d5e5c77365f63809bf6e77ef44a1f34b0e05840") ;no releases
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 4d0dd92007..7bb2557249 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -389,17 +389,17 @@ written by Paul Haahr and Byron Rakitzis.")
 (define-public tcsh
   (package
     (name "tcsh")
-    (version "6.22.03")
+    (version "6.24.01")
     (source (origin
               (method url-fetch)
               ;; Old tarballs are moved to old/.
-              (uri (list (string-append "ftp://ftp.astron.com/pub/tcsh/"
+              (uri (list (string-append "https://astron.com/pub/tcsh/"
                                         "tcsh-" version ".tar.gz")
-                         (string-append "ftp://ftp.astron.com/pub/tcsh/"
+                         (string-append "https://astron.com/pub/tcsh/"
                                         "old/tcsh-" version ".tar.gz")))
               (sha256
                (base32
-                "1dv24bsp6faayinvwds092ylk9sb6894rl9ddm87y31a7mjzsb5y"))
+                "0zhxp4m1fxyd3a2qyvs97gzlrb0h0ah1gjrqcbilgydiffws2nan"))
               (patches (search-patches "tcsh-fix-autotest.patch"))
               (patch-flags '("-p0"))))
     (build-system gnu-build-system)
@@ -408,16 +408,16 @@ written by Paul Haahr and Byron Rakitzis.")
     (inputs
      (list ncurses))
     (arguments
-     `(#:phases
-        (modify-phases %standard-phases
-          ,@(if (%current-target-system)
-                '((add-before 'configure 'set-cross-cc
-                     (lambda _
-                       (substitute* "configure"
-                         (("CC_FOR_GETHOST=\"cc\"")
-                          "CC_FOR_GETHOST=\"gcc\""))
-                       #t)))
-                '())
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          #$@(if (%current-target-system)
+                 #~((add-before 'configure 'set-cross-cc
+                      (lambda _
+                        (substitute* "configure"
+                          (("CC_FOR_GETHOST=\"cc\"")
+                           "CC_FOR_GETHOST=\"gcc\"")))))
+                 #~())
           (add-before 'check 'patch-test-scripts
             (lambda _
               ;; Take care of pwd
@@ -444,15 +444,11 @@ written by Paul Haahr and Byron Rakitzis.")
               ;; This file is ISO-8859-1 encoded.
               (with-fluids ((%default-port-encoding #f))
                 (substitute* "tests/testsuite"
-                  (("/bin/sh") (which "sh"))))
-              #t))
+                  (("/bin/sh") (which "sh"))))))
           (add-after 'install 'post-install
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let* ((out (assoc-ref %outputs "out"))
-                     (bin (string-append out "/bin")))
-                (with-directory-excursion bin
-                  (symlink "tcsh" "csh"))
-                #t))))))
+            (lambda _
+              (with-directory-excursion (string-append #$output "/bin")
+                (symlink "tcsh" "csh")))))))
     (home-page "https://www.tcsh.org/")
     (synopsis "Unix shell based on csh")
     (description
@@ -897,29 +893,19 @@ scripts.")
 (define-public gash
   (package
     (name "gash")
-    (version "0.2.0")
+    (version "0.3.0")
     (source
      (origin (method url-fetch)
              (uri (string-append "mirror://savannah/gash/gash-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "13m0yz5h9nj3x40mr6wr5xcpq1lscndfwcicw3skrz801025hhgf"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                 ;; Allow builds with Guile 3.0.
-                 (substitute* "configure"
-                   (("search=\"2\\.2 2\\.0\"")
-                    "search=\"3.0 2.2 2.0\""))
-                 #t))))
+               "1af2jz4a6rzsshi379wzw4b8d04zvfamdhfzip2pgmk821lyqsjl"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
     (inputs
      (list guile-3.0))
-    (arguments
-     '(#:make-flags '("XFAIL_TESTS=tests/redirects.org")))
     (home-page "https://savannah.nongnu.org/projects/gash/")
     (synopsis "POSIX-compatible shell written in Guile Scheme")
     (description "Gash is a POSIX-compatible shell written in Guile
@@ -931,23 +917,14 @@ as part of the Guix bootstrap process.")
 (define-public gash-utils
   (package
     (name "gash-utils")
-    (version "0.1.0")
+    (version "0.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/gash/gash-utils-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk"))
-              (patches (search-patches "gash-utils-ls-test.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Allow builds with Guile 3.0.
-                  (substitute* "configure"
-                    (("search=\"2\\.2 2\\.0\"")
-                     "search=\"3.0 2.2 2.0\""))
-                  #t))))
+                "18ylb54l9lmaynapbncc1zhbsirhihznrxihhxgqrpqgyjkfbap6"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 8dad118f34..85902a8d96 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -109,24 +109,24 @@
            texlive-capt-of
            texlive-carlisle             ;remreset
            texlive-etoolbox
-           texlive-generic-ltxcmds
+           texlive-ltxcmds
            texlive-hyperref
            texlive-latex-base           ;alltt, atbegshi, makeidx, textcomp
            texlive-latex-cmap
-           texlive-latex-fancyhdr
-           texlive-latex-fancyvrb
+           texlive-fancyhdr
+           texlive-fancyvrb
            texlive-latex-float
            texlive-latex-fncychap
            texlive-latex-framed
            texlive-latex-geometry
-           texlive-latex-graphics       ;graphicx, color
-           texlive-latex-kvoptions
+           texlive-graphics                       ;graphicx, color
+           texlive-kvoptions
            texlive-latex-needspace
            texlive-latex-parskip
            texlive-latex-preview
            texlive-latex-tabulary
-           texlive-latex-titlesec
-           texlive-latex-tools          ;multicol, longtable
+           texlive-titlesec
+           texlive-tools                          ;multicol, longtable
            texlive-latex-upquote
            texlive-latex-varwidth
            texlive-oberdiek             ;hypcap
diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
index 7e8d444b7d..eadb76e8b0 100644
--- a/gnu/packages/sqlite.scm
+++ b/gnu/packages/sqlite.scm
@@ -37,6 +37,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix utils)
+  #:use-module (guix deprecation)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26))
 
@@ -61,14 +62,14 @@
 (define-public sqlite
   (package
    (name "sqlite")
-   (version "3.36.0")
+   (version "3.39.3")
    (source (origin
             (method url-fetch)
-            (uri (sqlite-uri version 2021))
+            (uri (sqlite-uri version 2022))
             (patches (search-patches "sqlite-hurd.patch"))
             (sha256
              (base32
-              "1qxwkfvd185dfcqbakrzikrsw6ffr5jp1gl3dch9dsdyjvmw745x"))))
+              "1f922kq16g7f4h3gpzim78lvrp5xw9nvlvqw97s2qgxyh8qgns3q"))))
    (build-system gnu-build-system)
    (inputs (list readline))
    (outputs '("out" "static"))
@@ -109,14 +110,5 @@ widely deployed SQL database engine in the world.  The source code for SQLite
 is in the public domain.")
    (license license:public-domain)))
 
-;; Newer version required for e.g. fossil.
-(define-public sqlite-next
-  (package
-    (inherit sqlite)
-    (version "3.39.3")
-    (source (origin
-              (method url-fetch)
-              (uri (sqlite-uri version 2022))
-              (sha256
-               (base32
-                "1f922kq16g7f4h3gpzim78lvrp5xw9nvlvqw97s2qgxyh8qgns3q"))))))
+(define-deprecated sqlite-next sqlite)
+(export sqlite-next)
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index aa540c1012..e459ca7b33 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -159,7 +159,7 @@ applications.")
 (define-public libssh2
   (package
    (name "libssh2")
-   (version "1.9.0")
+   (version "1.10.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -167,13 +167,14 @@ applications.")
                    version ".tar.gz"))
             (sha256
              (base32
-              "1zfsz9nldakfz61d2j70pk29zlmj7w2vv46s9l3x2prhcgaqpyym"))
-            (patches (search-patches "libssh2-CVE-2019-17498.patch"))))
+              "0l8xwhhscvss7q007vpbkbv7jh9s43579rx2sf8lnfgd7l7yjr1d"))))
    (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 (list libgcrypt zlib))
-   (arguments `(#:configure-flags `("--with-libgcrypt")))
+   (arguments
+    (list #:configure-flags #~'("--with-libgcrypt"
+                                "--disable-static")))
    (synopsis "Client-side C library implementing the SSH2 protocol")
    (description
     "libssh2 is a library intended to allow software developers access to
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 36dda6f215..4b6328a587 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -374,11 +374,11 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
                                         texlive-grfext
                                         texlive-amsfonts
                                         texlive-latex-base
-                                        texlive-latex-fancyvrb
-                                        texlive-latex-graphics
+                                        texlive-fancyvrb
+                                        texlive-graphics
                                         texlive-hyperref
                                         texlive-oberdiek
-                                        texlive-latex-tools
+                                        texlive-tools
                                         texlive-latex-upquote
                                         texlive-url
                                         texlive-latex-xkeyval)))
diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm
index 1f4bd0922a..a90a5d51e8 100644
--- a/gnu/packages/swig.scm
+++ b/gnu/packages/swig.scm
@@ -43,7 +43,9 @@
                                  name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1z06m5zv87mha6hvys1iay810ghc1jngilfby1ms2n4d1mryjfym"))))
+               "1z06m5zv87mha6hvys1iay810ghc1jngilfby1ms2n4d1mryjfym"))
+             ;; Remove with next release.
+             (patches (search-patches "swig-support-gcc-12.patch"))))
     (build-system gnu-build-system)
     (native-inputs (list boost
                          `(,pcre "bin") ;for 'pcre-config'
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 6eb88afb8f..9c066bb4e4 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -196,7 +196,7 @@ cards.")
     (inputs
      `(("glib" ,glib)
        ("gtk+" ,gtk+)
-       ("gtksourceview" ,gtksourceview)
+       ("gtksourceview" ,gtksourceview-4)
        ("libhandy" ,libhandy)
        ("python" ,python)
        ("python-beautifulsoup" ,python-beautifulsoup4)
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index ab86ddee2f..4cb562f583 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -46,14 +46,14 @@
 (define-public tcl
   (package
     (name "tcl")
-    (version "8.6.11")
+    (version "8.6.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/tcl/Tcl/"
                                   version "/tcl" version "-src.tar.gz"))
               (sha256
                (base32
-                "0n4211j80mxr6ql0xx52rig8r885rcbminfpjdb2qrw6hmk8c14c"))))
+                "19n1wk6ypx19p26gywvibwbhqs2zapp93n3136qlhzhn1zfrbj96"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -193,7 +193,7 @@ X11 GUIs.")
 (define-public tk
   (package
     (name "tk")
-    (version "8.6.11.1")
+    (version "8.6.12")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/tcl/Tcl/"
@@ -201,7 +201,7 @@ X11 GUIs.")
                                  version "-src.tar.gz"))
              (sha256
               (base32
-               "1gh9k7l76qg9l0sb78ijw9xz4xl1af47aqbdifb6mjpf3cbsnv00"))
+               "0c0665h9b55cr3p6civcrgaixx6dldz7k7v870lyssyb7wgmqf8j"))
              (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 92342c0121..93625b0fe9 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2017, 2020-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
@@ -20,6 +20,7 @@
 ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
 ;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
+;;; Copyright © 2022 Simon South <simon@simonsouth.net>
 ;;; Copyright © 2022 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2022 Fabio Natali <me@fabionatali.com>
 ;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
@@ -362,6 +363,14 @@ files from LOCATIONS with expected checksum HASH.  CODE is not currently in use.
 
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-psutils-test
+           (lambda _
+             ;; This test fails due to a rounding difference with libpaper 1.2:
+             ;;   https://github.com/rrthomas/libpaper/issues/23
+             ;; Adjust the expected outcome to account for the minute difference.
+             (substitute* "texk/psutils/tests/playres.ps"
+               (("844\\.647799")
+                "844.647797"))))
          (add-after 'unpack 'configure-ghostscript-executable
            ;; ps2eps.pl uses the "gswin32c" ghostscript executable on Windows,
            ;; and the "gs" ghostscript executable on Unix. It detects Unix by
@@ -601,8 +610,8 @@ This package contains the binaries.")
                          (mkdir-p doc)
                          (copy-recursively (string-append #$source "/doc")
                                            doc)))))))
-    (propagated-inputs (list texlive-generic-iftex
-                             texlive-generic-ltxcmds
+    (propagated-inputs (list texlive-iftex
+                             texlive-ltxcmds
                              texlive-hyperref
                              texlive-latex-xkeyval
                              texlive-zref))
@@ -3063,41 +3072,93 @@ with the required packages, constitutes what every LaTeX distribution should
 contain.")
       (license license:lppl1.3c+))))
 
-(define-public texlive-latex-atveryend
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-atveryend"
-              '("/doc/latex/atveryend/README.md"
-                "/tex/latex/atveryend/")
-              (base32
-               "1gz5ssxjlqa53a8blsmdk2qjahzc910ldh26xjxfxgqnqb03rqx7")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/atveryend")
-    (synopsis "Hooks at the very end of a document")
-    (description
-     "This LaTeX packages provides two hooks for @code{\\end@{document@}}
-that are executed after the hook of @code{\\AtEndDocument}:
+(define-public texlive-atveryend
+  (let ((template (simple-texlive-package
+                   "texlive-atveryend"
+                   (list "doc/latex/atveryend/"
+                         "source/latex/atveryend/"
+                         "tex/latex/atveryend/")
+                   (base32 "1rp805h0m99rxs107a798l951lyahlnp7irfklfadn2a2ljzhafn"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ #t)
+          "latex/atveryend")
+         ((#:build-targets _ #t)
+          #~(list "atveryend.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/atveryend/")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))
+              (add-after 'copy-files 'remove-generated-file
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (with-directory-excursion #$output
+                    (for-each delete-file
+                              (find-files "." "\\.(drv|ins)$")))))))))
+      (home-page "https://ctan.org/macros/latex/contrib/atveryend")
+      (synopsis "Hooks at the very end of a document")
+      (description
+       "This LaTeX packages provides two hooks for @code{\\end{document}} that
+are executed after the hook of @code{\\AtEndDocument}:
 @code{\\AfterLastShipout} can be used for code that is to be executed right
 after the last @code{\\clearpage} before the @file{.aux} file is closed.
-@code{\\AtVeryEndDocument} is used for code after closing and final reading
-of the @file{.aux} file.")
-    (license license:lppl1.3c+)))
+@code{\\AtVeryEndDocument} is used for code after closing and final reading of
+the @file{.aux} file.")
+      (license license:lppl1.3+))))
 
-(define-public texlive-latex-auxhook
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-auxhook"
-              '("/doc/latex/auxhook/README.md"
-                "/tex/latex/auxhook/")
-              (base32
-               "1xh445shr00rh43nnz03xh8k2mdrxgsr03lllqpgvwhm6yzsydkf")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/auxhook")
-    (synopsis "Hooks for auxiliary files")
-    (description
-     "This package provides hooks for adding code at the beginning of
+(define-deprecated-package texlive-latex-atveryend texlive-atveryend)
+
+(define-public texlive-auxhook
+  (let ((template (simple-texlive-package
+                   "texlive-auxhook"
+                   (list "doc/latex/auxhook/"
+                         "source/latex/auxhook/"
+                         "tex/latex/auxhook/")
+                   (base32
+                    "1qfs7bz8ryp4prr2fw4hwypnfc6yr4rc4wd8qy4rpmab0hab0vdy"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/auxhook")
+         ((#:build-targets _ '())
+          #~(list "auxhook.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/auxhook")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/auxhook")
+      (synopsis "Hooks for auxiliary files")
+      (description
+       "This package provides hooks for adding code at the beginning of
 @file{.aux} files.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-auxhook texlive-auxhook)
 
 (define-public texlive-latex-epstopdf-pkg
   (package
@@ -3164,10 +3225,10 @@ users, via its Plain TeX version.)")
 
 (define-deprecated-package texlive-generic-epsf texlive-epsf)
 
-(define-public texlive-latex-fancyvrb
+(define-public texlive-fancyvrb
   (package
     (inherit (simple-texlive-package
-              "texlive-latex-fancyvrb"
+              "texlive-fancyvrb"
               (list "/doc/latex/fancyvrb/README"
                     "/tex/latex/fancyvrb/")
               (base32
@@ -3184,6 +3245,8 @@ verbatim mode; build \"example\" environments (showing both result and
 verbatim source).")
     (license license:lppl1.0+)))
 
+(define-deprecated-package texlive-latex-fancyvrb texlive-fancyvrb)
+
 (define-public texlive-graphics-def
   (package
     (inherit (simple-texlive-package
@@ -3220,6 +3283,57 @@ packages.")
 set default \"driver\" options for the color and graphics packages.")
     (license license:public-domain)))
 
+(define-public texlive-graphics
+  (let ((template (simple-texlive-package
+                   "texlive-graphics"
+                   (list "doc/latex/graphics/"
+                         "source/latex/graphics/"
+                         "tex/latex/graphics/")
+                   (base32
+                    "0prw1zcv4fcj3zg0kyhj0k7ax0530adl60bajzvbv3fi16d7rqlq"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/graphics")
+         ((#:build-targets _ '())
+          #~(list "graphics-drivers.ins" "graphics.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/graphics")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc)
+                    ;; This file is not generated from the sources.
+                    (install-file
+                     (string-append
+                      origin
+                      "/tex/latex/graphics/graphics-2017-06-25.sty")
+                     (string-append
+                      #$output
+                      "/share/texmf-dist/tex/latex/graphics")))))))))
+      (propagated-inputs (list texlive-graphics-def texlive-graphics-cfg))
+      (home-page "https://ctan.org/macros/latex/required/graphics")
+      (synopsis "The LaTeX standard graphics bundle")
+      (description
+       "This is a collection of LaTeX packages for: producing colour including
+graphics (e.g., PostScript) files rotation and scaling of text in LaTeX
+documents.  It comprises the packages color, graphics, graphicx, trig, epsfig,
+keyval, and lscape.")
+      (license license:lppl1.3c))))
+
+(define-deprecated-package texlive-latex-graphics texlive-graphics)
+
 (define-public texlive-greek-fontenc
   (package
     (inherit (simple-texlive-package
@@ -3237,71 +3351,83 @@ set default \"driver\" options for the color and graphics packages.")
 for Greek text font encodings for use with fontenc.")
     (license license:lppl1.3+)))
 
-(define-public texlive-latex-graphics
-  (package
-    (name "texlive-latex-graphics")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "graphics"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0fgjl58f25zvagssz4dwmmsclzw8cr7mx00kdrbx2kcnamcb7h8d"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/graphics"))
-    (propagated-inputs
-     (list texlive-graphics-cfg texlive-graphics-def))
-    (home-page "https://www.ctan.org/pkg/latex-graphics")
-    (synopsis "LaTeX standard graphics bundle")
-    (description
-     "This is a collection of LaTeX packages for producing color, including
-graphics (e.g. PostScript) files, and rotation and scaling of text in LaTeX
-documents.  It comprises the packages color, graphics, graphicx, trig, epsfig,
-keyval, and lscape.")
-    (license license:lppl1.3c+)))
-
-(define-public texlive-latex-hycolor
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-hycolor"
-              (list "/doc/latex/hycolor/README.md"
-                    "/tex/latex/hycolor/")
-              (base32
-               "026lfb4l7b3q8g6zc68siqandhb1x98cbycn7njknqva6s99aiqn")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/latex-graphics")
-    (synopsis "Color for hyperref and bookmark")
-    (description
-     "This package provides the code for the @code{color} option that is
+(define-public texlive-hycolor
+  (let ((template  (simple-texlive-package
+                    "texlive-hycolor"
+                    (list "doc/latex/hycolor/"
+                          "source/latex/hycolor/"
+                          "tex/latex/hycolor/")
+                    (base32
+                     "0hmkx37wwmznxjqqnca87shy7qrgqrh2cn5r941ddgivnym31xbh"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/hycolor")
+         ((#:build-targets _ '())
+          #~(list "hycolor.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/hycolor")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/latex-graphics")
+      (synopsis "Color for hyperref and bookmark")
+      (description
+       "This package provides the code for the @code{color} option that is
 used by @code{hyperref} and @code{bookmark}.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-hycolor texlive-hycolor)
 
 (define-public texlive-xcolor
   (let ((template (simple-texlive-package
                    "texlive-xcolor"
-                   (list "/doc/latex/xcolor/"
-                         "/source/latex/xcolor/")
+                   (list "doc/latex/xcolor/"
+                         "dvips/xcolor/"
+                         "source/latex/xcolor/"
+                         "tex/latex/xcolor/")
                    (base32
-                    "12q6spmpxg30alhvarjmxzigmz7lazapbrb0mc4vhbn6n1sdz7pp"))))
+                    "1d7108b67fcaf1sgyk43ph18l0z5m35iqg3aahqs1ymzwdfnd3f7"))))
     (package
       (inherit template)
+      (outputs '("out" "doc"))
       (arguments
        (substitute-keyword-arguments (package-arguments template)
-         ((#:tex-directory _ #t)
+         ((#:tex-directory _ '())
           "latex/xcolor")
+         ((#:build-targets _ '())
+          #~(list "xcolor.ins"))
          ((#:phases phases)
-          `(modify-phases ,phases
-             (add-after 'unpack 'chdir
-               (lambda _ (chdir "source/latex/xcolor") #t))
-             (add-after 'install 'move-files
-               (lambda* (#:key outputs #:allow-other-keys)
-                 (let ((share (string-append (assoc-ref outputs "out")
-                                             "/share/texmf-dist")))
-                   (mkdir-p (string-append share "/dvips/xcolor"))
-                   (rename-file (string-append share "/tex/latex/xcolor/xcolor.pro")
-                                (string-append share "/dvips/xcolor/xcolor.pro"))
-                   #t)))))))
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _ (chdir "source/latex/xcolor")))
+              (replace 'copy-files
+                (lambda* (#:key inputs outputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc)
+                    (let ((share (string-append #$output
+                                                "/share/texmf-dist")))
+                      (mkdir-p (string-append share "/dvips/xcolor"))
+                      (rename-file
+                       (string-append share "/tex/latex/xcolor/xcolor.pro")
+                       (string-append share "/dvips/xcolor/xcolor.pro"))))))))))
       ;; TODO: Propagate texlive-hyperref and many others in the next rebuild
       ;; cycle.  Grep for '\usepackage' to see what packages it requires.
       ;; (propagated-inputs (list texlive-hyperref ...))
@@ -3390,48 +3516,62 @@ XML, using UTF-8 or a suitable 8-bit encoding.")
 (define-public texlive-hyperref
   (let ((template (simple-texlive-package
                    "texlive-hyperref"
-                   (list "/doc/latex/hyperref/"
-                         "/source/latex/hyperref/"
-                         ;; These files are not generated from the sources
-                         "/tex/latex/hyperref/minitoc-hyper.sty"
-                         "/tex/latex/hyperref/ntheorem-hyper.sty"
-                         "/tex/latex/hyperref/xr-hyper.sty")
-                   (base32
-                    "0nmbxaq676m2y9fgdji0bxqchmrli4hwhspijaszx51b3ki6bj2h"))))
+                   (list "doc/latex/hyperref/"
+                         "source/latex/hyperref/"
+                         "tex/latex/hyperref/")
+                   (base32 "052k1nygm4msaivn8245n86km4h41knivigw80q58b7rc13s6hrk"))))
     (package
       (inherit template)
       (arguments
        (substitute-keyword-arguments (package-arguments template)
-         ((#:tex-directory _ #t)
+         ((#:tex-directory _ '())
           "latex/hyperref")
+         ((#:build-targets _ '())
+          #~(list "hyperref.ins"))
          ((#:phases phases)
-          `(modify-phases ,phases
-             (add-after 'unpack 'chdir
-               (lambda _ (chdir "source/latex/hyperref") #t))))))
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/hyperref")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc)
+                    ;; XXX: These files are not auto-generated from the
+                    ;; sources.
+                    (for-each (lambda (f)
+                                (install-file
+                                 (string-append origin "/tex/latex/hyperref/" f)
+                                 (string-append
+                                  #$output
+                                  "/share/texmf-dist/tex/latex/hyperref")))
+                              '("minitoc-hyper.sty"
+                                "ntheorem-hyper.sty"
+                                "xr-hyper.sty")))))))))
       (propagated-inputs
-       (list texlive-generic-atbegshi
-             texlive-generic-bitset
-             texlive-generic-etexcmds
-             texlive-generic-gettitlestring
-             texlive-generic-iftex
-             texlive-generic-infwarerr
-             texlive-generic-intcalc
-             texlive-generic-kvdefinekeys
-             texlive-generic-kvsetkeys
-             texlive-generic-ltxcmds
-             texlive-generic-pdfescape
-             texlive-latex-auxhook
-             texlive-latex-atveryend
-             texlive-latex-hycolor
-             texlive-latex-kvoptions
-             texlive-latex-letltxmacro
-             texlive-latex-pdftexcmds
-             texlive-latex-refcount
-             texlive-latex-rerunfilecheck
-             texlive-url
+       (list texlive-atbegshi
+             texlive-auxhook
+             texlive-bitset
              texlive-cm
-             texlive-latex-graphics     ;for keyval
+             texlive-etexcmds
+             texlive-gettitlestring
+             texlive-graphics           ;for keyval
+             texlive-hycolor
+             texlive-intcalc
+             texlive-kvdefinekeys
+             texlive-kvsetkeys
+             texlive-letltxmacro
+             texlive-ltxcmds
+             texlive-pdfescape
+             texlive-refcount
+             texlive-rerunfilecheck
              texlive-stringenc
+             texlive-url
              texlive-zapfding))
       (home-page "https://www.ctan.org/pkg/hyperref")
       (synopsis "Extensive support for hypertext in LaTeX")
@@ -3449,97 +3589,174 @@ pdf and HTML backends.  The package is distributed with the @code{backref} and
 (define-deprecated-package texlive-latex-hyperref texlive-hyperref)
 
 (define-public texlive-oberdiek
-  (package
-    (name "texlive-oberdiek")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "oberdiek"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1cadrkpdqs65gxsaszfgfd8wqp8pvpik2sjmlyq3hz5p9yna3p9m"))))
-    (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/oberdiek"
-       #:build-targets '("oberdiek.ins")
-       #:phases
-       (modify-phases %standard-phases
-         ;; "ifpdf.ins" is not generated, so we need to process the dtx file.
-         (add-after 'unpack 'do-not-process-ifpdf.ins
-           (lambda _
-             (substitute* "oberdiek.ins"
-               (("ifpdf.ins") "ifpdf.dtx"))
-             #t)))))
-    (propagated-inputs
-     (list texlive-generic-iftex))
-    (home-page "https://www.ctan.org/pkg/oberdiek")
-    (synopsis "Bundle of packages submitted by Heiko Oberdiek")
-    (description
-     "The bundle comprises various LaTeX packages, providing among others:
+  (let ((template (simple-texlive-package
+                   "texlive-oberdiek"
+                   (list "bibtex/bib/oberdiek/"
+                         "doc/latex/oberdiek/"
+                         "source/latex/oberdiek/"
+                         "tex/generic/oberdiek/"
+                         "tex/latex/oberdiek/")
+                   (base32
+                    "00lp24fckawpy997j7zagsxv89jif40wgjq8fw502v06d225ikp3"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/oberdiek")
+         ((#:build-targets _ '())
+          #~(list "oberdiek.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/oberdiek")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc)
+                    ;; XXX: `#:tex-directory' is limited to one location, but
+                    ;; the package needs to install files elsewhere, so we do
+                    ;; that manually here.
+                    (with-directory-excursion origin
+                      (let ((extra '("bibtex/bib/oberdiek"
+                                     "tex/generic/oberdiek")))
+                        (for-each
+                         (lambda (d)
+                           (for-each (lambda (f)
+                                       (install-file
+                                        f
+                                        (string-append #$output
+                                                       "/share/texmf-dist/"
+                                                       d)))
+                                     (find-files d)))
+                         extra))))))))))
+      (propagated-inputs
+       (list texlive-auxhook
+             texlive-grfext
+             texlive-grffile
+             texlive-iftex
+             texlive-infwarerr
+             texlive-kvoptions
+             texlive-pdftexcmds))
+      (home-page "https://www.ctan.org/pkg/oberdiek")
+      (synopsis "Bundle of packages submitted by Heiko Oberdiek")
+      (description
+       "The bundle comprises various LaTeX packages, providing among others:
 better accessibility support for PDF files; extensible chemists reaction
 arrows; record information about document class(es) used; and many more.")
-    (license license:lppl1.3+)))
+      (license license:lppl1.3+))))
 
 (define-deprecated-package texlive-latex-oberdiek texlive-oberdiek)
 
-(define-public texlive-latex-rerunfilecheck
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-rerunfilecheck"
-              '("/doc/latex/rerunfilecheck/"
-                "/tex/latex/rerunfilecheck/")
-              (base32
-               "1myz0d5bxhxvl4220ikywh921qld8n324kk9kscqbc5iw4063g56")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-generic-infwarerr texlive-generic-uniquecounter
-           texlive-latex-atveryend texlive-latex-kvoptions
-           texlive-latex-pdftexcmds))
-    (home-page "https://www.ctan.org/pkg/rerunfilecheck")
-    (synopsis "Checksum based rerun checks on auxiliary files")
-    (description
-     "This package provides additional rerun warnings if some auxiliary
+(define-public texlive-rerunfilecheck
+  (let ((template (simple-texlive-package
+                   "texlive-rerunfilecheck"
+                   (list "doc/latex/rerunfilecheck/"
+                         "source/latex/rerunfilecheck/"
+                         "tex/latex/rerunfilecheck/")
+                   (base32
+                    "0f53b6dlnlrxkzj7h7x750p0489i2gg3isfqn0dlpncpq23w1r36"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/rerunfilecheck")
+         ((#:build-targets _ '())
+          #~(list "rerunfilecheck.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/rerunfilecheck")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-atveryend
+             texlive-infwarerr
+             texlive-kvoptions
+             texlive-pdftexcmds
+             texlive-uniquecounter))
+      (home-page "https://www.ctan.org/pkg/rerunfilecheck")
+      (synopsis "Checksum based rerun checks on auxiliary files")
+      (description
+       "This package provides additional rerun warnings if some auxiliary
 files have changed.  It is based on MD5 checksum, provided by pdfTeX.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-latex-tools
-  (package
-    (name "texlive-latex-tools")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "tools"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1vm5wfyd0vbmv31a29fc7k8y14xiw00msvdx9n7dzsn9zpfjflqs"))))
-    (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/tools"
-       #:build-targets '("tools.ins")
-       #:phases (modify-phases %standard-phases
-                  (add-after 'install 'provide-array-2016-10-06.sty
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; XXX: array.sty does:
-                      ;;  "DeclareRelease{}{2016-10-06}{array-2016-10-06.sty}"
-                      ;; ...which causes some users (hypre) to look for that
-                      ;; file specifically.  Provide it.
-                      (with-directory-excursion (string-append
-                                                 (assoc-ref outputs "out")
-                                                 "/share/texmf-dist/tex"
-                                                 "/latex/tools")
-                        (symlink "array.sty" "array-2016-10-06.sty")))))))
-    (home-page "https://www.ctan.org/pkg/latex-tools")
-    (synopsis "LaTeX standard tools bundle")
-    (description
-     "This package is a collection of (variously) simple tools provided as
-part of the LaTeX required tools distribution, comprising the following
-packages: afterpage, array, bm, calc, dcolumn, delarray, enumerate, fileerr,
-fontsmpl, ftnright, hhline, indentfirst, layout, longtable, multicol,
-rawfonts, showkeys, somedefs, tabularx, theorem, trace, varioref, verbatim,
-xr, and xspace.")
-    (license license:lppl1.3+)))
+(define-deprecated-package texlive-latex-rerunfilecheck texlive-rerunfilecheck)
+
+(define-public texlive-tools
+  (let ((template (simple-texlive-package
+                   "texlive-tools"
+                   (list "doc/latex/tools/"
+                         "source/latex/tools/"
+                         "tex/latex/tools/")
+                   (base32
+                    "0c0ixkcvrlzx6sdj25ak3bx0j65qghf51w66yg5wlnpg08d3awrs"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/tools")
+         ((#:build-targets _ '())
+          #~(list "tools.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/tools")))
+              (replace 'copy-files
+                (lambda _
+                  (let ((origin #$(package-source this-package))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc)
+                    ;; These files are not generated.
+                    (let ((directory "/tex/latex/tools"))
+                      (with-directory-excursion (string-append origin directory)
+                        (for-each
+                         (lambda (f)
+                           (install-file f (string-append #$output
+                                                          "/share/texmf-dist"
+                                                          directory)))
+                         '("array-2016-10-06.sty"
+                           "array-2020-02-10.sty"
+                           "multicol-2017-04-11.sty"
+                           "varioref-2016-02-16.sty")))))))))))
+      (home-page "https://www.ctan.org/tex-archive/macros/latex/required/tools/")
+      (synopsis "LaTeX standard tools bundle")
+      (description "This package provides a collection of simple tools that
+are part of the LaTeX required tools distribution, comprising the packages:
+@code{afterpage}, @code{array}, @code{bm}, @code{calc}, @code{dcolumn},
+@code{delarray}, @code{enumerate}, @code{fileerr}, @code{fontsmpl},
+@code{ftnright}, @code{hhline}, @code{indentfirst}, @code{layout},
+@code{longtable}, @code{multicol}, @code{rawfonts}, @code{showkeys},
+@code{somedefs}, @code{tabularx}, @code{theorem}, @code{trace},
+@code{varioref}, @code{verbatim}, @code{xr}, and @code{xspace}.")
+      (license license:lppl1.3+))))
+
+(define-deprecated-package texlive-latex-tools texlive-tools)
 
 (define-public texlive-url
   (package
@@ -4376,6 +4593,7 @@ language that is written in a Cyrillic alphabet.")
                     "11f14dzhwsy4pli21acccip43d36nf3pac33ihjffnps1i2mhqkd"))))
     (package
       (inherit template)
+      (outputs '("out" "doc"))
       (arguments
        (substitute-keyword-arguments (package-arguments template)
          ((#:tex-directory _ #t)
@@ -4385,14 +4603,34 @@ language that is written in a Cyrillic alphabet.")
              (add-after 'unpack 'chdir
                (lambda _
                  (chdir "source/latex/psnfss")))
-           (add-before 'copy-files 'unchdir
-             (lambda _
-               (chdir "../../..")))
-           (add-after 'copy-files 'delete-extra-files
-             (lambda* (#:key outputs #:allow-other-keys)
-               (delete-file-recursively
-                (string-append (assoc-ref outputs "out")
-                               "/share/texmf-dist/source/latex/psnfss/build"))))))))
+             (add-after 'install 'chdir-back
+               (lambda _
+                 (chdir "../../..")))
+             (add-after 'chdir-back 'clean-installed-files
+               (lambda _
+                 ;; Remove the generated .sty files from the build area as
+                 ;; these were already copied to the default output in the
+                 ;; "install" phase.
+                 (delete-file-recursively "source/latex/psnfss/build")))
+             (add-after 'clean-installed-files 'move-doc-files
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (let* ((doc (assoc-ref outputs "doc"))
+                        (doc-root (string-append doc "/share/texmf-dist"))
+                        (doc-path "doc/latex/psnfss")
+                        (source-path "source/latex/psnfss"))
+                   ;; Move the PDF documentation to the "doc" output.
+                   (let* ((file-name "psnfss2e.pdf")
+                          (source (string-append doc-path "/" file-name))
+                          (target-dir (string-append doc-root "/" doc-path)))
+                     (mkdir-p target-dir)
+                     (copy-file source
+                                (string-append target-dir "/" file-name))
+                     (delete-file source))
+
+                   ;; Keep the remaining files together with the package's
+                   ;; source, as per the installation instructions.
+                   (copy-recursively doc-path source-path)
+                   (delete-file-recursively "doc"))))))))
       (native-inputs
        (list texlive-cm))
       (home-page "https://www.ctan.org/pkg/psnfss")
@@ -4422,6 +4660,7 @@ part of the LaTeX required set of packages.")
                 texlive-cm
                 texlive-cm-super ; to avoid bitmap fonts
                 texlive-fonts-latex
+                texlive-graphics
                 texlive-metafont
                 texlive-latex-base
                 texlive-kpathsea       ;for mktex.opt
@@ -4431,9 +4670,8 @@ part of the LaTeX required set of packages.")
                 texlive-babel
                 texlive-generic-babel-english
                 texlive-latex-cyrillic
-                texlive-latex-graphics
                 texlive-psnfss
-                texlive-latex-tools
+                texlive-tools
                 texlive-tetex)))
     (package
       (name "texlive-base")
@@ -4985,24 +5223,47 @@ Unicode characters.  The document should be processed by (pdf)LaTeX with the
 Unicode option of @code{inputenc} or @code{inputenx}, or by XeLaTeX/LuaLaTeX.")
     (license license:lppl1.3c+)))
 
-(define-public texlive-latex-pdftexcmds
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-pdftexcmds"
-              '("/doc/generic/pdftexcmds/"
-                "/tex/generic/pdftexcmds/")
-              (base32
-               "1hph0djbfc8hlwfc41rzlf8l3ccyyvc0n7a0qdrr9881jwd6iv1b")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-generic-iftex texlive-generic-infwarerr
-           texlive-generic-ltxcmds))
-    (home-page "https://www.ctan.org/pkg/pdftexcmds")
-    (synopsis "LuaTeX support for pdfTeX utility functions")
-    (description
-     "This package makes a number of utility functions from pdfTeX
-available for luaTeX by reimplementing them using Lua.")
-    (license license:lppl1.3c+)))
+(define-public texlive-pdftexcmds
+  (let ((template (simple-texlive-package
+                   "texlive-pdftexcmds"
+                   (list "doc/generic/pdftexcmds/"
+                         "source/generic/pdftexcmds/"
+                         "tex/generic/pdftexcmds/")
+                   (base32
+                    "0gad1vi0r5xw7gyj1cb2cp58j4dqrw4awcfxmfrna9xbz91g4sn9"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/pdftexcmds")
+         ((#:build-targets _ '())
+          #~(list "pdftexcmds.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/generic/pdftexcmds")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-iftex texlive-infwarerr texlive-ltxcmds))
+      (home-page "https://www.ctan.org/pkg/pdftexcmds")
+      (synopsis "LuaTeX support for pdfTeX utility functions")
+      (description
+       "This package makes a number of utility functions from pdfTeX
+available for LuaTeX by reimplementing them using Lua.")
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-pdftexcmds texlive-pdftexcmds)
 
 (define-public texlive-latex-psfrag
   (package
@@ -5041,12 +5302,12 @@ rotated.")
     (propagated-inputs
      (list texlive-latex-bigfoot ; for suffix
            texlive-filemod
-           texlive-latex-graphics
+           texlive-graphics
            texlive-latex-ifplatform
            texlive-latex-l3kernel ; for expl3
            texlive-oberdiek
            texlive-latex-psfrag
-           texlive-latex-tools ; for shellesc
+           texlive-tools ; for shellesc
            texlive-latex-trimspaces
            texlive-latex-xkeyval))
     (home-page "https://www.ctan.org/pkg/pstool")
@@ -5060,24 +5321,48 @@ re-processing.")
 
 (define-deprecated-package texlive-latex-pstool texlive-pstool)
 
-(define-public texlive-latex-refcount
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-refcount"
-              (list "/doc/latex/refcount/"
-                    "/tex/latex/refcount/")
-              (base32
-               "0pkmqj2qihndlv3ks33xzqw91q46jx79r3aygj68d8dflyddi583")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/refcount")
-    (synopsis "Counter operations with label references")
-    (description
-     "This package provides the @code{\\setcounterref} and
+(define-public texlive-refcount
+  (let ((template (simple-texlive-package
+                   "texlive-refcount"
+                   (list "doc/latex/refcount/"
+                         "source/latex/refcount/"
+                         "tex/latex/refcount/")
+                   (base32
+                    "128cvwdl4wcdshvs59yn5iljdxxdrc5jircbxav77y7kc3l33z7z"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/refcount")
+         ((#:build-targets _ '())
+          #~(list "refcount.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/refcount")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/refcount")
+      (synopsis "Counter operations with label references")
+      (description
+       "This package provides the @code{\\setcounterref} and
 @code{\\addtocounterref} commands which use the section (or other) number
 from the reference as the value to put into the counter.  It also provides
 @code{\\setcounterpageref} and @code{\\addtocounterpageref} that do the
 corresponding thing with the page reference of the label.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-refcount texlive-refcount)
 
 (define-public texlive-seminar
   (package
@@ -5471,7 +5756,7 @@ BibLaTeX, and is considered experimental.")
     (arguments '(#:tex-directory "latex/geometry"))
     (propagated-inputs
      (list texlive-oberdiek             ;for ifpdf
-           texlive-latex-graphics))     ;for keyval
+           texlive-graphics))           ;for keyval
     (home-page "https://www.ctan.org/pkg/geometry")
     (synopsis "Flexible and complete interface to document dimensions")
     (description
@@ -5635,15 +5920,15 @@ routine.")
                          texlive-booktabs
                          texlive-cm
                          texlive-fontspec
-                         texlive-generic-iftex
+                         texlive-iftex
                          texlive-latex-base
                          texlive-latex-eukdate
-                         texlive-latex-graphics
+                         texlive-graphics
                          texlive-latex-multirow
                          texlive-lm     ;for lmroman10-regular
                          texlive-stix2-otf))
-    (propagated-inputs (list texlive-fontspec texlive-generic-iftex
-                             texlive-latex-graphics))
+    (propagated-inputs (list texlive-fontspec texlive-iftex
+                             texlive-graphics))
     (home-page "https://ctan.org/pkg/metalogo")
     (synopsis "Extended TeX logo macros")
     (description "This package exposes spacing parameters for various TeX
@@ -5759,7 +6044,7 @@ also provides compacted versions of enumerate and itemize.")
                          texlive-booktabs
                          texlive-caption
                          texlive-context
-                         texlive-latex-fancyvrb
+                         texlive-fancyvrb
                          texlive-etoolbox
                          texlive-fonts-latex
                          texlive-fontspec
@@ -5769,13 +6054,13 @@ also provides compacted versions of enumerate and itemize.")
                          ;; them.
                          texlive-stringenc
                          texlive-zapfding
-                         texlive-latex-graphics
+                         texlive-graphics
                          texlive-kpathsea ;for cp227.tcx & friends
                          texlive-makecmds
                          texlive-metalogo
                          texlive-microtype
                          texlive-paralist
-                         texlive-latex-tools
+                         texlive-tools
                          texlive-tex-ini-files)) ;for pdftexconfig
     ;; polyglossia.sty \RequirePackage or \\usepackage these other TexLive
     ;; packages.
@@ -5791,7 +6076,7 @@ also provides compacted versions of enumerate and itemize.")
            texlive-zapfding
            texlive-makecmds
            texlive-latex-l3packages     ;expl3, l3keys2e, xparse
-           texlive-latex-tools
+           texlive-tools
            texlive-latex-xkeyval))
     (home-page "https://www.ctan.org/pkg/polyglossia")
     (synopsis "Alternative to Babel for XeLaTeX and LuaLaTeX")
@@ -6127,39 +6412,45 @@ using box macros and flexible verbatim macros.  You can box mathematics,
 floats, center, flushleft, and flushright, lists, and pages.")
     (license license:lppl1.2+)))
 
-(define-public texlive-latex-fancyhdr
-  (package
-    (name "texlive-latex-fancyhdr")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (svn-reference
-                    (url (string-append "svn://www.tug.org/texlive/tags/"
-                                        %texlive-tag "/Master/texmf-dist/"
-                                        "/tex/latex/fancyhdr"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1h2zv7cps0pknqhy2dyfclyi002lmsfshm0rn6ywfl9p4fnvh0bc"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/fancyhdr")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/fancyhdr")
-    (synopsis "Extensive control of page headers and footers in LaTeX2e")
-    (description
-     "The package provides extensive facilities, both for constructing headers
-and footers, and for controlling their use (for example, at times when LaTeX
-would automatically change the heading style in use).")
-    (license license:lppl)))
+(define-public texlive-fancyhdr
+  (let ((template (simple-texlive-package
+                   "texlive-fancyhdr"
+                   (list "doc/latex/fancyhdr/"
+                         "source/latex/fancyhdr/"
+                         "tex/latex/fancyhdr/")
+                   (base32
+                    "15fainwxs22gg4xhwsv1vmjgdhg34dbkir26nnk4pb6jprpwb83f"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/fancyhdr")
+         ((#:build-targets _ '())
+          #~(list "fancyhdr.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _ (chdir "source/latex/fancyhdr")))
+              (replace 'copy-files
+                (lambda* (#:key inputs outputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/fancyhdr")
+      (synopsis "Extensive control of page headers and footers in LaTeX2e")
+      (description
+       "This package provides extensive facilities, both for constructing
+headers and footers, and for controlling their use (for example, at times when
+LaTeX would automatically change the heading style in use).")
+      (license license:lppl))))
+
+(define-deprecated-package texlive-latex-fancyhdr texlive-fancyhdr)
 
 (define-public texlive-latex-float
   (package
@@ -6209,52 +6500,89 @@ the same place.  The package also has a range of techniques for labelling
 footnotes with symbols rather than numbers.")
     (license license:lppl1.3+)))
 
-(define-public texlive-latex-letltxmacro
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-letltxmacro"
-              (list "/doc/latex/letltxmacro/"
-                    "/tex/latex/letltxmacro/")
-              (base32
-               "0yy1m1jiyxq2pssp0pidaa2swx6lyxw3zwpm2r8m0v2r3lvsyyxx")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/letltxmacro")
-    (synopsis "Let assignment for macros")
-    (description
-     "TeX’s @code{\\let} assignment does not work for LaTeX macros with
+(define-public texlive-letltxmacro
+  (let ((template (simple-texlive-package
+                   "texlive-letltxmacro"
+                   (list "doc/latex/letltxmacro/"
+                         "source/latex/letltxmacro/"
+                         "tex/latex/letltxmacro/")
+                   (base32
+                    "16bmwsng9p80jf78sdmib24apwnw3raw306cs1ms50z5s9dsfdby"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/letltxmacro")
+         ((#:build-targets _ '())
+          #~(list "letltxmacro.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/letltxmacro")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/letltxmacro")
+      (synopsis "Let assignment for macros")
+      (description
+       "TeX’s @code{\\let} assignment does not work for LaTeX macros with
 optional arguments, or for macros that are defined as robust macros by
 @code{\\DeclareRobustCommand}.  This package defines @code{\\LetLtxMacro}
 that also takes care of the involved internal macros.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-letltxmacro texlive-letltxmacro)
 
 (define-public texlive-listings
-  (package
-    (name "texlive-listings")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "listings"))
-              (file-name
-               ;; TODO: Drop "latex-" on next rebuild cycle.
-               (string-append "texlive-latex-listings-" version "-checkout"))
-              (sha256
-               (base32
-                "082zri3gp8s6p2difhk1pbix2vzmvsf6fmld2z78v35xwk3fiya0"))))
-    (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/listings"
-       #:build-targets '("listings.ins")))
-    (home-page "https://www.ctan.org/pkg/listings")
-    (synopsis "Typeset source code listings using LaTeX")
-    (description
-     "The package enables the user to typeset programs (programming code)
+  (let ((template
+         (simple-texlive-package
+          "texlive-listings"
+          (list "doc/latex/listings/"
+                "source/latex/listings/"
+                "tex/latex/listings/")
+          (base32 "15dnm0j86305x84ss3ymhhcczcw45b2liq01vrab6fj204wzsahk"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/listings")
+         ((#:build-targets _ '())
+          #~(list "listings.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/listings")))
+              (replace 'copy-files
+                (lambda* (#:key inputs outputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/listings")
+      (synopsis "Typeset source code listings using LaTeX")
+      (description
+       "The package enables the user to typeset programs (programming code)
 within LaTeX; the source code is read directly by TeX---no front-end processor
 is needed.  Keywords, comments and strings can be typeset using different
 styles.  Support for @code{hyperref} is provided.")
-    (license license:lppl1.3+)))
+      (license license:lppl1.3+))))
 
-(define-public texlive-latex-listings
-  (deprecated-package "texlive-latex-listings" texlive-listings))
+(define-deprecated-package texlive-latex-listings texlive-listings)
 
 (define-public texlive-latex-jknapltx
   (package
@@ -6295,23 +6623,47 @@ transliterate semitic languages; patches to make (La)TeX formulae embeddable
 in SGML; use maths minus in text as appropriate; simple Young tableaux.")
     (license license:gpl2)))
 
-(define-public texlive-latex-kvoptions
-  (package
-    (inherit (simple-texlive-package
-              "texlive-latex-kvoptions"
-              (list "/doc/latex/kvoptions/"
-                    "/tex/latex/kvoptions/")
-              (base32
-               "02i4n2n3j4lg68d3nam08m63kb4irc99wfhyc2z51r02lm1wwmvw")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-generic-kvsetkeys texlive-generic-ltxcmds))
-    (home-page "https://www.ctan.org/pkg/kvoptions")
-    (synopsis "Key/value format for package options")
-    (description
-     "This package provides facilities for using key-value format in
+(define-public texlive-kvoptions
+  (let ((template (simple-texlive-package
+                   "texlive-kvoptions"
+                   (list "doc/latex/kvoptions/"
+                         "source/latex/kvoptions/"
+                         "tex/latex/kvoptions/")
+                   (base32
+                    "1b8q93l54160b8gn3fq484n15n6cylrhmf2xk7p42czg2rqw7w3l"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/kvoptions")
+         ((#:build-targets _ '())
+          #~(list "kvoptions.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/kvoptions")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-kvsetkeys texlive-ltxcmds))
+      (home-page "https://www.ctan.org/pkg/kvoptions")
+      (synopsis "Key/value format for package options")
+      (description
+       "This package provides facilities for using key-value format in
 package options.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-latex-kvoptions texlive-kvoptions)
 
 (define-public texlive-fonts-ec
   (package
@@ -6548,12 +6900,12 @@ Adobe's basic set.")
               (mkdir-p doc)
               (copy-recursively (string-append (getenv "ROOT_DIR") "/doc")
                                 doc))))))
-    (propagated-inputs (list texlive-generic-atbegshi
-                             texlive-generic-gettitlestring
-                             texlive-generic-iftex
-                             texlive-latex-atveryend
-                             texlive-latex-kvoptions
-                             texlive-latex-pdftexcmds
+    (propagated-inputs (list texlive-atbegshi
+                             texlive-gettitlestring
+                             texlive-iftex
+                             texlive-atveryend
+                             texlive-kvoptions
+                             texlive-pdftexcmds
                              texlive-latex-xkeyval))
     (home-page "https://github.com/ho-tex/zref")
     (synopsis "Reference scheme for LaTeX")
@@ -6668,26 +7020,53 @@ format.  LaTeX support, for using these fonts in mathematics, is available via
 one of the packages @code{calrsfs} and @code{mathrsfs}.")
     (license (license:fsf-free "http://mirrors.ctan.org/fonts/rsfs/README"))))
 
-(define-public texlive-latex-eso-pic
-  (package
-    (name "texlive-latex-eso-pic")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "eso-pic"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "12f7pbhiav4iz3rra5vq85v9f14h8j1ybi42kvnkzgjsay87p7gf"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/eso-pic"))
-    (home-page "https://www.ctan.org/pkg/eso-pic")
-    (synopsis "Add picture commands (or backgrounds) to every page")
-    (description
-     "The package adds one or more user commands to LaTeX's @code{shipout}
+(define-public texlive-eso-pic
+  (let ((template (simple-texlive-package
+                   "texlive-eso-pic"
+                   (list "doc/latex/eso-pic/"
+                         "source/latex/eso-pic/"
+                         "tex/latex/eso-pic/")
+                   (base32
+                    "05bqm4x209wji0q6xk1jrjp0nzqafp44dlq30hlpcagrggjb3d9s"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/eso-pic")
+         ((#:build-targets _ '())
+          #~(list "eso-pic.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/eso-pic")))
+              (replace 'copy-files
+                (lambda _
+                  (let ((origin #$(package-source this-package))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc)
+                    ;; This file is not generated.
+                    (install-file
+                     (string-append origin
+                                    "/tex/latex/eso-pic/showframe.sty")
+                     (string-append
+                      #$output
+                      "/share/texmf-dist/tex/latex/eso-pic")))))))))
+      (home-page "https://ctan.org/macros/latex/contrib/eso-pic")
+      (synopsis "Add picture commands (or backgrounds) to every page")
+      (description
+       "The package adds one or more user commands to LaTeX's @code{shipout}
 routine, which may be used to place the output at fixed positions.  The
 @code{grid} option may be used to find the correct places.")
-    (license license:lppl1.3+)))
+      (license license:lppl1.3+))))
+
+(define-deprecated-package texlive-latex-eso-pic texlive-eso-pic)
 
 (define-public texlive-latex-eepic
   (package
@@ -6870,29 +7249,51 @@ the box width to that of the enclosed text, up to the maximum width given.  The
 package also defines some associated length commands.")
     (license license:gpl3+)))
 
-(define-public texlive-latex-pdfpages
-  (package
-    (name "texlive-latex-pdfpages")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "pdfpages"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "140kl8r7g2ak2frjn5pmwiwibfynyfwp897r9vk8pypmn390lzr2"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/pdfpages"))
-    (home-page "https://www.ctan.org/pkg/pdfpages")
-    (synopsis "Include PDF documents in LaTeX")
-    (description
-     "This package simplifies the inclusion of external multi-page PDF
+(define-public texlive-pdfpages
+  (let ((template (simple-texlive-package
+                   "texlive-pdfpages"
+                   (list "doc/latex/pdfpages/"
+                         "source/latex/pdfpages/"
+                         "tex/latex/pdfpages/")
+                   (base32
+                    "0a68vxkygk20fp51fkp7nvs8mc7h6irdvxal8qsnn9zrgr965d76"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/pdfpages")
+         ((#:build-targets _ '())
+          #~(list "pdfpages.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/pdfpages")))
+              (replace 'copy-files
+                (lambda _
+                  (let ((origin #$(package-source this-package))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-tools texlive-oberdiek texlive-graphics texlive-eso-pic))
+      (home-page "https://ctan.org/macros/latex/contrib/pdfpages")
+      (synopsis "Include PDF documents in LaTeX")
+      (description
+       "This package simplifies the inclusion of external multi-page PDF
 documents in LaTeX documents.  Pages may be freely selected and it is possible
 to put several logical pages onto each sheet of paper.  Furthermore a lot of
 hypertext features like hyperlinks and article threads are provided.  The
 package supports pdfTeX (pdfLaTeX) and VTeX.  With VTeX it is even possible to
 use this package to insert PostScript files, in addition to PDF files.")
-    (license license:lppl1.3+)))
+      (license license:lppl1.3+))))
+
+(define-deprecated-package texlive-latex-pdfpages texlive-pdfpages)
 
 (define-public texlive-stix2-otf
   (let ((base (simple-texlive-package
@@ -6979,23 +7380,41 @@ the whole font.")
 
 (define-deprecated-package texlive-fonts-stmaryrd texlive-stmaryrd)
 
-(define-public texlive-latex-subfigure
-  (package
-    (name "texlive-latex-subfigure")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "subfigure"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "15spcl5wb7w269qd6y596vp4yi8sa5ppcx8w4z2i9kyp02r3a0yb"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/subfigure"))
-    (home-page "https://www.ctan.org/pkg/subfigure")
-    (synopsis "Figures divided into subfigures")
-    (description
-     "This (deprecated) package provides support for the manipulation and
+(define-public texlive-subfigure
+  (let ((template (simple-texlive-package
+                   "texlive-subfigure"
+                   (list "doc/latex/subfigure/"
+                         "source/latex/subfigure/"
+                         "tex/latex/subfigure/")
+                   (base32
+                    "1327ygajf6gza5msvhfjjnk6r3sw7vb7rxg23v4gx4dmyxqfqrbi"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/subfigure")
+         ((#:build-targets _ '())
+          #~(list "subfigure.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/subfigure")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/subfigure")
+      (synopsis "Figures divided into subfigures")
+      (description
+       "This (deprecated) package provides support for the manipulation and
 reference of small or \"sub\" figures and tables within a single figure or
 table environment.  It is convenient to use this package when your subfigures
 are to be separately captioned, referenced, or are to be included in the
@@ -7004,7 +7423,9 @@ used inside a figure environment for each subfigure.  An optional first
 argument is used as the caption for that subfigure.  The package is now
 considered obsolete: it was superseded by @code{subfig}, but users may find
 the more recent @code{subcaption} package more satisfactory.")
-    (license license:lppl)))
+      (license license:lppl))))
+
+(define-deprecated-package texlive-latex-subfigure texlive-subfigure)
 
 (define-public texlive-latex-tabulary
   (package
@@ -7258,9 +7679,9 @@ Simple Young tableaux.
              texlive-jknappen
              texlive-hyperref
              texlive-latex-colortbl
-             texlive-latex-fancyhdr
-             texlive-latex-graphics ;for color.sty
-             texlive-latex-tools ;for array.sty
+             texlive-fancyhdr
+             texlive-graphics ;for color.sty
+             texlive-tools ;for array.sty
              texlive-marvosym
              texlive-tex-ini-files ;for pdftexconfig
              texlive-ulem))
@@ -7335,33 +7756,15 @@ The (currently) supported encodings are: OT1, T1, IL2, TS1, T2*, X2, QX, and
 LGR.  The package doesn't (currently) support mathematics.")
     (license license:lppl)))
 
-(define-public texlive-latex-titlesec
+(define-public texlive-titlesec
   (package
-    (name "texlive-latex-titlesec")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (svn-reference
-                    (url (string-append "svn://www.tug.org/texlive/tags/"
-                                        %texlive-tag "/Master/texmf-dist/"
-                                        "/tex/latex/titlesec"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1kw7dvxvdfbf31zw0n8r0g5xak3vcdf25n33fqw93j59zpc5nvbl"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/titlesec")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/titlesec")
+    (inherit
+     (simple-texlive-package
+      "texlive-titlesec"
+      (list "doc/latex/titlesec/" "tex/latex/titlesec/")
+      (base32 "01nwh4p15xblc3kgivjliihy9kr8yr2cqsf9wn2iwqv1njx0i2zw")
+      #:trivial? #t))
+    (home-page "https://ctan.org/macros/latex/contrib/titlesec")
     (synopsis "Select alternative section titles")
     (description
      "This package provides an interface to sectioning commands for selection
@@ -7371,6 +7774,8 @@ styles.  It also includes a package to change the page styles when there are
 floats in a page.  You may assign headers/footers to individual floats, too.")
     (license license:lppl)))
 
+(define-deprecated-package texlive-latex-titlesec texlive-titlesec)
+
 (define-public texlive-latex-type1cm
   (package
     (name "texlive-latex-type1cm")
@@ -8309,35 +8714,45 @@ including:
 It also ensures compatibility with the @code{media9} and @code{animate} packages.")
     (license license:lppl)))
 
-(define-public texlive-latex-ms
-  (package
-    (name "texlive-latex-ms")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "ms"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "04ww5abfm7dx81d21yr2gwy9jswaalnfm2384xp4cyx7srd9spfv"))))
-    (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/ms"
-       #:tex-format "latex"))
-    (home-page "https://ctan.org/pkg/ms")
-    (synopsis "Various LATEX packages by Martin Schröder")
-    (description
-     "A bundle of LATEX packages by Martin Schröder; the collection comprises:
+(define-public texlive-ms
+  (let ((template
+         (simple-texlive-package
+          "texlive-ms"
+          (list "doc/latex/ms/" "source/latex/ms/" "tex/latex/ms/")
+          (base32 "1cgrpx5mybiirjjdmni8kvqdg37dwfkixq3h9ami0mgxqqqfl2x3"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/ms")
+         ((#:tex-format _ "latex") "latex")
+         ((#:build-targets _ '())
+          #~(list "count1to.ins" "multitoc.ins"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/ms")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://ctan.org/macros/latex/contrib/ms")
+      (synopsis "Various LaTeX packages by Martin Schroder")
+      (description
+       "The remains of a bundle of LaTeX packages by Martin Schroder; the
+collection comprises: count1to, make use of TeX counters; and multitoc,
+typeset the table of contents in multiple columns.")
+      (license license:lppl))))
 
-@itemize
-@item @command{count1to}, make use of fixed TEX counters;
-@item @command{everysel}, set commands to execute every time a font is selected;
-@item @command{everyshi}, set commands to execute whenever a page is shipped out;
-@item @command{multitoc}, typeset the table of contents in multiple columns;
-@item @command{prelim2e}, mark typeset pages as preliminary; and
-@item @command{ragged2e}, typeset ragged text and allow hyphenation.
-@end itemize\n")
-    (license license:lppl1.3c+)))
+(define-deprecated-package texlive-latex-ms texlive-ms)
 
 (define-public texlive-numprint
   (let ((template
@@ -8499,69 +8914,57 @@ from a typewriter.  The package also offers double and wavy underlining, and
 striking out (line through words) and crossing out (/// over words).")
     (license license:lppl1.3c+)))
 
-(define-deprecated-package texlive-generic-ulem texlive-ulem)
-
 (define-public texlive-pgf
   (package
-    (name "texlive-pgf")
-    (version (number->string %texlive-revision))
-    (source
-     (origin
-       (method svn-fetch)
-       (uri (svn-reference
-             (url (string-append "svn://www.tug.org/texlive/tags/"
-                                 %texlive-tag "/Master/texmf-dist/"
-                                 "/tex/latex/pgf"))
-             (revision %texlive-revision)))
-       (file-name (string-append name "-" version "-checkout"))
-       (sha256
-        (base32
-         "1jk10rxz5f8vh46am11b40hxhhikk67h9jr3z877q5qc8kwppgza"))))
-    (build-system trivial-build-system)
-    (native-inputs
-     `(("texlive-latex-pgf-generic"
-        ,(origin
-           (method svn-fetch)
-           (uri (svn-reference
-             (url (string-append "svn://www.tug.org/texlive/tags/"
-                                 %texlive-tag "/Master/texmf-dist/"
-                                 "/tex/generic/pgf"))
-             (revision %texlive-revision)))
-           (file-name (string-append "texlive-latex-pgf-generic" version "-checkout"))
-           (sha256
-            (base32
-             "05zdq7y3am109m5534ahqqp9x5iar3ha68v1r4zkrdly2mijxz2j"))))))
+    (inherit (simple-texlive-package
+              "texlive-pgf"
+              (list "doc/generic/pgf/"
+                    "scripts/pgf/"
+                    "source/generic/pgf/c/"
+                    "source/generic/pgf/testsuite/external/"
+                    "source/generic/pgf/testsuite/mathtest/"
+                    "tex/context/third/pgf/basiclayer/"
+                    "tex/context/third/pgf/frontendlayer/"
+                    "tex/context/third/pgf/math/"
+                    "tex/context/third/pgf/systemlayer/"
+                    "tex/context/third/pgf/utilities/"
+                    "tex/generic/pgf/"
+                    "tex/latex/pgf/basiclayer/"
+                    "tex/latex/pgf/compatibility/"
+                    "tex/latex/pgf/doc/"
+                    "tex/latex/pgf/frontendlayer/"
+                    "tex/latex/pgf/math/"
+                    "tex/latex/pgf/systemlayer/"
+                    "tex/latex/pgf/utilities/"
+                    "tex/plain/pgf/basiclayer/"
+                    "tex/plain/pgf/frontendlayer/"
+                    "tex/plain/pgf/math/"
+                    "tex/plain/pgf/systemlayer/"
+                    "tex/plain/pgf/utilities/")
+              (base32
+               "02qfx9k0ggqfrbrjpfz74w8rkvvzk07rmgr37r7y64gggwpn4cw5")
+              #:trivial? #t))
     (propagated-inputs
-     (list texlive-xcolor))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((target-generic (string-append (assoc-ref %outputs "out")
-                                              "/share/texmf-dist/tex/generic/pgf"))
-               (target-latex (string-append (assoc-ref %outputs "out")
-                                            "/share/texmf-dist/tex/latex/pgf")))
-           (mkdir-p target-generic)
-           (mkdir-p target-latex)
-           (copy-recursively (assoc-ref %build-inputs "texlive-latex-pgf-generic") target-generic)
-           (copy-recursively (assoc-ref %build-inputs "source") target-latex)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/tikz")
+     (list texlive-atveryend
+           texlive-fp
+           texlive-graphics
+           texlive-ms
+           texlive-pdftexcmds
+           texlive-xcolor))
+    (home-page "https://ctan.org/graphics/pgf/base")
     (synopsis "Create PostScript and PDF graphics in TeX")
     (description
      "PGF is a macro package for creating graphics.  It is platform- and
 format-independent and works together with the most important TeX backend
 drivers, including pdfTeX and dvips.  It comes with a user-friendly syntax layer
-called TikZ.
-
-Its usage is similar to pstricks and the standard picture environment.  PGF
-works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt.  Unlike pstricks, it can
-produce either PostScript or PDF output.")
-    (license license:lppl1.3c+)))
+called TikZ.  Its usage is similar to pstricks and the standard picture
+environment.  PGF works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt.  Unlike
+pstricks, it can produce either PostScript or PDF output.")
+    ;; The code of the package is dual-license: GPL-2 or LPPL-1.3c+.  The
+    ;; documentation is also dual-license: LPPL-1.3c+ or GFDL-1.2.
+    (license (list license:gpl2 license:lppl1.3c+ license:fdl1.2+))))
 
-(define-public texlive-latex-pgf
-  (deprecated-package "texlive-latex-pgf" texlive-pgf))
+(define-deprecated-package texlive-latex-pgf texlive-pgf)
 
 (define-public texlive-latex-koma-script
   (package
@@ -8622,162 +9025,381 @@ refers to the version of scrbook, scrreprt, scrartcl, scrlttr2 and
 typearea (which are the main parts of the bundle).")
     (license license:lppl1.3+)))
 
-(define-public texlive-generic-atbegshi
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-atbegshi"
-              '("/doc/latex/atbegshi/"
-                "/tex/generic/atbegshi/")
-              (base32
-               "184fr5kd3wl44ix63lwb3ll7dhiikkyw1czbnzrl4am4rx0zh4d8")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/atbegshi")
-    (synopsis "Execute commands at @code{\\shipout} time")
-    (description
-     "This package is a modern reimplementation of package @code{everyshi},
+(define-public texlive-atbegshi
+  (let ((template (simple-texlive-package
+                   "texlive-atbegshi"
+                   (list "doc/latex/atbegshi/"
+                         "source/latex/atbegshi/"
+                         "tex/generic/atbegshi/")
+                   (base32
+                    "0vd90wdjwj5w4g4xka4nms3rgixjw63iwf0hj0v1akcfflwvgn69"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/atbegshi")
+         ((#:build-targets _ '())
+          #~(list "atbegshi.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/atbegshi")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/atbegshi")
+      (synopsis "Execute commands at @code{\\shipout} time")
+      (description
+       "This package is a modern reimplementation of package @code{everyshi},
 providing various commands to be executed before a @code{\\shipout} command.
 It makes use of e-TeX’s facilities if they are available.  The package may
 be used either with LaTeX or with plain TeX.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-bigintcalc
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-bigintcalc"
-              '("/doc/latex/bigintcalc/README.md"
-                "/tex/generic/bigintcalc/")
-              (base32
-               "19grk4p1dh566hgpzhnjyjnrw57hpjijcpr7ci401n9jszcc1xkz")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-latex-pdftexcmds))
-    (home-page "https://www.ctan.org/pkg/bigintcalc")
-    (synopsis "Integer calculations on very large numbers")
-    (description
-     "This package provides expandable arithmetic operations with big
+(define-deprecated-package texlive-generic-atbegshi texlive-atbegshi)
+
+(define-public texlive-bigintcalc
+  (let ((template (simple-texlive-package
+                   "texlive-bigintcalc"
+                   (list "doc/latex/bigintcalc/"
+                         "source/latex/bigintcalc/"
+                         "tex/generic/bigintcalc/")
+                   (base32
+                    "1cyv4mcvx83ab782l6h2f86a63ipm845r7hv1m6f1z2336vy7rc5"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/bigintcalc")
+         ((#:build-targets _ '())
+          #~(list "bigintcalc.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/bigintcalc")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-pdftexcmds))
+      (home-page "https://www.ctan.org/pkg/bigintcalc")
+      (synopsis "Integer calculations on very large numbers")
+      (description
+       "This package provides expandable arithmetic operations with big
 integers that can exceed TeX's number limits.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-bitset
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-bitset"
-              '("/doc/latex/bitset/README.md"
-                "/tex/generic/bitset/")
-              (base32
-               "0inj6qpzizvsbxdfsaijnl4iq976kyrnchnm3gc1kc2w389zrn1l")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-generic-infwarerr texlive-generic-intcalc
-           texlive-generic-bigintcalc))
-    (home-page "https://www.ctan.org/pkg/bitset")
-    (synopsis "Handle bit-vector datatype")
-    (description
-     "This package defines and implements the data type bit set, a vector
+(define-deprecated-package texlive-generic-bigintcalc texlive-bigintcalc)
+
+(define-public texlive-bitset
+  (let ((template (simple-texlive-package
+                   "texlive-bitset"
+                   (list "doc/latex/bitset/"
+                         "source/latex/bitset/"
+                         "tex/generic/bitset/")
+                   (base32
+                    "1q7vk5gr5a4vaa3l20j178cg2q7a99rxdiyxhzpx9a6lfqfkjddz"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/bitset")
+         ((#:build-targets _ '())
+          #~(list "bitset.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/bitset")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-bigintcalc texlive-infwarerr texlive-intcalc))
+      (home-page "https://www.ctan.org/pkg/bitset")
+      (synopsis "Handle bit-vector datatype")
+      (description
+       "This package defines and implements the data type bit set, a vector
 of bits.  The size of the vector may grow dynamically.  Individual bits
 can be manipulated.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-etexcmds
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-etexcmds"
-              '("/doc/latex/etexcmds/README.md"
-                "/tex/generic/etexcmds/")
-              (base32
-               "11y6pnlq13bp0ybi7c82g8ds8085zv1zaslgqv3dzhgi3dklpc0c")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-generic-infwarerr texlive-generic-iftex))
-    (home-page "https://www.ctan.org/pkg/etexcmds")
-    (synopsis "Avoid name clashes with e-TeX commands")
-    (description
-     "New primitive commands are introduced in e-TeX; sometimes the names
+(define-deprecated-package texlive-generic-bitset texlive-bitset)
+
+(define-public texlive-etexcmds
+  (let ((template (simple-texlive-package
+                   "texlive-etexcmds"
+                   (list "doc/latex/etexcmds/"
+                         "source/latex/etexcmds/"
+                         "tex/generic/etexcmds/")
+                   (base32
+                    "13cf1fs5x9d8749b2jgxmgnkrx0r4hwpl389r15kq3ldz9jfl627"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/etexcmds")
+         ((#:build-targets _ '())
+          #~(list "etexcmds.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/etexcmds")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-iftex texlive-infwarerr))
+      (home-page "https://www.ctan.org/pkg/etexcmds")
+      (synopsis "Avoid name clashes with e-TeX commands")
+      (description
+       "New primitive commands are introduced in e-TeX; sometimes the names
 collide with existing macros.  This package solves the name clashes by
 adding a prefix to e-TeX’s commands.  For example, ε-TeX’s
 @code{\\unexpanded} is provided as @code{\\etex@@unexpanded}.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-gettitlestring
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-gettitlestring"
-              '("/doc/latex/gettitlestring/"
-                "/tex/generic/gettitlestring/")
-              (base32
-               "1p4hg9mac03rzvj9dw0ws3zdh55fy1ns954f912algw9f2aq4xgp")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/gettitlestring")
-    (synopsis "Clean up title references")
-    (description
-     "This package provides commands for cleaning up the title string
+(define-deprecated-package texlive-generic-etexcmds texlive-etexcmds)
+
+(define-public texlive-gettitlestring
+  (let ((template (simple-texlive-package
+                   "texlive-gettitlestring"
+                   (list "doc/latex/gettitlestring/"
+                         "source/latex/gettitlestring/"
+                         "tex/generic/gettitlestring/")
+                   (base32
+                    "1vbvmwrpsvy37gbwdmsqbbsicjiww3i0bh1yqnb75jiya9an0sjb"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/gettitlestring")
+         ((#:build-targets _ '())
+          #~(list "gettitlestring.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/gettitlestring")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/gettitlestring")
+      (synopsis "Clean up title references")
+      (description
+       "This package provides commands for cleaning up the title string
 (such as removing @code{\\label} commands) for packages that typeset such
 strings.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-infwarerr
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-infwarerr"
-              '("/tex/generic/infwarerr/")
-              (base32
-               "19nlrbfmqbkjrrx9x75s9nd6crg1lzimb2fr3hfblaivj6lx8p4r")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/infwarerr")
-    (synopsis "Information/warning/error macros")
-    (description
-     "This package provides a complete set of macros for information,
+(define-deprecated-package texlive-generic-gettitlestring texlive-gettitlestring)
+
+(define-public texlive-infwarerr
+  (let ((template (simple-texlive-package
+                   "texlive-infwarerr"
+                   (list "doc/latex/infwarerr/"
+                         "source/latex/infwarerr/"
+                         "tex/generic/infwarerr/")
+                   (base32
+                    "0lpcrpf3d6xfdp68ri22126x57mvmq5dpj9np68ph8p8lhvhqdjd"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/infwarerr")
+         ((#:build-targets _ '())
+          #~(list "infwarerr.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/infwarerr")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/infwarerr")
+      (synopsis "Information/warning/error macros")
+      (description
+       "This package provides a complete set of macros for information,
 warning and error messages.  Under LaTeX, the commands are wrappers for
 the corresponding LaTeX commands; under Plain TeX they are available as
 complete implementations.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-intcalc
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-intcalc"
-              '("/tex/generic/intcalc/")
-              (base32
-               "0llrnayqwdqxi91yh7panbbiljina3bynv2hxhi6sssaw3pyd92l")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/intcalc")
-    (synopsis "Expandable arithmetic operations with integers")
-    (description
-     "This package provides expandable arithmetic operations with integers,
+(define-deprecated-package texlive-generic-infwarerr texlive-infwarerr)
+
+(define-public texlive-intcalc
+  (let ((template (simple-texlive-package
+                   "texlive-intcalc"
+                   (list "doc/latex/intcalc/"
+                         "source/latex/intcalc/"
+                         "tex/generic/intcalc/")
+                   (base32
+                    "15alwp9cr8wasfajs3p201p7nqml37vly9mpg1j5l6xv95javk7x"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/intcalc")
+         ((#:build-targets _ '())
+          #~(list "intcalc.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/intcalc")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/intcalc")
+      (synopsis "Expandable arithmetic operations with integers")
+      (description
+       "This package provides expandable arithmetic operations with integers,
 using the e-TeX extension @code{\\numexpr} if it is available.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-kvdefinekeys
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-kvdefinekeys"
-              '("/tex/generic/kvdefinekeys/")
-              (base32
-               "12nn74skhwiszbdhawqds31caz6d59a5pjmwar0r8lmk4f1jr3xh")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/kvdefinekeys")
-    (synopsis "Define keys for use in the @code{kvsetkeys} package")
-    (description
-     "This package provides the @code{\\kv@@define@@key} (analogous to
+(define-deprecated-package texlive-generic-intcalc texlive-intcalc)
+
+(define-public texlive-kvdefinekeys
+  (let ((template (simple-texlive-package
+                   "texlive-kvdefinekeys"
+                   (list "doc/latex/kvdefinekeys/"
+                         "source/latex/kvdefinekeys/"
+                         "tex/generic/kvdefinekeys/")
+                   (base32
+                    "1026h223ph3nzhs6jqbasa0bzsrdg3zgllfcwwcavfzb5i6p9jdf"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/kvdefinekeys")
+         ((#:build-targets _ '())
+          #~(list "kvdefinekeys.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/kvdefinekeys")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/kvdefinekeys")
+      (synopsis "Define keys for use in the @code{kvsetkeys} package")
+      (description
+       "This package provides the @code{\\kv@@define@@key} (analogous to
 keyval’s @code{\\define@@key}, to define keys for use by @code{kvsetkeys}.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-kvsetkeys
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-kvsetkeys"
-              '("/tex/generic/kvsetkeys/")
-              (base32
-               "149vpmv4vms269dzq4sghlngg380sasvxnb3sx9rfs7d9j0finvi")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/kvsetkeys")
-    (synopsis "Key value parser with default handler support")
-    (description
-     "This package provides @code{\\kvsetkeys}, a variant of @code{\\setkeys}
+(define-deprecated-package texlive-generic-kvdefinekeys texlive-kvdefinekeys)
+
+(define-public texlive-kvsetkeys
+  (let ((template (simple-texlive-package
+                   "texlive-kvsetkeys"
+                   (list "doc/latex/kvsetkeys/"
+                         "source/latex/kvsetkeys/"
+                         "tex/generic/kvsetkeys/")
+                   (base32
+                    "0b2f2r49vi8x54qshm1h9sh8zhdmy0mc2y44yd05kcmmbiiq7hfz"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/kvsetkeys")
+         ((#:build-targets _ '())
+          #~(list "kvsetkeys.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/kvsetkeys")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/kvsetkeys")
+      (synopsis "Key value parser with default handler support")
+      (description
+       "This package provides @code{\\kvsetkeys}, a variant of @code{\\setkeys}
 from the @code{keyval} package.  Users can specify a handler that deals with
 unknown options.  Active commas and equal signs may be used, and only one
 level of curly braces are removed from the values.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-generic-kvsetkeys texlive-kvsetkeys)
 
 (define-public texlive-generic-listofitems
   (package
@@ -8813,56 +9435,130 @@ the parsing character has been selected by the user, and to access any of
 these items with a simple syntax.")
     (license license:lppl1.3c+)))
 
-(define-public texlive-generic-ltxcmds
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-ltxcmds"
-              '("/tex/generic/ltxcmds/")
-              (base32
-               "1lr77yai2qivlx26s5094czpfxmg96bhxps5wbm8xn7cpsw0zbd9")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/ltxcmds")
-    (synopsis "LaTeX kernel commands extracted for general use")
-    (description
-     "This package exports some utility macros from the LaTeX kernel into
+(define-public texlive-ltxcmds
+  (let ((template (simple-texlive-package
+                   "texlive-ltxcmds"
+                   (list "doc/generic/ltxcmds/"
+                         "source/generic/ltxcmds/"
+                         "tex/generic/ltxcmds/")
+                   (base32
+                    "1izcw9jl64iij541183hc156sjwamvxm7q9fkpfnz8sppyg31fkb"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/ltxcmds")
+         ((#:build-targets _ '())
+          #~(list "ltxcmds.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/generic/ltxcmds")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/ltxcmds")
+      (synopsis "LaTeX kernel commands extracted for general use")
+      (description
+       "This package exports some utility macros from the LaTeX kernel into
 a separate namespace and also makes them available for other formats such
 as plain TeX.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-pdfescape
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-pdfescape"
-              '("/tex/generic/pdfescape/")
-              (base32
-               "1vbdjmm9bi9ngzz2z1b8jnf6nzf9xsaj5pvyswg13y4dr00mnz6n")
-              #:trivial? #t))
-    (home-page "https://www.ctan.org/pkg/pdfescape")
-    (synopsis "pdfTeX's escape features for plain TeX")
-    (description
-     "This package implements pdfTeX's escape features (@code{\\pdfescapehex},
+(define-deprecated-package texlive-generic-ltxcmds texlive-ltxcmds)
+
+(define-public texlive-pdfescape
+  (let ((template (simple-texlive-package
+                   "texlive-pdfescape"
+                   (list "doc/latex/pdfescape/"
+                         "source/latex/pdfescape/"
+                         "tex/generic/pdfescape/")
+                   (base32
+                    "16a0rdmpa4wxh6gyf46qwfgyh399rwdind2wc89phqd50ky9b5m4"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/pdfescape")
+         ((#:build-targets _ '())
+          #~(list "pdfescape.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/pdfescape")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (home-page "https://www.ctan.org/pkg/pdfescape")
+      (synopsis "pdfTeX's escape features for plain TeX")
+      (description
+       "This package implements pdfTeX's escape features (@code{\\pdfescapehex},
 @code{\\pdfunescapehex}, @code{\\pdfescapename}, @code{\\pdfescapestring})
 using TeX or e-TeX.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
-(define-public texlive-generic-uniquecounter
-  (package
-    (inherit (simple-texlive-package
-              "texlive-generic-uniquecounter"
-              '("/doc/latex/uniquecounter/"
-                "/tex/generic/uniquecounter/")
-              (base32
-               "1bjh8vwiqlkmjqndnh4xp116524x4m3hdcyq2s231jiqy8il8dcc")
-              #:trivial? #t))
-    (propagated-inputs
-     (list texlive-generic-bigintcalc texlive-generic-infwarerr))
-    (home-page "https://www.ctan.org/pkg/uniquecounter")
-    (synopsis "Unlimited unique counter")
-    (description
-     "This package provides a kind of counter that provides unique number
+(define-deprecated-package texlive-generic-pdfescape texlive-pdfescape)
+
+(define-public texlive-uniquecounter
+  (let ((template (simple-texlive-package
+                   "texlive-uniquecounter"
+                   (list "doc/latex/uniquecounter/"
+                         "source/latex/uniquecounter/"
+                         "tex/generic/uniquecounter/")
+                   (base32
+                    "1ll3iwk8x44l3qx1dhna399ngg66vbllivv8i3lwzriwkx22xbf3"))))
+    (package
+      (inherit template)
+      (outputs '("out" "doc"))
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/uniquecounter")
+         ((#:build-targets _ '())
+          #~(list "uniquecounter.dtx"))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/uniquecounter")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))))))
+      (propagated-inputs
+       (list texlive-bigintcalc texlive-infwarerr))
+      (home-page "https://www.ctan.org/pkg/uniquecounter")
+      (synopsis "Unlimited unique counter")
+      (description
+       "This package provides a kind of counter that provides unique number
 values.  Several counters can be created with different names.  The numeric
 values are not limited.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
+
+(define-deprecated-package texlive-generic-uniquecounter texlive-uniquecounter)
 
 (define-public texlive-latex-readarray
   (package
@@ -9401,9 +10097,9 @@ may be used instead of @code{\\marginpar} at almost every place where
 frames made with the @code{framed} package.")
       (license license:lppl1.3c+))))
 
-(define-public texlive-generic-iftex
+(define-public texlive-iftex
   (let ((template (simple-texlive-package
-                   "texlive-generic-iftex"
+                   "texlive-iftex"
                    (list "/doc/generic/iftex/"
                          "/tex/generic/iftex/")
                    (base32
@@ -9421,9 +10117,9 @@ package also provides the @code{\\RequirePDFTeX}, @code{\\RequireXeTeX}, and
 LuaTeX (respectively) is not the engine in use.")
       (license license:lppl1.3+))))
 
-(define-deprecated-package texlive-iftex texlive-generic-iftex)
+(define-deprecated-package texlive-generic-iftex texlive-iftex)
 
-(define-deprecated-package texlive-generic-ifxetex texlive-generic-iftex)
+(define-deprecated-package texlive-generic-ifxetex texlive-iftex)
 
 (define-public texlive-tabu
   (let ((template
@@ -9469,37 +10165,6 @@ used in place of @code{tabular}, @code{tabular*} and @code{tabularx}
 environments, as well as the @code{array} environment in maths mode.")
       (license license:lppl1.3+))))
 
-(define-public texlive-tools
-  (let ((template (simple-texlive-package
-                   "texlive-tools"
-                   (list "/doc/latex/tools/"
-                         "/source/latex/tools/")
-                   (base32
-                    "1xas0b69r3d5x4zhcqysgybyqaikd9avv6r1bdckb947id3iaz58"))))
-    (package
-      (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:tex-directory _ '())
-          "latex/tools")
-         ((#:build-targets _ '())
-          ''("tools.ins"))
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-after 'unpack 'chdir
-               (lambda _ (chdir "source/latex/tools") #t))))))
-      (home-page "https://www.ctan.org/tex-archive/macros/latex/required/tools/")
-      (synopsis "LaTeX standard tools bundle")
-      (description "This package provides a collection of simple tools that
-are part of the LaTeX required tools distribution, comprising the packages:
-@code{afterpage}, @code{array}, @code{bm}, @code{calc}, @code{dcolumn},
-@code{delarray}, @code{enumerate}, @code{fileerr}, @code{fontsmpl},
-@code{ftnright}, @code{hhline}, @code{indentfirst}, @code{layout},
-@code{longtable}, @code{multicol}, @code{rawfonts}, @code{showkeys},
-@code{somedefs}, @code{tabularx}, @code{theorem}, @code{trace},
-@code{varioref}, @code{verbatim}, @code{xr}, and @code{xspace}.")
-      (license license:lppl1.3+))))
-
 (define-public texlive-latex-xkeyval
   (package
     (name "texlive-latex-xkeyval")
@@ -9562,17 +10227,12 @@ are part of the LaTeX required tools distribution, comprising the packages:
            texlive-graphics-def
            texlive-xcolor
            texlive-latex-footmisc
-
-           ;; TODO: Use non-deprecated name on next rebuild cycle.
-           texlive-latex-listings
-
-           texlive-generic-iftex
+           texlive-iftex
+           texlive-listings
            texlive-pstricks
            texlive-pst-text
            texlive-tools
-
-           ;; TODO: Use non-deprecated name on next rebuild cycle.
-           texlive-latex-pgf))
+           texlive-pgf))
     (home-page "http://www.ctan.org/pkg/xkeyval")
     (synopsis "Extension of the keyval package")
     (description
@@ -9926,6 +10586,21 @@ uppercase letters commonly used to represent various number sets.
 LaTeX macro support is provided in package @code{psnfss}.")
     (license license:gpl3+)))
 
+(define-public texlive-fp
+  (package
+    (inherit
+     (simple-texlive-package
+      "texlive-fp"
+      (list "doc/latex/fp/" "tex/latex/fp/" "tex/plain/fp/")
+      (base32 "1q555fx71cf88sn3npzb0j2i10ak920k0qc9ccdygz99vqg10dad")
+      #:trivial? #t))
+    (home-page "https://ctan.org/macros/latex/contrib/fp")
+    (synopsis "Fixed point arithmetic")
+    (description
+     "This package provides an extensive collection of arithmetic operations
+for fixed point real numbers of high precision.")
+    (license license:lppl)))
+
 (define-public texlive-fpl
   (package
     (inherit (simple-texlive-package
@@ -10486,22 +11161,39 @@ The macros were designed for use within other macros.")
 (define-public texlive-grfext
   (let ((template (simple-texlive-package
                    "texlive-grfext"
-                   (list "/doc/latex/grfext/README.md"
-                         "/source/latex/grfext/grfext.dtx")
+                   (list "doc/latex/grfext/"
+                         "source/latex/grfext/"
+                         "tex/latex/grfext/")
                    (base32
-                    "1cdvjp9gcnixxlbl8ibwz1yr799gwax5hm686hwmwsigdgafhzgq"))))
+                    "1x35r10mkjg8dzx7aj99y4dwyf69jgs41qwapdx523lbglywmgxp"))))
     (package
       (inherit template)
+      (outputs '("out" "doc"))
       (arguments
        (substitute-keyword-arguments (package-arguments template)
-         ((#:tex-directory _ '())
+         ((#:tex-directory _ #t)
           "latex/grfext")
-         ((#:build-targets _ '())
-          ''("grfext.dtx"))
+         ((#:build-targets _ #t)
+          #~(list "grfext.dtx"))
          ((#:phases phases)
-          `(modify-phases ,phases
-             (add-after 'unpack 'chdir
-               (lambda _ (chdir "source/latex/grfext")))))))
+          #~(modify-phases #$phases
+              (add-after 'unpack 'chdir
+                (lambda _
+                  (chdir "source/latex/grfext")))
+              (replace 'copy-files
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((origin (assoc-ref inputs "source"))
+                        (source (string-append #$output
+                                               "/share/texmf-dist/source"))
+                        (doc (string-append #$output:doc
+                                            "/share/texmf-dist/doc")))
+                    (copy-recursively (string-append origin "/source") source)
+                    (copy-recursively (string-append origin "/doc") doc))))
+              (add-after 'copy-files 'remove-generated-file
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (with-directory-excursion #$output
+                    (for-each delete-file
+                              (find-files "." "\\.(drv|ins)$")))))))))
       (home-page "https://github.com/ho-tex/grfext")
       (synopsis "Manipulate the graphics package's list of extensions")
       (description "This package provides macros for adding to, and reordering
@@ -10530,12 +11222,12 @@ the list of graphics file extensions recognised by package graphics.")
       (native-inputs
        (list texlive-ydoc))
       (propagated-inputs
-       (list texlive-pgf
-             texlive-latex-varwidth
+       (list texlive-latex-varwidth
              texlive-latex-xkeyval
              texlive-collectbox
              texlive-ifoddpage
-             texlive-storebox))
+             texlive-storebox
+             texlive-pgf))
       (home-page "https://www.ctan.org/pkg/adjustbox")
       (synopsis "Graphics package-alike macros for “general” boxes")
       (description "The package provides several macros to adjust boxed
@@ -10613,8 +11305,7 @@ levels.  All functionality is provided by the single @code{\\qrcode} command.")
     (package
       (inherit template)
       (propagated-inputs
-       (list texlive-etoolbox texlive-latex-environ texlive-pgf
-             texlive-latex-tools))
+       (list texlive-etoolbox texlive-latex-environ texlive-pgf texlive-tools))
       (home-page "https://www.ctan.org/pkg/tcolorbox")
       (synopsis "Colored boxes, for LaTeX examples and theorems, etc")
       (description "This package provides an environment for colored and
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index 8cf90855a3..f254d59db6 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2019, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
 ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -47,14 +47,15 @@
 (define-public texinfo
   (package
     (name "texinfo")
-    (version "6.7")
+    (version "6.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/texinfo/texinfo-"
                                   version ".tar.xz"))
+              (patches (search-patches "texinfo-headings-single.patch"))
               (sha256
                (base32
-                "1aicn1v3czqii08wc91jw089n1x3gfchkf808q2as59dak0h714q"))))
+                "1i7yb7mrp3inz25zbzv2pllr4y7d58v818f1as7iz8mw53nm7dwf"))))
     (build-system gnu-build-system)
     (arguments
      ;; When cross-compiling, the package is configured twice: once with the
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index e488b572a3..3a78d8f05f 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -85,7 +85,7 @@
 (define-public libtasn1
   (package
     (name "libtasn1")
-    (version "4.17.0")
+    (version "4.19.0")
     (source
      (origin
       (method url-fetch)
@@ -93,7 +93,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "19a53i1ajs4dd8nnlr2i6gbzvla84ay71g3y1phvh8krx8f5brzc"))))
+        "0yizlr2y6gfjh86v68qw5wjcfg16arnw1f731kndd17l3jng04qn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -137,52 +137,51 @@ in intelligent transportation networks.")
 (define-public p11-kit
   (package
     (name "p11-kit")
-    (version "0.23.22")
+    (version "0.24.1")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
-                          "download/" version "/p11-kit-" version ".tar.xz"))
-      (sha256
-       (base32 "1dn6br4v033d3gp2max9lsr3y4q0nj6iyr1yq3kzi8ym7lal13wa"))))
+       (method url-fetch)
+       (uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
+                           "download/" version "/p11-kit-" version ".tar.xz"))
+       (sha256
+        (base32 "1y5fm9gwhkh902r26p90qf1g2h1ziqrk4hgf9i9sxm2wzlz7ignq"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(,@(if (hurd-target?)
-             `(("autoconf" ,autoconf)
-               ("automake" ,automake)
-               ("gettext" ,gettext-minimal) ;for autopoint
-               ("libtool" ,libtool))
-             '())
-       ("pkg-config" ,pkg-config)))
+     (append (list pkg-config)
+             (if (hurd-target?)
+                 (list autoconf automake gettext-minimal libtool)
+                 '())))
     (inputs
-     `(("libffi" ,libffi)
-       ,@(if (hurd-target?)
-             `(("libbsd" ,libbsd)
-               ("hurd-patch" ,(search-patch "p11-kit-hurd.patch")))
-             '())
-       ("libtasn1" ,libtasn1)))
+     (append (list libffi libtasn1)
+             (if (hurd-target?)
+                 (list libbsd)
+                 '())))
     (arguments
-     `(#:configure-flags '("--without-trust-paths")
-       #:phases (modify-phases %standard-phases
-                  ,@(if (hurd-target?)
-                        '((add-after 'unpack 'apply-hurd-patch
-                            (lambda* (#:key inputs #:allow-other-keys)
-                              (let ((patch (assoc-ref inputs "hurd-patch")))
-                                (invoke "patch" "-p1" "--batch" "-i"
-                                        patch))))
-                          (replace 'bootstrap
-                            (lambda _
-                              (invoke "autoreconf" "-fiv"))))
-                        '())
-                  (add-before 'check 'prepare-tests
-                    (lambda _
-                      ;; "test-runtime" expects XDG_RUNTIME_DIR to be set up
-                      ;; and looks for .cache and other directories (only).
-                      ;; For simplicity just drop it since it is irrelevant
-                      ;; in the build container.
-                      (substitute* "Makefile"
-                        (("test-runtime\\$\\(EXEEXT\\)") ""))
-                      #t)))))
+     (list #:configure-flags
+           ;; Use the default certificates so that users such as flatpak
+           ;; find them.  See <https://issues.guix.gnu.org/49957>.
+           #~'("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt")
+           #:phases #~(modify-phases %standard-phases
+                        #$@(if (hurd-target?)
+                               #~((add-after 'unpack 'apply-hurd-patch
+                                    (lambda* (#:key inputs #:allow-other-keys)
+                                      (define patch
+                                        #$(local-file
+                                           (search-patch "p11-kit-hurd.patch")))
+                                      (invoke "patch" "-p1" "--batch" "-i"
+                                              patch)))
+                                  (replace 'bootstrap
+                                    (lambda _
+                                      (invoke "autoreconf" "-fiv"))))
+                               #~())
+                        (add-before 'check 'prepare-tests
+                          (lambda _
+                            ;; "test-runtime" expects XDG_RUNTIME_DIR to be set up
+                            ;; and looks for .cache and other directories (only).
+                            ;; For simplicity just drop it since it is irrelevant
+                            ;; in the build container.
+                            (substitute* "Makefile"
+                              (("test-runtime\\$\\(EXEEXT\\)") "")))))))
     (home-page "https://p11-glue.github.io/p11-glue/p11-kit.html")
     (synopsis "PKCS#11 library")
     (description
@@ -193,28 +192,10 @@ coordinating the use of PKCS#11 by different components or libraries
 living in the same process.")
     (license license:bsd-3)))
 
-(define-public p11-kit-next
-  (package
-    (inherit p11-kit)
-    (version "0.24.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
-                           "download/" version "/p11-kit-" version ".tar.xz"))
-       (sha256
-        (base32 "1y5fm9gwhkh902r26p90qf1g2h1ziqrk4hgf9i9sxm2wzlz7ignq"))))
-    (arguments
-     ;; Use the default certificates so that users such as flatpak find them.
-     ;; See <https://issues.guix.gnu.org/49957>.
-     (substitute-keyword-arguments (package-arguments p11-kit)
-       ((#:configure-flags flags ''())
-        ''("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt"))))))
-
 (define-public gnutls
   (package
     (name "gnutls")
-    (version "3.7.2")
+    (version "3.7.7")
     (source (origin
               (method url-fetch)
               ;; Note: Releases are no longer on ftp.gnu.org since the
@@ -223,101 +204,94 @@ living in the same process.")
                                   (version-major+minor version)
                                   "/gnutls-" version ".tar.xz"))
               (patches (search-patches "gnutls-skip-trust-store-test.patch"
-                                       "gnutls-cross.patch"
-                                       "gnutls-guile-eintr-eagain.patch"))
+                                       "gnutls-cross.patch"))
               (sha256
                (base32
-                "0li7mwjnm64mbxhacz0rpf6i9qd83f53fvbrx96alpqqk9d6qvk4"))))
+                "01i1gl15k6qwvxmxx0by1mn9nlmcmym18wdpm7dn9awfsp8474dy"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? ,(not (or (%current-target-system)
-                          (hurd-target?)))
-       ;; Ensure we don't keep a reference to the tools used for testing.
-       #:disallowed-references ,(if (hurd-target?)
-                                    '()
-                                    (list net-tools iproute socat))
-       #:configure-flags
-       (cons*
-             ;; GnuTLS doesn't consult any environment variables to specify
-             ;; the location of the system-wide trust store.  Instead it has a
-             ;; configure-time option.  Unless specified, its configure script
-             ;; attempts to auto-detect the location by looking for common
-             ;; places in the file system, none of which are present in our
-             ;; chroot build environment.  If not found, then no default trust
-             ;; store is used, so each program has to provide its own
-             ;; fallback, and users have to configure each program
-             ;; independently.  This seems suboptimal.
-             "--with-default-trust-store-dir=/etc/ssl/certs"
+     (list #:tests? (not (or (%current-target-system)
+                             (hurd-target?)))
+           ;; Ensure we don't keep a reference to the tools used for testing.
+           #:disallowed-references (if (hurd-target?)
+                                       '()
+                                       (list net-tools iproute socat))
+           #:configure-flags
+           #~(cons*
+              ;; GnuTLS doesn't consult any environment variables to specify
+              ;; the location of the system-wide trust store.  Instead it has a
+              ;; configure-time option.  Unless specified, its configure script
+              ;; attempts to auto-detect the location by looking for common
+              ;; places in the file system, none of which are present in our
+              ;; chroot build environment.  If not found, then no default trust
+              ;; store is used, so each program has to provide its own
+              ;; fallback, and users have to configure each program
+              ;; 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")
+              ;; 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")
 
-             (let ((system ,(or (%current-target-system)
-                                (%current-system))))
-               (if (string-prefix? "mips64el" system)
-                   (list
-                    ;; FIXME: Temporarily disable p11-kit support since it is
-                    ;; not working on mips64el.
-                    "--without-p11-kit")
-                   '())))
+              (let ((system #$(or (%current-target-system)
+                                  (%current-system))))
+                (if (string-prefix? "mips64el" system)
+                    (list
+                     ;; FIXME: Temporarily disable p11-kit support since it is
+                     ;; not working on mips64el.
+                     "--without-p11-kit")
+                    '())))
 
-       #:phases (modify-phases %standard-phases
-                  ;; fastopen.sh fails to connect to the server in the builder
-                  ;; environment (see:
-                  ;; https://gitlab.com/gnutls/gnutls/-/issues/1095).
-                  (add-after 'unpack 'disable-failing-tests
-                    (lambda _
-                      (substitute* "tests/fastopen.sh"
-                        (("^unset RETCODE")
-                         "exit 77\n")))) ;skip
-                  (add-after 'install 'move-doc
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; Copy the 4.1 MiB of section 3 man pages to "doc".
-                     (let* ((out    (assoc-ref outputs "out"))
-                            (doc    (assoc-ref outputs "doc"))
-                            (mandir (string-append doc "/share/man/man3"))
-                            (oldman (string-append out "/share/man/man3")))
-                       (mkdir-p mandir)
-                       (copy-recursively oldman mandir)
-                       (delete-file-recursively oldman)))))))
+           #:phases
+           #~(modify-phases %standard-phases
+               ;; fastopen.sh fails to connect to the server in the builder
+               ;; environment (see:
+               ;; https://gitlab.com/gnutls/gnutls/-/issues/1095).
+               (add-after 'unpack 'disable-failing-tests
+                 (lambda _
+                   (substitute* "tests/fastopen.sh"
+                     (("^unset RETCODE")
+                      "exit 77\n"))))      ;skip
+               (add-after 'install 'move-doc
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; Copy the 4.1 MiB of section 3 man pages to "doc".
+                   (let* ((out    (assoc-ref outputs "out"))
+                          (doc    (assoc-ref outputs "doc"))
+                          (mandir (string-append doc "/share/man/man3"))
+                          (oldman (string-append out "/share/man/man3")))
+                     (mkdir-p mandir)
+                     (copy-recursively oldman mandir)
+                     (delete-file-recursively oldman)))))))
     (outputs '("out"                              ;4.4 MiB
                "debug"
                "doc"))                            ;4.1 MiB of man pages
     (native-inputs
-     `(,@(if (%current-target-system)             ;for cross-build
-             `(("guile" ,guile-3.0))              ;to create .go files
-             '())
-       ,@(if (hurd-target?)
-             '()
-             `(("net-tools" ,net-tools)
-               ("iproute" ,iproute)               ;for 'ss'
-               ("socat" ,socat)))                 ;several tests rely on it
-       ("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)
-       ("which" ,which)
-       ,@(if (hurd-target?)
-             '()
-             `(("datefudge" ,datefudge)))         ;tests rely on 'datefudge'
-       ("util-linux" ,util-linux)))               ;one test needs 'setsid'
+     (append (list pkg-config texinfo which
+                   util-linux)                    ;one test needs 'setsid'
+             (if (%current-target-system)         ;for cross-build
+                 (list guile-3.0)                 ;to create .go files
+                 '())
+             (if (hurd-target?)
+                 '()
+                 (list net-tools
+                       iproute                    ;for 'ss'
+                       socat                      ;several tests rely on it
+                       datefudge))))              ;tests rely on 'datefudge'
     (inputs
      (list guile-3.0))
     (propagated-inputs
      ;; These are all in the 'Requires.private' field of gnutls.pc.
-     `(("libtasn1" ,libtasn1)
-       ("libidn2" ,libidn2)
-       ("nettle" ,nettle)
-       ("zlib" ,zlib)
-       ,@(let ((system (or (%current-target-system)
-                           (%current-system))))
-           (if (string-prefix? "mips64el" system)
-               '()
-               `(("p11-kit" ,p11-kit))))))
+     (append (list libtasn1 libidn2 nettle zlib)
+             (let ((system (or (%current-target-system)
+                               (%current-system))))
+               (if (string-prefix? "mips64el" system)
+                   '()
+                   (list p11-kit)))))
     (home-page "https://www.gnu.org/software/gnutls/")
     (synopsis "Transport layer security library")
     (description
@@ -346,13 +320,6 @@ required structures.")
                (base32
                 "01i1gl15k6qwvxmxx0by1mn9nlmcmym18wdpm7dn9awfsp8474dy"))))))
 
-(define-public gnutls/guile-2.0
-  ;; GnuTLS for Guile 2.0.
-  (package/inherit gnutls
-    (name "guile2.0-gnutls")
-    (inputs `(("guile" ,guile-2.0)
-              ,@(alist-delete "guile" (package-inputs gnutls))))))
-
 (define-public gnutls/dane
   ;; GnuTLS with build libgnutls-dane, implementing DNS-based
   ;; Authentication of Named Entities.  This is required for GNS functionality
@@ -360,15 +327,14 @@ required structures.")
   ;; to have the choice between GnuTLS with Dane and without Dane.
   (package/inherit gnutls
     (name "gnutls-dane")
-    (inputs `(("unbound" ,unbound)
-              ,@(package-inputs gnutls)))))
+    (inputs (modify-inputs (package-inputs gnutls)
+              (prepend unbound)))))
 
 (define-public guile2.2-gnutls
   (package/inherit gnutls
     (name "guile2.2-gnutls")
-    (inputs `(("guile" ,guile-2.2)
-              ,@(alist-delete "guile"
-                              (package-inputs gnutls))))))
+    (inputs (modify-inputs (package-inputs gnutls)
+              (replace "guile" guile-2.2)))))
 
 (define (target->openssl-target target)
   "Return the value to set CONFIGURE_TARGET_ARCH to when cross-compiling
@@ -418,8 +384,7 @@ OpenSSL for TARGET."
 (define-public openssl-1.1
   (package
     (name "openssl")
-    (version "1.1.1l")
-    (replacement openssl/fixed)
+    (version "1.1.1q")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -432,7 +397,7 @@ OpenSSL for TARGET."
               (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
               (sha256
                (base32
-                "1lbblxps2fhmz7bqh058iywh5wxfignbfx1s1kz2fj63b5g3wyhb"))))
+                "1jhhzp4gh6ymidxm1ckjk948l583awp0w3y2nvqdz7022kk9r4yp"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"        ;6.8 MiB of man3 pages and full HTML documentation
@@ -457,15 +422,20 @@ OpenSSL for TARGET."
                                #$(target->openssl-target
                                   (%current-target-system))))))
                 #~())
-         ;; This test seems to be dependant on kernel features.
-         ;; https://github.com/openssl/openssl/issues/12242
-         #$@(if (or (target-arm?)
-                    (target-riscv64?))
-                #~((replace 'check
-                     (lambda* (#:key tests? test-target #:allow-other-keys)
-                       (when tests?
-                         (invoke "make" "TESTS=-test_afalg" test-target)))))
-                #~())
+         (replace 'check
+           (lambda* (#:key tests? test-target #:allow-other-keys)
+             (when tests?
+               ;; 'test_ssl_new.t' in 1.1.1n and 3.0.3 fails due to an expired
+               ;; certificate:
+               ;; <https://github.com/openssl/openssl/issues/18441>.
+               ;; Skip it.
+               ;;
+               ;; 'test_afalg' seems to be dependent on kernel features:
+               ;; <https://github.com/openssl/openssl/issues/12242>.
+               (invoke "make" test-target
+                       #$(if (or (target-arm?) (target-riscv64?))
+                             "TESTS=-test_afalg -tls_ssl_new"
+                             "TESTS=-test_ssl_new")))))
          (replace 'configure
            (lambda* (#:key configure-flags #:allow-other-keys)
              (let* ((out #$output)
@@ -543,25 +513,6 @@ OpenSSL for TARGET."
     (license license:openssl)
     (home-page "https://www.openssl.org/")))
 
-(define openssl/fixed
-  (package
-    (inherit openssl-1.1)
-    (name "openssl")
-    (version "1.1.1q")
-    (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")))
-              (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
-              (sha256
-               (base32
-                "1jhhzp4gh6ymidxm1ckjk948l583awp0w3y2nvqdz7022kk9r4yp"))))))
-
 (define-public openssl-3.0
   (package
     (inherit openssl-1.1)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index ad3029e814..2c94a8ac4c 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -220,256 +220,258 @@ Python 3.3 and later, rather than on Python 2.")
 
 (define-public git
   (package
-   (name "git")
-   (version "2.37.3")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://kernel.org/software/scm/git/git-"
-                                version ".tar.xz"))
-            (sha256
-             (base32
-              "0yp8hdj0w18jhmmdflzz74z418cw95i08pc22yycyn8nyvbl2il1"))))
-   (build-system gnu-build-system)
-   (native-inputs
-    `(("native-perl" ,perl)
-      ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
-      ;; see <https://bugs.gnu.org/39513>.
-      ("bash" ,bash-minimal)
-      ("bash-for-tests" ,bash)
-      ("gettext" ,gettext-minimal)
-      ;; To build the man pages from the git sources, we would need a dependency
-      ;; on a full XML tool chain, and building it actually takes ages.  So we
-      ;; use this lazy approach and use released tarball.
-      ("git-manpages"
-       ,(origin
-          (method url-fetch)
-          (uri (string-append
-                "mirror://kernel.org/software/scm/git/git-manpages-"
-                version ".tar.xz"))
-          (sha256
-           (base32
-            "053lj9wy8y2yr5jzpb0af4w50gz3ckhgc15wqx7is4z6k9a76lww"))))
-      ;; For subtree documentation.
-      ("asciidoc" ,asciidoc)
-      ("docbook-xsl" ,docbook-xsl)
-      ("xmlto" ,xmlto)
-      ("pkg-config" ,pkg-config)))
-   (inputs
-    `(("curl" ,curl)
-      ("expat" ,expat)
-      ("openssl" ,openssl)
-      ("perl" ,perl)
-      ("python" ,python) ; for git-p4
-      ("zlib" ,zlib)
-
-      ;; For PCRE support in git grep (USE_LIBPCRE2).
-      ("pcre" ,pcre2)
-
-      ;; For 'gitweb.cgi'.
-      ("perl-cgi" ,perl-cgi)
-
-      ;; For 'git-svn'.
-      ("subversion" ,subversion)
-      ("perl-term-readkey" ,perl-term-readkey)
-
-      ;; For 'git-send-email'.
-      ("perl-authen-sasl" ,perl-authen-sasl)
-      ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
-      ("perl-io-socket-ssl" ,perl-io-socket-ssl)
-
-      ;; For 'git gui', 'gitk', and 'git citool'.
-      ("tcl" ,tcl)
-      ("tk" ,tk)
-
-      ;; For 'git-credential-libsecret'
-      ("glib" ,glib)
-      ("libsecret" ,libsecret)))
-   (outputs '("out"                               ; the core
-              "send-email"                        ; for git-send-email
-              "svn"                               ; git-svn
-              "credential-netrc"                  ; git-credential-netrc
-              "credential-libsecret"              ; git-credential-libsecret
-              "subtree"                           ; git-subtree
-              "gui"))                             ; gitk, git gui
-   (arguments
-    `(#:make-flags `("V=1"                        ;more verbose compilation
-
-                     ,(string-append "SHELL_PATH="
-                                     (assoc-ref %build-inputs "bash")
-                                     "/bin/sh")
-
-                     ;; Tests require a bash with completion support.
-                     ,(string-append "TEST_SHELL_PATH="
-                                     (assoc-ref %build-inputs "bash-for-tests")
-                                     "/bin/bash")
-
-                     "USE_LIBPCRE2=yes"
-
-                     ;; By default 'make install' creates hard links for
-                     ;; things in 'libexec/git-core', which leads to huge
-                     ;; nars; see <https://bugs.gnu.org/21949>.
-                     "NO_INSTALL_HARDLINKS=indeed")
-
-      ;; Make sure the full bash does not end up in the final closure.
-      #:disallowed-references (,bash)
-
-      #:test-target "test"
-
-      ;; The explicit --with-tcltk forces the build system to hardcode the
-      ;; absolute file name to 'wish'.
-      #:configure-flags (list (string-append "--with-tcltk="
-                                             (assoc-ref %build-inputs "tk")
-                                             "/bin/wish8.6")  ; XXX
-                              ,@(if (%current-target-system)
-                                    git-cross-configure-flags
-                                    '()))
-
-      #:modules ((srfi srfi-1)
-                 (srfi srfi-26)
-                 ((guix build gnu-build-system) #:prefix gnu:)
-                 ,@%gnu-build-system-modules)
-      #:phases
-      (modify-phases %standard-phases
-        ,@(if (%current-target-system)
-              ;; The git build system assumes build == host
-              `((add-after 'unpack  'use-host-uname_S
-                  (lambda _
-                    (substitute* "config.mak.uname"
-                      (("uname_S := .*" all)
-                       (if (equal? ,(%current-target-system) "i586-pc-gnu")
-                         "uname_S := GNU\n"
-                         all)))
-                    #t)))
-              ;; We do not have bash-for-tests when cross-compiling.
-              `((add-after 'unpack 'modify-PATH
-                  (lambda* (#:key inputs #:allow-other-keys)
-                    (let ((path (string-split (getenv "PATH") #\:))
-                          (bash-full (assoc-ref inputs "bash-for-tests")))
-                      ;; Drop the test bash from PATH so that (which "sh") and
-                      ;; similar does the right thing.
-                      (setenv "PATH" (string-join
-                                      (remove (cut string-prefix? bash-full <>) path)
-                                      ":"))
-                      #t)))))
-        ;; Add cross curl-config script to PATH when cross-compiling.
-        ,@(if (%current-target-system)
-              '((add-before 'configure 'add-cross-curl-config
+    (name "git")
+    (version "2.37.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://kernel.org/software/scm/git/git-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0yp8hdj0w18jhmmdflzz74z418cw95i08pc22yycyn8nyvbl2il1"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("native-perl" ,perl)
+       ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
+       ;; see <https://bugs.gnu.org/39513>.
+       ("bash" ,bash-minimal)
+       ("bash-for-tests" ,bash)
+       ("gettext" ,gettext-minimal)
+       ;; To build the man pages from the git sources, we would need a dependency
+       ;; on a full XML tool chain, and building it actually takes ages.  So we
+       ;; use this lazy approach and use released tarball.
+       ("git-manpages"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "mirror://kernel.org/software/scm/git/git-manpages-"
+                 version ".tar.xz"))
+           (sha256
+            (base32
+             "053lj9wy8y2yr5jzpb0af4w50gz3ckhgc15wqx7is4z6k9a76lww"))))
+       ;; For subtree documentation.
+       ("asciidoc" ,asciidoc)
+       ("docbook2x" ,docbook2x)
+       ("docbook-xsl" ,docbook-xsl)
+       ("libxslt" ,libxslt)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)
+       ("xmlto" ,xmlto)))
+    (inputs
+     `(("curl" ,curl)
+       ("expat" ,expat)
+       ("openssl" ,openssl)
+       ("perl" ,perl)
+       ("python" ,python)               ; for git-p4
+       ("zlib" ,zlib)
+
+       ;; For PCRE support in git grep (USE_LIBPCRE2).
+       ("pcre" ,pcre2)
+
+       ;; For 'gitweb.cgi'.
+       ("perl-cgi" ,perl-cgi)
+
+       ;; For 'git-svn'.
+       ("subversion" ,subversion)
+       ("perl-term-readkey" ,perl-term-readkey)
+
+       ;; For 'git-send-email'.
+       ("perl-authen-sasl" ,perl-authen-sasl)
+       ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
+       ("perl-io-socket-ssl" ,perl-io-socket-ssl)
+
+       ;; For 'git gui', 'gitk', and 'git citool'.
+       ("tcl" ,tcl)
+       ("tk" ,tk)
+
+       ;; For 'git-credential-libsecret'
+       ("glib" ,glib)
+       ("libsecret" ,libsecret)))
+    (outputs '("out"                    ; the core
+               "send-email"             ; for git-send-email
+               "svn"                    ; git-svn
+               "credential-netrc"       ; git-credential-netrc
+               "credential-libsecret"   ; git-credential-libsecret
+               "subtree"                ; git-subtree
+               "gui"))                  ; gitk, git gui
+    (arguments
+     `(#:make-flags `("V=1"             ;more verbose compilation
+
+                      ,(string-append "SHELL_PATH="
+                                      (assoc-ref %build-inputs "bash")
+                                      "/bin/sh")
+
+                      ;; Tests require a bash with completion support.
+                      ,(string-append "TEST_SHELL_PATH="
+                                      (assoc-ref %build-inputs "bash-for-tests")
+                                      "/bin/bash")
+
+                      "USE_LIBPCRE2=yes"
+
+                      ;; By default 'make install' creates hard links for
+                      ;; things in 'libexec/git-core', which leads to huge
+                      ;; nars; see <https://bugs.gnu.org/21949>.
+                      "NO_INSTALL_HARDLINKS=indeed")
+
+       ;; Make sure the full bash does not end up in the final closure.
+       #:disallowed-references (,bash)
+
+       #:test-target "test"
+
+       ;; The explicit --with-tcltk forces the build system to hardcode the
+       ;; absolute file name to 'wish'.
+       #:configure-flags (list (string-append "--with-tcltk="
+                                              (assoc-ref %build-inputs "tk")
+                                              "/bin/wish8.6") ; XXX
+                               ,@(if (%current-target-system)
+                                     git-cross-configure-flags
+                                     '()))
+
+       #:modules ((srfi srfi-1)
+                  (srfi srfi-26)
+                  ((guix build gnu-build-system) #:prefix gnu:)
+                  ,@%gnu-build-system-modules)
+       #:phases
+       (modify-phases %standard-phases
+         ,@(if (%current-target-system)
+               ;; The git build system assumes build == host
+               `((add-after 'unpack  'use-host-uname_S
+                   (lambda _
+                     (substitute* "config.mak.uname"
+                       (("uname_S := .*" all)
+                        (if (equal? ,(%current-target-system) "i586-pc-gnu")
+                            "uname_S := GNU\n"
+                            all))))))
+               ;; We do not have bash-for-tests when cross-compiling.
+               `((add-after 'unpack 'modify-PATH
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (let ((path (string-split (getenv "PATH") #\:))
+                           (bash-full (assoc-ref inputs "bash-for-tests")))
+                       ;; Drop the test bash from PATH so that (which "sh") and
+                       ;; similar does the right thing.
+                       (setenv "PATH" (string-join
+                                       (remove (cut string-prefix? bash-full <>) path)
+                                       ":")))))))
+         ;; Add cross curl-config script to PATH when cross-compiling.
+         ,@(if (%current-target-system)
+               '((add-before 'configure 'add-cross-curl-config
                    (lambda* (#:key inputs #:allow-other-keys)
                      (setenv "PATH"
                              (string-append (assoc-ref inputs "curl") "/bin:"
-                                            (getenv "PATH")))
-                     #t)))
-              '())
-        (add-after 'configure 'patch-makefiles
-          (lambda _
-            (substitute* "Makefile"
-              (("/usr/bin/perl") (which "perl"))
-              (("/usr/bin/python") (which "python3")))
-            #t))
-        (add-after 'configure 'add-PM.stamp
-          (lambda _
-            ;; Add the "PM.stamp" to avoid "no rule to make target".
-            (call-with-output-file "perl/PM.stamp" (const #t))
-            #t))
-        (add-after 'build 'build-subtree
-          (lambda* (#:key inputs #:allow-other-keys)
-            (with-directory-excursion "contrib/subtree"
-              (substitute* "Makefile"
-                ;; Apparently `xmlto' does not bother to looks up the stylesheets
-                ;; specified in the XML, unlike the above substitution.  Instead it
-                ;; uses a hard-coded URL.  Work around it here, but if this is
-                ;; common perhaps we should hardcode this path in xmlto itself.
-                (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
-                 (string-append "$(XMLTO) -x "
-                                (string-append (assoc-ref inputs "docbook-xsl")
-                                               "/xml/xsl/docbook-xsl-"
-                                               ,(package-version docbook-xsl))
-                                "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
-              (invoke "make")
-              (invoke "make" "install")
-              (invoke "make" "install-doc")
-              (substitute* "git-subtree"
-                (("/bin/sh") (which "sh"))))
-            #t))
-        (add-before 'check 'patch-tests
-          (lambda _
-            (let ((store-directory (%store-directory)))
-              ;; These files contain some funny bytes that Guile is unable
-              ;; to decode for shebang patching. Just delete them.
-              (for-each delete-file '("t/t4201-shortlog.sh"
-                                      "t/t7813-grep-icase-iso.sh"))
-              ;; Many tests contain inline shell scripts (hooks etc).
-              (substitute* (find-files "t" "\\.sh$")
-                (("#!/bin/sh") (string-append "#!" (which "sh"))))
-              ;; Un-do shebang patching here to prevent checksum mismatch.
-              (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
-                (("^#!.*/bin/perl") "#!/usr/bin/perl"))
-              (substitute* "t/t5003-archive-zip.sh"
-                (("cp /bin/sh") (string-append "cp " (which "sh"))))
-              (substitute* "t/t6030-bisect-porcelain.sh"
-                (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
-              ;; FIXME: This test runs `git commit` with a bogus EDITOR
-              ;; and empty commit message, but does not fail the way it's
-              ;; expected to. The test passes when invoked interactively.
-              (substitute* "t/t7508-status.sh"
-                (("\tcommit_template_commented") "\ttrue"))
-              ;; More checksum mismatches due to odd shebangs.
-              (substitute* "t/t9100-git-svn-basic.sh"
-                (((string-append "\"#!" store-directory ".*/bin/sh")) "\"#!/bin/sh") )
-              (substitute* "t/t9300-fast-import.sh"
-                (((string-append "\t#!" store-directory ".*/bin/sh")) "\t#!/bin/sh")
-                (((string-append "'#!" store-directory ".*/bin/sh")) "'#!/bin/sh"))
-              ;; FIXME: Some hooks fail with "basename: command not found".
-              ;; See 't/trash directory.t9164.../svn-hook.log'.
-              (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
-
-              ;; XXX: These tests fail intermittently for unknown reasons:
-              ;; <https://bugs.gnu.org/29546>.
-              (for-each delete-file
-                        '("t/t9128-git-svn-cmd-branch.sh"
-                          "t/t9167-git-svn-cmd-branch-subproject.sh"
-                          "t/t9141-git-svn-multiple-branches.sh"))
-              #t)))
-        (add-after 'install 'install-shell-completion
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out         (assoc-ref outputs "out"))
-                   (completions (string-append out "/etc/bash_completion.d")))
-              ;; TODO: Install the tcsh and zsh completions in the right place.
-              (mkdir-p completions)
-              (copy-file "contrib/completion/git-completion.bash"
-                         (string-append completions "/git"))
-              #t)))
-        (add-after 'install 'install-credential-netrc
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((netrc (assoc-ref outputs "credential-netrc")))
-              (install-file "contrib/credential/netrc/git-credential-netrc.perl"
-                            (string-append netrc "/bin"))
-              (rename-file (string-append netrc "/bin/git-credential-netrc.perl")
-                           (string-append netrc "/bin/git-credential-netrc"))
-              ;; Previously, Git.pm was automatically found by netrc.
-              ;; Perl 5.26 changed how it locates modules so that @INC no
-              ;; longer includes the current working directory (the Perl
-              ;; community calls this "dotless @INC").
-              (wrap-program (string-append netrc "/bin/git-credential-netrc")
-                `("PERL5LIB" ":" prefix
-                  (,(string-append (assoc-ref outputs "out") "/share/perl5"))))
-              #t)))
-        (add-after 'install 'install-credential-libsecret
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((libsecret (assoc-ref outputs "credential-libsecret")))
-              (with-directory-excursion "contrib/credential/libsecret"
-                ((assoc-ref gnu:%standard-phases 'build))
-                (install-file "git-credential-libsecret"
-                              (string-append libsecret "/bin"))
-                #t))))
-        (add-after 'install 'install-subtree
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((subtree (assoc-ref outputs "subtree")))
-              (install-file "contrib/subtree/git-subtree"
-                            (string-append subtree "/bin"))
-              (install-file "contrib/subtree/git-subtree.1"
-                            (string-append subtree "/share/man/man1"))
-              #t)))
+                                            (getenv "PATH"))))))
+               '())
+         (add-after 'configure 'patch-makefiles
+           (lambda _
+             (substitute* "Makefile"
+               (("/usr/bin/perl") (which "perl"))
+               (("/usr/bin/python") (which "python3")))))
+         (add-after 'configure 'add-PM.stamp
+           (lambda _
+             ;; Add the "PM.stamp" to avoid "no rule to make target".
+             (call-with-output-file "perl/PM.stamp" (const #t))))
+         (add-after 'build 'build-subtree
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "contrib/subtree"
+               (substitute* "Makefile"
+                 ;; Apparently `xmlto' does not bother to looks up the stylesheets
+                 ;; specified in the XML, unlike the above substitution.  Instead it
+                 ;; uses a hard-coded URL.  Work around it here, but if this is
+                 ;; common perhaps we should hardcode this path in xmlto itself.
+                 (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
+                  (string-append "$(XMLTO) -x "
+                                 (string-append (assoc-ref inputs "docbook-xsl")
+                                                "/xml/xsl/docbook-xsl-"
+                                                ,(package-version docbook-xsl))
+                                 "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
+               (invoke "make")
+               (invoke "make" "install")
+               (invoke "make" "install-doc")
+               (substitute* "git-subtree"
+                 (("/bin/sh") (which "sh"))))))
+         (add-before 'check 'patch-tests
+           (lambda _
+             (let ((store-directory (%store-directory)))
+               ;; These files contain some funny bytes that Guile is unable
+               ;; to decode for shebang patching. Just delete them.
+               (for-each delete-file '("t/t4201-shortlog.sh"
+                                       "t/t7813-grep-icase-iso.sh"))
+               ;; Many tests contain inline shell scripts (hooks etc).
+               (substitute* (find-files "t" "\\.sh$")
+                 (("#!/bin/sh") (string-append "#!" (which "sh"))))
+               ;; Un-do shebang patching here to prevent checksum mismatch.
+               (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
+                 (("^#!.*/bin/perl") "#!/usr/bin/perl"))
+               (substitute* "t/t5003-archive-zip.sh"
+                 (("cp /bin/sh") (string-append "cp " (which "sh"))))
+               (substitute* "t/t6030-bisect-porcelain.sh"
+                 (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
+               ;; FIXME: This test runs `git commit` with a bogus EDITOR
+               ;; and empty commit message, but does not fail the way it's
+               ;; expected to. The test passes when invoked interactively.
+               (substitute* "t/t7508-status.sh"
+                 (("\tcommit_template_commented") "\ttrue"))
+               ;; More checksum mismatches due to odd shebangs.
+               (substitute* "t/t9100-git-svn-basic.sh"
+                 (((string-append "\"#!" store-directory ".*/bin/sh")) "\"#!/bin/sh") )
+               (substitute* "t/t9300-fast-import.sh"
+                 (((string-append "\t#!" store-directory ".*/bin/sh")) "\t#!/bin/sh")
+                 (((string-append "'#!" store-directory ".*/bin/sh")) "'#!/bin/sh"))
+               ;; FIXME: Some hooks fail with "basename: command not found".
+               ;; See 't/trash directory.t9164.../svn-hook.log'.
+               (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
+
+               ;; XXX: These tests fail intermittently for unknown reasons:
+               ;; <https://bugs.gnu.org/29546>.
+               (for-each delete-file
+                         '("t/t9128-git-svn-cmd-branch.sh"
+                           "t/t9167-git-svn-cmd-branch-subproject.sh"
+                           "t/t9141-git-svn-multiple-branches.sh")))))
+         (add-after 'install 'install-info-manual
+           (lambda* (#:key parallel-build? #:allow-other-keys)
+             (define job-count (if parallel-build?
+                                   (number->string (parallel-job-count))
+                                   "1"))
+             (invoke "make" "-C" "Documentation" "install-info"
+                     "-j" job-count
+                     ;; The Makefile refer to 'docbook2x-texi', but our binary
+                     ;; is named 'docbook2texi'.
+                     "DOCBOOK2X_TEXI=docbook2texi" "PERL_PATH=perl")))
+         (add-after 'install 'install-shell-completion
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out         (assoc-ref outputs "out"))
+                    (completions (string-append out "/etc/bash_completion.d")))
+               ;; TODO: Install the tcsh and zsh completions in the right place.
+               (mkdir-p completions)
+               (copy-file "contrib/completion/git-completion.bash"
+                          (string-append completions "/git")))))
+         (add-after 'install 'install-credential-netrc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((netrc (assoc-ref outputs "credential-netrc")))
+               (install-file "contrib/credential/netrc/git-credential-netrc.perl"
+                             (string-append netrc "/bin"))
+               (rename-file (string-append netrc "/bin/git-credential-netrc.perl")
+                            (string-append netrc "/bin/git-credential-netrc"))
+               ;; Previously, Git.pm was automatically found by netrc.
+               ;; Perl 5.26 changed how it locates modules so that @INC no
+               ;; longer includes the current working directory (the Perl
+               ;; community calls this "dotless @INC").
+               (wrap-program (string-append netrc "/bin/git-credential-netrc")
+                 `("PERL5LIB" ":" prefix
+                   (,(string-append (assoc-ref outputs "out") "/share/perl5")))))))
+         (add-after 'install 'install-credential-libsecret
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((libsecret (assoc-ref outputs "credential-libsecret")))
+               (with-directory-excursion "contrib/credential/libsecret"
+                 ((assoc-ref gnu:%standard-phases 'build))
+                 (install-file "git-credential-libsecret"
+                               (string-append libsecret "/bin"))))))
+         (add-after 'install 'install-subtree
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((subtree (assoc-ref outputs "subtree")))
+               (install-file "contrib/subtree/git-subtree"
+                             (string-append subtree "/bin"))
+               (install-file "contrib/subtree/git-subtree.1"
+                             (string-append subtree "/share/man/man1")))))
          (add-after 'install 'restore-sample-hooks-shebang
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -478,128 +480,125 @@ Python 3.3 and later, rather than on Python 2.")
                            (format #t "restoring shebang on `~a'~%" file)
                            (substitute* file
                              (("^#!.*/bin/sh") "#!/bin/sh")))
-                         (find-files dir ".*"))
-               #t)))
-        (add-after 'install 'split
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            ;; Split the binaries to the various outputs.
-            (let* ((out      (assoc-ref outputs "out"))
-                   (se       (assoc-ref outputs "send-email"))
-                   (svn      (assoc-ref outputs "svn"))
-                   (gui      (assoc-ref outputs "gui"))
-                   (gitk     (string-append out "/bin/gitk"))
-                   (gitk*    (string-append gui "/bin/gitk"))
-                   (git-gui  (string-append out "/libexec/git-core/git-gui"))
-                   (git-gui* (string-append gui "/libexec/git-core/git-gui"))
-                   (git-cit  (string-append out "/libexec/git-core/git-citool"))
-                   (git-cit* (string-append gui "/libexec/git-core/git-citool"))
-                   (git-se   (string-append out "/libexec/git-core/git-send-email"))
-                   (git-se*  (string-append se  "/libexec/git-core/git-send-email"))
-                   (git-svn  (string-append out "/libexec/git-core/git-svn"))
-                   (git-svn* (string-append svn "/libexec/git-core/git-svn"))
-                   (git-sm   (string-append out
-                                            "/libexec/git-core/git-submodule")))
-              (mkdir-p (string-append gui "/bin"))
-              (mkdir-p (string-append gui "/libexec/git-core"))
-              (mkdir-p (string-append se  "/libexec/git-core"))
-              (mkdir-p (string-append svn "/libexec/git-core"))
-
-              (for-each (lambda (old new)
-                          (copy-file old new)
-                          (delete-file old)
-                          (chmod new #o555))
-                        (list gitk git-gui git-cit git-se git-svn)
-                        (list gitk* git-gui* git-cit* git-se* git-svn*))
-
-              ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
-              (wrap-program git-svn*
-                `("PATH" ":" prefix
-                  (,(string-append (assoc-ref inputs "subversion")
-                                   "/bin")))
-                `("PERL5LIB" ":" prefix
-                  ,(map (lambda (i) (string-append (assoc-ref inputs i)
-                                                   "/lib/perl5/site_perl"))
-                        '("subversion" "perl-term-readkey")))
-
-                ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
-                ;; help it find 'libsvn_client-1.so'.
-                `("LD_LIBRARY_PATH" ":" prefix
-                  (,(string-append (assoc-ref inputs "subversion")
-                                   "/lib"))))
-
-              ;; Tell 'git-send-email' where perl modules are.
-              (wrap-program git-se*
-                `("PERL5LIB" ":" prefix
-                  ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
-                        (list
-                         ,@(transitive-input-references
-                            'inputs
-                            (map (lambda (l)
-                                   (assoc l (package-inputs this-package)))
-                                 '("perl-authen-sasl"
-                                   "perl-net-smtp-ssl"
-                                   "perl-io-socket-ssl")))))))
-
-              ;; Tell 'gitweb.cgi' where perl modules are.
-              (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
-                `("PERL5LIB" ":" prefix
-                  ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
-                        (list
-                         ,@(transitive-input-references
-                            'inputs
-                            (map (lambda (l)
-                                   (assoc l (package-inputs this-package)))
-                                 '("perl-cgi")))))))
-
-              ;; Tell 'git-submodule' where Perl is.
-              (wrap-program git-sm
-                `("PATH" ":" prefix
-                  (,(string-append (assoc-ref inputs "perl")
-                                   "/bin"))))
-
-              #t)))
-        (add-after 'split 'install-man-pages
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (man (string-append out "/share/man"))
-                   (manpages (assoc-ref inputs "git-manpages")))
-              (mkdir-p man)
-              (with-directory-excursion man
-                (invoke "tar" "xvf" manpages))))))))
-
-   (native-search-paths
-    ;; For HTTPS access, Git needs a single-file certificate bundle, specified
-    ;; with $GIT_SSL_CAINFO.
-    (list (search-path-specification
-           (variable "GIT_SSL_CAINFO")
-           (file-type 'regular)
-           (separator #f)                         ;single entry
-           (files '("etc/ssl/certs/ca-certificates.crt")))
-          (search-path-specification
-           (variable "GIT_EXEC_PATH")
-           (separator #f)                         ;single entry
-           (files '("libexec/git-core")))))
-
-   (synopsis "Distributed version control system")
-   (description
-    "Git is a free distributed version control system designed to handle
+                         (find-files dir ".*")))))
+         (add-after 'install 'split
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Split the binaries to the various outputs.
+             (let* ((out      (assoc-ref outputs "out"))
+                    (se       (assoc-ref outputs "send-email"))
+                    (svn      (assoc-ref outputs "svn"))
+                    (gui      (assoc-ref outputs "gui"))
+                    (gitk     (string-append out "/bin/gitk"))
+                    (gitk*    (string-append gui "/bin/gitk"))
+                    (git-gui  (string-append out "/libexec/git-core/git-gui"))
+                    (git-gui* (string-append gui "/libexec/git-core/git-gui"))
+                    (git-cit  (string-append out "/libexec/git-core/git-citool"))
+                    (git-cit* (string-append gui "/libexec/git-core/git-citool"))
+                    (git-se   (string-append out "/libexec/git-core/git-send-email"))
+                    (git-se*  (string-append se  "/libexec/git-core/git-send-email"))
+                    (git-svn  (string-append out "/libexec/git-core/git-svn"))
+                    (git-svn* (string-append svn "/libexec/git-core/git-svn"))
+                    (git-sm   (string-append out
+                                             "/libexec/git-core/git-submodule")))
+               (mkdir-p (string-append gui "/bin"))
+               (mkdir-p (string-append gui "/libexec/git-core"))
+               (mkdir-p (string-append se  "/libexec/git-core"))
+               (mkdir-p (string-append svn "/libexec/git-core"))
+
+               (for-each (lambda (old new)
+                           (copy-file old new)
+                           (delete-file old)
+                           (chmod new #o555))
+                         (list gitk git-gui git-cit git-se git-svn)
+                         (list gitk* git-gui* git-cit* git-se* git-svn*))
+
+               ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
+               (wrap-program git-svn*
+                 `("PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "subversion")
+                                    "/bin")))
+                 `("PERL5LIB" ":" prefix
+                   ,(map (lambda (i) (string-append (assoc-ref inputs i)
+                                                    "/lib/perl5/site_perl"))
+                         '("subversion" "perl-term-readkey")))
+
+                 ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
+                 ;; help it find 'libsvn_client-1.so'.
+                 `("LD_LIBRARY_PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "subversion")
+                                    "/lib"))))
+
+               ;; Tell 'git-send-email' where perl modules are.
+               (wrap-program git-se*
+                 `("PERL5LIB" ":" prefix
+                   ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
+                         (list
+                          ,@(transitive-input-references
+                             'inputs
+                             (map (lambda (l)
+                                    (assoc l (package-inputs this-package)))
+                                  '("perl-authen-sasl"
+                                    "perl-net-smtp-ssl"
+                                    "perl-io-socket-ssl")))))))
+
+               ;; Tell 'gitweb.cgi' where perl modules are.
+               (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
+                 `("PERL5LIB" ":" prefix
+                   ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
+                         (list
+                          ,@(transitive-input-references
+                             'inputs
+                             (map (lambda (l)
+                                    (assoc l (package-inputs this-package)))
+                                  '("perl-cgi")))))))
+
+               ;; Tell 'git-submodule' where Perl is.
+               (wrap-program git-sm
+                 `("PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "perl")
+                                    "/bin")))))))
+         (add-after 'split 'install-man-pages
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (man (string-append out "/share/man"))
+                    (manpages (assoc-ref inputs "git-manpages")))
+               (mkdir-p man)
+               (with-directory-excursion man
+                 (invoke "tar" "xvf" manpages))))))))
+
+    (native-search-paths
+     ;; For HTTPS access, Git needs a single-file certificate bundle, specified
+     ;; with $GIT_SSL_CAINFO.
+     (list (search-path-specification
+            (variable "GIT_SSL_CAINFO")
+            (file-type 'regular)
+            (separator #f)              ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))
+           (search-path-specification
+            (variable "GIT_EXEC_PATH")
+            (separator #f)              ;single entry
+            (files '("libexec/git-core")))))
+
+    (synopsis "Distributed version control system")
+    (description
+     "Git is a free distributed version control system designed to handle
 everything from small to very large projects with speed and efficiency.")
-   ;; XXX: Ignore this CVE to work around a name clash with the unrelated
-   ;; "cpe:2.3:a:jenkins:git" package.  The proper fix is for (guix cve) to
-   ;; account for "vendor names".
-   (properties '((lint-hidden-cve . ("CVE-2018-1000182"
-                                     "CVE-2018-1000110"
-                                     "CVE-2019-1003010"
-                                     "CVE-2020-2136"
-                                     "CVE-2021-21684"
-                                     "CVE-2022-30947"
-                                     "CVE-2022-30948"
-                                     "CVE-2022-30949"
-                                     "CVE-2022-36882"
-                                     "CVE-2022-36883"
-                                     "CVE-2022-36884"))))
-   (license license:gpl2)
-   (home-page "https://git-scm.com/")))
+    ;; XXX: Ignore this CVE to work around a name clash with the unrelated
+    ;; "cpe:2.3:a:jenkins:git" package.  The proper fix is for (guix cve) to
+    ;; account for "vendor names".
+    (properties '((lint-hidden-cve . ("CVE-2018-1000182"
+                                      "CVE-2018-1000110"
+                                      "CVE-2019-1003010"
+                                      "CVE-2020-2136"
+                                      "CVE-2021-21684"
+                                      "CVE-2022-30947"
+                                      "CVE-2022-30948"
+                                      "CVE-2022-30949"
+                                      "CVE-2022-36882"
+                                      "CVE-2022-36883"
+                                      "CVE-2022-36884"))))
+    (license license:gpl2)
+    (home-page "https://git-scm.com/")))
 
 (define-public git-minimal
   ;; The size of the closure of 'git-minimal' is two thirds that of 'git'.
@@ -615,11 +614,11 @@ everything from small to very large projects with speed and efficiency.")
            (replace 'patch-makefiles
              (lambda _
                (substitute* "Makefile"
-                 (("/usr/bin/perl") (which "perl")))
-               #t))
+                 (("/usr/bin/perl") (which "perl")))))
            (delete 'build-subtree)
            (delete 'split)
            (delete 'install-man-pages)
+           (delete 'install-info-manual)
            (delete 'install-subtree)
            (delete 'install-credential-netrc)
            (delete 'install-credential-libsecret)
@@ -643,8 +642,7 @@ everything from small to very large projects with speed and efficiency.")
 
                  ;; Gitweb depends on Perl as well.
                  (delete-file-recursively
-                  (string-append out "/share/gitweb"))
-                 #t)))))
+                  (string-append out "/share/gitweb")))))))
        ((#:make-flags flags)
         `(delete "USE_LIBPCRE2=yes" ,flags))
        ((#:configure-flags flags)
@@ -2747,7 +2745,7 @@ by rclone usable with git-annex.")
            which                        ;for tests only
            ed))                         ;ditto
     (inputs
-     (list openssl zlib sqlite-next))   ;SQLite 3.37 or later
+     (list openssl zlib sqlite))
     (arguments
      `(#:configure-flags (list "--with-openssl=auto"
                                "--disable-internal-sqlite")
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 7106913788..8c0f187be1 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -3092,7 +3092,7 @@ and custom quantization matrices.")
      (list python-pysocks
            python-websocket-client
            python-isodate
-           python-lxml-4.7
+           python-lxml
            python-pycountry
            python-pycryptodome
            python-requests
@@ -3491,7 +3491,7 @@ Wayland compositors.")
 (define-public libvdpau
   (package
     (name "libvdpau")
-    (version "1.4")
+    (version "1.5")
     (source
       (origin
         (method git-fetch)
@@ -3501,7 +3501,7 @@ Wayland compositors.")
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "1hc4mcrbr1yhfiy4zfd8wc2iiqbp90z6jswap0jia20vmyk5lqld"))))
+          "1zfbh5q9adzlydpgwq7hl5w1j2b29j7zns6dxf9fp9pvkj23fz5l"))))
     (build-system meson-build-system)
     (native-inputs
      (list pkg-config))
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index f5c619a2b2..c6df524fbc 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -149,18 +149,16 @@ SPIR-V, aiming to emit GLSL or MSL that looks like human-written code.")
 (define-public glslang
   (package
     (name "glslang")
-    (version "10-11.0.0")
+    (version "11.11.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/KhronosGroup/glslang")
-             ;; Tag "10-11.0.0" was moved to "11.0.0".
-             ;; FIXME: Use (commit version) on next update.
-             (commit "11.0.0")))
+             (commit version)))
        (sha256
         (base32
-         "14mn2awswl022ls75mfpsnpsl0ai0jgfbqj3sxcsqawyj5f432py"))
+         "03jnaj90q2cg2hjdsg96ashz28dw5hcsg9rvf60bp2mphzzsklpq"))
        (file-name (string-append name "-" version "-checkout"))))
     (build-system cmake-build-system)
     (arguments
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 26754225ec..d1cf249231 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -487,6 +487,7 @@ interface.")
            python-markupsafe
            python-pygments
            python-pynacl
+           python-pypeg2
            python-pyyaml
            ;; FIXME: python-pyqtwebengine needs to come before python-pyqt so
            ;; that it's __init__.py is used first.
@@ -502,6 +503,11 @@ interface.")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-systemdir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "qutebrowser/utils/standarddir.py"
+                 (("/usr/share") (string-append out "/share"))))))
          (add-after 'unpack 'find-userscripts
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "qutebrowser/commands/userscripts.py"
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 13fe4cd2b1..e92cb22d7d 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1031,19 +1031,29 @@ libraries for working with JNLP applets.")
 (define-public jansson
   (package
     (name "jansson")
-    (version "2.13.1")
+    (version "2.14")
     (source (origin
              (method url-fetch)
-             (uri
-              (string-append "http://www.digip.org/jansson/releases/jansson-"
-                             version ".tar.bz2"))
+             (uri (string-append "https://github.com/akheron/jansson"
+                                 "/releases/download/v" version
+                                 "/jansson-" version ".tar.bz2"))
              (sha256
               (base32
-               "1g8h18vh8gyxlwfmvdivdp1siad26ywj5zr4j4avgdyjg7wa147f"))))
+               "1fdgji964mrrz19glx0zh91asji542fvybymvzk6rrbagkr5dagv"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--disable-static")))
-    (home-page "http://www.digip.org/jansson/")
+     (list
+      #:configure-flags #~'("--disable-static")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-tests
+            (lambda _
+              ;; Take a fix from upstream for testing with symbol versioning:
+              ;; https://github.com/akheron/jansson/pull/593
+              (substitute* "test/suites/api/check-exports"
+                (("(grep ' \\[DT\\] ' \\$test_log/symbols.*) \\| sort" _ cmd)
+                 (string-append cmd "| sed 's/@@libjansson.*//' | sort"))))))))
+    (home-page "https://github.com/akheron/jansson")
     (synopsis "JSON C library")
     (description
      "Jansson is a C library for encoding, decoding and manipulating JSON
@@ -1944,8 +1954,7 @@ from streaming URLs.  It is a command-line wrapper for the libquvi library.")
            ;;("gss" ,gss)
            zlib))
     (arguments
-     `(#:scons ,scons-3   ;TODO: remove in the next rebuild cycle
-       #:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr"))
+     `(#:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr"))
                            (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
                            (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
                            ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
@@ -3774,14 +3783,14 @@ and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
 (define-public perl-io-socket-ssl
   (package
     (name "perl-io-socket-ssl")
-    (version "2.068")
+    (version "2.074")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
                                   "IO-Socket-SSL-" version ".tar.gz"))
               (sha256
                (base32
-                "1ycgzg1l7p07y5wc0vzgnj122vm51p5aqpi4s56pp0piaq0gq824"))))
+                "0cm810ys5az6z3h3pql71jpliva1gfd0dxwwh4lx194xwimnnj1n"))))
     (build-system perl-build-system)
     (propagated-inputs
      (list perl-net-ssleay
@@ -7483,7 +7492,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
 (define-public nghttp2
   (package
     (name "nghttp2")
-    (version "1.44.0")
+    (version "1.49.0")
     (source
      (origin
        (method url-fetch)
@@ -7492,7 +7501,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
                            "nghttp2-" version ".tar.xz"))
        (sha256
         (base32
-         "0p9wvva4g8hwj55x19rbyvnq2dbsnf65rphhxnpqs7ll54xlg6an"))))
+         "0vm692c7q2wc4xxz8c41nr8jps2fkwf51xp8fb233cghpf9d9kxh"))))
     (build-system gnu-build-system)
     (outputs (list "out"
                    "lib"))              ; only libnghttp2
@@ -7502,44 +7511,42 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
            cunit python tzdata-for-tests))
     (inputs
      ;; Required to build the tools (i.e. without ‘--enable-lib-only’).
-     `(("c-ares" ,c-ares)
-       ("jansson" ,jansson)             ; for HPACK tools
-       ,@(if (hurd-target?) '()
-             `(("jemalloc" ,jemalloc))) ; fight nghttpd{,x} heap fragmentation
-       ("libev" ,libev)
-       ("libxml2" ,libxml2)             ; for ‘nghttp -a’
-       ("openssl" ,openssl)
-       ,@(if (hurd-target?)
-             `(("openssl-static" ,openssl "static"))
-             '())))
+     (append
+      (if (hurd-target?)
+          `((,openssl "static"))
+          (list jemalloc))              ; fight nghttpd{,x} heap fragmentation
+      (list c-ares
+            jansson                     ; for HPACK tools
+            libev
+            libxml2                     ; for ‘nghttp -a’
+            openssl)))
     (arguments
-     `(#:configure-flags
-       (list (string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
-             "--enable-app"             ; build all the tools
-             "--enable-hpack-tools"     ; ...all the tools
-             "--disable-examples"
-             "--disable-static"         ; don't bother building .a files
-             ,@(if (%current-target-system)
-                   '("--disable-python-bindings")
-                   '()))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'break-circular-reference
-           ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
-           ;; which is not allowed.  Break this cycle.  While we could install
-           ;; only the library to ‘out’ and move everything else to a separate
-           ;; output, this would inconvenience the majority of (human) users.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "lib/libnghttp2.pc.in"
-               (("@prefix@")
-                (assoc-ref outputs "lib")))
-             #t))
-         (add-before 'check 'set-timezone-directory
-           (lambda* (#:key inputs native-inputs #:allow-other-keys)
-             (setenv "TZDIR" (string-append
-                               (assoc-ref (or native-inputs inputs) "tzdata")
-                               "/share/zoneinfo"))
-             #t)))))
+     (list
+      #:configure-flags
+      #~(list (string-append "--libdir=" #$output:lib "/lib")
+              "--enable-app"            ; build all the tools
+              "--enable-hpack-tools"    ; ...all the tools
+              "--disable-examples"
+              "--disable-static"        ; don't bother building .a files
+              #$@(if (%current-target-system)
+                     '("--disable-python-bindings")
+                     '()))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'break-circular-reference
+            ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
+            ;; which is not allowed.  Break this cycle.  While we could install
+            ;; only the library to ‘out’ and move everything else to a separate
+            ;; output, this would inconvenience the majority of (human) users.
+            (lambda _
+              (substitute* "lib/libnghttp2.pc.in"
+                (("@prefix@")
+                 #$output:lib))))
+          (add-before 'check 'set-timezone-directory
+            (lambda* (#:key inputs native-inputs #:allow-other-keys)
+              (setenv "TZDIR" (search-input-directory
+                               (or native-inputs inputs)
+                               "share/zoneinfo")))))))
     (home-page "https://nghttp2.org/")
     (synopsis "HTTP/2 protocol client, proxy, server, and library")
     (description
@@ -7567,6 +7574,35 @@ compressed JSON header blocks.
 @end itemize\n")
     (license license:expat)))
 
+;; Older variant for Node versions < 17 (upstream commit 43291b98edaa682
+;; add support for newer nghttp2, but is difficult to backport).
+(define-public nghttp2-for-node
+  (hidden-package
+   (package
+     (inherit nghttp2)
+     (version "1.44.0")
+     (source (origin
+               (method url-fetch)
+               (uri (string-append "https://github.com/nghttp2/nghttp2/"
+                                   "releases/download/v" version "/"
+                                   "nghttp2-" version ".tar.xz"))
+               (sha256
+                (base32
+                 "0p9wvva4g8hwj55x19rbyvnq2dbsnf65rphhxnpqs7ll54xlg6an"))))
+     (arguments
+      (substitute-keyword-arguments (package-arguments nghttp2)
+        ((#:phases phases #~%standard-phases)
+         #~(modify-phases #$phases
+             (add-after 'unpack 'workaround-broken-python-version-check
+               (lambda _
+                 (substitute* "configure"
+                   ;; The configure script uses a string comparison to
+                   ;; determine whether the Python interpreter is recent
+                   ;; enough, which fails when comparing 3.8 to 3.10.
+                   ;; Convert to tuples for a more reliable check.
+                   (("print \\(ver >= '3\\.8'\\)")
+                    "print (tuple(map(int, ver.split('.'))) >= (3,8))")))))))))))
+
 (define-public hpcguix-web
   (package
     (name "hpcguix-web")
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 58e8314292..aa7f7aafe8 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -314,8 +314,7 @@ propagated by default) such as @code{gst-plugins-good} and
        (replace "gtk+" gtk)))
     (inputs
      (modify-inputs (package-inputs webkitgtk)
-       (delete "gtk+-2" "libnotify")
-       (append pango-next)))))          ;TODO: remove after it's the default
+       (delete "gtk+-2" "libnotify")))))
 
 ;;; Required by e.g. emacs-next-pgtk, emacs-xwidgets, and some other GNOME
 ;;; packages for webkit2gtk-4.0.  See also the upstream tracker for libsoup 3:
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index f329020eb4..87bed6e8b9 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -45,7 +45,7 @@
 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;; Copyright © 2021 qblade <qblade@protonmail.com>
 ;;; Copyright © 2021 lasnesne <lasnesne@lagunposprasihopre.org>
-;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
@@ -1405,7 +1405,7 @@ project derived from the original Calm Window Manager.")
 (define-public dwl
   (package
     (name "dwl")
-    (version "0.2.1")
+    (version "0.3.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1414,7 +1414,7 @@ project derived from the original Calm Window Manager.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0js8xjc2rx1ml6s58s90jrak5n7vh3kj5na2j4yy3qy0cb501xcm"))))
+                "0952kajc60ijy6qz14y6s5n7dyyf14ndzrhs4ynxj97k76742z2l"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -1534,16 +1534,16 @@ functionality to display information about the most commonly used services.")
 (define-public wlroots
   (package
     (name "wlroots")
-    (version "0.14.1")
+    (version "0.15.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/wlroots")
+             (url "https://gitlab.freedesktop.org/wlroots/wlroots")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1sshp3lvlkl1i670kxhwsb4xzxl8raz6769kqvgmxzcb63ns9ay1"))))
+        (base32 "00s73nhi3sc48l426jdlqwpclg41kx1hv0yk4yxhbzw19gqpfm1h"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -1580,7 +1580,7 @@ modules for building a Wayland compositor.")
 (define-public sway
   (package
     (name "sway")
-    (version "1.6.1")
+    (version "1.7")
     (source
      (origin
        (method git-fetch)
@@ -1589,7 +1589,7 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0j4sdbsrlvky1agacc0pcz9bwmaxjmrapjnzscbd2i0cria2fc5j"))))
+        (base32 "0ss3l258blyf2d0lwd7pi7ga1fxfj8pxhag058k7cmjhs3y30y5l"))))
     (build-system meson-build-system)
     (arguments
      `(;; elogind is propagated by wlroots -> libseat
@@ -2548,7 +2548,7 @@ shows a notification for the user on the screen.")
 (define-public cagebreak
   (package
     (name "cagebreak")
-    (version "1.8.0")
+    (version "1.8.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2557,13 +2557,18 @@ shows a notification for the user on the screen.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0296mnzk7qd0zvnhw716jvpp7madjsar373ixx4qcff0m0jwfrxm"))))
+                "0vm97ak0589v39m3fljf1qhy92dqgiqcrrfp757gg7q58qwa6dkf"))))
     (build-system meson-build-system)
-    (arguments '(#:configure-flags '("-Dxwayland=true")))
-    (native-inputs
-     (list pandoc pkg-config))
-    (inputs
-     (list libevdev pango wlroots))
+    (arguments
+     `(#:configure-flags '("-Dxwayland=true")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-data-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "meson.build"
+               (("/etc/") (string-append (assoc-ref outputs "out") "/etc"))))))))
+    (native-inputs (list pandoc pkg-config))
+    (inputs (list libevdev pango wlroots))
     (home-page "https://github.com/project-repo/cagebreak")
     (synopsis "Tiling wayland compositor inspired by ratpoison")
     (description
@@ -2600,26 +2605,26 @@ read and write, and compatible with JSON.")
 (define-public hikari
   (package
     (name "hikari")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hikari.acmelabs.space/releases/"
                            "hikari-" version ".tar.gz"))
        (sha256
-        (base32 "1jvy21irh6s7czff2hk63spswqibjcjhrpsgmrki5bii9ddi73wy"))))
+        (base32 "1qjd9dhpmv75idf6jjzwff8wgliad4d0af8pih9526p14vrnyws0"))))
     (build-system gnu-build-system)
     (native-inputs
      (list bmake pkg-config wayland-protocols))
     (inputs
-     `(("cairo" ,cairo)
-       ("libinput" ,libinput-minimal)
-       ("libucl" ,libucl)
-       ("libxkbcommon" ,libxkbcommon)
-       ("pam" ,linux-pam)
-       ("pango" ,pango)
-       ("wayland" ,wayland)
-       ("wlroots" ,wlroots)))
+     (list cairo
+           libinput-minimal
+           libucl
+           libxkbcommon
+           linux-pam
+           pango
+           wayland
+           wlroots))
     (arguments
      `(#:tests? #f                      ; no tests
        #:make-flags
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index c017085353..0d595992cc 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -692,7 +692,7 @@ rasterisation.")
 (define-public libdrm
   (package
     (name "libdrm")
-    (version "2.4.107")
+    (version "2.4.112")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -700,24 +700,24 @@ rasterisation.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "127qf1rzhaf13vdd75a58v5q34617hvangjlfnlkcdh37gqcwm65"))))
+                "1zr0hi7k5s7my4q9hyj6ryzg89zyjx24zbqfv3c5rcq9pl87gc00"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
-       '(,@(match (%current-system)
+     (list #:configure-flags
+           (match (%current-system)
              ((or "armhf-linux" "aarch64-linux")
-              '("-Dexynos=true"
-                "-Domap=true"
-                "-Detnaviv=true"
-                "-Dtegra=true"
-                "-Dfreedreno-kgsl=true"))
-             (_ '())))
-
-       #:phases (modify-phases %standard-phases
-                  (replace 'check
-                    (lambda* (#:key tests? #:allow-other-keys)
-                      (when tests?
-                        (invoke "meson" "test" "--timeout-multiplier" "5")))))))
+              #~(list "-Dexynos=true"
+                      "-Domap=true"
+                      "-Detnaviv=true"
+                      "-Dtegra=true"
+                      "-Dfreedreno-kgsl=true"))
+             (_ ''()))
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "meson" "test" "--timeout-multiplier" "5")))))))
     (propagated-inputs
      (list libpciaccess))
     (native-inputs
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index dffad299e9..96651c03a0 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -238,14 +238,14 @@ It currently supports:
 (define-public flac
   (package
    (name "flac")
-   (version "1.3.3")
+   (version "1.3.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://downloads.xiph.org/releases/flac/flac-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0j0p9sf56a2fm2hkjnf7x3py5ir49jyavg4q5zdyd7bcf6yq4gi1"))))
+              "0dz7am8kbc97a6afml1h4yp085274prg8j7csryds8m3fmz61w4g"))))
    (build-system gnu-build-system)
    (arguments
     `(#:parallel-tests? #f))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 467f90ab39..3f729f5758 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
@@ -82,6 +82,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix deprecation)
   #:use-module (guix utils)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config))
@@ -119,8 +120,7 @@ the entire document.")
 (define-public expat
   (package
     (name "expat")
-    (version "2.4.1")
-    (replacement expat/fixed)
+    (version "2.4.8")
     (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
               (origin
                 (method url-fetch)
@@ -132,7 +132,7 @@ the entire document.")
                             "/expat-" version ".tar.xz")))
                 (sha256
                  (base32
-                  "0spvyb9d3hijs4ys3x64cfmilsynl8kv6clfahv8d4lvp86js0yg")))))
+                  "09dgviwz939pms4v1syl68p5pia9hb7xxsmg406kx7kl9f88z6zp")))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -156,23 +156,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)
-    (version "2.4.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.xz")
-                           (string-append
-                            "https://github.com/libexpat/libexpat/releases/download/R_"
-                            (string-map dot->underscore version)
-                            "/expat-" version ".tar.xz")))
-                (sha256
-                 (base32
-                  "0zbss0dssn17mjmvk17qfi5cmvm0lcyzs62cwvqr219hhl864xcq")))))))
-
 (define-public libebml
   (package
     (name "libebml")
@@ -197,20 +180,19 @@ binary extension of XML for the purpose of storing and manipulating data in a
 hierarchical form with variable field lengths.")
     (license license:lgpl2.1)))
 
+;; Note: Remember to check python-libxml2 when updating this package.
 (define-public libxml2
   (package
     (name "libxml2")
-    (version "2.9.12")
+    (version "2.9.14")
     (source (origin
              (method url-fetch)
-             (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
-                                 version ".tar.gz"))
+             (uri (string-append "https://download.gnome.org/sources/libxml2/"
+                                 (version-major+minor version)"/libxml2-"
+                                 version ".tar.xz"))
              (sha256
               (base32
-               "14hxwzmf5xqppx77z7i0ni9lpzg1a84dqpf8j8l1fvy570g6imn8"))
-             (patches (search-patches "libxml2-parent-pointers.patch"
-                                      "libxml2-terminating-newline.patch"
-                                      "libxml2-xpath-recursion-limit.patch"))))
+               "1vnzk33wfms348lgz9pvkq9li7jm44pvm73lbr3w1khwgljlmmv0"))))
     (build-system gnu-build-system)
     (outputs '("out" "static" "doc"))
     (arguments
@@ -226,7 +208,7 @@ hierarchical form with variable field lengths.")
                         (for-each (lambda (dir)
                                     (rename-file (string-append src "/share/" dir)
                                                  (string-append doc "/" dir)))
-                                  '("doc" "gtk-doc"))
+                                  '("gtk-doc"))
                         (for-each (lambda (ar)
                                     (rename-file ar (string-append dst "/"
                                                                    (basename ar))))
@@ -269,6 +251,35 @@ project (but it is usable outside of the Gnome platform).")
 provides an @code{--xpath0} option to @command{xmllint} that enables it
 to output XPath results with a null delimiter.")))
 
+(define-public python-libxml2
+  (package/inherit libxml2
+    (name "python-libxml2")
+    (source (origin
+              (inherit (package-source libxml2))
+              (patches
+                (append (search-patches "python-libxml2-utf8.patch")
+                        (origin-patches (package-source libxml2))))))
+    (build-system python-build-system)
+    (outputs '("out"))
+    (arguments
+     (list
+      ;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              (chdir "python")
+              (let ((libxml2-headers (search-input-directory
+                                      inputs "include/libxml2")))
+                (substitute* "setup.py"
+                  ;; The build system ignores C_INCLUDE_PATH & co, so
+                  ;; provide the absolute directory name.
+                  (("/opt/include")
+                   (dirname libxml2-headers)))))))))
+    (inputs (list libxml2))
+    (synopsis "Python bindings for the libxml2 library")))
+
 (define-public libxlsxwriter
   (package
     (name "libxlsxwriter")
@@ -311,49 +322,18 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
     (license (list license:bsd-2
                    license:public-domain)))) ; third_party/md5
 
-(define-public python-libxml2
-  (package/inherit libxml2
-    (name "python-libxml2")
-    (source (origin
-              (inherit (package-source libxml2))
-              (patches
-                (append (search-patches "python-libxml2-utf8.patch")
-                        (origin-patches (package-source libxml2))))))
-    (build-system python-build-system)
-    (outputs '("out"))
-    (arguments
-     `(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before
-          'build 'configure
-          (lambda* (#:key inputs #:allow-other-keys)
-            (chdir "python")
-            (let ((glibc   (assoc-ref inputs ,(if (%current-target-system)
-                                                  "cross-libc" "libc")))
-                  (libxml2 (assoc-ref inputs "libxml2")))
-              (substitute* "setup.py"
-                ;; For 'libxml2/libxml/tree.h'.
-                (("ROOT = r'/usr'")
-                 (format #f "ROOT = r'~a'" libxml2))
-                ;; For 'iconv.h'.
-                (("/opt/include")
-                 (string-append glibc "/include")))))))))
-    (inputs `(("libxml2" ,libxml2)))
-    (synopsis "Python bindings for the libxml2 library")))
-
 (define-public libxslt
   (package
     (name "libxslt")
-    (version "1.1.34")
+    (version "1.1.37")
     (source (origin
              (method url-fetch)
-             (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-"
-                                 version ".tar.gz"))
+             (uri (string-append "https://download.gnome.org/sources"
+                                 "/libxslt/" (version-major+minor version)
+                                 "/libxslt-" version ".tar.xz"))
              (sha256
               (base32
-               "0zrzz6kjdyavspzik6fbkpvfpbd25r2qg6py5nnjaabrsr3bvccq"))
+               "1d1s2bk0m6d7bzml9w90ycl0jlpcy4v07595cwaddk17h3f2fjrs"))
              (patches (search-patches "libxslt-generated-ids.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -365,14 +345,20 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
                       (substitute* "tests/Makefile"
                         (("exslt plugins fuzz")
                          "exslt plugins"))
-                      #t)))))
+                      ;; Also disable Python tests since they require
+                      ;; python-libxml2 which would introduce a
+                      ;; circular dependency.
+                      (substitute* "python/Makefile"
+                        (("cd tests && \\$\\(MAKE\\) tests")
+                         "$(info Python tests are disabled by Guix.)")))))))
     (home-page "http://xmlsoft.org/XSLT/index.html")
     (synopsis "C library for applying XSLT stylesheets to XML documents")
-    (inputs `(("libgcrypt" ,libgcrypt)
-              ("libxml2" ,libxml2)
-              ("python" ,python-minimal-wrapper)
-              ("zlib" ,zlib)
-              ("xz" ,xz)))
+    (inputs
+     (list libgcrypt
+           libxml2
+           python-minimal-wrapper
+           zlib
+           xz))
     (native-inputs
      (list pkg-config))
     (description
@@ -2498,26 +2484,20 @@ because lxml.etree already has its own implementation of XPath 1.0.")
 (define-public python-lxml
   (package
     (name "python-lxml")
-    (version "4.6.3")
+    (version "4.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "lxml" version))
        (sha256
-        (base32 "0s14r1w2x9sdlcsw8mxiqgw4rz5zs5lpqpxrfyn4a1mkndqqbdrr"))
-       ;; Adapt a test to libxml2 2.9.12, taken from this commit:
-       ;; https://github.com/lxml/lxml/commit/852ed1092bd80b6b9a51db24371047e
-       (modules '((guix build utils)))
-       (snippet
-        '(substitute* "src/lxml/tests/test_etree.py"
-             (("self\\.assertEqual\\(\\{'hha': None\\}, el\\.nsmap\\)")
-              "self.assertEqual({}, el.nsmap)")))))
+         (base32 "0grczyrrq2rbwhvpri15cyhv330s494vbz3js3jky8xp5c2rnx7y"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (replace 'check
-                    (lambda _
-                      (invoke "make" "test"))))))
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "make" "test")))))))
     (inputs
      (list libxml2 libxslt))
     (home-page "https://lxml.de/")
@@ -2527,17 +2507,8 @@ because lxml.etree already has its own implementation of XPath 1.0.")
 libxml2 and libxslt.")
     (license license:bsd-3))) ; and a few more, see LICENSES.txt
 
-(define-public python-lxml-4.7
-  (package
-    (inherit python-lxml)
-    (version "4.7.1")
-    (source
-     (origin
-       (inherit (package-source python-lxml))
-       (uri (pypi-uri "lxml" version))
-       (sha256
-        (base32
-         "090viyanaki4q7w7i000xl0qh4in52bkl3qal55sz2bbm8w3hqd1"))))))
+(define-deprecated python-lxml-4.7 python-lxml)
+(export python-lxml-4.7)
 
 (define-public python-untangle
   ;; The latest tagged release is from 2014; use the latest commit.
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 4cde48aa1b..1b8562a619 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
-;;; Copyright © 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2017-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -86,7 +86,6 @@
   #:use-module (gnu packages inkscape)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -242,14 +241,14 @@ which can be read by any architecture.")
 (define-public xorgproto
   (package
     (name "xorgproto")
-    (version "2021.5")
+    (version "2022.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "ftp://ftp.freedesktop.org/pub/xorg//individual/proto/"
-                                  "xorgproto-" version ".tar.bz2"))
+              (uri (string-append "mirror://xorg/individual/proto"
+                                  "/xorgproto-" version ".tar.xz"))
               (sha256
                (base32
-                "05d0kib351qmnlfimaznaw0220fr0ym7fx2gn9h2jqxxilxncbxa"))))
+                "17kbq1x68jl9mz69ays5c0w72lpkqi937raxk0im7y88pvrdn4sx"))))
     (build-system gnu-build-system)
     (propagated-inputs
      ;; To get util-macros in (almost?) all package inputs.
@@ -1276,8 +1275,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
-    (inputs
-      (list libbsd xorgproto))
+    (inputs (list xorgproto))
     (native-inputs
        (list pkg-config))
     (home-page "https://www.x.org/wiki/")
@@ -1288,7 +1286,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
 (define-public libxft
   (package
     (name "libxft")
-    (version "2.3.3")
+    (version "2.3.4")
     (source
       (origin
         (method url-fetch)
@@ -1298,15 +1296,15 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
                ".tar.bz2"))
         (sha256
           (base32
-            "05lja9s54090xwh31r0bqms4v3pimng5xr09g2rdnafx2vk6hp12"))))
+            "1pdbr6gzfvixc791pjf42i9gg8wvfq6cpq6sdca04h4i42mxmpjp"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
     (propagated-inputs
      ;; xft.pc refers to all these.
-      `(("libxrender" ,libxrender)
-        ("freetype" ,freetype)
-        ("fontconfig" ,fontconfig)))
+     (list libxrender
+           freetype
+           fontconfig))
     (inputs
       (list libx11 xorgproto))
     (native-inputs
@@ -2043,7 +2041,7 @@ emulate a TI-30 or an HP-10C.")
 (define-public xcb-proto
   (package
     (name "xcb-proto")
-    (version "1.14")
+    (version "1.15.2")
     (source
       (origin
         (method url-fetch)
@@ -2052,17 +2050,10 @@ emulate a TI-30 or an HP-10C.")
                version ".tar.xz"))
         (sha256
          (base32
-          "01d62r286yfc3rpz714nqdgkl0wk9j0wqkd4ylas1d7r4vmkqshq"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            ;; fractions.gcd has been deprecated since python-3.5.
-            (substitute* "xcbgen/align.py"
-              (("from fractions import gcd") "from math import gcd"))
-            #t))))
+          "1vak6q53abwxnkfn6by7j24m48kd2iy7jnskkqzzx8l0ysqvwwkh"))))
     (build-system gnu-build-system)
     (native-inputs
-      `(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper)))
+     (list pkg-config python-minimal-wrapper))
     (home-page "https://xcb.freedesktop.org/")
     (synopsis "XML-XCB protocol descriptions")
     (description
@@ -3895,10 +3886,7 @@ extension to the X11 protocol.  It includes:
     (inputs
       (list libx11 xkbcomp-intermediate))
     (native-inputs
-      `(("gettext" ,gettext-minimal)
-        ("perl" ,perl)
-        ("pkg-config" ,pkg-config)
-        ("python" ,python)))
+      (list gettext-minimal libxslt perl pkg-config python))
     (home-page "https://www.x.org/wiki/")
     (synopsis "Xorg XKB configuration files")
     (description
@@ -4829,8 +4817,7 @@ common definitions and porting layer.")
      '(#:configure-flags '("--disable-static")))
     (propagated-inputs
       (list xorgproto))
-    (inputs
-      (list libbsd xtrans))
+    (inputs (list xtrans))
     (native-inputs
       (list pkg-config))
     (home-page "https://www.x.org/wiki/")
@@ -4841,17 +4828,16 @@ common definitions and porting layer.")
 (define-public libxau
   (package
     (name "libxau")
-    (version "1.0.9")
+    (version "1.0.10")
     (source
       (origin
         (method url-fetch)
         (uri (string-append
                "mirror://xorg/individual/lib/libXau-"
-               version
-               ".tar.bz2"))
+               version ".tar.xz"))
         (sha256
           (base32
-            "1v3krc6x0zliaa66qq1bf9j60x5nqfy68v8axaiglxpnvgqcpy6c"))))
+            "02hc3azypiiahr9y1cyn0mqc5zd997hh3h0rp7jqfbsd6f9g5rlb"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
@@ -5002,17 +4988,15 @@ new API's in libXft, or the legacy API's in libX11.")
 (define-public libxvmc
   (package
     (name "libxvmc")
-    (version "1.0.12")
+    (version "1.0.13")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "mirror://xorg/individual/lib/libXvMC-"
-               version
-               ".tar.bz2"))
-        (sha256
-          (base32
-            "1kbdjsvkm5l7axv7g477qj18sab2wnqhliy6197syzizgfbsfgbb"))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://xorg/individual/lib/libXvMC-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "0z35xqna3dnrfxgn9aa1y6jx7mrwsn8vi8dcwm3sg23qx9nvx7ha"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '(,@(malloc0-flags) "--disable-static")))
@@ -5062,7 +5046,7 @@ protocol.")
 (define-public libxcb
   (package
     (name "libxcb")
-    (version "1.14")
+    (version "1.15")
     (source
       (origin
         (method url-fetch)
@@ -5070,7 +5054,7 @@ protocol.")
                             "libxcb-" version ".tar.xz"))
         (sha256
           (base32
-           "0d2chjgyn5lr9sfhacfvqgnj9l9faz11vn322a06jd6lk3dxcpm5"))))
+           "0nd035rf83xf531cnjzsf9ykb5w9rdzz6bbyhi683xkwh57p8f6c"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))                      ;5.5 MiB of man pages
     (propagated-inputs
@@ -5078,8 +5062,7 @@ protocol.")
     (inputs
       (list xcb-proto libxslt))
     (native-inputs
-      `(("pkg-config" ,pkg-config)
-        ("python" ,python-minimal-wrapper)))
+     (list pkg-config python-minimal-wrapper))
     (arguments
      `(#:configure-flags (list "--enable-xkb"
                                "--disable-static"
@@ -5424,7 +5407,7 @@ Wayland.")
 (define-public libx11
   (package
     (name "libx11")
-    (version "1.7.3.1")
+    (version "1.8.1")
     (source
      (origin
        (method url-fetch)
@@ -5432,7 +5415,7 @@ Wayland.")
                            "/individual/lib/libX11-" version ".tar.xz"))
        (sha256
         (base32
-         "1289nvs52q9fnp7zl30bdpbvqggnjjb39vy0zll511zvcrr43z9g"))))
+         "1xyry8i7zqmlkvpbyyqwi18rrdw6ycczlvfp63rh2570pfhimi0v"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                  ;8 MiB of man pages + XML
@@ -5459,17 +5442,15 @@ Wayland.")
 (define-public libxcursor
   (package
     (name "libxcursor")
-    (version "1.2.0")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "mirror://xorg/individual/lib/libXcursor-"
-             version
-             ".tar.bz2"))
+       (uri (string-append "mirror://xorg/individual/lib/libXcursor-"
+                           version ".tar.xz"))
        (sha256
         (base32
-         "10l7c9fm0jmpkm9ab9dz8r6m1pr87vvgqjnbx1psz50h4pwfklrs"))))
+         "011195an3w4xld3x0dr534kar1xjf52q96hmf0hgvfhh2rrl7ha6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm
index 2e86845e51..8543c51b0d 100644
--- a/gnu/services/cups.scm
+++ b/gnu/services/cups.scm
@@ -99,6 +99,15 @@
 (define (serialize-comma-separated-string-list field-name val)
   (serialize-field field-name (string-join val ",")))
 
+;; A special case of the above, where we don't want to emit anything at all
+;; when #f, to allow CUPS to pick a default we cannot compute ourselves.
+;; XXX Ideally, this could be a generic higher-order function, but it's used
+;; only once so far: for ready-paper-sizes to handle "Auto" default-paper-size.
+(define (comma-separated-string-list-or-#f? val)
+  (if val (comma-separated-string-list? val) #t))
+(define (serialize-comma-separated-string-list-or-#f field-name val)
+  (if val (serialize-field field-name (string-join val ",")) #f))
+
 (define (space-separated-string-list? val)
   (and (list? val)
        (and-map (lambda (x)
@@ -143,7 +152,7 @@
 (define-enumerated-field-type browse-local-protocols
   (all dnssd none))
 (define-enumerated-field-type default-auth-type
-  (Basic Negotiate))
+  (Basic))
 (define-enumerated-field-type default-encryption
   (Never IfRequested Required))
 (define-enumerated-field-type error-policy
@@ -514,10 +523,10 @@ requests.")
    "Specifies whether to purge job history data automatically when it is no
 longer required for quotas.")
   (browse-dns-sd-sub-types
-   (comma-separated-string-list (list "_cups"))
+   (comma-separated-string-list (list "_cups" "_print" "_universal"))
    "Specifies a list of DNS-SD sub-types to advertise for each shared printer.
-For example, @samp{\"_cups\" \"_print\"} will tell network clients that both
-CUPS sharing and IPP Everywhere are supported.")
+The default @samp{(list \"_cups\" \"_print\" \"_universal\")} tells clients
+that CUPS sharing, IPP Everywhere, AirPrint, and Mopria are supported.")
   (browse-local-protocols
    (browse-local-protocols 'dnssd)
    "Specifies which protocols to use for local printer sharing.")
@@ -527,16 +536,6 @@ CUPS sharing and IPP Everywhere are supported.")
   (browsing?
    (boolean #f)
    "Specifies whether shared printers are advertised.")
-  (classification
-   (string "")
-   "Specifies the security classification of the server.
-Any valid banner name can be used, including \"classified\", \"confidential\",
-\"secret\", \"topsecret\", and \"unclassified\", or the banner can be omitted
-to disable secure printing functions.")
-  (classify-override?
-   (boolean #f)
-   "Specifies whether users may override the classification (cover page) of
-individual print jobs using the @code{job-sheets} option.")
   (default-auth-type
     (default-auth-type 'Basic)
     "Specifies the default type of authentication to use.")
@@ -583,10 +582,6 @@ the scheduler to printing a single job at any time.")
    "Specifies the scheduling priority of filters that are run to print a job.
 The nice value ranges from 0, the highest priority, to 19, the lowest
 priority.")
-  ;; Add this option if the package is built with Kerberos support.
-  ;; (gss-service-name
-  ;;  (string "http")
-  ;;  "Specifies the service name when using Kerberos authentication.")
   (host-name-lookups
    (host-name-lookups #f)
    "Specifies whether to do reverse lookups on connecting clients.
@@ -595,7 +590,7 @@ resolved from the address matches one of the addresses returned for that
 hostname.  Double lookups also prevent clients with unregistered addresses
 from connecting to your server.  Only set this option to @code{#t} or
 @code{double} if absolutely required.")
-  ;; Add this option if the package is built with launchd/systemd support.
+  ;; Add this option if the package is built with socket activation support.
   ;;   (idle-exit-timeout
   ;;    (non-negative-integer 60)
   ;;    "Specifies the length of time to wait before shutting down due to
@@ -630,13 +625,6 @@ address enclosed in brackets, an IPv4 address, or @code{*} to indicate all
 addresses.  Values can also be file names of local UNIX domain sockets.  The
 Listen directive is similar to the Port directive but allows you to restrict
 access to specific interfaces or networks.")
-  (listen-back-log
-   (non-negative-integer 128)
-   "Specifies the number of pending connections that will be allowed.  This
-normally only affects very busy servers that have reached the MaxClients
-limit, but can also be triggered by large numbers of simultaneous connections.
-When the limit is reached, the operating system will refuse additional
-connections until the scheduler can accept the pending ones.")
   (location-access-controls
    (location-access-control-list
     (list (location-access-control
@@ -695,7 +683,7 @@ printer.  A value of 0 allows up to MaxJobs jobs per printer.")
   (max-jobs-per-user
    (non-negative-integer 0)
    "Specifies the maximum number of simultaneous jobs that are allowed per
-user.  A value of 0 allows up to MaxJobs jobs per user.")
+user.  A value of 0 allows up to @code{max-jobs} jobs per user.")
   (max-job-time
    (non-negative-integer 10800)
    "Specifies the maximum time a job may take to print before it is canceled,
@@ -704,39 +692,29 @@ in seconds.  Set to 0 to disable cancellation of \"stuck\" jobs.")
    (non-negative-integer 1048576)
    "Specifies the maximum size of the log files before they are rotated, in
 bytes.  The value 0 disables log rotation.")
+  (max-subscriptions
+   (non-negative-integer 100)
+   "Specifies the maximum number of simultaneous event subscriptions that are
+allowed.  Set to @samp{0} to allow an unlimited number of subscriptions.")
+  (max-subscriptions-per-job
+   (non-negative-integer 0)
+   "Specifies the maximum number of simultaneous event subscriptions that are
+allowed per job.  A value of @samp{0} allows up to @code{max-subscriptions}
+per job.")
+  (max-subscriptions-per-printer
+   (non-negative-integer 0)
+   "Specifies the maximum number of simultaneous event subscriptions that are
+allowed per printer.  A value of @samp{0} allows up to @code{max-subscriptions}
+per printer.")
+  (max-subscriptions-per-user
+   (non-negative-integer 0)
+   "Specifies the maximum number of simultaneous event subscriptions that are
+allowed per user.  A value of @samp{0} allows up to @code{max-subscriptions}
+per user.")
   (multiple-operation-timeout
    (non-negative-integer 900)
    "Specifies the maximum amount of time to allow between files in a multiple
 file print job, in seconds.")
-  (page-log-format
-   (string "")
-   "Specifies the format of PageLog lines.  Sequences beginning with
-percent (@samp{%}) characters are replaced with the corresponding information,
-while all other characters are copied literally.  The following percent
-sequences are recognized:
-
-@table @samp
-@item %%
-insert a single percent character
-@item %@{name@}
-insert the value of the specified IPP attribute
-@item %C
-insert the number of copies for the current page
-@item %P
-insert the current page number
-@item %T
-insert the current date and time in common log format
-@item %j
-insert the job ID
-@item %p
-insert the printer name
-@item %u
-insert the username
-@end table
-
-A value of the empty string disables page logging.  The string @code{%p %u %j
-%T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@}
-%@{media@} %@{sides@}} creates a page log with the standard items.")
   (environment-variables
    (environment-variables '())
    "Passes the specified environment variable(s) to child processes; a list of
@@ -794,13 +772,18 @@ indefinitely.")
 If a numeric value is specified, the job history is preserved for the
 indicated number of seconds after printing.  If @code{#t}, the job history is
 preserved until the MaxJobs limit is reached.")
+  (ready-paper-sizes
+   (comma-separated-string-list-or-#f #f)
+   "Specifies a list of potential paper sizes that are reported as ready,
+that is: loaded.  The actual list will contain only the sizes that each
+printer supports.  If @code{#f}, CUPS will assume
+@samp{(list \"Letter\" \"Legal\" \"Tabloid\" \"4x6\" \"Env10\")}
+if the default paper size is \"Letter\", and
+@samp{(list \"A3\" \"A4\" \"A5\" \"A6\" \"EnvDL\")} otherwise.")
   (reload-timeout
    (non-negative-integer 30)
    "Specifies the amount of time to wait for job completion before restarting
 the scheduler.")
-  (rip-cache
-   (string "128m")
-   "Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.")
   (server-admin
    (string "root@localhost.localdomain")
    "Specifies the email address of the server administrator.")
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 52cb1e3a51..e4c719fe71 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -317,19 +317,10 @@ tuples, are all set as environment variables when the bus daemon launches it."
   polkit-configuration make-polkit-configuration
   polkit-configuration?
   (polkit   polkit-configuration-polkit           ;file-like
-            (default %default-polkit))
+            (default polkit))
   (actions  polkit-configuration-actions          ;list of file-like
             (default '())))
 
-(define %default-polkit
-  ;; The default polkit package.
-  (let-system (system target)
-    ;; Since mozjs depends on Rust, which is currently x86_64-only, use
-    ;; polkit-duktape on other systems.
-    (if (string-prefix? "x86_64-" (or target system))
-        polkit-mozjs
-        polkit-duktape)))
-
 (define %polkit-accounts
   (list (user-group (name "polkitd") (system? #t))
         (user-account
diff --git a/gnu/services/security-token.scm b/gnu/services/security-token.scm
index 52afad84a6..2356273398 100644
--- a/gnu/services/security-token.scm
+++ b/gnu/services/security-token.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
 ;;;
@@ -74,12 +74,7 @@
                              '((guix build utils)))
        #~(begin
            (use-modules (guix build utils))
-           ;; XXX: We can't use (guix utils) because it requires a
-           ;; dynamically-linked Guile, hence the duplicate switch-symlinks.
-           (define (switch-symlinks link target)
-             (let ((pivot (string-append link ".new")))
-               (symlink target pivot)
-               (rename-file pivot link)))
+
            (mkdir-p "/var/lib")
            (switch-symlinks "/var/lib/pcsc"
                             #$(directory-union
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm
index 2574e019f1..b635681642 100644
--- a/gnu/system/pam.scm
+++ b/gnu/system/pam.scm
@@ -21,6 +21,7 @@
   #:use-module (guix derivations)
   #:use-module (guix gexp)
   #:use-module (gnu services)
+  #:use-module (gnu system setuid)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
@@ -375,8 +376,13 @@ strings or string-valued gexps."
 
 (define pam-root-service-type
   (service-type (name 'pam)
-                (extensions (list (service-extension etc-service-type
-                                                     /etc-entry)))
+                (extensions
+                 (list (service-extension
+                        setuid-program-service-type
+                        (lambda (_)
+                          (list (file-like->setuid-program
+                                 (file-append linux-pam "/sbin/unix_chkpwd")))))
+                       (service-extension etc-service-type /etc-entry)))
 
                 ;; Arguments include <pam-service> as well as procedures.
                 (compose concatenate)