summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-11-29 14:19:55 +0000
committerChristopher Baines <mail@cbaines.net>2020-11-29 17:34:18 +0000
commitff01206345e2306cc633db48e0b29eab9077091a (patch)
tree25c7ee17005dadc9bf4fae3f0873e03a4704f782 /gnu
parented2545f0fa0e2ad99d5a0c45f532c539b299b9fb (diff)
parent7c2e67400ffaef8eb6f30ef7126c976ee3d7e36c (diff)
downloadguix-ff01206345e2306cc633db48e0b29eab9077091a.tar.gz
Merge remote-tracking branch 'origin/master' into core-updates
Diffstat (limited to 'gnu')
-rw-r--r--gnu/bootloader.scm125
-rw-r--r--gnu/bootloader/grub.scm105
-rw-r--r--gnu/build/bootloader.scm7
-rw-r--r--gnu/build/chromium-extension.scm192
-rw-r--r--gnu/build/file-systems.scm105
-rw-r--r--gnu/build/image.scm10
-rw-r--r--gnu/build/linux-boot.scm59
-rw-r--r--gnu/build/linux-initrd.scm13
-rw-r--r--gnu/build/shepherd.scm16
-rw-r--r--gnu/ci.scm20
-rw-r--r--gnu/installer/newt.scm1
-rw-r--r--gnu/installer/newt/ethernet.scm2
-rw-r--r--gnu/installer/newt/final.scm19
-rw-r--r--gnu/installer/newt/network.scm2
-rw-r--r--gnu/installer/newt/page.scm11
-rw-r--r--gnu/installer/newt/parameters.scm4
-rw-r--r--gnu/installer/newt/partition.scm20
-rw-r--r--gnu/installer/newt/services.scm3
-rw-r--r--gnu/installer/newt/welcome.scm8
-rw-r--r--gnu/installer/newt/wifi.scm3
-rw-r--r--gnu/installer/parted.scm115
-rw-r--r--gnu/installer/steps.scm2
-rw-r--r--gnu/installer/tests.scm31
-rw-r--r--gnu/installer/utils.scm14
-rw-r--r--gnu/local.mk77
-rw-r--r--gnu/machine/ssh.scm9
-rw-r--r--gnu/packages/acl.scm3
-rw-r--r--gnu/packages/ada.scm119
-rw-r--r--gnu/packages/admin.scm216
-rw-r--r--gnu/packages/aidc.scm2
-rw-r--r--gnu/packages/algebra.scm26
-rw-r--r--gnu/packages/animation.scm97
-rw-r--r--gnu/packages/aspell.scm17
-rw-r--r--gnu/packages/assembly.scm20
-rw-r--r--gnu/packages/audio.scm73
-rw-r--r--gnu/packages/authentication.scm18
-rw-r--r--gnu/packages/aux-files/linux-libre/5.9-arm.conf (renamed from gnu/packages/aux-files/linux-libre/5.8-arm.conf)145
-rw-r--r--gnu/packages/aux-files/linux-libre/5.9-arm64.conf (renamed from gnu/packages/aux-files/linux-libre/5.8-arm64.conf)165
-rw-r--r--gnu/packages/aux-files/linux-libre/5.9-i686.conf (renamed from gnu/packages/aux-files/linux-libre/5.8-i686.conf)139
-rw-r--r--gnu/packages/aux-files/linux-libre/5.9-x86_64.conf (renamed from gnu/packages/aux-files/linux-libre/5.8-x86_64.conf)130
-rw-r--r--gnu/packages/aux-files/run-in-namespace.c54
-rw-r--r--gnu/packages/avr.scm67
-rw-r--r--gnu/packages/backup.scm18
-rw-r--r--gnu/packages/base.scm18
-rw-r--r--gnu/packages/bash.scm43
-rw-r--r--gnu/packages/benchmark.scm25
-rw-r--r--gnu/packages/bioconductor.scm26
-rw-r--r--gnu/packages/bioinformatics.scm341
-rw-r--r--gnu/packages/bittorrent.scm28
-rw-r--r--gnu/packages/bootloaders.scm103
-rw-r--r--gnu/packages/browser-extensions.scm123
-rw-r--r--gnu/packages/build-tools.scm5
-rw-r--r--gnu/packages/c.scm12
-rw-r--r--gnu/packages/calendar.scm53
-rw-r--r--gnu/packages/cdrom.scm6
-rw-r--r--gnu/packages/check.scm14
-rw-r--r--gnu/packages/chromium.scm157
-rw-r--r--gnu/packages/ci.scm6
-rw-r--r--gnu/packages/clojure.scm22
-rw-r--r--gnu/packages/cmake.scm46
-rw-r--r--gnu/packages/code.scm177
-rw-r--r--gnu/packages/commencement.scm6
-rw-r--r--gnu/packages/compression.scm62
-rw-r--r--gnu/packages/coq.scm2
-rw-r--r--gnu/packages/cpp.scm25
-rw-r--r--gnu/packages/cran.scm325
-rw-r--r--gnu/packages/crates-graphics.scm27
-rw-r--r--gnu/packages/crates-io.scm1481
-rw-r--r--gnu/packages/cross-base.scm14
-rw-r--r--gnu/packages/crypto.scm63
-rw-r--r--gnu/packages/cups.scm87
-rw-r--r--gnu/packages/databases.scm260
-rw-r--r--gnu/packages/dbm.scm8
-rw-r--r--gnu/packages/debian.scm122
-rw-r--r--gnu/packages/debug.scm17
-rw-r--r--gnu/packages/dictionaries.scm12
-rw-r--r--gnu/packages/diffoscope.scm42
-rw-r--r--gnu/packages/disk.scm25
-rw-r--r--gnu/packages/django.scm23
-rw-r--r--gnu/packages/djvu.scm409
-rw-r--r--gnu/packages/dns.scm34
-rw-r--r--gnu/packages/docbook.scm12
-rw-r--r--gnu/packages/docker.scm12
-rw-r--r--gnu/packages/documentation.scm2
-rw-r--r--gnu/packages/ebook.scm10
-rw-r--r--gnu/packages/education.scm30
-rw-r--r--gnu/packages/emacs-xyz.scm1806
-rw-r--r--gnu/packages/emacs.scm33
-rw-r--r--gnu/packages/embedded.scm209
-rw-r--r--gnu/packages/emulators.scm14
-rw-r--r--gnu/packages/enchant.scm6
-rw-r--r--gnu/packages/engineering.scm89
-rw-r--r--gnu/packages/enlightenment.scm4
-rw-r--r--gnu/packages/file-systems.scm95
-rw-r--r--gnu/packages/finance.scm252
-rw-r--r--gnu/packages/fonts.scm79
-rw-r--r--gnu/packages/fontutils.scm55
-rw-r--r--gnu/packages/freedesktop.scm110
-rw-r--r--gnu/packages/game-development.scm58
-rw-r--r--gnu/packages/games.scm409
-rw-r--r--gnu/packages/gdb.scm38
-rw-r--r--gnu/packages/geo.scm11
-rw-r--r--gnu/packages/gettext.scm15
-rw-r--r--gnu/packages/gimp.scm29
-rw-r--r--gnu/packages/glib.scm59
-rw-r--r--gnu/packages/gnome-xyz.scm38
-rw-r--r--gnu/packages/gnome.scm212
-rw-r--r--gnu/packages/gnu-pw-mgr.scm8
-rw-r--r--gnu/packages/gnucash.scm21
-rw-r--r--gnu/packages/gnupg.scm63
-rw-r--r--gnu/packages/gnuzilla.scm41
-rw-r--r--gnu/packages/golang.scm228
-rw-r--r--gnu/packages/gpodder.scm14
-rw-r--r--gnu/packages/gps.scm13
-rw-r--r--gnu/packages/graph.scm7
-rw-r--r--gnu/packages/graphics.scm103
-rw-r--r--gnu/packages/graphviz.scm23
-rw-r--r--gnu/packages/gstreamer.scm73
-rw-r--r--gnu/packages/gtk.scm10
-rw-r--r--gnu/packages/guile-xyz.scm186
-rw-r--r--gnu/packages/guile.scm22
-rw-r--r--gnu/packages/hardware.scm21
-rw-r--r--gnu/packages/haskell-apps.scm11
-rw-r--r--gnu/packages/haskell-check.scm27
-rw-r--r--gnu/packages/haskell-web.scm43
-rw-r--r--gnu/packages/haskell-xyz.scm621
-rw-r--r--gnu/packages/heads.scm34
-rw-r--r--gnu/packages/image-viewers.scm21
-rw-r--r--gnu/packages/image.scm55
-rw-r--r--gnu/packages/imagemagick.scm15
-rw-r--r--gnu/packages/inkscape.scm21
-rw-r--r--gnu/packages/irc.scm18
-rw-r--r--gnu/packages/iso-codes.scm16
-rw-r--r--gnu/packages/java.scm64
-rw-r--r--gnu/packages/javascript.scm39
-rw-r--r--gnu/packages/julia.scm20
-rw-r--r--gnu/packages/kde-frameworks.scm6
-rw-r--r--gnu/packages/kde-internet.scm4
-rw-r--r--gnu/packages/kde-plasma.scm35
-rw-r--r--gnu/packages/kde.scm56
-rw-r--r--gnu/packages/kodi.scm4
-rw-r--r--gnu/packages/language.scm8
-rw-r--r--gnu/packages/lean.scm7
-rw-r--r--gnu/packages/lego.scm58
-rw-r--r--gnu/packages/less.scm6
-rw-r--r--gnu/packages/libffi.scm22
-rw-r--r--gnu/packages/libreoffice.scm5
-rw-r--r--gnu/packages/libusb.scm4
-rw-r--r--gnu/packages/linphone.scm15
-rw-r--r--gnu/packages/linux.scm370
-rw-r--r--gnu/packages/lisp-xyz.scm527
-rw-r--r--gnu/packages/lisp.scm41
-rw-r--r--gnu/packages/llvm.scm173
-rw-r--r--gnu/packages/loko.scm6
-rw-r--r--gnu/packages/lsof.scm77
-rw-r--r--gnu/packages/lua.scm17
-rw-r--r--gnu/packages/lxde.scm4
-rw-r--r--gnu/packages/lxqt.scm22
-rw-r--r--gnu/packages/machine-learning.scm72
-rw-r--r--gnu/packages/mail.scm406
-rw-r--r--gnu/packages/man.scm6
-rw-r--r--gnu/packages/mate.scm1
-rw-r--r--gnu/packages/maths.scm50
-rw-r--r--gnu/packages/matrix.scm5
-rw-r--r--gnu/packages/mercury.scm8
-rw-r--r--gnu/packages/messaging.scm324
-rw-r--r--gnu/packages/monitoring.scm8
-rw-r--r--gnu/packages/mp3.scm5
-rw-r--r--gnu/packages/mpd.scm99
-rw-r--r--gnu/packages/mpi.scm17
-rw-r--r--gnu/packages/mtools.scm4
-rw-r--r--gnu/packages/music.scm247
-rw-r--r--gnu/packages/networking.scm214
-rw-r--r--gnu/packages/nvi.scm38
-rw-r--r--gnu/packages/ocaml.scm223
-rw-r--r--gnu/packages/openstack.scm223
-rw-r--r--gnu/packages/package-management.scm213
-rw-r--r--gnu/packages/pantheon.scm4
-rw-r--r--gnu/packages/parallel.scm25
-rw-r--r--gnu/packages/password-utils.scm14
-rw-r--r--gnu/packages/patches/audiofile-check-number-of-coefficients.patch (renamed from gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch)0
-rw-r--r--gnu/packages/patches/audiofile-division-by-zero.patch (renamed from gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch)0
-rw-r--r--gnu/packages/patches/audiofile-function-signature.patch (renamed from gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch)0
-rw-r--r--gnu/packages/patches/audiofile-multiply-overflow.patch (renamed from gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch)0
-rw-r--r--gnu/packages/patches/audiofile-overflow-in-MSADPCM.patch (renamed from gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch)0
-rw-r--r--gnu/packages/patches/benchmark-unbundle-googletest.patch69
-rw-r--r--gnu/packages/patches/bitcoin-core-python-compat.patch28
-rw-r--r--gnu/packages/patches/bsd-games-2.17-64bit.patch43
-rw-r--r--gnu/packages/patches/bsd-games-add-configure-config.patch22
-rw-r--r--gnu/packages/patches/bsd-games-add-wrapper.patch251
-rw-r--r--gnu/packages/patches/bsd-games-bad-ntohl-cast.patch22
-rw-r--r--gnu/packages/patches/bsd-games-dont-install-empty-files.patch87
-rw-r--r--gnu/packages/patches/bsd-games-gamescreen.h.patch14
-rw-r--r--gnu/packages/patches/bsd-games-getline.patch194
-rw-r--r--gnu/packages/patches/bsd-games-null-check.patch24
-rw-r--r--gnu/packages/patches/bsd-games-number.c-and-test.patch183
-rw-r--r--gnu/packages/patches/bsd-games-prevent-name-collisions.patch13
-rw-r--r--gnu/packages/patches/bsd-games-stdio.h.patch14
-rw-r--r--gnu/packages/patches/eigen-remove-openmp-error-counting.patch64
-rw-r--r--gnu/packages/patches/farstream-make.patch39
-rw-r--r--gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch11
-rw-r--r--gnu/packages/patches/gcc-6-fix-buffer-size.patch15
-rw-r--r--gnu/packages/patches/gcc-6-fix-isl-includes.patch16
-rw-r--r--gnu/packages/patches/glib-appinfo-watch.patch92
-rw-r--r--gnu/packages/patches/gnash-fix-giflib-version.patch17
-rw-r--r--gnu/packages/patches/grim-revert-output-rotation.patch27
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch4
-rw-r--r--gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch1831
-rw-r--r--gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch42
-rw-r--r--gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch33
-rw-r--r--gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch45
-rw-r--r--gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch25
-rw-r--r--gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch8
-rw-r--r--gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch8
-rw-r--r--gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch20
-rw-r--r--gnu/packages/patches/lsof-fatal-test-failures.patch58
-rw-r--r--gnu/packages/patches/multipath-tools-sans-systemd.patch83
-rw-r--r--gnu/packages/patches/mupdf-fix-linkage.patch27
-rw-r--r--gnu/packages/patches/mutt-store-references.patch13
-rw-r--r--gnu/packages/patches/netcdf-date-time.patch6
-rw-r--r--gnu/packages/patches/netcdf-tst_h_par.patch21
-rw-r--r--gnu/packages/patches/oath-toolkit-glibc-compat.patch90
-rw-r--r--gnu/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch283
-rw-r--r--gnu/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch68
-rw-r--r--gnu/packages/patches/openocd-nrf52.patch827
-rw-r--r--gnu/packages/patches/openssh-fix-ssh-copy-id.patch38
-rw-r--r--gnu/packages/patches/perl-www-curl-fix-struct-void.patch24
-rw-r--r--gnu/packages/patches/perl-www-curl-remove-symbol.patchbin1177 -> 984 bytes
-rw-r--r--gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch25
-rw-r--r--gnu/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch34
-rw-r--r--gnu/packages/patches/python-pydot-regression-test.patch79
-rw-r--r--gnu/packages/patches/python-robotframework-source-date-epoch.patch (renamed from gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch)0
-rw-r--r--gnu/packages/patches/python2-pygobject-2-deprecation.patch (renamed from gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch)0
-rw-r--r--gnu/packages/patches/rcs-5.10.0-no-stdin.patch57
-rw-r--r--gnu/packages/patches/rcs-5.9.4-noreturn.patch94
-rw-r--r--gnu/packages/patches/sbcl-geco-fix-organism-class.patch13
-rw-r--r--gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch642
-rw-r--r--gnu/packages/patches/sdcc-disable-non-free-code.patch3643
-rw-r--r--gnu/packages/patches/tomb-fix-errors-on-open.patch25
-rw-r--r--gnu/packages/patches/transmission-honor-localedir.patch34
-rw-r--r--gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch6
-rw-r--r--gnu/packages/patches/ungoogled-chromium-extension-search-path.patch28
-rw-r--r--gnu/packages/patches/ungoogled-chromium-system-nspr.patch22
-rw-r--r--gnu/packages/patches/xpra-4.0.4-norequests.patch39
-rw-r--r--gnu/packages/patches/yggdrasil-extra-config.patch86
-rw-r--r--gnu/packages/patchutils.scm54
-rw-r--r--gnu/packages/pdf.scm133
-rw-r--r--gnu/packages/perl.scm44
-rw-r--r--gnu/packages/photo.scm4
-rw-r--r--gnu/packages/php.scm15
-rw-r--r--gnu/packages/piet.scm121
-rw-r--r--gnu/packages/plotutils.scm4
-rw-r--r--gnu/packages/pretty-print.scm8
-rw-r--r--gnu/packages/prolog.scm4
-rw-r--r--gnu/packages/protobuf.scm7
-rw-r--r--gnu/packages/python-check.scm103
-rw-r--r--gnu/packages/python-compression.scm4
-rw-r--r--gnu/packages/python-crypto.scm94
-rw-r--r--gnu/packages/python-science.scm26
-rw-r--r--gnu/packages/python-web.scm605
-rw-r--r--gnu/packages/python-xyz.scm1171
-rw-r--r--gnu/packages/python.scm34
-rw-r--r--gnu/packages/qt.scm2
-rw-r--r--gnu/packages/radio.scm24
-rw-r--r--gnu/packages/raspberry-pi.scm237
-rw-r--r--gnu/packages/rdesktop.scm2
-rw-r--r--gnu/packages/re2c.scm6
-rw-r--r--gnu/packages/regex.scm5
-rw-r--r--gnu/packages/rpc.scm11
-rw-r--r--gnu/packages/ruby.scm79
-rw-r--r--gnu/packages/rust-apps.scm18
-rw-r--r--gnu/packages/samba.scm63
-rw-r--r--gnu/packages/scheme.scm10
-rw-r--r--gnu/packages/scribus.scm9
-rw-r--r--gnu/packages/sdcc.scm10
-rw-r--r--gnu/packages/security-token.scm31
-rw-r--r--gnu/packages/shells.scm8
-rw-r--r--gnu/packages/shellutils.scm4
-rw-r--r--gnu/packages/simulation.scm18
-rw-r--r--gnu/packages/skarnet.scm5
-rw-r--r--gnu/packages/skribilo.scm24
-rw-r--r--gnu/packages/sphinx.scm13
-rw-r--r--gnu/packages/spice.scm1
-rw-r--r--gnu/packages/ssh.scm76
-rw-r--r--gnu/packages/statistics.scm126
-rw-r--r--gnu/packages/stb.scm21
-rw-r--r--gnu/packages/storage.scm4
-rw-r--r--gnu/packages/syncthing.scm2
-rw-r--r--gnu/packages/telephony.scm4
-rw-r--r--gnu/packages/terminals.scm71
-rw-r--r--gnu/packages/tex.scm59
-rw-r--r--gnu/packages/text-editors.scm11
-rw-r--r--gnu/packages/textutils.scm38
-rw-r--r--gnu/packages/time.scm4
-rw-r--r--gnu/packages/tls.scm64
-rw-r--r--gnu/packages/tmux.scm10
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/version-control.scm133
-rw-r--r--gnu/packages/video.scm184
-rw-r--r--gnu/packages/vim.scm53
-rw-r--r--gnu/packages/virtualization.scm86
-rw-r--r--gnu/packages/visidata.scm40
-rw-r--r--gnu/packages/vpn.scm21
-rw-r--r--gnu/packages/web-browsers.scm168
-rw-r--r--gnu/packages/web.scm108
-rw-r--r--gnu/packages/webkit.scm6
-rw-r--r--gnu/packages/wine.scm89
-rw-r--r--gnu/packages/wm.scm88
-rw-r--r--gnu/packages/xdisorg.scm81
-rw-r--r--gnu/packages/xfce.scm67
-rw-r--r--gnu/packages/xml.scm25
-rw-r--r--gnu/packages/xorg.scm35
-rw-r--r--gnu/packages/zile.scm6
-rw-r--r--gnu/services/audio.scm33
-rw-r--r--gnu/services/base.scm126
-rw-r--r--gnu/services/cups.scm3
-rw-r--r--gnu/services/databases.scm89
-rw-r--r--gnu/services/desktop.scm36
-rw-r--r--gnu/services/dns.scm2
-rw-r--r--gnu/services/ganeti.scm2
-rw-r--r--gnu/services/guix.scm32
-rw-r--r--gnu/services/monitoring.scm7
-rw-r--r--gnu/services/networking.scm117
-rw-r--r--gnu/services/sddm.scm2
-rw-r--r--gnu/services/shepherd.scm13
-rw-r--r--gnu/services/virtualization.scm11
-rw-r--r--gnu/services/vpn.scm6
-rw-r--r--gnu/services/web.scm90
-rw-r--r--gnu/system.scm40
-rw-r--r--gnu/system/examples/yggdrasil.tmpl60
-rw-r--r--gnu/system/image.scm29
-rw-r--r--gnu/system/images/pinebook-pro.scm66
-rw-r--r--gnu/system/linux-initrd.scm11
-rw-r--r--gnu/system/mapped-devices.scm199
-rw-r--r--gnu/system/uuid.scm8
-rw-r--r--gnu/system/vm.scm92
-rw-r--r--gnu/tests/audio.scm13
-rw-r--r--gnu/tests/base.scm2
-rw-r--r--gnu/tests/databases.scm49
-rw-r--r--gnu/tests/docker.scm11
-rw-r--r--gnu/tests/guix.scm1
-rw-r--r--gnu/tests/install.scm105
-rw-r--r--gnu/tests/mail.scm3
-rw-r--r--gnu/tests/monitoring.scm4
-rw-r--r--gnu/tests/nfs.scm2
-rw-r--r--gnu/tests/reconfigure.scm4
-rw-r--r--gnu/tests/version-control.scm6
-rw-r--r--gnu/tests/web.scm4
348 files changed, 23793 insertions, 7535 deletions
diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm
index 2eebb8e9d9..6d7352ddd2 100644
--- a/gnu/bootloader.scm
+++ b/gnu/bootloader.scm
@@ -22,6 +22,8 @@
 
 (define-module (gnu bootloader)
   #:use-module (guix discovery)
+  #:use-module (guix gexp)
+  #:use-module (guix profiles)
   #:use-module (guix records)
   #:use-module (guix ui)
   #:use-module (srfi srfi-1)
@@ -66,7 +68,9 @@
             bootloader-configuration-additional-configuration
 
             %bootloaders
-            lookup-bootloader-by-name))
+            lookup-bootloader-by-name
+
+            efi-bootloader-chain))
 
 
 ;;;
@@ -227,3 +231,122 @@ record."
               (eq? name (bootloader-name bootloader)))
             (force %bootloaders))
       (leave (G_ "~a: no such bootloader~%") name)))
+
+(define (efi-bootloader-profile files bootloader-package hooks)
+  "Creates a profile with BOOTLOADER-PACKAGE and a directory collection/ with
+links to additional FILES from the store.  This collection is meant to be used
+by the bootloader installer.
+
+FILES is a list of file or directory names from the store, which will be
+symlinked into the collection/ directory.  If a directory name ends with '/',
+then the directory content instead of the directory itself will be symlinked
+into the collection/ directory.
+
+FILES may contain file like objects produced by functions like plain-file,
+local-file, etc., or package contents produced with file-append.
+
+HOOKS lists additional hook functions to modify the profile."
+  (define (bootloader-collection manifest)
+    (define build
+        (with-imported-modules '((guix build utils)
+                                 (ice-9 ftw)
+                                 (srfi srfi-1)
+                                 (srfi srfi-26))
+          #~(begin
+            (use-modules ((guix build utils)
+                          #:select (mkdir-p strip-store-file-name))
+                         ((ice-9 ftw)
+                          #:select (scandir))
+                         ((srfi srfi-1)
+                          #:select (append-map every remove))
+                         ((srfi srfi-26)
+                          #:select (cut)))
+            (define (symlink-to file directory transform)
+              "Creates a symlink to FILE named (TRANSFORM FILE) in DIRECTORY."
+              (symlink file (string-append directory "/" (transform file))))
+            (define (directory-content directory)
+              "Creates a list of absolute path names inside DIRECTORY."
+              (map (lambda (name)
+                     (string-append directory name))
+                   (or (scandir directory (lambda (name)
+                                            (not (member name '("." "..")))))
+                       '())))
+            (define name-ends-with-/? (cut string-suffix? "/" <>))
+            (define (name-is-store-entry? name)
+              "Return #t if NAME is a direct store entry and nothing inside."
+              (not (string-index (strip-store-file-name name) #\/)))
+            (let* ((collection (string-append #$output "/collection"))
+                   (files '#$files)
+                   (directories (filter name-ends-with-/? files))
+                   (names-from-directories
+                    (append-map (lambda (directory)
+                                  (directory-content directory))
+                                directories))
+                   (names (append names-from-directories
+                                  (remove name-ends-with-/? files))))
+              (mkdir-p collection)
+              (if (every file-exists? names)
+                  (begin
+                    (for-each (lambda (name)
+                               (symlink-to name collection
+                                            (if (name-is-store-entry? name)
+                                                strip-store-file-name
+                                                basename)))
+                              names)
+                    #t)
+                  #f)))))
+
+    (gexp->derivation "bootloader-collection"
+                      build
+                      #:local-build? #t
+                      #:substitutable? #f
+                      #:properties
+                      `((type . profile-hook)
+                        (hook . bootloader-collection))))
+
+  (profile (content (packages->manifest (list bootloader-package)))
+           (name "bootloader-profile")
+           (hooks (append (list bootloader-collection) hooks))
+           (locales? #f)
+           (allow-collisions? #f)
+           (relative-symlinks? #f)))
+
+(define* (efi-bootloader-chain files
+                               final-bootloader
+                               #:key
+                               (hooks '())
+                               installer)
+  "Define a bootloader chain with FINAL-BOOTLOADER as the final bootloader and
+certain directories and files from the store given in the list of FILES.
+
+FILES may contain file like objects produced by functions like plain-file,
+local-file, etc., or package contents produced with file-append.  They will be
+collected inside a directory collection/ inside a generated bootloader profile,
+which will be passed to the INSTALLER.
+
+If a directory name in FILES ends with '/', then the directory content instead
+of the directory itself will be symlinked into the collection/ directory.
+
+The procedures in the HOOKS list can be used to further modify the bootloader
+profile.  It is possible to pass a single function instead of a list.
+
+If the INSTALLER argument is used, then this function will be called to install
+the bootloader.  Otherwise the installer of the FINAL-BOOTLOADER will be called."
+  (let* ((final-installer (or installer
+                              (bootloader-installer final-bootloader)))
+         (profile (efi-bootloader-profile files
+                                          (bootloader-package final-bootloader)
+                                          (if (list? hooks)
+                                              hooks
+                                              (list hooks)))))
+    (bootloader
+     (inherit final-bootloader)
+     (package profile)
+     (installer
+      #~(lambda (bootloader target mount-point)
+          (#$final-installer bootloader target mount-point)
+          (copy-recursively
+           (string-append bootloader "/collection")
+           (string-append mount-point target)
+           #:follow-symlinks? #t
+           #:log (%make-void-port "w")))))))
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 611580a350..af7b7561ff 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -142,6 +142,24 @@ file with the resolution provided in CONFIG."
             (image->png image #:width width #:height height))
            (_ #f)))))
 
+(define (grub-locale-directory grub)
+  "Generate a directory with the locales from GRUB."
+  (define builder
+    #~(begin
+        (use-modules (ice-9 ftw))
+        (let ((locale (string-append #$grub "/share/locale"))
+              (out    #$output))
+          (mkdir out)
+          (chdir out)
+          (for-each (lambda (lang)
+                      (let ((file (string-append locale "/" lang
+                                                 "/LC_MESSAGES/grub.mo"))
+                            (dest (string-append lang ".mo")))
+                        (when (file-exists? file)
+                          (copy-file file dest))))
+                    (scandir locale)))))
+  (computed-file "grub-locales" builder))
+
 (define* (eye-candy config store-device store-mount-point
                     #:key store-directory-prefix port)
   "Return a gexp that writes to PORT (a port-valued gexp) the 'grub.cfg' part
@@ -171,9 +189,11 @@ fi~%"
                      (symbol->string (assoc-ref colors 'bg)))))
 
   (define font-file
-    (normalize-file (file-append grub "/share/grub/unicode.pf2")
-                    store-mount-point
-                    store-directory-prefix))
+    (let* ((bootloader (bootloader-configuration-bootloader config))
+           (grub (bootloader-package bootloader)))
+      (normalize-file (file-append grub "/share/grub/unicode.pf2")
+                      store-mount-point
+                      store-directory-prefix)))
 
   (define image
     (normalize-file (grub-background-image config)
@@ -402,18 +422,33 @@ menuentry ~s {
                  #:port #~port)))
 
   (define locale-config
-    #~(let ((locale #$(and locale
-                           (locale-definition-source
-                            (locale-name->definition locale)))))
-        (when locale
-          (format port "\
+    (let* ((entry (first all-entries))
+           (device (menu-entry-device entry))
+           (mount-point (menu-entry-device-mount-point entry))
+           (bootloader (bootloader-configuration-bootloader config))
+           (grub (bootloader-package bootloader)))
+      #~(let ((locale #$(and locale
+                             (locale-definition-source
+                              (locale-name->definition locale))))
+              (locales #$(and locale
+                              (normalize-file (grub-locale-directory grub)
+                                              mount-point
+                                              store-directory-prefix))))
+          (when locale
+            (format port "\
 # Localization configuration.
-if search --file --set boot_partition /grub/grub.cfg; then
-    set locale_dir=(${boot_partition})/grub/locale
-else
-    set locale_dir=/boot/grub/locale
-fi
-set lang=~a~%" locale))))
+~asearch --file --set ~a/en@quot.mo
+set locale_dir=~a
+set lang=~a~%"
+                    ;; Skip the search if there is an image, as it has already
+                    ;; been performed by eye-candy and traversing the store is
+                    ;; an expensive operation.
+                    #$(if (grub-theme-image (bootloader-theme config))
+                          "# "
+                          "")
+                    locales
+                    locales
+                    locale)))))
 
   (define keyboard-layout-config
     (let* ((layout (bootloader-configuration-keyboard-layout config))
@@ -421,11 +456,12 @@ set lang=~a~%" locale))))
                     (bootloader-configuration-bootloader config)))
            (keymap* (and layout
                          (keyboard-layout-file layout #:grub grub)))
+           (entry (first all-entries))
+           (device (menu-entry-device entry))
+           (mount-point (menu-entry-device-mount-point entry))
            (keymap (and keymap*
-                        (if store-directory-prefix
-                            #~(string-append #$store-directory-prefix
-                                             #$keymap*)
-                            keymap*))))
+                        (normalize-file keymap* mount-point
+                                        store-directory-prefix))))
       #~(when #$keymap
           (format port "\
 insmod keylayouts
@@ -537,21 +573,24 @@ fi~%"))))
 
 (define install-grub-efi
   #~(lambda (bootloader efi-dir mount-point)
-      ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the
-      ;; system whose root is mounted at MOUNT-POINT.
-      (let ((grub-install (string-append bootloader "/sbin/grub-install"))
-            (install-dir (string-append mount-point "/boot"))
-            ;; When installing Guix, it's common to mount EFI-DIR below
-            ;; MOUNT-POINT rather than /boot/efi on the live image.
-            (target-esp (if (file-exists? (string-append mount-point efi-dir))
-                            (string-append mount-point efi-dir)
-                            efi-dir)))
-        ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or
-        ;; root partition.
-        (setenv "GRUB_ENABLE_CRYPTODISK" "y")
-        (invoke/quiet grub-install "--boot-directory" install-dir
-                      "--bootloader-id=Guix"
-                      "--efi-directory" target-esp))))
+      ;; There is nothing useful to do when called in the context of a disk
+      ;; image generation.
+      (when efi-dir
+        ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the
+        ;; system whose root is mounted at MOUNT-POINT.
+        (let ((grub-install (string-append bootloader "/sbin/grub-install"))
+              (install-dir (string-append mount-point "/boot"))
+              ;; When installing Guix, it's common to mount EFI-DIR below
+              ;; MOUNT-POINT rather than /boot/efi on the live image.
+              (target-esp (if (file-exists? (string-append mount-point efi-dir))
+                              (string-append mount-point efi-dir)
+                              efi-dir)))
+          ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or
+          ;; root partition.
+          (setenv "GRUB_ENABLE_CRYPTODISK" "y")
+          (invoke/quiet grub-install "--boot-directory" install-dir
+                        "--bootloader-id=Guix"
+                        "--efi-directory" target-esp)))))
 
 (define (install-grub-efi-netboot subdir)
   "Define a grub-efi-netboot bootloader installer for installation in SUBDIR,
diff --git a/gnu/build/bootloader.scm b/gnu/build/bootloader.scm
index 5ec839f902..3916930c89 100644
--- a/gnu/build/bootloader.scm
+++ b/gnu/build/bootloader.scm
@@ -38,10 +38,13 @@
     (lambda (input)
       (let ((bv (get-bytevector-n input size)))
         (call-with-port
+         ;; Do not use "call-with-output-file" that would truncate the file.
          (open-file-output-port device
-                                (file-options no-truncate no-create)
+                                (file-options no-truncate no-fail)
                                 (buffer-mode block)
-                                (native-transcoder))
+                                ;; Use the binary-friendly ISO-8859-1
+                                ;; encoding.
+                                (make-transcoder (latin-1-codec)))
          (lambda (output)
            (seek output offset SEEK_SET)
            (put-bytevector output bv)))))))
diff --git a/gnu/build/chromium-extension.scm b/gnu/build/chromium-extension.scm
new file mode 100644
index 0000000000..d65df09f37
--- /dev/null
+++ b/gnu/build/chromium-extension.scm
@@ -0,0 +1,192 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu build chromium-extension)
+  #:use-module (gcrypt base16)
+  #:use-module ((gcrypt hash) #:prefix hash:)
+  #:use-module (ice-9 iconv)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages chromium)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages xorg)
+  #:use-module (guix build-system trivial)
+  #:export (make-chromium-extension))
+
+;;; Commentary:
+;;;
+;;; Tools to deal with Chromium extensions.
+;;;
+;;; Code:
+
+(define (make-signing-key seed)
+  "Return a derivation for a deterministic PKCS #8 private key using SEED."
+
+  (define sha256sum
+    (bytevector->base16-string (hash:sha256 (string->bytevector seed "UTF-8"))))
+
+  ;; certtool.c wants a 56 byte seed for a 2048 bit key.
+  (define size 2048)
+  (define normalized-seed (string-take sha256sum 56))
+
+  (computed-file (string-append seed "-signing-key.pem")
+                 #~(system* #$(file-append gnutls "/bin/certtool")
+                            "--generate-privkey"
+                            "--key-type=rsa"
+                            "--pkcs8"
+                            ;; Use the provable FIPS-PUB186-4 algorithm for
+                            ;; deterministic results.
+                            "--provable"
+                            "--password="
+                            "--no-text"
+                            (string-append "--bits=" #$(number->string size))
+                            (string-append "--seed=" #$normalized-seed)
+                            "--outfile" #$output)
+                 #:local-build? #t))
+
+(define* (make-crx signing-key package #:optional (package-output "out"))
+  "Create a signed \".crx\" file from the unpacked Chromium extension residing
+in PACKAGE-OUTPUT of PACKAGE.  The extension will be signed with SIGNING-KEY."
+  (define name (package-name package))
+  (define version (package-version package))
+
+  (with-imported-modules '((guix build utils))
+    (computed-file
+     (string-append name "-" version ".crx")
+     #~(begin
+         ;; This is not great.  We pull Xorg and Chromium just to Zip and
+         ;; sign an extension.  This should be implemented with something
+         ;; lighter.  (TODO: where is the CRXv3 documentation..?)
+         (use-modules (guix build utils))
+         (let ((chromium #$(file-append ungoogled-chromium "/bin/chromium"))
+               (xvfb #$(file-append xorg-server "/bin/Xvfb"))
+               (packdir "/tmp/extension"))
+           (mkdir-p (dirname packdir))
+           (copy-recursively (ungexp package package-output) packdir)
+           (system (string-append xvfb " :1 &"))
+           (setenv "DISPLAY" ":1")
+           (sleep 2)                    ;give Xorg some time to initialize...
+           ;; Chromium stores the current time in the .crx Zip archive.
+           ;; Use a fixed timestamp for deterministic behavior.
+           ;; FIXME (core-updates): faketime is missing an absolute reference
+           ;; to 'date', hence the need to set PATH.
+           (setenv "PATH" #$(file-append coreutils "/bin"))
+           (invoke #$(file-append libfaketime "/bin/faketime")
+                   "2000-01-01 00:00:00"
+                   chromium
+                   "--user-data-dir=/tmp/signing-profile"
+                   (string-append "--pack-extension=" packdir)
+                   (string-append "--pack-extension-key=" #$signing-key))
+           (copy-file (string-append packdir ".crx") #$output)))
+     #:local-build? #t)))
+
+(define* (crx->chromium-json crx version)
+  "Return a derivation that creates a Chromium JSON settings file for the
+extension given as CRX.  VERSION is used to signify the CRX version, and
+must match the version listed in the extension manifest.json."
+  ;; See chrome/browser/extensions/external_provider_impl.cc and
+  ;; extensions/common/extension.h for documentation on the JSON format.
+  (computed-file "extension.json"
+                 #~(call-with-output-file #$output
+                     (lambda (port)
+                       (format port "{
+  \"external_crx\": \"~a\",
+  \"external_version\": \"~a\"
+}
+"
+                               #$crx #$version)))
+                 #:local-build? #t))
+
+
+(define (signing-key->public-der key)
+  "Return a derivation for a file containing the public key of KEY in DER
+format."
+  (computed-file "der"
+                 #~(system* #$(file-append gnutls "/bin/certtool")
+                            "--load-privkey" #$key
+                            "--pubkey-info"
+                            "--outfile" #$output
+                            "--outder")
+                 #:local-build? #t))
+
+(define (chromium-json->profile-object json signing-key)
+  "Return a derivation that installs JSON to the directory searched by
+Chromium, using a file name (aka extension ID) derived from SIGNING-KEY."
+  (define der (signing-key->public-der signing-key))
+
+  (with-extensions (list guile-gcrypt)
+    (with-imported-modules '((guix build utils))
+      (computed-file
+       "chromium-extension"
+       #~(begin
+           (use-modules (guix build utils)
+                        (gcrypt base16)
+                        (gcrypt hash))
+           (define (base16-string->chromium-base16 str)
+             ;; Translate STR, a hexadecimal string, to a Chromium-style
+             ;; representation using the letters a-p (where a=0, p=15).
+             (define s1 "0123456789abcdef")
+             (define s2 "abcdefghijklmnop")
+             (let loop ((chars (string->list str))
+                        (converted '()))
+               (if (null? chars)
+                   (list->string (reverse converted))
+                   (loop (cdr chars)
+                         (cons (string-ref s2 (string-index s1 (car chars)))
+                               converted)))))
+
+           (let* ((checksum (bytevector->base16-string (file-sha256 #$der)))
+                  (file-name (base16-string->chromium-base16
+                              (string-take checksum 32)))
+                  (extension-directory (string-append #$output
+                                                      "/share/chromium/extensions")))
+             (mkdir-p extension-directory)
+             (symlink #$json (string-append extension-directory "/"
+                                            file-name ".json"))))
+       #:local-build? #t))))
+
+(define* (make-chromium-extension p #:optional (output "out"))
+  "Create a Chromium extension from package P and return a package that,
+when installed, will make the extension contained in P available as a
+Chromium browser extension.  OUTPUT specifies which output of P to use."
+  (let* ((pname (package-name p))
+         (version (package-version p))
+         (signing-key (make-signing-key pname)))
+    (package
+      (inherit p)
+      (name (string-append pname "-chromium"))
+      (source #f)
+      (build-system trivial-build-system)
+      (native-inputs '())
+      (inputs
+       `(("extension" ,(chromium-json->profile-object
+                        (crx->chromium-json (make-crx signing-key p output)
+                                            version)
+                        signing-key))))
+      (propagated-inputs '())
+      (outputs '("out"))
+      (arguments
+       '(#:modules ((guix build utils))
+         #:builder
+         (begin
+           (use-modules (guix build utils))
+           (copy-recursively (assoc-ref %build-inputs "extension")
+                             (assoc-ref %outputs "out"))))))))
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 734d648575..b762e82ad2 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -1,9 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 David C. Trudgian <dave@trudgian.net>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
@@ -181,6 +181,98 @@ if DEVICE does not contain an ext2 file system."
 
 
 ;;;
+;;; Linux swap.
+;;;
+
+;; Linux "swap space" is not a file system but it has a UUID and volume name,
+;; like actual file systems, and we want to be able to look up swap partitions
+;; by UUID and by label.
+
+(define %linux-swap-magic
+  (string->utf8 "SWAPSPACE2"))
+
+;; Like 'PAGE_SIZE' in Linux, arch/x86/include/asm/page.h.
+;; XXX: This is always 4K on x86_64, i386, and ARMv7.  However, on AArch64,
+;; this is determined by 'CONFIG_ARM64_PAGE_SHIFT' in the kernel, which is 12
+;; by default (4K) but can be 14 or 16.
+(define %page-size 4096)
+
+(define (linux-swap-superblock? sblock)
+  "Return #t when SBLOCK is an linux-swap superblock."
+  (and (= (bytevector-length sblock) %page-size)
+       (bytevector=? (sub-bytevector sblock (- %page-size 10) 10)
+                     %linux-swap-magic)))
+
+(define (read-linux-swap-superblock device)
+  "Return the raw contents of DEVICE's linux-swap superblock as a bytevector, or #f
+if DEVICE does not contain an linux-swap file system."
+  (read-superblock device 0 %page-size linux-swap-superblock?))
+
+;; See 'union swap_header' in 'include/linux/swap.h'.
+
+(define (linux-swap-superblock-uuid sblock)
+  "Return the UUID of Linux-swap superblock SBLOCK as a 16-byte bytevector."
+  (sub-bytevector sblock (+ 1024 4 4 4) 16))
+
+(define (linux-swap-superblock-volume-name sblock)
+  "Return the label of Linux-swap superblock SBLOCK as a string."
+  (null-terminated-latin1->string
+   (sub-bytevector sblock (+ 1024 4 4 4 16) 16)))
+
+
+;;;
+;;; Bcachefs file systems.
+;;;
+
+;; <https://evilpiepirate.org/git/bcachefs-tools.git/tree/libbcachefs/bcachefs_format.h>
+
+(define-syntax %bcachefs-endianness
+  ;; Endianness of bcachefs file systems.
+  (identifier-syntax (endianness little)))
+
+(define (bcachefs-superblock? sblock)
+  "Return #t when SBLOCK is an bcachefs superblock."
+  (bytevector=? (sub-bytevector sblock 24 16)
+                #vu8(#xc6 #x85 #x73 #xf6 #x4e #x1a #x45 #xca
+                     #x82 #x65 #xf5 #x7f #x48 #xba #x6d #x81)))
+
+(define (read-bcachefs-superblock device)
+  "Return the raw contents of DEVICE's bcachefs superblock as a bytevector, or #f
+if DEVICE does not contain a bcachefs file system."
+  ;; We completely ignore the back-up superblock & any checksum errors.
+  ;; Superblock field names, with offset & length respectively, in bytes:
+  ;;  0 16 bch_csum
+  ;; 16  8 version
+  ;; 24 16 magic
+  ;; 40 16 uuid ← ‘internal UUID’, you probably don't want this
+  ;; 56 16 user_uuid ← ‘external UUID’, the one by which to mount
+  ;; 72 32 label
+  ;; … there are more & the superblock is extensible, but we don't care yet.
+  (read-superblock device 4096 104 bcachefs-superblock?))
+
+(define (bcachefs-superblock-external-uuid sblock)
+  "Return the external UUID of bcachefs superblock SBLOCK as a 16-byte
+bytevector."
+  (sub-bytevector sblock 56 16))
+
+(define (bcachefs-superblock-volume-name sblock)
+  "Return the volume name of SBLOCK as a string of at most 32 characters, or
+#f if SBLOCK has no volume name."
+  (null-terminated-latin1->string (sub-bytevector sblock 72 32)))
+
+(define (check-bcachefs-file-system device)
+  "Return the health of a bcachefs file system on DEVICE."
+  (match (status:exit-val
+          (apply system* "bcachefs" "fsck" "-p" "-v"
+                 ;; Make each multi-device member a separate argument.
+                 (string-split device #\:)))
+    (0 'pass)
+    (1 'errors-corrected)
+    (2 'reboot-required)
+    (_ 'fatal-error)))
+
+
+;;;
 ;;; Btrfs file systems.
 ;;;
 
@@ -596,6 +688,10 @@ partition field reader that returned a value."
                                 iso9660-superblock-volume-name)
         (partition-field-reader read-ext2-superblock
                                 ext2-superblock-volume-name)
+        (partition-field-reader read-linux-swap-superblock
+                                linux-swap-superblock-volume-name)
+        (partition-field-reader read-bcachefs-superblock
+                                bcachefs-superblock-volume-name)
         (partition-field-reader read-btrfs-superblock
                                 btrfs-superblock-volume-name)
         (partition-field-reader read-fat32-superblock
@@ -612,6 +708,10 @@ partition field reader that returned a value."
                                 iso9660-superblock-uuid)
         (partition-field-reader read-ext2-superblock
                                 ext2-superblock-uuid)
+        (partition-field-reader read-linux-swap-superblock
+                                linux-swap-superblock-uuid)
+        (partition-field-reader read-bcachefs-superblock
+                                bcachefs-superblock-external-uuid)
         (partition-field-reader read-btrfs-superblock
                                 btrfs-superblock-uuid)
         (partition-field-reader read-fat32-superblock
@@ -719,6 +819,7 @@ containing ':/')."
   (define check-procedure
     (cond
      ((string-prefix? "ext" type) check-ext2-file-system)
+     ((string-prefix? "bcachefs" type) check-bcachefs-file-system)
      ((string-prefix? "btrfs" type) check-btrfs-file-system)
      ((string-suffix? "fat" type) check-fat-file-system)
      ((string-prefix? "jfs" type) check-jfs-file-system)
diff --git a/gnu/build/image.scm b/gnu/build/image.scm
index ff63039c16..463b7fccc7 100644
--- a/gnu/build/image.scm
+++ b/gnu/build/image.scm
@@ -118,16 +118,16 @@ ROOT directory to populate the image."
      ((string=? type "vfat")
       (make-vfat-image partition target root))
      (else
-      (format (current-error-port)
-              "Unsupported partition type~%.")))))
+      (raise (condition
+              (&message
+               (message "unsupported partition type"))))))))
 
 (define (convert-disk-image image format output)
   "Convert IMAGE to OUTPUT according to the given FORMAT."
   (case format
     ((compressed-qcow2)
-     (begin
-       (invoke "qemu-img" "convert" "-c" "-f" "raw"
-               "-O" "qcow2" image output)))
+     (invoke "qemu-img" "convert" "-c" "-f" "raw"
+             "-O" "qcow2" image output))
     (else
      (copy-file image output))))
 
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 32e3536039..bfaac9ec1f 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;;
@@ -110,6 +111,58 @@ OPTION doesn't appear in ARGUMENTS."
                        (substring arg (+ 1 (string-index arg #\=)))))
                 arguments)))
 
+(define (resume-if-hibernated device)
+  "Resume from hibernation if possible.  This is safe ONLY if no on-disk file
+systems have been mounted; calling it later risks severe file system corruption!
+See <Documentation/swsusp.txt> in the kernel source directory.  This is the
+caller's responsibility, as is catching exceptions if resumption was supposed to
+happen but didn't.
+
+Resume only from DEVICE if it's a string.  If it's #f, use the kernel's default
+hibernation device (CONFIG_PM_STD_PARTITION).  Never return if resumption
+succeeds.  Return nothing otherwise.  The kernel logs any details to dmesg."
+
+  (define (string->major:minor string)
+    "Return a string with MAJOR:MINOR numbers of the device specified by STRING"
+
+    ;; The "resume=" kernel command-line option always provides a string, which
+    ;; can represent a device, a UUID, or a label.  Check for all three.
+    (let* ((spec (cond ((string-prefix? "/" string) string)
+                       ((uuid string) => identity)
+                       (else (file-system-label string))))
+           ;; XXX The kernel's swsusp_resume_can_resume() waits if ‘resumewait’
+           ;; is found on the command line; our canonicalize-device-spec gives
+           ;; up after 20 seconds.  We could emulate the former by looping…
+           (device (canonicalize-device-spec spec))
+           (rdev (stat:rdev (stat device)))
+           ;; For backwards compatibility, device numbering is a baroque affair.
+           ;; This is the full 64-bit scheme used by glibc's <sys/sysmacros.h>.
+           (major (logior (ash (logand #x00000000000fff00 rdev) -8)
+                          (ash (logand #xfffff00000000000 rdev) -32)))
+           (minor (logior      (logand #x00000000000000ff rdev)
+                          (ash (logand #x00000ffffff00000 rdev) -12))))
+      (format #f "~a:~a" major minor)))
+
+  ;; Write the resume DEVICE to this magic file, using the MAJOR:MINOR device
+  ;; numbers if possible.  The kernel will immediately try to resume from it.
+  (let ((resume "/sys/power/resume"))
+    (when (file-exists? resume)         ; this kernel supports hibernation
+      ;; Honour the kernel's default device (only) if none other was given.
+      (let ((major:minor (if device
+                             (or (false-if-exception (string->major:minor
+                                                      device))
+                                 ;; We can't parse it.  Maybe the kernel can.
+                                 device)
+                             (let ((default (call-with-input-file resume
+                                              read-line)))
+                               ;; Don't waste time echoing 0:0 to /sys.
+                               (if (string=? "0:0" default)
+                                   #f
+                                   default)))))
+        (when major:minor
+          (call-with-output-file resume ; may throw an ‘Invalid argument’
+            (cut display major:minor <>))))))) ; may never return
+
 (define* (make-disk-device-nodes base major #:optional (minor 0))
   "Make the block device nodes around BASE (something like \"/root/dev/sda\")
 with the given MAJOR number, starting with MINOR."
@@ -507,6 +560,12 @@ upon error."
         (load-linux-modules-from-directory linux-modules
                                            linux-module-directory)
 
+        (unless (member "noresume" args)
+          ;; Try to resume immediately after loading (storage) modules
+          ;; but before any on-disk file systems have been mounted.
+          (false-if-exception           ; failure is not fatal
+           (resume-if-hibernated (find-long-option "resume" args))))
+
         (when keymap-file
           (let ((status (system* "loadkeys" keymap-file)))
             (unless (zero? status)
diff --git a/gnu/build/linux-initrd.scm b/gnu/build/linux-initrd.scm
index ea7de58553..99796adba6 100644
--- a/gnu/build/linux-initrd.scm
+++ b/gnu/build/linux-initrd.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,8 +39,9 @@
                              #:key
                              (compress? #t)
                              (gzip "gzip"))
-  "Write a cpio archive containing DIRECTORY to file OUTPUT.  When
-COMPRESS? is true, compress it using GZIP.  On success, return OUTPUT."
+  "Write a cpio archive containing DIRECTORY to file OUTPUT, with reset
+timestamps in the archive.  When COMPRESS? is true, compress it using GZIP.
+On success, return OUTPUT."
 
   ;; Note: as per `ramfs-rootfs-initramfs.txt', always add directory entries
   ;; before the files that are inside of it: "The Linux kernel cpio
@@ -141,12 +142,6 @@ REFERENCES-GRAPHS."
     (symlink (string-append guile "/bin/guile") "proc/self/exe")
     (readlink "proc/self/exe")
 
-    ;; Reset the timestamps of all the files that will make it in the initrd.
-    (for-each (lambda (file)
-                (unless (eq? 'symlink (stat:type (lstat file)))
-                  (utime file 0 0 0 0)))
-              (find-files "." ".*"))
-
     (write-cpio-archive output "." #:gzip gzip))
 
   ;; Make sure directories are writable so we can delete files.
diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index 91646288d5..d7b858dea4 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -21,7 +21,6 @@
   #:use-module (gnu system file-systems)
   #:use-module (gnu build linux-container)
   #:use-module (guix build utils)
-  #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
@@ -199,11 +198,24 @@ namespace, in addition to essential bind-mounts such /proc."
   "This is a variant of 'fork+exec-command' procedure, that joins the
 namespaces of process PID beforehand.  If there is no support for containers,
 on Hurd systems for instance, fallback to direct forking."
+  (define (strip-pid args)
+    ;; TODO: Replace with 'strip-keyword-arguments' when that no longer pulls
+    ;; in (guix config).
+    (let loop ((args args)
+               (result '()))
+      (match args
+        (()
+         (reverse result))
+        ((#:pid _ . rest)
+         (loop rest result))
+        ((head . rest)
+         (loop rest (cons head result))))))
+
   (let ((container-support?
          (file-exists? "/proc/self/ns"))
         (fork-proc (lambda ()
                      (apply fork+exec-command command
-                            (strip-keyword-arguments '(#:pid) args)))))
+                            (strip-pid args)))))
     (if container-support?
         (container-excursion* pid fork-proc)
         (fork-proc))))
diff --git a/gnu/ci.scm b/gnu/ci.scm
index bf9952a450..5548d9560e 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2020 Mathieu Othacehe <othacehe@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,6 +58,7 @@
   #:use-module (gnu system install)
   #:use-module (gnu system images hurd)
   #:use-module (gnu system images pine64)
+  #:use-module (gnu system images pinebook-pro)
   #:use-module (gnu tests)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
@@ -205,10 +207,16 @@ SYSTEM."
 
 (define %guix-system-images
   (list hurd-barebones-qcow2-image
-        pine64-barebones-raw-image))
+        pine64-barebones-raw-image
+        pinebook-pro-barebones-raw-image))
+
+(define (hours hours)
+  (* 3600 hours))
 
 (define (image-jobs store system)
-  "Return a list of jobs that build images for SYSTEM."
+  "Return a list of jobs that build images for SYSTEM.  Those jobs are
+expensive in storage and I/O operations, hence their periodicity is limited by
+passing the PERIOD argument."
   (define (->alist drv)
     `((derivation . ,(derivation-file-name drv))
       (log . ,(log-file store (derivation-file-name drv)))
@@ -223,6 +231,7 @@ SYSTEM."
       (long-description . "This is a demo stand-alone image of the GNU
 system.")
       (license . ,(license-name gpl3+))
+      (period . ,(hours 48))
       (max-silent-time . 600)
       (timeout . 3600)
       (home-page . ,%guix-home-page-url)
@@ -321,6 +330,9 @@ system.")
             (set-guile-for-build (default-guile))
             (system-test-value test))))
 
+      ;; Those tests are extremely expensive in I/O operations and storage
+      ;; size, use the "period" attribute to run them with a period of at
+      ;; least 48 hours.
       `((derivation . ,(derivation-file-name drv))
         (log . ,(log-file store (derivation-file-name drv)))
         (outputs . ,(filter-map (lambda (res)
@@ -334,6 +346,7 @@ system.")
                                 (system-test-name test)))
         (long-description . ,(system-test-description test))
         (license . ,(license-name gpl3+))
+        (period . ,(hours 48))
         (max-silent-time . 600)
         (timeout . 3600)
         (home-page . ,%guix-home-page-url)
@@ -372,7 +385,8 @@ system.")
 all its dependencies, and ready to be installed on \"foreign\" distributions.")
       (license . ,(license-name gpl3+))
       (home-page . ,%guix-home-page-url)
-      (maintainers . ("bug-guix@gnu.org"))))
+      (maintainers . ("bug-guix@gnu.org"))
+      (period . ,(hours 24))))
 
   (define (->job name drv)
     (let ((name (symbol-append name (string->symbol ".")
diff --git a/gnu/installer/newt.scm b/gnu/installer/newt.scm
index fdab721b2f..a1cbeca49a 100644
--- a/gnu/installer/newt.scm
+++ b/gnu/installer/newt.scm
@@ -46,6 +46,7 @@
   (newt-init)
   (clear-screen)
   (set-screen-size!)
+  (syslog "Display is ~ax~a.~%" (screen-columns) (screen-rows))
   (push-help-line
    (format #f (G_ "Press <F1> for installation parameters."))))
 
diff --git a/gnu/installer/newt/ethernet.scm b/gnu/installer/newt/ethernet.scm
index ba5e222a37..ecd22efbb2 100644
--- a/gnu/installer/newt/ethernet.scm
+++ b/gnu/installer/newt/ethernet.scm
@@ -77,7 +77,7 @@ connection is pending."
       #:title (G_ "Ethernet connection")
       #:listbox-items services
       #:listbox-item->text ethernet-service->text
-      #:listbox-height (min (+ (length services) 2) 10)
+      #:listbox-height (min (+ (length services) 2) 5)
       #:button-text (G_ "Exit")
       #:button-callback-procedure
       (lambda _
diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm
index 89684c4d8a..7f6dd9f075 100644
--- a/gnu/installer/newt/final.scm
+++ b/gnu/installer/newt/final.scm
@@ -29,6 +29,7 @@
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
+  #:use-module ((ice-9 rdelim) #:select (read-line))
   #:use-module (newt)
   #:export (run-final-page))
 
@@ -39,9 +40,8 @@
       file))
 
 (define* (run-config-display-page #:key locale)
-  (let ((width (%configuration-file-width))
-        (height (nearest-exact-integer
-                 (/ (screen-rows) 2))))
+  (let ((width (max 70 (- (screen-columns) 20)))
+        (height (default-listbox-height)))
     (run-file-textbox-page
      #:info-text (format #f (G_ "\
 We're now ready to proceed with the installation! \
@@ -107,6 +107,19 @@ a specific step, or restart the installer."))
     install-ok?))
 
 (define (run-final-page result prev-steps)
+  (define (wait-for-clients)
+    (unless (null? (current-clients))
+      (syslog "waiting with clients before starting final step~%")
+      (send-to-clients '(starting-final-step))
+      (match (select (current-clients) '() '())
+        (((port _ ...) _ _)
+         (read-line port)))))
+
+  ;; Before generating the configuration file, give clients a chance to do
+  ;; things such as changing the swap partition label.
+  (wait-for-clients)
+
+  (syslog "proceeding with final step~%")
   (let* ((configuration   (format-configuration prev-steps result))
          (user-partitions (result-step result 'partition))
          (locale          (result-step result 'locale))
diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
index 461d5d99c0..4af7143d63 100644
--- a/gnu/installer/newt/network.scm
+++ b/gnu/installer/newt/network.scm
@@ -80,7 +80,7 @@ network devices were found. Do you want to continue anyway?"))
       #:title (G_ "Internet access")
       #:listbox-items items
       #:listbox-item->text technology->text
-      #:listbox-height (min (+ (length items) 2) 10)
+      #:listbox-height (min (+ (length items) 2) 5)
       #:button-text (G_ "Exit")
       #:button-callback-procedure
       (lambda _
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm
index 1d6b9979b4..4209674c28 100644
--- a/gnu/installer/newt/page.scm
+++ b/gnu/installer/newt/page.scm
@@ -32,7 +32,9 @@
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:use-module (newt)
-  #:export (draw-info-page
+  #:export (default-listbox-height
+
+            draw-info-page
             draw-connecting-page
             run-input-page
             run-error-page
@@ -168,6 +170,10 @@ Like 'run-form', return two values: the exit reason, and an \"argument\"."
         (_
          (values reason argument))))))
 
+(define (default-listbox-height)
+  "Return the default listbox height."
+  (max 5 (- (screen-rows) 20)))
+
 (define (draw-info-page text title)
   "Draw an informative page with the given TEXT as content.  Set the title of
 this page to TITLE."
@@ -339,7 +345,8 @@ of the page is set to TITLE."
                                      (info-textbox-width 50)
                                      listbox-items
                                      listbox-item->text
-                                     (listbox-height 20)
+                                     (listbox-height
+                                      (default-listbox-height))
                                      (listbox-default-item #f)
                                      (listbox-allow-multiple? #f)
                                      (sort-listbox-items? #t)
diff --git a/gnu/installer/newt/parameters.scm b/gnu/installer/newt/parameters.scm
index 95112b5780..8fb1aa3abb 100644
--- a/gnu/installer/newt/parameters.scm
+++ b/gnu/installer/newt/parameters.scm
@@ -20,6 +20,7 @@
   #:use-module (gnu installer proxy)
   #:use-module (gnu installer steps)
   #:use-module (gnu installer newt page)
+  #:use-module (guix build syscalls)
   #:use-module (guix i18n)
   #:use-module (ice-9 match)
   #:use-module (newt)
@@ -40,7 +41,8 @@ empty string, proxy usage will be disabled.")
   (let* ((items
           (list
            (cons (G_ "Change keyboard layout") keyboard-layout-selection)
-           (cons (G_ "Configure HTTP proxy") run-proxy-page)))
+           (cons (G_ "Configure HTTP proxy") run-proxy-page)
+           (cons (G_ "Reboot") reboot)))
          (result
           (run-listbox-selection-page
            #:info-text (G_ "Please choose one of the following parameters or \
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index ed38287fe8..81cf68d782 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -25,6 +25,7 @@
   #:use-module (gnu installer newt page)
   #:use-module (gnu installer newt utils)
   #:use-module (guix i18n)
+  #:use-module (ice-9 format)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
@@ -56,11 +57,17 @@
                   #:button-callback-procedure button-exit-action)))
     (car result)))
 
-(define (draw-formatting-page)
+(define (draw-formatting-page partitions)
   "Draw a page asking for confirmation, and then indicating that partitions
 are being formatted."
-  (run-confirmation-page (G_ "We are about to format your hard disk.  All \
-its data will be lost.  Do you wish to continue?")
+  ;; TRANSLATORS: The ~{ and ~} format specifiers are used to iterate the list
+  ;; of device names of the user partitions that will be formatted.
+  (run-confirmation-page (format #f (G_ "We are about to write the configured \
+partition table to the disk and format the partitions listed below.  Their \
+data will be lost.  Do you wish to continue?~%~%~{ - ~a~%~}")
+                                 (map user-partition-file-name
+                                      (filter user-partition-need-formatting?
+                                              partitions)))
                          (G_ "Format disk?")
                          #:exit-button-procedure button-exit-action)
   (draw-info-page
@@ -674,7 +681,7 @@ by pressing the Exit button.~%~%")))
                       (G_ "Guided partitioning")
                       (G_ "Manual partitioning"))
           #:info-textbox-width 76         ;we need a lot of room for INFO-TEXT
-          #:listbox-height 12
+          #:listbox-height (max 5 (- (screen-rows) 30))
           #:listbox-items (disk-items)
           #:listbox-item->text cdr
           #:sort-listbox-items? #f
@@ -773,9 +780,12 @@ by pressing the Exit button.~%~%")))
          (user-partitions (run-page non-install-devices))
          (user-partitions-with-pass (prompt-luks-passwords
                                      user-partitions))
-         (form (draw-formatting-page)))
+         (form (draw-formatting-page user-partitions)))
     ;; Make sure the disks are not in use before proceeding to formatting.
     (free-parted non-install-devices)
     (format-user-partitions user-partitions-with-pass)
+    (syslog "formatted ~a user partitions~%"
+            (length user-partitions-with-pass))
+
     (destroy-form-and-pop form)
     user-partitions))
diff --git a/gnu/installer/newt/services.scm b/gnu/installer/newt/services.scm
index 6d431cb4bb..ae249ba972 100644
--- a/gnu/installer/newt/services.scm
+++ b/gnu/installer/newt/services.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -77,6 +77,7 @@ system.")
 We recommend NetworkManager or Connman for a WiFi-capable laptop; the DHCP \
 client may be enough for a server.")
      #:info-textbox-width 70
+     #:listbox-height 7
      #:listbox-items (filter (lambda (service)
                                (eq? 'network-management
                                     (system-service-type service)))
diff --git a/gnu/installer/newt/welcome.scm b/gnu/installer/newt/welcome.scm
index 1b4b2df816..5f461279e2 100644
--- a/gnu/installer/newt/welcome.scm
+++ b/gnu/installer/newt/welcome.scm
@@ -38,6 +38,9 @@
 (define info-textbox-width (make-parameter 70))
 (define options-listbox-height (make-parameter 5))
 
+(define (display-logo?)
+  (> (screen-rows) 35))
+
 (define* (run-menu-page title info-text logo
                         #:key
                         listbox-items
@@ -55,7 +58,10 @@ we want this page to occupy all the screen space available."
          items))
 
   (let* ((logo-textbox
-          (make-textbox -1 -1 (logo-width) (logo-height) 0))
+          (make-textbox -1 -1
+                        (if (display-logo?) (logo-width) 0)
+                        (if (display-logo?) (logo-height) 0)
+                        0))
          (info-textbox
           (make-reflowed-textbox -1 -1
                                  info-text
diff --git a/gnu/installer/newt/wifi.scm b/gnu/installer/newt/wifi.scm
index 3fd5756b99..f5d8f1fdbf 100644
--- a/gnu/installer/newt/wifi.scm
+++ b/gnu/installer/newt/wifi.scm
@@ -165,7 +165,8 @@ of <service-item> records present in LISTBOX."
 (define service-name-max-length (make-parameter 20))
 
 ;; Height of the listbox displaying wifi services.
-(define wifi-listbox-height (make-parameter 20))
+(define wifi-listbox-height (make-parameter
+                             (default-listbox-height)))
 
 ;; Information textbox width.
 (define info-textbox-width (make-parameter 40))
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index b0c73b837e..9ef263d1f9 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -36,10 +36,12 @@
   #:use-module (guix utils)
   #:use-module (guix i18n)
   #:use-module (parted)
+  #:use-module (ice-9 format)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (rnrs io ports)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
@@ -317,7 +319,7 @@ PARTED-OBJECT field equals PARTITION, return #f if not found."
 fail. See rereadpt function in wipefs.c of util-linux for an explanation."
   ;; Kernel always return EINVAL for BLKRRPART on loopdevices.
   (and (not (string-match "/dev/loop*" file-name))
-       (let loop ((try 4))
+       (let loop ((try 16))
          (usleep 250000)
          (let ((in-use? (device-in-use? file-name)))
            (if (and in-use? (> try 0))
@@ -338,15 +340,12 @@ fail. See rereadpt function in wipefs.c of util-linux for an explanation."
 (define (non-install-devices)
   "Return all the available devices, except the busy one, allegedly the
 install device. DEVICE-IS-BUSY? is a parted call, checking if the device is
-mounted. The install image uses an overlayfs so the install device does not
-appear as mounted and won't be considered as busy. So use also DEVICE-IN-USE?
-from (guix build syscalls) module, who will try to re-read the device's
-partition table to determine whether or not it is already used (like sfdisk
-from util-linux)."
+mounted."
+  ;; FIXME: The install image uses an overlayfs so the install device does not
+  ;; appear as mounted and won't be considered as busy.
   (remove (lambda (device)
             (let ((file-name (device-path device)))
-              (or (device-is-busy? device)
-                  (with-delay-device-in-use? file-name))))
+              (device-is-busy? device)))
           (devices)))
 
 
@@ -526,56 +525,54 @@ determined by MAX-LENGTH-COLUMN procedure."
          (size (user-partition-size user-partition))
          (mount-point (user-partition-mount-point user-partition)))
     `(,@(if has-name?
-            `((name . ,(string-append "Name: " (or name "None"))))
+            `((name . ,(format #f (G_ "Name: ~a")
+                               (or name (G_ "None")))))
             '())
       ,@(if (and has-extended?
                  (freespace-partition? partition)
                  (not (eq? type 'logical)))
-            `((type . ,(string-append "Type: " type-name)))
+            `((type . ,(format #f (G_ "Type: ~a") type-name)))
             '())
       ,@(if (eq? type 'extended)
             '()
-            `((fs-type . ,(string-append "Filesystem type: " fs-type-name))))
+            `((fs-type . ,(format #f (G_ "File system type: ~a")
+                                  fs-type-name))))
       ,@(if (or (eq? type 'extended)
                 (eq? fs-type 'swap)
                 (not has-extended?))
             '()
-            `((bootable . ,(string-append "Bootable flag: "
-                                          (if bootable? "On" "Off")))))
+            `((bootable . ,(format #f (G_ "Bootable flag: ~:[off~;on~]")
+                                   bootable?))))
       ,@(if (and (not has-extended?)
                  (not (eq? fs-type 'swap)))
-            `((esp? . ,(string-append "ESP flag: "
-                                      (if esp? "On" "Off"))))
+            `((esp? . ,(format #f (G_ "ESP flag: ~:[off~;on~]") esp?)))
             '())
       ,@(if (freespace-partition? partition)
             (let ((size-formatted
-                   (or size (unit-format device
+                   (or size (unit-format device   ;XXX: i18n
                                          (partition-length partition)))))
-              `((size . ,(string-append "Size : " size-formatted))))
+              `((size . ,(format #f (G_ "Size: ~a") size-formatted))))
             '())
       ,@(if (or (eq? type 'extended)
                 (eq? fs-type 'swap))
             '()
             `((crypt-label
-               . ,(string-append
-                   "Encryption: "
-                   (if crypt-label
-                       (format #f "Yes (label ~a)" crypt-label)
-                       "No")))))
+               . ,(format #f (G_ "Encryption: ~:[No~a~;Yes (label '~a')~]")
+                          crypt-label (or crypt-label "")))))
       ,@(if (or (freespace-partition? partition)
                 (eq? fs-type 'swap))
             '()
             `((need-formatting?
-               . ,(string-append "Format the partition? : "
-                                 (if need-formatting? "Yes" "No")))))
+               . ,(format #f (G_ "Format the partition? ~:[No~;Yes~]")
+                          need-formatting?))))
       ,@(if (or (eq? type 'extended)
                 (eq? fs-type 'swap))
             '()
             `((mount-point
-               . ,(string-append "Mount point : "
-                                 (or mount-point
-                                     (and esp? (default-esp-mount-point))
-                                     "None"))))))))
+               . ,(format #f (G_ "Mount point: ~a")
+                          (or mount-point
+                              (and esp? (default-esp-mount-point))
+                              (G_ "None")))))))))
 
 
 ;;
@@ -759,11 +756,33 @@ cause them to cross."
                                                       dev-constraint))
               (no-constraint (constraint-any device))
               ;; Try to create a partition with an optimal alignment
-              ;; constraint. If it fails, fallback to creating a partition with
-              ;; no specific constraint.
+              ;; constraint. If it fails, fallback to creating a partition
+              ;; with no specific constraint.
+              (partition-constraint-ok?
+               (disk-add-partition disk partition final-constraint))
+              (partition-no-contraint-ok?
+               (or partition-constraint-ok?
+                   (disk-add-partition disk partition no-constraint)))
               (partition-ok?
-               (or (disk-add-partition disk partition final-constraint)
-                   (disk-add-partition disk partition no-constraint))))
+               (or partition-constraint-ok? partition-no-contraint-ok?)))
+         (syslog "Creating partition:
+~/type: ~a
+~/filesystem-type: ~a
+~/start: ~a
+~/end: ~a
+~/start-range: [~a, ~a]
+~/end-range: [~a, ~a]
+~/constraint: ~a
+~/no-constraint: ~a
+"
+                 partition-type
+                 (filesystem-type-name filesystem-type)
+                 start-sector*
+                 end-sector
+                 (geometry-start start-range) (geometry-end start-range)
+                 (geometry-start end-range) (geometry-end end-range)
+                 partition-constraint-ok?
+                 partition-no-contraint-ok?)
          ;; Set the partition name if supported.
          (when (and partition-ok? has-name? name)
            (partition-set-name partition name))
@@ -911,13 +930,13 @@ exists."
 
     (let* ((start-partition
             (and (not has-extended?)
-                 (not esp-partition)
                  (if (efi-installation?)
-                     (user-partition
-                      (fs-type 'fat32)
-                      (esp? #t)
-                      (size new-esp-size)
-                      (mount-point (default-esp-mount-point)))
+                     (and (not esp-partition)
+                          (user-partition
+                           (fs-type 'fat32)
+                           (esp? #t)
+                           (size new-esp-size)
+                           (mount-point (default-esp-mount-point))))
                      (user-partition
                       (fs-type 'ext4)
                       (bootable? #t)
@@ -1327,7 +1346,12 @@ USER-PARTITIONS, or return nothing."
       ,@(initrd-configuration user-partitions)
       ,@(if (null? swap-devices)
             '()
-            `((swap-devices (list ,@swap-devices))))
+            (let* ((uuids (map (lambda (file)
+                                 (uuid->string (read-partition-uuid file)))
+                               swap-devices)))
+              `((swap-devices (list ,@(map (lambda (uuid)
+                                             `(uuid ,uuid))
+                                           uuids))))))
       ,@(if (null? encrypted-partitions)
             '()
             `((mapped-devices
@@ -1364,9 +1388,12 @@ the devices not to be used before returning."
   (let ((device-file-names (map device-path devices)))
     (for-each force-device-sync devices)
     (for-each (lambda (file-name)
-                (let ((in-use? (with-delay-device-in-use? file-name)))
-                  (and in-use?
-                       (error
-                        (format #f (G_ "Device ~a is still in use.")
-                                file-name)))))
+                (let/time ((time in-use?
+                                 (with-delay-device-in-use? file-name)))
+                  (if in-use?
+                      (error
+                       (format #f (G_ "Device ~a is still in use.")
+                               file-name))
+                      (syslog "Syncing ~a took ~a seconds.~%"
+                              file-name (time-second time)))))
               device-file-names)))
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index 16d74c207f..fdcfb0cb4d 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -50,7 +50,6 @@
 
             %installer-configuration-file
             %installer-target-dir
-            %configuration-file-width
             format-configuration
             configuration->file))
 
@@ -218,7 +217,6 @@ stored in RESULTS. Return #f otherwise."
 
 (define %installer-configuration-file (make-parameter "/mnt/etc/config.scm"))
 (define %installer-target-dir (make-parameter "/mnt"))
-(define %configuration-file-width (make-parameter 79))
 
 (define (format-configuration steps results)
   "Return the list resulting from the application of the procedure defined in
diff --git a/gnu/installer/tests.scm b/gnu/installer/tests.scm
index 58bf0a2700..f318546a2f 100644
--- a/gnu/installer/tests.scm
+++ b/gnu/installer/tests.scm
@@ -286,8 +286,9 @@ instrumented for further testing."
                                edit-configuration-file))
   "Converse over PORT to choose the partitioning method.  When ENCRYPTED? is
 true, choose full-disk encryption with PASSPHRASE as the LUKS passphrase.
-This conversation goes past the final dialog box that shows the configuration
-file, actually starting the installation process."
+This conversation stops when the user partitions have been formatted, right
+before the installer generates the configuration file and shows it in a dialog
+box."
   (converse port
     ((list-selection (title "Partitioning method")
                      (multiple-choices? #f)
@@ -330,15 +331,29 @@ file, actually starting the installation process."
      #t)
     ((info (title "Preparing partitions") _ ...)
      (values))                                    ;nothing to return
-    ((file-dialog (title "Configuration file")
-                  (text _)
-                  (file ,configuration-file))
-     (edit-configuration-file configuration-file))))
+    ((starting-final-step)
+     ;; Do not return anything.  The reply will be sent by
+     ;; 'conclude-installation' and in the meantime the installer just waits
+     ;; for us, giving us a chance to do things such as changing partition
+     ;; UUIDs before it generates the configuration file.
+     (values))))
 
 (define (conclude-installation port)
-  "Conclude the installation by checking over PORT that we get the final
-messages once the 'guix system init' process has completed."
+  "Conclude the installation by checking over PORT that we get the generated
+configuration file, accepting it and starting the installation, and then
+receiving the final messages once the 'guix system init' process has
+completed."
+  ;; Assume the previous message received was 'starting-final-step'; here we
+  ;; send the reply to that message, which lets the installer continue.
+  (write #t port)
+  (newline port)
+  (force-output port)
+
   (converse port
+    ((file-dialog (title "Configuration file")
+                  (text _)
+                  (file ,configuration-file))
+     (edit-configuration-file configuration-file))
     ((pause)                                      ;"Press Enter to continue."
      #t)
     ((installation-complete)                      ;congratulations!
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm
index 5f8fe8ca01..a7fa66a199 100644
--- a/gnu/installer/utils.scm
+++ b/gnu/installer/utils.scm
@@ -22,6 +22,7 @@
   #:use-module (guix build utils)
   #:use-module (guix i18n)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-34)
   #:use-module (ice-9 match)
   #:use-module (ice-9 rdelim)
@@ -36,6 +37,8 @@
 
             syslog-port
             syslog
+            call-with-time
+            let/time
 
             with-server-socket
             current-server-socket
@@ -117,6 +120,17 @@ COMMAND exited successfully, #f otherwise."
 ;;; Logging.
 ;;;
 
+(define (call-with-time thunk kont)
+  "Call THUNK and pass KONT the elapsed time followed by THUNK's return
+values."
+  (let* ((start  (current-time time-monotonic))
+         (result (call-with-values thunk list))
+         (end    (current-time time-monotonic)))
+    (apply kont (time-difference end start) result)))
+
+(define-syntax-rule (let/time ((time result exp)) body ...)
+  (call-with-time (lambda () exp) (lambda (time result) body ...)))
+
 (define (open-syslog-port)
   "Return an open port (a socket) to /dev/log or #f if that wasn't possible."
   (let ((sock (socket AF_UNIX SOCK_DGRAM 0)))
diff --git a/gnu/local.mk b/gnu/local.mk
index 4924c932c6..e05913597f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -20,7 +20,7 @@
 # Copyright © 2018, 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 # Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-# Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+# Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
 # Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
 # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 # Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
@@ -37,6 +37,8 @@
 # Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 # Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 # Copyright © 2020 Martin Becze <mjbecze@riseup.net>
+# Copyright © 2020 Malte Frank Gerdes <mate.f.gerdes@gmail.com>
+# Copyright © 2020 Vinicius Monego <monego@posteo.net>
 #
 # This file is part of GNU Guix.
 #
@@ -110,6 +112,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/boost.scm			\
   %D%/packages/bootloaders.scm			\
   %D%/packages/bootstrap.scm			\
+  %D%/packages/browser-extensions.scm		\
   %D%/packages/build-tools.scm			\
   %D%/packages/busybox.scm			\
   %D%/packages/c.scm				\
@@ -465,6 +468,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/radio.scm			\
   %D%/packages/ragel.scm			\
   %D%/packages/rails.scm			\
+  %D%/packages/raspberry-pi.scm			\
   %D%/packages/ratpoison.scm			\
   %D%/packages/rcm.scm				\
   %D%/packages/rdesktop.scm			\
@@ -650,12 +654,14 @@ GNU_SYSTEM_MODULES =				\
 						\
   %D%/system/images/hurd.scm			\
   %D%/system/images/pine64.scm			\
+  %D%/system/images/pinebook-pro.scm		\
 						\
   %D%/machine.scm				\
 						\
   %D%/build/accounts.scm			\
   %D%/build/activation.scm			\
   %D%/build/bootloader.scm			\
+  %D%/build/chromium-extension.scm		\
   %D%/build/cross-toolchain.scm			\
   %D%/build/image.scm				\
   %D%/build/file-systems.scm			\
@@ -799,14 +805,14 @@ dist_patch_DATA =						\
   %D%/packages/patches/audiofile-CVE-2015-7747.patch		\
   %D%/packages/patches/audiofile-CVE-2018-13440.patch		\
   %D%/packages/patches/audiofile-CVE-2018-17095.patch		\
-  %D%/packages/patches/audiofile-Check-the-number-of-coefficients.patch \
+  %D%/packages/patches/audiofile-check-number-of-coefficients.patch \
   %D%/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch \
   %D%/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch \
-  %D%/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch \
-  %D%/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch \
-  %D%/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch \
-  %D%/packages/patches/audiofile-hurd.patch \
-  %D%/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch \
+  %D%/packages/patches/audiofile-multiply-overflow.patch	\
+  %D%/packages/patches/audiofile-overflow-in-MSADPCM.patch	\
+  %D%/packages/patches/audiofile-division-by-zero.patch 	\
+  %D%/packages/patches/audiofile-hurd.patch 			\
+  %D%/packages/patches/audiofile-function-signature.patch	\
   %D%/packages/patches/automake-skip-amhello-tests.patch	\
   %D%/packages/patches/avahi-localstatedir.patch		\
   %D%/packages/patches/avogadro-boost148.patch			\
@@ -821,11 +827,21 @@ dist_patch_DATA =						\
   %D%/packages/patches/bastet-change-source-of-unordered_set.patch	\
   %D%/packages/patches/bazaar-CVE-2017-14176.patch		\
   %D%/packages/patches/bc-fix-cross-compilation.patch		\
+  %D%/packages/patches/bsd-games-2.17-64bit.patch		\
+  %D%/packages/patches/bsd-games-add-configure-config.patch	\
+  %D%/packages/patches/bsd-games-add-wrapper.patch		\
+  %D%/packages/patches/bsd-games-bad-ntohl-cast.patch		\
+  %D%/packages/patches/bsd-games-dont-install-empty-files.patch	\
+  %D%/packages/patches/bsd-games-gamescreen.h.patch		\
+  %D%/packages/patches/bsd-games-getline.patch			\
+  %D%/packages/patches/bsd-games-null-check.patch		\
+  %D%/packages/patches/bsd-games-number.c-and-test.patch	\
+  %D%/packages/patches/bsd-games-prevent-name-collisions.patch	\
+  %D%/packages/patches/bsd-games-stdio.h.patch			\
   %D%/packages/patches/beancount-disable-googleapis-fonts.patch	\
   %D%/packages/patches/beets-werkzeug-compat.patch		\
   %D%/packages/patches/behave-skip-a-couple-of-tests.patch	\
   %D%/packages/patches/beignet-correct-file-names.patch		\
-  %D%/packages/patches/benchmark-unbundle-googletest.patch	\
   %D%/packages/patches/biber-fix-encoding-write.patch		\
   %D%/packages/patches/biber-sortinithash.patch			\
   %D%/packages/patches/bidiv-update-fribidi.patch		\
@@ -833,7 +849,6 @@ dist_patch_DATA =						\
   %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/bitcoin-core-python-compat.patch		\
   %D%/packages/patches/blender-2.79-gcc8.patch			\
   %D%/packages/patches/blender-2.79-gcc9.patch			\
   %D%/packages/patches/blender-2.79-newer-ffmpeg.patch		\
@@ -921,6 +936,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ecl-16-format-directive-limit.patch	\
   %D%/packages/patches/ecl-16-ignore-stderr-write-error.patch	\
   %D%/packages/patches/ecl-16-libffi.patch			\
+  %D%/packages/patches/eigen-remove-openmp-error-counting.patch	\
   %D%/packages/patches/eigen-stabilise-sparseqr-test.patch	\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
@@ -953,6 +969,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch	\
   %D%/packages/patches/extempore-unbundle-external-dependencies.patch	\
   %D%/packages/patches/extundelete-e2fsprogs-1.44.patch		\
+  %D%/packages/patches/farstream-make.patch                          \
   %D%/packages/patches/fastcap-mulGlobal.patch			\
   %D%/packages/patches/fastcap-mulSetup.patch			\
   %D%/packages/patches/fasthenry-spAllocate.patch		\
@@ -976,6 +993,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/freedink-engine-fix-sdl-hints.patch	\
   %D%/packages/patches/freeimage-unbundle.patch		\
   %D%/packages/patches/fuse-overlapping-headers.patch				\
+  %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch	\
   %D%/packages/patches/ganeti-deterministic-manual.patch	\
   %D%/packages/patches/ganeti-disable-version-symlinks.patch	\
   %D%/packages/patches/ganeti-drbd-compat.patch			\
@@ -998,6 +1016,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch		\
   %D%/packages/patches/gcc-libsanitizer-ustat.patch		\
   %D%/packages/patches/gcc-4.9-libsanitizer-mode-size.patch	\
+  %D%/packages/patches/gcc-6-fix-isl-includes.patch	\
+  %D%/packages/patches/gcc-6-fix-buffer-size.patch	\
   %D%/packages/patches/gcc-6-libsanitizer-mode-size.patch	\
   %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch	\
   %D%/packages/patches/gcc-libvtv-runpath.patch			\
@@ -1020,9 +1040,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-8-strmov-store-file-names.patch	\
   %D%/packages/patches/gcc-9-asan-fix-limits-include.patch	\
   %D%/packages/patches/gcc-9-strmov-store-file-names.patch	\
+  %D%/packages/patches/gdb-hurd.patch				\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
   %D%/packages/patches/gd-brect-bounds.patch			\
-  %D%/packages/patches/gdb-hurd.patch				\
   %D%/packages/patches/gdm-default-session.patch		\
   %D%/packages/patches/genimage-signedness.patch		\
   %D%/packages/patches/geoclue-config.patch			\
@@ -1038,6 +1058,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ghostscript-no-header-id.patch		\
   %D%/packages/patches/ghostscript-no-header-uuid.patch		\
   %D%/packages/patches/ghostscript-no-header-creationdate.patch \
+  %D%/packages/patches/glib-appinfo-watch.patch			\
   %D%/packages/patches/glib-tests-timer.patch			\
   %D%/packages/patches/glibc-CVE-2018-11236.patch		\
   %D%/packages/patches/glibc-CVE-2018-11237.patch		\
@@ -1071,6 +1092,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/glibc-supported-locales.patch     	\
   %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
   %D%/packages/patches/gmp-faulty-test.patch			\
+  %D%/packages/patches/gnash-fix-giflib-version.patch	        \
   %D%/packages/patches/gnome-shell-theme.patch			\
   %D%/packages/patches/gnome-shell-disable-test.patch		\
   %D%/packages/patches/gnome-settings-daemon-gc.patch		\
@@ -1089,7 +1111,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/gpsbabel-qstring.patch     		\
   %D%/packages/patches/grantlee-merge-theme-dirs.patch		\
   %D%/packages/patches/grep-timing-sensitive-test.patch		\
-  %D%/packages/patches/grim-revert-output-rotation.patch	\
   %D%/packages/patches/grocsvs-dont-use-admiral.patch		\
   %D%/packages/patches/gromacs-tinyxml2.patch			\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
@@ -1146,8 +1167,7 @@ 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-6-hotspot-gcc-segfault-workaround.patch  \
-  %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch  \
+  %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch	\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
   %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
   %D%/packages/patches/ilmbase-fix-tests.patch			\
@@ -1185,6 +1205,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
   %D%/packages/patches/libffi-float128-powerpc64le.patch	\
+  %D%/packages/patches/libffi-3.3-powerpc-fixes.patch		\
   %D%/packages/patches/libvirt-create-machine-cgroup.patch	\
   %D%/packages/patches/libziparchive-add-includes.patch		\
   %D%/packages/patches/localed-xorg-keyboard.patch		\
@@ -1200,6 +1221,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
   %D%/packages/patches/kpackage-allow-external-paths.patch	\
+  %D%/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch \
   %D%/packages/patches/kmplayer-aarch64.patch			\
   %D%/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch	\
   %D%/packages/patches/kobodeluxe-paths.patch			\
@@ -1292,6 +1314,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/lrcalc-includes.patch    		\
   %D%/packages/patches/lrzip-CVE-2017-8842.patch		\
   %D%/packages/patches/lsh-fix-x11-forwarding.patch		\
+  %D%/packages/patches/lsof-fatal-test-failures.patch		\
   %D%/packages/patches/lua-CVE-2014-5461.patch                      \
   %D%/packages/patches/lua-pkgconfig.patch                      \
   %D%/packages/patches/lua51-liblua-so.patch                    \
@@ -1338,11 +1361,11 @@ dist_patch_DATA =						\
   %D%/packages/patches/mozjs38-version-detection.patch		\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
   %D%/packages/patches/mtools-mformat-uninitialized.patch	\
-  %D%/packages/patches/multipath-tools-sans-systemd.patch	\
   %D%/packages/patches/mumps-build-parallelism.patch		\
   %D%/packages/patches/mumps-shared-libseq.patch		\
   %D%/packages/patches/mumps-shared-mumps.patch			\
   %D%/packages/patches/mumps-shared-pord.patch			\
+  %D%/packages/patches/mupdf-fix-linkage.patch			\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/musl-cross-locale.patch			\
@@ -1350,7 +1373,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/m4-gnulib-libio.patch			\
   %D%/packages/patches/ncompress-fix-softlinks.patch		\
   %D%/packages/patches/netcdf-date-time.patch			\
-  %D%/packages/patches/netcdf-tst_h_par.patch			\
   %D%/packages/patches/netpbm-CVE-2017-2586.patch		\
   %D%/packages/patches/netpbm-CVE-2017-2587.patch		\
   %D%/packages/patches/netsurf-message-timestamp.patch		\
@@ -1369,9 +1391,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/nvi-dbpagesize-binpower.patch		\
   %D%/packages/patches/nvi-db4.patch				\
   %D%/packages/patches/nyacc-binary-literals.patch		\
-  %D%/packages/patches/oath-toolkit-glibc-compat.patch		\
-  %D%/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch	\
   %D%/packages/patches/ocaml-bitstring-fix-configure.patch \
+  %D%/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch     \
   %D%/packages/patches/ocaml-CVE-2015-8869.patch		\
   %D%/packages/patches/ocaml-Add-a-.file-directive.patch	\
   %D%/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch	\
@@ -1388,7 +1409,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/openfoam-4.1-cleanup.patch			\
   %D%/packages/patches/openjdk-10-idlj-reproducibility.patch	\
   %D%/packages/patches/openmpi-mtl-priorities.patch		\
-  %D%/packages/patches/openocd-nrf52.patch			\
+  %D%/packages/patches/openssh-fix-ssh-copy-id.patch		\
   %D%/packages/patches/openssh-hurd.patch			\
   %D%/packages/patches/openresolv-restartcmd-guix.patch	\
   %D%/packages/patches/openscad-parser-boost-1.72.patch	\
@@ -1409,8 +1430,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/pam-mount-luks2-support.patch		\
   %D%/packages/patches/pango-skip-libthai-test.patch		\
   %D%/packages/patches/pciutils-hurd-configure.patch		\
+  %D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
   %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch		\
   %D%/packages/patches/samba-fix-fcntl-hint-detection.patch		\
+  %D%/packages/patches/sdcc-disable-non-free-code.patch		\
   %D%/packages/patches/sdl-pango-api_additions.patch		\
   %D%/packages/patches/sdl-pango-blit_overflow.patch		\
   %D%/packages/patches/sdl-pango-fillrect_crash.patch		\
@@ -1432,6 +1455,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/perl-text-markdown-discount-unbundle.patch	\
   %D%/packages/patches/perl-module-pluggable-search.patch	\
   %D%/packages/patches/perl-reproducible-build-date.patch	\
+  %D%/packages/patches/perl-www-curl-fix-struct-void.patch	\
   %D%/packages/patches/perl-www-curl-remove-symbol.patch	\
   %D%/packages/patches/picard-fix-id3-rename-test.patch		\
   %D%/packages/patches/picprog-non-intel-support.patch		\
@@ -1485,7 +1509,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-3.8-fix-tests.patch		\
   %D%/packages/patches/python-3-hurd-configure.patch		\
   %D%/packages/patches/python-CVE-2018-14647.patch		\
-  %D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch	\
   %D%/packages/patches/python-aionotify-0.2.0-py3.8.patch	\
   %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch	\
   %D%/packages/patches/python-axolotl-AES-fix.patch		\
@@ -1509,9 +1532,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-paste-remove-timing-test.patch	\
   %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch	\
   %D%/packages/patches/python-pycrypto-time-clock.patch		\
-  %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
+  %D%/packages/patches/python-pydot-regression-test.patch	\
+  %D%/packages/patches/python2-pygobject-2-deprecation.patch	\
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
-  %D%/packages/patches/python-robotframework-honor-source-date-epoch.patch \
+  %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch	\
   %D%/packages/patches/python2-subprocess32-disable-input-test.patch	\
   %D%/packages/patches/python-tinycss2-flake8-compat.patch	\
@@ -1538,7 +1562,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/raptor2-heap-overflow.patch		\
   %D%/packages/patches/ratpoints-sturm_and_rp_private.patch	\
   %D%/packages/patches/ratpoison-shell.patch			\
-  %D%/packages/patches/rcs-5.9.4-noreturn.patch			\
+  %D%/packages/patches/rcs-5.10.0-no-stdin.patch		\
   %D%/packages/patches/rct-add-missing-headers.patch		\
   %D%/packages/patches/readline-link-ncurses.patch		\
   %D%/packages/patches/readline-6.2-CVE-2014-2524.patch		\
@@ -1569,12 +1593,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-reproducible-builds.patch		 \
   %D%/packages/patches/rust-openssl-sys-no-vendor.patch	\
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
+  %D%/packages/patches/sbcl-geco-fix-organism-class.patch	\
   %D%/packages/patches/scalapack-blacs-mpi-deprecations.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
   %D%/packages/patches/scotch-build-parallelism.patch		\
   %D%/packages/patches/scotch-integer-declarations.patch	\
   %D%/packages/patches/screen-hurd-path-max.patch		\
-  %D%/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch	\
   %D%/packages/patches/sdl-libx11-1.6.patch			\
   %D%/packages/patches/seed-webkit.patch			\
   %D%/packages/patches/seq24-rename-mutex.patch			\
@@ -1629,14 +1653,15 @@ dist_patch_DATA =						\
   %D%/packages/patches/tipp10-remove-license-code.patch		\
   %D%/packages/patches/tk-find-library.patch			\
   %D%/packages/patches/transcode-ffmpeg.patch	\
+  %D%/packages/patches/transmission-honor-localedir.patch	\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
-  %D%/packages/patches/tomb-fix-errors-on-open.patch		\
   %D%/packages/patches/tup-unbundle-dependencies.patch		\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/twinkle-bcg729.patch			\
   %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch	\
   %D%/packages/patches/ucx-tcp-iface-ioctl.patch		\
   %D%/packages/patches/udiskie-no-appindicator.patch		\
+  %D%/packages/patches/ungoogled-chromium-extension-search-path.patch	\
   %D%/packages/patches/ungoogled-chromium-system-nspr.patch	\
   %D%/packages/patches/unison-fix-ocaml-4.08.patch		\
   %D%/packages/patches/unknown-horizons-python-3.8-distro.patch	\
@@ -1702,12 +1727,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
   %D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch	\
   %D%/packages/patches/xpra-4.0.1-systemd-run.patch	\
-  %D%/packages/patches/xpra-4.0.4-norequests.patch	\
   %D%/packages/patches/xsane-fix-memory-leak.patch		\
   %D%/packages/patches/xsane-fix-pdf-floats.patch		\
   %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch	\
   %D%/packages/patches/xsane-support-ipv6.patch			\
-  %D%/packages/patches/xsane-tighten-default-umask.patch
+  %D%/packages/patches/xsane-tighten-default-umask.patch	\
+  %D%/packages/patches/yggdrasil-extra-config.patch
 
 MISC_DISTRO_FILES =				\
   %D%/packages/ld-wrapper.in
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index 5020bd362f..1b748c8da7 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -37,6 +37,7 @@
   #:use-module (guix ssh)
   #:use-module (guix store)
   #:use-module (guix utils)
+  #:use-module ((guix self) #:select (make-config.scm))
   #:use-module (gcrypt pk-crypto)
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
@@ -353,8 +354,9 @@ of MACHINE's system profile, ordered from most recent to oldest."
 
   (define remote-exp
     (with-extensions (list guile-gcrypt)
-      (with-imported-modules (source-module-closure '((guix config)
-                                                      (guix profiles)))
+      (with-imported-modules (source-module-closure
+                              `(((guix config) => ,(make-config.scm))
+                                (guix profiles)))
         #~(begin
             (use-modules (guix config)
                          (guix profiles)
@@ -482,6 +484,8 @@ an environment type of 'managed-host."
                                         (list (second boot-parameters))))
                        (locale -> (boot-parameters-locale
                                    (second boot-parameters)))
+                       (store-dir -> (boot-parameters-store-directory-prefix
+                                      (second boot-parameters)))
                        (old-entries -> (map boot-parameters->menu-entry
                                             (drop boot-parameters 2)))
                        (bootloader -> (operating-system-bootloader
@@ -492,6 +496,7 @@ an environment type of 'managed-host."
                                     bootloader))
                                   bootloader entries
                                   #:locale locale
+                                  #:store-directory-prefix store-dir
                                   #:old-entries old-entries)))
                        (remote-result (machine-remote-eval machine remote-exp)))
     (when (eqv? 'error remote-result)
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm
index 4e90703d81..be4b079b04 100644
--- a/gnu/packages/acl.scm
+++ b/gnu/packages/acl.scm
@@ -51,7 +51,8 @@
      `(#:modules ((ice-9 ftw)
                   ,@%gnu-build-system-modules)
        #:configure-flags '("--disable-static")
-       #:tests? ,(not (hurd-target?))
+       #:tests? ,(not (or (%current-target-system)
+                          (hurd-target?)))
        #:phases
        (modify-phases %standard-phases
          ;; XXX After repacking the sources the timestamps are reset to the
diff --git a/gnu/packages/ada.scm b/gnu/packages/ada.scm
index e58b0d7754..d24aa2b168 100644
--- a/gnu/packages/ada.scm
+++ b/gnu/packages/ada.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,10 +25,126 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages python-xyz))
+  #:use-module (gnu packages python-xyz)
+  #:use-module (ice-9 match))
+
+(define-public ada/ed
+  (package
+    (name "ada-ed")
+    (version "1.11.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             ;; The HOME-PAGE sources, mirrored by one of the original authors.
+             (url "https://github.com/daveshields/AdaEd")
+             (commit "57daecfb7ccadfd9aaf13b4d54f51065affbe599")))
+       (sha256
+        (base32 "1k97a8nqsvbsadizrmhhypcx758sxqkai8wq3ckk853qxvzaasd8"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (supported-systems (list "i686-linux" "x86_64-linux"
+                             "armhf-linux" "aarch64-linux"))
+    (outputs (list "out" "debug"))
+    (arguments
+     `(#:system
+       ,@(match (%current-system)
+           ;; This package predates 64-bit PCs: a ‘64-bit’ adaexec segfaults.
+           ;; Force a 32-bit build targeting a similar architecture.
+           ((or "armhf-linux" "aarch64-linux")
+            `("armhf-linux"))
+           (_
+            `("i686-linux")))
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append
+                "CFLAGS=-g"             ; compile with :debug symbols
+                " -DOP_SYS='\"GNU\"'"   ; sic; quoting gets mangled somewhere
+                " -DSYSTEM_V"           ; closest to modern GNU
+                " -DWORDSIZE32"
+                " -DALIGN4")            ; suffices on both x86 and ARM
+               "LFLAGS="                ; don't link against -lg
+               (string-append "BINDIR=" out "/bin")
+               (string-append "LIBDIR=" out "/lib")
+               (string-append "MANDIR=" out "/share/man")))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-sources
+           (lambda _
+             ;; Rename the custom (and incompatible) getline() implementation.
+             (substitute* "adalex.c"
+               (("getline") "adaed_getline"))
+             ;; Work around ‘error: initializer element is not constant’ by not
+             ;; initialising MSGFILE.
+             (substitute* "vars.ch"
+               (("INIT\\(stdout\\)") ""))
+             #t))
+         (delete 'configure)            ; no configure script
+         (add-before 'build 'find-build-scripts
+           (lambda _
+             (setenv "PATH" (string-append ".:" (getenv "PATH")))
+             #t))
+         (add-after 'build 'build-predef
+           (lambda* (#:key make-flags #:allow-other-keys)
+             ;; These aren't otherwise compiled until the ‘install’ phase.
+             (apply invoke "make" "predef" make-flags)
+             #t))
+         (delete 'check)                ; no test suite; run our own below
+         (add-before 'install 'create-output-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/share/man/manl"))
+               #t)))
+         (add-after 'install 'check
+           ;; Run most of the included demos as our own ‘test suite’.
+           (lambda* (#:key outputs tests? #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (when tests?
+                 (setenv "ADAED" (string-append out "/lib"))
+                 (setenv "PATH" (string-append out "/bin:" (getenv "PATH")))
+                 (with-directory-excursion "demos" ; won't run outside of it
+                   (for-each
+                    delete-file
+                    '("runc"   ; ‘invalid data. Please make it a positive no.’
+                      "rund"   ; deadlocks by design
+                      "rune"   ; ‘dining2.ada: No such file or directory’
+                      "rung")) ; ‘mathlib cannot be used as a library’ (!)
+                   (for-each (lambda (script)
+                               (format #t "\n=== Invoking ~a ===\n" script)
+                               (invoke script))
+                             (find-files "." "^run")))))))
+         (add-after 'install 'clean-up-output
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion out
+                 ;; These needn't be executable.
+                 (for-each (cut chmod <> #o644)
+                           (append (find-files "lib" "\\....$")
+                                   (find-files "share" ".")))
+                 #t)))))))
+    (native-inputs
+     `(("sed" ,sed)))
+    (home-page (string-append "https://web.archive.org/web/20140902150609/"
+                              "http://www2.informatik.uni-stuttgart.de/iste/ps/"
+                              "ada-software/html/dos_ada.html"))
+    (synopsis "Ada 83 interpreter")
+    (description "Ada/Ed is a translator-interpreter for Ada 83.  It's intended
+primarily as a teaching tool and lacks the capacity, performance, and robustness
+of other contemporary or modern-day Ada compilers.
+
+Ada/Ed was the first Ada compiler to pass the @acronym{ACVC, Ada Compiler
+Validation Suite} version 1.7 but fails many newer tests and is not a validated
+Ada system.  Being an interpreter, it does not implement most representation
+clauses, and thus does not support systems programming close to the machine
+level.")
+    (license license:gpl2+)))
 
 (define-public python2-langkit
   (let ((commit "fe0bc8bf60dbd2937759810df76ac420d99fc15f")
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 972b6a82eb..6489e7462b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -313,7 +313,7 @@ interface and is based on GNU Guile.")
 (define-public cloud-utils
   (package
     (name "cloud-utils")
-    (version "0.31")
+    (version "0.32")
     (source
      (origin
        (method url-fetch)
@@ -322,7 +322,7 @@ interface and is based on GNU Guile.")
              version "/+download/cloud-utils-" version ".tar.gz"))
        (sha256
         (base32
-         "07fl3dlqwdzw4xx7mcxhpkks6dnmaxha80zgs9f6wmibgzni8z0r"))))
+         "0xxdi55lzw7j91zfajw7jhd2ilsqj2dy04i9brlk8j3pvb5ma8hk"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags
@@ -443,7 +443,7 @@ graphs and can export its output to different formats.")
 (define-public facter
   (package
     (name "facter")
-    (version "4.0.43")
+    (version "4.0.46")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -452,7 +452,7 @@ graphs and can export its output to different formats.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ppzr7vsl6iw8x82c4g60mx1vz06nzwcy8byablhg0n0g6qa3pb0"))))
+                "1pi93i1jfpmxxw22b5r4gyx5jzgrammlrjzhjr3q2bpn3kcas91j"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -1499,7 +1499,7 @@ commands and their arguments.")
 (define-public opendoas
   (package
     (name "opendoas")
-    (version "6.6.1")
+    (version "6.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1508,7 +1508,7 @@ commands and their arguments.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "07kkc5729p654jrgfsc8zyhiwicgmq38yacmwfvay2b3gmy728zn"))))
+                "1dlwnvy8r6slxcy260gfkximp1ms510wdslpfq9y6xvd2qi5izcb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1516,19 +1516,17 @@ commands and their arguments.")
          (replace 'configure
            ;; The configure script doesn't accept most of the default flags.
            (lambda* (#:key configure-flags #:allow-other-keys)
-             ;; The configure script can only be told which compiler to use
+             ;; The configure script can be told which compiler to use only
              ;; through environment variables.
              (setenv "CC" ,(cc-for-target))
              (apply invoke "./configure" configure-flags)))
          (add-before 'install 'fix-makefile
            (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "bsd.prog.mk"
+             (substitute* "GNUmakefile"
                (("^\tchown.*$") ""))
              #t)))
        #:configure-flags
        (list (string-append "--prefix=" (assoc-ref %outputs "out"))
-             ;; Nothing is done with this value (yet?) but it's supported.
-             ;; (string-append "--target=" (or ,(%current-target-system) ""))
              "--with-timestamp")
        ;; Compiler choice is not carried over from the configure script.
        #:make-flags
@@ -1566,10 +1564,10 @@ features of sudo with a fraction of the codebase.")
                     #t))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
          (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda _
              (chdir "wpa_supplicant")
              (copy-file "defconfig" ".config")
              (let ((port (open-file ".config" "al")))
@@ -1583,6 +1581,15 @@ features of sudo with a fraction of the codebase.")
       CONFIG_LIBNL32=y
       CONFIG_READLINE=y\n" port)
                (close-port port))
+             ;; Make sure we have a pkg-config when cross compiling
+             (substitute* '(".config"
+                            "Android.mk"
+                            "Makefile"
+                            "dbus/Makefile")
+               (("pkg-config")
+                (or (which "pkg-config")
+                    (which (string-append ,(%current-target-system)
+                                          "-pkg-config")))))
              #t))
          (add-after 'install 'install-documentation
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1611,7 +1618,7 @@ features of sudo with a fraction of the codebase.")
                            "wpa_supplicant.conf"))
                #t))))
 
-      #:make-flags (list "CC=gcc"
+      #:make-flags (list (string-append "CC=" ,(cc-for-target))
                          (string-append "BINDIR=" (assoc-ref %outputs "out")
                                         "/sbin")
                          (string-append "LIBDIR=" (assoc-ref %outputs "out")
@@ -1721,10 +1728,10 @@ command.")
                 "1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
          (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda _
              ;; This is mostly copied from 'wpa-supplicant' above.
              (chdir "hostapd")
              (copy-file "defconfig" ".config")
@@ -1736,6 +1743,14 @@ command.")
       CONFIG_IEEE80211AC=y\n" port)
                (close-port port))
              #t))
+         (add-after 'unpack 'patch-pkg-config
+           (lambda _
+             (substitute* "src/drivers/drivers.mak"
+               (("pkg-config")
+                (or (which "pkg-config")
+                    (string-append ,(%current-target-system)
+                                   "-pkg-config"))))
+             #t))
          (add-after 'install 'install-man-pages
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out  (assoc-ref outputs "out"))
@@ -1752,7 +1767,7 @@ command.")
                          (find-files "." "\\.8"))
                #t))))
 
-      #:make-flags (list "CC=gcc"
+      #:make-flags (list (string-append "CC=" ,(cc-for-target))
                          (string-append "BINDIR=" (assoc-ref %outputs "out")
                                         "/sbin")
                          (string-append "LIBDIR=" (assoc-ref %outputs "out")
@@ -1847,7 +1862,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20200717")
+    (version "20201113")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1855,13 +1870,13 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0jyy71szjr40c8v40qqw6yh3gfk8d6sl3nay69zrn5d88i3r0jca"))))
+                "0fmck3zklc328c8nzvfzm2xyh2i8zszzrd4k8kk8q30y4avnc6z1"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
     (arguments
-     '(#:make-flags (list (string-append "PREFIX=" %output)
-                          "CC=gcc"
+     `(#:make-flags (list (string-append "PREFIX=" %output)
+                          (string-append "CC=" ,(cc-for-target))
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
        #:tests? #f                      ; no 'check' target
@@ -2381,17 +2396,20 @@ lookup to YAML Mode.  You could enable the mode with @code{(add-hook
      `(#:phases (modify-phases %standard-phases
                   (delete 'configure)
                   (replace 'build
-                    (lambda _
-                      (invoke "make" "CC=gcc" "-Csrc")))
+                    (lambda* (#:key make-flags #:allow-other-keys)
+                      (apply invoke "make" "-Csrc" make-flags)))
                   (replace 'check
-                    (lambda _
-                      (invoke "make" "CC=gcc" "-Ctests")))
+                    (lambda* (#:key tests? make-flags #:allow-other-keys)
+                      (when tests?
+                        (apply invoke "make" "-Ctests" make-flags))
+                      #t))
                   (replace 'install
                     (lambda* (#:key outputs #:allow-other-keys)
                       (let* ((out (assoc-ref outputs "out"))
                              (bin (string-append out "/bin")))
                         (install-file "src/cpulimit" bin))
-                      #t)))))
+                      #t)))
+       #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
     (home-page "https://github.com/opsengine/cpulimit")
     (synopsis "Limit CPU usage")
     (description
@@ -2688,7 +2706,7 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dagwieers/dstat")
+             (url "https://github.com/dstat-real/dstat")
              (commit (string-append "v" version))))
        (file-name (git-file-name "dstat" version))
        (sha256
@@ -2880,9 +2898,13 @@ shortcut syntax and completion options.")
     (version "4.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://archives.eyrie.org/software/kerberos/"
-                    "pam-krb5-" version ".tar.xz"))
+              (uri
+                (list (string-append
+                        "https://archives.eyrie.org/software/kerberos/"
+                        "pam-krb5-" version ".tar.xz")
+                      (string-append
+                        "https://archives.eyrie.org/software/ARCHIVE/"
+                        "pam-krb5/pam-krb5-" version ".tar.xz")))
               (patches (search-patches "pam-krb5-CVE-2020-10595.patch"))
               (sha256
                (base32
@@ -2916,7 +2938,7 @@ with @code{ChallengeResponseAuthentication} and @code{PrivilegeSeparation}
 enabled, and supports extensive configuration either by PAM options or in
 krb5.conf or both.  PKINIT is supported with recent versions of both MIT
 Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
-    (home-page "https://www.eyrie.org/~eagle/software/pam-krb5")
+    (home-page "https://www.eyrie.org/~eagle/software/pam-krb5/")
     ;; Dual licenced under  a homebrew non-copyleft OR GPL (any version)
     ;; However, the tarball does not contain a copy of the GPL,  so unless
     ;; we put one in, we cannot distribute it under GPL without violating
@@ -3358,14 +3380,14 @@ information tool.")
 (define-public nnn
   (package
     (name "nnn")
-    (version "3.4")
+    (version "3.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
                            version "/nnn-v" version ".tar.gz"))
        (sha256
-        (base32 "189h950m1jjrnhvgcvzk6nj89l58rkxim7bxa0441ssajxpaw0vq"))))
+        (base32 "1ww18vvfjkvi36rcamw8kpix4bhk71w5bw9kmnh158crah1x8dp6"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
@@ -3373,15 +3395,23 @@ information tool.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (arguments
-     '(#:tests? #f                      ; no tests
+     `(#:tests? #f                      ; no tests
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure))           ; no configure script
+         (delete 'configure)            ; no configure script
+         (add-after 'unpack 'patch-pkg-config
+           (lambda _
+             (substitute* "Makefile"
+               (("pkg-config")
+                (or (which "pkg-config")
+                    (string-append ,(%current-target-system)
+                                   "-pkg-config"))))
+             #t)))
        #:make-flags
        (list
         (string-append "PREFIX="
                        (assoc-ref %outputs "out"))
-        "CC=gcc")))
+        (string-append "CC=" ,(cc-for-target)))))
     (home-page "https://github.com/jarun/nnn")
     (synopsis "Terminal file browser")
     (description "@command{nnn} is a fork of @command{noice}, a blazing-fast
@@ -3394,40 +3424,56 @@ make it a perfect utility on modern distros.")
 (define-public thermald
   (package
     (name "thermald")
-    (version "1.9.1")
+    (version "2.3")
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
-             (url "https://github.com/01org/thermal_daemon")
+             (url "https://github.com/intel/thermal_daemon")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "0iagc3jqpnh6q2fa1gx4wx6r8qg0556j60xr159zqg95djr4dv99"))))
+       (base32 "0cisaca2c2z1x9xvxc4lr6nl6yqx5bww6brh73m0p1n643jgq1dl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
        (let ((out      (assoc-ref %outputs "out")))
-         (list (string-append "--sysconfdir="
-                              out "/etc")
-               (string-append "--with-dbus-sys-dir="
+         (list (string-append "--with-dbus-sys-dir="
                               out "/etc/dbus-1/system.d")
-               "--localstatedir=/var"))))
+               "--localstatedir=/var"))
+       #:make-flags
+       (list "V=1")                     ; log build commands
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'bootstrap 'no-early-./configure
+           (lambda _
+             (setenv "NO_CONFIGURE" "yet")
+             ;; XXX thd_trip_point.h redefines "__STDC_LIMIT_MACROS" after
+             ;; <xz>/include/lzma.h.  ./configure forcibly appends -Werror
+             ;; to CXXFLAGS, overriding any -Wno-error we'd add.
+             (substitute* "configure.ac"
+               (("-Werror") ""))
+             #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
+       ("autoconf-archive" ,autoconf-archive)
        ("automake" ,automake)
        ("glib" ,glib "bin")             ; for glib-genmarshal, etc.
+       ("gtk-doc" ,gtk-doc)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("dbus-glib" ,dbus-glib)
-       ("libxml2" ,libxml2)))
+       ("libevdev" ,libevdev)
+       ("libxml2" ,libxml2)
+       ("upower" ,upower)
+       ("xz" ,xz)))
     (home-page "https://01.org/linux-thermal-daemon/")
     (synopsis "CPU scaling for thermal management")
     (description "The Linux Thermal Daemon helps monitor and control temperature
 on systems running the Linux kernel.")
     ;; arm and aarch64 don't have cpuid.h.
     (supported-systems '("i686-linux" "x86_64-linux"))
-    (license license:gpl2+)))
+    (license license:gpl2)))
 
 (define-public masscan
   (package
@@ -3446,9 +3492,9 @@ on systems running the Linux kernel.")
     (inputs
      `(("libpcap" ,libpcap)))
     (arguments
-     '(#:test-target "regress"
+     `(#:test-target "regress"
        #:make-flags
-       (list "CC=gcc"
+       (list (string-append "CC=" ,(cc-for-target))
              (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
@@ -3576,7 +3622,7 @@ Python loading in HPC environments.")
   (let ((real-name "inxi"))
     (package
       (name "inxi-minimal")
-      (version "3.1.07-1")
+      (version "3.1.09-1")
       (source
        (origin
          (method git-fetch)
@@ -3585,7 +3631,7 @@ Python loading in HPC environments.")
                (commit version)))
          (file-name (git-file-name real-name version))
          (sha256
-          (base32 "0hs4m2vmfc6srscaz72r6zpkn6n7msgzlps376ks38gj1l103xfn"))))
+          (base32 "0m6s8kxjppy3jm39is5i1lbrah29cw86rq0vamvx46izbdyf84y5"))))
       (build-system trivial-build-system)
       (inputs
        `(("bash" ,bash-minimal)
@@ -3755,26 +3801,20 @@ support forum.  It runs with the @code{/exec} command in most IRC clients.")
 (define-public solaar
   (package
     (name "solaar")
-    (version "0.9.2")
+    (version "1.0.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pwr/Solaar")
+                    (url "https://github.com/pwr-Solaar/Solaar")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "085mfa13dap3wqik1dqlad0d7kff4rv7j4ljh99c7l8nhczkqgwm"))))
+                "15wzxxr2m5349kkvcs3k5clg1rsmvh6by2066qm4hlgvjwmigggy"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-prefix-detection
-           (lambda _
-             (substitute* "setup.py"
-              (("'--prefix' in sys\\.argv")
-               "len([x.startswith('--prefix=') for x in sys.argv]) > 0"))
-             #t))
          (add-before 'build 'setenv-PATH
            (lambda _
              (setenv "PYTHONPATH" (string-append "lib:" (getenv "PYTHONPATH")))
@@ -4096,7 +4136,7 @@ entries, providing commands to add, remove, comment, and search.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/jclehner/nmrpflash.git")
+         (url "https://github.com/jclehner/nmrpflash")
          (commit (string-append "v" version))))
        (sha256
         (base32 "1fdjrxhjs96rdclbkld57xarf592slhkp79h46z833npxpn12ck1"))
@@ -4127,3 +4167,61 @@ EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800,
 R8000, R8500, WNDR3800, but is likely to be compatible with many other
 Netgear devices.")
     (license license:gpl3+)))
+
+(define-public atop
+  (package
+    (name "atop")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.atoptool.nl/download/atop-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0crzz4i2nabyh7d6xg7fvl65qls87nbca5ihidp3nijhrrbi14ab"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no test suite
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             ;; The installer requires a choice between systemd or SysV.
+             "systemdinstall"
+             (string-append "DESTDIR=" (assoc-ref %outputs "out"))
+             (string-append "BINPATH=/bin")
+             (string-append "SBINPATH=/sbin")
+             (string-append "SYSDPATH=/etc/systemd/system")
+             (string-append "PMPATHD=/etc/systemd/system-sleep")
+             (string-append "MAN1PATH=/share/man/man1")
+             (string-append "MAN5PATH=/share/man/man5")
+             (string-append "MAN8PATH=/share/man/man8")
+             ;; Or else it tries to create /var/log/atop...
+             (string-append "LOGPATH="))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure) ; No ./configure script
+         (add-before 'build 'patch-build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               ;; We don't need to chown things in the build environment.
+               (("chown.*$") "")
+               ;; We can't toggle the setuid bit in the build environment.
+               (("chmod 04711") "chmod 0711")
+               ;; Otherwise, it creates a blank configuration file as a "default".
+               (("touch.*DEFPATH)/atop") "")
+               (("chmod.*DEFPATH)/atop") ""))
+             #t)))))
+    (inputs
+     `(("ncurses" ,ncurses)
+       ("python" ,python-wrapper) ; for `atopgpud`
+       ("zlib" ,zlib)))
+    (home-page "https://www.atoptool.nl/")
+    (synopsis "Linux performance monitoring console")
+    (description "Atop is an ASCII full-screen performance monitor for Linux
+that is capable of reporting the activity of all processes (even processes have
+finished during the monitoring interval), daily logging of system and process
+activity for long-term analysis, highlighting overloaded system resources by
+using colors, etc.  At regular intervals, it shows system-level activity related
+to the CPU, memory, swap, disks (including LVM) and network layers, and for
+every process (and thread) it shows e.g. the CPU utilization, memory growth,
+disk utilization, priority, username, state, and exit code.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/aidc.scm b/gnu/packages/aidc.scm
index 3facc6894f..6628a8ead3 100644
--- a/gnu/packages/aidc.scm
+++ b/gnu/packages/aidc.scm
@@ -50,7 +50,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/nu-book/zxing-cpp.git")
+         (url "https://github.com/nu-book/zxing-cpp")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index b712d3a869..5b391449a0 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -234,7 +234,7 @@ the real span of the lattice.")
 (define-public pari-gp
   (package
     (name "pari-gp")
-    (version "2.11.4")
+    (version "2.13.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -242,7 +242,7 @@ the real span of the lattice.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "070bjw4kg7r6lqs1hfs08n5fmjv90cpwflp3wr04hbrmyz28zj5z"))))
+                "14xs90wrw8mbdx08hxlbhiahp6kgjq6yh27zjw7fvhfjx5nr84f8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("texlive" ,(texlive-union
@@ -355,7 +355,7 @@ precision.")
 (define-public giac
   (package
     (name "giac")
-    (version "1.6.0-25")
+    (version "1.6.0-31")
     (source
      (origin
        (method url-fetch)
@@ -367,7 +367,7 @@ precision.")
                            "~parisse/debian/dists/stable/main/source/"
                            "giac_" version ".tar.gz"))
        (sha256
-        (base32 "11kik2csdg9wy0npiih21kaag0nc89i9ldgk7ak7gvf9ycddm6mh"))))
+        (base32 "1dr1y88sx2gzldn0zl6p8b1ngjjcmh89iv4kzyhi2cf74j3yw85m"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((ice-9 ftw)
@@ -1005,16 +1005,20 @@ Optional thin wrappers allow usage of the library from other languages.")
 (define-public eigen
   (package
     (name "eigen")
-    (version "3.3.7")
+    (version "3.3.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://bitbucket.org/eigen/eigen/get/"
-                                  version ".tar.bz2"))
+              (uri (list
+                     (string-append "https://bitbucket.org/eigen/eigen/get/"
+                                    version ".tar.bz2")
+                     (string-append "mirror://debian/pool/main/e/eigen3/eigen3_"
+                                    version ".orig.tar.bz2")))
               (sha256
                (base32
-                "1km3fyfzyqfdvmnl79drps3fjwnz3zbh0c7l34mfbqyvvs8cy4wz"))
+                "1vxrsncfnkyq6gwxpsannpryp12mk7lc8f42ybvz3saf7icwc582"))
               (file-name (string-append name "-" version ".tar.bz2"))
-              (patches (search-patches "eigen-stabilise-sparseqr-test.patch"))
+              (patches (search-patches "eigen-remove-openmp-error-counting.patch"
+                                       "eigen-stabilise-sparseqr-test.patch"))
               (modules '((guix build utils)))
               (snippet
                ;; There are 3 test failures in the "unsupported" directory,
@@ -1089,7 +1093,7 @@ features, and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/QuantStack/xtensor")
+                    (url "https://github.com/xtensor-stack/xtensor")
                     (commit version)))
               (sha256
                (base32
@@ -1103,7 +1107,7 @@ features, and more.")
      `(#:configure-flags
        '("-DBUILD_TESTS=ON")
        #:test-target "xtest"))
-    (home-page "https://quantstack.net/xtensor")
+    (home-page "https://xtensor.readthedocs.io/en/latest/")
     (synopsis "C++ tensors with broadcasting and lazy computing")
     (description "xtensor is a C++ library meant for numerical analysis with
 multi-dimensional array expressions.
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 3176a1237a..6bfe8f0a12 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,19 +28,30 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
-  #:use-module (gnu packages video))
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph))
 
 ;; ETL, synfig, and Synfig Studio are updated in tandem.
 (define synfig-version "1.2.2")
@@ -192,6 +204,89 @@ need for tweening, preventing the need to hand-draw each frame.  This package
 contains the graphical user interface for synfig.")
     (license license:gpl3+)))
 
+;; This package provides a standalone (no browser plugin) version of Gnash.
+(define-public gnash
+  ;; The last tagged release of Gnash was in 2013.
+  (let ((commit "583ccbc1275c7701dc4843ec12142ff86bb305b4")
+        (revision "0"))
+    (package
+      (name "gnash")
+      (version (git-version "0.8.11" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.savannah.gnu.org/git/gnash.git/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (patches (search-patches "gnash-fix-giflib-version.patch"))
+         (sha256
+          (base32 "0fh0bljn0i6ypyh6l99afi855p7ki7lm869nq1qj6k8hrrwhmfry"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:configure-flags
+         (list "--disable-static"
+               ;; Plugins are based on XULRunner and NPAPI only.  Disable.
+               "--disable-plugins"
+               "--enable-gui=gtk"
+               "--enable-media=ffmpeg"
+               (string-append "--with-boost-incl="
+                              (assoc-ref %build-inputs "boost") "/include")
+               (string-append "--with-boost-lib="
+                              (assoc-ref %build-inputs "boost") "/lib")
+               (string-append "--with-ffmpeg-incl="
+                              (assoc-ref %build-inputs "ffmpeg")
+                              "/include/libavcodec")
+               (string-append "--with-speex-incl="
+                              (assoc-ref %build-inputs "speex") "/include")
+               (string-append "--with-jemalloc-incl="
+                              (assoc-ref %build-inputs "jemalloc")
+                              "/include/jemalloc")
+               (string-append "--with-speex-lib="
+                              (assoc-ref %build-inputs "speex") "/lib")
+               (string-append "--with-jpeg-incl="
+                              (assoc-ref %build-inputs "libjpeg") "/include")
+               (string-append "--with-zlib-incl="
+                              (assoc-ref %build-inputs "zlib") "/include")
+               (string-append "--with-png-incl="
+                              (assoc-ref %build-inputs "libpng")
+                              "/include"))))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("dejagnu" ,dejagnu) ;for tests
+         ("gettext" ,gettext-minimal)
+         ("libtool" ,libtool)
+         ("perl" ,perl)
+         ("pkg-config" ,pkg-config)
+         ("python" ,python-wrapper)))
+      (inputs
+       `(("agg" ,agg)
+         ("atk" ,atk)
+         ("boost" ,boost)
+         ("curl" ,curl)
+         ("ffmpeg" ,ffmpeg-2.8)
+         ("freeglut" ,freeglut)
+         ("gconf" ,gconf)
+         ("giflib" ,giflib)
+         ("glib" ,glib)
+         ("gtk+" ,gtk+-2)
+         ("gtkglext" ,gtkglext)
+         ("jemalloc" ,jemalloc)
+         ("libjpeg" ,libjpeg-turbo)
+         ("libltdl" ,libltdl)
+         ("libpng" ,libpng)
+         ("pangox-compat" ,pangox-compat)
+         ("sdl" ,sdl)
+         ("speex" ,speex)))
+      (synopsis "Flash movie player")
+      (description
+       "Gnash is a Flash movie player.  It supports SWF version v7 and some
+of v8 and v9.  It is possible to configure Gnash to use several different
+audio or video backends, ensuring good performance.")
+      (home-page "https://www.gnu.org/software/gnash/")
+      (license license:gpl3+))))
+
 (define-public papagayo
   (let ((commit "e143684b30e59fe4a554f965cb655d23cbe93ee7")
         (revision "1"))
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 7d3c2ef1c3..7a6d20116f 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Andersson <christopher@8bits.nu>
 ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2016, 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -11,6 +11,7 @@
 ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Noah Landis <noahlandis@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -170,6 +171,13 @@ dictionaries, including personal ones.")
          (hash (content-hash sha256))))
       (home-page "https://www.softcatala.org/pub/softcatala/aspell/"))))
 
+(define-public aspell-dict-cs
+  (aspell-dictionary "cs" "Czech"
+                     #:version "20040614-1"
+                     #:sha256
+                     (base32
+                      "0rihj4hsw96pd9casvmpvw3r8040pfa28p1h73x4vyn20zwr3h01")))
+
 (define-public aspell-dict-de
   (aspell-dictionary "de" "German"
                      #:version "20161207-7-0"
@@ -275,6 +283,7 @@ dictionaries, including personal ones.")
 (define-public aspell-dict-mi
   (aspell-dictionary "mi" "Maori"
                      #:version "0.50-0"
+                     #:prefix "aspell-"
                      #:sha256
                      (base32
                       "12bxplpd348yx8d2q8qvahi9dlp7qf28qmanzhziwc7np8rixvmy")))
@@ -290,6 +299,7 @@ dictionaries, including personal ones.")
 (define-public aspell-dict-nn
   (aspell-dictionary "nn" "Norwegian Nynorsk"
                      #:version "0.50.1-1"
+                     #:prefix "aspell-"
                      #:sha256
                      (base32
                       "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
@@ -297,6 +307,7 @@ dictionaries, including personal ones.")
 (define-public aspell-dict-pl
   (aspell-dictionary "pl" "Polish"
                      #:version "0.51-0"
+                     #:prefix "aspell-"
                      #:sha256
                      (base32
                       "1a3ccji6k5gys7l3ilr2lh5pzxgzb7ipc5vb737svl6nqgdy8757")))
@@ -363,8 +374,8 @@ dictionaries, including personal ones.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://downloads.sourceforge.net/wordlist/scowl-"
-                    version ".tar.gz"))
+                    "mirror://sourceforge/wordlist/SCOWL/"
+                    version "/scowl-" version ".tar.gz"))
               (sha256
                (base32
                 "11lkrnhwrf5mvrrq45k4mads3n9aswgac8dc25ba61c75alxb5rs"))))
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 12954c9c1f..a20ae542ce 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;; Copyright © 2019 Andy Tai <atai@atai.org>
@@ -51,7 +51,7 @@
   #:use-module (gnu packages shells)
   #:use-module (gnu packages xml)
   #:use-module ((guix utils)
-                #:select (%current-system)))
+                #:select (%current-system cc-for-target)))
 
 (define-public nasm
   (package
@@ -265,7 +265,7 @@ runtime")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rednex/rgbds")
+                    (url "https://github.com/gbdev/rgbds")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -276,13 +276,21 @@ runtime")
      `(#:phases
        (modify-phases %standard-phases
          (delete 'configure)
+         (add-after 'unpack 'patch-pkg-config
+           (lambda _
+             (substitute* "Makefile"
+               (("pkg-config")
+                (or (which "pkg-config")
+                    (string-append ,(%current-target-system)
+                                   "-pkg-config"))))
+             #t))
          (replace 'check
            (lambda _
              (with-directory-excursion "test/asm"
                (invoke "./test.sh"))
              (with-directory-excursion "test/link"
                (invoke "./test.sh")))))
-       #:make-flags `("CC=gcc"
+       #:make-flags `(,(string-append "CC=" ,(cc-for-target))
                       ,(string-append "PREFIX="
                                       (assoc-ref %outputs "out")))))
     (native-inputs
@@ -292,7 +300,7 @@ runtime")
        ("util-linux" ,util-linux)))
     (inputs
      `(("libpng" ,libpng)))
-    (home-page "https://github.com/rednex/rgbds")
+    (home-page "https://github.com/gbdev/rgbds")
     (synopsis "Rednex Game Boy Development System")
     (description
      "RGBDS (Rednex Game Boy Development System) is an assembler/linker
@@ -436,7 +444,7 @@ sets, both THUMB and ARM mode.")
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/intelxed/mbuild.git")
+                   (url "https://github.com/intelxed/mbuild")
                    (commit "5304b94361fccd830c0e2417535a866b79c1c297")))
              (sha256
               (base32
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 8a0c0fce2b..d3090edf61 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
@@ -58,6 +58,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -140,7 +141,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/KhronosGroup/OpenSL-ES-Registry.git")
+         (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
          (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
        (file-name (git-file-name name version))
        (sha256
@@ -202,7 +203,7 @@ promoting the market for advanced audio.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/Mindwerks/wildmidi.git")
+         (url "https://github.com/Mindwerks/wildmidi")
          (commit (string-append name "-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -277,7 +278,7 @@ Coding (AAC) encoder.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/tinyalsa/tinyalsa.git")
+         (url "https://github.com/tinyalsa/tinyalsa")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -300,7 +301,7 @@ Linux kernel.")
 (define-public libopenmpt
   (package
     (name "libopenmpt")
-    (version "0.5.2")
+    (version "0.5.3")
     (source
      (origin
        (method url-fetch)
@@ -308,7 +309,7 @@ Linux kernel.")
         (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
                        "libopenmpt-" version "+release.autotools.tar.gz"))
        (sha256
-        (base32 "1cwpc4j90dpxa2siia68rg9qwwm2xk6bhxnslfjj364507jy6s4l"))))
+        (base32 "1f155yf5v57dwhzb7z0kh67lckr3yq4x8040dm54qgbxw582la77"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -862,18 +863,30 @@ tools.")
          "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
          ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
          ;; CVE-2017-6837:
-         "audiofile-Check-the-number-of-coefficients.patch"
+         "audiofile-check-number-of-coefficients.patch"
          ;; CVE-2017-6839:
-         "audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch"
+         "audiofile-overflow-in-MSADPCM.patch"
          ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
-         "audiofile-Fix-multiply-overflow-sfconvert.patch"
-         "audiofile-signature-of-multiplyCheckOverflow.patch"
+         "audiofile-multiply-overflow.patch"
+         "audiofile-function-signature.patch"
          ;; CVE-2017-6831:
          "audiofile-Fail-on-error-in-parseFormat.patch"
          ;; CVE-2017-6833:
-         "audiofile-division-by-zero-BlockCodec-runPull.patch"
+         "audiofile-division-by-zero.patch"
          "audiofile-CVE-2018-13440.patch"
          "audiofile-CVE-2018-17095.patch"))))
+    (properties `((lint-hidden-cve . ("CVE-2017-6829"
+
+                                      "CVE-2017-6827" "CVE-2017-6828"
+                                      "CVE-2017-6832" "CVE-2017-6835"
+                                      "CVE-2017-6837"
+
+                                      "CVE-2017-6839"
+
+                                      "CVE-2017-6830" "CVE-2017-6834"
+                                      "CVE-2017-6836" "CVE-2017-6838"
+
+                                      "CVE-2017-6831" "CVE-2017-6833"))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)))
@@ -2926,7 +2939,7 @@ aimed at audio/musical applications.")
     (description "This package contains the @command{resample} and
 @command{windowfilter} command line utilities.  The @command{resample} command
 allows changing the sampling rate of a sound file, while the
-@command{windowfilter} command allows to design Finite Impulse Response (FIR)
+@command{windowfilter} command allows designing Finite Impulse Response (FIR)
 filters using the so-called @emph{window method}.")
     (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
     (license license:lgpl2.1+)))
@@ -3510,8 +3523,11 @@ interface.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
-                           "/qsynth-" version ".tar.gz"))
+       (uri (list
+              (string-append "mirror://sourceforge/qsynth/qsynth/" version
+                             "/qsynth-" version ".tar.gz")
+              (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
+                             "/qsynth-" version ".tar.gz")))
        (sha256
         (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
     (build-system gnu-build-system)
@@ -3790,8 +3806,11 @@ machine-readable ASCII format.")
     (version "3.0.10")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
-                                 "shntool-" version ".tar.gz"))
+             (uri (list
+                    (string-append "http://etree.org/shnutils/shntool/dist/src/"
+                                   "shntool-" version ".tar.gz")
+                    (string-append "mirror://debian/pool/main/s/shntool/shntool_"
+                                   version ".orig.tar.gz")))
              (sha256
               (base32
                "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
@@ -3822,9 +3841,9 @@ use them split WAVE data into multiple files.")
     (build-system gnu-build-system)
     (arguments
      ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
-     '(#:tests? #f
+     `(#:tests? #f
        #:make-flags
-       (list "CC=gcc"
+       (list (string-append "CC=" ,(cc-for-target))
              ;; Build shared library.
              "CONFIG_SHARED=1"
              (string-append "PREFIX=" (assoc-ref %outputs "out"))
@@ -3899,8 +3918,8 @@ loudness of audio and video files to the same level.")
            "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
       (build-system gnu-build-system)
       (arguments
-       '(#:make-flags (list (string-append "PREFIX=" %output)
-                            "CC=gcc")
+       `(#:make-flags (list (string-append "PREFIX=" %output)
+                            (string-append "CC=" ,(cc-for-target)))
          #:tests? #f ; No tests
          #:phases
          (modify-phases %standard-phases
@@ -4068,14 +4087,14 @@ on the ALSA software PCM plugin.")
 (define-public snd
   (package
     (name "snd")
-    (version "20.7")
+    (version "20.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
                                   "snd-" version ".tar.gz"))
               (sha256
                (base32
-                "1kd422krz8ln4m8g3p14wfplcq8lgpzly9297rpbvyc94dc6sdwj"))))
+                "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -4695,7 +4714,7 @@ in the package.")
 (define-public libaudec
   (package
     (name "libaudec")
-    (version "0.2.3")
+    (version "0.2.4")
     (source
       (origin
         (method git-fetch)
@@ -4705,11 +4724,13 @@ in the package.")
         (file-name (git-file-name name version))
         (sha256
           (base32
-            "04hw61db8wscj28qjyiaiafx8xl87njgmvqszxyhs4gmg8xgjip7"))))
+            "1570m2dfia17dbkhd2qhx8jjihrpm7g8nnyg6n4wif4vv229s7dz"))))
    (build-system meson-build-system)
    (arguments
-     ;; Compile tests.
-    `(#:configure-flags `("-Dtests=true")))
+    `(#:meson ,meson-0.55
+      #:configure-flags
+      ;; Build the tests.
+      `("-Dtests=true")))
    (inputs
     `(("libsamplerate" ,libsamplerate)
       ("libsndfile" ,libsndfile)))
diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm
index b3ff912c8f..afa20945e7 100644
--- a/gnu/packages/authentication.scm
+++ b/gnu/packages/authentication.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -33,26 +33,14 @@
 (define-public oath-toolkit
   (package
     (name "oath-toolkit")
-    (version "2.6.2")
+    (version "2.6.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.savannah.nongnu.org/releases/"
                            name "/" name "-" version ".tar.gz"))
-       (patches
-        (append (search-patches "oath-toolkit-glibc-compat.patch")
-                (list (origin
-                        ;; This huge commit updates gnulib for GCC 7 compatibility.
-                        (method url-fetch)
-                        (uri (string-append
-                              "https://gitlab.com/oath-toolkit/oath-toolkit/commit/"
-                              "2fffce2a471f74a585939c84cce16ef3015e5d3d.diff"))
-                        (file-name "oath-toolkit-update-gnulib.patch")
-                        (sha256
-                         (base32
-                          "088c9s4ay1b54bjqc4mwfs5l3f6357zj5vpw771zlq5g4addd4s0"))))))
        (sha256
-        (base32 "182ah8vfbg0yhv6mh1b6ap944d0na6x7lpfkwkmzb6jl9gx4cd5h"))))
+        (base32 "116na9nncpwshl3ww8w3llzwk49igilplxcjy1k6jzl3mmg2bimz"))))
     (build-system gnu-build-system)
     (arguments
      ;; TODO ‘--enable-pskc’ causes xmlsec-related test suite failures.
diff --git a/gnu/packages/aux-files/linux-libre/5.8-arm.conf b/gnu/packages/aux-files/linux-libre/5.9-arm.conf
index 1e42bcdc82..1d1a86250e 100644
--- a/gnu/packages/aux-files/linux-libre/5.8-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/5.9-arm.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 5.8.0-gnu Kernel Configuration
+# Linux/arm 5.9.2 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (Debian 8.3.0-6) 8.3.0"
 CONFIG_CC_IS_GCC=y
@@ -173,6 +173,7 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_RD_ZSTD=y
 CONFIG_BOOT_CONFIG=y
 CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -231,6 +232,7 @@ CONFIG_SLAB=y
 # CONFIG_SLOB is not set
 CONFIG_SLAB_MERGE_DEFAULT=y
 CONFIG_SLAB_FREELIST_RANDOM=y
+CONFIG_SLAB_FREELIST_HARDENED=y
 CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
 CONFIG_SYSTEM_DATA_VERIFICATION=y
 CONFIG_PROFILING=y
@@ -393,6 +395,9 @@ CONFIG_SOC_IMX6Q=y
 # CONFIG_ARCH_MESON is not set
 # CONFIG_ARCH_MILBEAUT is not set
 # CONFIG_ARCH_MMP is not set
+CONFIG_ARCH_MSTARV7=y
+CONFIG_MACH_INFINITY=y
+CONFIG_MACH_MERCURY=y
 CONFIG_ARCH_MVEBU=y
 CONFIG_MACH_MVEBU_ANY=y
 CONFIG_MACH_MVEBU_V7=y
@@ -779,6 +784,7 @@ CONFIG_RESET_ATTACK_MITIGATION=y
 CONFIG_ARM_PSCI_FW=y
 CONFIG_HAVE_ARM_SMCCC=y
 CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y
+CONFIG_ARM_SMCCC_SOC_ID=y
 
 #
 # Tegra firmware driver
@@ -833,7 +839,6 @@ CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_STACKPROTECTOR=y
-CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
 CONFIG_STACKPROTECTOR=y
 CONFIG_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_CONTEXT_TRACKING=y
@@ -846,7 +851,6 @@ CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
 CONFIG_HAVE_EXIT_THREAD=y
 CONFIG_ARCH_MMAP_RND_BITS=8
 CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
-CONFIG_HAVE_COPY_THREAD_TLS=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
 CONFIG_OLD_SIGACTION=y
@@ -1146,8 +1150,8 @@ CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_IPV6_RPL_LWTUNNEL is not set
 # CONFIG_NETLABEL is not set
 CONFIG_MPTCP=y
+CONFIG_INET_MPTCP_DIAG=m
 CONFIG_MPTCP_IPV6=y
-# CONFIG_MPTCP_HMAC_TEST is not set
 CONFIG_NETWORK_SECMARK=y
 CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
@@ -1570,6 +1574,7 @@ CONFIG_NET_DSA_TAG_DSA=m
 CONFIG_NET_DSA_TAG_EDSA=m
 CONFIG_NET_DSA_TAG_MTK=m
 CONFIG_NET_DSA_TAG_KSZ=m
+CONFIG_NET_DSA_TAG_RTL4_A=m
 CONFIG_NET_DSA_TAG_OCELOT=m
 CONFIG_NET_DSA_TAG_QCA=m
 CONFIG_NET_DSA_TAG_LAN9303=m
@@ -2017,6 +2022,7 @@ CONFIG_PCIE_CADENCE=y
 CONFIG_PCIE_CADENCE_HOST=y
 CONFIG_PCIE_CADENCE_PLAT=y
 CONFIG_PCIE_CADENCE_PLAT_HOST=y
+# CONFIG_PCI_J721E_HOST is not set
 # end of Cadence PCIe controllers support
 # end of PCI controller drivers
 
@@ -2187,6 +2193,9 @@ CONFIG_MTD_SST25L=m
 # CONFIG_MTD_DOCG3 is not set
 # end of Self-contained MTD device drivers
 
+#
+# NAND
+#
 CONFIG_MTD_NAND_CORE=m
 CONFIG_MTD_ONENAND=y
 CONFIG_MTD_ONENAND_VERIFY_WRITE=y
@@ -2229,6 +2238,7 @@ CONFIG_MTD_NAND_NANDSIM=m
 CONFIG_MTD_NAND_RICOH=m
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 CONFIG_MTD_SPI_NAND=m
+# end of NAND
 
 #
 # LPDDR & LPDDR2 PCM memory drivers
@@ -2240,7 +2250,6 @@ CONFIG_MTD_QINFO_PROBE=m
 
 CONFIG_MTD_SPI_NOR=m
 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
-# CONFIG_SPI_CADENCE_QUADSPI is not set
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MTD_UBI_BEB_LIMIT=20
@@ -2309,6 +2318,7 @@ CONFIG_NVME_RDMA=m
 # CONFIG_NVME_FC is not set
 # CONFIG_NVME_TCP is not set
 CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_PASSTHRU is not set
 # CONFIG_NVME_TARGET_LOOP is not set
 CONFIG_NVME_TARGET_RDMA=m
 # CONFIG_NVME_TARGET_FC is not set
@@ -2463,6 +2473,7 @@ CONFIG_SCSI_UFSHCD_PCI=m
 # CONFIG_SCSI_UFS_DWC_TC_PCI is not set
 # CONFIG_SCSI_UFSHCD_PLATFORM is not set
 # CONFIG_SCSI_UFS_BSG is not set
+CONFIG_SCSI_UFS_CRYPTO=y
 # CONFIG_SCSI_HPTIOP is not set
 # CONFIG_SCSI_MYRB is not set
 # CONFIG_SCSI_MYRS is not set
@@ -2623,7 +2634,7 @@ CONFIG_MD_FAULTY=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
-# CONFIG_BCACHE_ASYNC_REGISTRAION is not set
+# CONFIG_BCACHE_ASYNC_REGISTRATION is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_DEBUG is not set
@@ -2953,8 +2964,8 @@ CONFIG_ENC28J60=m
 # CONFIG_ENCX24J600 is not set
 # CONFIG_LAN743X is not set
 CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_MSCC_OCELOT_SWITCH_LIB=m
 CONFIG_MSCC_OCELOT_SWITCH=m
-CONFIG_MSCC_OCELOT_SWITCH_OCELOT=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
 CONFIG_FEALNX=m
@@ -3075,6 +3086,7 @@ CONFIG_SKFP=m
 # CONFIG_HIPPI is not set
 CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVRES=y
 CONFIG_MDIO_BCM_UNIMAC=m
 # CONFIG_MDIO_BITBANG is not set
 CONFIG_MDIO_BUS_MUX=m
@@ -3370,7 +3382,11 @@ CONFIG_MT7601U=m
 # CONFIG_MT7603E is not set
 # CONFIG_MT7615E is not set
 # CONFIG_MT7663U is not set
+# CONFIG_MT7663S is not set
 # CONFIG_MT7915E is not set
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
 CONFIG_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
@@ -3807,6 +3823,7 @@ CONFIG_SERIAL_TEGRA=y
 # CONFIG_SERIAL_MAX310X is not set
 CONFIG_SERIAL_IMX=y
 CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_IMX_EARLYCON=y
 # CONFIG_SERIAL_UARTLITE is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
@@ -3856,6 +3873,7 @@ CONFIG_VIRTIO_CONSOLE=m
 # CONFIG_IPMI_HANDLER is not set
 CONFIG_HW_RANDOM=m
 # CONFIG_HW_RANDOM_TIMERIOMEM is not set
+CONFIG_HW_RANDOM_BA431=m
 CONFIG_HW_RANDOM_BCM2835=m
 CONFIG_HW_RANDOM_IPROC_RNG200=m
 CONFIG_HW_RANDOM_OMAP=m
@@ -4007,6 +4025,7 @@ CONFIG_SPI_BCM2835AUX=m
 CONFIG_SPI_BITBANG=y
 CONFIG_SPI_BUTTERFLY=m
 # CONFIG_SPI_CADENCE is not set
+# CONFIG_SPI_CADENCE_QUADSPI is not set
 # CONFIG_SPI_DESIGNWARE is not set
 # CONFIG_SPI_FSL_LPSPI is not set
 # CONFIG_SPI_FSL_QUADSPI is not set
@@ -4048,6 +4067,7 @@ CONFIG_SPI_SPIDEV=y
 # CONFIG_SPI_LOOPBACK_TEST is not set
 # CONFIG_SPI_TLE62X0 is not set
 # CONFIG_SPI_SLAVE is not set
+CONFIG_SPI_DYNAMIC=y
 # CONFIG_SPMI is not set
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
@@ -4205,6 +4225,7 @@ CONFIG_GPIO_XILINX=m
 # CONFIG_GPIO_MAX732X is not set
 CONFIG_GPIO_PCA953X=m
 CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_PCA9570=m
 CONFIG_GPIO_PCF857X=m
 # CONFIG_GPIO_TPIC2810 is not set
 # CONFIG_GPIO_TS4900 is not set
@@ -4300,6 +4321,7 @@ CONFIG_POWER_RESET_AS3722=y
 # CONFIG_POWER_RESET_BRCMSTB is not set
 CONFIG_POWER_RESET_GPIO=y
 CONFIG_POWER_RESET_GPIO_RESTART=y
+# CONFIG_POWER_RESET_LINKSTATION is not set
 # CONFIG_POWER_RESET_LTC2952 is not set
 # CONFIG_POWER_RESET_QNAP is not set
 CONFIG_POWER_RESET_RESTART=y
@@ -4353,6 +4375,7 @@ CONFIG_CHARGER_BQ2415X=m
 # CONFIG_CHARGER_BQ24190 is not set
 # CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ2515X is not set
 # CONFIG_CHARGER_BQ25890 is not set
 # CONFIG_CHARGER_SMB347 is not set
 # CONFIG_BATTERY_GAUGE_LTC2941 is not set
@@ -4390,6 +4413,7 @@ CONFIG_SENSORS_AXI_FAN_CONTROL=m
 CONFIG_SENSORS_ARM_SCMI=m
 # CONFIG_SENSORS_ASPEED is not set
 CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_CORSAIR_CPRO=m
 CONFIG_SENSORS_DRIVETEMP=m
 CONFIG_SENSORS_DS620=m
 # CONFIG_SENSORS_DS1621 is not set
@@ -4515,6 +4539,7 @@ CONFIG_SENSORS_W83L786NG=m
 # CONFIG_SENSORS_W83627HF is not set
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_NETLINK=y
 # CONFIG_THERMAL_STATISTICS is not set
 CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
 CONFIG_THERMAL_HWMON=y
@@ -4530,7 +4555,6 @@ CONFIG_THERMAL_GOV_STEP_WISE=y
 # CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
 CONFIG_CPU_THERMAL=y
 CONFIG_CPU_FREQ_THERMAL=y
-# CONFIG_CLOCK_THERMAL is not set
 # CONFIG_DEVFREQ_THERMAL is not set
 # CONFIG_THERMAL_EMULATION is not set
 # CONFIG_THERMAL_MMIO is not set
@@ -4571,6 +4595,7 @@ CONFIG_TEGRA_SOCTHERM=y
 # end of NVIDIA Tegra thermal drivers
 
 # CONFIG_GENERIC_ADC_THERMAL is not set
+CONFIG_KHADAS_MCU_FAN_THERMAL=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -4734,7 +4759,6 @@ CONFIG_MFD_SEC_CORE=y
 # CONFIG_MFD_SI476X_CORE is not set
 # CONFIG_MFD_SM501 is not set
 # CONFIG_MFD_SKY81452 is not set
-# CONFIG_MFD_SMSC is not set
 # CONFIG_ABX500_CORE is not set
 CONFIG_MFD_STMPE=y
 
@@ -4792,6 +4816,7 @@ CONFIG_MFD_ROHM_BD70528=m
 CONFIG_MFD_ROHM_BD71828=m
 # CONFIG_MFD_STPMIC1 is not set
 # CONFIG_MFD_STMFX is not set
+CONFIG_MFD_KHADAS_MCU=m
 CONFIG_MFD_VEXPRESS_SYSREG=y
 # end of Multifunction device drivers
 
@@ -4812,10 +4837,12 @@ CONFIG_REGULATOR_BD70528=m
 CONFIG_REGULATOR_BD71828=m
 CONFIG_REGULATOR_BD718XX=m
 CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_CROS_EC=m
 CONFIG_REGULATOR_DA9052=m
 # CONFIG_REGULATOR_DA9210 is not set
 # CONFIG_REGULATOR_DA9211 is not set
 CONFIG_REGULATOR_FAN53555=m
+CONFIG_REGULATOR_FAN53880=m
 CONFIG_REGULATOR_GPIO=m
 # CONFIG_REGULATOR_ISL9305 is not set
 # CONFIG_REGULATOR_ISL6271A is not set
@@ -4844,6 +4871,7 @@ CONFIG_REGULATOR_MPQ7920=m
 # CONFIG_REGULATOR_MT6311 is not set
 CONFIG_REGULATOR_PALMAS=y
 CONFIG_REGULATOR_PBIAS=m
+CONFIG_REGULATOR_PCA9450=m
 CONFIG_REGULATOR_PFUZE100=m
 # CONFIG_REGULATOR_PV88060 is not set
 # CONFIG_REGULATOR_PV88080 is not set
@@ -4858,6 +4886,7 @@ CONFIG_REGULATOR_SLG51000=m
 CONFIG_REGULATOR_TI_ABB=m
 CONFIG_REGULATOR_SY8106A=m
 CONFIG_REGULATOR_SY8824X=m
+CONFIG_REGULATOR_SY8827N=m
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
@@ -4904,10 +4933,12 @@ CONFIG_IR_SUNXI=m
 # CONFIG_IR_SERIAL is not set
 # CONFIG_IR_SIR is not set
 CONFIG_RC_XBOX_DVD=m
+CONFIG_IR_TOY=m
 CONFIG_CEC_CORE=m
 CONFIG_CEC_NOTIFIER=y
 # CONFIG_MEDIA_CEC_RC is not set
 CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_CEC_CH7322=m
 CONFIG_CEC_CROS_EC=m
 CONFIG_CEC_SAMSUNG_S5P=m
 CONFIG_CEC_TEGRA=m
@@ -5371,6 +5402,7 @@ CONFIG_VIDEO_TW9903=m
 CONFIG_VIDEO_TW9906=m
 CONFIG_VIDEO_TW9910=m
 CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_MAX9286=m
 
 #
 # Video and audio decoders
@@ -5440,7 +5472,6 @@ CONFIG_VIDEO_OV2640=m
 CONFIG_VIDEO_OV2659=m
 CONFIG_VIDEO_OV2680=m
 CONFIG_VIDEO_OV2685=m
-CONFIG_VIDEO_OV2740=m
 CONFIG_VIDEO_OV5640=m
 CONFIG_VIDEO_OV5645=m
 CONFIG_VIDEO_OV5647=m
@@ -5470,6 +5501,7 @@ CONFIG_VIDEO_MT9V111=m
 CONFIG_VIDEO_SR030PC30=m
 CONFIG_VIDEO_NOON010PC30=m
 CONFIG_VIDEO_M5MOLS=m
+CONFIG_VIDEO_RDACM20=m
 CONFIG_VIDEO_RJ54N1=m
 CONFIG_VIDEO_S5K6AA=m
 CONFIG_VIDEO_S5K6A3=m
@@ -5486,6 +5518,7 @@ CONFIG_VIDEO_S5C73M3=m
 CONFIG_VIDEO_AD5820=m
 CONFIG_VIDEO_AK7375=m
 CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_DW9768=m
 CONFIG_VIDEO_DW9807_VCM=m
 # end of Lens drivers
 
@@ -5894,7 +5927,6 @@ CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS=m
 CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
 # CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set
 # CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
-# CONFIG_DRM_PANEL_ROCKTECH_JH057N00900 is not set
 # CONFIG_DRM_PANEL_RONBO_RB070D30 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
@@ -5907,6 +5939,7 @@ CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m
 # CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
 # CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
 # CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set
 # CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
 CONFIG_DRM_PANEL_SONY_ACX424AKP=m
 # CONFIG_DRM_PANEL_SONY_ACX565AKM is not set
@@ -6081,7 +6114,6 @@ CONFIG_FB_SIMPLE=y
 #
 # CONFIG_LCD_CLASS_DEVICE is not set
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_GENERIC is not set
 CONFIG_BACKLIGHT_PWM=m
 # CONFIG_BACKLIGHT_DA9052 is not set
 CONFIG_BACKLIGHT_QCOM_WLED=m
@@ -6238,6 +6270,7 @@ CONFIG_SND_VIRTUOSO=m
 # HD-Audio
 #
 CONFIG_SND_HDA=m
+CONFIG_SND_HDA_GENERIC_LEDS=y
 # CONFIG_SND_HDA_INTEL is not set
 CONFIG_SND_HDA_TEGRA=m
 CONFIG_SND_HDA_HWDEP=y
@@ -6374,6 +6407,11 @@ CONFIG_SND_SOC_TEGRA20_I2S=m
 CONFIG_SND_SOC_TEGRA20_SPDIF=m
 CONFIG_SND_SOC_TEGRA30_AHUB=m
 CONFIG_SND_SOC_TEGRA30_I2S=m
+# CONFIG_SND_SOC_TEGRA210_AHUB is not set
+# CONFIG_SND_SOC_TEGRA210_DMIC is not set
+# CONFIG_SND_SOC_TEGRA210_I2S is not set
+# CONFIG_SND_SOC_TEGRA186_DSPK is not set
+# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set
 CONFIG_SND_SOC_TEGRA_RT5640=m
 CONFIG_SND_SOC_TEGRA_WM8753=m
 CONFIG_SND_SOC_TEGRA_WM8903=m
@@ -6477,7 +6515,8 @@ CONFIG_SND_SOC_MAX98090=m
 # CONFIG_SND_SOC_MAX98504 is not set
 # CONFIG_SND_SOC_MAX9867 is not set
 # CONFIG_SND_SOC_MAX98927 is not set
-# CONFIG_SND_SOC_MAX98373 is not set
+CONFIG_SND_SOC_MAX98373=m
+CONFIG_SND_SOC_MAX98373_I2C=m
 # CONFIG_SND_SOC_MAX98390 is not set
 # CONFIG_SND_SOC_MAX9860 is not set
 # CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
@@ -6742,8 +6781,8 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
 CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_AUTOSUSPEND_DELAY=2
 CONFIG_USB_MON=m
@@ -7193,6 +7232,7 @@ CONFIG_MEMSTICK_REALTEK_USB=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_CLASS_FLASH is not set
+CONFIG_LEDS_CLASS_MULTICOLOR=m
 # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
 
 #
@@ -7204,6 +7244,7 @@ CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_BCM6358 is not set
 # CONFIG_LEDS_CR0014114 is not set
 # CONFIG_LEDS_EL15203000 is not set
+# CONFIG_LEDS_TURRIS_OMNIA is not set
 # CONFIG_LEDS_LM3530 is not set
 # CONFIG_LEDS_LM3532 is not set
 # CONFIG_LEDS_LM3642 is not set
@@ -7269,13 +7310,30 @@ CONFIG_LEDS_TRIGGER_CAMERA=m
 CONFIG_LEDS_TRIGGER_PANIC=y
 # CONFIG_LEDS_TRIGGER_NETDEV is not set
 # CONFIG_LEDS_TRIGGER_PATTERN is not set
-# CONFIG_LEDS_TRIGGER_AUDIO is not set
+CONFIG_LEDS_TRIGGER_AUDIO=m
 CONFIG_ACCESSIBILITY=y
 CONFIG_A11Y_BRAILLE_CONSOLE=y
+
+#
+# Speakup console speech
+#
+CONFIG_SPEAKUP=m
+CONFIG_SPEAKUP_SYNTH_ACNTSA=m
+CONFIG_SPEAKUP_SYNTH_APOLLO=m
+CONFIG_SPEAKUP_SYNTH_AUDPTR=m
+CONFIG_SPEAKUP_SYNTH_BNS=m
+CONFIG_SPEAKUP_SYNTH_DECTLK=m
+CONFIG_SPEAKUP_SYNTH_DECEXT=m
+CONFIG_SPEAKUP_SYNTH_LTLK=m
+CONFIG_SPEAKUP_SYNTH_SOFT=m
+CONFIG_SPEAKUP_SYNTH_SPKOUT=m
+CONFIG_SPEAKUP_SYNTH_TXPRT=m
+CONFIG_SPEAKUP_SYNTH_DUMMY=m
+# end of Speakup console speech
+
 CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
-# CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI is not set
 CONFIG_INFINIBAND_USER_MEM=y
 CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
@@ -7471,6 +7529,7 @@ CONFIG_MX3_IPU_IRQS=4
 CONFIG_PL330_DMA=y
 CONFIG_PLX_DMA=m
 CONFIG_TEGRA20_APB_DMA=y
+CONFIG_XILINX_ZYNQMP_DPDMA=m
 # CONFIG_QCOM_HIDMA_MGMT is not set
 # CONFIG_QCOM_HIDMA is not set
 # CONFIG_DW_DMAC is not set
@@ -7514,6 +7573,7 @@ CONFIG_UIO_NETX=m
 # CONFIG_UIO_PRUSS is not set
 CONFIG_UIO_MF624=m
 # CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=m
 CONFIG_VIRTIO_MENU=y
@@ -7527,6 +7587,8 @@ CONFIG_VIRTIO_MMIO=m
 CONFIG_VDPA=m
 # CONFIG_VDPA_SIM is not set
 CONFIG_IFCVF=m
+CONFIG_MLX5_VDPA=y
+CONFIG_MLX5_VDPA_NET=m
 CONFIG_VHOST_IOTLB=m
 CONFIG_VHOST=m
 CONFIG_VHOST_MENU=y
@@ -7636,24 +7698,6 @@ CONFIG_88EU_AP_MODE=y
 # end of IIO staging drivers
 
 # CONFIG_FB_SM750 is not set
-
-#
-# Speakup console speech
-#
-CONFIG_SPEAKUP=m
-CONFIG_SPEAKUP_SYNTH_ACNTSA=m
-CONFIG_SPEAKUP_SYNTH_APOLLO=m
-CONFIG_SPEAKUP_SYNTH_AUDPTR=m
-CONFIG_SPEAKUP_SYNTH_BNS=m
-CONFIG_SPEAKUP_SYNTH_DECTLK=m
-CONFIG_SPEAKUP_SYNTH_DECEXT=m
-CONFIG_SPEAKUP_SYNTH_LTLK=m
-CONFIG_SPEAKUP_SYNTH_SOFT=m
-CONFIG_SPEAKUP_SYNTH_SPKOUT=m
-CONFIG_SPEAKUP_SYNTH_TXPRT=m
-CONFIG_SPEAKUP_SYNTH_DUMMY=m
-# end of Speakup console speech
-
 # CONFIG_MFD_NVEC is not set
 # CONFIG_STAGING_MEDIA is not set
 
@@ -7667,15 +7711,13 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
 # CONFIG_FIREWIRE_SERIAL is not set
 # CONFIG_GS_FPGABOOT is not set
 # CONFIG_UNISYSSPAR is not set
-# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
 # CONFIG_FB_TFT is not set
-# CONFIG_WILC1000_SDIO is not set
-# CONFIG_WILC1000_SPI is not set
 # CONFIG_KS7010 is not set
 CONFIG_BCM_VIDEOCORE=y
 # CONFIG_BCM2835_VCHIQ is not set
 # CONFIG_SND_BCM2835 is not set
 # CONFIG_VIDEO_BCM2835 is not set
+# CONFIG_BCM2835_VCHIQ_MMAL is not set
 CONFIG_PI433=m
 
 #
@@ -7717,6 +7759,7 @@ CONFIG_CLK_SP810=y
 CONFIG_CLK_VEXPRESS_OSC=y
 # end of Clock driver for ARM Reference designs
 
+# CONFIG_CLK_HSDK is not set
 CONFIG_COMMON_CLK_MAX77686=m
 CONFIG_COMMON_CLK_MAX9485=m
 CONFIG_COMMON_CLK_RK808=m
@@ -7737,6 +7780,7 @@ CONFIG_COMMON_CLK_PALMAS=m
 # CONFIG_COMMON_CLK_VC5 is not set
 # CONFIG_COMMON_CLK_BD718XX is not set
 # CONFIG_COMMON_CLK_FIXED_MMIO is not set
+CONFIG_CLK_BCM2711_DVP=y
 # CONFIG_CLK_BCM2835 is not set
 CONFIG_CLK_RASPBERRYPI=m
 CONFIG_MXC_CLK=y
@@ -7747,11 +7791,13 @@ CONFIG_MXC_CLK=y
 CONFIG_MVEBU_CLK_COMMON=y
 CONFIG_MVEBU_CLK_CPU=y
 CONFIG_MVEBU_CLK_COREDIV=y
+CONFIG_ARMADA_AP_CP_HELPER=y
 CONFIG_ARMADA_370_CLK=y
 CONFIG_ARMADA_375_CLK=y
 CONFIG_ARMADA_38X_CLK=y
 CONFIG_ARMADA_39X_CLK=y
 CONFIG_ARMADA_XP_CLK=y
+CONFIG_ARMADA_AP_CPU_CLK=y
 CONFIG_COMMON_CLK_SAMSUNG=y
 CONFIG_EXYNOS_AUDSS_CLK_CON=y
 CONFIG_CLK_SUNXI=y
@@ -7907,6 +7953,7 @@ CONFIG_EXYNOS_CHIPID=y
 CONFIG_EXYNOS_PMU=y
 CONFIG_EXYNOS_PMU_ARM_DRIVERS=y
 CONFIG_EXYNOS_PM_DOMAINS=y
+CONFIG_EXYNOS_REGULATOR_COUPLER=y
 CONFIG_SUNXI_SRAM=y
 # CONFIG_ARCH_TEGRA_2x_SOC is not set
 # CONFIG_ARCH_TEGRA_3x_SOC is not set
@@ -7997,6 +8044,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # CONFIG_BMA220 is not set
 CONFIG_BMA400=m
 CONFIG_BMA400_I2C=m
+CONFIG_BMA400_SPI=m
 # CONFIG_BMC150_ACCEL is not set
 # CONFIG_DA280 is not set
 # CONFIG_DA311 is not set
@@ -8118,6 +8166,8 @@ CONFIG_XILINX_XADC=m
 # CONFIG_BME680 is not set
 CONFIG_CCS811=m
 # CONFIG_IAQCORE is not set
+CONFIG_SCD30_CORE=m
+CONFIG_SCD30_I2C=m
 # CONFIG_SENSIRION_SGP30 is not set
 # CONFIG_SPS30 is not set
 # CONFIG_VZ89X is not set
@@ -8259,6 +8309,9 @@ CONFIG_HID_SENSOR_GYRO_3D=m
 # CONFIG_FXOS8700_I2C is not set
 # CONFIG_FXOS8700_SPI is not set
 # CONFIG_KMX61 is not set
+CONFIG_INV_ICM42600=m
+CONFIG_INV_ICM42600_I2C=m
+CONFIG_INV_ICM42600_SPI=m
 # CONFIG_INV_MPU6050_I2C is not set
 # CONFIG_INV_MPU6050_SPI is not set
 # CONFIG_IIO_ST_LSM6DSX is not set
@@ -8545,6 +8598,7 @@ CONFIG_PHY_ROCKCHIP_USB=m
 CONFIG_PHY_EXYNOS_DP_VIDEO=m
 CONFIG_PHY_EXYNOS_MIPI_VIDEO=m
 # CONFIG_PHY_EXYNOS_PCIE is not set
+CONFIG_PHY_SAMSUNG_UFS=m
 CONFIG_PHY_SAMSUNG_USB2=m
 CONFIG_PHY_EXYNOS4210_USB2=y
 CONFIG_PHY_EXYNOS4X12_USB2=y
@@ -8586,7 +8640,7 @@ CONFIG_DAX=m
 CONFIG_NVMEM=y
 CONFIG_NVMEM_SYSFS=y
 # CONFIG_NVMEM_IMX_IIM is not set
-# CONFIG_NVMEM_IMX_OCOTP is not set
+CONFIG_NVMEM_IMX_OCOTP=m
 CONFIG_ROCKCHIP_EFUSE=m
 CONFIG_ROCKCHIP_OTP=m
 CONFIG_NVMEM_SUNXI_SID=m
@@ -8620,6 +8674,7 @@ CONFIG_PM_OPP=y
 CONFIG_COUNTER=m
 CONFIG_TI_EQEP=m
 CONFIG_FTM_QUADDEC=m
+CONFIG_MICROCHIP_TCB_CAPTURE=m
 # CONFIG_MOST is not set
 # end of Device Drivers
 
@@ -8878,6 +8933,7 @@ CONFIG_NFSD_PNFS=y
 CONFIG_NFSD_BLOCKLAYOUT=y
 # CONFIG_NFSD_SCSILAYOUT is not set
 # CONFIG_NFSD_FLEXFILELAYOUT is not set
+# CONFIG_NFSD_V4_2_INTER_SSC is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
@@ -9346,7 +9402,7 @@ CONFIG_LZ4_COMPRESS=m
 CONFIG_LZ4HC_COMPRESS=m
 CONFIG_LZ4_DECOMPRESS=y
 CONFIG_ZSTD_COMPRESS=m
-CONFIG_ZSTD_DECOMPRESS=m
+CONFIG_ZSTD_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 # CONFIG_XZ_DEC_X86 is not set
 # CONFIG_XZ_DEC_POWERPC is not set
@@ -9362,6 +9418,7 @@ CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
 CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_REED_SOLOMON=m
 CONFIG_REED_SOLOMON_DEC16=y
@@ -9374,6 +9431,7 @@ CONFIG_INTERVAL_TREE=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_DMA=y
+CONFIG_DMA_OPS=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
@@ -9473,6 +9531,7 @@ CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_HEADERS_INSTALL is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -9486,6 +9545,9 @@ CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
 CONFIG_MAGIC_SYSRQ_SERIAL=y
 CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
 CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
 # CONFIG_UBSAN is not set
@@ -9519,7 +9581,6 @@ CONFIG_DEBUG_MEMORY_INIT=y
 # CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_CC_HAS_KASAN_GENERIC=y
 CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
-CONFIG_KASAN_STACK=1
 # end of Memory Debugging
 
 # CONFIG_DEBUG_SHIRQ is not set
@@ -9591,6 +9652,7 @@ CONFIG_BUG_ON_DATA_CORRUPTION=y
 #
 # CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_REF_SCALE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=21
 # CONFIG_RCU_TRACE is not set
 # CONFIG_RCU_EQS_DEBUG is not set
@@ -9723,6 +9785,7 @@ CONFIG_TEST_STATIC_KEYS=m
 # CONFIG_TEST_MEMCAT_P is not set
 # CONFIG_TEST_STACKINIT is not set
 # CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_FREE_PAGES is not set
 # CONFIG_MEMTEST is not set
 # end of Kernel Testing and Coverage
 # end of Kernel hacking
diff --git a/gnu/packages/aux-files/linux-libre/5.8-arm64.conf b/gnu/packages/aux-files/linux-libre/5.9-arm64.conf
index 42cc1f2eb9..28d683a040 100644
--- a/gnu/packages/aux-files/linux-libre/5.8-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.9-arm64.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 5.8.0-gnu Kernel Configuration
+# Linux/arm64 5.9.2 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (Debian 8.3.0-6) 8.3.0"
 CONFIG_CC_IS_GCC=y
@@ -158,6 +158,7 @@ CONFIG_CGROUP_BPF=y
 CONFIG_SOCK_CGROUP_DATA=y
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
+CONFIG_TIME_NS=y
 CONFIG_IPC_NS=y
 CONFIG_USER_NS=y
 CONFIG_PID_NS=y
@@ -174,6 +175,7 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_RD_ZSTD=y
 CONFIG_BOOT_CONFIG=y
 CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -288,10 +290,12 @@ CONFIG_ARCH_BCM2835=y
 CONFIG_ARCH_BITMAIN=y
 # CONFIG_ARCH_BRCMSTB is not set
 # CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_SPARX5 is not set
 # CONFIG_ARCH_K3 is not set
 # CONFIG_ARCH_LAYERSCAPE is not set
 # CONFIG_ARCH_LG1K is not set
 CONFIG_ARCH_HISI=y
+CONFIG_ARCH_KEEMBAY=y
 # CONFIG_ARCH_MEDIATEK is not set
 CONFIG_ARCH_MESON=y
 CONFIG_ARCH_MVEBU=y
@@ -404,7 +408,6 @@ CONFIG_XEN=y
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_UNMAP_KERNEL_AT_EL0=y
 CONFIG_HARDEN_BRANCH_PREDICTOR=y
-CONFIG_HARDEN_EL2_VECTORS=y
 CONFIG_ARM64_SSBD=y
 CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
 # CONFIG_ARM64_SW_TTBR0_PAN is not set
@@ -564,6 +567,7 @@ CONFIG_ARM_SCMI_CPUFREQ=m
 CONFIG_ARM_TEGRA20_CPUFREQ=m
 CONFIG_ARM_TEGRA124_CPUFREQ=y
 # CONFIG_ARM_TEGRA186_CPUFREQ is not set
+CONFIG_ARM_TEGRA194_CPUFREQ=m
 # end of CPU Frequency scaling
 # end of CPU Power Management
 
@@ -615,6 +619,7 @@ CONFIG_ARM_PSCI_FW=y
 # CONFIG_ARM_PSCI_CHECKER is not set
 CONFIG_HAVE_ARM_SMCCC=y
 CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y
+CONFIG_ARM_SMCCC_SOC_ID=y
 
 #
 # Tegra firmware driver
@@ -746,7 +751,6 @@ CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_ARCH_STACKLEAK=y
 CONFIG_HAVE_STACKPROTECTOR=y
-CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
 CONFIG_STACKPROTECTOR=y
 CONFIG_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_CONTEXT_TRACKING=y
@@ -762,7 +766,6 @@ CONFIG_ARCH_MMAP_RND_BITS=18
 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
 CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
-CONFIG_HAVE_COPY_THREAD_TLS=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
 CONFIG_COMPAT_OLD_SIGACTION=y
@@ -956,7 +959,6 @@ CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_SPARSEMEM_MANUAL=y
 CONFIG_SPARSEMEM=y
 CONFIG_NEED_MULTIPLE_NODES=y
-CONFIG_HAVE_MEMORY_PRESENT=y
 CONFIG_SPARSEMEM_EXTREME=y
 CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
 CONFIG_SPARSEMEM_VMEMMAP=y
@@ -1139,8 +1141,8 @@ CONFIG_IPV6_SEG6_BPF=y
 # CONFIG_IPV6_RPL_LWTUNNEL is not set
 # CONFIG_NETLABEL is not set
 CONFIG_MPTCP=y
+CONFIG_INET_MPTCP_DIAG=m
 CONFIG_MPTCP_IPV6=y
-# CONFIG_MPTCP_HMAC_TEST is not set
 CONFIG_NETWORK_SECMARK=y
 CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
@@ -1563,6 +1565,7 @@ CONFIG_NET_DSA_TAG_DSA=m
 CONFIG_NET_DSA_TAG_EDSA=m
 CONFIG_NET_DSA_TAG_MTK=m
 CONFIG_NET_DSA_TAG_KSZ=m
+CONFIG_NET_DSA_TAG_RTL4_A=m
 CONFIG_NET_DSA_TAG_OCELOT=m
 CONFIG_NET_DSA_TAG_QCA=m
 CONFIG_NET_DSA_TAG_LAN9303=m
@@ -1942,6 +1945,7 @@ CONFIG_GRO_CELLS=y
 CONFIG_NET_DEVLINK=y
 CONFIG_PAGE_POOL=y
 CONFIG_FAILOVER=m
+CONFIG_ETHTOOL_NETLINK=y
 CONFIG_HAVE_EBPF_JIT=y
 
 #
@@ -2035,6 +2039,7 @@ CONFIG_PCIE_TEGRA194_HOST=m
 # Cadence PCIe controllers support
 #
 # CONFIG_PCIE_CADENCE_PLAT_HOST is not set
+# CONFIG_PCI_J721E_HOST is not set
 # end of Cadence PCIe controllers support
 # end of PCI controller drivers
 
@@ -2204,6 +2209,9 @@ CONFIG_MTD_SST25L=m
 # CONFIG_MTD_DOCG3 is not set
 # end of Self-contained MTD device drivers
 
+#
+# NAND
+#
 CONFIG_MTD_NAND_CORE=m
 CONFIG_MTD_ONENAND=m
 CONFIG_MTD_ONENAND_VERIFY_WRITE=y
@@ -2247,6 +2255,7 @@ CONFIG_MTD_NAND_DISKONCHIP=m
 CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
 # CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
 CONFIG_MTD_SPI_NAND=m
+# end of NAND
 
 #
 # LPDDR & LPDDR2 PCM memory drivers
@@ -2257,7 +2266,6 @@ CONFIG_MTD_QINFO_PROBE=m
 
 CONFIG_MTD_SPI_NOR=m
 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
-# CONFIG_SPI_CADENCE_QUADSPI is not set
 CONFIG_SPI_HISI_SFC=m
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
@@ -2333,6 +2341,7 @@ CONFIG_NVME_RDMA=m
 CONFIG_NVME_FC=m
 CONFIG_NVME_TCP=m
 CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_PASSTHRU is not set
 # CONFIG_NVME_TARGET_LOOP is not set
 CONFIG_NVME_TARGET_RDMA=m
 CONFIG_NVME_TARGET_FC=m
@@ -2499,6 +2508,7 @@ CONFIG_SCSI_UFSHCD_PCI=m
 # CONFIG_SCSI_UFS_DWC_TC_PCI is not set
 # CONFIG_SCSI_UFSHCD_PLATFORM is not set
 # CONFIG_SCSI_UFS_BSG is not set
+CONFIG_SCSI_UFS_CRYPTO=y
 CONFIG_SCSI_HPTIOP=m
 # CONFIG_SCSI_MYRB is not set
 # CONFIG_SCSI_MYRS is not set
@@ -2666,7 +2676,7 @@ CONFIG_MD_FAULTY=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
-# CONFIG_BCACHE_ASYNC_REGISTRAION is not set
+# CONFIG_BCACHE_ASYNC_REGISTRATION is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_DEBUG is not set
@@ -2983,6 +2993,7 @@ CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 CONFIG_MLX4_CORE_GEN2=y
 CONFIG_MLX5_CORE=m
+CONFIG_MLX5_ACCEL=y
 # CONFIG_MLX5_FPGA is not set
 CONFIG_MLX5_CORE_EN=y
 CONFIG_MLX5_EN_ARFS=y
@@ -2992,6 +3003,8 @@ CONFIG_MLX5_ESWITCH=y
 CONFIG_MLX5_CLS_ACT=y
 CONFIG_MLX5_CORE_EN_DCB=y
 # CONFIG_MLX5_CORE_IPOIB is not set
+CONFIG_MLX5_IPSEC=y
+CONFIG_MLX5_EN_IPSEC=y
 CONFIG_MLX5_SW_STEERING=y
 # CONFIG_MLXSW_CORE is not set
 # CONFIG_MLXFW is not set
@@ -3005,8 +3018,8 @@ CONFIG_NET_VENDOR_MICROCHIP=y
 # CONFIG_ENCX24J600 is not set
 # CONFIG_LAN743X is not set
 CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_MSCC_OCELOT_SWITCH_LIB=m
 CONFIG_MSCC_OCELOT_SWITCH=m
-CONFIG_MSCC_OCELOT_SWITCH_OCELOT=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
 CONFIG_FEALNX=m
@@ -3132,6 +3145,7 @@ CONFIG_SKFP=m
 # CONFIG_NET_SB1000 is not set
 CONFIG_MDIO_DEVICE=m
 CONFIG_MDIO_BUS=m
+CONFIG_MDIO_DEVRES=m
 # CONFIG_MDIO_BCM_UNIMAC is not set
 # CONFIG_MDIO_BITBANG is not set
 CONFIG_MDIO_BUS_MUX=m
@@ -3434,7 +3448,11 @@ CONFIG_MT7601U=m
 # CONFIG_MT7603E is not set
 # CONFIG_MT7615E is not set
 # CONFIG_MT7663U is not set
+# CONFIG_MT7663S is not set
 # CONFIG_MT7915E is not set
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
 CONFIG_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
@@ -3770,6 +3788,8 @@ CONFIG_SERIAL_TEGRA_TCU=m
 # CONFIG_SERIAL_MAX3100 is not set
 # CONFIG_SERIAL_MAX310X is not set
 CONFIG_SERIAL_IMX=m
+CONFIG_SERIAL_IMX_CONSOLE=m
+CONFIG_SERIAL_IMX_EARLYCON=y
 # CONFIG_SERIAL_UARTLITE is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
@@ -3824,6 +3844,7 @@ CONFIG_IPMI_SSIF=m
 # CONFIG_IPMI_POWEROFF is not set
 CONFIG_HW_RANDOM=m
 # CONFIG_HW_RANDOM_TIMERIOMEM is not set
+CONFIG_HW_RANDOM_BA431=m
 CONFIG_HW_RANDOM_BCM2835=m
 CONFIG_HW_RANDOM_IPROC_RNG200=m
 # CONFIG_HW_RANDOM_OMAP is not set
@@ -3984,6 +4005,7 @@ CONFIG_SPI_BCM2835AUX=m
 CONFIG_SPI_BITBANG=m
 CONFIG_SPI_BUTTERFLY=m
 # CONFIG_SPI_CADENCE is not set
+# CONFIG_SPI_CADENCE_QUADSPI is not set
 # CONFIG_SPI_DESIGNWARE is not set
 CONFIG_SPI_FSL_LPSPI=m
 CONFIG_SPI_FSL_QUADSPI=m
@@ -4031,6 +4053,7 @@ CONFIG_SPI_MUX=m
 # CONFIG_SPI_LOOPBACK_TEST is not set
 # CONFIG_SPI_TLE62X0 is not set
 # CONFIG_SPI_SLAVE is not set
+CONFIG_SPI_DYNAMIC=y
 CONFIG_SPMI=y
 CONFIG_SPMI_MSM_PMIC_ARB=y
 # CONFIG_HSI is not set
@@ -4204,6 +4227,7 @@ CONFIG_GPIO_XLP=y
 # CONFIG_GPIO_MAX732X is not set
 CONFIG_GPIO_PCA953X=y
 CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_PCA9570=m
 # CONFIG_GPIO_PCF857X is not set
 # CONFIG_GPIO_TPIC2810 is not set
 # end of I2C GPIO expanders
@@ -4292,6 +4316,7 @@ CONFIG_POWER_RESET=y
 # CONFIG_POWER_RESET_GPIO is not set
 # CONFIG_POWER_RESET_GPIO_RESTART is not set
 CONFIG_POWER_RESET_HISI=y
+# CONFIG_POWER_RESET_LINKSTATION is not set
 CONFIG_POWER_RESET_MSM=y
 CONFIG_POWER_RESET_QCOM_PON=m
 # CONFIG_POWER_RESET_LTC2952 is not set
@@ -4341,6 +4366,7 @@ CONFIG_CHARGER_QCOM_SMBB=m
 # CONFIG_CHARGER_BQ24190 is not set
 # CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ2515X is not set
 # CONFIG_CHARGER_BQ25890 is not set
 # CONFIG_CHARGER_SMB347 is not set
 # CONFIG_BATTERY_GAUGE_LTC2941 is not set
@@ -4378,6 +4404,7 @@ CONFIG_SENSORS_AXI_FAN_CONTROL=m
 CONFIG_SENSORS_ARM_SCMI=m
 # CONFIG_SENSORS_ASPEED is not set
 CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_CORSAIR_CPRO=m
 CONFIG_SENSORS_DRIVETEMP=m
 CONFIG_SENSORS_DS620=m
 # CONFIG_SENSORS_DS1621 is not set
@@ -4509,6 +4536,7 @@ CONFIG_SENSORS_XGENE=m
 #
 # CONFIG_SENSORS_ACPI_POWER is not set
 CONFIG_THERMAL=y
+CONFIG_THERMAL_NETLINK=y
 # CONFIG_THERMAL_STATISTICS is not set
 CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
 CONFIG_THERMAL_HWMON=y
@@ -4524,7 +4552,6 @@ CONFIG_THERMAL_GOV_STEP_WISE=y
 # CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
 CONFIG_CPU_THERMAL=y
 CONFIG_CPU_FREQ_THERMAL=y
-# CONFIG_CLOCK_THERMAL is not set
 # CONFIG_DEVFREQ_THERMAL is not set
 # CONFIG_THERMAL_EMULATION is not set
 # CONFIG_THERMAL_MMIO is not set
@@ -4562,6 +4589,7 @@ CONFIG_QCOM_TSENS=m
 CONFIG_QCOM_SPMI_TEMP_ALARM=m
 # end of Qualcomm thermal drivers
 
+CONFIG_KHADAS_MCU_FAN_THERMAL=m
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -4720,7 +4748,6 @@ CONFIG_MFD_RK808=m
 # CONFIG_MFD_SI476X_CORE is not set
 # CONFIG_MFD_SM501 is not set
 # CONFIG_MFD_SKY81452 is not set
-# CONFIG_MFD_SMSC is not set
 # CONFIG_ABX500_CORE is not set
 # CONFIG_MFD_STMPE is not set
 CONFIG_MFD_SUN6I_PRCM=y
@@ -4764,6 +4791,7 @@ CONFIG_MFD_ROHM_BD70528=m
 CONFIG_MFD_ROHM_BD71828=m
 # CONFIG_MFD_STPMIC1 is not set
 # CONFIG_MFD_STMFX is not set
+CONFIG_MFD_KHADAS_MCU=m
 CONFIG_MFD_VEXPRESS_SYSREG=y
 # CONFIG_RAVE_SP_CORE is not set
 # end of Multifunction device drivers
@@ -4783,9 +4811,11 @@ CONFIG_REGULATOR_AXP20X=m
 CONFIG_REGULATOR_BD70528=m
 CONFIG_REGULATOR_BD71828=m
 CONFIG_REGULATOR_BD718XX=m
+CONFIG_REGULATOR_CROS_EC=m
 # CONFIG_REGULATOR_DA9210 is not set
 # CONFIG_REGULATOR_DA9211 is not set
 CONFIG_REGULATOR_FAN53555=m
+CONFIG_REGULATOR_FAN53880=m
 CONFIG_REGULATOR_GPIO=m
 CONFIG_REGULATOR_HI655X=m
 # CONFIG_REGULATOR_ISL9305 is not set
@@ -4809,6 +4839,7 @@ CONFIG_REGULATOR_MP8859=m
 CONFIG_REGULATOR_MP886X=m
 CONFIG_REGULATOR_MPQ7920=m
 # CONFIG_REGULATOR_MT6311 is not set
+CONFIG_REGULATOR_PCA9450=m
 # CONFIG_REGULATOR_PFUZE100 is not set
 # CONFIG_REGULATOR_PV88060 is not set
 # CONFIG_REGULATOR_PV88080 is not set
@@ -4817,11 +4848,13 @@ CONFIG_REGULATOR_PWM=m
 CONFIG_REGULATOR_QCOM_RPM=m
 CONFIG_REGULATOR_QCOM_SMD_RPM=m
 CONFIG_REGULATOR_QCOM_SPMI=m
+CONFIG_REGULATOR_QCOM_USB_VBUS=m
 CONFIG_REGULATOR_RK808=m
 CONFIG_REGULATOR_ROHM=m
 CONFIG_REGULATOR_SLG51000=m
 CONFIG_REGULATOR_SY8106A=m
 CONFIG_REGULATOR_SY8824X=m
+CONFIG_REGULATOR_SY8827N=m
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
@@ -4831,6 +4864,7 @@ CONFIG_REGULATOR_SY8824X=m
 # CONFIG_REGULATOR_VCTRL is not set
 # CONFIG_REGULATOR_VEXPRESS is not set
 # CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
+CONFIG_REGULATOR_QCOM_LABIBB=m
 CONFIG_RC_CORE=m
 CONFIG_RC_MAP=m
 CONFIG_LIRC=y
@@ -4871,10 +4905,12 @@ CONFIG_RC_LOOPBACK=m
 # CONFIG_IR_SERIAL is not set
 # CONFIG_IR_SIR is not set
 CONFIG_RC_XBOX_DVD=m
+CONFIG_IR_TOY=m
 CONFIG_CEC_CORE=m
 CONFIG_CEC_NOTIFIER=y
 # CONFIG_MEDIA_CEC_RC is not set
 CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_CEC_CH7322=m
 CONFIG_CEC_CROS_EC=m
 CONFIG_CEC_MESON_AO=m
 CONFIG_CEC_MESON_G12A_AO=m
@@ -5325,6 +5361,7 @@ CONFIG_VIDEO_TW9903=m
 CONFIG_VIDEO_TW9906=m
 CONFIG_VIDEO_TW9910=m
 CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_MAX9286=m
 
 #
 # Video and audio decoders
@@ -5422,6 +5459,7 @@ CONFIG_VIDEO_MT9V111=m
 CONFIG_VIDEO_SR030PC30=m
 CONFIG_VIDEO_NOON010PC30=m
 CONFIG_VIDEO_M5MOLS=m
+CONFIG_VIDEO_RDACM20=m
 CONFIG_VIDEO_RJ54N1=m
 CONFIG_VIDEO_S5K6AA=m
 CONFIG_VIDEO_S5K6A3=m
@@ -5438,6 +5476,7 @@ CONFIG_VIDEO_S5C73M3=m
 CONFIG_VIDEO_AD5820=m
 CONFIG_VIDEO_AK7375=m
 CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_DW9768=m
 CONFIG_VIDEO_DW9807_VCM=m
 # end of Lens drivers
 
@@ -5753,6 +5792,7 @@ CONFIG_NOUVEAU_PLATFORM_DRIVER=y
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
 # CONFIG_NOUVEAU_DEBUG_MMU is not set
+# CONFIG_NOUVEAU_DEBUG_PUSH is not set
 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_VGEM=m
 # CONFIG_DRM_VKMS is not set
@@ -5815,7 +5855,6 @@ CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS=m
 # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
 # CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set
 # CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
-# CONFIG_DRM_PANEL_ROCKTECH_JH057N00900 is not set
 # CONFIG_DRM_PANEL_RONBO_RB070D30 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
 # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
@@ -5828,6 +5867,7 @@ CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m
 # CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
 # CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
 # CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set
 # CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
 CONFIG_DRM_PANEL_SONY_ACX424AKP=m
 # CONFIG_DRM_PANEL_SONY_ACX565AKM is not set
@@ -5999,7 +6039,6 @@ CONFIG_LCD_LMS501KF03=m
 CONFIG_LCD_HX8357=m
 CONFIG_LCD_OTM3225A=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
 CONFIG_BACKLIGHT_PWM=m
 CONFIG_BACKLIGHT_QCOM_WLED=m
 # CONFIG_BACKLIGHT_ADP8860 is not set
@@ -6158,6 +6197,7 @@ CONFIG_SND_VIRTUOSO=m
 # HD-Audio
 #
 CONFIG_SND_HDA=m
+CONFIG_SND_HDA_GENERIC_LEDS=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_TEGRA=m
 CONFIG_SND_HDA_HWDEP=y
@@ -6179,6 +6219,7 @@ CONFIG_SND_HDA_CODEC_CMEDIA=m
 CONFIG_SND_HDA_CODEC_SI3054=m
 CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
 # end of HD-Audio
 
 CONFIG_SND_HDA_CORE=m
@@ -6255,6 +6296,7 @@ CONFIG_SND_SOC_IMX_AUDMIX=m
 CONFIG_SND_I2S_HI6210_I2S=m
 # CONFIG_SND_KIRKWOOD_SOC is not set
 # CONFIG_SND_SOC_IMG is not set
+CONFIG_SND_SOC_INTEL_KEEMBAY=m
 # CONFIG_SND_SOC_MTK_BTCVSD is not set
 
 #
@@ -6319,6 +6361,11 @@ CONFIG_SND_SOC_TEGRA=m
 CONFIG_SND_SOC_TEGRA20_SPDIF=m
 # CONFIG_SND_SOC_TEGRA30_AHUB is not set
 # CONFIG_SND_SOC_TEGRA30_I2S is not set
+# CONFIG_SND_SOC_TEGRA210_AHUB is not set
+# CONFIG_SND_SOC_TEGRA210_DMIC is not set
+# CONFIG_SND_SOC_TEGRA210_I2S is not set
+# CONFIG_SND_SOC_TEGRA186_DSPK is not set
+# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set
 CONFIG_SND_SOC_TEGRA_RT5640=m
 CONFIG_SND_SOC_TEGRA_WM8753=m
 CONFIG_SND_SOC_TEGRA_WM8903=m
@@ -6396,7 +6443,8 @@ CONFIG_SND_SOC_MAX98090=m
 # CONFIG_SND_SOC_MAX98504 is not set
 # CONFIG_SND_SOC_MAX9867 is not set
 CONFIG_SND_SOC_MAX98927=m
-# CONFIG_SND_SOC_MAX98373 is not set
+CONFIG_SND_SOC_MAX98373=m
+CONFIG_SND_SOC_MAX98373_I2C=m
 # CONFIG_SND_SOC_MAX98390 is not set
 # CONFIG_SND_SOC_MAX9860 is not set
 # CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set
@@ -6488,6 +6536,7 @@ CONFIG_SND_SOC_WM8904=m
 # CONFIG_SND_SOC_TPA6130A2 is not set
 # end of CODEC drivers
 
+CONFIG_SND_SIMPLE_CARD_UTILS=m
 # CONFIG_SND_SIMPLE_CARD is not set
 # CONFIG_SND_AUDIO_GRAPH_CARD is not set
 CONFIG_SND_SYNTH_EMUX=m
@@ -6657,8 +6706,8 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
 CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_AUTOSUSPEND_DELAY=2
 CONFIG_USB_MON=m
@@ -7103,6 +7152,7 @@ CONFIG_MEMSTICK_REALTEK_USB=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_CLASS_FLASH is not set
+CONFIG_LEDS_CLASS_MULTICOLOR=m
 CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
 
 #
@@ -7122,6 +7172,7 @@ CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
 # CONFIG_LEDS_LP3952 is not set
+CONFIG_LEDS_LP55XX_COMMON=m
 # CONFIG_LEDS_LP5521 is not set
 # CONFIG_LEDS_LP5523 is not set
 # CONFIG_LEDS_LP5562 is not set
@@ -7178,10 +7229,27 @@ CONFIG_LEDS_TRIGGER_PANIC=y
 CONFIG_LEDS_TRIGGER_AUDIO=m
 CONFIG_ACCESSIBILITY=y
 CONFIG_A11Y_BRAILLE_CONSOLE=y
+
+#
+# Speakup console speech
+#
+CONFIG_SPEAKUP=m
+CONFIG_SPEAKUP_SYNTH_ACNTSA=m
+CONFIG_SPEAKUP_SYNTH_APOLLO=m
+CONFIG_SPEAKUP_SYNTH_AUDPTR=m
+CONFIG_SPEAKUP_SYNTH_BNS=m
+CONFIG_SPEAKUP_SYNTH_DECTLK=m
+CONFIG_SPEAKUP_SYNTH_DECEXT=m
+CONFIG_SPEAKUP_SYNTH_LTLK=m
+CONFIG_SPEAKUP_SYNTH_SOFT=m
+CONFIG_SPEAKUP_SYNTH_SPKOUT=m
+CONFIG_SPEAKUP_SYNTH_TXPRT=m
+CONFIG_SPEAKUP_SYNTH_DUMMY=m
+# end of Speakup console speech
+
 CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
-# CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI is not set
 CONFIG_INFINIBAND_USER_MEM=y
 CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
@@ -7382,6 +7450,7 @@ CONFIG_TEGRA210_ADMA=y
 CONFIG_XGENE_DMA=m
 # CONFIG_XILINX_DMA is not set
 # CONFIG_XILINX_ZYNQMP_DMA is not set
+CONFIG_XILINX_ZYNQMP_DPDMA=m
 CONFIG_QCOM_BAM_DMA=m
 CONFIG_QCOM_HIDMA_MGMT=m
 CONFIG_QCOM_HIDMA=m
@@ -7444,6 +7513,8 @@ CONFIG_VIRTIO_MMIO=m
 CONFIG_VDPA=m
 # CONFIG_VDPA_SIM is not set
 CONFIG_IFCVF=m
+CONFIG_MLX5_VDPA=y
+CONFIG_MLX5_VDPA_NET=m
 CONFIG_VHOST_IOTLB=m
 CONFIG_VHOST=m
 CONFIG_VHOST_MENU=y
@@ -7553,24 +7624,6 @@ CONFIG_88EU_AP_MODE=y
 # end of IIO staging drivers
 
 # CONFIG_FB_SM750 is not set
-
-#
-# Speakup console speech
-#
-CONFIG_SPEAKUP=m
-CONFIG_SPEAKUP_SYNTH_ACNTSA=m
-CONFIG_SPEAKUP_SYNTH_APOLLO=m
-CONFIG_SPEAKUP_SYNTH_AUDPTR=m
-CONFIG_SPEAKUP_SYNTH_BNS=m
-CONFIG_SPEAKUP_SYNTH_DECTLK=m
-CONFIG_SPEAKUP_SYNTH_DECEXT=m
-CONFIG_SPEAKUP_SYNTH_LTLK=m
-CONFIG_SPEAKUP_SYNTH_SOFT=m
-CONFIG_SPEAKUP_SYNTH_SPKOUT=m
-CONFIG_SPEAKUP_SYNTH_TXPRT=m
-CONFIG_SPEAKUP_SYNTH_DUMMY=m
-# end of Speakup console speech
-
 # CONFIG_MFD_NVEC is not set
 # CONFIG_STAGING_MEDIA is not set
 
@@ -7584,15 +7637,13 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
 # CONFIG_FIREWIRE_SERIAL is not set
 # CONFIG_GS_FPGABOOT is not set
 # CONFIG_UNISYSSPAR is not set
-# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
 # CONFIG_FB_TFT is not set
-# CONFIG_WILC1000_SDIO is not set
-# CONFIG_WILC1000_SPI is not set
 # CONFIG_KS7010 is not set
 CONFIG_BCM_VIDEOCORE=y
 # CONFIG_BCM2835_VCHIQ is not set
 # CONFIG_SND_BCM2835 is not set
 # CONFIG_VIDEO_BCM2835 is not set
+# CONFIG_BCM2835_VCHIQ_MMAL is not set
 # CONFIG_PI433 is not set
 
 #
@@ -7638,6 +7689,7 @@ CONFIG_CLK_SP810=y
 CONFIG_CLK_VEXPRESS_OSC=y
 # end of Clock driver for ARM Reference designs
 
+# CONFIG_CLK_HSDK is not set
 # CONFIG_COMMON_CLK_MAX77686 is not set
 CONFIG_COMMON_CLK_MAX9485=m
 CONFIG_COMMON_CLK_RK808=m
@@ -7658,6 +7710,7 @@ CONFIG_COMMON_CLK_XGENE=y
 # CONFIG_COMMON_CLK_VC5 is not set
 # CONFIG_COMMON_CLK_BD718XX is not set
 # CONFIG_COMMON_CLK_FIXED_MMIO is not set
+CONFIG_CLK_BCM2711_DVP=y
 # CONFIG_CLK_BCM2835 is not set
 CONFIG_CLK_RASPBERRYPI=m
 CONFIG_COMMON_CLK_HI3516CV300=y
@@ -7699,10 +7752,13 @@ CONFIG_QCOM_RPMCC=y
 CONFIG_COMMON_CLK_QCOM=y
 CONFIG_QCOM_A53PLL=y
 CONFIG_QCOM_CLK_APCS_MSM8916=m
+CONFIG_QCOM_CLK_APCC_MSM8996=m
 CONFIG_QCOM_CLK_RPM=m
 CONFIG_QCOM_CLK_SMD_RPM=m
 # CONFIG_APQ_GCC_8084 is not set
 # CONFIG_APQ_MMCC_8084 is not set
+# CONFIG_IPQ_APSS_PLL is not set
+# CONFIG_IPQ_APSS_6018 is not set
 # CONFIG_IPQ_GCC_4019 is not set
 # CONFIG_IPQ_GCC_6018 is not set
 # CONFIG_IPQ_GCC_806X is not set
@@ -7726,7 +7782,8 @@ CONFIG_MSM_MMCC_8996=y
 # CONFIG_MSM_MMCC_8998 is not set
 # CONFIG_QCS_GCC_404 is not set
 # CONFIG_SC_DISPCC_7180 is not set
-# CONFIG_SC_GCC_7180 is not set
+CONFIG_SC_GCC_7180=m
+CONFIG_SC_LPASS_CORECC_7180=m
 # CONFIG_SC_GPUCC_7180 is not set
 # CONFIG_SC_MSS_7180 is not set
 # CONFIG_SC_VIDEOCC_7180 is not set
@@ -7741,6 +7798,8 @@ CONFIG_SDM_DISPCC_845=m
 CONFIG_SDM_LPASSCC_845=m
 # CONFIG_SM_GCC_8150 is not set
 # CONFIG_SM_GCC_8250 is not set
+# CONFIG_SM_GPUCC_8150 is not set
+# CONFIG_SM_GPUCC_8250 is not set
 # CONFIG_SPMI_PMIC_CLKDIV is not set
 # CONFIG_QCOM_HFPLL is not set
 # CONFIG_KPSS_XCC is not set
@@ -7886,7 +7945,6 @@ CONFIG_FSL_RCPM=y
 # i.MX SoC drivers
 #
 CONFIG_IMX_GPCV2_PM_DOMAINS=y
-# CONFIG_IMX_SCU_SOC is not set
 CONFIG_SOC_IMX8M=y
 # end of i.MX SoC drivers
 
@@ -7898,6 +7956,7 @@ CONFIG_QCOM_COMMAND_DB=y
 CONFIG_QCOM_GENI_SE=m
 CONFIG_QCOM_GSBI=m
 CONFIG_QCOM_LLCC=m
+CONFIG_QCOM_KRYO_L2_ACCESSORS=y
 CONFIG_QCOM_MDT_LOADER=m
 # CONFIG_QCOM_OCMEM is not set
 CONFIG_QCOM_PDR_HELPERS=m
@@ -7967,6 +8026,8 @@ CONFIG_EXTCON_USB_GPIO=m
 CONFIG_MEMORY=y
 # CONFIG_ARM_PL172_MPMC is not set
 CONFIG_TEGRA_MC=y
+CONFIG_TEGRA210_EMC_TABLE=y
+CONFIG_TEGRA210_EMC=m
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
 # CONFIG_IIO_BUFFER_CB is not set
@@ -7992,6 +8053,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # CONFIG_BMA220 is not set
 CONFIG_BMA400=m
 CONFIG_BMA400_I2C=m
+CONFIG_BMA400_SPI=m
 # CONFIG_BMC150_ACCEL is not set
 # CONFIG_DA280 is not set
 # CONFIG_DA311 is not set
@@ -8111,6 +8173,9 @@ CONFIG_XILINX_XADC=m
 # CONFIG_CCS811 is not set
 # CONFIG_IAQCORE is not set
 # CONFIG_PMS7003 is not set
+CONFIG_SCD30_CORE=m
+CONFIG_SCD30_I2C=m
+CONFIG_SCD30_SERIAL=m
 # CONFIG_SENSIRION_SGP30 is not set
 # CONFIG_SPS30 is not set
 # CONFIG_VZ89X is not set
@@ -8248,6 +8313,9 @@ CONFIG_DHT11=m
 # CONFIG_FXOS8700_I2C is not set
 # CONFIG_FXOS8700_SPI is not set
 # CONFIG_KMX61 is not set
+CONFIG_INV_ICM42600=m
+CONFIG_INV_ICM42600_I2C=m
+CONFIG_INV_ICM42600_SPI=m
 # CONFIG_INV_MPU6050_I2C is not set
 # CONFIG_INV_MPU6050_SPI is not set
 # CONFIG_IIO_ST_LSM6DSX is not set
@@ -8544,13 +8612,12 @@ CONFIG_PHY_QCOM_IPQ806X_SATA=m
 CONFIG_PHY_QCOM_PCIE2=m
 CONFIG_PHY_QCOM_QMP=m
 CONFIG_PHY_QCOM_QUSB2=m
-CONFIG_PHY_QCOM_UFS=m
-CONFIG_PHY_QCOM_UFS_14NM=m
 CONFIG_PHY_QCOM_USB_HS=m
 CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m
 CONFIG_PHY_QCOM_USB_HSIC=m
 CONFIG_PHY_QCOM_USB_HS_28NM=m
 CONFIG_PHY_QCOM_USB_SS=m
+# CONFIG_PHY_QCOM_IPQ806X_USB is not set
 # CONFIG_PHY_ROCKCHIP_DP is not set
 CONFIG_PHY_ROCKCHIP_EMMC=m
 # CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
@@ -8804,6 +8871,7 @@ CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
+# CONFIG_TMPFS_INODE64 is not set
 CONFIG_HUGETLBFS=y
 CONFIG_HUGETLB_PAGE=y
 CONFIG_MEMFD_CREATE=y
@@ -8938,6 +9006,7 @@ CONFIG_NFSD_PNFS=y
 CONFIG_NFSD_BLOCKLAYOUT=y
 # CONFIG_NFSD_SCSILAYOUT is not set
 # CONFIG_NFSD_FLEXFILELAYOUT is not set
+# CONFIG_NFSD_V4_2_INTER_SSC is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
@@ -9420,7 +9489,7 @@ CONFIG_LZ4_COMPRESS=m
 CONFIG_LZ4HC_COMPRESS=m
 CONFIG_LZ4_DECOMPRESS=y
 CONFIG_ZSTD_COMPRESS=m
-CONFIG_ZSTD_DECOMPRESS=m
+CONFIG_ZSTD_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 # CONFIG_XZ_DEC_X86 is not set
 # CONFIG_XZ_DEC_POWERPC is not set
@@ -9435,6 +9504,7 @@ CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
 CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_REED_SOLOMON=m
 CONFIG_REED_SOLOMON_ENC8=y
@@ -9452,6 +9522,7 @@ CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=y
+CONFIG_DMA_OPS=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
@@ -9497,6 +9568,7 @@ CONFIG_OID_REGISTRY=y
 CONFIG_UCS2_STRING=y
 CONFIG_HAVE_GENERIC_VDSO=y
 CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_VDSO_TIME_NS=y
 CONFIG_FONT_SUPPORT=y
 CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
@@ -9556,6 +9628,7 @@ CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_HEADERS_INSTALL is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -9569,6 +9642,9 @@ CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
 CONFIG_MAGIC_SYSRQ_SERIAL=y
 CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
 CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
 CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
@@ -9612,7 +9688,6 @@ CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y
 CONFIG_CC_HAS_KASAN_GENERIC=y
 CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
 # CONFIG_KASAN is not set
-CONFIG_KASAN_STACK=1
 # end of Memory Debugging
 
 # CONFIG_DEBUG_SHIRQ is not set
@@ -9685,6 +9760,7 @@ CONFIG_BUG_ON_DATA_CORRUPTION=y
 #
 # CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_REF_SCALE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=21
 # CONFIG_RCU_TRACE is not set
 # CONFIG_RCU_EQS_DEBUG is not set
@@ -9813,6 +9889,7 @@ CONFIG_TEST_STATIC_KEYS=m
 # CONFIG_TEST_MEMCAT_P is not set
 # CONFIG_TEST_STACKINIT is not set
 # CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_FREE_PAGES is not set
 # CONFIG_MEMTEST is not set
 # end of Kernel Testing and Coverage
 # end of Kernel hacking
diff --git a/gnu/packages/aux-files/linux-libre/5.8-i686.conf b/gnu/packages/aux-files/linux-libre/5.9-i686.conf
index d8f88f0570..f4abcf55b5 100644
--- a/gnu/packages/aux-files/linux-libre/5.8-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.9-i686.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 5.8.0-gnu Kernel Configuration
+# Linux/i386 5.9.2 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (Debian 8.3.0-6) 8.3.0"
 CONFIG_CC_IS_GCC=y
@@ -27,12 +27,14 @@ CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
 CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_HAVE_KERNEL_ZSTD=y
 CONFIG_KERNEL_GZIP=y
 # CONFIG_KERNEL_BZIP2 is not set
 # CONFIG_KERNEL_LZMA is not set
 # CONFIG_KERNEL_XZ is not set
 # CONFIG_KERNEL_LZO is not set
 # CONFIG_KERNEL_LZ4 is not set
+# CONFIG_KERNEL_ZSTD is not set
 CONFIG_DEFAULT_INIT=""
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -76,6 +78,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
 CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
 
 #
 # Timers subsystem
@@ -97,7 +101,6 @@ CONFIG_PREEMPT_VOLUNTARY=y
 #
 CONFIG_TICK_CPU_ACCOUNTING=y
 # CONFIG_IRQ_TIME_ACCOUNTING is not set
-CONFIG_SCHED_THERMAL_PRESSURE=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT_V3=y
 CONFIG_TASKSTATS=y
@@ -180,6 +183,7 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_RD_ZSTD=y
 CONFIG_BOOT_CONFIG=y
 CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -307,14 +311,10 @@ CONFIG_X86_32_IRIS=m
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
 CONFIG_HYPERVISOR_GUEST=y
 CONFIG_PARAVIRT=y
-CONFIG_PARAVIRT_XXL=y
 # CONFIG_PARAVIRT_DEBUG is not set
 CONFIG_PARAVIRT_SPINLOCKS=y
 CONFIG_X86_HV_CALLBACK_VECTOR=y
 CONFIG_XEN=y
-CONFIG_XEN_PV=y
-CONFIG_XEN_PV_SMP=y
-CONFIG_XEN_DOM0=y
 CONFIG_XEN_PVHVM=y
 CONFIG_XEN_PVHVM_SMP=y
 CONFIG_XEN_SAVE_RESTORE=y
@@ -511,7 +511,6 @@ CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
 # CONFIG_ACPI_DEBUGGER is not set
 CONFIG_ACPI_SPCR_TABLE=y
 CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
 CONFIG_ACPI_EC_DEBUGFS=m
 CONFIG_ACPI_AC=m
@@ -720,6 +719,7 @@ CONFIG_KVM_VFIO=y
 CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
 CONFIG_HAVE_KVM_IRQ_BYPASS=y
 CONFIG_HAVE_KVM_NO_POLL=y
+CONFIG_KVM_XFER_TO_GUEST_WORK=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_WERROR=y
@@ -737,6 +737,7 @@ CONFIG_AS_TPAUSE=y
 CONFIG_CRASH_CORE=y
 CONFIG_KEXEC_CORE=y
 CONFIG_HOTPLUG_SMT=y
+CONFIG_GENERIC_ENTRY=y
 CONFIG_OPROFILE=m
 # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
 CONFIG_HAVE_OPROFILE=y
@@ -790,7 +791,6 @@ CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_ARCH_STACKLEAK=y
 CONFIG_HAVE_STACKPROTECTOR=y
-CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
 CONFIG_STACKPROTECTOR=y
 CONFIG_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
@@ -805,7 +805,6 @@ CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
 CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
 CONFIG_HAVE_EXIT_THREAD=y
 CONFIG_ARCH_MMAP_RND_BITS=8
-CONFIG_HAVE_COPY_THREAD_TLS=y
 CONFIG_ISA_BUS_API=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
@@ -947,7 +946,6 @@ CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_FLATMEM_MANUAL is not set
 CONFIG_SPARSEMEM_MANUAL=y
 CONFIG_SPARSEMEM=y
-CONFIG_HAVE_MEMORY_PRESENT=y
 CONFIG_SPARSEMEM_STATIC=y
 CONFIG_HAVE_FAST_GUP=y
 CONFIG_MEMORY_ISOLATION=y
@@ -1128,8 +1126,8 @@ CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_IPV6_RPL_LWTUNNEL is not set
 CONFIG_NETLABEL=y
 CONFIG_MPTCP=y
+CONFIG_INET_MPTCP_DIAG=m
 CONFIG_MPTCP_IPV6=y
-# CONFIG_MPTCP_HMAC_TEST is not set
 CONFIG_NETWORK_SECMARK=y
 CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
@@ -1557,6 +1555,7 @@ CONFIG_NET_DSA_TAG_DSA=m
 CONFIG_NET_DSA_TAG_EDSA=m
 CONFIG_NET_DSA_TAG_MTK=m
 CONFIG_NET_DSA_TAG_KSZ=m
+CONFIG_NET_DSA_TAG_RTL4_A=m
 CONFIG_NET_DSA_TAG_OCELOT=m
 CONFIG_NET_DSA_TAG_QCA=m
 CONFIG_NET_DSA_TAG_LAN9303=m
@@ -2298,6 +2297,9 @@ CONFIG_BCH_CONST_M=14
 CONFIG_BCH_CONST_T=4
 # end of Self-contained MTD device drivers
 
+#
+# NAND
+#
 CONFIG_MTD_NAND_CORE=m
 CONFIG_MTD_ONENAND=m
 CONFIG_MTD_ONENAND_VERIFY_WRITE=y
@@ -2332,6 +2334,7 @@ CONFIG_MTD_NAND_DISKONCHIP=m
 CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
 # CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
 CONFIG_MTD_SPI_NAND=m
+# end of NAND
 
 #
 # LPDDR & LPDDR2 PCM memory drivers
@@ -2447,6 +2450,7 @@ CONFIG_NVME_RDMA=m
 CONFIG_NVME_FC=m
 CONFIG_NVME_TCP=m
 CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_PASSTHRU is not set
 CONFIG_NVME_TARGET_LOOP=m
 CONFIG_NVME_TARGET_RDMA=m
 CONFIG_NVME_TARGET_FC=m
@@ -2629,6 +2633,7 @@ CONFIG_SCSI_UFSHCD_PLATFORM=m
 CONFIG_SCSI_UFS_CDNS_PLATFORM=m
 # CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
 # CONFIG_SCSI_UFS_BSG is not set
+CONFIG_SCSI_UFS_CRYPTO=y
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 CONFIG_SCSI_FLASHPOINT=y
@@ -2821,7 +2826,7 @@ CONFIG_MD_CLUSTER=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
-# CONFIG_BCACHE_ASYNC_REGISTRAION is not set
+# CONFIG_BCACHE_ASYNC_REGISTRATION is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
@@ -3170,6 +3175,7 @@ CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 CONFIG_MLX4_CORE_GEN2=y
 CONFIG_MLX5_CORE=m
+CONFIG_MLX5_ACCEL=y
 # CONFIG_MLX5_FPGA is not set
 CONFIG_MLX5_CORE_EN=y
 CONFIG_MLX5_EN_ARFS=y
@@ -3179,6 +3185,8 @@ CONFIG_MLX5_ESWITCH=y
 CONFIG_MLX5_CLS_ACT=y
 CONFIG_MLX5_CORE_EN_DCB=y
 # CONFIG_MLX5_CORE_IPOIB is not set
+CONFIG_MLX5_IPSEC=y
+CONFIG_MLX5_EN_IPSEC=y
 CONFIG_MLX5_SW_STEERING=y
 CONFIG_MLXSW_CORE=m
 CONFIG_MLXSW_CORE_HWMON=y
@@ -3202,7 +3210,6 @@ CONFIG_ENC28J60=m
 CONFIG_ENCX24J600=m
 CONFIG_LAN743X=m
 CONFIG_NET_VENDOR_MICROSEMI=y
-CONFIG_MSCC_OCELOT_SWITCH=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
 CONFIG_FEALNX=m
@@ -3334,6 +3341,7 @@ CONFIG_SKFP=m
 CONFIG_NET_SB1000=m
 CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVRES=y
 CONFIG_MDIO_BCM_UNIMAC=m
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_GPIO=m
@@ -3645,7 +3653,13 @@ CONFIG_MT7601U=m
 # CONFIG_MT7603E is not set
 # CONFIG_MT7615E is not set
 # CONFIG_MT7663U is not set
+# CONFIG_MT7663S is not set
 # CONFIG_MT7915E is not set
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+CONFIG_WILC1000=m
+CONFIG_WILC1000_SDIO=m
+CONFIG_WILC1000_SPI=m
+# CONFIG_WILC1000_HW_OOB_INTR is not set
 CONFIG_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
@@ -4271,6 +4285,7 @@ CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_BA431=m
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
@@ -4457,6 +4472,7 @@ CONFIG_SPI_DLN2=m
 CONFIG_SPI_NXP_FLEXSPI=m
 CONFIG_SPI_GPIO=m
 CONFIG_SPI_LM70_LLP=m
+CONFIG_SPI_LANTIQ_SSC=m
 CONFIG_SPI_OC_TINY=m
 CONFIG_SPI_PXA2XX=m
 CONFIG_SPI_PXA2XX_PCI=m
@@ -4482,6 +4498,7 @@ CONFIG_SPI_SPIDEV=m
 # CONFIG_SPI_LOOPBACK_TEST is not set
 CONFIG_SPI_TLE62X0=m
 # CONFIG_SPI_SLAVE is not set
+CONFIG_SPI_DYNAMIC=y
 CONFIG_SPMI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
@@ -4543,6 +4560,7 @@ CONFIG_PINCTRL_BROXTON=m
 CONFIG_PINCTRL_CANNONLAKE=m
 CONFIG_PINCTRL_CEDARFORK=m
 CONFIG_PINCTRL_DENVERTON=m
+CONFIG_PINCTRL_EMMITSBURG=m
 CONFIG_PINCTRL_GEMINILAKE=m
 CONFIG_PINCTRL_ICELAKE=m
 CONFIG_PINCTRL_JASPERLAKE=m
@@ -4594,6 +4612,7 @@ CONFIG_GPIO_MAX7300=m
 CONFIG_GPIO_MAX732X=m
 CONFIG_GPIO_PCA953X=m
 CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_PCA9570=m
 CONFIG_GPIO_PCF857X=m
 CONFIG_GPIO_TPIC2810=m
 # end of I2C GPIO expanders
@@ -4761,6 +4780,7 @@ CONFIG_CHARGER_BQ2415X=m
 CONFIG_CHARGER_BQ24190=m
 CONFIG_CHARGER_BQ24257=m
 CONFIG_CHARGER_BQ24735=m
+CONFIG_CHARGER_BQ2515X=m
 CONFIG_CHARGER_BQ25890=m
 CONFIG_CHARGER_SMB347=m
 CONFIG_CHARGER_TPS65090=m
@@ -4807,6 +4827,7 @@ CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ASB100=m
 CONFIG_SENSORS_ASPEED=m
 CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_CORSAIR_CPRO=m
 CONFIG_SENSORS_DRIVETEMP=y
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
@@ -4972,6 +4993,7 @@ CONFIG_SENSORS_XGENE=m
 CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_NETLINK=y
 # CONFIG_THERMAL_STATISTICS is not set
 CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
 CONFIG_THERMAL_HWMON=y
@@ -4983,7 +5005,6 @@ CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
-CONFIG_CLOCK_THERMAL=y
 CONFIG_DEVFREQ_THERMAL=y
 CONFIG_THERMAL_EMULATION=y
 
@@ -5209,7 +5230,6 @@ CONFIG_MFD_SI476X_CORE=m
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
 CONFIG_MFD_SKY81452=m
-CONFIG_MFD_SMSC=y
 CONFIG_ABX500_CORE=y
 CONFIG_AB3100_CORE=y
 CONFIG_AB3100_OTP=m
@@ -5315,6 +5335,7 @@ CONFIG_REGULATOR_MT6323=m
 CONFIG_REGULATOR_MT6358=m
 CONFIG_REGULATOR_MT6397=m
 CONFIG_REGULATOR_PALMAS=m
+CONFIG_REGULATOR_PCA9450=m
 CONFIG_REGULATOR_PCAP=m
 CONFIG_REGULATOR_PCF50633=m
 CONFIG_REGULATOR_PFUZE100=m
@@ -5323,6 +5344,7 @@ CONFIG_REGULATOR_PV88080=m
 CONFIG_REGULATOR_PV88090=m
 CONFIG_REGULATOR_PWM=m
 CONFIG_REGULATOR_QCOM_SPMI=m
+CONFIG_REGULATOR_QCOM_USB_VBUS=m
 CONFIG_REGULATOR_RC5T583=m
 CONFIG_REGULATOR_RT5033=m
 CONFIG_REGULATOR_S2MPA01=m
@@ -5348,6 +5370,7 @@ CONFIG_REGULATOR_WM831X=m
 CONFIG_REGULATOR_WM8350=m
 CONFIG_REGULATOR_WM8400=m
 CONFIG_REGULATOR_WM8994=m
+CONFIG_REGULATOR_QCOM_LABIBB=m
 CONFIG_RC_CORE=m
 CONFIG_RC_MAP=m
 CONFIG_LIRC=y
@@ -5383,10 +5406,12 @@ CONFIG_IR_SERIAL=m
 CONFIG_IR_SERIAL_TRANSMITTER=y
 CONFIG_IR_SIR=m
 CONFIG_RC_XBOX_DVD=m
+CONFIG_IR_TOY=m
 CONFIG_CEC_CORE=m
 CONFIG_CEC_NOTIFIER=y
 # CONFIG_MEDIA_CEC_RC is not set
 CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_CEC_CH7322=m
 CONFIG_CEC_CROS_EC=m
 CONFIG_CEC_SECO=m
 CONFIG_CEC_SECO_RC=y
@@ -5949,6 +5974,7 @@ CONFIG_VIDEO_MT9V111=m
 CONFIG_VIDEO_SR030PC30=m
 CONFIG_VIDEO_NOON010PC30=m
 CONFIG_VIDEO_M5MOLS=m
+CONFIG_VIDEO_RDACM20=m
 CONFIG_VIDEO_RJ54N1=m
 CONFIG_VIDEO_S5K6AA=m
 CONFIG_VIDEO_S5K6A3=m
@@ -5965,6 +5991,7 @@ CONFIG_VIDEO_S5C73M3=m
 CONFIG_VIDEO_AD5820=m
 CONFIG_VIDEO_AK7375=m
 CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_DW9768=m
 CONFIG_VIDEO_DW9807_VCM=m
 # end of Lens drivers
 
@@ -6276,6 +6303,7 @@ CONFIG_DRM_AMDGPU_USERPTR=y
 #
 CONFIG_DRM_AMD_DC=y
 CONFIG_DRM_AMD_DC_DCN=y
+CONFIG_DRM_AMD_DC_DCN3_0=y
 # CONFIG_DRM_AMD_DC_HDCP is not set
 # CONFIG_DEBUG_KERNEL_DC is not set
 # end of Display Engine Configuration
@@ -6285,6 +6313,7 @@ CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
 # CONFIG_NOUVEAU_DEBUG_MMU is not set
+# CONFIG_NOUVEAU_DEBUG_PUSH is not set
 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I915=m
 CONFIG_DRM_I915_FORCE_PROBE=""
@@ -6500,7 +6529,6 @@ CONFIG_LCD_LMS501KF03=m
 CONFIG_LCD_HX8357=m
 CONFIG_LCD_OTM3225A=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
 CONFIG_BACKLIGHT_LM3533=m
 CONFIG_BACKLIGHT_CARILLO_RANCH=m
 CONFIG_BACKLIGHT_PWM=m
@@ -6539,7 +6567,6 @@ CONFIG_HDMI=y
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_MDA_CONSOLE=m
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_DUMMY_CONSOLE_COLUMNS=80
@@ -6717,6 +6744,7 @@ CONFIG_SND_YMFPCI=m
 # HD-Audio
 #
 CONFIG_SND_HDA=m
+CONFIG_SND_HDA_GENERIC_LEDS=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
@@ -6737,6 +6765,7 @@ CONFIG_SND_HDA_CODEC_CMEDIA=m
 CONFIG_SND_HDA_CODEC_SI3054=m
 CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
 # end of HD-Audio
 
 CONFIG_SND_HDA_CORE=m
@@ -7005,6 +7034,7 @@ CONFIG_SND_SOC_MAX98504=m
 CONFIG_SND_SOC_MAX9867=m
 CONFIG_SND_SOC_MAX98927=m
 CONFIG_SND_SOC_MAX98373=m
+CONFIG_SND_SOC_MAX98373_I2C=m
 CONFIG_SND_SOC_MAX98390=m
 CONFIG_SND_SOC_MAX9860=m
 CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m
@@ -7296,8 +7326,8 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
 CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_AUTOSUSPEND_DELAY=2
 CONFIG_USB_MON=m
@@ -7732,6 +7762,7 @@ CONFIG_MEMSTICK_REALTEK_USB=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_CLASS_FLASH=m
+CONFIG_LEDS_CLASS_MULTICOLOR=m
 # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
 
 #
@@ -7753,11 +7784,6 @@ CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
 CONFIG_LEDS_LP3952=m
-CONFIG_LEDS_LP55XX_COMMON=m
-CONFIG_LEDS_LP5521=m
-CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_LP5562=m
-CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
@@ -7822,7 +7848,6 @@ CONFIG_LEDS_TRIGGER_AUDIO=m
 CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
-# CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI is not set
 CONFIG_INFINIBAND_USER_MEM=y
 CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
@@ -8027,6 +8052,7 @@ CONFIG_INTEL_IDMA64=m
 CONFIG_PCH_DMA=m
 CONFIG_PLX_DMA=m
 CONFIG_TIMB_DMA=m
+CONFIG_XILINX_ZYNQMP_DPDMA=m
 CONFIG_QCOM_HIDMA_MGMT=m
 CONFIG_QCOM_HIDMA=m
 CONFIG_DW_DMAC_CORE=m
@@ -8109,6 +8135,8 @@ CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
 CONFIG_VDPA=m
 # CONFIG_VDPA_SIM is not set
 CONFIG_IFCVF=m
+CONFIG_MLX5_VDPA=y
+CONFIG_MLX5_VDPA_NET=m
 CONFIG_VHOST_IOTLB=m
 CONFIG_VHOST_RING=m
 CONFIG_VHOST=m
@@ -8148,13 +8176,8 @@ CONFIG_XEN_PVCALLS_FRONTEND=m
 # CONFIG_XEN_PVCALLS_BACKEND is not set
 CONFIG_XEN_SCSI_BACKEND=m
 CONFIG_XEN_PRIVCMD=m
-CONFIG_XEN_ACPI_PROCESSOR=y
-CONFIG_XEN_MCE_LOG=y
-CONFIG_XEN_HAVE_PVMMU=y
 CONFIG_XEN_AUTO_XLATE=y
 CONFIG_XEN_ACPI=y
-CONFIG_XEN_SYMS=y
-CONFIG_XEN_HAVE_VPMU=y
 CONFIG_XEN_FRONT_PGDIR_SHBUF=m
 # end of Xen driver support
 
@@ -8376,35 +8399,9 @@ CONFIG_AD2S1210=m
 # end of IIO staging drivers
 
 CONFIG_FB_SM750=m
-
-#
-# Speakup console speech
-#
-CONFIG_SPEAKUP=m
-CONFIG_SPEAKUP_SYNTH_ACNTSA=m
-CONFIG_SPEAKUP_SYNTH_ACNTPC=m
-CONFIG_SPEAKUP_SYNTH_APOLLO=m
-CONFIG_SPEAKUP_SYNTH_AUDPTR=m
-CONFIG_SPEAKUP_SYNTH_BNS=m
-CONFIG_SPEAKUP_SYNTH_DECTLK=m
-CONFIG_SPEAKUP_SYNTH_DECEXT=m
-CONFIG_SPEAKUP_SYNTH_DECPC=m
-CONFIG_SPEAKUP_SYNTH_DTLK=m
-CONFIG_SPEAKUP_SYNTH_KEYPC=m
-CONFIG_SPEAKUP_SYNTH_LTLK=m
-CONFIG_SPEAKUP_SYNTH_SOFT=m
-CONFIG_SPEAKUP_SYNTH_SPKOUT=m
-CONFIG_SPEAKUP_SYNTH_TXPRT=m
-CONFIG_SPEAKUP_SYNTH_DUMMY=m
-# end of Speakup console speech
-
 CONFIG_STAGING_MEDIA=y
 CONFIG_INTEL_ATOMISP=y
 CONFIG_VIDEO_IPU3_IMGU=m
-
-#
-# soc_camera sensor drivers
-#
 CONFIG_VIDEO_USBVISION=m
 
 #
@@ -8451,17 +8448,12 @@ CONFIG_FB_TFT_UC1611=m
 CONFIG_FB_TFT_UC1701=m
 CONFIG_FB_TFT_UPD161704=m
 CONFIG_FB_TFT_WATTEROTT=m
-CONFIG_WILC1000=m
-CONFIG_WILC1000_SDIO=m
-CONFIG_WILC1000_SPI=m
-# CONFIG_WILC1000_HW_OOB_INTR is not set
 CONFIG_MOST_COMPONENTS=m
 CONFIG_MOST_CDEV=m
 CONFIG_MOST_NET=m
 CONFIG_MOST_SOUND=m
 CONFIG_MOST_VIDEO=m
 CONFIG_MOST_I2C=m
-CONFIG_MOST_USB=m
 CONFIG_KS7010=m
 # CONFIG_PI433 is not set
 
@@ -8524,6 +8516,7 @@ CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y
 # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
 CONFIG_THINKPAD_ACPI_VIDEO=y
 CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_ATOMISP2_LED=m
 CONFIG_INTEL_CHT_INT33FE=m
 CONFIG_INTEL_HID_EVENT=m
 CONFIG_INTEL_INT0002_VGPIO=m
@@ -8770,6 +8763,7 @@ CONFIG_ADXL372_I2C=m
 CONFIG_BMA220=m
 CONFIG_BMA400=m
 CONFIG_BMA400_I2C=m
+CONFIG_BMA400_SPI=m
 CONFIG_BMC150_ACCEL=m
 CONFIG_BMC150_ACCEL_I2C=m
 CONFIG_BMC150_ACCEL_SPI=m
@@ -8899,6 +8893,9 @@ CONFIG_BME680_SPI=m
 CONFIG_CCS811=m
 CONFIG_IAQCORE=m
 CONFIG_PMS7003=m
+CONFIG_SCD30_CORE=m
+CONFIG_SCD30_I2C=m
+CONFIG_SCD30_SERIAL=m
 CONFIG_SENSIRION_SGP30=m
 CONFIG_SPS30=m
 CONFIG_VZ89X=m
@@ -9058,6 +9055,9 @@ CONFIG_FXOS8700=m
 CONFIG_FXOS8700_I2C=m
 CONFIG_FXOS8700_SPI=m
 CONFIG_KMX61=m
+CONFIG_INV_ICM42600=m
+CONFIG_INV_ICM42600_I2C=m
+CONFIG_INV_ICM42600_SPI=m
 CONFIG_INV_MPU6050_IIO=m
 CONFIG_INV_MPU6050_I2C=m
 CONFIG_INV_MPU6050_SPI=m
@@ -9438,6 +9438,7 @@ CONFIG_PM_OPP=y
 # CONFIG_INTERCONNECT is not set
 CONFIG_COUNTER=m
 CONFIG_MOST=m
+CONFIG_MOST_USB_HDM=m
 # end of Device Drivers
 
 #
@@ -9722,6 +9723,7 @@ CONFIG_NFSD_V4=y
 # CONFIG_NFSD_BLOCKLAYOUT is not set
 # CONFIG_NFSD_SCSILAYOUT is not set
 # CONFIG_NFSD_FLEXFILELAYOUT is not set
+# CONFIG_NFSD_V4_2_INTER_SSC is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
@@ -10212,7 +10214,7 @@ CONFIG_LZ4_COMPRESS=m
 CONFIG_LZ4HC_COMPRESS=m
 CONFIG_LZ4_DECOMPRESS=y
 CONFIG_ZSTD_COMPRESS=m
-CONFIG_ZSTD_DECOMPRESS=m
+CONFIG_ZSTD_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -10228,6 +10230,7 @@ CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
 CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_REED_SOLOMON=m
 CONFIG_REED_SOLOMON_ENC8=y
@@ -10246,6 +10249,7 @@ CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=y
+CONFIG_DMA_OPS=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
@@ -10305,6 +10309,8 @@ CONFIG_OBJAGG=m
 # CONFIG_STRING_SELFTEST is not set
 # end of Library routines
 
+CONFIG_PLDMFW=y
+
 #
 # Kernel hacking
 #
@@ -10335,6 +10341,7 @@ CONFIG_FRAME_WARN=1024
 # CONFIG_HEADERS_INSTALL is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # end of Compile-time checks and compiler options
@@ -10347,6 +10354,9 @@ CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
 CONFIG_MAGIC_SYSRQ_SERIAL=y
 CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
 CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
 CONFIG_HAVE_ARCH_KGDB=y
 CONFIG_KGDB=y
 CONFIG_KGDB_SERIAL_CONSOLE=y
@@ -10394,7 +10404,6 @@ CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
 # CONFIG_DEBUG_STACKOVERFLOW is not set
 CONFIG_CC_HAS_KASAN_GENERIC=y
 CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
-CONFIG_KASAN_STACK=1
 # end of Memory Debugging
 
 # CONFIG_DEBUG_SHIRQ is not set
@@ -10471,6 +10480,7 @@ CONFIG_STACKTRACE=y
 CONFIG_TORTURE_TEST=m
 # CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_REF_SCALE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_TRACE is not set
 # CONFIG_RCU_EQS_DEBUG is not set
@@ -10549,6 +10559,7 @@ CONFIG_IO_STRICT_DEVMEM=y
 # x86 Debugging
 #
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
 CONFIG_EARLY_PRINTK_USB=y
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
@@ -10626,6 +10637,8 @@ CONFIG_TEST_STATIC_KEYS=m
 CONFIG_TEST_OBJAGG=m
 # CONFIG_TEST_STACKINIT is not set
 # CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_FREE_PAGES is not set
+# CONFIG_TEST_FPU is not set
 CONFIG_MEMTEST=y
 # CONFIG_HYPERV_TESTING is not set
 # end of Kernel Testing and Coverage
diff --git a/gnu/packages/aux-files/linux-libre/5.8-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.9-x86_64.conf
index 930008eeb9..adfa32de3e 100644
--- a/gnu/packages/aux-files/linux-libre/5.8-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.9-x86_64.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.8.0-gnu Kernel Configuration
+# Linux/x86 5.9.2 Kernel Configuration
 #
 CONFIG_CC_VERSION_TEXT="gcc (Debian 8.3.0-6) 8.3.0"
 CONFIG_CC_IS_GCC=y
@@ -29,12 +29,14 @@ CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
 CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_HAVE_KERNEL_ZSTD=y
 CONFIG_KERNEL_GZIP=y
 # CONFIG_KERNEL_BZIP2 is not set
 # CONFIG_KERNEL_LZMA is not set
 # CONFIG_KERNEL_XZ is not set
 # CONFIG_KERNEL_LZO is not set
 # CONFIG_KERNEL_LZ4 is not set
+# CONFIG_KERNEL_ZSTD is not set
 CONFIG_DEFAULT_INIT=""
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
@@ -79,6 +81,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
 CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
 
 #
 # Timers subsystem
@@ -102,7 +106,6 @@ CONFIG_PREEMPT_VOLUNTARY=y
 CONFIG_TICK_CPU_ACCOUNTING=y
 # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
 # CONFIG_IRQ_TIME_ACCOUNTING is not set
-CONFIG_SCHED_THERMAL_PRESSURE=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT_V3=y
 CONFIG_TASKSTATS=y
@@ -190,6 +193,7 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_RD_ZSTD=y
 CONFIG_BOOT_CONFIG=y
 CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
@@ -521,7 +525,6 @@ CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
 CONFIG_ACPI_SPCR_TABLE=y
 CONFIG_ACPI_LPIT=y
 CONFIG_ACPI_SLEEP=y
-# CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
 CONFIG_ACPI_EC_DEBUGFS=m
 CONFIG_ACPI_AC=m
@@ -713,6 +716,7 @@ CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
 CONFIG_KVM_COMPAT=y
 CONFIG_HAVE_KVM_IRQ_BYPASS=y
 CONFIG_HAVE_KVM_NO_POLL=y
+CONFIG_KVM_XFER_TO_GUEST_WORK=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_WERROR=y
@@ -731,6 +735,7 @@ CONFIG_AS_TPAUSE=y
 CONFIG_CRASH_CORE=y
 CONFIG_KEXEC_CORE=y
 CONFIG_HOTPLUG_SMT=y
+CONFIG_GENERIC_ENTRY=y
 CONFIG_OPROFILE=m
 # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
 CONFIG_HAVE_OPROFILE=y
@@ -784,7 +789,6 @@ CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_ARCH_STACKLEAK=y
 CONFIG_HAVE_STACKPROTECTOR=y
-CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
 CONFIG_STACKPROTECTOR=y
 CONFIG_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
@@ -806,7 +810,6 @@ CONFIG_ARCH_MMAP_RND_BITS=28
 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
 CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y
-CONFIG_HAVE_COPY_THREAD_TLS=y
 CONFIG_HAVE_STACK_VALIDATION=y
 CONFIG_HAVE_RELIABLE_STACKTRACE=y
 CONFIG_ISA_BUS_API=y
@@ -953,7 +956,6 @@ CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_SPARSEMEM_MANUAL=y
 CONFIG_SPARSEMEM=y
 CONFIG_NEED_MULTIPLE_NODES=y
-CONFIG_HAVE_MEMORY_PRESENT=y
 CONFIG_SPARSEMEM_EXTREME=y
 CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
 CONFIG_SPARSEMEM_VMEMMAP=y
@@ -1154,8 +1156,8 @@ CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_IPV6_RPL_LWTUNNEL is not set
 CONFIG_NETLABEL=y
 CONFIG_MPTCP=y
+CONFIG_INET_MPTCP_DIAG=m
 CONFIG_MPTCP_IPV6=y
-# CONFIG_MPTCP_HMAC_TEST is not set
 CONFIG_NETWORK_SECMARK=y
 CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
@@ -1583,6 +1585,7 @@ CONFIG_NET_DSA_TAG_DSA=m
 CONFIG_NET_DSA_TAG_EDSA=m
 CONFIG_NET_DSA_TAG_MTK=m
 CONFIG_NET_DSA_TAG_KSZ=m
+CONFIG_NET_DSA_TAG_RTL4_A=m
 CONFIG_NET_DSA_TAG_OCELOT=m
 CONFIG_NET_DSA_TAG_QCA=m
 CONFIG_NET_DSA_TAG_LAN9303=m
@@ -2312,6 +2315,9 @@ CONFIG_BCH_CONST_M=14
 CONFIG_BCH_CONST_T=4
 # end of Self-contained MTD device drivers
 
+#
+# NAND
+#
 CONFIG_MTD_NAND_CORE=m
 CONFIG_MTD_ONENAND=m
 CONFIG_MTD_ONENAND_VERIFY_WRITE=y
@@ -2345,6 +2351,7 @@ CONFIG_MTD_NAND_DISKONCHIP=m
 CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
 # CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
 CONFIG_MTD_SPI_NAND=m
+# end of NAND
 
 #
 # LPDDR & LPDDR2 PCM memory drivers
@@ -2457,6 +2464,7 @@ CONFIG_NVME_RDMA=m
 CONFIG_NVME_FC=m
 CONFIG_NVME_TCP=m
 CONFIG_NVME_TARGET=m
+# CONFIG_NVME_TARGET_PASSTHRU is not set
 CONFIG_NVME_TARGET_LOOP=m
 CONFIG_NVME_TARGET_RDMA=m
 CONFIG_NVME_TARGET_FC=m
@@ -2643,6 +2651,7 @@ CONFIG_SCSI_UFSHCD_PLATFORM=m
 CONFIG_SCSI_UFS_CDNS_PLATFORM=m
 # CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
 # CONFIG_SCSI_UFS_BSG is not set
+CONFIG_SCSI_UFS_CRYPTO=y
 CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 CONFIG_SCSI_FLASHPOINT=y
@@ -2822,7 +2831,7 @@ CONFIG_MD_CLUSTER=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
-# CONFIG_BCACHE_ASYNC_REGISTRAION is not set
+# CONFIG_BCACHE_ASYNC_REGISTRATION is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
@@ -3173,6 +3182,7 @@ CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
 CONFIG_MLX4_CORE_GEN2=y
 CONFIG_MLX5_CORE=m
+CONFIG_MLX5_ACCEL=y
 # CONFIG_MLX5_FPGA is not set
 CONFIG_MLX5_CORE_EN=y
 CONFIG_MLX5_EN_ARFS=y
@@ -3182,6 +3192,8 @@ CONFIG_MLX5_ESWITCH=y
 CONFIG_MLX5_CLS_ACT=y
 CONFIG_MLX5_CORE_EN_DCB=y
 # CONFIG_MLX5_CORE_IPOIB is not set
+CONFIG_MLX5_IPSEC=y
+CONFIG_MLX5_EN_IPSEC=y
 CONFIG_MLX5_SW_STEERING=y
 CONFIG_MLXSW_CORE=m
 CONFIG_MLXSW_CORE_HWMON=y
@@ -3205,7 +3217,6 @@ CONFIG_ENC28J60=m
 CONFIG_ENCX24J600=m
 CONFIG_LAN743X=m
 CONFIG_NET_VENDOR_MICROSEMI=y
-CONFIG_MSCC_OCELOT_SWITCH=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
 CONFIG_MYRI10GE_DCA=y
@@ -3335,6 +3346,7 @@ CONFIG_SKFP=m
 CONFIG_NET_SB1000=m
 CONFIG_MDIO_DEVICE=y
 CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVRES=y
 CONFIG_MDIO_BCM_UNIMAC=m
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_CAVIUM=m
@@ -3648,7 +3660,13 @@ CONFIG_MT7601U=m
 # CONFIG_MT7603E is not set
 # CONFIG_MT7615E is not set
 # CONFIG_MT7663U is not set
+# CONFIG_MT7663S is not set
 # CONFIG_MT7915E is not set
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+CONFIG_WILC1000=m
+CONFIG_WILC1000_SDIO=m
+CONFIG_WILC1000_SPI=m
+# CONFIG_WILC1000_HW_OOB_INTR is not set
 CONFIG_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2400PCI=m
@@ -4256,6 +4274,7 @@ CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_INTEL=m
 CONFIG_HW_RANDOM_AMD=m
+CONFIG_HW_RANDOM_BA431=m
 CONFIG_HW_RANDOM_VIA=m
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_APPLICOM=m
@@ -4434,6 +4453,7 @@ CONFIG_SPI_DLN2=m
 CONFIG_SPI_NXP_FLEXSPI=m
 CONFIG_SPI_GPIO=m
 CONFIG_SPI_LM70_LLP=m
+CONFIG_SPI_LANTIQ_SSC=m
 CONFIG_SPI_OC_TINY=m
 CONFIG_SPI_PXA2XX=m
 CONFIG_SPI_PXA2XX_PCI=m
@@ -4458,6 +4478,7 @@ CONFIG_SPI_SPIDEV=m
 # CONFIG_SPI_LOOPBACK_TEST is not set
 CONFIG_SPI_TLE62X0=m
 # CONFIG_SPI_SLAVE is not set
+CONFIG_SPI_DYNAMIC=y
 CONFIG_SPMI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
@@ -4518,6 +4539,7 @@ CONFIG_PINCTRL_BROXTON=m
 CONFIG_PINCTRL_CANNONLAKE=m
 CONFIG_PINCTRL_CEDARFORK=m
 CONFIG_PINCTRL_DENVERTON=m
+CONFIG_PINCTRL_EMMITSBURG=m
 CONFIG_PINCTRL_GEMINILAKE=m
 CONFIG_PINCTRL_ICELAKE=m
 CONFIG_PINCTRL_JASPERLAKE=m
@@ -4568,6 +4590,7 @@ CONFIG_GPIO_MAX7300=m
 CONFIG_GPIO_MAX732X=m
 CONFIG_GPIO_PCA953X=m
 CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_PCA9570=m
 CONFIG_GPIO_PCF857X=m
 CONFIG_GPIO_TPIC2810=m
 # end of I2C GPIO expanders
@@ -4732,6 +4755,7 @@ CONFIG_CHARGER_BQ2415X=m
 CONFIG_CHARGER_BQ24190=m
 CONFIG_CHARGER_BQ24257=m
 CONFIG_CHARGER_BQ24735=m
+CONFIG_CHARGER_BQ2515X=m
 CONFIG_CHARGER_BQ25890=m
 CONFIG_CHARGER_SMB347=m
 CONFIG_CHARGER_TPS65090=m
@@ -4778,6 +4802,7 @@ CONFIG_SENSORS_APPLESMC=m
 CONFIG_SENSORS_ASB100=m
 CONFIG_SENSORS_ASPEED=m
 CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_CORSAIR_CPRO=m
 CONFIG_SENSORS_DRIVETEMP=y
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
@@ -4943,6 +4968,7 @@ CONFIG_SENSORS_XGENE=m
 CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_THERMAL=y
+CONFIG_THERMAL_NETLINK=y
 # CONFIG_THERMAL_STATISTICS is not set
 CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
 CONFIG_THERMAL_HWMON=y
@@ -4954,7 +4980,6 @@ CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
-CONFIG_CLOCK_THERMAL=y
 CONFIG_DEVFREQ_THERMAL=y
 CONFIG_THERMAL_EMULATION=y
 
@@ -5168,7 +5193,6 @@ CONFIG_MFD_SI476X_CORE=m
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
 CONFIG_MFD_SKY81452=m
-CONFIG_MFD_SMSC=y
 CONFIG_ABX500_CORE=y
 CONFIG_AB3100_CORE=y
 CONFIG_AB3100_OTP=m
@@ -5272,6 +5296,7 @@ CONFIG_REGULATOR_MT6323=m
 CONFIG_REGULATOR_MT6358=m
 CONFIG_REGULATOR_MT6397=m
 CONFIG_REGULATOR_PALMAS=m
+CONFIG_REGULATOR_PCA9450=m
 CONFIG_REGULATOR_PCAP=m
 CONFIG_REGULATOR_PCF50633=m
 CONFIG_REGULATOR_PFUZE100=m
@@ -5280,6 +5305,7 @@ CONFIG_REGULATOR_PV88080=m
 CONFIG_REGULATOR_PV88090=m
 CONFIG_REGULATOR_PWM=m
 CONFIG_REGULATOR_QCOM_SPMI=m
+CONFIG_REGULATOR_QCOM_USB_VBUS=m
 CONFIG_REGULATOR_RC5T583=m
 CONFIG_REGULATOR_RT5033=m
 CONFIG_REGULATOR_S2MPA01=m
@@ -5305,6 +5331,7 @@ CONFIG_REGULATOR_WM831X=m
 CONFIG_REGULATOR_WM8350=m
 CONFIG_REGULATOR_WM8400=m
 CONFIG_REGULATOR_WM8994=m
+CONFIG_REGULATOR_QCOM_LABIBB=m
 CONFIG_RC_CORE=m
 CONFIG_RC_MAP=m
 CONFIG_LIRC=y
@@ -5340,10 +5367,12 @@ CONFIG_IR_SERIAL=m
 CONFIG_IR_SERIAL_TRANSMITTER=y
 CONFIG_IR_SIR=m
 CONFIG_RC_XBOX_DVD=m
+CONFIG_IR_TOY=m
 CONFIG_CEC_CORE=m
 CONFIG_CEC_NOTIFIER=y
 # CONFIG_MEDIA_CEC_RC is not set
 CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_CEC_CH7322=m
 CONFIG_CEC_CROS_EC=m
 CONFIG_CEC_SECO=m
 CONFIG_CEC_SECO_RC=y
@@ -5890,6 +5919,7 @@ CONFIG_VIDEO_MT9V111=m
 CONFIG_VIDEO_SR030PC30=m
 CONFIG_VIDEO_NOON010PC30=m
 CONFIG_VIDEO_M5MOLS=m
+CONFIG_VIDEO_RDACM20=m
 CONFIG_VIDEO_RJ54N1=m
 CONFIG_VIDEO_S5K6AA=m
 CONFIG_VIDEO_S5K6A3=m
@@ -5906,6 +5936,7 @@ CONFIG_VIDEO_S5C73M3=m
 CONFIG_VIDEO_AD5820=m
 CONFIG_VIDEO_AK7375=m
 CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_DW9768=m
 CONFIG_VIDEO_DW9807_VCM=m
 # end of Lens drivers
 
@@ -6211,6 +6242,7 @@ CONFIG_DRM_AMDGPU_USERPTR=y
 #
 CONFIG_DRM_AMD_DC=y
 CONFIG_DRM_AMD_DC_DCN=y
+CONFIG_DRM_AMD_DC_DCN3_0=y
 # CONFIG_DRM_AMD_DC_HDCP is not set
 # CONFIG_DEBUG_KERNEL_DC is not set
 # end of Display Engine Configuration
@@ -6221,6 +6253,7 @@ CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
 CONFIG_NOUVEAU_DEBUG_DEFAULT=3
 # CONFIG_NOUVEAU_DEBUG_MMU is not set
+# CONFIG_NOUVEAU_DEBUG_PUSH is not set
 CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I915=m
 CONFIG_DRM_I915_FORCE_PROBE=""
@@ -6431,7 +6464,6 @@ CONFIG_LCD_LMS501KF03=m
 CONFIG_LCD_HX8357=m
 CONFIG_LCD_OTM3225A=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
 CONFIG_BACKLIGHT_LM3533=m
 CONFIG_BACKLIGHT_CARILLO_RANCH=m
 CONFIG_BACKLIGHT_PWM=m
@@ -6470,7 +6502,6 @@ CONFIG_HDMI=y
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_DUMMY_CONSOLE_COLUMNS=80
 CONFIG_DUMMY_CONSOLE_ROWS=25
@@ -6605,6 +6636,7 @@ CONFIG_SND_YMFPCI=m
 # HD-Audio
 #
 CONFIG_SND_HDA=m
+CONFIG_SND_HDA_GENERIC_LEDS=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_RECONFIG=y
@@ -6625,6 +6657,7 @@ CONFIG_SND_HDA_CODEC_CMEDIA=m
 CONFIG_SND_HDA_CODEC_SI3054=m
 CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
 # end of HD-Audio
 
 CONFIG_SND_HDA_CORE=m
@@ -6893,6 +6926,7 @@ CONFIG_SND_SOC_MAX98504=m
 CONFIG_SND_SOC_MAX9867=m
 CONFIG_SND_SOC_MAX98927=m
 CONFIG_SND_SOC_MAX98373=m
+CONFIG_SND_SOC_MAX98373_I2C=m
 CONFIG_SND_SOC_MAX98390=m
 CONFIG_SND_SOC_MAX9860=m
 CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m
@@ -7190,8 +7224,8 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
 CONFIG_USB_LEDS_TRIGGER_USBPORT=m
 CONFIG_USB_AUTOSUSPEND_DELAY=2
 CONFIG_USB_MON=m
@@ -7626,6 +7660,7 @@ CONFIG_MEMSTICK_REALTEK_USB=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_CLASS_FLASH=m
+CONFIG_LEDS_CLASS_MULTICOLOR=m
 # CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
 
 #
@@ -7645,11 +7680,6 @@ CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
 CONFIG_LEDS_LP3952=m
-CONFIG_LEDS_LP55XX_COMMON=m
-CONFIG_LEDS_LP5521=m
-CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_LP5562=m
-CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
@@ -7713,7 +7743,6 @@ CONFIG_LEDS_TRIGGER_AUDIO=m
 CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
-# CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI is not set
 CONFIG_INFINIBAND_USER_MEM=y
 CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
@@ -7928,6 +7957,7 @@ CONFIG_INTEL_IDXD=m
 CONFIG_INTEL_IOATDMA=m
 CONFIG_INTEL_MIC_X100_DMA=m
 CONFIG_PLX_DMA=m
+CONFIG_XILINX_ZYNQMP_DPDMA=m
 CONFIG_QCOM_HIDMA_MGMT=m
 CONFIG_QCOM_HIDMA=m
 CONFIG_DW_DMAC_CORE=m
@@ -8013,6 +8043,8 @@ CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
 CONFIG_VDPA=m
 # CONFIG_VDPA_SIM is not set
 CONFIG_IFCVF=m
+CONFIG_MLX5_VDPA=y
+CONFIG_MLX5_VDPA_NET=m
 CONFIG_VHOST_IOTLB=m
 CONFIG_VHOST_RING=m
 CONFIG_VHOST=m
@@ -8063,6 +8095,7 @@ CONFIG_XEN_ACPI=y
 CONFIG_XEN_SYMS=y
 CONFIG_XEN_HAVE_VPMU=y
 CONFIG_XEN_FRONT_PGDIR_SHBUF=m
+CONFIG_XEN_UNPOPULATED_ALLOC=y
 # end of Xen driver support
 
 # CONFIG_GREYBUS is not set
@@ -8282,31 +8315,9 @@ CONFIG_AD2S1210=m
 # end of IIO staging drivers
 
 CONFIG_FB_SM750=m
-
-#
-# Speakup console speech
-#
-CONFIG_SPEAKUP=m
-CONFIG_SPEAKUP_SYNTH_ACNTSA=m
-CONFIG_SPEAKUP_SYNTH_APOLLO=m
-CONFIG_SPEAKUP_SYNTH_AUDPTR=m
-CONFIG_SPEAKUP_SYNTH_BNS=m
-CONFIG_SPEAKUP_SYNTH_DECTLK=m
-CONFIG_SPEAKUP_SYNTH_DECEXT=m
-CONFIG_SPEAKUP_SYNTH_LTLK=m
-CONFIG_SPEAKUP_SYNTH_SOFT=m
-CONFIG_SPEAKUP_SYNTH_SPKOUT=m
-CONFIG_SPEAKUP_SYNTH_TXPRT=m
-CONFIG_SPEAKUP_SYNTH_DUMMY=m
-# end of Speakup console speech
-
 CONFIG_STAGING_MEDIA=y
 CONFIG_INTEL_ATOMISP=y
 CONFIG_VIDEO_IPU3_IMGU=m
-
-#
-# soc_camera sensor drivers
-#
 CONFIG_VIDEO_USBVISION=m
 
 #
@@ -8356,17 +8367,12 @@ CONFIG_FB_TFT_UC1611=m
 CONFIG_FB_TFT_UC1701=m
 CONFIG_FB_TFT_UPD161704=m
 CONFIG_FB_TFT_WATTEROTT=m
-CONFIG_WILC1000=m
-CONFIG_WILC1000_SDIO=m
-CONFIG_WILC1000_SPI=m
-# CONFIG_WILC1000_HW_OOB_INTR is not set
 CONFIG_MOST_COMPONENTS=m
 CONFIG_MOST_CDEV=m
 CONFIG_MOST_NET=m
 CONFIG_MOST_SOUND=m
 CONFIG_MOST_VIDEO=m
 CONFIG_MOST_I2C=m
-CONFIG_MOST_USB=m
 CONFIG_KS7010=m
 # CONFIG_PI433 is not set
 
@@ -8430,6 +8436,7 @@ CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y
 # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
 CONFIG_THINKPAD_ACPI_VIDEO=y
 CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_INTEL_ATOMISP2_LED=m
 CONFIG_INTEL_CHT_INT33FE=m
 CONFIG_INTEL_HID_EVENT=m
 CONFIG_INTEL_INT0002_VGPIO=m
@@ -8690,6 +8697,7 @@ CONFIG_ADXL372_I2C=m
 CONFIG_BMA220=m
 CONFIG_BMA400=m
 CONFIG_BMA400_I2C=m
+CONFIG_BMA400_SPI=m
 CONFIG_BMC150_ACCEL=m
 CONFIG_BMC150_ACCEL_I2C=m
 CONFIG_BMC150_ACCEL_SPI=m
@@ -8819,6 +8827,9 @@ CONFIG_BME680_SPI=m
 CONFIG_CCS811=m
 CONFIG_IAQCORE=m
 CONFIG_PMS7003=m
+CONFIG_SCD30_CORE=m
+CONFIG_SCD30_I2C=m
+CONFIG_SCD30_SERIAL=m
 CONFIG_SENSIRION_SGP30=m
 CONFIG_SPS30=m
 CONFIG_VZ89X=m
@@ -8978,6 +8989,9 @@ CONFIG_FXOS8700=m
 CONFIG_FXOS8700_I2C=m
 CONFIG_FXOS8700_SPI=m
 CONFIG_KMX61=m
+CONFIG_INV_ICM42600=m
+CONFIG_INV_ICM42600_I2C=m
+CONFIG_INV_ICM42600_SPI=m
 CONFIG_INV_MPU6050_IIO=m
 CONFIG_INV_MPU6050_I2C=m
 CONFIG_INV_MPU6050_SPI=m
@@ -9370,6 +9384,7 @@ CONFIG_UNISYS_VISORBUS=m
 # CONFIG_INTERCONNECT is not set
 CONFIG_COUNTER=m
 CONFIG_MOST=m
+CONFIG_MOST_USB_HDM=m
 # end of Device Drivers
 
 #
@@ -9523,6 +9538,7 @@ CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
+# CONFIG_TMPFS_INODE64 is not set
 CONFIG_HUGETLBFS=y
 CONFIG_HUGETLB_PAGE=y
 CONFIG_MEMFD_CREATE=y
@@ -9658,6 +9674,7 @@ CONFIG_NFSD_V4=y
 # CONFIG_NFSD_BLOCKLAYOUT is not set
 # CONFIG_NFSD_SCSILAYOUT is not set
 # CONFIG_NFSD_FLEXFILELAYOUT is not set
+# CONFIG_NFSD_V4_2_INTER_SSC is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
@@ -10177,7 +10194,7 @@ CONFIG_LZ4_COMPRESS=m
 CONFIG_LZ4HC_COMPRESS=m
 CONFIG_LZ4_DECOMPRESS=y
 CONFIG_ZSTD_COMPRESS=m
-CONFIG_ZSTD_DECOMPRESS=m
+CONFIG_ZSTD_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -10193,6 +10210,7 @@ CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
 CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_REED_SOLOMON=m
 CONFIG_REED_SOLOMON_ENC8=y
@@ -10211,6 +10229,7 @@ CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=y
+CONFIG_DMA_OPS=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
@@ -10273,6 +10292,8 @@ CONFIG_OBJAGG=m
 # CONFIG_STRING_SELFTEST is not set
 # end of Library routines
 
+CONFIG_PLDMFW=y
+
 #
 # Kernel hacking
 #
@@ -10303,6 +10324,7 @@ CONFIG_FRAME_WARN=1024
 # CONFIG_HEADERS_INSTALL is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_STACK_VALIDATION=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -10316,6 +10338,9 @@ CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
 CONFIG_MAGIC_SYSRQ_SERIAL=y
 CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
 CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
 CONFIG_HAVE_ARCH_KGDB=y
 CONFIG_KGDB=y
 CONFIG_KGDB_SERIAL_CONSOLE=y
@@ -10328,6 +10353,7 @@ CONFIG_KDB_CONTINUE_CATASTROPHIC=0
 CONFIG_ARCH_HAS_EARLY_DEBUG=y
 CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
 # CONFIG_UBSAN is not set
+CONFIG_HAVE_ARCH_KCSAN=y
 # end of Generic Kernel Debugging Instruments
 
 CONFIG_DEBUG_KERNEL=y
@@ -10366,7 +10392,6 @@ CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
 CONFIG_CC_HAS_KASAN_GENERIC=y
 CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
 # CONFIG_KASAN is not set
-CONFIG_KASAN_STACK=1
 # end of Memory Debugging
 
 # CONFIG_DEBUG_SHIRQ is not set
@@ -10444,6 +10469,7 @@ CONFIG_STACKTRACE=y
 CONFIG_TORTURE_TEST=m
 # CONFIG_RCU_PERF_TEST is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_REF_SCALE_TEST is not set
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_TRACE is not set
 # CONFIG_RCU_EQS_DEBUG is not set
@@ -10514,7 +10540,6 @@ CONFIG_SYNTH_EVENTS=y
 # CONFIG_KPROBE_EVENT_GEN_TEST is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KCSAN=y
 CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
 CONFIG_STRICT_DEVMEM=y
 CONFIG_IO_STRICT_DEVMEM=y
@@ -10523,6 +10548,7 @@ CONFIG_IO_STRICT_DEVMEM=y
 # x86 Debugging
 #
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
 CONFIG_EARLY_PRINTK_USB=y
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
@@ -10604,6 +10630,8 @@ CONFIG_TEST_STATIC_KEYS=m
 CONFIG_TEST_OBJAGG=m
 # CONFIG_TEST_STACKINIT is not set
 # CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_FREE_PAGES is not set
+# CONFIG_TEST_FPU is not set
 CONFIG_MEMTEST=y
 # CONFIG_HYPERV_TESTING is not set
 # end of Kernel Testing and Coverage
diff --git a/gnu/packages/aux-files/run-in-namespace.c b/gnu/packages/aux-files/run-in-namespace.c
index 52a16a5362..44c3c5a6cb 100644
--- a/gnu/packages/aux-files/run-in-namespace.c
+++ b/gnu/packages/aux-files/run-in-namespace.c
@@ -41,6 +41,7 @@
 #include <fcntl.h>
 #include <dirent.h>
 #include <sys/syscall.h>
+#include <sys/prctl.h>
 
 /* Whether we're building the ld.so/libfakechroot wrapper.  */
 #define HAVE_EXEC_WITH_LOADER						\
@@ -258,11 +259,20 @@ exec_in_user_namespace (const char *store, int argc, char *argv[])
 {
   /* Spawn @WRAPPED_PROGRAM@ in a separate namespace where STORE is
      bind-mounted in the right place.  */
-  int err;
+  int err, is_tmpfs;
   char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX"));
   char *new_store = concat (new_root, original_store);
   char *cwd = get_current_dir_name ();
 
+  /* Become the new parent of grand-children when their parent dies.  */
+  prctl (PR_SET_CHILD_SUBREAPER, 1);
+
+  /* Optionally, make NEW_ROOT a tmpfs.  That way, if we have to leave it
+     behind because there are sub-processes still running when this wrapper
+     exits, it's OK.  */
+  err = mount ("none", new_root, "tmpfs", 0, NULL);
+  is_tmpfs = (err == 0);
+
   /* Create a child with separate namespaces and set up bind-mounts from
      there.  That way, bind-mounts automatically disappear when the child
      exits, which simplifies cleanup for the parent.  Note: clone is more
@@ -300,6 +310,7 @@ exec_in_user_namespace (const char *store, int argc, char *argv[])
       /* Failure: user namespaces not supported.  */
       fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]);
       rm_rf (new_root);
+      free (new_root);
       break;
 
     default:
@@ -312,10 +323,25 @@ exec_in_user_namespace (const char *store, int argc, char *argv[])
 	write_id_map (child, "uid_map", getuid ());
 	write_id_map (child, "gid_map", getgid ());
 
-	int status;
+	int status, status_other;
 	waitpid (child, &status, 0);
-	chdir ("/");			  /* avoid EBUSY */
-	rm_rf (new_root);
+
+	chdir ("/");				  /* avoid EBUSY */
+	if (is_tmpfs)
+	  {
+	    /* NEW_ROOT lives on in child processes and we no longer need it
+	       to exist as an empty directory in the global namespace.  */
+	    umount (new_root);
+	    rmdir (new_root);
+	  }
+	/* Check whether there are child processes left.  If there are none,
+	   we can remove NEW_ROOT just fine.  Conversely, if there are
+	   processes left (for example because this wrapper's child forked),
+	   we have to leave NEW_ROOT behind so that those processes can still
+	   access their root file system (XXX).  */
+	else if (waitpid (-1 , &status_other, WNOHANG) == -1)
+	  rm_rf (new_root);
+
 	free (new_root);
 
 	if (WIFEXITED (status))
@@ -490,6 +516,9 @@ exec_with_loader (const char *store, int argc, char *argv[])
 
   setenv ("FAKECHROOT_BASE", new_root, 1);
 
+  /* Become the new parent of grand-children when their parent dies.  */
+  prctl (PR_SET_CHILD_SUBREAPER, 1);
+
   pid_t child = fork ();
   switch (child)
     {
@@ -507,12 +536,19 @@ exec_with_loader (const char *store, int argc, char *argv[])
 
     default:
       {
-  	int status;
+  	int status, status_other;
 	waitpid (child, &status, 0);
-	chdir ("/");			  /* avoid EBUSY */
-	rm_rf (new_root);
-	free (new_root);
 
+	/* If there are child processes still running, leave NEW_ROOT around
+	   so they can still access it.  XXX: In that case NEW_ROOT is left
+	   behind.  */
+	if (waitpid (-1 , &status_other, WNOHANG) == -1)
+	  {
+	    chdir ("/");			  /* avoid EBUSY */
+	    rm_rf (new_root);
+	  }
+
+	free (new_root);
 	close (2);			/* flushing stderr should be silent */
 
 	if (WIFEXITED (status))
@@ -620,7 +656,7 @@ main (int argc, char *argv[])
   /* SELF is something like "/home/ludo/.local/gnu/store/…-foo/bin/ls" and we
      want to extract "/home/ludo/.local/gnu/store".  */
   size_t index = strlen (self)
-    - strlen ("@WRAPPED_PROGRAM@") + strlen (original_store);
+    - strlen (WRAPPER_PROGRAM) + strlen (original_store);
   char *store = strdup (self);
   store[index] = '\0';
 
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 76af6fdef1..c113707283 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,8 +42,8 @@
     (inherit (cross-binutils "avr"))
     (name "avr-binutils")))
 
-(define-public avr-gcc-4.9
-  (let ((xgcc (cross-gcc "avr" #:xgcc gcc-4.9 #:xbinutils avr-binutils)))
+(define avr-gcc
+  (let ((xgcc (cross-gcc "avr" #:xgcc gcc #:xbinutils avr-binutils)))
     (package
       (inherit xgcc)
       (name "avr-gcc")
@@ -94,19 +95,10 @@
               (variable "CROSS_LIBRARY_PATH")
               (files '("avr/lib")))))
       (native-inputs
-       `(("gcc@5" ,gcc-5)
+       `(("gcc" ,gcc)
          ,@(package-native-inputs xgcc))))))
 
-(define-public avr-gcc-5
-  (package
-    (inherit avr-gcc-4.9)
-    (version (package-version gcc-5))
-    (source (origin
-              (inherit (package-source gcc-5))
-              (patches (append (origin-patches (package-source gcc-5))
-                               (search-patches "gcc-cross-environment-variables.patch")))))))
-
-(define (avr-libc avr-gcc)
+(define avr-libc
   (package
     (name "avr-libc")
     (version "2.0.0")
@@ -120,18 +112,7 @@
     (build-system gnu-build-system)
     (arguments
      '(#:out-of-source? #t
-       #:configure-flags '("--host=avr")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'unpack 'fix-cpath
-           (lambda _
-             ;; C_INCLUDE_PATH and CPATH pose issues for cross-building,
-             ;; leading to failures when building avr-libc on 64-bit systems.
-             ;; Simply unsetting them allows the build to succeed because it
-             ;; doesn't try to use any of the native system's headers.
-             (unsetenv "C_INCLUDE_PATH")
-             (unsetenv "CPATH")
-             #t)))))
+       #:configure-flags '("--host=avr")))
     (native-inputs `(("avr-binutils" ,avr-binutils)
                      ("avr-gcc" ,avr-gcc)))
     (home-page "https://www.nongnu.org/avr-libc/")
@@ -142,31 +123,27 @@ for use with GCC on Atmel AVR microcontrollers.")
     (license
      (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
 
-(define (avr-toolchain avr-gcc)
+(define-public avr-toolchain
   ;; avr-libc checks the compiler version and passes "--enable-device-lib" for avr-gcc > 5.1.0.
   ;; It wouldn't install the library for atmega32u4 etc if we didn't use the corret avr-gcc.
-  (let ((avr-libc (avr-libc avr-gcc)))
-    (package
-      (name "avr-toolchain")
-      (version (package-version avr-gcc))
-      (source #f)
-      (build-system trivial-build-system)
-      (arguments '(#:builder (begin (mkdir %output) #t)))
-      (propagated-inputs
-       `(("avrdude" ,avrdude)
-         ("binutils" ,avr-binutils)
-         ("gcc" ,avr-gcc)
-         ("libc" ,avr-libc)))
-      (synopsis "Complete GCC tool chain for AVR microcontroller development")
-      (description "This package provides a complete GCC tool chain for AVR
+  (package
+    (name "avr-toolchain")
+    (version (package-version avr-gcc))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments '(#:builder (begin (mkdir %output) #t)))
+    (propagated-inputs
+     `(("avrdude" ,avrdude)
+       ("binutils" ,avr-binutils)
+       ("gcc" ,avr-gcc)
+       ("libc" ,avr-libc)))
+    (synopsis "Complete GCC tool chain for AVR microcontroller development")
+    (description "This package provides a complete GCC tool chain for AVR
 microcontroller development.  This includes the GCC AVR cross compiler and
 avrdude for firmware flashing.  The supported programming languages are C and
 C++.")
-      (home-page (package-home-page avr-libc))
-      (license (package-license avr-gcc)))))
-
-(define-public avr-toolchain-4.9 (avr-toolchain avr-gcc-4.9))
-(define-public avr-toolchain-5 (avr-toolchain avr-gcc-5))
+    (home-page (package-home-page avr-libc))
+    (license (package-license avr-gcc))))
 
 (define-public microscheme
   (package
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 770bb23a9c..6ab319c5ac 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
@@ -82,7 +82,7 @@
 (define-public duplicity
   (package
     (name "duplicity")
-    (version "0.8.15")
+    (version "0.8.17")
     (source
      (origin
       (method url-fetch)
@@ -91,10 +91,10 @@
                           "-series/" version "/+download/duplicity-"
                           version ".tar.gz"))
       (sha256
-       (base32 "1kg467mxg5a97v1rlv4shk32krgv8ys4nczq4b11av4bp1lgysdc"))))
+       (base32 "114rwkf9b3h4fcagrx013sb7krc4hafbwl9gawjph2wd9pkv2wx2"))))
     (build-system python-build-system)
     (native-inputs
-     `(("gettext" ,gnu-gettext)         ; for msgfmt
+     `(("gettext" ,gettext-minimal)     ; for msgfmt
        ("util-linux" ,util-linux)       ; setsid command, for the tests
        ("par2cmdline" ,par2cmdline)
        ("python-fasteners" ,python-fasteners)
@@ -392,7 +392,7 @@ list and implement the backup strategy.")
      `(("librsync" ,librsync-0.9)))
     (arguments
      `(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
-                      "CC=gcc")
+                      ,(string-append "CC=" ,(cc-for-target)))
        #:tests? #f                      ;test input not distributed
        #:phases
        ;; no configure phase
@@ -743,14 +743,14 @@ changes are stored.")
 (define-public wimlib
   (package
     (name "wimlib")
-    (version "1.13.2")
+    (version "1.13.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://wimlib.net/downloads/"
                                   "wimlib-" version ".tar.gz"))
               (sha256
                (base32
-                "0id9ym3hzij4kpdrk0sz3ijxp5r0z1md5jch83pml9hdy1zbx5bj"))))
+                "0zpsbl9iicc6y81xfl6kf8farwfsyrl63shc0idp654kgp8421wa"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1072,7 +1072,7 @@ interactive mode.")
 (define-public burp
   (package
     (name "burp")
-    (version "2.3.34")
+    (version "2.3.38")
     (source
      (origin
        (method git-fetch)
@@ -1080,7 +1080,7 @@ interactive mode.")
              (url "https://github.com/grke/burp")
              (commit version)))
        (sha256
-        (base32 "0ri62xshcjrk5vgyx8s11vsllab132mk1pcy4xxl9kzijdsjhdpy"))
+        (base32 "0m0s6rrgxn3l6bad45vyhks6iz6bwvd0f3rzdsc7l28gar79wsj6"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index bd352319a1..afd772488e 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1225,7 +1225,7 @@ command.")
 (define-public tzdata
   (package
     (name "tzdata")
-    (version "2020b")
+    (version "2020d")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1233,10 +1233,10 @@ command.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "02g88pbw82zr36x9dz5ib4sq6bfq253yx5hbhnfyhp143naky1cv"))))
+               "1wxskk9mh1x2073n99qna2mq58mgi648mbq5dxlqfcrnvrbkk0cd"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f
+     `(#:tests? #f
        #:make-flags (let ((out (assoc-ref %outputs "out"))
                           (tmp (getenv "TMPDIR")))
                       (list (string-append "TOPDIR=" out)
@@ -1248,6 +1248,16 @@ command.")
                             (string-append "LIBDIR=" tmp "/lib")
                             (string-append "MANDIR=" tmp "/man")
 
+                            ;; XXX: tzdata 2020b changed the on-disk format
+                            ;; of the time zone files from 'fat' to 'slim'.
+                            ;; Many packages (particularly evolution-data-server)
+                            ;; can not yet handle the latter, so we stick with
+                            ;; 'fat' for now.
+                            ,@(if (version>=? (package-version this-package)
+                                              "2020b")
+                                  '("CPPFLAGS=-DZIC_BLOAT_DEFAULT='\"fat\"'")
+                                  '())
+
                             "AWK=awk"
                             "CC=gcc"))
        #:modules ((guix build utils)
@@ -1282,7 +1292,7 @@ command.")
                                 version ".tar.gz"))
                           (sha256
                            (base32
-                            "1nj3zvqpy5lm6w365p9ynz4i5arq4fiy8ldq55v4z9p49nagivs7"))))))
+                            "1mgsckixmmk9qxzsflfxnp3999qi3ls72bgksclk01g852x51w3c"))))))
     (home-page "https://www.iana.org/time-zones")
     (synopsis "Database of current and historical time zones")
     (description "The Time Zone Database (often called tz or zoneinfo)
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 47ca625d9a..ed2931fd97 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 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>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,14 +23,18 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages bash)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bootstrap)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages guile)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -210,7 +215,7 @@ from the Korn Shell and the C Shell and new improvements of its own.  It
 allows command-line editing, unlimited command history, shell functions and
 aliases, and job control while still allowing most sh scripts to be run
 without modification.")
-     (license gpl3+)
+     (license license:gpl3+)
      (home-page "https://www.gnu.org/software/bash/"))))
 
 (define-public bash-minimal
@@ -320,7 +325,7 @@ without modification.")
      "This package provides extensions that allow Bash to provide adapted
 completion for many common commands.")
     (home-page "https://github.com/scop/bash-completion")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public bash-tap
   (package
@@ -364,7 +369,7 @@ test library")
 for Bash shell scripts and functions.  Along with the Test::More-style testing
 helpers it provides helper functions for mocking commands and in-process output
 capturing.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public bats
   (package
@@ -414,4 +419,32 @@ capturing.")
 framework for Bash.  It provides a simple way to verify that the UNIX programs
 you write behave as expected.  Bats is most useful when testing software written
 in Bash, but you can use it to test any UNIX program.")
-    (license expat)))
+    (license license:expat)))
+
+(define-public bash-ctypes
+  (package
+    (name "bash-ctypes")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/taviso/ctypes.sh/releases/download/v"
+                           version "/ctypes-sh-" version ".tar.gz"))
+       (sha256
+        (base32 "0s1sifqzqmr0dnciv06yqrpzgj11d7n0gy5zaxh6b3x8bx7k75l8"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("elfutils" ,elfutils)
+       ("libelf" ,libelf)
+       ("libffi" ,libffi)
+       ("zlib" ,zlib)
+       ;; Require a bash with C plugin support to build.
+       ("bash" ,bash)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/taviso/ctypes.sh")
+    (synopsis "Foreign function interface for Bash")
+    (description "Bash-ctypes is a Bash plugin that provides a foreign
+function interface (FFI) directly in your shell.  In other words, it allows
+you to call routines in shared libraries from within Bash.")
+    (license license:expat)))
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index f9648b5f7c..fa70d2773e 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 malte Frank Gerdes <malte.f.gerdes@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,14 +47,14 @@
 (define-public fio
   (package
     (name "fio")
-    (version "3.23")
+    (version "3.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://brick.kernel.dk/snaps/"
                                   "fio-" version ".tar.bz2"))
               (sha256
                (base32
-                "0cy32431hv0i84yrryna5byj4r610n6i1rm8nfflnrznbf051axs"))))
+                "0qshbyqpvm01hmpkmk0v0jhjz23sngqhy291kiz38z04s2df4vxn"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
@@ -213,7 +214,7 @@ This can give a much better understanding of the command's performance.")
 (define-public benchmark
   (package
     (name "benchmark")
-    (version "1.5.0")
+    (version "1.5.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -222,16 +223,24 @@ This can give a much better understanding of the command's performance.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r9dbg4cbk47gwmayys31a83m3y67k0kh1f6pl8i869rbd609ndh"))
-              (patches (search-patches "benchmark-unbundle-googletest.patch"))))
+                "13rxagpzw6bal6ajlmrxlh9kgfvcixn6j734b2bvfqz7lch8n0pa"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("googletest" ,googletest)))
+     `(("googletest-source" ,(package-source googletest))
+       ("googletest" ,googletest)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-googletest
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "googletest-source")
+                               "googletest")
+             #t)))))
     (home-page "https://github.com/google/benchmark")
     (synopsis "Microbenchmark support library")
     (description
-     "Benchmark is a library to benchmark code snippets,
-similar to unit tests.")
+     "Benchmark is a library to benchmark code snippets, similar to unit
+tests.")
     (license license:asl2.0)))
 
 (define-public bonnie++
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index f30f2fd117..eac9c074a9 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1765,6 +1765,32 @@ expressed genes in DNA microarray experiments.")
 fitting of some classes of graphical Markov models.")
     (license license:gpl2+)))
 
+;; This is a CRAN package, but it depends on a Bioconductor package, r-graph.
+(define-public r-perfmeas
+  (package
+    (name "r-perfmeas")
+    (version "1.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "PerfMeas" version))
+       (sha256
+        (base32
+         "1x7ancmb41zd1js24rx94plgbssyc71z2bvpic6mg34xjkwdjw93"))))
+    (properties `((upstream-name . "PerfMeas")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-graph" ,r-graph)
+       ("r-limma" ,r-limma)
+       ("r-rbgl" ,r-rbgl)))
+    (home-page "https://cran.r-project.org/web/packages/PerfMeas/")
+    (synopsis "Performance measures for ranking and classification tasks")
+    (description
+     "This package implements different performance measures for
+classification and ranking tasks.  @dfn{Area under curve} (AUC), precision at
+a given recall, F-score for single and multiple classes are available.")
+    (license license:gpl2+)))
+
 ;; This is a CRAN package, but it depends on a Bioconductor package.
 (define-public r-codedepends
   (package
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 0d5e6e3d20..1a82815e92 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2015, 2016 Pjotr Prins <pjotr.guix@thebird.nl>
+;;; Copyright © 2015, 2016, 2018, 2019, 2020 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016, 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -12,12 +12,13 @@
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019, 2020 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
-;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +66,8 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages code)
+  #:use-module (gnu packages commencement)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpio)
   #:use-module (gnu packages cran)
@@ -81,6 +84,7 @@
   #:use-module (gnu packages golang)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages graph)
+  #:use-module (gnu packages graphics)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
@@ -90,6 +94,7 @@
   #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages java)
   #:use-module (gnu packages java-compression)
@@ -102,6 +107,7 @@
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages node)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages parallel)
@@ -112,10 +118,12 @@
   #:use-module (gnu packages popt)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-compression)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages rdf)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages serialization)
@@ -313,7 +321,7 @@ BAM files.")
 (define-public bcftools
   (package
     (name "bcftools")
-    (version "1.9")
+    (version "1.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/samtools/bcftools/"
@@ -321,11 +329,11 @@ BAM files.")
                                   version "/bcftools-" version ".tar.bz2"))
               (sha256
                (base32
-                "1j3h638i8kgihzyrlnpj82xg1b23sijibys9hvwari3fy7kd0dkg"))
+                "0r508mp15pqzf8r1269kb4v5naw9zsvbwd3cz8s1yj7carsf9viw"))
               (modules '((guix build utils)))
               (snippet '(begin
                           ;; Delete bundled htslib.
-                          (delete-file-recursively "htslib-1.9")
+                          (delete-file-recursively "htslib-1.11")
                           #t))))
     (build-system gnu-build-system)
     (arguments
@@ -354,6 +362,28 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.")
     ;; The sources are dual MIT/GPL, but becomes GPL-only when USE_GPL=1.
     (license (list license:gpl3+ license:expat))))
 
+(define-public bcftools-1.9
+  (package (inherit bcftools)
+    (name "bcftools")
+    (version "1.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/samtools/bcftools/"
+                                  "releases/download/"
+                                  version "/bcftools-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1j3h638i8kgihzyrlnpj82xg1b23sijibys9hvwari3fy7kd0dkg"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Delete bundled htslib.
+                          (delete-file-recursively "htslib-1.9")
+                          #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("htslib" ,htslib-1.9)
+       ("perl" ,perl)))))
+
 (define-public bedops
   (package
     (name "bedops")
@@ -437,7 +467,7 @@ computational cluster.")
     (native-inputs
      `(("python" ,python-wrapper)))
     (inputs
-     `(("samtools" ,samtools)
+     `(("samtools" ,samtools-1.9)
        ("zlib" ,zlib)))
     (home-page "https://github.com/arq5x/bedtools2")
     (synopsis "Tools for genome analysis and arithmetic")
@@ -1955,7 +1985,7 @@ multiple sequence alignments.")
                ;; FIXME: tests keep timing out on some systems.
                (invoke "nosetests" "-v" "--processes" "1")))))))
     (propagated-inputs
-     `(("htslib" ,htslib))) ; Included from installed header files.
+     `(("htslib" ,htslib-1.9))) ; Included from installed header files.
     (inputs
      `(("ncurses" ,ncurses)
        ("curl" ,curl)
@@ -1963,8 +1993,8 @@ multiple sequence alignments.")
     (native-inputs
      `(("python-cython" ,python-cython)
        ;; Dependencies below are are for tests only.
-       ("samtools" ,samtools)
-       ("bcftools" ,bcftools)
+       ("samtools" ,samtools-1.9)
+       ("bcftools" ,bcftools-1.9)
        ("python-nose" ,python-nose)))
     (home-page "https://github.com/pysam-developers/pysam")
     (synopsis "Python bindings to the SAMtools C API")
@@ -2557,6 +2587,132 @@ accessing bigWig files.")
 (define-public python2-pybigwig
   (package-with-python2 python-pybigwig))
 
+(define-public python-schema-salad
+  (package
+    (name "python-schema-salad")
+    (version "7.0.20200811075006")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "schema-salad" version))
+        (sha256
+         (base32
+          "0wanbwmqb189x1m0vacnhpivfsr8rwbqknngivzxxs8j46yj80bg"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cachecontrol" ,python-cachecontrol-0.11)
+       ("python-lockfile" ,python-lockfile)
+       ("python-mistune" ,python-mistune)
+       ("python-rdflib" ,python-rdflib)
+       ("python-rdflib-jsonld" ,python-rdflib-jsonld)
+       ("python-requests" ,python-requests)
+       ("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-typing-extensions" ,python-typing-extensions)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (home-page "https://github.com/common-workflow-language/schema_salad")
+    (synopsis "Schema Annotations for Linked Avro Data (SALAD)")
+    (description
+     "Salad is a schema language for describing JSON or YAML structured linked
+data documents.  Salad schema describes rules for preprocessing, structural
+validation, and hyperlink checking for documents described by a Salad schema.
+Salad supports rich data modeling with inheritance, template specialization,
+object identifiers, object references, documentation generation, code
+generation, and transformation to RDF.  Salad provides a bridge between document
+and record oriented data modeling and the Semantic Web.")
+    (license license:asl2.0)))
+
+(define-public cwltool
+  (package
+    (name "cwltool")
+    (version "3.0.20201121085451")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/common-workflow-language/cwltool")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1awf99n7aglxc5zszrlrv6jxp355jp45ws7wpsgjlgcdv7advn0w"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'loosen-version-restrictions
+           (lambda _
+             (substitute* "setup.py"
+               (("== 1.5.1") ">=1.5.1") ; prov
+               ((", < 3.5") ""))        ; shellescape
+             #t))
+         (add-after 'unpack 'dont-use-git
+           (lambda _
+             (substitute* "gittaggers.py"
+               (("self.git_timestamp_tag\\(\\)")
+                (string-append "time.strftime('.%Y%m%d%H%M%S', time.gmtime(int("
+                               (string-drop ,version 4) ")))")))
+             #t))
+         (add-after 'unpack 'modify-tests
+           (lambda _
+             ;; Tries to connect to the internet.
+             (delete-file "tests/test_udocker.py")
+             (delete-file "tests/test_http_input.py")
+             (substitute* "tests/test_load_tool.py"
+               (("def test_load_graph_fragment_from_packed")
+                (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
+                               "def test_load_graph_fragment_from_packed")))
+             (substitute* "tests/test_examples.py"
+               (("def test_env_filtering")
+                (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
+                               "def test_env_filtering")))
+             ;; Tries to use cwl-runners.
+             (substitute* "tests/test_examples.py"
+               (("def test_v1_0_arg_empty_prefix_separate_false")
+                (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n"
+                               "def test_v1_0_arg_empty_prefix_separate_false")))
+             #t)))))
+    (propagated-inputs
+     `(("python-argcomplete" ,python-argcomplete)
+       ("python-bagit" ,python-bagit)
+       ("python-coloredlogs" ,python-coloredlogs)
+       ("python-mypy-extensions" ,python-mypy-extensions)
+       ("python-prov" ,python-prov)
+       ("python-pydot" ,python-pydot)
+       ("python-psutil" ,python-psutil)
+       ("python-rdflib" ,python-rdflib)
+       ("python-requests" ,python-requests)
+       ("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-schema-salad" ,python-schema-salad)
+       ("python-shellescape" ,python-shellescape)
+       ("python-typing-extensions" ,python-typing-extensions)
+       ;; Not listed as needed but still necessary:
+       ("node" ,node)))
+    (native-inputs
+     `(("python-arcp" ,python-arcp)
+       ("python-humanfriendly" ,python-humanfriendly)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-mock" ,python-pytest-mock)
+       ("python-pytest-runner" ,python-pytest-runner)
+       ("python-rdflib-jsonld" ,python-rdflib-jsonld)))
+    (home-page
+     "https://github.com/common-workflow-language/common-workflow-language")
+    (synopsis "Common Workflow Language reference implementation")
+    (description
+     "This is the reference implementation of the @acronym{CWL, Common Workflow
+Language} standards.  The CWL open standards are for describing analysis
+workflows and tools in a way that makes them portable and scalable across a
+variety of software and hardware environments, from workstations to cluster,
+cloud, and high performance computing (HPC) environments.  CWL is designed to
+meet the needs of data-intensive science, such as Bioinformatics, Medical
+Imaging, Astronomy, Physics, and Chemistry.  The @acronym{cwltool, CWL reference
+implementation} is intended to be feature complete and to provide comprehensive
+validation of CWL files as well as provide other tools related to working with
+CWL descriptions.")
+    (license license:asl2.0)))
+
 (define-public python-dendropy
   (package
     (name "python-dendropy")
@@ -4215,7 +4371,7 @@ performance.")
 (define-public htslib
   (package
     (name "htslib")
-    (version "1.9")
+    (version "1.11")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4223,7 +4379,7 @@ performance.")
                     version "/htslib-" version ".tar.bz2"))
               (sha256
                (base32
-                "16ljv43sc3fxmv63w7b2ff8m1s7h89xhazwmbm1bicz8axq8fjz0"))))
+                "1mrq4mihzx37yqhj3sfz6da6mw49niia808bzsw2gkkgmadxvyng"))))
     (build-system gnu-build-system)
     ;; Let htslib translate "gs://" and "s3://" to regular https links with
     ;; "--enable-gcs" and "--enable-s3". For these options to work, we also
@@ -4250,6 +4406,19 @@ data.  It also provides the @command{bgzip}, @command{htsfile}, and
     ;; the rest is released under the Expat license
     (license (list license:expat license:bsd-3))))
 
+(define-public htslib-1.9
+  (package (inherit htslib)
+    (name "htslib")
+    (version "1.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/samtools/htslib/releases/download/"
+                    version "/htslib-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "16ljv43sc3fxmv63w7b2ff8m1s7h89xhazwmbm1bicz8axq8fjz0"))))))
+
 ;; This package should be removed once no packages rely upon it.
 (define htslib-1.3
   (package
@@ -4470,26 +4639,40 @@ experiments.")
               ;; The PyPi tarball does not contain tests.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/taoliu/MACS")
+                    (url "https://github.com/macs3-project/MACS")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1c5gxr0mk6hkd4vclf0k00wvyvzw2vrmk52c85338p7aqjwg6n15"))))
+                "1c5gxr0mk6hkd4vclf0k00wvyvzw2vrmk52c85338p7aqjwg6n15"))
+        (modules '((guix build utils)))
+        ;; Remove files generated by Cython
+        (snippet
+         '(begin
+            (for-each (lambda (file)
+                        (let ((generated-file
+                                (string-append (string-drop-right file 3) "c")))
+                          (when (file-exists? generated-file)
+                            (delete-file generated-file))))
+                      (find-files "." "\\.pyx$"))
+            (delete-file "MACS2/IO/CallPeakUnitPrecompiled.c")
+            #t))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (delete 'check)
-         (add-after 'install 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (invoke "pytest" "-v"))))))
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "-v"))
+             #t)))))
     (inputs
      `(("python-numpy" ,python-numpy)))
     (native-inputs
-     `(("python-pytest" ,python-pytest)))
-    (home-page "https://github.com/taoliu/MACS/")
+     `(("python-cython" ,python-cython)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/macs3-project/MACS")
     (synopsis "Model based analysis for ChIP-Seq data")
     (description
      "MACS is an implementation of a ChIP-Seq analysis algorithm for
@@ -5613,7 +5796,7 @@ to the user's query of interest.")
 (define-public samtools
   (package
     (name "samtools")
-    (version "1.9")
+    (version "1.11")
     (source
      (origin
        (method url-fetch)
@@ -5622,11 +5805,11 @@ to the user's query of interest.")
                        version "/samtools-" version ".tar.bz2"))
        (sha256
         (base32
-         "10ilqbmm7ri8z431sn90lvbjwizd0hhkf9rcqw8j823hf26nhgq8"))
+         "1dp5wknak4arnw5ghhif9mmljlfnw5bgm91wib7z0j8wdjywx0z2"))
        (modules '((guix build utils)))
        (snippet '(begin
                    ;; Delete bundled htslib.
-                   (delete-file-recursively "htslib-1.9")
+                   (delete-file-recursively "htslib-1.11")
                    #t))))
     (build-system gnu-build-system)
     (arguments
@@ -5672,6 +5855,31 @@ variant calling (in conjunction with bcftools), and a simple alignment
 viewer.")
     (license license:expat)))
 
+(define-public samtools-1.9
+  (package (inherit samtools)
+    (name "samtools")
+    (version "1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/samtools/samtools/"
+                       version "/samtools-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "10ilqbmm7ri8z431sn90lvbjwizd0hhkf9rcqw8j823hf26nhgq8"))
+       (modules '((guix build utils)))
+       (snippet '(begin
+                   ;; Delete bundled htslib.
+                   (delete-file-recursively "htslib-1.9")
+                   #t))))
+    (inputs
+     `(("htslib" ,htslib-1.9)
+       ("ncurses" ,ncurses)
+       ("perl" ,perl)
+       ("python" ,python)
+       ("zlib" ,zlib)))))
+
 (define-public samtools-0.1
   ;; This is the most recent version of the 0.1 line of samtools.  The input
   ;; and output formats differ greatly from that used and produced by samtools
@@ -10954,7 +11162,7 @@ programs for inferring phylogenies (evolutionary trees).")
 (define-public imp
   (package
     (name "imp")
-    (version "2.6.2")
+    (version "2.13.0")
     (source
      (origin
        (method url-fetch)
@@ -10962,25 +11170,47 @@ programs for inferring phylogenies (evolutionary trees).")
                            version "/download/imp-" version ".tar.gz"))
        (sha256
         (base32
-         "0lxqx7vh79d771svr611dkilp6sn30qrbw8zvscbrm37v38d2j6h"))))
+         "1z1vcpwbylixk0zywngg5iw0jv083jj1bqphi817jpg3fb9fx2jj"))))
     (build-system cmake-build-system)
     (arguments
-     `(;; FIXME: Some tests fail because they produce warnings, others fail
-       ;; because the PYTHONPATH does not include the modeller's directory.
-       #:tests? #f))
+     `( ;; CMake 3.17 or newer is required for the CMAKE_TEST_ARGUMENTS used
+       ;; below to have an effect.
+       #:cmake ,cmake
+       #:configure-flags
+       (let ((disabled-tests
+              '("expensive"                 ;exclude expensive tests
+                "IMP.modeller"              ;fail to import its own modules
+                "IMP.parallel-test_sge.py"  ;fail in build container
+                ;; The following test fails non-reproducibly on
+                ;; an inexact numbers assertion.
+                "IMP.em-medium_test_local_fitting.py")))
+         (list
+          (string-append
+           "-DCMAKE_CTEST_ARGUMENTS="
+           (string-join
+            (list "-L" "-tests?-"       ;select only tests
+                  "-E" (format #f "'(~a)'" (string-join disabled-tests "|")))
+            ";"))))))
+    (native-inputs
+     `(("python" ,python-wrapper)
+       ("swig" ,swig)))
     (inputs
      `(("boost" ,boost)
+       ("cgal" ,cgal)
        ("gsl" ,gsl)
-       ("swig" ,swig)
        ("hdf5" ,hdf5)
        ("fftw" ,fftw)
-       ("python" ,python-2)))
+       ("eigen" ,eigen)
+       ;; Enabling MPI causes the build to use all the available memory and
+       ;; fail (tested on a machine with 32 GiB of RAM).
+       ;;("mpi" ,openmpi)
+       ("opencv" ,opencv)))
     (propagated-inputs
-     `(("python2-numpy" ,python2-numpy)
-       ("python2-scipy" ,python2-scipy)
-       ("python2-pandas" ,python2-pandas)
-       ("python2-scikit-learn" ,python2-scikit-learn)
-       ("python2-networkx" ,python2-networkx)))
+     `(("python-numpy" ,python-numpy)
+       ("python-scipy" ,python-scipy)
+       ("python-pandas" ,python-pandas)
+       ("python-scikit-learn" ,python-scikit-learn)
+       ("python-networkx" ,python-networkx)))
     (home-page "https://integrativemodeling.org")
     (synopsis "Integrative modeling platform")
     (description "IMP's broad goal is to contribute to a comprehensive
@@ -10998,7 +11228,7 @@ applications for tackling some common problems in a user-friendly way.")
 (define-public tadbit
   (package
     (name "tadbit")
-    (version "0.2.0")
+    (version "1.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -11007,21 +11237,13 @@ applications for tackling some common problems in a user-friendly way.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "07g3aj648prmsvxp9caz5yl41k0y0647vxh0f5p3w8376mfiljd0"))))
+                "0hqrlymh2a2bimcfdvlssy1x5h1lp3h1c5a7jj11hmcqczzqn3ni"))))
     (build-system python-build-system)
     (arguments
-     `(;; Tests are included and must be run after installation, but
-       ;; they are incomplete and thus cannot be run.
-       #:tests? #f
-       #:python ,python-2
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-problems-with-setup.py
            (lambda* (#:key outputs #:allow-other-keys)
-             ;; setup.py opens these files for writing
-             (chmod "_pytadbit/_version.py" #o664)
-             (chmod "README.rst" #o664)
-
              ;; Don't attempt to install the bash completions to
              ;; the home directory.
              (rename-file "extras/.bash_completion"
@@ -11033,15 +11255,25 @@ applications for tackling some common problems in a user-friendly way.")
                                "/etc/bash_completion.d\""))
                (("extras/\\.bash_completion")
                 "extras/tadbit"))
+             #t))
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python3" "test/test_all.py")
              #t)))))
+    (native-inputs
+     `(("glib" ,glib "bin")             ;for gtester
+       ("pkg-config" ,pkg-config)))
     (inputs
      ;; TODO: add Chimera for visualization
      `(("imp" ,imp)
        ("mcl" ,mcl)
-       ("python2-scipy" ,python2-scipy)
-       ("python2-numpy" ,python2-numpy)
-       ("python2-matplotlib" ,python2-matplotlib)
-       ("python2-pysam" ,python2-pysam)))
+       ("python-future" ,python-future)
+       ("python-h5py" ,python-h5py)
+       ("python-scipy" ,python-scipy)
+       ("python-numpy" ,python-numpy)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pysam" ,python-pysam)))
     (home-page "https://3dgenomes.github.io/TADbit/")
     (synopsis "Analyze, model, and explore 3C-based data")
     (description
@@ -15361,7 +15593,7 @@ patterns.")
 (define-public methyldackel
   (package
     (name "methyldackel")
-    (version "0.4.0")
+    (version "0.5.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -15370,7 +15602,7 @@ patterns.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "10gh8k0ca92kywnrw5pkacq3g6r8s976s12k8jhp8g3g49q9a97g"))))
+                "1sfhf2ap75qxpnmy1ifgmxqs18rq8mah9mcgkby73vc6h0sw99ws"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -15383,11 +15615,14 @@ patterns.")
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "Makefile"
+               (("-lhts ") "-lhts -lBigWig ")
                (("install MethylDackel \\$\\(prefix\\)" match)
                 (string-append "install -d $(prefix); " match)))
              #t)))))
     (inputs
-     `(("htslib" ,htslib)
+     `(("curl" ,curl) ; XXX: needed by libbigwig
+       ("htslib" ,htslib-1.9)
+       ("libbigwig" ,libbigwig)
        ("zlib" ,zlib)))
     ;; Needed for tests
     (native-inputs
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 2a4339fda0..08e61d7ba2 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
@@ -75,12 +75,17 @@
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1wjmn96zrvmk8j1yz2ysmqd7a2x6ilvnwwapcvfzgxs2wwpnai4i"))))
+                "1wjmn96zrvmk8j1yz2ysmqd7a2x6ilvnwwapcvfzgxs2wwpnai4i"))
+              (patches (search-patches "transmission-honor-localedir.patch"))))
     (build-system glib-or-gtk-build-system)
     (outputs '("out"                      ; library and command-line interface
                "gui"))                    ; graphical user interface
     (arguments
-     '(#:glib-or-gtk-wrap-excluded-outputs '("out")
+     '(#:configure-flags
+       (list (string-append "--localedir="
+                            (assoc-ref %outputs "gui")
+                            "/share/locale"))
+       #:glib-or-gtk-wrap-excluded-outputs '("out")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'move-gui
@@ -93,14 +98,17 @@
                (rename-file (string-append out "/bin/transmission-gtk")
                             (string-append gui "/bin/transmission-gtk"))
 
-               ;; Move the '.desktop' and icon files as well.
-               (mkdir (string-append gui "/share"))
                (for-each
                 (lambda (dir)
                   (rename-file (string-append out "/share/" dir)
                                (string-append gui "/share/" dir)))
-                '("applications" "icons" "pixmaps")))
-             #t)))))
+                '("appdata" "applications" "icons" "pixmaps"))
+
+               (mkdir-p (string-append gui "/share/man/man1"))
+               (rename-file
+                (string-append out "/share/man/man1/transmission-gtk.1")
+                (string-append gui "/share/man/man1/transmission-gtk.1"))
+             #t))))))
     (inputs
      `(("libevent" ,libevent)
        ("curl" ,curl)
@@ -308,7 +316,7 @@ Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.")
 (define-public uget
   (package
     (name "uget")
-    (version "2.2.0")
+    (version "2.2.1")
     (source
      (origin
        (method url-fetch)
@@ -316,7 +324,7 @@ Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.")
                            "uget%20%28stable%29/" version "/uget-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0rg2mr2cndxvnjib8zm5dp7y2hgbvnqkz2j2jmg0xlzfh9d34b2m"))))
+        (base32 "0dlrjhnm1pg2vwmp7nl2xv1aia5hyirb3021rl46x859k63zap24"))))
     (build-system gnu-build-system)
     (inputs
      `(("curl" ,curl)
@@ -355,7 +363,7 @@ downloads, download scheduling, download rate limiting.")
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (delete 'configure))          ; no configure script
-       #:make-flags (list "CC=gcc"
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
                           (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "NO_HASH_CHECK=1"
                           "USE_LARGE_FILES=1"
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index d1de5cea4e..75ae8d919b 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
-;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 nee <nee@cock.li>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -115,11 +115,12 @@
                      ;; determine the root file system when it's a RAID
                      ;; device.  Failing to do that, 'grub-probe' silently
                      ;; fails if 'mdadm' is not in $PATH.
-                     (substitute* "grub-core/osdep/linux/getroot.c"
-                       (("argv\\[0\\] = \"mdadm\"")
-                        (string-append "argv[0] = \""
-                                       (assoc-ref inputs "mdadm")
-                                       "/sbin/mdadm\"")))
+                     (when (assoc-ref inputs "mdadm")
+                       (substitute* "grub-core/osdep/linux/getroot.c"
+                         (("argv\\[0\\] = \"mdadm\"")
+                          (string-append "argv[0] = \""
+                                         (assoc-ref inputs "mdadm")
+                                         "/sbin/mdadm\""))))
 
                      ;; Make the font visible.
                      (copy-file (assoc-ref (or native-inputs inputs)
@@ -133,6 +134,20 @@
                         (string-append (assoc-ref inputs "console-setup")
                                        "/bin/ckbcomp ")))
                      #t))
+                  (add-after 'unpack 'set-freetype-variables
+                    ;; These variables need to be set to the native versions
+                    ;; of the dependencies because they are used to build
+                    ;; programs which are executed during build time.
+                    (lambda* (#:key native-inputs #:allow-other-keys)
+                      (when (assoc-ref native-inputs "freetype")
+                        (let ((freetype (assoc-ref native-inputs "freetype")))
+                          (setenv "BUILD_FREETYPE_LIBS"
+                                  (string-append "-L" freetype
+                                                 "/lib -lfreetype"))
+                          (setenv "BUILD_FREETYPE_CFLAGS"
+                                  (string-append "-I" freetype
+                                                 "/include/freetype2"))))
+                     #t))
                   (add-before 'check 'disable-flaky-test
                     (lambda _
                       ;; This test is unreliable. For more information, see:
@@ -149,10 +164,11 @@
                         (("test_unset grub_func_test")
                           "test_unset"))
                       #t)))
-       ;; Disable tests on ARM and AARCH64 platforms.
-       #:tests? ,(not (any (cute string-prefix? <> (or (%current-target-system)
-                                                       (%current-system)))
-                           '("arm" "aarch64")))))
+       ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling.
+       #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system)
+                                                           (%current-system)))
+                               '("arm" "aarch64"))
+                          (%current-target-system)))))
     (inputs
      `(("gettext" ,gettext-minimal)
 
@@ -194,6 +210,7 @@
        ("flex" ,flex)
        ("texinfo" ,texinfo)
        ("help2man" ,help2man)
+       ("freetype" ,freetype)   ; native version needed for build-grub-mkfont
 
        ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils
        ;; capable of assembling 64-bit instructions.  However, our default
@@ -241,21 +258,25 @@ menu to select one of the installed operating systems.")
      (fold alist-delete (package-native-inputs grub)
            '("help2man" "texinfo" "parted" "qemu" "xorriso")))
     (arguments
-     `(#:configure-flags (list "PYTHON=true")
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'patch-stuff
-                   (lambda* (#:key native-inputs inputs #:allow-other-keys)
-                     (substitute* "grub-core/Makefile.in"
-                       (("/bin/sh") (which "sh")))
+     (substitute-keyword-arguments (package-arguments grub)
+       ((#:configure-flags _ ''())
+        '(list "PYTHON=true"))
+       ((#:tests? _ #t)
+        #f)
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (replace 'patch-stuff
+             (lambda* (#:key native-inputs inputs #:allow-other-keys)
+               (substitute* "grub-core/Makefile.in"
+                 (("/bin/sh") (which "sh")))
 
-                     ;; Make the font visible.
-                     (copy-file (assoc-ref (or native-inputs inputs)
-                                           "unifont")
-                                "unifont.bdf.gz")
-                     (system* "gunzip" "unifont.bdf.gz")
+               ;; Make the font visible.
+               (copy-file (assoc-ref (or native-inputs inputs)
+                                     "unifont")
+                          "unifont.bdf.gz")
+               (system* "gunzip" "unifont.bdf.gz")
 
-                     #t)))
-       #:tests? #f))))
+               #t))))))))
 
 (define-public grub-efi
   (package
@@ -424,7 +445,7 @@ menu to select one of the installed operating systems.")
      `(("python" ,python)))
     (arguments
      `(#:make-flags
-       (list "CC=gcc"
+       (list (string-append "CC=" ,(cc-for-target))
 
              ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1.
              (string-append "LDFLAGS=-Wl,-rpath="
@@ -435,6 +456,15 @@ menu to select one of the installed operating systems.")
              "INSTALL=install")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-pkg-config
+           (lambda _
+             (substitute* '("Makefile"
+                            "tests/run_tests.sh")
+               (("pkg-config")
+                (or (which "pkg-config")
+                    (string-append ,(%current-target-system)
+                                   "-pkg-config"))))
+             #t))
          (delete 'configure))))         ; no configure script
     (home-page "https://www.devicetree.org")
     (synopsis "Compiles device tree source files")
@@ -446,7 +476,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
 (define u-boot
   (package
     (name "u-boot")
-    (version "2020.07")
+    (version "2020.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -454,7 +484,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
                     "u-boot-" version ".tar.bz2"))
               (sha256
                (base32
-                "0sjzy262x93aaqd6z24ziaq19xjjjk5f577ivf768vmvwsgbzxf1"))))
+                "08m6f1bh4pdcqbxf983qdb66ccd5vak5cbzc114yf3jwq2yinj0d"))))
     (native-inputs
      `(("bc" ,bc)
        ("bison" ,bison)
@@ -482,7 +512,7 @@ also initializes the boards (RAM etc).")
        ,@(package-native-inputs u-boot)))
     (arguments
      `(#:make-flags '("HOSTCC=gcc")
-       #:test-target "tests"
+       #:test-target "tcheck"
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch
@@ -493,11 +523,8 @@ also initializes the boards (RAM etc).")
              (substitute* "tools/dtoc/fdt_util.py"
               (("'cc'") "'gcc'"))
              (substitute* "tools/patman/test_util.py"
-              ;; python*-coverage is simply called coverage in guix.
-              (("%s-coverage") "coverage")
-              ;; XXX Allow for only 99% test coverage.
-              ;; TODO: Find out why that is needed.
-              (("if coverage != '100%':") "if not int(coverage.rstrip('%')) >= 99:"))
+              ;; python3-coverage is simply called coverage in guix.
+              (("python3-coverage") "coverage"))
              (substitute* "test/run"
               ;; Make it easier to find test failures.
               (("#!/bin/bash") "#!/bin/bash -x")
@@ -507,8 +534,6 @@ also initializes the boards (RAM etc).")
               (("run_test \"binman\"") ": run_test \"binman\"")
               ;; FIXME: code coverage not working
               (("run_test \"binman code coverage\"") ": run_test \"binman code coverage\"")
-              (("run_test \"dtoc code coverage\"") ": run_test \"dtoc code coverage\"")
-              (("run_test \"fdt code coverage\"") ": run_test \"fdt code coverage\"")
               ;; This test would require internet access.
               (("\\./tools/buildman/buildman") (which "true")))
              (substitute* "test/py/tests/test_sandbox_exit.py"
@@ -521,10 +546,12 @@ def test_ctrl_c"))
                (("BASEDIR=sandbox") "BASEDIR=."))
              (for-each (lambda (file)
                               (substitute* file
-                                  ;; Disable signatures, due to GPL/Openssl
-                                  ;; license incompatibilities.  See
-                                  ;; https://bugs.gnu.org/34717 for details.
-                                  (("CONFIG_FIT_SIGNATURE=y") "CONFIG_FIT_SIGNATURE=n")
+                                  ;; Disable features that require OpenSSL due
+                                  ;; to GPL/Openssl license incompatibilities.
+                                  ;; See https://bugs.gnu.org/34717 for
+                                  ;; details.
+                                  (("CONFIG_FIT_SIGNATURE=y")
+                                   "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n")
                                   ;; This test requires a sound system, which is un-used
                                   ;; in u-boot-tools.
                                   (("CONFIG_SOUND=y") "CONFIG_SOUND=n")))
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
new file mode 100644
index 0000000000..688a1373e3
--- /dev/null
+++ b/gnu/packages/browser-extensions.scm
@@ -0,0 +1,123 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages browser-extensions)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system copy)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu build chromium-extension)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages python))
+
+(define play-to-kodi
+  (package
+    (name "play-to-kodi")
+    (version "1.9.1")
+    (home-page "https://github.com/khloke/play-to-xbmc-chrome")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "01rmcpbkn9vhcd8mrah2jmd2801k2r5fz7aqvp22hbwmh2z5f1ch"))))
+    (build-system copy-build-system)
+    (synopsis "Send website contents to Kodi")
+    (description
+     "Play to Kodi is a browser add-on that can send video, audio, and other
+supported content to the Kodi media center.")
+    (license license:expat)))
+
+(define-public play-to-kodi/chromium
+  (make-chromium-extension play-to-kodi))
+
+(define uassets
+  (let ((commit "0cef83c9fc68fdad8f3ee9dc07f6356ebc12791c"))
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/uBlockOrigin/uAssets")
+            (commit commit)))
+      (file-name (git-file-name "uAssets" (string-take commit 9)))
+      (sha256
+       (base32
+        "13mjql3rr5f3zilx05i8r7slnp7xyj6zn43dcfl3gdgi8ik483dd")))))
+
+(define ublock-origin
+  (package
+    (name "ublock-origin")
+    (version "1.31.0")
+    (home-page "https://github.com/gorhill/uBlock")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wfg1g061l83fqwllp8q1jr1kvwxy2kbbzfk6ynlf18kjng9v3h5"))))
+    (build-system gnu-build-system)
+    (outputs '("xpi" "firefox" "chromium"))
+    (arguments
+     '(#:tests? #f                      ;no tests
+       #:allowed-references ()
+       #:phases
+       (modify-phases (map (lambda (phase)
+                             (assq phase %standard-phases))
+                           '(set-paths unpack patch-source-shebangs))
+         (add-after 'unpack 'link-uassets
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
+             (symlink (string-append (assoc-ref (or native-inputs inputs)
+                                                "uassets"))
+                      "../uAssets")
+             #t))
+         (add-after 'unpack 'make-files-writable
+           (lambda _
+             ;; The build system copies some files and later tries
+             ;; modifying them.
+             (for-each make-file-writable (find-files "."))
+             #t))
+         (add-after 'patch-source-shebangs 'build-xpi
+           (lambda _
+             (invoke "./tools/make-firefox.sh" "all")))
+         (add-after 'build-xpi 'build-chromium
+           (lambda _
+             (invoke "./tools/make-chromium.sh")))
+         (add-after 'build-chromium 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((firefox (assoc-ref outputs "firefox"))
+                   (xpi (assoc-ref outputs "xpi"))
+                   (chromium (assoc-ref outputs "chromium")))
+               (install-file "dist/build/uBlock0.firefox.xpi"
+                             (string-append xpi "/lib/mozilla/extensions"))
+               (copy-recursively "dist/build/uBlock0.firefox" firefox)
+               (copy-recursively "dist/build/uBlock0.chromium" chromium)
+               #t))))))
+    (native-inputs
+     `(("python" ,python-wrapper)
+       ("uassets" ,uassets)
+       ("zip" ,zip)))
+    (synopsis "Block unwanted content from web sites")
+    (description
+     "uBlock Origin is a @dfn{wide spectrum blocker} for IceCat and
+ungoogled-chromium.")
+    (license license:gpl3+)))
+
+(define-public ublock-origin/chromium
+  (make-chromium-extension ublock-origin "chromium"))
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 6bff33eba5..202617e5ca 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -67,7 +68,7 @@
                 "13br735ig7lygvzyfd15fc2rdygrqm503j6xj5xkrl1r7w2wipq6"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags `("CC=gcc"
+     `(#:make-flags `(,(string-append "CC=" ,(cc-for-target))
                       ,(string-append "INSTALL_PREFIX="
                                       (assoc-ref %outputs "out")))
        #:test-target "test"
@@ -251,7 +252,7 @@ resembles Python.")
     (native-inputs
      `(("unzip" ,unzip))) ; for unpacking the source
     (arguments
-     `(#:make-flags '("CC=gcc")
+     `(#:make-flags (list (string-append "CC=" ,(cc-for-target)))
        #:tests? #f ; No test suite
        #:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 493d99387c..7a7408b4d7 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@@ -28,6 +28,7 @@
 
 (define-module (gnu packages c)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -183,6 +184,8 @@ language with thin bindings for other languages.")
 (define-public udunits
   (package
     (name "udunits")
+    ;; Four-part version numbers are development snapshots, not releases.  See
+    ;; <https://github.com/Unidata/UDUNITS-2/issues/99#issuecomment-732323472>.
     (version "2.2.26")
     (source (origin
               (method url-fetch)
@@ -370,7 +373,7 @@ any other grammar rules.")
 (define-public sparse
   (package
     (name "sparse")
-    (version "0.6.2")
+    (version "0.6.3")
     (source (origin
               (method url-fetch)
               (uri
@@ -378,7 +381,7 @@ any other grammar rules.")
                               "sparse-"  version ".tar.xz"))
               (sha256
                (base32
-                "1z11chawwcmf5xxx5v52cj7wrr3warz6q5wlcjvxpif1jbga172i"))))
+                "16d8c4dhipjzjf8z4z7pix1pdpqydz0v4r7i345f5s09hjnxpxnl"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (arguments
@@ -518,7 +521,8 @@ replacement for the syslog() call, but retains its ease of use.")
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (delete 'configure))
-       #:make-flags (list "CC=gcc" (string-append "prefix=" %output))
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          (string-append "prefix=" %output))
        #:tests? #f))                    ;no test suite
     (native-inputs
      `(("perl" ,perl)))
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index e4fb7abcd6..93303d632f 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -178,26 +178,17 @@ data units.")
 (define-public khal
   (package
     (name "khal")
-    (version "0.10.1")
+    (version "0.10.2")
     (source (origin
-             (method url-fetch)
-             (uri (pypi-uri "khal" version))
-             (sha256
-              (base32
-               "1r8bkgjwkh7i8ygvsv51h1cnax50sb183vafg66x5snxf3dgjl6l"))
-             (patches
-               (list
-                 (origin
-                   (method url-fetch)
-                   ;; This patch fixes an issue with python-urwid-2.1.0
-                   (uri "https://github.com/pimutils/khal/commit/2c5990c2de2015b251ba23617faa40ee11b8c22a.patch")
-                   (file-name "khal-compat-urwid-2.1.0.patch")
-                   (sha256
-                    (base32
-                     "11nd8hkjz68imwqqn0p54zmb53z2pfxmzchaviy7jc1ky5s9l663")))))))
+              (method url-fetch)
+              (uri (pypi-uri "khal" version))
+              (sha256
+               (base32
+                "11qhrga44knlnp88py9p547d4nr5kn041d2nszwa3dqw7mf22ks9"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
+     `(#:tests? #f ; The test suite is unreliable. See <https://bugs.gnu.org/44197>
+       #:phases (modify-phases %standard-phases
         ;; Building the manpage requires khal to be installed.
         (add-after 'install 'manpage
           (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -207,28 +198,9 @@ data units.")
             (install-file
              "doc/build/man/khal.1"
              (string-append (assoc-ref outputs "out") "/share/man/man1"))
-            #t))
-        (add-before 'check 'fix-tests
-          (lambda _
-            ;; Reported upstream: <https://github.com/pimutils/khal/issues/947>.
-            (substitute* "tests/cli_test.py"
-             (("Invalid value for \"\\[ICS\\]\"") "Invalid value for \\'[ICS]\\'"))
-            #t))
-        (replace 'check
-          (lambda* (#:key inputs #:allow-other-keys)
-            ;; The tests require us to choose a timezone.
-            (setenv "TZ"
-                    (string-append (assoc-ref inputs "tzdata")
-                                   "/share/zoneinfo/Zulu"))
-            (invoke "py.test" "tests"))))))
+            #t)))))
     (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-pytest-cov" ,python-pytest-cov)
-       ("python-setuptools-scm" ,python-setuptools-scm)
-       ;; Required for tests
-       ("python-freezegun" ,python-freezegun)
-       ("tzdata" ,tzdata-for-tests)
-       ("vdirsyncer" ,vdirsyncer)
+     `(("python-setuptools-scm" ,python-setuptools-scm)
        ;; Required to build manpage
        ("python-sphinxcontrib-newsfeed" ,python-sphinxcontrib-newsfeed)
        ("python-sphinx" ,python-sphinx)))
@@ -239,6 +211,11 @@ data units.")
        ("python-icalendar" ,python-icalendar)
        ("python-tzlocal" ,python-tzlocal)
        ("python-urwid" ,python-urwid)
+       ("python-pytz" ,python-pytz)
+       ("python-setproctitle" ,python-setproctitle)
+       ("python-atomicwrites" ,python-atomicwrites)
+       ("python-click" ,python-click)
+       ("python-click-log" ,python-click-log)
        ("python-pyxdg" ,python-pyxdg)))
     (synopsis "Console calendar program")
     (description "Khal is a standards based console calendar program,
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 766f62fc9f..a8da7ba48b 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -953,7 +953,7 @@ CD data, and more.  It's mostly compatible with @code{cdrtools}.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://downloads.sourceforge.net/cdemu/libmirage-"
+                    "mirror://sourceforge/cdemu/libmirage/libmirage-"
                     version ".tar.bz2"))
               (sha256
                (base32
@@ -982,7 +982,7 @@ the data stored in various image formats.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://downloads.sourceforge.net/cdemu/cdemu-daemon/"
+                    "mirror://sourceforge/cdemu/cdemu-daemon/"
                     "cdemu-daemon-" version ".tar.bz2"))
               (sha256
                (base32
@@ -1011,7 +1011,7 @@ drive and disc (including CD-ROMs and DVD-ROMs).")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://downloads.sourceforge.net/cdemu/cdemu-client-"
+                    "mirror://sourceforge/cdemu/cdemu-client/cdemu-client-"
                     version ".tar.bz2"))
               (sha256
                (base32
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 3e93e3c12a..cf9b85d592 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -119,7 +119,7 @@ modify some aspects of this style through the use of regular expressions.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/ebassi/mutest.git")
+         (url "https://github.com/ebassi/mutest")
          (commit "e6246c9")))
        (file-name (git-file-name name version))
        (sha256
@@ -509,7 +509,7 @@ and it supports a very flexible form of test discovery.")
 (define-public doctest
   (package
     (name "doctest")
-    (version "2.4.0")
+    (version "2.4.1")
     (home-page "https://github.com/onqtam/doctest")
     (source (origin
               (method git-fetch)
@@ -517,7 +517,7 @@ and it supports a very flexible form of test discovery.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1yi95saqv8qb3ix6w8d7ffvs7qbwvqmq6wblckhxhicxxdxk85cd"))))
+                "17g7n6rjs90i0b231x5s934qnr8m80ga2yg1z344bnsdiqcjd63w"))))
     (build-system cmake-build-system)
     (synopsis "C++ test framework")
     (description
@@ -1427,14 +1427,14 @@ use of resources by test cases.")))
 (define-public python-subunit-bootstrap
   (package
     (name "python-subunit-bootstrap")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-subunit" version))
        (sha256
         (base32
-         "1fsw8rsn1s3nklx06mayrg5rn2zbky6wwjc5z07s7rf1wjzfs1wn"))))
+         "0j0ymmnc5nfxi1qzvy59j27viqca7l7xd0y9x29g7yr0h693j804"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-extras" ,python-extras)
@@ -2693,7 +2693,7 @@ provides a simple way to achieve this.")
 (define-public umockdev
   (package
     (name "umockdev")
-    (version "0.14.3")
+    (version "0.14.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/martinpitt/umockdev/"
@@ -2701,7 +2701,7 @@ provides a simple way to achieve this.")
                                   "umockdev-" version ".tar.xz"))
               (sha256
                (base32
-                "15smnxwplk48nas2c8ji6a5fqcsh770f1yl5nc2j5iprjspbm4mg"))))
+                "0xmi24ckpps32k7hc139psgbsnsf4g106sv4l9m445m46amkxggd"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 7bc69c7386..73ef209100 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -27,9 +27,11 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages compression)
@@ -141,6 +143,7 @@
     "third_party/depot_tools/owners.py" ;BSD-3
     "third_party/devtools-frontend" ;BSD-3
     "third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat
+    "third_party/devtools-frontend/src/front_end/third_party/axe-core" ;MPL2.0
     "third_party/devtools-frontend/src/front_end/third_party/chromium" ;BSD-3
     "third_party/devtools-frontend/src/front_end/third_party/codemirror" ;Expat
     "third_party/devtools-frontend/src/front_end/third_party/fabricjs" ;Expat
@@ -150,8 +153,8 @@
     "third_party/devtools-frontend/src/front_end/third_party/lit-html" ;BSD-3
     "third_party/devtools-frontend/src/front_end/third_party/lodash-isequal" ;Expat
     "third_party/devtools-frontend/src/front_end/third_party/marked" ;Expat, BSD-3
+    "third_party/devtools-frontend/src/front_end/third_party/puppeteer" ;ASL2.0
     "third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0
-    "third_party/devtools-frontend/src/third_party/axe-core" ;MPL2.0
     "third_party/devtools-frontend/src/third_party/pyjson5" ;ASL2.0
     "third_party/devtools-frontend/src/third_party/typescript" ;ASL2.0
     "third_party/dom_distiller_js" ;BSD-3
@@ -219,6 +222,7 @@
     "third_party/pffft" ;the "FFTPACK" license, similar to BSD-3
     "third_party/ply" ;BSD-3
     "third_party/polymer" ;BSD-3
+    "third_party/private_membership" ;ASL2.0
     "third_party/private-join-and-compute" ;ASL2.0
     "third_party/protobuf" ;BSD-3
     "third_party/protobuf/third_party/six" ;Expat
@@ -231,6 +235,8 @@
     "third_party/s2cellid" ;ASL2.0
     "third_party/schema_org" ;CC-BY-SA3.0
     "third_party/securemessage" ;ASL2.0
+    "third_party/shaka-player" ;ASL2.0
+    "third_party/shell-encryption" ;ASL2.0
     "third_party/skia" ;BSD-3
     "third_party/skia/include/third_party/skcms" ;BSD-3
     "third_party/skia/third_party/skcms" ;BSD-3
@@ -252,6 +258,8 @@
     "third_party/usb_ids" ;BSD-3
     "third_party/usrsctp" ;BSD-2
     "third_party/vulkan_memory_allocator" ;Expat
+    "third_party/wayland/protocol" ;Expat
+    "third_party/wayland/stubs" ;BSD-3, Expat
     "third_party/wayland/wayland_scanner_wrapper.py" ;BSD-3
     "third_party/wayland-protocols" ;Expat
     "third_party/web-animations-js" ;ASL2.0
@@ -294,17 +302,9 @@
                   (string-append "ungoogled-chromium-" category "-" name))))
     (sha256 (base32 hash))))
 
-(define (arch-patch name revision hash)
-  (origin
-    (method url-fetch)
-    (uri (string-append "https://raw.githubusercontent.com/archlinux"
-                        "/svntogit-packages/" revision "/trunk/" name))
-    (sha256 (base32 hash))))
-
-(define %chromium-version "86.0.4240.75")
-(define %ungoogled-revision "c34a56db4c121238fface560e21531b6199ce5dd")
+(define %chromium-version "87.0.4280.66")
+(define %ungoogled-revision "1f7cdef6dfa8f612afde8f988131f210612333e0")
 (define %debian-revision "debian/84.0.4147.105-1")
-(define %arch-revision "2cbe439471932d30ff2c8ded6b3dfd51b312bbc9")
 
 (define %debian-patches
   (list (debian-patch "system/zlib.patch" %debian-revision
@@ -312,17 +312,6 @@
         (debian-patch "system/openjpeg.patch" %debian-revision
                       "0zd6v5njx1pc7i0y6mslxvpx5j4cq01mmyx55qcqx8qzkm0gm48j")))
 
-(define %arch-patches
-  (list (arch-patch "check-for-enable-accelerated-video-decode-on-Linux.patch"
-                    %arch-revision
-                    "12qj23dcp2g2ivyfyj13m4fzf68nllb9djwcxf1h195gn8wkml03")
-        (arch-patch "only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch"
-                    %arch-revision
-                    "0073qjp0dp9kj2ix2j6cxrima01rpdpkcjj9crxlb9b43b4cc53m")
-        (arch-patch "fix-invalid-end-iterator-usage-in-CookieMonster.patch"
-                    %arch-revision
-                    "1p1wy3dfncw0hhz77a1km0xjhix69ksgbpa569qz86nv76jbgn39")))
-
 (define %ungoogled-origin
   (origin
     (method git-fetch)
@@ -332,7 +321,15 @@
                               (string-take %ungoogled-revision 7)))
     (sha256
      (base32
-      "18p9a7qffmy8m03nqva7maalgil13lj2mn0s56v3crbs4wk4lalj"))))
+      "1cka9h7znkmilz9ld4s8pw1jjq2p7br03g3agcnqrk591y5h141i"))))
+
+(define %guix-patches
+  (list (local-file
+         (assume-valid-file-name
+          (search-patch "ungoogled-chromium-system-nspr.patch")))
+        (local-file
+         (assume-valid-file-name
+          (search-patch "ungoogled-chromium-extension-search-path.patch")))))
 
 ;; This is a source 'snippet' that does the following:
 ;; *) Applies various patches for unbundling purposes and libstdc++ compatibility.
@@ -355,10 +352,7 @@
           (for-each (lambda (patch)
                       (invoke "patch" "-p1" "--force" "--input"
                               patch "--no-backup-if-mismatch"))
-                    (append '#+%debian-patches '#+%arch-patches
-                            '#+(list (local-file
-                                      (search-patch
-                                       "ungoogled-chromium-system-nspr.patch")))))
+                    (append '#+%debian-patches '#+%guix-patches))
 
           (with-directory-excursion #+%ungoogled-origin
             (format #t "Ungooglifying...~%")
@@ -446,10 +440,10 @@
               (method url-fetch)
               (uri (string-append "https://commondatastorage.googleapis.com"
                                   "/chromium-browser-official/chromium-"
-                                  (car (string-split version #\-)) ".tar.xz"))
+                                  %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "1ddw4p9zfdzhi5hrd8x14k4w326znljzprnpfi2f917rlpnl2ynx"))
+                "0hgpg31gkksqgyvycsan7l7vjypc7cr6ikjfygf2zv7dhbmf9a19"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
@@ -463,7 +457,7 @@
        #:configure-flags
        ;; See tools/gn/docs/cookbook.md and
        ;; https://www.chromium.org/developers/gn-build-configuration
-       ;; for usage.  Run "./gn args . --list" in the Release
+       ;; for usage.  Run "gn args . --list" in the Release
        ;; directory for an exhaustive list of supported flags.
        ;; (Note: The 'configure' phase will do that for you.)
        (list "is_debug=false"
@@ -471,8 +465,10 @@
              ;; a developer build.
              "is_official_build=true"
              (string-append "max_jobs_per_link="
-                            (number->string (parallel-job-count)))
+                            ;; Respect the default cap of 8 jobs.
+                            (number->string (max 8 (parallel-job-count))))
              "clang_use_chrome_plugins=false"
+             "chrome_pgo_phase=0"
              "use_sysroot=false"
              "goma_dir=\"\""
              "enable_nacl=false"
@@ -506,6 +502,11 @@
              "use_system_libjpeg=true"
              "use_system_libopenjpeg2=true"
              "use_system_libpng=true"
+             "use_system_wayland_scanner=true"
+             (string-append "system_wayland_scanner_path=\""
+                            (assoc-ref %build-inputs "wayland-scanner")
+                            "/bin/wayland-scanner\"")
+
              "use_system_zlib=true"
              "use_gnome_keyring=false"  ;deprecated by libsecret
              "use_openh264=true"
@@ -529,6 +530,8 @@
 
              ;; WebRTC stuff.
              "rtc_use_h264=true"
+             "rtc_use_pipewire=true"
+             "rtc_link_pipewire=true"
              ;; Don't use bundled sources.
              "rtc_build_json=true"      ;FIXME: libc++ std::string ABI difference
              "rtc_build_libevent=false"
@@ -571,11 +574,6 @@
                        (find-files (string-append "third_party/webrtc/modules"
                                                   "/audio_coding/codecs/opus")))
 
-             (substitute* "chrome/common/chrome_paths.cc"
-               (("/usr/share/chromium/extensions")
-                ;; TODO: Add ~/.guix-profile.
-                "/run/current-system/profile/share/chromium/extensions"))
-
              ;; Many files try to include ICU headers from "third_party/icu/...".
              ;; Remove the "third_party/" prefix to use system headers instead.
              (substitute* (find-files "chrome" "\\.cc$")
@@ -617,6 +615,18 @@
                (substitute* "device/udev_linux/udev1_loader.cc"
                  (("libudev\\.so\\.1")
                   (string-append udev "/lib/libudev.so.1")))
+
+               (substitute*
+                   '("ui/ozone/platform/x11/gl_ozone_glx.cc"
+                     "ui/ozone/common/egl_util.cc"
+                     "ui/gl/init/gl_initializer_linux_x11.cc"
+                     "third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp")
+                 (("libGL\\.so\\.1")
+                  (string-append mesa "/lib/libGL.so.1"))
+                 (("libEGL\\.so\\.1")
+                  (string-append mesa "/lib/libEGL.so.1"))
+                 (("libGLESv2\\.so\\.2")
+                  (string-append mesa "/lib/libGLESv2.so.2")))
                #t)))
          (add-before 'configure 'prepare-build-environment
            (lambda* (#:key inputs #:allow-other-keys)
@@ -705,7 +715,10 @@
                     (libs           '("chrome_100_percent.pak"
                                       "chrome_200_percent.pak"
                                       "resources.pak"
-                                      "v8_context_snapshot.bin"))
+                                      "v8_context_snapshot.bin"
+                                      ;; Chromium ships its own libGL
+                                      ;; implementation called ANGLE.
+                                      "libEGL.so" "libGLESv2.so"))
                     (locales        (string-append lib "/locales"))
                     (resources      (string-append lib "/resources"))
                     (preferences    (assoc-ref inputs "master-preferences"))
@@ -774,7 +787,8 @@
 
        ("python-beautifulsoup4" ,python2-beautifulsoup4)
        ("python-html5lib" ,python2-html5lib)
-       ("python" ,python-2)))
+       ("python" ,python-2)
+       ("wayland-scanner" ,wayland)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("atk" ,atk)
@@ -824,12 +838,19 @@
        ("opus" ,opus+custom)
        ("pango" ,pango)
        ("pciutils" ,pciutils)
+       ("pipewire" ,pipewire)
        ("pulseaudio" ,pulseaudio)
        ("snappy" ,snappy)
        ("speech-dispatcher" ,speech-dispatcher)
        ("udev" ,eudev)
        ("valgrind" ,valgrind)
-       ("vulkan-headers" ,vulkan-headers)))
+       ("vulkan-headers" ,vulkan-headers)
+       ("wayland" ,wayland)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "CHROMIUM_EXTENSION_DIRECTORY")
+            (separator #f)              ;single entry
+            (files '("share/chromium/extensions")))))
 
     ;; Building Chromium takes ... a very long time.  On a single core, a busy
     ;; mid-end x86 system may need more than 24 hours to complete the build.
@@ -857,24 +878,46 @@ disabled in order to protect the users privacy.")
                    license:lgpl2.1+))))
 
 (define-public ungoogled-chromium/wayland
-  (package/inherit ungoogled-chromium
+  (package
+    (inherit ungoogled-chromium)
     (name "ungoogled-chromium-wayland")
+    (native-inputs '())
     (inputs
-     `(("wayland" ,wayland)
-       ("wayland-protocols" ,wayland-protocols)
-       ,@(package-inputs ungoogled-chromium)))
+     `(("bash" ,bash-minimal)
+       ("glibc-locales" ,glibc-utf8-locales)
+       ("ungoogled-chromium" ,ungoogled-chromium)))
+    (build-system trivial-build-system)
     (arguments
-     (substitute-keyword-arguments (package-arguments ungoogled-chromium)
-       ((#:configure-flags flags)
-        `(append (list "use_ozone=true"
-                       "ozone_platform_wayland=true"
-                       "ozone_platform_x11=true"
-                       "ozone_auto_platforms=false"
-                       "ozone_platform=\"wayland\""
-                       "use_xkbcommon=true"
-                       "use_system_minigbm=true"
-                       "use_system_libwayland=true"
-                       (string-append "system_wayland_scanner_path=\""
-                                      (assoc-ref %build-inputs "wayland")
-                                      "/bin/wayland-scanner\""))
-                 (delete "use_vaapi=true" ,flags)))))))
+     '(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((bash (assoc-ref %build-inputs "bash"))
+                (chromium (assoc-ref %build-inputs "ungoogled-chromium"))
+                (locales (assoc-ref %build-inputs "glibc-locales"))
+                (out (assoc-ref %outputs "out"))
+                (exe (string-append out "/bin/chromium")))
+
+           ;; Use a Unicode locale so we can substitute the file below.
+           (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale"))
+           (setlocale LC_ALL "en_US.utf8")
+
+           (mkdir-p (dirname exe))
+           (symlink (string-append chromium "/bin/chromedriver")
+                    (string-append out "/bin/chromedriver"))
+
+           (call-with-output-file exe
+             (lambda (port)
+               (format port "#!~a
+exec ~a --enable-features=UseOzonePlatform --ozone-platform=wayland $@"
+                       (string-append bash "/bin/bash")
+                       (string-append chromium "/bin/chromium"))))
+           (chmod exe #o555)
+
+           ;; Provide the manual and .desktop file.
+           (copy-recursively (string-append chromium "/share")
+                             (string-append out "/share"))
+           (substitute* (string-append
+                         out "/share/applications/chromium.desktop")
+             ((chromium) out))
+           #t))))))
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 517b20f448..2fb9822fb5 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -68,8 +68,8 @@
                 (file-name (string-append name "-" version "-checkout")))))))
 
 (define-public cuirass
-  (let ((commit "df2d13621f4b2ace33a460746e704115b7b1541e")
-        (revision "53"))
+  (let ((commit "fd432b8e8f449d691773e96e7d90f44761e01aa3")
+        (revision "55"))
     (package
       (name "cuirass")
       (version (git-version "0.0.1" revision commit))
@@ -81,7 +81,7 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1vgb1wl1rkijm1vv5chqllf4i5w1j7g02xqlaf2xmqjh2phy5dxa"))))
+                  "10j3w3px0250avwry2x8wsa0m0plvm957g4qqgnajsbc9gvka554"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index e66132ab40..5b238ab996 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
 ;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -21,6 +22,7 @@
 
 (define-module (gnu packages clojure)
   #:use-module (gnu packages)
+  #:use-module (gnu packages java)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -78,6 +80,8 @@
                   (sha256
                    (base32 "1kcyv2836acs27vi75hvf3r773ahv2nlh9b3j9xa9m9sdanz1h83")))))
       (build-system ant-build-system)
+      (inputs
+       `(("jre" ,icedtea)))
       (arguments
        `(#:imported-modules ((guix build clojure-utils)
                              (guix build guile-build-system)
@@ -114,7 +118,23 @@
            (add-after 'install-license-files 'install-doc
              (cut install-doc #:doc-dirs '("doc/clojure/") <...>))
            (add-after 'install-doc 'install-javadoc
-             (install-javadoc "target/javadoc/")))))
+             (install-javadoc "target/javadoc/"))
+           (add-after 'install 'make-wrapper
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (wrapper (string-append out "/bin/clojure")))
+                 (mkdir-p (string-append out "/bin"))
+                 (with-output-to-file wrapper
+                   (lambda _
+                     (display
+                      (string-append
+                       "#!"
+                       (which "sh")
+                       "\n\n"
+                       (assoc-ref inputs "jre") "/bin/java -jar "
+                       out "/share/java/clojure.jar \"$@\"\n"))))
+                 (chmod wrapper #o555))
+               #t)))))
       (native-inputs libraries)
       (home-page "https://clojure.org/")
       (synopsis "Lisp dialect running on the JVM")
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 7e679db220..7316a3bf63 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -7,8 +7,8 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
@@ -72,7 +72,6 @@
               "Source/cmGlobalXCodeGenerator.cxx"
               "Source/cmLocalUnixMakefileGenerator3.cxx"
               "Source/cmExecProgramCommand.cxx"
-              "Utilities/Release/release_cmake.cmake"
               "Tests/CMakeLists.txt"
               "Tests/RunCMake/File_Generate/RunCMakeTest.cmake")
           (("/bin/sh") (which "sh")))
@@ -85,7 +84,11 @@
     ;; This test requires network access.
     "CTestTestUpload"
     ;; This test requires 'ldconfig' which is not available in Guix.
-    "RunCMake.install"))
+    "RunCMake.install"
+    ;; This test fails for unknown reason.
+    "RunCMake.file-GET_RUNTIME_DEPENDENCIES"
+    ;; This test requires the bundled libuv.
+    "BootstrapTest"))
 
 (define %preserved-third-party-files
   '(;; 'Source/cm_getdate.c' includes archive_getdate.c wholesale, so it must
@@ -101,7 +104,7 @@
     (version "3.16.5")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.cmake.org/files/v"
+              (uri (string-append "https://cmake.org/files/v"
                                   (version-major+minor version)
                                   "/cmake-" version ".tar.gz"))
               (sha256
@@ -305,6 +308,39 @@ and workspaces that can be used in the compiler environment of your choice.")
   (package
     (inherit cmake-minimal)
     (name "cmake")
+    (version "3.19.1")
+    ;; TODO: Move the following source field to the cmake-bootstrap package in
+    ;; the next rebuild cycle.
+    (source (origin
+              (inherit (package-source cmake-bootstrap))
+              (uri (string-append "https://cmake.org/files/v"
+                                  (version-major+minor version)
+                                  "/cmake-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1fisi9rlijw9wd0yjzk1c6j7ljnb2yiq5iqnrz6m1xkflyinw9hx"))
+              (snippet
+               (match (origin-snippet (package-source cmake-bootstrap))
+                 ((_ _ exp ...)
+                  ;; Now we can delete the remaining software bundles.
+                  (append `(begin
+                             (define preserved-files
+                               '(,@%preserved-third-party-files
+                                 ;; TODO: Move this file to the
+                                 ;; %preserved-third-party-files variable in
+                                 ;; the next rebuild cycle.
+                                 "Utilities/cm3p" ;CMake header wrappers
+                                 ;; Use the bundled JsonCpp during bootstrap
+                                 ;; to work around a circular dependency.
+                                 ;; TODO: JsonCpp can be built with Meson
+                                 ;; instead of CMake, but meson-build-system
+                                 ;; currently does not support
+                                 ;; cross-compilation.
+                                 "Utilities/cmjsoncpp"
+                                 ;; LibUV is required to bootstrap the initial
+                                 ;; build system.
+                                 "Utilities/cmlibuv")))
+                          exp))))))
     (arguments
      (substitute-keyword-arguments (package-arguments cmake-minimal)
        ;; Use cmake-minimal this time.
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 6d348308ac..4e30dacdf4 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -39,6 +39,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages autogen)
@@ -338,81 +339,93 @@ features that are not supported by the standard @code{stdio} implementation.")
               "http://sourceforge.net/p/ctrio/git/ci/master/tree/README"))))
 
 (define-public universal-ctags
-  ;; The project is unable to decide whether to use 1.0 or 6.0 as the
-  ;; first public release version (it started as a fork of another ctags
-  ;; project that was on version 5.8), and five years later have been
-  ;; unable to tag a release.  Thus, we just take the master branch.
-  (let ((commit "0c78c0c4a68030df0d025c90bad291108b5e7107")
-        (revision "0"))
-    (package
-      (name "universal-ctags")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/universal-ctags/ctags")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0lnxc3kwi6srw0015m16vyjfdc7pdr9d1qzxjsbfv3c69ag87jhc"))
-         (modules '((guix build utils)))
-         (snippet
-          '(begin
-             ;; Remove the bundled PackCC and associated build rules.
-             (substitute* "Makefile.am"
-               (("\\$\\(packcc_verbose\\)\\$\\(PACKCC\\)")
-                "packcc")
-               (("\\$\\(PEG_SRCS\\) \\$\\(PEG_HEADS\\): packcc\\$\\(EXEEXT\\)")
-                "$(PEG_SRCS) $(PEG_HEADS):")
-               (("noinst_PROGRAMS \\+= packcc")
-                ""))
-             (delete-file-recursively "misc/packcc")
-             #t))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'make-files-writable
-                      (lambda _
-                        (for-each make-file-writable (find-files "."))
-                        #t))
-                    (add-before 'bootstrap 'patch-optlib2c
-                      (lambda _
-                        ;; The autogen.sh script calls out to optlib2c to
-                        ;; generate translations, so we can not wait for the
-                        ;; patch-source-shebangs phase.
-                        (patch-shebang "misc/optlib2c")
-                        #t))
-                    (add-before 'check 'patch-tests
-                      (lambda _
-                        (substitute* "misc/units"
-                          (("SHELL=/bin/sh")
-                           (string-append "SHELL=" (which "sh"))))
-                        (substitute* "Tmain/utils.sh"
-                          (("/bin/echo") (which "echo")))
-                        #t)))))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("packcc" ,packcc)
-         ("perl" ,perl)
-         ("pkg-config" ,pkg-config)))
-      (inputs
-       `(("jansson" ,jansson)
-         ("libseccomp" ,libseccomp)
-         ("libxml2" ,libxml2)
-         ("libyaml" ,libyaml)))
-      (home-page "https://ctags.io/")
-      (synopsis "Generate tag files for source code")
-      (description
-       "Universal Ctags generates an index (or tag) file of language objects
+  (package
+    (name "universal-ctags")
+    (version "5.9.20201018.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/universal-ctags/ctags")
+             (commit (string-append "p" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "174p1w20pl25k996hfw61inw4mqhskmmic1lyw2m65firmkyvs7x"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove the bundled PackCC and associated build rules.
+           (substitute* "Makefile.am"
+             (("\\$\\(packcc_verbose\\)\\$\\(PACKCC\\)")
+              "packcc")
+             (("\\$\\(PEG_SRCS\\) \\$\\(PEG_HEADS\\): packcc\\$\\(EXEEXT\\)")
+              "$(PEG_SRCS) $(PEG_HEADS):")
+             (("noinst_PROGRAMS \\+= packcc")
+              ""))
+           (delete-file-recursively "misc/packcc")
+           #t))))
+    (build-system gnu-build-system)
+    (arguments
+     '(;; Don't use the build-time TMPDIR (/tmp/guix-build-...) at runtime.
+       #:configure-flags '("--enable-tmpdir=/tmp")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'make-files-writable
+                    (lambda _
+                      (for-each make-file-writable (find-files "."))
+                      #t))
+                  (add-before 'bootstrap 'patch-optlib2c
+                    (lambda _
+                      ;; The autogen.sh script calls out to optlib2c to
+                      ;; generate translations, so we can not wait for the
+                      ;; patch-source-shebangs phase.
+                      (patch-shebang "misc/optlib2c")
+                      #t))
+                  (add-before 'check 'patch-tests
+                    (lambda _
+                      (substitute* "misc/units"
+                        (("SHELL=/bin/sh")
+                         (string-append "SHELL=" (which "sh"))))
+                      (substitute* "Tmain/utils.sh"
+                        (("/bin/echo") (which "echo")))
+                      #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ;; XXX: Use ctags' own packcc fork even though we meticolously unbundle
+       ;; it above.  Mainly for historical reasons, and perhaps their changes
+       ;; get upstreamed in the future.
+       ("packcc"
+        ,(let ((commit "03402b79505dc0024f90d5bebfd7e5d3fb62da9a"))
+           (package
+             (inherit packcc)
+             (source (origin
+                       (method git-fetch)
+                       (uri (git-reference
+                             (url "https://github.com/universal-ctags/packcc")
+                             (commit commit)))
+                       (file-name (git-file-name "packcc-for-ctags"
+                                                 (string-take commit 7)))
+                       (sha256
+                        (base32
+                         "0vxpdk9l2lf7f32nx1p3b3xmw2kw2wp95vnf9bc4lyqrg69pblm0")))))))
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("jansson" ,jansson)
+       ("libseccomp" ,libseccomp)
+       ("libxml2" ,libxml2)
+       ("libyaml" ,libyaml)))
+    (home-page "https://ctags.io/")
+    (synopsis "Generate tag files for source code")
+    (description
+     "Universal Ctags generates an index (or tag) file of language objects
 found in source files for many popular programming languages.  This index
 makes it easy for text editors and other tools to locate the indexed items.
 Universal Ctags improves on traditional ctags because of its multilanguage
 support, its ability for the user to define new languages searched by regular
 expressions, and its ability to generate emacs-style TAGS files.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public withershins
   (package
@@ -518,6 +531,28 @@ textual @command{gcov} output to implement the following enhanced
 functionality such as HTML output.")
     (license license:gpl2+)))
 
+(define-public lcov-cobertura
+  (package
+    (name "python-lcov-cobertura")
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "lcov_cobertura" version))
+       (sha256
+        (base32
+         "02ar6yjazlxq4p64cz9gag08bvakmzjrp147jara9wlnlbc96j8g"))))
+    (build-system python-build-system)
+    (home-page "https://eriwen.github.io/lcov-to-cobertura-xml/")
+    (synopsis "LCOV to Cobertura XML converter")
+    (description
+     "The lcov-to-cobertura Python module converts code coverage report files
+in the lcov format to the XML format of
+@uref{http://cobertura.github.io/cobertura/, Cobertura}, a Java code coverage
+tool.  It allows continuous integration servers like Jenkins to aggregate
+results and determine build stability.")
+    (license license:asl2.0)))
+
 (define-public kcov
   (package
     (name "kcov")
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 3efd56d610..632ee46cea 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2758,6 +2758,12 @@ exec " gcc "/bin/" program
                            "--disable-shared"
                            "--enable-languages=c,c++"
 
+                           ,@(if (equal? "powerpc64le-linux-gnu" (boot-triplet))
+                                 ;; On POWER9 (little endian) glibc needs the
+                                 ;; 128-bit long double type.
+                                 '("--with-long-double-128")
+                                 '())
+
                            ;; libstdc++ cannot be built at this stage
                            ;; ("Link tests are not allowed after
                            ;; GCC_NO_EXECUTABLES.").
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index c51b8c671a..19b24ea46d 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -787,17 +787,17 @@ decompression of some loosely related file formats used by Microsoft.")
 (define-public lz4
   (package
     (name "lz4")
-    (version "1.9.2")
+    (version "1.9.3")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference (url "https://github.com/lz4/lz4")
                            (commit (string-append "v" version))))
        (sha256
-        (base32
-         "0lpaypmk70ag2ks3kf2dl4ac3ba40n5kc1ainkp9wfjawz76mh61"))
+        (base32 "1w02kazh1fps3sji2sn89fz862j1199c5ajrqcgl1bnlxj09kcbz"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
+    (outputs (list "out" "static"))
     (native-inputs
      `(;; For tests.
        ("python" ,python)
@@ -806,20 +806,24 @@ decompression of some loosely related file formats used by Microsoft.")
      `(#:test-target "test"
        #:make-flags (list (string-append "CC=" ,(cc-for-target))
                           (string-append "prefix=" (assoc-ref %outputs "out")))
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure)            ;no configure script
-                  (add-before 'check 'disable-broken-test
-                    (lambda _
-                      ;; XXX: test_install.sh fails when prefix is a subdirectory.
-                      (substitute* "tests/Makefile"
-                        (("^test: (.*) test-install" _ targets)
-                         (string-append "test: " targets)))
-                      #t))
-                  (add-after 'install 'delete-static-library
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((out (assoc-ref outputs "out")))
-                        (delete-file (string-append out "/lib/liblz4.a"))
-                        #t))))))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure script
+         (add-before 'check 'disable-broken-test
+           (lambda _
+             (substitute* "tests/Makefile"
+               ;; This fails when $prefix is not a single top-level directory.
+               (("^test: (.*) test-install" _ targets)
+                (string-append "test: " targets)))
+             #t))
+         (add-after 'install 'move-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (static (assoc-ref outputs "static")))
+               (mkdir-p (string-append static "/lib"))
+               (rename-file (string-append out "/lib/liblz4.a")
+                            (string-append static "/lib/liblz4.a"))
+               #t))))))
     (home-page "https://www.lz4.org")
     (synopsis "Compression algorithm focused on speed")
     (description "LZ4 is a lossless compression algorithm, providing
@@ -845,9 +849,9 @@ time for compression ratio.")
                 "0zmhvczscqz0mzh4b9m8m42asq14db0a6lc8clp5ljq5ybrv70d9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f                      ; no check target
+     `(#:tests? #f                      ; no check target
        #:make-flags
-       (list "CC=gcc"
+       (list (string-append "CC=" ,(cc-for-target))
              "XZ_SUPPORT=1"
              "LZO_SUPPORT=1"
              "LZ4_SUPPORT=1"
@@ -952,7 +956,8 @@ tarballs.")
                 "0j2zm3z271x5aw63mwhr3vymzn45p2vvrlrpm9cz2nywna41b0hq"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "INSTALL=install" "CC=gcc"
+     `(#:make-flags (list "INSTALL=install"
+                          (string-append "CC=" ,(cc-for-target))
                           (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
                   (delete 'configure)
@@ -1297,7 +1302,7 @@ or junctions, and always follows hard links.")
     (source
      (origin (method git-fetch)
              (uri (git-reference
-                    (url "http://github.com/twogood/unshield.git")
+                    (url "http://github.com/twogood/unshield")
                     (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -1429,7 +1434,7 @@ or junctions, and always follows hard links.")
 
                #t))))
        #:make-flags
-       (list "CC=gcc"
+       (list ,(string-append "CC=" (cc-for-target))
              (string-append "prefix=" (assoc-ref %outputs "out"))
              (string-append "libdir=" (assoc-ref %outputs "lib") "/lib")
              (string-append "includedir=" (assoc-ref %outputs "lib") "/include")
@@ -1464,8 +1469,14 @@ speed.")
     (version (package-version zstd))
     (source (package-source zstd))
     (build-system gnu-build-system)
+    (inputs
+     `(,@(if (%current-target-system)
+           `(("googletest" ,googletest))
+           '())))
     (native-inputs
-     `(("googletest" ,googletest)))
+     `(,@(if (%current-system)
+           `(("googletest" ,googletest))
+           '())))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -1483,7 +1494,8 @@ speed.")
                (install-file "README.md" doc)
                #t))))
        #:make-flags
-       (list "CC=gcc"
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "CXX=" ,(cxx-for-target))
              (string-append "PREFIX=" (assoc-ref %outputs "out")))))
     (home-page (package-home-page zstd))
     (synopsis "Threaded implementation of the Zstandard compression algorithm")
@@ -1674,7 +1686,7 @@ archive can be reverted.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://savannah.nongnu.org/download/atool/atool-"
+       (uri (string-append "mirror://savannah/atool/atool-"
                            version ".tar.gz"))
        (sha256
         (base32
diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm
index e57e40c2ad..fb6a899b48 100644
--- a/gnu/packages/coq.scm
+++ b/gnu/packages/coq.scm
@@ -522,7 +522,7 @@ Coq proof assistant.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "git://github.com/uds-psl/autosubst.git")
+                      (url "git://github.com/uds-psl/autosubst")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index f51e83283f..f0d8cd2a40 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -193,7 +194,7 @@ combination of these streams.")
 (define-public xsimd
   (package
     (name "xsimd")
-    (version "7.2.3")
+    (version "7.4.9")
     (source
      (origin
        (method git-fetch)
@@ -201,7 +202,7 @@ combination of these streams.")
              (url "https://github.com/QuantStack/xsimd")
              (commit version)))
        (sha256
-        (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
+        (base32 "11by8gbshm4vv6flqp0ihff8c6nmbaqq7ms93b38rrq68bigcply"))
        (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
@@ -211,11 +212,12 @@ combination of these streams.")
      `(("googletest" ,googletest)))
     (home-page "https://github.com/QuantStack/xsimd")
     (synopsis "C++ wrappers for SIMD intrinsics and math implementations")
-    (description "xsimd provides a unified means for using SIMD features for
-library authors.  Namely, it enables manipulation of batches of numbers with
-the same arithmetic operators as for single values.  It also provides
-accelerated implementation of common mathematical functions operating on
-batches.")
+    (description
+     "xsimd provides a unified means for using @acronym{SIMD, single instruction
+multiple data} features for library authors.  Namely, it enables manipulation of
+batches of numbers with the same arithmetic operators as for single values.
+It also provides accelerated implementation of common mathematical functions
+operating on batches.")
     (license license:bsd-3)))
 
 (define-public chaiscript
@@ -372,7 +374,7 @@ intuitive syntax and trivial integration.")
 (define-public xtl
   (package
     (name "xtl")
-    (version "0.6.19")
+    (version "0.6.21")
     (source (origin
               (method git-fetch)
               (uri
@@ -381,7 +383,7 @@ intuitive syntax and trivial integration.")
                 (commit version)))
               (sha256
                (base32
-                "1g98lfrp13fqfqrirg0rw90m7bajmjmy12yhrlj5jzwcby4dfs81"))
+                "08xhyy9fm2ddkdrgb1qyd2bs371a2xr7xzar482pwphz27vr035w"))
               (file-name (git-file-name name version))))
     (native-inputs
      `(("googletest" ,googletest)
@@ -406,7 +408,7 @@ tools (containers, algorithms) used by other QuantStack packages.")
 (define-public ccls
   (package
     (name "ccls")
-    (version "0.20190823.6")
+    (version "0.20201025")
     (source
      (origin
        (method git-fetch)
@@ -414,7 +416,8 @@ tools (containers, algorithms) used by other QuantStack packages.")
              (url "https://github.com/MaskRay/ccls")
              (commit version)))
        (sha256
-        (base32 "11h5nwk4qqshf3i8yr4bxpnvmidrhkzd0zxhf1xqv8cv6r08k47f"))
+        (base32
+         "13v00q1bz8g0ckw1sv0zyicbc44irc00vhwxdv3vvwlvylm7s21p"))
        (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index cc75136a3a..adb1bf421b 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -147,14 +147,14 @@ degree elevation and curve fitting.")
 (define-public r-v8
   (package
     (name "r-v8")
-    (version "3.2.0")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "V8" version))
        (sha256
         (base32
-         "0z0dwa538lkggawiwrlplz698xznzlgv9fwhdslm7g7gdxyf0xgm"))))
+         "1d2j9p1fsz9hp8n8lrywyrkwivhfa3qx5ha5f24vin8b6l04xy67"))))
     (properties `((upstream-name . "V8")))
     (build-system r-build-system)
     (arguments
@@ -217,15 +217,17 @@ programming packages such as @code{knitr} and @code{rmarkdown}.")
 (define-public r-clipr
   (package
     (name "r-clipr")
-    (version "0.7.0")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "clipr" version))
        (sha256
         (base32
-         "1qn2p13d0c1bpqss6mv9hk60980rzhznfqpyaf5x0fy65svy9903"))))
+         "1ywa4kipwc2d7na6iiz3wzdah99h6aynnh74yxl3nzl40xxlgbgz"))))
     (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/mdlincoln/clipr")
     (synopsis "Read and write from the system clipboard")
     (description
@@ -439,13 +441,13 @@ control over dimensions and appearance.")
 (define-public r-ecp
   (package
     (name "r-ecp")
-    (version "3.1.2")
+    (version "3.1.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ecp" version))
               (sha256
                (base32
-                "11f9p869xr0zg779i46gmflxlq4xclk9wxbab0nj2fan26pn4sfy"))))
+                "0n602jssl6rf596nwm6hbl7s9vdlqi20w8mrhxicj373mw5v22m8"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)))
@@ -787,14 +789,14 @@ same time tries to group instances from the same class together.")
 (define-public r-callr
   (package
     (name "r-callr")
-    (version "3.4.4")
+    (version "3.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "callr" version))
        (sha256
         (base32
-         "1hgc4mfwv83104fh93v8g2srpwzjayq7krgzi9r0apq784r61642"))))
+         "15l6ppsxdadlnl4fk0f8bvf327n8izk96px5d08m1ay9iij8qcyf"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-r6" ,r-r6)
@@ -947,13 +949,13 @@ in systems and applications.")
 (define-public r-servr
   (package
     (name "r-servr")
-    (version "0.18")
+    (version "0.20")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "servr" version))
               (sha256
                (base32
-                "0xfbf1a1w34hbsx4jrdr4rqf22v7gf1p37ngknglv1dyxih7ipja"))))
+                "0px75vkc6q4iwbirr27bbrbpv0v9ial7zijnbd6dhjccwxl3x1l3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-httpuv" ,r-httpuv)
@@ -1976,13 +1978,13 @@ initiative to bring PASSTEC 2000 functionalities to R.")
 (define-public r-partykit
   (package
    (name "r-partykit")
-   (version "1.2-9")
+   (version "1.2-10")
    (source (origin
              (method url-fetch)
              (uri (cran-uri "partykit" version))
              (sha256
               (base32
-               "18nc6vvj1cy8ly2hqixg544sbg8vbpzwsr1cdlzrqfykd0pzgkvf"))))
+               "1jg68rqhk2r0h2hk50xl99zp56b1nfdcam06kfvssqrkgkavkswf"))))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-formula" ,r-formula)
@@ -2056,13 +2058,13 @@ print, summary, plot, update, etc.
 (define-public r-ps
   (package
     (name "r-ps")
-    (version "1.3.4")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ps" version))
        (sha256
-        (base32 "1cxfhnff22fbsr9vynhql0rhhrqfxvkb6kv11h2m740r9scwcs44"))))
+        (base32 "0yns03ffd2a2cs4b6dsjjlqhv46vq2g094m8psmhf3h9i52awyaz"))))
     (build-system r-build-system)
     (home-page "https://ps.r-lib.org")
     (synopsis "List, query, and manipulate system processes")
@@ -2414,14 +2416,14 @@ compare different dendrograms to one another.")
 (define-public r-getoptlong
   (package
     (name "r-getoptlong")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "GetoptLong" version))
        (sha256
         (base32
-         "142gi3ifpcz1rhqrbw4wh326jn2q61s659wkzf92ys4dybs43dky"))))
+         "0l9pa9dx8pcg3j7jn4b9k98g7r5vdsvnmf6apnifzm57mc0vlkg6"))))
     (properties `((upstream-name . "GetoptLong")))
     (build-system r-build-system)
     (inputs
@@ -2464,14 +2466,14 @@ any subsequent lookup as it keeps the hash table in memory.")
 (define-public r-ff
   (package
     (name "r-ff")
-    (version "4.0.2")
+    (version "4.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ff" version))
        (sha256
         (base32
-         "1qbfmhk4v76q145yalqaiaffklvkfs615b5m0imxyjyjcvx1nbn0"))))
+         "1rfj2ff5cxzdp9nvfnbgmswc1jvxz5vkxqgpv6gprwk32a0z3v12"))))
     (build-system r-build-system)
     (propagated-inputs `(("r-bit" ,r-bit)))
     (home-page "http://ff.r-forge.r-project.org/")
@@ -2633,13 +2635,13 @@ most popular ones.")
 (define-public r-sp
   (package
     (name "r-sp")
-    (version "1.4-2")
+    (version "1.4-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sp" version))
        (sha256
-        (base32 "02jxsd30apzjbdbssirysq70d4svdwzn931jhxr0ladl72g9bqvk"))))
+        (base32 "0zzw1gfic5b311vrbkmmmaap3yllgd192af067l5ymm885jqm1zs"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -3153,14 +3155,14 @@ contexts.")
 (define-public r-squarem
   (package
     (name "r-squarem")
-    (version "2020.4")
+    (version "2020.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "SQUAREM" version))
        (sha256
         (base32
-         "1r2yxfiqbpwy5ccg94r7f6sz7lh5aq0xjpf632s42wgmml1dvlzb"))))
+         "1f0j5pbsz2wi7dfl8h8gvdl991bjywiwkd2f6z0xgkh87kl5y0b4"))))
     (properties `((upstream-name . "SQUAREM")))
     (build-system r-build-system)
     (home-page "https://coah.jhu.edu/people/Faculty_personal_Pages/Varadhan.html")
@@ -3584,14 +3586,14 @@ by base R methods related to model fitting.")
 (define-public r-broom
   (package
     (name "r-broom")
-    (version "0.7.1")
+    (version "0.7.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "broom" version))
        (sha256
         (base32
-         "12xnpmm1cyhksv4gwcrwgrpw7c0xf1c7chlpng9lk8arifbfvqpg"))))
+         "18qkgw5f46cfr8sc7r9a261ivn3s4w88sdj653gaa20723179300"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)
@@ -3622,14 +3624,14 @@ provides a one-row summary of model-level statistics.")
 (define-public r-recipes
   (package
     (name "r-recipes")
-    (version "0.1.13")
+    (version "0.1.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "recipes" version))
        (sha256
         (base32
-         "1d3pmprkiz60w7lq5q4lpl5zlwf7fg7qghf7sq6xs1294w54gzbs"))))
+         "0ix678aj71ml5cmfhy1j0b2ddhf5wlb1d74bjc9djr6r86xsqmcz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
@@ -3736,13 +3738,13 @@ color labels, layout, etc.")
 (define-public r-stringdist
   (package
     (name "r-stringdist")
-    (version "0.9.6")
+    (version "0.9.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "stringdist" version))
        (sha256
-        (base32 "0nb3iwpl4f3xxirns1frwvarpyrl4i5f74h8r6h80cg0a4mpdgcb"))))
+        (base32 "06rzbgw43vzg496xca82pydf3g2rz6iw6h50ai0prbp9hbwrhvfd"))))
     (build-system r-build-system)
     (home-page "https://github.com/markvanderloo/stringdist")
     (synopsis "Approximate string matching and string distance functions")
@@ -4350,14 +4352,14 @@ plots in @code{ggplot2}.")
 (define-public r-cli
   (package
     (name "r-cli")
-    (version "2.0.2")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cli" version))
        (sha256
         (base32
-         "1dhkah6jvr96k4h4agcc2rfls75bpjb0j58fzaz3dc0fp3jk8229"))))
+         "03zaq9yhz6gw49qdnhc66b3sw9i916ahkzyg2cgh17dhf31d2acq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -4562,13 +4564,13 @@ iVAT).")
 (define-public r-xfun
   (package
     (name "r-xfun")
-    (version "0.18")
+    (version "0.19")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xfun" version))
        (sha256
-        (base32 "0iqh9b0a5wlc4lmqf7r169h4m2xji5l1viwwi47qf094rl5r3ddr"))))
+        (base32 "15yyigkl1g9w9d7097hrm94dxn1af333ywr5xdw78qqrw6npn0iv"))))
     (build-system r-build-system)
     ;; knitr itself depends on xfun
     #;
@@ -4736,14 +4738,14 @@ automatically.")
 (define-public r-network
   (package
     (name "r-network")
-    (version "1.16.0")
+    (version "1.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "network" version))
        (sha256
         (base32
-         "0dnf1wl3za2lhx2lwd8smhlijl1cfhckgr8zz9piiirrfi2m2kx2"))))
+         "1cgy7vlbinyndl0zkzvnpcmi240wry6iwfb42sz1mj5c9iwkar7b"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-magrittr" ,r-magrittr)
@@ -4851,14 +4853,14 @@ detect possible inconsistencies.")
 (define-public r-sna
   (package
     (name "r-sna")
-    (version "2.5")
+    (version "2.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sna" version))
        (sha256
         (base32
-         "1j3i6300m686qqfmyvadim377cd3mplzgj6mandygw8brg50id8k"))))
+         "0ai0v4538d30m4wks5s3lch1yfmx1ml0nnrz7ihs097lv586a09s"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-network" ,r-network)
@@ -5839,7 +5841,7 @@ specific S3-method.")
 imputed values are introduced, which can be used for exploring the data and
 the structure of the missing and/or imputed values.  Depending on this
 structure of the missing values, the corresponding methods may help to
-identify the mechanism generating the missing values and allows to explore the
+identify the mechanism generating the missing values and explore the
 data including missing values.  In addition, the quality of imputation can be
 visually explored using various univariate, bivariate, multiple and
 multivariate plot methods.")
@@ -6083,14 +6085,14 @@ additional external tools on any platform.")
 (define-public r-openxlsx
   (package
     (name "r-openxlsx")
-    (version "4.2.2")
+    (version "4.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "openxlsx" version))
        (sha256
         (base32
-         "12sjarcmbdww6jmkcqy8c6id94zv3lwmm15ns1y0xj3ipr8qmphb"))))
+         "0vz4nlrwgsiifrgza8kfd9i1c0ya6plymrgk59vyy2z54vc8kvyd"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
@@ -6228,14 +6230,14 @@ promises, but with a syntax that is idiomatic R.")
 (define-public r-dosnow
   (package
     (name "r-dosnow")
-    (version "1.0.18")
+    (version "1.0.19")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doSNOW" version))
        (sha256
         (base32
-         "0rj72z5505cprh6wykhhiz08l9bmd966srqh2qypwivf321bvrvh"))))
+         "0f07b38cl7s61vwzkyqkzzsic9g4sw9k6ndbxk3g90l4ca0d1ljc"))))
     (properties `((upstream-name . "doSNOW")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6389,14 +6391,14 @@ obtain a better initial configuration in non-metric MDS.")
 (define-public r-reticulate
   (package
     (name "r-reticulate")
-    (version "1.16")
+    (version "1.18")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "reticulate" version))
        (sha256
         (base32
-         "0ddx3xrlw55d8d3w7pxap618w2c5pd1n2jw4xsa185s8mf1zifkl"))))
+         "04w5c9jfxakb4rr2qjynxgagb42khsja3y4dwgxywiplb1d8agxk"))))
     (build-system r-build-system)
     (inputs `(("python" ,python)))
     (propagated-inputs
@@ -6859,21 +6861,44 @@ Just Another Gibbs Sampler.  It is a program for analysis of Bayesian
 hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.")
     (license license:gpl2)))
 
+(define-public r-rbibutils
+  (package
+    (name "r-rbibutils")
+    (version "1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rbibutils" version))
+       (sha256
+        (base32
+         "1i000czyd059dczd2nn1cb0d4n0bjykrfh51rs85s8r2zlaydn6i"))))
+    (properties `((upstream-name . "rbibutils")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-xml2" ,r-xml2)))
+    (home-page "https://geobosh.github.io/rbibutils/")
+    (synopsis "Convert between bibliography formats")
+    (description
+     "This package converts between a number of bibliography formats,
+including BibTeX, BibLaTeX and Bibentry.  It includes a port of the bibutils
+utilities and supports all bibliography formats and character encodings
+implemented in bibutils.")
+    (license license:gpl2)))
+
 (define-public r-rdpack
   (package
     (name "r-rdpack")
-    (version "1.0.0")
+    (version "2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rdpack" version))
        (sha256
         (base32
-         "069yh9h57z3gjl5ih1r6wyiwmgmfzkpjxrpxg8mfq7y6zr1mynsw"))))
+         "04gk68y3cxlqhfl1aarjwz2mvx934ka0yxfgzrnw03ykhvb47fpi"))))
     (properties `((upstream-name . "Rdpack")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-bibtex" ,r-bibtex)
+     `(("r-rbibutils" ,r-rbibutils)
        ("r-gbrd" ,r-gbrd)))
     (home-page "https://github.com/GeoBosh/Rdpack")
     (synopsis "Update and manipulate Rd documentation objects")
@@ -6945,14 +6970,14 @@ on the methods that are implemented can be found in Kosmidis (2008)
 (define-public r-brglm
   (package
     (name "r-brglm")
-    (version "0.6.2")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "brglm" version))
        (sha256
         (base32
-         "0c9ngscc6zlfm90fqyggnj04qfkhp5qgf5q3wnfpxwyc8cm47by2"))))
+         "1v68ma1agwhxar76mfvdfkcnd5h4gmxiz8j491rhdsckg271j7sa"))))
     (properties `((upstream-name . "brglm")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7001,24 +7026,19 @@ there are functions for discretizing continuous random variables.")
 (define-public r-abn
   (package
     (name "r-abn")
-    (version "2.2.2")
+    (version "2.3-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "abn" version))
        (sha256
         (base32
-         "1wwnzv5yir8cyl0f0arxagbsg9ndgs0799m42wbjkpr8cg9sfdhc"))))
+         "17vdrqm6qp5aijg00ah2imj3pqr6cl5r43hgg8dijbrbhznarci6"))))
     (build-system r-build-system)
     (inputs
      `(("gsl" ,gsl)))
     (propagated-inputs
-     `(("r-boot" ,r-boot)
-       ("r-brglm" ,r-brglm)
-       ("r-entropy" ,r-entropy)
-       ("r-lme4" ,r-lme4)
-       ("r-mass" ,r-mass)
-       ("r-moments" ,r-moments)
+     `(("r-lme4" ,r-lme4)
        ("r-nnet" ,r-nnet)
        ("r-rcpp" ,r-rcpp)
        ("r-rcpparmadillo" ,r-rcpparmadillo)
@@ -7156,14 +7176,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.9.6")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "15mws316qfbq3nn6gb7s0m0a6jk2zi056g43yqiw4gp2ar92wd0h"))))
+         "1r4val3hvc43zailfmq6wcbg366s0bi0ysib476a49k1x6h8b6ji"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -7440,20 +7460,22 @@ matches version and feature constraints.")
 (define-public r-argparse
   (package
     (name "r-argparse")
-    (version "2.0.1")
+    (version "2.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "argparse" version))
        (sha256
         (base32
-         "1as7h6z7kzgv0fqzpnp76qbm96b4jcd37azd58b7rz0l1n94764l"))))
+         "1c2r417m1dxk1jhcggv3g4zax5a59k9rqs9jcs6xy2pa2333jqfj"))))
     (build-system r-build-system)
     (inputs `(("python" ,python)))
     (propagated-inputs
      `(("r-findpython" ,r-findpython)
        ("r-jsonlite" ,r-jsonlite)
        ("r-r6" ,r-r6)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/trevorld/argparse")
     (synopsis "Command line optional and positional argument parser")
     (description
@@ -7512,14 +7534,14 @@ Group (Non-)Overlap considerations.")
 (define-public r-deriv
   (package
     (name "r-deriv")
-    (version "4.1.0")
+    (version "4.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Deriv" version))
        (sha256
         (base32
-         "1n5d10g9qv4fvl8q0q6yc0mzdbba10jniid6k3br3bfqvdp2a4pq"))))
+         "1fzchsignpb7cpizbf6l8v9k1nkmaf4r4j3mnxz0csl2g2npi1xc"))))
     (properties `((upstream-name . "Deriv")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/Deriv")
@@ -8218,20 +8240,23 @@ genotypes as \"graphical genotypes\".")
 (define-public r-furrr
   (package
     (name "r-furrr")
-    (version "0.1.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "furrr" version))
        (sha256
         (base32
-         "1ld9aa9hydna94hgm6p91zjbfv1dz1vsgchjlpknkg6irbvkfafx"))))
+         "16s6sgfgh1ayzhf3kvpy9vhsd5h6p57waj1xgbksgdmf4j1wkcq7"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-future" ,r-future)
+     `(("r-ellipsis" ,r-ellipsis)
+       ("r-future" ,r-future)
        ("r-globals" ,r-globals)
+       ("r-lifecycle" ,r-lifecycle)
        ("r-purrr" ,r-purrr)
-       ("r-rlang" ,r-rlang)))
+       ("r-rlang" ,r-rlang)
+       ("r-vctrs" ,r-vctrs)))
     (home-page "https://github.com/DavisVaughan/furrr")
     (synopsis "Apply mapping functions in parallel using futures")
     (description
@@ -8577,14 +8602,14 @@ multiple-imputation datasets.")
 (define-public r-magick
   (package
     (name "r-magick")
-    (version "2.4.0")
+    (version "2.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "magick" version))
        (sha256
         (base32
-         "1y1p2blkg0h6061ay7mdwssxbswgrc25raffp6d8d9cqhdmsa72s"))))
+         "1fhwr34xff6793ifbzqmij8b8qg7hrnr4birqpg33ib0mdd6flkf"))))
     (build-system r-build-system)
     (inputs
      `(("imagemagick" ,imagemagick)
@@ -9019,14 +9044,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.5.1")
+    (version "1.5.2-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "05z3vvykn56g50zhzsphdhfjzdw8g8xfindcas08hbhv5y7izhs8"))))
+         "0ndbjhglycdycppz9lbj3vhiqv2mp0z6h4w8fbyjziqx15ai5h59"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -9255,14 +9280,14 @@ differentiation.")
 (define-public r-bayestestr
   (package
     (name "r-bayestestr")
-    (version "0.7.2")
+    (version "0.7.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayestestR" version))
        (sha256
         (base32
-         "1c82bpxg2ha93rna4sy9pdp422dnk6b378dcg8x04clfg0y0lsi2"))))
+         "0l6q7v96m9asqa0p55k0gpzy8hddf8srkhc9r7zf4hv0dscbi9dv"))))
     (properties `((upstream-name . "bayestestR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9282,14 +9307,14 @@ ROPE percentage and pd).")
 (define-public r-performance
   (package
     (name "r-performance")
-    (version "0.5.0")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "performance" version))
        (sha256
         (base32
-         "01csmn52d6rhlmcj7gi6ckc6v6a8pymnrpx9l729h13igxsnaf28"))))
+         "1vkc87vbhw7l626pdnpiravnpsa5j0iv73lbwy3m309lnfvv0cqx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bayestestr" ,r-bayestestr)
@@ -9339,14 +9364,14 @@ results using @code{ggplot2}.")
 (define-public r-effectsize
   (package
     (name "r-effectsize")
-    (version "0.3.3")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "effectsize" version))
        (sha256
         (base32
-         "00c9j6lc58ls1vrwlpzk3h1lgvxpkcrh7b4ym6kmy4fg4f08izp7"))))
+         "0shx19ahw13wrn7jlyyvzvngqk66d6jiw9i51mx3psdn3hdnhy9s"))))
     (properties `((upstream-name . "effectsize")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9366,13 +9391,13 @@ conversion of indices such as Cohen's d, r, odds, etc.")
 (define-public r-sjplot
   (package
     (name "r-sjplot")
-    (version "2.8.5")
+    (version "2.8.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjPlot" version))
        (sha256
-        (base32 "07fwa6ga9430irk68g9wcfpn9g24pf8qc2i127nrydm865y7ri24"))))
+        (base32 "1dn9nvvp4jd45kwr4rpp2abf7xdpdmiv41rr3fkdb32a136bzx4b"))))
     (properties `((upstream-name . "sjPlot")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9886,14 +9911,14 @@ experiments using ANOVA or mixed models.")
 (define-public r-lmertest
   (package
     (name "r-lmertest")
-    (version "3.1-2")
+    (version "3.1-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lmerTest" version))
        (sha256
         (base32
-         "1qkdxx5sri65zgpb9gw4nkfkdam51kgy4hxclk5c40yk7y3p0n1q"))))
+         "1zd8gqjkazhxgpnnr484xwsq30p62fq8592nzyc171zjyplpbaim"))))
     (properties `((upstream-name . "lmerTest")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10205,19 +10230,19 @@ hypothesis testing.")
 (define-public r-feature
   (package
     (name "r-feature")
-    (version "1.2.13")
+    (version "1.2.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "feature" version))
        (sha256
         (base32
-         "07hkw0bv38naj2hdsx4xxrm2dngi6w3rbvgr7s50bjic8hlgy1ra"))))
+         "1c12rny9nx8dynzxbcf49h76a7wlmsk1m131wh0jiyqx3c3y41y1"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-ks" ,r-ks)
-       ("r-misc3d" ,r-misc3d)
-       ("r-rgl" ,r-rgl)))
+     `(("r-ks" ,r-ks)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "http://www.mvstat.net/tduong/")
     (synopsis "Inferential feature significance for kernel density estimation")
     (description
@@ -10491,14 +10516,14 @@ in-memory raw vectors.")
 (define-public r-nlp
   (package
     (name "r-nlp")
-    (version "0.2-0")
+    (version "0.2-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "NLP" version))
        (sha256
         (base32
-         "0xbhkrnxcbf322jfw31xcn4y2gnk5y7ccq1bz4h3prf44h0whr7w"))))
+         "1dpj04fmld2lnhg072ahgjbhmciqqy9h1lrz0wf32mr7mm9s9sh5"))))
     (properties `((upstream-name . "NLP")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/NLP/")
@@ -10998,14 +11023,14 @@ Touzet and Varre (2007).")
 (define-public r-rnifti
   (package
     (name "r-rnifti")
-    (version "1.2.2")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RNifti" version))
        (sha256
         (base32
-         "0h837jdspy071ckij8szqd8149bm113jpqwbclg87is4brsm5jzg"))))
+         "02jdxz3w423k9b5wldky4pnnq0cs2zlfi52jxjw1mk24z756j692"))))
     (properties `((upstream-name . "RNifti")))
     (build-system r-build-system)
     (propagated-inputs `(("r-rcpp" ,r-rcpp)))
@@ -11965,13 +11990,13 @@ Differences with other sparse matrix packages are:
 (define-public r-fields
   (package
     (name "r-fields")
-    (version "11.5")
+    (version "11.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fields" version))
        (sha256
-        (base32 "1mgg5l6w4yvz7cccgfz3h19k11ng1s1hy26rl2h215gnfb24mnga"))))
+        (base32 "1nsrgkw9w3mwd3sajyzc06h49gg1s0bkq6xh5b66h1n4jbcx2046"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-maps" ,r-maps)
@@ -12414,14 +12439,14 @@ subsetting.")
 (define-public r-globals
   (package
     (name "r-globals")
-    (version "0.13.0")
+    (version "0.13.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "globals" version))
        (sha256
         (base32
-         "0gqh7dbd38wqyjy9qm85v5k60vld97pyc46wf4xkgi4mr7y0ixg3"))))
+         "1ch9m7fxclfhfa38b743wcm7w1bkx9kmivc6l7phpbgs6h9jhrcc"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-codetools" ,r-codetools)))
@@ -13263,14 +13288,14 @@ graphs.")
 (define-public r-pbdzmq
   (package
     (name "r-pbdzmq")
-    (version "0.3-3")
+    (version "0.3-3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pbdZMQ" version))
        (sha256
         (base32
-         "1jkfcfhspvqra7vbllrvkz3jx8j7d0ang6zzcdjgpb7200sc29mf"))))
+         "08qmrzazadkyxlqc8830r0pckaq10l3fgj1f198xy6wwrm2lf0wy"))))
     (properties `((upstream-name . "pbdZMQ")))
     (build-system r-build-system)
     (inputs
@@ -13436,14 +13461,14 @@ plotting functions are available for analyzing clustering results.")
 (define-public r-valr
   (package
     (name "r-valr")
-    (version "0.6.1")
+    (version "0.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "valr" version))
        (sha256
         (base32
-         "1qxw6h63i2vfb2w6q453zzwk0ypma3xdwwpj15i06669vzgyy3bb"))))
+         "1vbp89zfylgih5acvw7lcx3a0dbbd7dhq7yhywr7kq02737qykdx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-broom" ,r-broom)
@@ -13789,14 +13814,14 @@ barplots or heatmaps.")
 (define-public r-seqinr
   (package
     (name "r-seqinr")
-    (version "3.6-1")
+    (version "4.2-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "seqinr" version))
        (sha256
         (base32
-         "0j30za6kji6y3v09cvcydiacnp65pv6ig8aw7cydl47l5s9chky4"))))
+         "0pw035h17dmic8m0pb73fbyf6p4jbwggxjk5vpjlybn8dwd0rk93"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ade4" ,r-ade4)
@@ -14271,14 +14296,14 @@ include
 (define-public r-haplo-stats
   (package
     (name "r-haplo-stats")
-    (version "1.8.5")
+    (version "1.8.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "haplo.stats" version))
        (sha256
         (base32
-         "1f5cyyyavkf4l6kksp87s8d92vjrnhxmpz6j737pa527pn3gghf9"))))
+         "1imz4gs0n57vixwwbirrihpgvn2pyj5da4rgjcjk14n2xkk0nay7"))))
     (properties `((upstream-name . "haplo.stats")))
     (build-system r-build-system)
     (propagated-inputs
@@ -14373,14 +14398,14 @@ inbred lines, F2 intercrosses, and association mapping populations.")
 (define-public r-ldheatmap
   (package
     (name "r-ldheatmap")
-    (version "0.99-8")
+    (version "1.0-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "LDheatmap" version))
        (sha256
         (base32
-         "1x3da3rbhyqb2ddngi48qv7vzb6vc347n9qhryr70qgcc1xvqj4z"))))
+         "1jp578cf29qcgx95w10lpymlwx2pgjsf0nypwkl9b8g635gkisq7"))))
     (properties `((upstream-name . "LDheatmap")))
     (build-system r-build-system)
     (propagated-inputs
@@ -14464,13 +14489,13 @@ SELECT or UPDATE queries to an end-point.")
 (define-public r-bookdown
   (package
     (name "r-bookdown")
-    (version "0.20")
+    (version "0.21")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "bookdown" version))
               (sha256
                (base32
-                "0gnshkp1aj7f29sjkhzxn890hz39nwaqdln61x8apmrc658nacdg"))))
+                "0xms1srx9l2mn8xaxnpic0s21y8k56bhwpj45wy7b0yscmxgmh27"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-htmltools" ,r-htmltools)
@@ -14478,6 +14503,7 @@ SELECT or UPDATE queries to an end-point.")
        ("r-rmarkdown" ,r-rmarkdown)
        ("r-tinytex" ,r-tinytex)
        ("r-xfun" ,r-xfun)
+       ("r-yaml" ,r-yaml)
        ("pandoc" ,pandoc)))
     (home-page "https://github.com/rstudio/bookdown")
     (synopsis "Authoring books and technical documents with R markdown")
@@ -15751,14 +15777,14 @@ code edited with @code{RStudio IDE}, @code{Emacs} and @code{Vim}.")
 (define-public r-sctransform
   (package
     (name "r-sctransform")
-    (version "0.3")
+    (version "0.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sctransform" version))
        (sha256
         (base32
-         "1vyjxzghfvw57pwncvkfg3lbcsqfdsiplh1h4vscxpnd3872nrq3"))))
+         "0b8ni8dzlcikjm2bx5w8yi9vygx0qqxjrmnsy4kf7d1h03n2sxwa"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-future" ,r-future)
@@ -15767,8 +15793,9 @@ code edited with @code{RStudio IDE}, @code{Emacs} and @code{Vim}.")
        ("r-gridextra" ,r-gridextra)
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)
+       ("r-matrixstats" ,r-matrixstats)
        ("r-rcpp" ,r-rcpp)
-       ("r-rcppeigen" ,r-rcppeigen)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
        ("r-reshape2" ,r-reshape2)))
     (home-page "https://github.com/ChristophH/sctransform")
     (synopsis "Variance stabilizing transformations for Single Cell UMI Data")
@@ -15875,14 +15902,14 @@ extends the lme4 package.")
 (define-public r-batchtools
   (package
     (name "r-batchtools")
-    (version "0.9.13")
+    (version "0.9.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "batchtools" version))
        (sha256
         (base32
-         "02bwfinwgn5nl638997javig61jmr0ci0qybmprz13jnvmam1yns"))))
+         "1b78r70gm4a0wzjr367hqx2rfphfkbppp14d0l5zs2fvyz166lsx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)
@@ -16096,14 +16123,14 @@ been used in the call to @code{aov}.")
 (define-public r-dalex
   (package
     (name "r-dalex")
-    (version "2.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DALEX" version))
        (sha256
         (base32
-         "1yn61cbqvyycn617pzhd7kgd34xsnmqvj3s10inn2ywycybk7byi"))))
+         "1hiknx55d91abyfj3w4a2xxin7f1q8h5k0041m7w93xjdc4kis98"))))
     (properties `((upstream-name . "DALEX")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16357,14 +16384,14 @@ LargeVis method of Tang et al. (2016) is also provided.")
 (define-public r-kableextra
   (package
     (name "r-kableextra")
-    (version "1.2.1")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "kableExtra" version))
        (sha256
         (base32
-         "0n25y7zwpspvkd62rd6x8c22dg2ys27smlpdz5brqs5ddv7x9dis"))))
+         "1zixccpgy9x95fgzfgxc43pm020c80c21flch71klc3zzzsq53gf"))))
     (properties `((upstream-name . "kableExtra")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16485,20 +16512,22 @@ computed using the L1 (Manhattan, taxicab) metric.")
 (define-public r-leiden
   (package
     (name "r-leiden")
-    (version "0.3.3")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "leiden" version))
        (sha256
         (base32
-         "1hh6bmbz6cpqwl4i94gxylgv9x92zbqdg81r8r4ymfy8c70f3df2"))))
+         "0cj98s1d9771dahn2xwdb1hpkw51jsfmgvzpam34c7i57fj37hn2"))))
     (properties `((upstream-name . "leiden")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-igraph" ,r-igraph)
        ("r-matrix" ,r-matrix)
        ("r-reticulate" ,r-reticulate)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/TomKellyGenetics/leiden")
     (synopsis "R implementation of Leiden clustering algorithm")
     (description
@@ -16719,14 +16748,14 @@ be used further by e.g. graphic devices.")
 (define-public r-graphlayouts
   (package
     (name "r-graphlayouts")
-    (version "0.7.0")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "graphlayouts" version))
        (sha256
         (base32
-         "17lc75k8i3c696hfj44zj7j1a5sb0nap8spc5r98v7vd6xh4nii0"))))
+         "05v7ss18bflhqa4ipsca8iw2ln8ddbaiyrizx2a5cwq81g5qq3rq"))))
     (properties `((upstream-name . "graphlayouts")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16836,14 +16865,14 @@ in pipelines.")
 (define-public r-parameters
   (package
     (name "r-parameters")
-    (version "0.8.6")
+    (version "0.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parameters" version))
        (sha256
         (base32
-         "0z4qy62pxiwnsgi77ydymlc12ss9p9gbqljik2h0rwlmkpmk016w"))))
+         "17jjmy1qnx25ldvasrwhmal45nl1sr8qjxprbi8fcjwra9af6cr6"))))
     (properties `((upstream-name . "parameters")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16865,13 +16894,13 @@ effect size.")
 (define-public r-rgdal
   (package
     (name "r-rgdal")
-    (version "1.5-17")
+    (version "1.5-18")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgdal" version))
        (sha256
-        (base32 "16vk3a8azbqhv4m598i78hs9m1nlfcls6lx011v0wgiw6ksq64zw"))))
+        (base32 "1pr267sh0v6cympdg12yny51cmn4r20s5sjq2hqymn4kphcpqijk"))))
     (properties `((upstream-name . "rgdal")))
     (build-system r-build-system)
     (inputs
@@ -18078,14 +18107,14 @@ to maximise an approximation to the expectation of the utility function.")
 (define-public r-acet
   (package
     (name "r-acet")
-    (version "1.8.0")
+    (version "1.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ACEt" version))
        (sha256
         (base32
-         "0626d6kg485xjya164wagrr5z223jvi93ywbwpdns7fkm03c0dlq"))))
+         "0b5lfpnppyk0237phr2aybhx29nhm8ngwk2qa1y4lshrvsw97wg4"))))
     (properties `((upstream-name . "ACEt")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19769,7 +19798,7 @@ statistical shape analysis and archetypal analysis.")
      "This package is a collection of several algorithms to obtain
 archetypoids with small and large databases and with both classical
 multivariate data and functional data (univariate and multivariate).  Some of
-these algorithms also allow to detect anomalies (outliers).")
+these algorithms also detect anomalies (outliers).")
     (license license:gpl2+)))
 
 (define-public r-idpmisc
@@ -21242,14 +21271,14 @@ Haberman's interaction model when all items are dichotomously scored.")
 (define-public r-iheatmapr
   (package
     (name "r-iheatmapr")
-    (version "0.5.0")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "iheatmapr" version))
        (sha256
         (base32
-         "0s2lc088rq2siy2wzmg1y6nss68rs33mf7w2izqqmg6kbx6d7y9h"))))
+         "1pwkwh7ljlpr6zyz6j8knpz3iw60xzkw8amc98x4pc2mw148jvzx"))))
     (properties `((upstream-name . "iheatmapr")))
     (build-system r-build-system)
     (propagated-inputs
@@ -22402,14 +22431,14 @@ included in this package as well.")
 (define-public r-brms
   (package
     (name "r-brms")
-    (version "2.13.5")
+    (version "2.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "brms" version))
        (sha256
         (base32
-         "0a2m5wr134sxflmiq5jzvanzn81fv7xndy9gyvrq3bay9vakic69"))))
+         "0s8dl1xm3bpivfv3hw94zv9cifjg8cgs5137yd8d755kc2v0fdmf"))))
     (properties `((upstream-name . "brms")))
     (build-system r-build-system)
     (propagated-inputs
@@ -22692,14 +22721,14 @@ values.")
 (define-public r-rismed
   (package
     (name "r-rismed")
-    (version "2.1.7")
+    (version "2.2")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "RISmed" version))
         (sha256
           (base32
-            "08dmkkxsmwp9b4h2g1bbx03cijn793fsnzkmbima8x9d42vxnm1l"))))
+            "0nwixhngi4r2f73362salivsmsf7l52bm13jqvhdq8mfiigm80vd"))))
     (properties `((upstream-name . "RISmed")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/RISmed")
@@ -23121,14 +23150,14 @@ for linear mixed models (AIREML).")
 (define-public r-cpp11
   (package
     (name "r-cpp11")
-    (version "0.2.2")
+    (version "0.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cpp11" version))
        (sha256
         (base32
-         "1b1h7kjl3xrd4nfly7wd6v8mbyancm632r4k37pafs8xi6cqm848"))))
+         "1avcip33bldzz0rhkl43b4sljrbb8i24684xxmr9il5bijcpyy97"))))
     (properties `((upstream-name . "cpp11")))
     (build-system r-build-system)
     (native-inputs `(("r-knitr" ,r-knitr)))
@@ -23144,14 +23173,14 @@ semantics and supports interaction with @code{ALTREP} vectors.")
 (define-public r-rcppziggurat
   (package
     (name "r-rcppziggurat")
-    (version "0.1.5")
+    (version "0.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppZiggurat" version))
        (sha256
         (base32
-         "0zmr3nvm5j0fpwxk3x9kxpwqbr66ldfvd10zy8xlgjbslz9myvfv"))))
+         "0wgd1v2p7zajnbrjf3hfi56p3pk3ld6iwkanbb04bjbnlif2ay4w"))))
     (properties `((upstream-name . "RcppZiggurat")))
     (build-system r-build-system)
     (propagated-inputs
@@ -23667,14 +23696,14 @@ model.")
 (define-public r-igraph
   (package
     (name "r-igraph")
-    (version "1.2.5")
+    (version "1.2.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "igraph" version))
        (sha256
         (base32
-         "126z1ygbmi3g7hk97snf22rnx680dyi30idssm5zacba5rdngp8c"))))
+         "0vf7wrx77cdiav8724cw8gchrn0y9wvywphf5km4pa7xcqhsf3b4"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -23699,14 +23728,14 @@ more.")
 (define-public r-workflows
   (package
     (name "r-workflows")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "workflows" version))
        (sha256
         (base32
-         "1mj0ibl6myzw5vl5n4gcfy7fz8wd1755kp8sdy18isxg8h5h23ya"))))
+         "1mk0pnmpqlhf143mvj9rwvjrrshirz6s83s5hbfalhnyw7hzkfb9"))))
     (properties `((upstream-name . "workflows")))
     (build-system r-build-system)
     (propagated-inputs
@@ -23795,14 +23824,14 @@ and regression metrics (e.g., RMSE).")
 (define-public r-warp
   (package
     (name "r-warp")
-    (version "0.1.0")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "warp" version))
        (sha256
         (base32
-         "16bmym91h0sbbh4iqasqs0f4kp3jqlm3sqgc356mznhxwnsm8dm2"))))
+         "0s0acddc5h14245hi1faycxp0fyvw6nlgaz2df7da4fpyd2f638f"))))
     (properties `((upstream-name . "warp")))
     (build-system r-build-system)
     (native-inputs `(("r-knitr" ,r-knitr)))
@@ -24015,14 +24044,14 @@ models without involving a test set.")
 (define-public r-tidypredict
   (package
     (name "r-tidypredict")
-    (version "0.4.7")
+    (version "0.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidypredict" version))
        (sha256
         (base32
-         "0z0wr0ssl1h0smr9431cy1ik5kxfy1nvkdcyyq9c0355h828hybh"))))
+         "0fff349pkksss8h1k2qza78l81ha6avx63pxziv6dfa8h62qmrdy"))))
     (properties `((upstream-name . "tidypredict")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24172,14 +24201,14 @@ analysis using @code{dplyr}, @code{ggplot2}, and other Tidy tools.")
 (define-public r-parsnip
   (package
     (name "r-parsnip")
-    (version "0.1.3")
+    (version "0.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parsnip" version))
        (sha256
         (base32
-         "12121qj1800i7g3km5kqzlb7hms55crmp6il575c2i475h5qx8d3"))))
+         "1134840xisvkkrbkh5kvx24vxp7sx06124svy573a9m4h8c492sr"))))
     (properties `((upstream-name . "parsnip")))
     (build-system r-build-system)
     (propagated-inputs
@@ -24237,14 +24266,14 @@ expressive statistical grammar that coheres with the Tidy design framework.")
 (define-public r-modeldata
   (package
     (name "r-modeldata")
-    (version "0.0.2")
+    (version "0.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "modeldata" version))
        (sha256
         (base32
-         "13q6hhbwqbwnjvg8bz6iwwfx96p1saqq3r34cjrbnpgzmr1nn11l"))))
+         "0lbvmicvhw560jn9qk5dywrl6mgj1rf7zh7p86lf97c6bmz0zp2r"))))
     (properties `((upstream-name . "modeldata")))
     (build-system r-build-system)
     (home-page "https://modeldata.tidymodels.org")
@@ -24614,7 +24643,7 @@ absolute GSEA.")
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)))
-    (home-page "https://github.com/guidotti/calculus")
+    (home-page "https://github.com/eguidotti/calculus")
     (synopsis "High dimensional numerical and symbolic calculus")
     (description
      "Efficient C++ optimized functions for numerical and symbolic calculus.
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index 9193479092..11bdd4c4f4 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -183,20 +183,12 @@ text or blue underlined text, on ANSI terminals.")
     (arguments
      `(#:cargo-inputs
        (("rust-bindgen" ,rust-bindgen-0.53)
-        ("rust-metadeps" ,rust-metadeps-1.1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))
+        ("rust-metadeps" ,rust-metadeps-1.1))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libaom" ,libaom)
-       ("libclang" ,clang)
+       ("clang" ,clang)
        ("llvm" ,llvm)))
     (home-page "https://github.com/rust-av/aom-rs")
     (synopsis "FFI bindings to aom")
@@ -402,19 +394,12 @@ for computer graphics.")
     (arguments
      `(#:cargo-inputs
        (("rust-bindgen" ,rust-bindgen-0.54)
-        ("rust-metadeps" ,rust-metadeps-1.1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))
+        ("rust-metadeps" ,rust-metadeps-1.1))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("dav1d" ,dav1d)
-       ("pkg-config" ,pkg-config)
-       ("libclang" ,clang)
+       ("clang" ,clang)
        ("llvm" ,llvm)))
     (home-page "https://github.com/rust-av/dav1d-rs")
     (synopsis "FFI bindings to dav1d")
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 5b4767a779..82e37a0f8d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crates-graphics)
   #:use-module (gnu packages crates-gtk)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages fontutils)
@@ -653,6 +654,30 @@ be used with the stdlib.")
     (description "This package provides the glue for the Android JNI.")
     (license license:expat)))
 
+(define-public rust-ansi-parser-0.6
+  (package
+    (name "rust-ansi-parser")
+    (version "0.6.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ansi-parser" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "152idb8a6gwdxzj6m099h3xgx8vw0sjc6skgw94nm2k3y5swc6kn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-heapless" ,rust-heapless-0.5)
+        ("rust-nom" ,rust-nom-4.2))))
+    (home-page "https://gitlab.com/DavidBittner/ansi-parser")
+    (synopsis "Library using nom for parsing ANSI escape codes")
+    (description
+     "This package provides a library using nom for parsing ANSI
+escape codes.")
+    (license license:mpl2.0)))
+
 (define-public rust-antidote-1.0
   (package
     (name "rust-antidote")
@@ -1446,6 +1471,28 @@ trace (backtrace) at runtime in a Rust program.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-base58-0.1
+  (package
+    (name "rust-base58")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "base58" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "10xfw6v7jzn9i682mkw9nqybzafrvl3i2wawwgp5a8gh2n0fw92h"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/debris/base58")
+    (synopsis "Tiny and fast base58 encoding")
+    (description
+     "Encode to base58 using only Rust.  This package is based on
+@url{https://github.com/trezor/trezor-crypto/blob/master/base58.c} at commit
+c6e7d37.  However, this package works only up to 128 bytes.")
+    (license license:expat)))
+
 (define-public rust-base64-0.12
   (package
     (name "rust-base64")
@@ -1702,11 +1749,6 @@ that uses Serde for transforming structs into bytes and vice versa!")
          (add-after 'unpack 'enable-unstable-features
            (lambda _
              (setenv "RUSTC_BOOTSTRAP" "1")
-             #t))
-         (add-before 'configure 'configure-clang
-           (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "LIBCLANG_PATH" (string-append (assoc-ref inputs "clang")
-                                                    "/lib"))
              #t)))))
     (home-page "https://rust-lang.github.io/rust-bindgen/")
     (synopsis "Generate Rust FFI bindings to C and C++ libraries.")
@@ -1751,17 +1793,9 @@ bindings to C and C++ libraries.")
        #:cargo-development-inputs
        (("rust-clap" ,rust-clap-2)
         ("rust-diff" ,rust-diff-0.1)
-        ("rust-shlex" ,rust-shlex-0.1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))
+        ("rust-shlex" ,rust-shlex-0.1))))
     (inputs
-     `(("libclang" ,clang)))))
+     `(("clang" ,clang)))))
 
 (define-public rust-bindgen-0.53
   (package
@@ -1798,15 +1832,7 @@ bindings to C and C++ libraries.")
        #:cargo-development-inputs
        (("rust-clap" ,rust-clap-2)
         ("rust-diff" ,rust-diff-0.1)
-        ("rust-shlex" ,rust-shlex-0.1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+        ("rust-shlex" ,rust-shlex-0.1))))))
 
 (define-public rust-bindgen-0.52
   (package
@@ -1844,15 +1870,7 @@ bindings to C and C++ libraries.")
        #:cargo-development-inputs
        (("rust-clap" ,rust-clap-2)
         ("rust-diff" ,rust-diff-0.1)
-        ("rust-shlex" ,rust-shlex-0.1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+        ("rust-shlex" ,rust-shlex-0.1))))))
 
 (define-public rust-bindgen-0.51
   (package
@@ -2623,6 +2641,37 @@ dependency on the rust stdlib.  This makes it suitable for embedded devices
 and kernels.")
     (license (list license:bsd-3 license:expat))))
 
+(define-public rust-bs58-0.2
+  (package
+    (name "rust-bs58")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bs58" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "125i962x0m0ggdif6ds51wfif2lypiicy469dj5j2l6rm6xycpn9"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-sha2" ,rust-sha2-0.8))
+       #:cargo-development-inputs
+       (("rust-assert-matches" ,rust-assert-matches-1.3)
+        ("rust-base58" ,rust-base58-0.1)
+        ("rust-rust-base58" ,rust-rust-base58-0.0))))
+    (home-page "https://github.com/mycorrhiza/bs58-rs")
+    (synopsis "Another Base58 codec implementation")
+    (description
+     "Another Base58 codec implementation.  Compared to the base58 crate this
+is significantly faster at decoding (about 2.4x as fast when decoding 32
+bytes), almost the same speed for encoding (about 3% slower when encoding 32
+bytes), doesn't have the 128 byte limitation and supports a configurable
+alphabet.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-bstr-0.2
   (package
     (name "rust-bstr")
@@ -2671,6 +2720,35 @@ UTF-8.")
         (base32
          "0nzi9vqhl56ws8gq39f3aj4qjrr4l3g5lbkkcj8xq1x4cb74wq2r"))))))
 
+(define-public rust-buffered-reader-0.9
+  (package
+    (name "rust-buffered-reader")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "buffered-reader" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05rklfiia1k4c4ifpim08l22i0q0l3j9xdg2yh3njrp6w58z6z13"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bzip2" ,rust-bzip2-0.3)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://sequoia-pgp.org/")
+    (synopsis "Super-powered Reader")
+    (description
+     "Like the @code{BufRead} trait, the @code{BufferedReader} trait has an
+internal buffer that is directly exposed to the user.  This design enables two
+performance optimizations.  First, the use of an internal buffer amortizes
+system calls.  Second, exposing the internal buffer allows the user to work
+with data in place, which avoids another copy.")
+    (license license:gpl3)))
+
 (define-public rust-build-const-0.2
   (package
     (name "rust-build-const")
@@ -3423,17 +3501,9 @@ archive to be linked into Rustcode.")
      `(#:cargo-inputs
        (("rust-nom" ,rust-nom-5))
        #:cargo-development-inputs
-       (("rust-clang-sys" ,rust-clang-sys-0.28))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))
+       (("rust-clang-sys" ,rust-clang-sys-0.28))))
     (inputs
-     `(("libclang" ,clang)))
+     `(("clang" ,clang)))
     (home-page "https://github.com/jethrogb/rust-cexpr")
     (synopsis "C expression parser and evaluator")
     (description
@@ -3458,15 +3528,7 @@ archive to be linked into Rustcode.")
      `(#:cargo-inputs
        (("rust-nom" ,rust-nom-4.2))
        #:cargo-development-inputs
-       (("rust-clang-sys" ,rust-clang-sys-0.28))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+       (("rust-clang-sys" ,rust-clang-sys-0.28))))))
 
 (define-public rust-cexpr-0.2
   (package
@@ -3487,15 +3549,7 @@ archive to be linked into Rustcode.")
      `(#:cargo-inputs
        (("rust-nom" ,rust-nom-3))
        #:cargo-development-inputs
-       (("rust-clang-sys" ,rust-clang-sys-0.11))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+       (("rust-clang-sys" ,rust-clang-sys-0.11))))))
 
 (define-public rust-cfg-if-0.1
   (package
@@ -3598,20 +3652,12 @@ depending on a large number of #[cfg] parameters.  Structured like an
          "0695kfrqx7n091fzm6msbqg2q2kyhka64q08lm63f3l9d964i8cx"))))
     (build-system cargo-build-system)
     (inputs
-     `(("libclang" ,clang)))
+     `(("clang" ,clang)))
     (arguments
      `(#:cargo-inputs
        (("rust-glob" ,rust-glob-0.3)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-libloading" ,rust-libloading-0.6))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'configure-clang
-           (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "LIBCLANG_PATH"
-                     (string-append (assoc-ref inputs "libclang")
-                                    "/lib"))
-             #t)))))
+        ("rust-libloading" ,rust-libloading-0.6))))
     (home-page "https://github.com/KyleMayes/clang-sys")
     (synopsis "Rust bindings for libclang")
     (description "This package provides Rust bindings for libclang.")
@@ -3635,15 +3681,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
      `(#:cargo-inputs
        (("rust-glob" ,rust-glob-0.3)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-libloading" ,rust-libloading-0.5))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+        ("rust-libloading" ,rust-libloading-0.5))))))
 
 (define-public rust-clang-sys-0.28
   (package
@@ -3676,15 +3714,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
      `(#:cargo-inputs
        (("rust-glob" ,rust-glob-0.2)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-libloading" ,rust-libloading-0.5))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+        ("rust-libloading" ,rust-libloading-0.5))))))
 
 (define-public rust-clang-sys-0.23
   (package
@@ -3721,15 +3751,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
        (("rust-clippy" ,rust-clippy-0.0)
         ("rust-glob" ,rust-glob-0.2)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-libloading" ,rust-libloading-0.5))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+        ("rust-libloading" ,rust-libloading-0.5))))))
 
 (define-public rust-clang-sys-0.11
   (package
@@ -3753,15 +3775,7 @@ depending on a large number of #[cfg] parameters.  Structured like an
         ("rust-glob" ,rust-glob-0.2)
         ("rust-lazy-static" ,rust-lazy-static-0.2)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-libloading" ,rust-libloading-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))))
+        ("rust-libloading" ,rust-libloading-0.3))))))
 
 (define-public rust-clap-2
   (package
@@ -4446,6 +4460,71 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
 semantics than those provided by @code{as} or @code{From}/@code{Into}.")
     (license license:expat)))
 
+(define-public rust-cookie-0.12
+  (package
+    (name "rust-cookie")
+    (version "0.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cookie" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1mdvqixahcywvqp0y8k2skkgbpfhsp0w73l9mz93dcrx1gq091l8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.10)
+        ("rust-ring" ,rust-ring-0.14)
+        ("rust-time" ,rust-time-0.1)
+        ("rust-url" ,rust-url-1))))
+    (home-page "https://github.com/SergioBenitez/cookie-rs")
+    (synopsis
+     "Crate for parsing HTTP cookie headers and managing a cookie jar")
+    (description
+     "Parse HTTP cookie headers and manage a cookie jar with this crate.
+It supports signed and private (encrypted + signed) jars.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-cookie-store-0.7
+  (package
+    (name "rust-cookie-store")
+    (version "0.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cookie-store" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "174i9k9g62pfx7y1nqynywdpjplkl3j4hi3ck6bz2r996qzhnxa6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cookie" ,rust-cookie-0.12)
+        ("rust-idna" ,rust-idna-0.1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-publicsuffix" ,rust-publicsuffix-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-time" ,rust-time-0.1)
+        ("rust-try-from" ,rust-try-from-0.3)
+        ("rust-url" ,rust-url-1))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-pretty-assertions" ,rust-pretty-assertions-0.6))))
+    (home-page "https://github.com/pfernie/cookie_store")
+    (synopsis "Implementation of Cookie storage and retrieval per RFC6265")
+    (description
+     "This crate provides an implementation for storing and retrieving Cookies per
+the path and domain matching rules specified in RFC6265.
+
+Split from the user_agent crate.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-cordic-0.1
   (package
     (name "rust-cordic")
@@ -5386,6 +5465,34 @@ Code (MAC) algorithms.")
 algorithms.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cryptovec-0.4
+  (package
+    (name "rust-cryptovec")
+    (version "0.4.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cryptovec" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1n88dmhfb2dxs48zllq1g1dya76zx4fajw482qy8jj4hgg1da4p4"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f  ; CryptoVec::from_slice failed
+       #:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.2))))
+    (home-page "https://crates.io/crates/cryptovec")
+    (synopsis
+     "Vector which zeroes its memory on clears and reallocations")
+    (description
+     "This package provides a vector which zeroes its memory on clears and
+reallocations.")
+    (license license:asl2.0)))
+
 (define-public rust-cssparser-0.27
   (package
     (name "rust-cssparser")
@@ -5714,14 +5821,7 @@ use with bindgen.")
         ("rust-winapi" ,rust-winapi-0.3)
         ("rust-cc" ,rust-cc-1)
         ("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-vcpkg" ,rust-vcpkg-0.2))
-       #:phases
-       (modify-phases %standard-phases
-        (add-after 'unpack 'find-openssl
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((openssl (assoc-ref inputs "openssl")))
-              (setenv "OPENSSL_DIR" openssl))
-            #t)))))
+        ("rust-vcpkg" ,rust-vcpkg-0.2))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -6531,6 +6631,28 @@ Diesel.")
        #:cargo-development-inputs
        (("rust-term" ,rust-term-0.2))))))
 
+(define-public rust-diffs-0.3
+  (package
+    (name "rust-diffs")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "diffs" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "036sqycmir4bbl4016jprsyjq4hicc31r68dyqadmc8ac9pk55d1"))))
+    (build-system cargo-build-system)
+    (home-page "https://nest.pijul.com/pijul_org/pijul")
+    (synopsis "Diff algorithms, also called longest common subsequence")
+    (description
+     "This package provides a number of diff algorithms, also called longest
+common subsequence.  The diff algorithms include Myer's diff and Patience
+diff.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-digest-0.9
   (package
     (name "rust-digest")
@@ -7554,6 +7676,26 @@ Standard.")
 accessor functions on enums.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-enum-as-inner-0.2
+  (package
+    (inherit rust-enum-as-inner-0.3)
+    (name "rust-enum-as-inner")
+    (version "0.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "enum-as-inner" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0zg3h7k3g1z7a9ayqy63sk302d4dg5g2h274ddv80mj4jxn2cn1x"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))))))
+
 (define-public rust-env-logger-0.7
   (package
     (name "rust-env-logger")
@@ -9788,6 +9930,31 @@ API library @code{gdi32}.")
      "This package provides a package for generating 3D meshes/")
     (license license:asl2.0)))
 
+(define-public rust-getch-0.2
+  (package
+    (name "rust-getch")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "getch" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "00in8q95qi8a5q3zn2zcaqp5avj79f5myd2a4zfdy2m24ycvbc5v"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-termios" ,rust-termios-0.2))))
+    (home-page "https://nest.pijul.com/pijul_org/getch")
+    (synopsis "Portable implementation of getch")
+    (description
+     "This package provides a portable implementation of getch, using
+@code{_getch} on Windows, and @code{termios} on Unix.")
+    (license license:asl2.0)))
+
 (define-public rust-getopts-0.2
   (package
     (name "rust-getopts")
@@ -9863,14 +10030,7 @@ retrieving random data from system source.")
     (arguments
      `(#:cargo-inputs
        (("rust-gettext-sys" ,rust-gettext-sys-0.19)
-        ("rust-locale-config" ,rust-locale-config-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'use-system-gettext
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((gettext (assoc-ref inputs "gettext")))
-               (setenv "GETTEXT_SYSTEM" gettext)
-               #t))))))
+        ("rust-locale-config" ,rust-locale-config-0.3))))
     (inputs
      `(("gettext" ,gettext-minimal)))
     (home-page "https://github.com/Koka/gettext-rs")
@@ -9895,14 +10055,7 @@ retrieving random data from system source.")
     (arguments
      `(#:cargo-inputs
        (("rust-gettext-sys" ,rust-gettext-sys-0.19)
-        ("rust-locale-config" ,rust-locale-config-0.2))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'use-system-gettext
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((gettext (assoc-ref inputs "gettext")))
-               (setenv "GETTEXT_SYSTEM" gettext)
-               #t))))))))
+        ("rust-locale-config" ,rust-locale-config-0.2))))))
 
 (define-public rust-gettext-sys-0.19
   (package
@@ -9923,14 +10076,7 @@ retrieving random data from system source.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-cc" ,rust-cc-1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'use-system-gettext
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((gettext (assoc-ref inputs "gettext")))
-               (setenv "GETTEXT_SYSTEM" gettext)
-               #t))))))
+       (("rust-cc" ,rust-cc-1))))
     (inputs
      `(("gettext" ,gettext-minimal)))
     (home-page "https://github.com/Koka/gettext-rs")
@@ -10095,10 +10241,11 @@ DWARF debugging format.")
         ("rust-thread-id" ,rust-thread-id-3)
         ("rust-time" ,rust-time-0.1))))
     (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
      `(("libgit2" ,libgit2)
        ("libssh2" ,libssh2)
        ("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)
        ("zlib" ,zlib)))
     (home-page "https://github.com/rust-lang/git2-rs")
     (synopsis "Rust bindings to libgit2")
@@ -11660,6 +11807,40 @@ SystemTime}}.")
         ("rust-tokio-mockstream" ,rust-tokio-mockstream-1)
         ("rust-url" ,rust-url-1))))))
 
+(define-public rust-hyper-old-types-0.11
+  (package
+    (name "rust-hyper-old-types")
+    (version "0.11.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "hyper-old-types" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1i69sks0bwamzqdbx8ffgkssxffv6crdmwjgl47nr5pkxi8vx5k8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f ; Tests do not compile
+       #:cargo-inputs
+       (("rust-base64" ,rust-base64-0.9)
+        ("rust-bytes" ,rust-bytes-0.4)
+        ("rust-http" ,rust-http-0.1)
+        ("rust-httparse" ,rust-httparse-1)
+        ("rust-language-tags" ,rust-language-tags-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-mime" ,rust-mime-0.3)
+        ("rust-percent-encoding" ,rust-percent-encoding-1.0)
+        ("rust-time" ,rust-time-0.1)
+        ("rust-unicase" ,rust-unicase-2))))
+    (home-page "https://hyper.rs")
+    (synopsis "HTTP types from hyper 0.11.x")
+    (description
+     "This package contains HTTP types from the newer hyper crate in versions
+0.11.x.")
+    (license license:expat)))
+
 (define-public rust-hyper-rustls-0.21
   (package
     (name "rust-hyper-rustls")
@@ -13159,7 +13340,7 @@ requires non-const function calls to be computed.")
 (define-public rust-libc-0.2
   (package
     (name "rust-libc")
-    (version "0.2.71")
+    (version "0.2.79")
     (source
      (origin
        (method url-fetch)
@@ -13167,7 +13348,7 @@ requires non-const function calls to be computed.")
        (file-name (string-append name "-" version ".crate"))
        (sha256
         (base32
-         "0jbgi25rhglhvpxv62alyzyral6601kldmlhbxim4w6j15jv0mwl"))))
+         "0hw7qnlymw5gi5c3xd7mirpgrc5l0pvqpjg9jb3vzqw0dq3gcj14"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -13301,18 +13482,12 @@ algorithm and related formats (ZLIB, GZIP).")
         ("rust-openssl-sys" ,rust-openssl-sys-0.9)
         ;; Build dependencies:
         ("rust-cc" ,rust-cc-1)
-        ("rust-pkg-config" ,rust-pkg-config-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'dont-vendor-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))
     (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
      `(("libgit2" ,libgit2)
        ("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)
        ("zlib" ,zlib)))
     (home-page "https://github.com/rust-lang/git2-rs")
     (synopsis "Native bindings to the libgit2 library")
@@ -13553,6 +13728,69 @@ allocator.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-libpijul-0.12
+  (package
+    (name "rust-libpijul")
+    (version "0.12.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "libpijul" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18d9n8xaq5ncq3375f0xrr96l8si1frczgzdlrz3fl1jby8vbl6f"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f  ; backend::file_header::test_fileheader_alignment fails
+       #:cargo-inputs
+       (("rust-base64" ,rust-base64-0.10)
+        ("rust-bincode" ,rust-bincode-1)
+        ("rust-bitflags" ,rust-bitflags-1)
+        ("rust-bs58" ,rust-bs58-0.2)
+        ("rust-byteorder" ,rust-byteorder-1)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-diffs" ,rust-diffs-0.3)
+        ("rust-failure" ,rust-failure-0.1)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-hex" ,rust-hex-0.3)
+        ("rust-ignore" ,rust-ignore-0.4)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-openssl" ,rust-openssl-0.10)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-sanakirja" ,rust-sanakirja-0.10)
+        ("rust-sequoia-openpgp" ,rust-sequoia-openpgp-0.9)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-tempdir" ,rust-tempdir-0.3)
+        ("rust-toml" ,rust-toml-0.4))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("clang" ,clang)
+       ("nettle" ,nettle)
+       ("openssl" ,openssl)))
+    (home-page "https://pijul.org/")
+    (synopsis "Library component of the pijul version control system")
+    (description
+     "This crate contains the core API to access Pijul repositories.
+
+The key object is a @code{Repository}, on which @code{Txn} (immutable
+transactions) and @code{MutTxn} (mutable transactions) can be started, to
+perform a variety of operations.
+
+Another important object is a @code{Patch}, which encodes two different pieces
+of information:
+
+@itemize
+@item Information about deleted and inserted lines between two versions of a
+file.
+@item Information about file moves, additions and deletions.
+@end itemize")
+    (license license:gpl2+)))
+
 (define-public rust-libsqlite3-sys-0.15
   (package
     (name "rust-libsqlite3-sys")
@@ -13616,6 +13854,38 @@ known as zlib).")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-line-0.1
+  (package
+    (name "rust-line")
+    (version "0.1.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "line" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pissvrl5398701zlfd22w51ca32vhw83vbsl58a330hr4w5ra04"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-utf8parse" ,rust-utf8parse-0.1))))
+    (home-page "https://crates.io/crates/line")
+    (synopsis "Rust implementation of line editing in a terminal")
+    (description
+     "The main goals of this library are:
+
+@itemize
+@item Portability: should work on any system (Unix or Windows).
+@item Support: was written for a real-world project (Pijul), so support is
+unlikely to stop soon.
+@item Output quality: avoid usual blinking terminal lines that older C
+libraries have.
+@end itemize")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-line-wrap-0.1
   (package
     (name "rust-line-wrap")
@@ -13735,18 +14005,12 @@ pairs in insertion order.")
         ;; Build dependencies:
         ("rust-cc" ,rust-cc-1)
         ("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-vcpkg" ,rust-vcpkg-0.2))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'dont-vendor-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))
+        ("rust-vcpkg" ,rust-vcpkg-0.2))))
     (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
      `(("libssh2" ,libssh2)
        ("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)
        ("zlib" ,zlib)))
     (home-page "https://github.com/alexcrichton/ssh2-rs")
     (synopsis "Native bindings to the libssh2 library")
@@ -14378,6 +14642,31 @@ statement, the first matching branch is the item that gets emitted.")
 whether an expression matches a pattern.")
     (license license:expat)))
 
+(define-public rust-matchers-0.0
+  (package
+    (name "rust-matchers")
+    (version "0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "matchers" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1q8ckqmkjqkznvdi9x0z769yz2bmvlqcwx51ad2lpk4mfmgpi6gh"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-regex-automata" ,rust-regex-automata-0.1))))
+    (home-page "https://github.com/hawkw/matchers")
+    (synopsis "Regex matching on character and byte streams")
+    (description
+     "Use this crate to match on character and byte streams using regular
+grammars.  It provides the subset of the regex crate that only deals with
+matching, not parsing substrings.")
+    (license license:expat)))
+
 (define-public rust-matrixmultiply-0.2
   (package
     (name "rust-matrixmultiply")
@@ -15611,17 +15900,11 @@ IO of Windows's named pipes.")
         ("rust-security-framework-sys" ,rust-security-framework-sys-0.3)
         ("rust-tempfile" ,rust-tempfile-3))
        #:cargo-development-inputs
-       (("rust-hex" ,rust-hex-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'find-openssl
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))
+       (("rust-hex" ,rust-hex-0.3))))
     (native-inputs
-     `(("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openssl" ,openssl)))
     (home-page "https://github.com/sfackler/rust-native-tls")
     (synopsis
      "Wrapper over a platform's native TLS implementation")
@@ -15704,21 +15987,27 @@ types as proposed in RFC 1158.")
         ("rust-thiserror" ,rust-thiserror-1))
        #:cargo-development-inputs
        (("rust-bindgen" ,rust-bindgen-0.51)
-        ("rust-pkg-config" ,rust-pkg-config-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-missing-env-vars
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; FIXME: why do we need to set this?
-             (setenv "LIBCLANG_PATH"
-                     (string-append (assoc-ref inputs "clang") "/lib"))
-             #t)))))
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))
     (home-page "https://gitlab.com/sequoia-pgp/nettle-rs")
   (synopsis "Rust bindings for the Nettle cryptographic library")
   (description "This package provides Rust bindings for the Nettle
 cryptographic library.")
   (license (list license:lgpl3 license:gpl2 license:gpl3))))
 
+(define-public rust-nettle-5
+  (package
+    (inherit rust-nettle-7)
+    (version "5.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nettle" version))
+       (file-name
+        (string-append (package-name rust-nettle-7) "-" version ".tar.gz"))
+       (sha256
+        (base32 "0zfplqdf3mag8r7lc124hl24vri8yg711jmm8gl1mpwnlhass2n4"))
+       (patches (search-patches "rust-nettle-disable-vendor.patch"))))))
+
 (define-public rust-nettle-sys-2
   (package
     (name "rust-nettle-sys")
@@ -15738,8 +16027,7 @@ cryptographic library.")
     (inputs
      `(("nettle", nettle)))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-development-inputs
+     `(#:cargo-inputs
        (("rust-bindgen" ,rust-bindgen-0.51)
         ("rust-pkg-config" ,rust-pkg-config-0.3))))
     (home-page "https://gitlab.com/sequoia-pgp/nettle-sys")
@@ -17183,7 +17471,7 @@ You probably don't want to link to this crate directly; instead check out the
              (substitute* "Cargo.toml"
                ((", path =.*}") "}"))
              #t)))))
-    (native-inputs
+    (inputs
      `(("openssl" ,openssl-1.0))))) ; for openssl-sys-extras
 
 (define-public rust-openssl-probe-0.1
@@ -17227,17 +17515,11 @@ system for OpenSSL.")
         ("rust-autocfg" ,rust-autocfg-1.0)
         ("rust-cc" ,rust-cc-1)
         ("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-vcpkg" ,rust-vcpkg-0.2))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'find-openssl
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))
+        ("rust-vcpkg" ,rust-vcpkg-0.2))))
     (native-inputs
-     `(("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openssl" ,openssl)))
     (home-page "https://github.com/sfackler/rust-openssl")
     (synopsis "FFI bindings to OpenSSL")
     (description
@@ -17271,14 +17553,7 @@ system for OpenSSL.")
        (("rust-gdi32-sys" ,rust-gdi32-sys-0.2)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-user32-sys" ,rust-user32-sys-0.2)
-        ("rust-pkg-config" ,rust-pkg-config-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'find-openssl
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))))
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))))
 
 (define-public rust-openssl-sys-extras-0.7
   (package
@@ -17306,7 +17581,7 @@ system for OpenSSL.")
              (substitute* "Cargo.toml"
                ((", path =.*}") "}"))
              #t)))))
-    (native-inputs
+    (inputs
      `(("openssl" ,openssl-1.0)))   ; openssl-1.0 specifically
     (home-page "https://github.com/sfackler/rust-openssl")
     (synopsis
@@ -18051,6 +18326,27 @@ and would-block I/O operations.")
 path.Clean.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-pathdiff-0.1
+  (package
+    (name "rust-pathdiff")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "pathdiff" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0cfg3isnx6mf3wbi7rsg4nmvywby40sbcs589n20fgi09l4p1gx3"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/Manishearth/pathdiff")
+    (synopsis "Library for diffing paths to obtain relative paths")
+    (description
+     "Use diff_paths to construct a relative path from a provided base
+directory path to the provided path.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-pbkdf2-0.4
   (package
     (name "rust-pbkdf2")
@@ -19591,7 +19887,7 @@ formatted tables in terminal.")
 (define-public rust-proc-macro2-1
   (package
     (name "rust-proc-macro2")
-    (version "1.0.21")
+    (version "1.0.24")
     (source
       (origin
         (method url-fetch)
@@ -19599,10 +19895,11 @@ formatted tables in terminal.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0b1azz1c2a3rap1kfz2sjinv7narfhssazaq39axvwwlvwb8bqin"))))
+          "0wcabxzrddcjmryndw8fpyxcq6rw63m701vx86xxf03y3bp081qy"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
+     `(#:cargo-test-flags '("--lib")
+       #:cargo-inputs
        (("rust-unicode-xid" ,rust-unicode-xid-0.2))
        #:cargo-development-inputs
        (("rust-quote" ,rust-quote-1))))
@@ -19681,6 +19978,38 @@ macro use case.")
 @code{proc_macro_derive} pretend to be @code{proc_macro}.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-progrs-0.1
+  (package
+    (name "rust-progrs")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "progrs" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "108jx8jrv2r1brhvbqfw6fwx298k5fnw3m46kn7lv0jx2wmf0ifz"))))
+    (build-system cargo-build-system)
+    (arguments '(#:tests? #f))
+    (home-page "https://nest.pijul.com/laumann/progrs")
+    (synopsis "Small library for displaying compact progress bars")
+    (description
+     "There are a number of libraries out there that can be used for progress
+display, but in the author's opinion these libraries do it almost right -
+either they eat up too much screen real estate (by not sticking to one line
+per thing that should use progress) or they try to align stuff left and right.
+
+In the author's humble opinion, the best example of just the right amount of
+information vs screen real-estate is in the Git progress output (when cloning,
+pulling, etc).  It uses one line per thing, and may display both percentage
+complete (in cases where it's known) and even throughput (for network
+transfer).
+
+This library mimics the Git way of showing progress.")
+    (license license:gpl2+)))
+
 (define-public rust-proptest-0.9
   (package
     (name "rust-proptest")
@@ -21923,6 +22252,29 @@ functionality as retain but gives mutable borrow to the predicate.")
     (description "This package provided safe, fast, small crypto using Rust.")
     (license (list license:isc license:openssl))))
 
+(define-public rust-ring-0.14
+  (package
+    (inherit rust-ring-0.16)
+    (name "rust-ring")
+    (version "0.14.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "ring" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0g091akf4dpg9qj05z3gc4nlrs57mjj2bqab98gaqp79wf3c2ss2"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-spin" ,rust-spin-0.5)
+        ("rust-untrusted" ,rust-untrusted-0.6)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-cc" ,rust-cc-1))))))
+
 (define-public rust-ring-0.13
   (package/inherit rust-ring-0.16
     (name "rust-ring")
@@ -22093,6 +22445,41 @@ rust.")
 console applications.")
   (license license:asl2.0)))
 
+(define-public rust-rpassword-3
+  (package
+    (inherit rust-rpassword-4)
+    (name "rust-rpassword")
+    (version "3.0.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rpassword" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vkifbbs160d7i7wy3kb0vw9mbf3pf470hg8f623rjkzmsyafky3"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.2))))))
+
+(define-public rust-rpassword-2
+  (package
+    (inherit rust-rpassword-3)
+    (name "rust-rpassword")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rpassword" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1v255xqkig5lwnczvm3achydhxx6kf9jcdxdlgzndgpd18bp6x6k"))))))
+
 (define-public rust-rusqlite-0.19
   (package
     (name "rust-rusqlite")
@@ -22192,6 +22579,41 @@ hashing function.")
 password hashing function.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rust-base58-0.0
+  (package
+    (name "rust-rust-base58")
+    (version "0.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rust-base58" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fa4y2jjjmg1a0cr3gz4z8rkic0hx2vx5nm23za9lwf6rlgvj4xk"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Otherwise we get an error: no method named `gen_iter` found
+           ;; for type `rand::prelude::ThreadRng`
+           (substitute* "Cargo.toml"
+             (("rand.*") "rand = \"<0.6\"\n"))
+           #t))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num" ,rust-num-0.1))
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.4))))
+    (home-page "https://github.com/nham/rust-base58")
+    (synopsis
+     "Simple library for converting to and from base-58 strings")
+    (description
+     "Convert to and from base-58 strings with a simple Rust api.
+ Currently the conversion uses the Bitcoin base58 alphabet.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-rust-hawktracer-0.7
   (package
     (name "rust-rust-hawktracer")
@@ -23060,6 +23482,35 @@ Rust.")
         ("rust-tempfile" ,rust-tempfile-3)
         ("rust-webpki-roots" ,rust-webpki-roots-0.17))))))
 
+(define-public rust-rustls-0.15
+  (package
+    (inherit rust-rustls-0.16)
+    (name "rust-rustls")
+    (version "0.15.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rustls" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vh93fhqfbn4ysw4xzkpkpqdz36xixz4mhs1qllgldfq5iay6wgj"))))
+    (arguments
+     `(#:tests? #f ;; 1/111 tests fail (test file not found)
+       #:cargo-inputs
+       (("rust-base64" ,rust-base64-0.10)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-ring" ,rust-ring-0.14)
+        ("rust-sct" ,rust-sct-0.5)
+        ("rust-untrusted" ,rust-untrusted-0.6)
+        ("rust-webpki" ,rust-webpki-0.19))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-webpki-roots" ,rust-webpki-roots-0.16))))))
+
 (define-public rust-rustls-0.12
   (package/inherit rust-rustls-0.16
     (name "rust-rustls")
@@ -23361,6 +23812,46 @@ paths point to the same file.")
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.3))))))
 
+(define-public rust-sanakirja-0.10
+  (package
+    (name "rust-sanakirja")
+    (version "0.10.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "sanakirja" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fhn5lb6jn0pimnk0nbf5h4xvp28xdkdh33d57gq1ixy8b2y091y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f  ; tests::test_del_medium_fork fails
+       #:cargo-inputs
+       (("rust-fs2" ,rust-fs2-0.4)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-memmap" ,rust-memmap-0.7)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-uuid" ,rust-uuid-0.7))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-hex" ,rust-hex-0.3)
+        ("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://nest.pijul.com/pijul_org/sanakirja")
+    (synopsis "Key-value dictionary, using copy-on-write and B-trees")
+    (description
+     "This package provides a key-value dictionary, using copy-on-write and B
+trees.  It features:
+@itemize
+@item ACID semantics.
+@item B trees with copy-on-write.
+@item Support for referential transparency: databases can be cloned in time
+O(log n) (where n is the size of the database).  This was the original
+motivation for writing this library.
+@end itemize")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-scan-fmt-0.2
   (package
     (name "rust-scan-fmt")
@@ -23735,6 +24226,25 @@ Pwrite traits from the scroll crate.")
     (description "Certificate transparency SCT verification library")
     (license (list license:asl2.0 license:isc license:expat))))
 
+(define-public rust-sct-0.5
+  (package
+    (inherit rust-sct-0.6)
+    (name "rust-sct")
+    (version "0.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "sct" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1fb9ym5bwswx01yyggn7v2vfryih4vnqpp4r4ssv3qaqpn7xynig"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-ring" ,rust-ring-0.14)
+        ("rust-untrusted" ,rust-untrusted-0.6))))))
+
 (define-public rust-sct-0.3
   (package/inherit rust-sct-0.6
     (name "rust-sct")
@@ -24095,10 +24605,101 @@ comparison.")
          (base32
           "18vhypw6zgccnrlm5ps1pwa0khz7ry927iznpr88b87cagr1v2iq"))))))
 
+(define-public rust-sequoia-openpgp-0.9
+  (package
+    (name "rust-sequoia-openpgp")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "sequoia-openpgp" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "007h2pi7lcph5jf5bxjydm7hjwjai33yk6dic3cxknki22lxlkfw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.9)
+        ("rust-buffered-reader" ,rust-buffered-reader-0.9)
+        ("rust-bzip2" ,rust-bzip2-0.3)
+        ("rust-failure" ,rust-failure-0.1)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-idna" ,rust-idna-0.1)
+        ("rust-lalrpop" ,rust-lalrpop-0.17)
+        ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-memsec" ,rust-memsec-0.5)
+        ("rust-nettle" ,rust-nettle-5)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-sequoia-rfc2822" ,rust-sequoia-rfc2822-0.9)
+        ("rust-time" ,rust-time-0.1))
+       #:cargo-development-inputs
+       (("rust-rpassword" ,rust-rpassword-3))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("clang" ,clang)
+       ("nettle" ,nettle)))
+    (home-page "https://sequoia-pgp.org/")
+    (synopsis "OpenPGP data types and associated machinery")
+    (description
+     "This crate aims to provide a complete implementation of OpenPGP as
+defined by RFC 4880 as well as some extensions (e.g., RFC 6637, which
+describes ECC cryptography) for OpenPGP.  This includes support for unbuffered
+message processing.
+
+A few features that the OpenPGP community considers to be deprecated (e.g.,
+version 3 compatibility) have been left out.  We have also updated some
+OpenPGP defaults to avoid foot guns (e.g., we selected modern algorithm
+defaults).  If some functionality is missing, please file a bug report.")
+    (license license:gpl3)))
+
+(define-public rust-sequoia-rfc2822-0.9
+  (package
+    (name "rust-sequoia-rfc2822")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "sequoia-rfc2822" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1aj34i6862718m162rqfv69fkmvdw063s6ws7hbp42n73gb08p5c"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-failure" ,rust-failure-0.1)
+        ("rust-lalrpop" ,rust-lalrpop-0.17)
+        ("rust-lalrpop-util" ,rust-lalrpop-util-0.17))
+       #:cargo-development-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-rand" ,rust-rand-0.6))))
+    (home-page "https://sequoia-pgp.org/")
+    (synopsis "RFC 2822 name-addr parser")
+    (description
+     "Currently, this crate only recognizes the RFC 2822 name-addr and
+addr-spec productions, i.e., things of the form:
+
+Name (Comment) <email@@example.org>
+
+and
+
+email@@example.org
+
+Although the above appear simple to parse, RFC 2822's whitespace and comment
+rules are rather complex.  This crate implements the whole grammar." )
+    (license license:gpl3)))
+
 (define-public rust-serde-1
   (package
     (name "rust-serde")
-    (version "1.0.116")
+    (version "1.0.117")
     (source
       (origin
         (method url-fetch)
@@ -24106,7 +24707,7 @@ comparison.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "19bhld1qyjs4qr3rd6dmzmy13imb6a1qbinb2fjqd0yjh6pmgzln"))))
+          "06nwyyma9hch1abjqj0y9cb09m1y6lbzbsc7jff6483pvs1sk3xq"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -24368,7 +24969,7 @@ for the serde framework.")
 (define-public rust-serde-derive-1
   (package
     (name "rust-serde-derive")
-    (version "1.0.116")
+    (version "1.0.117")
     (source
       (origin
         (method url-fetch)
@@ -24376,7 +24977,7 @@ for the serde framework.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1s4sbl32lk1afxryfax73clvq22lwzdgzljb7f3mgr6q1wvscc7n"))))
+          "0kn7ais3zv9ajbyc216qm14r61zwlm229815yd4anjmlmmraxlfb"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -24969,7 +25570,7 @@ functionality and without weak references.")
              (substitute* "Cargo.toml"
                ((", path =.*}") "}"))
              #t)))))
-    (native-inputs
+    (inputs
      `(("openssl" ,openssl-1.0))))) ; for openssl-sys-extras
 
 (define-public rust-sha1-asm-0.4
@@ -25148,6 +25749,27 @@ picking compatible shaders.")
      "This package allows easy binding to, and loading of, shared libraries.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-shell-escape-0.1
+  (package
+    (name "rust-shell-escape")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "shell-escape" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fgs1iyx3b124b7njjmhfn9q5ipmhxrafavh8mxbfl9a9zk162hp"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/sfackler/shell-escape")
+    (synopsis
+     "Escape characters that may have a special meaning in a shell")
+    (description
+     "Escape characters that may have a special meaning in a shell.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-shell-words-0.1
   (package
     (name "rust-shell-words")
@@ -25499,7 +26121,7 @@ data type.")
      "Rust FFI bindings to the SLEEF Vectorized Math Library.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-slog-2.5
+(define-public rust-slog-2
   (package
     (name "rust-slog")
     (version "2.5.2")
@@ -25526,32 +26148,6 @@ data type.")
             license:expat
             license:asl2.0))))
 
-(define-public rust-slog-2.4
-  (package
-    (name "rust-slog")
-    (version "2.4.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "slog" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "13jh74jlckzh5cygkhs0k4r82wnmw8ha2km829xwslhr83n2w6hy"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-erased-serde" ,rust-erased-serde-0.3))))
-    (home-page "https://github.com/slog-rs/slog")
-    (synopsis "Structured, extensible, composable logging for Rust")
-    (description
-     "Structured, extensible, composable logging for Rust.")
-    (license (list license:mpl2.0
-                   license:expat
-                   license:asl2.0))))
-
 (define-public rust-smallvec-1
   (package
     (name "rust-smallvec")
@@ -25629,6 +26225,33 @@ maximal amount of configuration possible intended.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-socks-0.3
+  (package
+    (name "rust-socks")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "socks" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1hnbw4c4j7dn9n3bd1v7ddkdzlxlzkfw3z29da1nxlj6jgx4r9p6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f  ; Tests require network connection.
+       #:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.2)
+        ("rust-ws2-32-sys" ,rust-ws2-32-sys-0.2))))
+    (home-page "https://github.com/sfackler/rust-socks")
+    (synopsis "Rust SOCKS proxy clients")
+    (description
+     "You can write SOCKS proxy clients with this crate.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-sourcefile-0.1
   (package
     (name "rust-sourcefile")
@@ -25829,20 +26452,20 @@ initializers are available.")
 (define-public rust-stable-deref-trait-1
   (package
     (name "rust-stable-deref-trait")
-    (version "1.1.1")
+    (version "1.2.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "stable_deref_trait" version))
-        (file-name (string-append name "-" version ".crate"))
+        (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1j2lkgakksmz4vc5hfawcch2ipiskrhjs1sih0f3br7s7rys58fv"))))
+          "1lxjr8q2n534b2lhkxd6l6wcddzjvnksi58zv11f9y0jjmr15wd8"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/storyyeller/stable_deref_trait0")
     (synopsis "Defines an unsafe marker trait, StableDeref")
     (description
-      "This crate defines an unsafe marker trait, StableDeref, for container
+     "This crate defines an unsafe marker trait, StableDeref, for container
 types which deref to a fixed address which is valid even when the containing
 type is moved.  For example, Box, Vec, Rc, Arc and String implement this trait.
 Additionally, it defines CloneStableDeref for types like Rc where clones deref
@@ -27668,7 +28291,7 @@ grid layout.")
   (package
     (inherit rust-term-size-1.0)
     (name "rust-term-size")
-    (version "0.3.1")
+    (version "0.3.2")
     (source
      (origin
        (method url-fetch)
@@ -27677,14 +28300,11 @@ grid layout.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "09wk3173ngmb710qs9rwgibq4w250q8lgnwjvb9cypc1vdk9lnwy"))))
+         "1n885cykajsppx86xl7d0dqkgmgsp8v914lvs12qzvd0dij2jh8y"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-clippy" ,rust-clippy-0.0)
-        ("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-winapi" ,rust-winapi-0.2))))))
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.3))))))
 
 (define-public rust-termcolor-1
   (package
@@ -28114,6 +28734,34 @@ fixed set of worker threads.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-thrussh-libsodium-0.1
+  (package
+    (name "rust-thrussh-libsodium")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "thrussh-libsodium" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fjssjiwnmbxjvajk37l7k0fcw1ys97j7n8bpn3q3bbnz2qfrphv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libsodium" ,libsodium)))
+    (home-page "https://nest.pijul.com/pijul_org/thrussh")
+    (synopsis "Straightforward bindings to libsodium")
+    (description
+     "You can bind to libsodium from Rust with this crate.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-time-0.2
   (package
     (name "rust-time")
@@ -28767,6 +29415,50 @@ applications backed by buffers.")
 Tokio.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-tokio-net-0.2
+  (package
+    (name "rust-tokio-net")
+    (version "0.2.0-alpha.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "tokio-net" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15vm0bndn6zcpkp1yb6v736rbhqgim5skc76rz299xd3y0pr249a"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bytes" ,rust-bytes-0.4)
+        ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
+        ("rust-futures-core-preview" ,rust-futures-core-preview-0.3)
+        ("rust-futures-sink-preview" ,rust-futures-sink-preview-0.3)
+        ("rust-futures-util-preview" ,rust-futures-util-preview-0.3)
+        ("rust-iovec" ,rust-iovec-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-mio" ,rust-mio-0.6)
+        ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1)
+        ("rust-mio-uds" ,rust-mio-uds-0.6)
+        ("rust-num-cpus" ,rust-num-cpus-1)
+        ("rust-parking-lot" ,rust-parking-lot-0.8)
+        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1)
+        ("rust-slab" ,rust-slab-0.4)
+        ("rust-tokio-codec" ,rust-tokio-codec-0.1)
+        ("rust-tokio-executor" ,rust-tokio-executor-0.1)
+        ("rust-tokio-io" ,rust-tokio-io-0.1)
+        ("rust-tokio-sync" ,rust-tokio-sync-0.1)
+        ("rust-tracing" ,rust-tracing-0.1)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://tokio.rs")
+    (synopsis "Event loop that drives Tokio I/O resources")
+    (description
+     "This package provides the event loop that drives Tokio I/O resources.")
+    (license license:expat)))
+
 (define-public rust-tokio-openssl-0.4
   (package
     (name "rust-tokio-openssl")
@@ -28961,6 +29653,33 @@ using Rustls.")
         ("rust-webpki-roots" ,rust-webpki-roots-0.18))))
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-tokio-rustls-0.9
+  (package
+    (inherit rust-tokio-rustls-0.12)
+    (name "rust-tokio-rustls")
+    (version "0.9.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "tokio-rustls" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1jd63sl177sxacnksaxhazzmamwds98xk3niprh2qib75a1rk8cm"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bytes" ,rust-bytes-0.4)
+        ("rust-futures" ,rust-futures-0.1)
+        ("rust-iovec" ,rust-iovec-0.1)
+        ("rust-rustls" ,rust-rustls-0.15)
+        ("rust-tokio-io" ,rust-tokio-io-0.1)
+        ("rust-webpki" ,rust-webpki-0.19))
+       #:cargo-development-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-tokio" ,rust-tokio-0.1))))))
+
 (define-public rust-tokio-signal-0.2
   (package
     (name "rust-tokio-signal")
@@ -29650,6 +30369,123 @@ automatically instrumenting functions.")
 @code{futures} with @code{tracing}.")
     (license license:expat)))
 
+(define-public rust-tracing-fmt-0.1
+  (package
+    (name "rust-tracing-fmt")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "tracing-fmt" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0wagcrd6w8d3k7zdvg6sy2bwfh8w87i6ndia69p54fc7p3z4f1c8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-tracing-subscriber" ,rust-tracing-subscriber-0.1))
+       #:cargo-development-inputs
+       (("rust-tracing" ,rust-tracing-0.1))))
+    (home-page "https://tokio.rs")
+    (synopsis "Tracing subscriber that formats and logs trace data")
+    (description
+     "This package provides a tracing subscriber that formats and logs trace
+data.  Moved to the tracing-subscriber crate.")
+    (license license:expat)))
+
+(define-public rust-tracing-log-0.1
+  (package
+    (name "rust-tracing-log")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "tracing-log" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fdr0az98q9m5kiybvdvsb2m9mg86fdidgb5czzq2d71g1qqq3sy"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-tracing-core" ,rust-tracing-core-0.1))
+       #:cargo-development-inputs
+       (("rust-tracing" ,rust-tracing-0.1))))
+    (home-page "https://tokio.rs")
+    (synopsis
+     "Provides compatibility between tracing the log crates")
+    (description
+     "Tracing is a framework for instrumenting Rust programs with
+context-aware, structured, event-based diagnostic information.  This crate
+provides compatibility layers for using tracing alongside the logging facade
+provided by the log crate.
+
+This crate provides:
+
+@itemize
+@item @code{AsTrace} and @code{AsLog} traits for converting between tracing
+and log types.
+@item @code{LogTracer}, a @code{log::Log} implementation that consumes
+@code{log::Records} and outputs them as @code{tracing::Events}.
+@item An @code{env_logger} module, with helpers for using the env_logger crate
+with tracing (optional, enabled by the env-logger feature).
+@end itemize")
+    (license license:expat)))
+
+(define-public rust-tracing-subscriber-0.1
+  (package
+    (name "rust-tracing-subscriber")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "tracing-subscriber" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0i9fhlyz8mn2znpgmi5bv9y24pwpkkgfxs0rwcf6dl6djmjs2b0r"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Some test files missing.
+       #:cargo-inputs
+       (("rust-ansi-term" ,rust-ansi-term-0.11)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-matchers" ,rust-matchers-0.0)
+        ("rust-owning-ref" ,rust-owning-ref-0.4)
+        ("rust-parking-lot" ,rust-parking-lot-0.9)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-smallvec" ,rust-smallvec-0.6)
+        ("rust-tracing-core" ,rust-tracing-core-0.1)
+        ("rust-tracing-log" ,rust-tracing-log-0.1))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-tracing" ,rust-tracing-0.1)
+        ("rust-tracing-log" ,rust-tracing-log-0.1))))
+    (home-page "https://tokio.rs")
+    (synopsis "Implement and compose tracing subscribers")
+    (description
+     "Utilities for implementing and composing tracing subscribers.
+
+Tracing is a framework for instrumenting Rust programs to collect
+scoped, structured, and async-aware diagnostics.  The Subscriber trait
+represents the functionality necessary to collect this trace
+data.  This crate contains tools for composing subscribers out of
+smaller units of behaviour, and batteries-included implementations of
+common subscriber functionality.
+
+Tracing-subscriber is intended for use by both Subscriber authors and
+application authors using tracing to instrument their applications.")
+    (license license:expat)))
+
 (define-public rust-traitobject-0.1
   (package
     (name "rust-traitobject")
@@ -29828,6 +30664,48 @@ extension for the Trust-DNS client to use tokio-openssl for TLS.")
 foundational DNS protocol library for all Trust-DNS projects.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-trust-dns-proto-0.7
+  (package
+    (inherit rust-trust-dns-proto-0.19)
+    (name "rust-trust-dns-proto")
+    (version "0.7.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "trust-dns-proto" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0099dm57nnizx4apik9sh3mnvr7rp9mivc903v8xss13dkgynnam"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1)
+        ("rust-data-encoding" ,rust-data-encoding-2)
+        ("rust-enum-as-inner" ,rust-enum-as-inner-0.2)
+        ("rust-failure" ,rust-failure-0.1)
+        ("rust-futures" ,rust-futures-0.1)
+        ("rust-idna" ,rust-idna-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-openssl" ,rust-openssl-0.10)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-ring" ,rust-ring-0.14)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-smallvec" ,rust-smallvec-0.6)
+        ("rust-socket2" ,rust-socket2-0.3)
+        ("rust-tokio-executor" ,rust-tokio-executor-0.1)
+        ("rust-tokio-io" ,rust-tokio-io-0.1)
+        ("rust-tokio-reactor" ,rust-tokio-reactor-0.1)
+        ("rust-tokio-tcp" ,rust-tokio-tcp-0.1)
+        ("rust-tokio-timer" ,rust-tokio-timer-0.2)
+        ("rust-tokio-udp" ,rust-tokio-udp-0.1)
+        ("rust-untrusted" ,rust-untrusted-0.6)
+        ("rust-url" ,rust-url-1))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-tokio" ,rust-tokio-0.1))))))
+
 (define-public rust-trust-dns-resolver-0.19
   (package
     (name "rust-trust-dns-resolver")
@@ -29907,6 +30785,39 @@ other queries.")
 extension for the Trust-DNS client to use rustls for TLS.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-trust-dns-rustls-0.6
+  (package
+    (inherit rust-trust-dns-rustls-0.19)
+    (name "rust-trust-dns-rustls")
+    (version "0.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "trust-dns-rustls" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vbh2y7w2s5gcw33fn4hb5f927kgjm6603vw63slg9riikmsiq43"))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openssl" ,openssl)))
+    (arguments
+     `(#:cargo-test-flags
+       '("--release" "--" "--skip=tests::test_tls_client_stream_ipv4")
+       #:cargo-inputs
+       (("rust-futures" ,rust-futures-0.1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustls" ,rust-rustls-0.15)
+        ("rust-tokio-rustls" ,rust-tokio-rustls-0.9)
+        ("rust-tokio-tcp" ,rust-tokio-tcp-0.1)
+        ("rust-trust-dns-proto" ,rust-trust-dns-proto-0.7)
+        ("rust-webpki" ,rust-webpki-0.19))
+       #:cargo-development-inputs
+       (("rust-openssl" ,rust-openssl-0.10)
+        ("rust-tokio" ,rust-tokio-0.1))))))
+
 (define-public rust-try-from-0.3
   (package
     (name "rust-try-from")
@@ -30858,7 +31769,7 @@ Unix users and groups.")
         ("rust-md5" ,rust-md5-0.6)
         ("rust-rand" ,rust-rand-0.7)
         ("rust-serde" ,rust-serde-1)
-        ("rust-slog" ,rust-slog-2.5))))
+        ("rust-slog" ,rust-slog-2))))
     (home-page "https://github.com/uuid-rs/uuid")
     (synopsis "Library to generate and parse UUIDs")
     (description
@@ -30887,7 +31798,7 @@ Unix users and groups.")
         ("rust-rand" ,rust-rand-0.6)
         ("rust-serde" ,rust-serde-1)
         ("rust-sha1" ,rust-sha1-0.6)
-        ("rust-slog" ,rust-slog-2.4)
+        ("rust-slog" ,rust-slog-2)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-bincode" ,rust-bincode-1)
@@ -31059,6 +31970,26 @@ If that fails, no determination is made, and calls return None.")
          (base32
           "1pf91pvj8n6akh7w6j5ypka6aqz08b3qpzgs0ak2kjf4frkiljwi"))))))
 
+(define-public rust-version-compare-0.0
+  (package
+    (name "rust-version-compare")
+    (version "0.0.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "version-compare" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "06v688jg6gd00zvm3cp7qh2h3mz8cs2ngr09bnwxhyddxrcwh60w"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/timvisee/version-compare")
+    (synopsis "Rust library to easily compare version numbers")
+    (description
+     "This package provides a Rust library to easily compare version
+numbers, and test them against various comparison operators.")
+    (license license:expat)))
+
 (define-public rust-version-sync-0.8
   (package
     (name "rust-version-sync")
@@ -31833,10 +32764,32 @@ attribute that is not in the shared backend crate.")
        (("rust-base64" ,rust-base64-0.9))))
     (home-page "https://github.com/briansmith/webpki")
     (synopsis "Web PKI X.509 Certificate Verification")
-    (description "This packge provides Web PKI X.509 Certificate
+    (description "This package provides Web PKI X.509 Certificate
 Verification.")
     (license license:isc)))
 
+(define-public rust-webpki-0.19
+  (package
+    (inherit rust-webpki-0.21)
+    (name "rust-webpki")
+    (version "0.19.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "webpki" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "10nhyxlqsa4caxlxrijm5h79rdg6ld8hqy78ldjnnfhaj3biqzjg"))))
+    (arguments
+     `(#:tests? #f  ; tests fail to build "missing file tests/ed25519/ee.der"
+       #:cargo-inputs
+       (("rust-ring" ,rust-ring-0.14)
+        ("rust-untrusted" ,rust-untrusted-0.6))
+       #:cargo-development-inputs
+       (("rust-base64" ,rust-base64-0.9))))))
+
 (define-public rust-webpki-0.18
   (package/inherit rust-webpki-0.21
     (name "rust-webpki")
@@ -31918,6 +32871,25 @@ with webpki.")
       (sha256
        (base32 "12vi8dh0yik0h4f0b9dnlw5i3gxyky7iblbksh6zcq4xvlvswqm2"))))))
 
+(define-public rust-webpki-roots-0.16
+  (package
+    (inherit rust-webpki-roots-0.17)
+    (name "rust-webpki-roots")
+    (version "0.16.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "webpki-roots" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "03ny02mwqdgd2ff23k03kbwr2rrcaymxhp7jcjjikfh340hs83y1"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-untrusted" ,rust-untrusted-0.6)
+        ("rust-webpki" ,rust-webpki-0.19))))))
+
 (define-public rust-webpki-roots-0.14
   (package/inherit rust-webpki-roots-0.18
     (name "rust-webpki-roots")
@@ -32349,9 +33321,8 @@ API.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-winapi" ,rust-winapi-0.2))
-       #:cargo-development-inputs
-       (("rust-winapi-build" ,rust-winapi-build-0.1))))
+       (("rust-winapi" ,rust-winapi-0.2)
+        ("rust-winapi-build" ,rust-winapi-build-0.1))))
     (home-page "https://github.com/retep998/winapi-rs")
     (synopsis "Function definitions for the Windows API library ws2_32")
     (description
@@ -32773,7 +33744,7 @@ library.")
         ("rust-zstd-sys" ,rust-zstd-sys-1.4.17))))
     (home-page "https://github.com/gyscos/zstd-rs")
     (synopsis "Safe low-level bindings to the zstd compression library")
-    (description "This package provides afe low-level bindings to the zstd
+    (description "This package provides safe low-level bindings to the zstd
 compression library.")
     (license (list license:expat license:asl2.0))))
 
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 20037ac5c0..938eaacc31 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -153,6 +153,12 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                                "--disable-decimal-float" ;would need libc
                                "--disable-libcilkrts"
 
+                              ,@(if (equal? "powerpc64le-linux-gnu" target)
+                                   ;; On POWER9 (little endian) glibc needs
+                                   ;; the 128-bit long double type.
+                                   '("--with-long-double-128")
+                                   '())
+
                                ;; When target is any OS other than 'none' these
                                ;; libraries will fail if there is no libc
                                ;; present. See
@@ -530,7 +536,13 @@ and the cross tool chain."
 
         ;; FIXME: 'static-bash' should really be an input, not a native input, but
         ;; to do that will require building an intermediate cross libc.
-        (inputs '())
+        (inputs (if (hurd-triplet? target)
+                    `(;; TODO: move to glibc in the next rebuild cycle
+                      ("hurd-mach-print.patch"
+                       ,(search-patch "glibc-hurd-mach-print.patch"))
+                      ("hurd-gettyent.patch"
+                       ,(search-patch "glibc-hurd-gettyent.patch")))
+                    '()))
 
         (native-inputs `(("cross-gcc" ,xgcc)
                          ("cross-binutils" ,xbinutils)
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 348e9103ff..6083b4c694 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -18,6 +18,7 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Hendur Saga <hendursaga@yahoo.com>
+;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -443,15 +444,14 @@ total number of shares generated.")
 (define-public tomb
   (package
     (name "tomb")
-    (version "2.7")
+    (version "2.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://files.dyne.org/tomb/"
+              (uri (string-append "https://files.dyne.org/tomb/releases/"
                                   "Tomb-" version ".tar.gz"))
               (sha256
                (base32
-                "0x3al02796vx1cvy6y6h685c367qx70dwv471g0hmks2gr10f0cn"))
-              (patches (search-patches "tomb-fix-errors-on-open.patch"))))
+                "0bggzzqmpfiknr76lyl8iszybrcpyqlbgiqk47fxq08h2b5ln1ic"))))
     (build-system gnu-build-system)
     (native-inputs `(("sudo" ,sudo)))   ;presence needed for 'check' phase
     (inputs
@@ -570,12 +570,19 @@ attacks than alternative functions such as @code{PBKDF2} or @code{bcrypt}.")
         (base32
          "1d76ys6cp7fi4ng1w3mz2l0p9dbr7ljbk33dcywyimzjz8bahdng"))))
     (build-system gnu-build-system)
+    (outputs (list "out" "static"))
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" %output)
                           "CC=gcc")
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure))))
+         (delete 'configure)            ; no configure script
+         (add-after 'install 'install:static
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib")))
+               (install-file "libscrypt.a" lib)
+               #t))))))
     (home-page "https://lolware.net/libscrypt.html")
     (synopsis "Password hashing library")
     (description "@code{libscrypt} implements @code{scrypt} key derivation
@@ -1222,7 +1229,7 @@ Trusted comments are signed, thus verified, before being displayed.")
 (define-public libolm
   (package
     (name "libolm")
-    (version "3.1.5")
+    (version "3.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1230,15 +1237,16 @@ Trusted comments are signed, thus verified, before being displayed.")
                     (commit version)))
               (sha256
                (base32
-                "030g0jmmvhx2dh32k708sz6cdd5q1wz48i4gigh6dclqk10w28lm"))
+                "14b5cplcnbf2baq0lvz4f97m6swxpb13rvxdajxyw3s4mbvasia4"))
               (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
            (lambda _
-             (invoke "ctest" "build/tests"))))))
-    (build-system cmake-build-system)
+             (with-directory-excursion "tests"
+               (invoke "ctest" ".")))))))
     (synopsis "Implementation of the olm and megolm cryptographic ratchets")
     (description "The libolm library implements the Double Ratchet
 cryptographic ratchet.  It is written in C and C++11, and exposed as a C
@@ -1287,3 +1295,38 @@ length extension attacks supporting MD4, MD5, RIPEMD-160, SHA-0, SHA-1,
 SHA-256, SHA-512, and WHIRLPOOL hashes.")
       (home-page "https://github.com/iagox86/hash_extender")
       (license license:bsd-3))))
+
+(define-public mkp224o
+  (package
+    (name "mkp224o")
+    (version "1.5.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cathugger/mkp224o")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0b2cn96wg4l8jkkqqp8l2295xlmm2jc8nrw6rdqb5g0zkpfmrxbb"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((outdir (assoc-ref outputs "out"))
+                    (bindir (string-append outdir "/bin")))
+               (install-file "mkp224o" bindir)
+               #t))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)))
+    (inputs
+     `(("libsodium" ,libsodium)))
+    (synopsis "Tor hidden service v3 name generator")
+    (description "@code{mkp224o} generates valid ed25519 (hidden service
+version 3) onion addresses.  It allows one to produce customized vanity .onion
+addresses using a brute-force method.")
+    (home-page "https://github.com/cathugger/mkp224o")
+    (license license:cc0)))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index f13fc2f132..d52fcaa952 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -50,7 +50,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix download)
-  #:use-module (guix svn-download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -747,10 +747,10 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
     (license (list license:expat        ; icc2ps/*.[ch]
                    license:gpl2+))))    ; everything else
 
-(define-public escpr
+(define-public epson-inkjet-printer-escpr
   (package
-    (name "escpr")
-    (version "1.7.7")
+    (name "epson-inkjet-printer-escpr")
+    (version "1.7.8")
     ;; XXX: This currently works.  But it will break as soon as a newer
     ;; version is available since the URLs for older versions are not
     ;; preserved.  An alternative source will be added as soon as
@@ -758,15 +758,19 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/10/49/18/"
-                           "f3016be6120a7271a6d9cb64872f817bce1920b8/"
-                           "epson-inkjet-printer-escpr-1.7.7-1lsb3.2.tar.gz"))
+       (uri (string-append "https://download3.ebz.epson.net/dsc/f/03/00/12/04/32/"
+                           "1a455ef8618def65700ca4e446311c2fb43cd839/"
+                           "epson-inkjet-printer-escpr-1.7.8-1lsb3.2.tar.gz"))
        (sha256
-        (base32 "0khdf2a9iwh9aplj2gzyzl53yyfnfv0kszk3p018jnirl5l475ld"))))
+        (base32 "1pygg2bd2gh27dc65h3dzwrpvi6bq5c87wl0ldchqlc2b3blsx6p"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
-       `(,(string-append "--prefix="
+     `(#:modules
+       ((srfi srfi-26)
+        ,@%gnu-build-system-modules)
+       #:configure-flags
+       `("--disable-static"
+         ,(string-append "--prefix="
                          (assoc-ref %outputs "out"))
          ,(string-append "--with-cupsfilterdir="
                          (assoc-ref %outputs "out") "/lib/cups/filter")
@@ -784,7 +788,13 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
                 (string-append match "aclocal"))
                (("^(AUTOMAKE=).*" _ match)
                 (string-append match "automake")))
-             #t)))))
+             #t))
+         (add-after 'install 'compress-PPDs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion out
+                 (for-each (cut invoke "gzip" "-9" <>)
+                           (find-files "share/cups" "\\.ppd$")))))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
@@ -796,31 +806,39 @@ HP@tie{}LaserJet, and possibly other printers.  See @file{README} for details.")
 System} that offers high-quality printing with Seiko@tie{}Epson color ink jet
 printers.  It can be used only with printers that support the Epson@tie{}ESC/P-R
 language.")
-    (home-page "http://download.ebz.epson.net/dsc/search/01/search")
+    (home-page "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX")
     (license license:gpl2+)))
 
+(define-public escpr
+  (deprecated-package "escpr" epson-inkjet-printer-escpr))
+
 (define-public splix
-  ;; The last release was in 2009.  The SVN repository contains 5 years of
-  ;; unreleased bug fixes and support for newer printer models.
-  (let ((revision 315))
+  ;; Last released in 2009 <https://sourceforge.net/projects/splix/files/>.
+  ;; Last SVN commit was 2013 <https://svn.code.sf.net/p/splix/code/splix/>.
+  ;; Use a more maintained fork with several bug fixes and support for newer
+  ;; printer models.
+  (let ((commit "76268c4dd7dbc8218ea7426401104c3b40cc707a")
+        (revision "315"))
     (package
       (name "splix")
-      (version (string-append "2.0.0-" (number->string revision)))
+      (version (git-version "2.0.0" revision commit))
       (source
        (origin
-         (method svn-fetch)
-         (uri (svn-reference
-               (url "https://svn.code.sf.net/p/splix/code/splix/")
-               (revision revision)))
-         (file-name (string-append name "-" version "-checkout"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/ScumCoder/splix")
+               (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
-          (base32 "16wbm4xnz35ca3mw2iggf5f4jaxpyna718ia190ka6y4ah932jxl"))))
+          (base32 "1mxsvllwwr1v8sgrax0b7gkajjhnm0l06s67spmaxz47lyll1qab"))))
       (build-system gnu-build-system)
-      ;; 90% (3.8 MiB) of output are .ppd files.  Don't install them by default:
-      ;; CUPS has been able to read the .drv sources directly since version 1.2.
+      ;; PPDs have been obsolete since CUPS 1.2 and make up 90% of total size.
       (outputs (list "out" "ppd"))
       (arguments
-       '(#:make-flags
+       `(#:modules
+         ((srfi srfi-26)
+          ,@%gnu-build-system-modules)
+         #:make-flags
          (list (string-append "CUPSDRV="
                               (assoc-ref %outputs "out") "/share/cups/drv")
                (string-append "CUPSFILTER="
@@ -831,21 +849,28 @@ language.")
                "THREADS=4")             ; compress and print faster
          #:phases
          (modify-phases %standard-phases
+           (add-after 'unpack 'enter-subdirectory
+             ;; The git repository replicates the top-level SVN layout.
+             (lambda _
+               (chdir "splix")
+               #t))
            (delete 'configure)          ; no configure script
            (add-before 'build 'build-.drv-files
              (lambda* (#:key make-flags #:allow-other-keys)
                (apply invoke "make" "drv" make-flags)))
            (add-after 'install 'install-.drv-files
              (lambda* (#:key make-flags #:allow-other-keys)
-               (apply invoke "make" "install" "DRV_ONLY=1" make-flags))))
+               (apply invoke "make" "install" "DRV_ONLY=1" make-flags)))
+           (add-after 'install 'compress-PPDs
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((ppd (assoc-ref outputs "ppd")))
+                 (for-each (cut invoke "gzip" "-9" <>)
+                           (find-files ppd "\\.ppd$"))))))
          #:tests? #f))                  ; no test suite
       (inputs
        `(("cups" ,cups-minimal)
-         ("zlib" ,zlib)
-
-         ;; This dependency can be dropped by setting DISABLE_JBIG=1, but the
-         ;; result will not support some printers like the Samsung CLP-600.
-         ("jbigkit" ,jbigkit)))
+         ("jbigkit" ,jbigkit)
+         ("zlib" ,zlib)))
       (synopsis "QPDL (SPL2) printer driver")
       (description
        "SpliX is a set of CUPS drivers for printers that speak @acronym{QPDL,
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 91cf4f7174..bfa78556bc 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -87,13 +87,16 @@
   #:use-module (gnu packages guile)
   #:use-module (gnu packages time)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages icu4c)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages language)
+  #:use-module (gnu packages libedit)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages logging)
   #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages parallel)
@@ -234,7 +237,7 @@ standard Go idioms.")
 (define-public ephemeralpg
   (package
     (name "ephemeralpg")
-    (version "3.0")
+    (version "3.1")
     (source
      (origin
        (method url-fetch)
@@ -242,10 +245,10 @@ standard Go idioms.")
              "https://eradman.com/ephemeralpg/code/ephemeralpg-"
              version ".tar.gz"))
        (sha256
-        (base32 "1j0g7g114ma7y7sadbng5p1ss1zsm9zpicm77qspym6565733vvh"))))
+        (base32 "1ap22ki8yz6agd0qybcjgs4b9izw1rwwcgpxn3jah2ccfyax34s6"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags (list "CC=gcc"
+     `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
                           (string-append "PREFIX=" %output))
        #:phases
        (modify-phases %standard-phases
@@ -308,6 +311,183 @@ ElasticSearch server")
     (home-page "https://github.com/patientslikeme/es_dump_restore")
     (license license:expat)))
 
+(define-public firebird
+  (package
+    (name "firebird")
+    (version "3.0.7")
+    (source
+     (let ((revision "33374-0"))
+       (origin
+         (method url-fetch)
+         (uri (string-append "https://github.com/FirebirdSQL/"
+                             "firebird/releases/download/R"
+                             (string-replace-substring version "." "_") "/"
+                             "Firebird-" version "." revision ".tar.bz2"))
+         (sha256
+          (base32 "0xpy1bncz36c6n28y7kllm1dkrdkn4vb4gw2n43f2351mznmrf5c"))
+         (modules '((guix build utils)))
+         (snippet
+          `(begin
+             (for-each
+              delete-file-recursively
+              (list "extern/btyacc/test" ; TODO: package and remove entirely
+                    "extern/editline"
+                    "extern/icu"
+                    "extern/libtommath"
+                    "extern/zlib"
+                    "src/include/firebird/impl/boost"
+
+                    ;; Missing licence.
+                    "builds/install/arch-specific/solaris"
+                    "extern/SfIO"
+                    "src/msgs/templates.sql"
+
+                    ;; Generated files missing sources.
+                    "doc/Firebird-3-QuickStart.pdf"
+                    (string-append "doc/Firebird-" ,version
+                                   "-ReleaseNotes.pdf")
+                    "doc/README.SecureRemotePassword.html"))
+             #t)))))
+    (build-system gnu-build-system)
+    (outputs (list "debug" "out"))
+    (arguments
+     `(#:configure-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "--with-fbsbin=" out "/sbin")
+               (string-append "--with-fbdoc=" out "/share/doc/"
+                              ,name "-" ,version)
+               (string-append "--with-fbconf=" out "/lib/firebird")
+               (string-append "--with-fbintl=" out "/lib/firebird/intl")
+               (string-append "--with-fbmisc=" out "/lib/firebird/misc")
+               (string-append "--with-fbmsg=" out "/lib/firebird")
+               (string-append "--with-fbplugins=" out "/lib/firebird/plugins")
+               (string-append "--with-fbudf=" out "/lib/firebird/UDF")
+               "--with-fbglock=/run/firebird"
+               "--with-fblog=/var/log/firebird"
+               "--with-fbhelp=/var/lib/firebird/system"
+               "--with-fbsecure-db=/var/lib/firebird/secure"
+               "--without-fbsample"
+               "--without-fbsample-db"
+               "--with-system-editline"))
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             ;; The plugins/ can't find libfbclient otherwise.
+             (string-append "LDFLAGS=-Wl,-rpath="
+                            (assoc-ref %outputs "out") "/lib"))
+       #:tests? #f                      ; no test suite
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-system-boost
+           (lambda _
+             (substitute* "src/include/firebird/Message.h"
+               (("\"\\./impl/boost/preprocessor/seq/for_each_i\\.hpp\"")
+                "<boost/preprocessor/seq/for_each_i.hpp>")
+               (("FB_BOOST_") "BOOST_"))
+             #t))
+         (add-after 'unpack 'patch-installation
+           (lambda _
+             (substitute*
+                 "builds/install/arch-specific/linux/makeInstallImage.sh.in"
+               (("/bin/sh") (which "bash"))
+               ;; Remove shell script helpers from $PATH.
+               (("(addLibs|cp) .*\\.sh .*@FB_SBINDIR@") ":")
+               ;; Put files where Guix users expect them.
+               (("(License\\.txt.*)@FB_CONFDIR" match)
+                (string-append match "@FB_DOCDIR@"))
+               (("@FB_CONFDIR@(.*License\\.txt.*)" match)
+                (string-append "@FB_DOCDIR@" match))
+               (("(cp .*/doc/.*)@FB_CONFDIR@(.*)" _ head tail)
+                (string-append head "@FB_DOCDIR@" tail "\n")))
+             (substitute*
+                 (list "builds/install/posix-common/changeServerMode.sh.in"
+                       "builds/install/posix-common/install.sh.in")
+               ;; Skip phases that (could) cause problems in Guix.
+               (("check(InstallUser|IfServerRunning|Libraries)|addFirebirdUser")
+                ":")
+               ;; Skip phases that are merely pointless on Guix.
+               (("buildUninstallFile|installInitdScript|startFirebird") ":")
+               ;; Omit randomly generated password with bonus timestamp.
+               (("setDBAPassword") ":"))
+
+             ;; These promote proprietary workflows not relevant on Guix.
+             (for-each delete-file-recursively
+                       (find-files "doc" "README\\.(build\\.msvc|NT|Win)"))
+             #t))
+         (add-after 'configure 'delete-init-scripts
+           (lambda _
+             (delete-file-recursively "gen/install/misc")
+             #t))
+         (add-before 'build 'set-build-environment-variables
+           (lambda _
+             ;; ‘isql’ needs to run & find libfbclient.so during the build.
+             ;; This doubles as a rudimentary test in lieu of a test suite.
+             (setenv "LD_LIBRARY_PATH"
+                     (string-append (assoc-ref %build-inputs "icu4c") "/lib"))
+             #t))
+         (add-before 'install 'keep-embedded-debug-symbols
+           (lambda _
+             ;; Let the gnu-build-system separate & deal with them later.
+             ;; XXX Upstream would use ‘--strip-unneeded’, shaving a whole
+             ;; megabyte off Guix's 7.7M libEngine12.so, for example.
+             (substitute* "gen/Makefile.install"
+               (("readelf") "false"))
+             #t))
+         (add-after 'install 'prune-undesirable-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion out
+                 ;; Remove example binaries.
+                 (for-each delete-file-recursively
+                           (find-files "." "example"))
+                 ;; Delete (now-)empty directories.
+                 (for-each rmdir
+                           (list "include/firebird/impl"
+                                 "lib/firebird/plugins/udr"))
+                 #t)))))))
+    (inputs
+     `(("boost" ,boost)
+       ("editline" ,editline)
+       ("icu4c" ,icu4c-67)
+       ("libtommath" ,libtommath)
+       ("ncurses" ,ncurses)
+       ("zlib" ,zlib)))
+    (home-page "https://www.firebirdsql.org")
+    (synopsis "Relational database with many ANSI SQL standard features")
+    (description
+     "Firebird is an SQL @acronym{RDBMS, relational database management system}
+with rich support for ANSI SQL (e.g., @code{INSERT...RETURNING}) including
+@acronym{UDFs, user-defined functions} and PSQL stored procedures, cursors, and
+triggers.  Transactions provide full ACID-compliant referential integrity.
+
+The database requires very little manual maintenance once set up, making it
+ideal for small business or embedded use.
+
+When installed as a traditional local or remote (network) database server,
+Firebird can grow to terabyte scale with proper tuning---although PostgreSQL
+may be a better choice for such very large environments.
+
+Firebird can also be embedded into stand-alone applications that don't want or
+need a full client & server.  Used in this manner, it offers richer SQL support
+than SQLite as well as the option to seamlessly migrate to a client/server
+database later.")
+    (properties
+     `((lint-hidden-cve . ("CVE-2017-6369"))))
+    (license
+     ;; See doc/license/README.license.usage.txt for rationale & details.
+     (list license:bsd-3                ; src/common/sha2/
+           license:bsd-4                ; src/common/enc.cpp
+           license:gpl2+                ; builds/posix/make.defaults
+           (license:non-copyleft "file:///builds/install/misc/IPLicense.txt"
+                                 "InterBase Public License v1.0")
+           (license:non-copyleft "file:///builds/install/misc/IDPLicense.txt"
+                                 "Initial Developer's Public License v1.0")
+           license:lgpl2.1           ; exception for OSI-compatible licences
+           license:mpl1.1            ; examples/interfaces/0{6,8}*.cpp
+           license:public-domain)))) ; including files without explicit licence
+
 (define-public leveldb
   (package
     (name "leveldb")
@@ -956,16 +1136,16 @@ as a drop-in replacement of MySQL.")
 (define-public mariadb-connector-c
   (package
     (name "mariadb-connector-c")
-    (version "3.1.10")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://downloads.mariadb.org/f/connector-c-"
-                    version "/mariadb-connector-c-"
-                    version "-src.tar.gz"))
-              (sha256
-               (base32
-                "13v5z4w1cl890lnr2fbwbziw638lqw2aga45vdq1z0cyrc9mcgmg"))))
+    (version "3.1.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://downloads.mariadb.org/f/connector-c-" version
+             "/mariadb-connector-c-" version "-src.tar.gz"
+             "/from/https%3A//mirrors.ukfast.co.uk/sites/mariadb/?serve"))
+       (sha256
+        (base32 "03svzahdf7czjlm695c11r4bfd04qdqgx8r1vkpr1zlkjhwnqvry"))))
     (inputs
      `(("openssl" ,openssl)))
     (build-system cmake-build-system)
@@ -1024,6 +1204,8 @@ TIMESTAMP.  It also supports storage of binary large objects, including
 pictures, sounds, or video.")
     (license (license:x11-style "file://COPYRIGHT"))))
 
+(define-public postgresql-10 postgresql)
+
 (define-public postgresql-11
   (package
     (inherit postgresql)
@@ -1126,12 +1308,12 @@ organized in a hash table or B+ tree.")
     (native-inputs `(("bc" ,bc)
                      ("bash:include" ,bash "include")
                      ("check" ,check-0.14)
-                     ("libuuid" ,util-linux)
                      ("pkg-config" ,pkg-config)))
 
     ;; TODO: Add more optional inputs.
     (inputs `(("curl" ,curl)
-              ("libgcrypt" ,libgcrypt)))
+              ("libgcrypt" ,libgcrypt)
+              ("libuuid" ,util-linux "lib")))
     (synopsis "Manipulate plain text files as databases")
     (description
      "GNU Recutils is a set of tools and libraries for creating and
@@ -1188,6 +1370,7 @@ including field and record folding.")))
      `(#:make-flags (list "CC=gcc" "V=1"
                           ;; Ceph requires that RTTI is enabled.
                           "USE_RTTI=1"
+                          "date=1970-01-01" ; build reproducibly
                           (string-append "INSTALL_PATH="
                                          (assoc-ref %outputs "out"))
 
@@ -2137,7 +2320,7 @@ database.")
 (define-public lmdb
   (package
     (name "lmdb")
-    (version "0.9.26")
+    (version "0.9.27")
     (source
      (origin
        (method git-fetch)
@@ -2146,7 +2329,7 @@ database.")
              (commit (string-append "LMDB_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0323xwb2rqyrr9vr6gbxc2kl89drhqw0ifmyh9pg9qgqmymyhxdx"))))
+        (base32 "09xqqm8yjsf1gv4gd4llal48sms76hfhxadx6rik1j2g5v3d3f1k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -2238,17 +2421,18 @@ on another machine, accessed via TCP/IP.")
 (define-public python-peewee
   (package
     (name "python-peewee")
-    (version "3.9.6")
-      (source
-        (origin
-        (method url-fetch)
-        (uri (pypi-uri "peewee" version))
-        (sha256
-         (base32
-          "1j4sh946k0736m7pd54z0y6i2hjhgg3kdllx1pwq8xkzzcgrx1xw"))))
+    (version "3.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "peewee" version))
+       (sha256
+        (base32 "1yl49gxrg0c2x3n3r60z3lixw9am8b61s0477l9vjabhhx1yziar"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f)) ; Fails to import test data
+     `(#:tests? #f))                    ; fails to import test data
+    (inputs
+     `(("sqlite" ,sqlite)))
     (native-inputs
      `(("python-cython" ,python-cython)))
     (home-page "https://github.com/coleifer/peewee/")
@@ -3273,7 +3457,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
 (define-public python-pypika
   (package
     (name "python-pypika")
-    (version "0.37.2")
+    (version "0.44.0")
     (source
      (origin (method git-fetch)
              (uri (git-reference
@@ -3282,7 +3466,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck"))))
+               "0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-parameterized" ,python-parameterized)))
@@ -3687,7 +3871,7 @@ The drivers officially supported by @code{libdbi} are:
 (define-public soci
   (package
     (name "soci")
-    (version "4.0.0")
+    (version "4.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3696,23 +3880,21 @@ The drivers officially supported by @code{libdbi} are:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "06faswdxd2frqr9xnx6bxc7zwarlzsbdi3bqpz7kwdxsjvq41rnb"))))
+                "14x2gjblkgpflv75wl144cyjp1sis5rbxnr9r2gj3yw16v2av0bp"))))
     (build-system cmake-build-system)
     (inputs
-     `(("postgresql" ,postgresql)
+     `(("firebird" ,firebird)
+       ("postgresql" ,postgresql)
        ("sqlite" ,sqlite)
        ("odbc" ,unixodbc)
        ("boost" ,boost)
        ("mariadb:dev" ,mariadb "dev")))
     (arguments
-     `(#:tests? #f ; Tests may require running database management systems.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-lib-path
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("set\\(SOCI_LIBDIR \"lib64\"\\)") ""))
-             #t)))))
+     `(#:configure-flags
+       ;; C++11 (-DSOCI_CXX11) is OFF by default.  hyperledger-iroha needs it.
+       (list "-DCMAKE_CXX_STANDARD=17"
+             "-DSOCI_LIBDIR=lib")
+       #:tests? #f))         ; may require running database management systems
     (synopsis "C++ Database Access Library")
     (description
      "SOCI is an abstraction layer for several database backends, including
diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm
index ea812c9715..82647c0c28 100644
--- a/gnu/packages/dbm.scm
+++ b/gnu/packages/dbm.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -41,7 +41,7 @@
                                    "See LICENSE in the distribution."))
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://download.oracle.com/berkeley-db/db-"
+             (uri (string-append "https://download.oracle.com/berkeley-db/db-"
                                  version ".tar.gz"))
              (sha256
               (base32
@@ -104,7 +104,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
     (version "5.3.28")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.oracle.com/berkeley-db/db-"
+              (uri (string-append "https://download.oracle.com/berkeley-db/db-"
                                   version ".tar.gz"))
               (sha256
                (base32
@@ -116,7 +116,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
     (version "6.2.32")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.oracle.com/berkeley-db/db-"
+              (uri (string-append "https://download.oracle.com/berkeley-db/db-"
                                   version ".tar.gz"))
               (sha256
                (base32
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 52e7ec223a..a82e6a07a8 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
@@ -26,12 +26,17 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
+  #:use-module (gnu packages dbm)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages wget)
-  #:use-module (gnu packages perl))
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages wget))
 
 (define-public debian-archive-keyring
   (package
@@ -275,3 +280,114 @@ debian/copyright for more information.")))))
 selectively mirror Debian and Ubuntu GNU/Linux distributions or any
 other apt sources typically provided by open source developers.")
       (license license:gpl2))))
+
+(define-public dpkg
+  (package
+    (name "dpkg")
+    (version "1.20.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://git.dpkg.org/git/dpkg/dpkg")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "190q968g1vdz07byvfvc2gladhpq3yl765mfiacglyix3nkisy0j"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'bootstrap 'patch-version
+           (lambda _
+             (patch-shebang "get-version")
+             (with-output-to-file ".dist-version"
+               (lambda () (display ,version)))
+             #t))
+         (add-after 'unpack 'set-perl-libdir
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out  (assoc-ref outputs "out"))
+                   (perl (assoc-ref inputs "perl")))
+               (setenv "PERL_LIBDIR"
+                       (string-append out
+                                      "/lib/perl5/site_perl/"
+                                      ,(package-version perl)))
+               #t))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)
+       ("perl-io-string" ,perl-io-string)))
+    (inputs
+     `(("bzip2" ,bzip2)
+       ("libmd" ,libmd)
+       ("ncurses" ,ncurses)
+       ("perl" ,perl)
+       ("xz" ,xz)
+       ("zlib" ,zlib)))
+    (home-page "https://wiki.debian.org/Teams/Dpkg")
+    (synopsis "Debian package management system")
+    (description "This package provides the low-level infrastructure for
+handling the installation and removal of Debian software packages.")
+    (license license:gpl2+)))
+
+(define-public reprepro
+  (package
+    (name "reprepro")
+    (version "5.3.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://salsa.debian.org/brlink/reprepro.git/")
+               (commit (string-append name "-" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1kn7m5rxay6q2c4vgjgm4407xx2r46skkkb6rn33m6dqk1xfkqnh"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; testtool not found
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (if tests?
+               (with-directory-excursion "tests"
+                 (invoke (which "sh") "test.sh"))
+               #t)))
+         (add-after 'install 'install-completions
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (bash (string-append out "/etc/bash_completion.d/"))
+                    (zsh  (string-append out "/share/zsh/site-fucnctions/")))
+               (mkdir-p bash)
+               (mkdir-p zsh)
+               (copy-file "docs/reprepro.bash_completion"
+                          (string-append bash "reprepro"))
+               (copy-file "docs/reprepro.zsh_completion"
+                          (string-append zsh "_reprepro"))
+               #t))))))
+    (inputs
+     `(("bdb" ,bdb)
+       ("bzip2" ,bzip2)
+       ("gpgme" ,gpgme)
+       ("libarchive" ,libarchive)
+       ("xz" ,xz)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (home-page "https://salsa.debian.org/brlink/reprepro")
+    (synopsis "Debian package repository producer")
+    (description "Reprepro is a tool to manage a repository of Debian packages
+(@code{.deb}, @code{.udeb}, @code{.dsc}, ...).  It stores files either being
+injected manually or downloaded from some other repository (partially) mirrored
+into one pool/ hierarchy.  Managed packages and files are stored in a Berkeley
+DB, so no database server is needed.  Checking signatures of mirrored
+repositories and creating signatures of the generated Package indices is
+supported.")
+    (license license:gpl2)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 9dc32c70f4..b3a000e6e3 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
@@ -566,7 +566,7 @@ error reporting, better tracing, profiling, and a debugger.")
 (define-public rr
   (package
     (name "rr")
-    (version "5.3.0")
+    (version "5.4.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -574,18 +574,19 @@ error reporting, better tracing, profiling, and a debugger.")
                     (commit version)))
               (sha256
                (base32
-                "1x6l1xsdksnhz9v50p4r7hhmr077cq20kaywqy1jzdklvkjqzf64"))
+                "1sfldgkkmsdyaqa28i5agcykc63gwm3zjihd64g86i852w8al2w6"))
               (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
        ;; The 'rr_exec_stub' is a static binary, which leads CMake to fail
-       ;; with:
-       ;;
-       ;;   file RPATH_CHANGE could not write new RPATH:
-       ;;
+       ;; with ‘file RPATH_CHANGE could not write new RPATH: ...’.
        ;; Clear CMAKE_INSTALL_RPATH to avoid that problem.
        (list "-DCMAKE_INSTALL_RPATH="
+             ;; Satisfy the ‘validate-runpath’ phase.  This isn't a direct
+             ;; consequence of clearing CMAKE_INSTALL_RPATH.
+             (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
+                            (assoc-ref %build-inputs "capnproto") "/lib")
              ,@(if (and (not (%current-target-system))
                         (member (%current-system)
                                 '("x86_64-linux" "aarch64-linux")))
@@ -613,7 +614,7 @@ error reporting, better tracing, profiling, and a debugger.")
        ("which" ,which)))
     (inputs
      `(("gdb" ,gdb)
-       ("cpanproto" ,capnproto)
+       ("capnproto" ,capnproto)
        ("python" ,python)
        ("python-pexpect" ,python-pexpect)))
     (home-page "https://rr-project.org/")
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index f60b3f38d6..78bb1811f9 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -53,14 +53,14 @@
 (define-public vera
   (package
     (name "vera")
-    (version "1.23")
+    (version "1.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/vera/vera-" version
                                   ".tar.gz"))
               (sha256
                (base32
-                "1az0v563jja8xb4896jyr8yv7jd9zacqyfkjd7psb73v7clg1mzz"))))
+                "1j5p679vw72bv766acbg6g89k31ynmrzlpg7s3wzy4krlwdf92xc"))))
     (build-system trivial-build-system)
     (arguments
      `(#:builder (begin
@@ -80,6 +80,12 @@
                      (mkdir-p info)
                      (mkdir-p html)
 
+                     ;; Change a ‘Malformed UTF-8 character: \xd7\x34 (unexpected
+                     ;; non-continuation byte 0x34, immediately after start byte
+                     ;; 0xd7; need 2 bytes, got 1) in pattern match (m//)’.
+                     (substitute* "vera.h"
+                       (("320.480") "320x480"))
+
                      ;; XXX: Use '--force' because the document is unhappy
                      ;; with Texinfo 5 (yes, documents can be unhappy.)
                      (invoke (string-append texi "/bin/makeinfo")
@@ -236,7 +242,7 @@ and a Python library.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url"https://github.com/soimort/translate-shell.git")
+               (url"https://github.com/soimort/translate-shell")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 3e7ab7d7ba..cb835f1c58 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -72,7 +72,7 @@
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "151")
+    (version "161")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -81,40 +81,16 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1lv44ngqij9dp3xk9jj95w7an7h03iac6b2ifpq33j5fffswa1sm"))))
+                "1c9afc0s8p2wh7pw7xclr8j06ma3fjk6r1dnfaf1gdfk05hdxi78"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
-                  ;; setup.py mistakenly requires python-magic from PyPi, even
-                  ;; though the Python bindings of `file` are sufficient.
-                  ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
-                  (add-after 'unpack 'dependency-on-python-magic
-                    (lambda _
-                      (substitute* "setup.py"
-                        (("'python-magic',") ""))))
                   ;; This test is broken because our `file` package has a
                   ;; bug in berkeley-db file type detection.
                   (add-after 'unpack 'remove-berkeley-test
                     (lambda _
                       (delete-file "tests/comparators/test_berkeley_db.py")
                       #t))
-                  ;; Test is dynamically generated and may have false
-                  ;; negatives with different ocaml versions.  Further
-                  ;; background in: https://bugs.debian.org/939386
-                  (add-after 'unpack 'remove-ocaml-test
-                    (lambda _
-                      (substitute* "tests/comparators/test_ocaml.py"
-                        (("def test_diff.differences.:")
-                         "def skip_test_diff(differences):"))
-                      #t))
-                  (add-after 'unpack 'skip-elf-tests
-                    ;; FIXME: libmix_differences test added in 125, and is
-                    ;; failing, need to explore why...
-                    (lambda _
-                      (substitute* "tests/comparators/test_elf.py"
-                        (("def test_libmix_differences.libmix_differences.:")
-                         "def skip_test_libmix_differences(libmix_differences):"))
-                      #t))
                   (add-after 'unpack 'embed-tool-references
                     (lambda* (#:key inputs #:allow-other-keys)
                       (substitute* "diffoscope/comparators/utils/compare.py"
@@ -145,6 +121,13 @@
                       ;; This requires /sbin to be in $PATH.
                       (delete-file "tests/test_tools.py")
                       #t))
+                  (add-before 'check 'skip-dex-test-with-missing-procyon
+                    (lambda _
+                      ;; This test actually requires procyon decompiler
+                      (substitute* "tests/comparators/test_dex.py"
+                        (("skip_unless_tools_exist.\"enjarify\", \"zipinfo\", \"javap\"")
+                         "skip_unless_tools_exist(\"enjarify\", \"zipinfo\", \"javap\", \"procyon\""))
+                     #t))
                   (add-after 'install 'install-man-page
                     (lambda* (#:key outputs #:allow-other-keys)
                       (let* ((out (assoc-ref outputs "out"))
@@ -155,6 +138,7 @@
               ("python-file" ,python-file)
               ("python-debian" ,python-debian)
               ("python-libarchive-c" ,python-libarchive-c)
+              ("python-magic" ,python-magic)
               ("python-tlsh" ,python-tlsh)
               ("acl" ,acl)              ;for getfacl
               ("colordiff" ,colordiff)
@@ -164,6 +148,7 @@
                      ("python-pytest" ,python-pytest)
                      ("python-chardet" ,python-chardet)
                      ("python-binwalk" ,python-binwalk)
+                     ("python-black" ,python-black)
                      ("python-h5py" ,python-h5py)
                      ("python-pypdf2" ,python-pypdf2)
                      ("python-progressbar33" ,python-progressbar33)
@@ -240,7 +225,7 @@ install.")
 (define-public reprotest
   (package
     (name "reprotest")
-    (version "0.7.14")
+    (version "0.7.15")
     (source
      (origin
        (method git-fetch)
@@ -250,7 +235,7 @@ install.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "12d07xq5zx5dfbsgakm6zcn7hgf0h9f5kvfjqkiyak4ix5aa6xkf"))))
+         "12lc1pb9d5h3blrzzx9nbqqj5bi9x23yj31fxafmk37803rl8a0m"))))
     (inputs
      `(("python-debian" ,python-debian)
        ("python-distro" ,python-distro)
@@ -262,6 +247,7 @@ install.")
        ("libfaketime" ,libfaketime)
        ("python-coverage" ,python-coverage)
        ("python-docutils" ,python-docutils)
+       ("python-magic " ,python-magic)
        ("python-pytest " ,python-pytest)
        ("python-tlsh" ,python-tlsh)
        ("python-tox" ,python-tox)
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 235df8ce9e..29f43a2d5f 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -86,7 +86,8 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (guix utils))
 
 (define-public udevil
   (package
@@ -482,7 +483,7 @@ systems.  Output format is completely customizable.")
 (define-public f3
   (package
     (name "f3")
-    (version "7.2")
+    (version "8.0")
     (source
      (origin
       (method git-fetch)
@@ -491,11 +492,11 @@ systems.  Output format is completely customizable.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "1iwdg0r4wkgc8rynmw1qcqz62l0ldgc8lrazq33msxnk5a818jgy"))))
+       (base32 "17l5vspfcgfbkqg7bakp3gql29yb05gzawm8n3im30ilzdr53678"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f                      ; no check target
-       #:make-flags (list "CC=gcc"
+     `(#:tests? #f                      ; no check target
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
                           (string-append "PREFIX=" %output))
        #:phases
        (modify-phases %standard-phases
@@ -520,7 +521,7 @@ a card with a smaller capacity than stated.")
 (define-public python-parted
   (package
     (name "python-parted")
-    (version "3.11.6")
+    (version "3.11.7")
     (source
      (origin
        (method git-fetch)
@@ -529,7 +530,7 @@ a card with a smaller capacity than stated.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xgrqhvn44vr3676j5sy2x3xfv2dzf7vncg25cmrsmkbd49x3z5j"))))
+        (base32 "01193fmkss9icjvqpw85szpk8ld1pnha7p9kqm7mpwk6rc6gi2m3"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -558,7 +559,7 @@ a card with a smaller capacity than stated.")
 (define-public duperemove
   (package
     (name "duperemove")
-    (version "0.11.1")
+    (version "0.11.2")
     (source
      (origin
        (method git-fetch)
@@ -566,7 +567,7 @@ a card with a smaller capacity than stated.")
              (url "https://github.com/markfasheh/duperemove")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "1scz76pvpljvrpfn176125xwaqwyy4pirlm11sc9spb2hyzknw2z"))
+        (base32 "1a87mka2sfzhbch2jip6wlvvs0glxq9lqwmyrp359d1rmwwmqiw9"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
@@ -580,7 +581,9 @@ a card with a smaller capacity than stated.")
        (modify-phases %standard-phases
          (delete 'configure))           ; no configure script
        #:make-flags (list (string-append "PREFIX=" %output)
-                          "CC=gcc")))
+                          (string-append "CC=" ,(cc-for-target))
+                          ;; Set to <next release>dev by default.
+                          (string-append "VER=" ,version))))
     (home-page "https://github.com/markfasheh/duperemove")
     (synopsis "Tools for de-duplicating file system data")
     (description "Duperemove is a simple tool for finding duplicated extents
@@ -1049,7 +1052,7 @@ that support this feature).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/memkind/memkind.git")
+                    (url "https://github.com/memkind/memkind")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 43339720f2..aa4411c5a2 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -47,13 +47,13 @@
 (define-public python-django
   (package
     (name "python-django")
-    (version "3.1.1")
+    (version "3.1.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "0bzwy58hrxbsh7szak1yfh7qvvfnpdpi8ay1x7d3pvbkm1f15j2r"))))
+                "13rz3v0bwk8i3xcccn5awbafahab3cyk8wwv57v2xazdzxspgf0l"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -132,13 +132,13 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
 (define-public python-django-2.2
   (package
     (inherit python-django)
-    (version "2.2.16")
+    (version "2.2.17")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "1535g2r322cl4x52fb0dmzlbg23539j2wx6027j54p22xvjlbkv2"))))
+                "0qdq0h2gw45j0h9j22c2sdn49ybl7jsrcyraskb9snknsyj70lyg"))))
     (native-inputs
      `(;; XXX: In 2.2 and 3.0, selenium is required for the test suite.
        ("python-selenium" ,python-selenium)
@@ -862,14 +862,13 @@ settings.py and easily use them in your project.")
 (define-public python-django-q
   (package
     (name "python-django-q")
-    (version "1.3.3")
+    (version "1.3.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "django-q" version))
         (sha256
-         (base32
-          "1fs29767940akbsn3vdzw2rqnn9v77b0b55bi7fvydny1rk7fw6y"))))
+         (base32 "03z1pf6wlf47i7afr79a8fiiidfk1vq19yaqnv0m4qdny7f58gaj"))))
     (build-system python-build-system)
     ;; FIXME: Tests require disque, Redis, MongoDB, Docker.
     (arguments '(#:tests? #f))
@@ -1013,14 +1012,14 @@ Django projects, which allows association of a number of tags with any
 (define-public python-djangorestframework
   (package
     (name "python-djangorestframework")
-    (version "3.11.1")
+    (version "3.12.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "djangorestframework" version))
        (sha256
         (base32
-         "0chbl1d0m1x23mmpdj7y85k3n32lpxrhcdl07ywnylfj9dd2vl3d"))))
+         "0jb22psb823vh5fj9az63p5lgyax9ygjy2faah16ajxvvsp54i6m"))))
     (build-system python-build-system)
     (arguments
      '(;; No included tests
@@ -1052,7 +1051,7 @@ provides features like a Web-browsable API and authentication policies.")
        ("python-six" ,python-six)))
     (home-page "https://github.com/divio/django-sekizai")
     (synopsis "Template blocks for Django projects")
-    (description "Sekizai means blocks in Japanese, and thats what this app
+    (description "Sekizai means blocks in Japanese, and that is what this app
 provides.  A fresh look at blocks.  With @code{django-sekizai} you can define
 placeholders where your blocks get rendered and at different places in your
 templates append to those blocks.  This is especially useful for css and
@@ -1193,7 +1192,7 @@ FileFields during tests.")
     (home-page "https://github.com/django-auth-ldap/django-auth-ldap")
     (synopsis "Django LDAP authentication backend")
     (description
-     "This packages provides a LDAP authentication backend for Django.")
+     "This package provides an LDAP authentication backend for Django.")
     (license license:bsd-2)))
 
 (define-public python-django-logging-json
@@ -1291,6 +1290,6 @@ to ElasticSearch.")
     (description
      "The main goal of Django URL Filter is to provide an easy URL interface
 for filtering data.  It allows the user to safely filter by model attributes
-and also allows to specify the lookup type for each filter (very much like
+and also specify the lookup type for each filter (very much like
 Django's filtering system in ORM).")
     (license license:expat)))
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index f5ea9bd332..6423eb124f 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,33 +26,67 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages ocr)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
 (define-public djvulibre
   (package
     (name "djvulibre")
-    (version "3.5.27")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/djvu/DjVuLibre/"
-                                  version "/djvulibre-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0psh3zl9dj4n4r3lx25390nx34xz0bg0ql48zdskhq354ljni5p6"))))
+    (version "3.5.28")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/djvu/DjVuLibre/"
+                           (string-replace-substring version "." ",")
+                           "/djvulibre-" version ".tar.gz"))
+       (sha256
+        (base32 "0manxn1ly5n8nqamv47hz7akxi6v0rzwc9j1c3x99vngrjlr5qw2"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; This bundles software (e.g., zlib) and is entirely superfluous.
+           (delete-file-recursively "win32")
+           #t))))
     (build-system gnu-build-system)
+    (native-inputs
+     ;; The 3.5.28 release tarball isn't bootstrapped.
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (inputs
+     `(("libjpeg-turbo" ,libjpeg-turbo)
+       ("libtiff" ,libtiff)
+       ("zlib" ,zlib)))
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'reproducible
-                    (lambda _
-                      ;; Ensure there are no timestamps in .svgz files.
-                      (substitute* "desktopfiles/Makefile.in"
-                        (("gzip") "gzip -n"))
-                      #t)))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'bootstrap 'make-reproducible
+           (lambda _
+             ;; Ensure there are no timestamps in .svgz files.
+             (substitute* "desktopfiles/Makefile.am"
+               (("gzip") "gzip -n"))
+             #t)))))
     (home-page "http://djvu.sourceforge.net/")
     (synopsis "Implementation of DjVu, the document format")
     (description "DjVuLibre is an implementation of DjVu,
@@ -62,7 +97,7 @@ utilities.")
 (define-public djview
   (package
     (name "djview")
-    (version "4.11")
+    (version "4.12")
     (source
      (origin
        (method git-fetch)
@@ -70,7 +105,7 @@ utilities.")
              (url "https://git.code.sf.net/p/djvu/djview-git")
              (commit (string-append "release." version))))
        (sha256
-        (base32 "0qlhd0xlxn8i869m0hwdjvwivi2vigqm88wliyr1h7s84zl3qhsy"))
+        (base32 "0mn9ywjbc7iga50lbjclrk892g0x0rap0dmb6ybzjyarybdhhcxp"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
@@ -112,3 +147,343 @@ files, and printing page and documents.
 The viewer can simultaneously display several pages using a side-by-side or
 a continuous layout.")
     (license license:gpl2+)))
+
+(define-public pdf2djvu
+  (package
+    (name "pdf2djvu")
+    (version "0.9.17.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/jwilk/pdf2djvu/releases/download/" version
+             "/pdf2djvu-" version ".tar.xz"))
+       (sha256
+        (base32 "18r648kna6ccw0m0nfxxnsmz541k69d0w9zzqvm1x2l5qyyvgfsv"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("python2" ,python-2)
+       ("python2-nose" ,python2-nose)))
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("exiv2" ,exiv2)
+       ("graphicsmagick" ,graphicsmagick)
+       ("poppler" ,poppler)
+       ("poppler-data" ,poppler-data)
+       ("util-linux-lib" ,util-linux "lib"))) ; for libuuid
+    (arguments
+     `(#:test-target "test"))
+    (synopsis "PDF to DjVu converter")
+    (description
+     "@code{pdf2djvu} creates DjVu files from PDF files.
+It is able to extract:
+@itemize
+@item graphics,
+@item text layer,
+@item hyperlinks,
+@item document outline (bookmarks),
+@item metadata (including XMP metadata).
+@end itemize\n")
+    (home-page "https://jwilk.net/software/pdf2djvu")
+    (license license:gpl2)))
+
+(define-public djvu2pdf
+  (package
+    (name "djvu2pdf")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://0x2a.at/site/projects/djvu2pdf/djvu2pdf-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "0v2ax30m7j1yi4m02nzn9rc4sn4vzqh5vywdh96r64j4pwvn5s5g"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("gawk" ,gawk)
+       ("ghostscript" ,ghostscript)
+       ("grep" ,grep)
+       ("ncurses" ,ncurses)
+       ("which" ,which)))
+    (arguments
+     `(#:tests? #f ; No test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((djvulibre (assoc-ref inputs "djvulibre"))
+                   (gawk (assoc-ref inputs "gawk"))
+                   (ghostscript (assoc-ref inputs "ghostscript"))
+                   (grep (assoc-ref inputs "grep"))
+                   (ncurses (assoc-ref inputs "ncurses"))
+                   (which (assoc-ref inputs "which")))
+               (substitute* "djvu2pdf"
+                 (("awk")
+                  (string-append gawk "/bin/awk"))
+                 (("ddjvu")
+                  (string-append djvulibre "/bin/ddjvu"))
+                 (("djvudump")
+                  (string-append djvulibre "/bin/djvudump"))
+                 (("grep")
+                  (string-append grep "/bin/grep"))
+                 (("gs")
+                  (string-append ghostscript "/bin/gs"))
+                 (("tput ")
+                  (string-append ncurses "/bin/tput "))
+                 (("which")
+                  (string-append which "/bin/which"))))
+             #t))
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref %outputs "out")))
+               (install-file "djvu2pdf"
+                             (string-append out "/bin"))
+               (install-file "djvu2pdf.1.gz"
+                             (string-append out "/share/man/man1"))
+               #t))))))
+    (synopsis "DjVu to PDF converter")
+    (description "This is a small tool to convert DjVu files to PDF files.")
+    (home-page "https://0x2a.at/site/projects/djvu2pdf/")
+    (license license:gpl2+)))
+
+(define-public minidjvu
+  (package
+    (name "minidjvu")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/minidjvu/minidjvu/"
+                           version "/minidjvu-" version ".tar.gz"))
+       (sha256
+        (base32 "0jmpvy4g68k6xgplj9zsl6brg6vi81mx3nx2x9hfbr1f4zh95j79"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)))
+    (inputs
+     `(("libjpeg-turbo" ,libjpeg-turbo)
+       ("libtiff" ,libtiff)
+       ("zlib" ,zlib)))
+    (arguments
+     '(#:configure-flags '("--disable-static")
+       #:parallel-build? #f
+       #:tests? #f ; No test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda _
+             (substitute* "Makefile.in"
+               (("/usr/bin/gzip")
+                "gzip"))
+             #t))
+         (add-before 'install 'make-lib-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
+             #t)))))
+    (synopsis "Black and white DjVu encoder")
+    (description
+     "@code{minidjvu} is a multipage DjVu encoder and single page
+encoder/decoder.  It doesn't support colors or grayscales, just black
+and white.")
+    (home-page "https://sourceforge.net/projects/minidjvu/")
+    (license license:gpl2)))
+
+(define-public djvusmooth
+  (package
+    (name "djvusmooth")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/jwilk/djvusmooth/releases/download/" version
+             "/djvusmooth-" version ".tar.gz"))
+       (sha256
+        (base32 "0z403cklvxzz0qaczgv83ax0nknrd9h8micp04j9kjfdxk2sgval"))))
+    (build-system python-build-system)
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("python2-djvulibre" ,python2-djvulibre)
+       ("python2-subprocess32" ,python2-subprocess32)
+       ("python2-wxpython" ,python2-wxpython)))
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "lib/djvused.py"
+               (("djvused_path = 'djvused'")
+                (string-append "djvused_path = '"
+                               (assoc-ref inputs "djvulibre")
+                               "/bin/djvused'"))))))))
+    (synopsis "Graphical editor for DjVu documents")
+    (description
+     "@code{djvusmooth} is a graphical editor for DjVu_ documents.
+It is able to:
+@itemize
+@item edit document metadata,
+@item edit document outline (bookmarks),
+@item add, remove or edit hyperlinks,
+@item correct occasional errors in the hidden text layer.
+@end itemize\n")
+    (home-page "https://jwilk.net/software/djvusmooth")
+    (license license:gpl2)))
+
+(define-public didjvu
+  (package
+    (name "didjvu")
+    (version "0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/jwilk/didjvu/releases/download/" version
+             "/didjvu-" version ".tar.gz"))
+       (sha256
+        (base32 "0xyrnk8d2khi7q1zr28gjkjq6frz4mkb5jdl8821yzf12k7c8pbv"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("python2-nose" ,python2-nose)))
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("minidjvu" ,minidjvu)
+       ("python" ,python-2)
+       ("python2-gamera" ,python2-gamera)
+       ("python2-pillow" ,python2-pillow)))
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build python-build-system))
+       #:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'check 'disable-failing-test
+           (lambda _
+             (substitute* "tests/test_ipc.py"
+               ;; test_wait_signal gets stuck forever
+               (("yield self\\._test_signal, name")
+                "return True")
+               ;; test_path fails to find a file it should have created
+               (("path = os\\.getenv\\('PATH'\\)\\.split\\(':'\\)")
+                "return True"))
+             (substitute* "tests/test_timestamp.py"
+               ;; test_timezones fails with:
+               ;;   '2009-12-18T21:25:14Z' != '2009-12-18T22:25:14+01:00'
+               (("@fork_isolation")
+                "return True"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "make"
+                       "DESTDIR="
+                       (string-append "PREFIX=" out)
+                       "install"))))
+         (add-after 'install 'wrap-python
+           (assoc-ref python:%standard-phases 'wrap))
+         (add-after 'wrap-python 'wrap-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (djvulibre (assoc-ref inputs "djvulibre")))
+               (wrap-program (string-append out "/bin/didjvu")
+                 `("PATH" ":" prefix (,(string-append djvulibre "/bin"))))))))))
+    (synopsis "DjVu encoder with foreground/background separation")
+    (description
+     "@code{didjvu} uses the @code{Gamera} framework to separate the foreground
+and background layers of images, which can then be encoded into a DjVu file.")
+    (home-page "https://jwilk.net/software/didjvu")
+    (license license:gpl2)))
+
+(define-public ocrodjvu
+  (package
+    (name "ocrodjvu")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/jwilk/ocrodjvu/releases/download/" version
+             "/ocrodjvu-" version ".tar.xz"))
+       (sha256
+        (base32 "09w9rqr7z2jd5kwp178zz2yrsc82mxs7gksipg92znxzgzhmw2ng"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("libxml2" ,libxml2)
+       ("python2-nose" ,python2-nose)
+       ("python2-pillow" ,python2-pillow)))
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("ocrad" ,ocrad)
+       ("python" ,python-2)
+       ("python2-djvulibre" ,python2-djvulibre)
+       ("python2-html5lib" ,python2-html5lib)
+       ("python2-lxml" ,python2-lxml)
+       ("python2-pyicu" ,python2-pyicu)
+       ("python2-subprocess32" ,python2-subprocess32)
+       ("tesseract-ocr" ,tesseract-ocr)))
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build python-build-system))
+       #:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'check 'disable-failing-test
+           (lambda _
+             (substitute* "tests/test_ipc.py"
+               ;; test_wait_signal gets stuck forever
+               (("yield self\\._test_signal, name")
+                "return True")
+               ;; test_path fails to find a file it should have created
+               (("path = os\\.getenv\\('PATH'\\)\\.split\\(':'\\)")
+                "return True"))
+             ;; Disable tests with tesseract. They can't work without
+             ;; the language files that must downloaded by the final user
+             ;; as they are not packaged in Guix.
+             (substitute* "tests/ocrodjvu/test.py"
+               (("engines = stdout\\.getvalue\\(\\)\\.splitlines\\(\\)")
+                "engines = ['ocrad']"))
+             (substitute* "tests/ocrodjvu/test_integration.py"
+               (("engines = 'tesseract', 'cuneiform', 'gocr', 'ocrad'")
+                "engines = 'ocrad'"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "make"
+                       "DESTDIR="
+                       (string-append "PREFIX=" out)
+                       "install"))))
+         (add-after 'install 'wrap-python
+           (assoc-ref python:%standard-phases 'wrap))
+         (add-after 'wrap-python 'wrap-path
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (djvulibre (assoc-ref inputs "djvulibre"))
+                   (ocrad (assoc-ref inputs "ocrad"))
+                   (tesseract (assoc-ref inputs "tesseract-ocr")))
+               (for-each (lambda (file)
+                           (wrap-program (string-append out "/bin/" file)
+                             `("PATH" ":" prefix
+                               (,(string-append djvulibre "/bin:"
+                                                ocrad "/bin:"
+                                                tesseract "/bin")))))
+                         '("djvu2hocr"
+                           "hocr2djvused"
+                           "ocrodjvu"))))))))
+    (synopsis "Program to perform OCR on DjVu files")
+    (description
+     "@code{ocrodjvu} is a wrapper for OCR systems, that allows you to perform
+OCR on DjVu files.")
+    (home-page "https://jwilk.net/software/ocrodjvu")
+    (license license:gpl2)))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index a27b670d8c..3aa3cf3e8d 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -317,7 +317,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
   (package
     (name "bind")
     ;; When updating, check whether isc-dhcp's bundled copy should be as well.
-    (version "9.16.7")
+    (version "9.16.9")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -325,7 +325,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
                     "/bind-" version ".tar.xz"))
               (sha256
                (base32
-                "1l8lhgnkj3fnl1101bs3pzj5gv2x5m9ahvrbyscsc9mxxc91hzcz"))))
+                "0nja60jxb8d2m5fi6xd55xjpfkzmxhjsmbxqphy6x91qsz295cmw"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
@@ -760,16 +760,16 @@ served by AS112.  Stub and forward zones are supported.")
 (define-public yadifa
   (package
     (name "yadifa")
-    (version "2.3.10")
+    (version "2.4.0")
     (source
-     (let ((build "9729"))
+     (let ((build "9809"))
        (origin
          (method url-fetch)
          (uri
-          (string-append "http://cdn.yadifa.eu/sites/default/files/releases/"
+          (string-append "https://www.yadifa.eu/sites/default/files/releases/"
                          "yadifa-" version "-" build ".tar.gz"))
          (sha256
-          (base32 "0azaignqmylfdzr4x02s8y3pkn4f0xkpz3d1pkiiz8mwk92zgybn")))))
+          (base32 "114a1y4pzzzq0s9hyn65nd4fg19xijsqpfhsd0wkvjndsazg63ky")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -782,19 +782,19 @@ served by AS112.  Stub and forward zones are supported.")
            (lambda _
              (substitute* "Makefile.in"
                ((" (etc|var)") ""))
+             #t))
+         (add-after 'configure 'omit-spurious-references
+           (lambda _
+             ;; The many Makefile.in grep this(!) to #define BUILD_OPTIONS.
+             (substitute* "config.log"
+               (("(=/gnu/store/)[^-]*" _ match)
+                (string-append match "...")))
              #t)))
        #:configure-flags
        (list "--sysconfdir=/etc"
              "--localstatedir=/var"
-             "--disable-build-timestamp" ; build reproducibly
-             "--enable-shared"
-             "--disable-static"
-             "--enable-acl"
-             "--enable-caching"
-             "--enable-ctrl"            ; enable remote control
-             "--enable-nsec"
-             "--enable-nsec3"
-             "--enable-tsig")))
+             "--enable-shared" "--disable-static"
+             "--disable-build-timestamp"))) ; build reproducibly
     (home-page "https://www.yadifa.eu/")
     (synopsis "Authoritative DNS name server")
     (description "YADIFA is an authoritative name server for the @dfn{Domain
@@ -807,7 +807,7 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "3.0.1")
+    (version "3.0.2")
     (source
      (origin
        (method git-fetch)
@@ -816,7 +816,7 @@ Extensions} (DNSSEC).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "10mlzldxqvbaw78nghkr0s73rlbpz9wg16z14321xw2l9xfibkad"))
+        (base32 "1cinzz8p86fzknnr2z6b49yqr4y05mmnr0l2q3lwzcfhc6dcl8di"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 2c7f920011..2631418f08 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -41,7 +41,7 @@
     (version "5.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-" version ".zip"))
               (sha256
                (base32
@@ -83,7 +83,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.5")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -113,7 +113,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -124,7 +124,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -135,7 +135,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbook-xml-" version ".zip"))
               (sha256
                (base32
@@ -146,7 +146,7 @@ by no means limited to these applications.)  This package provides XML DTDs.")
     (version "4.1.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.docbook.org/xml/" version
+              (uri (string-append "https://docbook.org/xml/" version
                                   "/docbkx412.zip"))
               (sha256
                (base32
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index b130298a04..950986045e 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright © 2020 Jesse Dowell <jessedowell@gmail.com>
@@ -70,11 +70,11 @@
     (inputs
      `(("python-requests" ,python-requests-2.20)
        ("python-six" ,python-six)
-       ("python-urllib3" ,python-urllib3-1.24)
-       ("python-websocket-client" ,python-websocket-client)))
+       ("python-urllib3" ,python-urllib3-1.24)))
     (propagated-inputs
      `(("python-docker-pycreds" ,python-docker-pycreds)
-       ("python-paramiko" ,python-paramiko))) ; adds SSH support
+       ("python-paramiko" ,python-paramiko)    ;adds SSH support
+       ("python-websocket-client" ,python-websocket-client)))
     (home-page "https://github.com/docker/docker-py/")
     (synopsis "Python client for Docker")
     (description "Docker-Py is a Python client for the Docker container
@@ -671,7 +671,7 @@ provisioning etc.")
 (define-public cqfd
   (package
     (name "cqfd")
-    (version "5.1.0")
+    (version "5.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -680,7 +680,7 @@ provisioning etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1xhydz01f2rrnw7rmnaxh3f3q1ariq7j2ig0i0w1p3wn10l3q0nv"))))
+                "1zqgznfl7slfrddfpy2pfmablbvyf7296d3b3vcprilqb93cc7li"))))
     (build-system gnu-build-system)
     (arguments
      ;; The test suite requires a docker daemon and connectivity.
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 6532bb4704..0fca0b11eb 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -63,7 +63,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/latex2html/latex2html.git")
+         (url "https://github.com/latex2html/latex2html")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 1609a631b7..a23c677880 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -281,7 +281,7 @@
                   (lambda (binary)
                     (wrap-program binary
                       ;; Make QtWebEngineProcess available.
-                      `("QTWEBENGINEPROCESS_PATH" ":" =
+                      `("QTWEBENGINEPROCESS_PATH" =
                         ,(list (string-append
                                 qtwebengine
                                 "/lib/qt5/libexec/QtWebEngineProcess")))))
@@ -415,7 +415,7 @@ following formats:
 (define-public cozy
   (package
     (name "cozy")
-    (version "0.7.2")
+    (version "0.7.6")
     (source
      (origin
        (method git-fetch)
@@ -424,7 +424,7 @@ following formats:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0fmbddi4ga0bppwg3rm3yjmf7jgqc6zfslmavnr1pglbzkjhy9fs"))))
+        (base32 "1pg0djhg4p32vxfwf6bfals31zf93m56fx1x4q5jhhdwmll7xl6w"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -432,7 +432,7 @@ following formats:
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-desktop-file
            (lambda _
-             (substitute* "data/com.github.geigi.cozy.desktop.in"
+             (substitute* "data/com.github.geigi.cozy.desktop"
                (("Exec=com.github.geigi.cozy") "Exec=cozy"))
              #t))
          (add-after 'install 'patch-executable-name
@@ -477,7 +477,7 @@ following formats:
        ("gst-plugins-good" ,gst-plugins-good)
        ("gst-plugins-ugly" ,gst-plugins-ugly)
        ("gtk+" ,gtk+)
-       ("python-apsw" ,python-apsw)
+       ("libhandy" ,libhandy)
        ("python-distro" ,python-distro)
        ("python-gst" ,python-gst)
        ("python-mutagen" ,python-mutagen)
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index d91c086581..953b99778e 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -140,7 +140,7 @@ of categories with some of the activities available in that category.
 (define-public gcompris-qt
   (package
     (name "gcompris-qt")
-    (version "0.98")
+    (version "1.0")
     (source
      (origin
        (method url-fetch)
@@ -148,22 +148,19 @@ of categories with some of the activities available in that category.
              "https://gcompris.net/download/qt/src/gcompris-qt-"
              version ".tar.xz"))
        (sha256
-        (base32 "1jmjykn0lpk0v6hs2flmch8v4da5bgxl891nav7szxw9l7aqnf4y"))))
+        (base32 "08dw1q0h4qz2q0ksa5pbmb9v60hr1zv9skx6z8dlq9b1i7harnds"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-test
-           (lambda _
-             (substitute* "tests/core/CMakeLists.txt"
-               (("DownloadManagerTest\\.cpp") "#"))
-             #t))
          (add-before 'check 'start-xorg-server
            (lambda* (#:key inputs #:allow-other-keys)
              ;; The test suite requires a running X server.
              (system (string-append (assoc-ref inputs "xorg-server")
                                     "/bin/Xvfb :1 &"))
              (setenv "DISPLAY" ":1")
+             ;; The test suite wants to write to /homeless-shelter
+             (setenv "HOME" (getcwd))
              #t))
          (add-after 'install 'wrap-executable
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -192,7 +189,7 @@ of categories with some of the activities available in that category.
        ("xorg-server" ,xorg-server-for-tests)))
     (inputs
      `(("openssl" ,openssl)
-       ("python-2" ,python-2)
+       ("python" ,python-wrapper)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
@@ -217,7 +214,8 @@ Currently available boards include:
 @item reading practice
 @item small games (memory games, jigsaw puzzles, ...)
 @end enumerate\n")
-    (license license:gpl3+)))
+    (license (list license:silofl1.1    ; bundled fonts
+                   license:gpl3+))))
 
 (define-public tipp10
   (package
@@ -275,7 +273,7 @@ easy.")
 (define-public snap
   (package
     (name "snap")
-    (version "6.2.1")
+    (version "6.3.3")
     (source
      (origin
        (method git-fetch)
@@ -284,7 +282,7 @@ easy.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "163pskgrssw0l6c73lrdx613fridnv0162lscl4xqx9sgg7hfaxh"))))
+        (base32 "0zlyk241s6sh5zaqrvfpg4lx7jdifajsdf6c9qhh77vxxh5gwzrc"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -613,14 +611,14 @@ Portuguese, Spanish and Italian.")
 (define-public fet
   (package
     (name "fet")
-    (version "5.47.0")
+    (version "5.48.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.lalescu.ro/liviu/fet/download/"
                            "fet-" version ".tar.bz2"))
        (sha256
-        (base32 "1a4mzzd6qy7hpb3yvmf922dbrqrzacz60ld8dsds78m018jf9gaj"))))
+        (base32 "12bd53r841r8zsn3v1kzws2qar908p6g6mlnm50kmjkxramr63ga"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -956,7 +954,7 @@ floating through space.")
 (define-public mdk
   (package
     (name "mdk")
-    (version "1.2.11")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
@@ -964,7 +962,7 @@ floating through space.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0rrac91ynya4jrhv14j9vvn21c5z80hi1zmmdxjb0d9zz6i7kjgb"))))
+         "0bhk3c82kyp8167h71vdpbcr852h5blpnwggcswqqwvvykbms7lb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-gui=yes" "-with-readline=yes")))
@@ -979,7 +977,7 @@ floating through space.")
        ("ncurses" ,ncurses)
        ("pango" ,pango)
        ("readline" ,readline)))
-    (home-page "https://www.gnu.org/software/mdk/")
+    (home-page "https://www.gnu.org/software/mdk/manual/")
     (synopsis "Virtual development environment for Knuth's MIX")
     (description
      "GNU MDK is the Mix Development Kit, an emulation of the pedagogical
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index da11838ea9..464d21259a 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -35,7 +35,7 @@
 ;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
 ;;; Copyright © 2018, 2019 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2018, 2019, 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2018, 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
@@ -81,6 +81,11 @@
 ;;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net>
 ;;; Copyright © 2020 Marco Grassi <marco.au.grassi98@protonmail.com>
 ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
+;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2020 Adam Kandur <rndd@tuta.io>
+;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
+;;; Copyright © 2020 Noah Landis <noahlandis@posteo.net>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -400,6 +405,15 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
          (sha256
           (base32 "01ysb9pnscpmingay6njdywkqgj4hn5l5d9igsg3x7p7061jwwix"))))
       (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'install 'make-info
+             (lambda _
+               (invoke "makeinfo" "--no-split"
+                       "-o" "with-editor.info" "with-editor.texi"))))))
+      (native-inputs
+       `(("texinfo" ,texinfo)))
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)))
       (home-page "https://github.com/magit/with-editor")
@@ -662,16 +676,16 @@ process, passing on the arguments as command line arguments.")
 (define-public emacs-minions
   (package
     (name "emacs-minions")
-    (version "0.3.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/tarsius/minions")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "16rplpbfy3dnvqqgavk9jb1f1ihr5875zlixd4zxb1pqxs3jkgw3"))))
+    (version "0.3.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tarsius/minions")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1rvsfg9aabvyzzxd38kvjwkm9675zcmrfhzj5x6wj0ba3n0k34q5"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -737,6 +751,30 @@ then only the color of the mode line changes when a window becomes in-/active.")
 clojure.walk and clojure.zip respectively.")
     (license license:gpl3+)))
 
+(define-public emacs-typing
+  (let ((commit "a2ef25dde2d8eb91bd9c0c6164cb5208208647fa")
+        (revision "0"))
+    (package
+      (name "emacs-typing")
+      (version (git-version "1.1.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/kensanata/typing")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1dbh0srbf54lgd60ia79y9cfnq3kxlgw01qzdjs9mk3nfazzpgnv"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/kensanata/typing/")
+      (synopsis "Emacs game where you have to type fast")
+      (description "The Typing of Emacs is a game for Emacs that
+forces you to type words correctly as fast as possible, otherwise
+you will die.  The game builds the list of words from the active buffer.")
+      (license license:gpl2+))))
+
 (define-public emacs-graphql
   (package
     (name "emacs-graphql")
@@ -767,6 +805,34 @@ GraphQL is a data query language and runtime designed and used to request and
 deliver data to mobile and web apps.")
     (license license:gpl3+)))
 
+(define-public emacs-graphql-mode
+  ;; No tagged commit.
+  (let ((commit "9bed568ec86242dbe30bdbab324aa0eb2cd9bf08")
+        (revision "1"))
+    (package
+      (name "emacs-graphql-mode")
+      (version commit)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/davazp/graphql-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0x9y7qq6y0zg8ncamzvk68ccmdyzh7xsj0xs0ykyl20d5wdpplj4"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/davazp/graphql-mode")
+      (synopsis "Emacs mode to edit GraphQL schema and queries")
+      (description
+       "This package implements a major mode to edit GraphQL schemas and
+query.  The basic functionality includes syntax highlight and indentation.
+Additionally, it is able to send GraphQL queries to an end-point URL.
+
+Files with the @file{.graphql} and @file{.gql} extensions are
+automatically opened with this mode.")
+      (license license:gpl3+))))
+
 (define-public emacs-ghub
   (package
     (name "emacs-ghub")
@@ -899,6 +965,33 @@ using the Buffers User Interface library.  You can view, copy, and edit secrets
 from within Emacs.")
     (license license:gpl3+)))
 
+(define-public emacs-solidity
+  ;; This commit fixes a spacing issue and adds new keywords.
+  (let ((commit "d166a86b83907e0cfd64c191e9dfce4b44a9843e")
+        (revision "0"))
+    (package
+      (name "emacs-solidity")
+      (version (git-version "0.1.10" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ethereum/emacs-solidity")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "19hgvsrqch2vp49ag6m76bi5qxd20v95z0ib838rib9as15b17wq"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)
+         ("emacs-flycheck" ,emacs-flycheck)))
+      (home-page "https://github.com/ethereum/emacs-solidity")
+      (synopsis "Major mode for writing Solidity code")
+      (description
+       "This is a simple language mode for the Solidity language.  It is
+a constant work in progress as the language itself also progresses.")
+      (license license:gpl3+))))
+
 (define-public emacs-unpackaged-el
   (let ((commit "746801a677ada6cd6fa076e423aa0953779f3fad")
         (revision "3"))
@@ -1287,7 +1380,7 @@ terminals.")
 (define-public emacs-reformatter
   (package
     (name "emacs-reformatter")
-    (version "0.4")
+    (version "0.6")
     (source
      (origin
        (method git-fetch)
@@ -1296,8 +1389,7 @@ terminals.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0hhy6x1bkwlhdlarsgm06g3am4yh02yqv8qs34szpzgy53x84qah"))))
+        (base32 "1dfn7c3gpavpiwd73v2pasd8wd8b62dczhg9iv1cgh8vaqlsf92x"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/reformatter.el")
     (synopsis "Define commands which run reformatters on the current buffer")
@@ -1524,14 +1616,14 @@ incrementally confined in Isearch manner.")
 (define emacs-emms-print-metadata
   (package
     (name "emacs-emms-print-metadata")
-    (version "5.42")
+    (version "6.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "emms-" version ".tar"))
        (sha256
-        (base32 "1khx1fvllrs6w9kxk12mp1hj309c90mc7lkq1vvlqlr7vd6zmnpj"))))
+        (base32 "0d95sjrh9vpl41vz26y8clgji987z15lj4ky2kr9yrl0zpa8yv35"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("emms-print-metadata")
@@ -1569,7 +1661,7 @@ light user interface.")
        (modify-phases %standard-phases
          (add-after 'unpack 'set-external-programs
            ;; Specify the absolute file names of the various programs
-           ;; so that everything works out-of-the-box.
+           ;; so that everything works out-of-the-box. (tinytag missing)
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out     (assoc-ref outputs "out"))
                    (emms-print-metadata (assoc-ref inputs "emms-print-metadata"))
@@ -1579,6 +1671,7 @@ light user interface.")
                    (mpg321  (assoc-ref inputs "mpg321"))
                    (mp3info (assoc-ref inputs "mp3info"))
                    (mutagen (assoc-ref inputs "mutagen"))
+                   (exiftool (assoc-ref inputs "perl-image-exiftool"))
                    (opus    (assoc-ref inputs "opus-tools")))
                (emacs-substitute-variables "emms-player-mpg321-remote.el"
                  ("emms-player-mpg321-remote-command"
@@ -1612,6 +1705,9 @@ light user interface.")
                (substitute* "emms-tag-editor.el"
                  (("\"mid3v2\"")
                   (string-append "\"" mutagen "/bin/mid3v2\"")))
+               (substitute* "emms-info-exiftool.el"
+                 (("\"exiftool\"")
+                  (string-append "\"" exiftool "/bin/exiftool\"")))
                #t))))))
     (inputs
      `(("emms-print-metadata" ,emacs-emms-print-metadata)
@@ -1621,6 +1717,7 @@ light user interface.")
        ("mpg321" ,mpg321)
        ("mp3info" ,mp3info)
        ("mutagen" ,python-mutagen)
+       ("perl-image-exiftool" ,perl-image-exiftool)
        ("opus-tools" ,opus-tools)))))
 
 (define-public emacs-emms-mode-line-cycle
@@ -1775,12 +1872,12 @@ than @code{electric-indent-mode}.")
     (license license:gpl2+)))
 
 (define-public emacs-gcmh
-  ;; No tagged release upstream.
-  (let ((commit "84c43a4c0b41a595ac6e299fa317d2831813e580")
-        (revision "0"))
+  ;; No tagged release upstream, but the commit below correspond to the 0.2.1
+  ;; release.
+  (let ((commit "0089f9c3a6d4e9a310d0791cf6fa8f35642ecfd9"))
     (package
       (name "emacs-gcmh")
-      (version (git-version "0.1" revision commit))
+      (version "0.2.1")
       (source
        (origin
          (method git-fetch)
@@ -1788,7 +1885,7 @@ than @code{electric-indent-mode}.")
                (url "https://gitlab.com/koral/gcmh")
                (commit commit)))
          (sha256
-          (base32 "1r3wiqhrzh7wvqy484nl031fd4bn4cpvkv9646s4cjgvnnnv7jz3"))
+          (base32 "0yh1ap8phv3x44rp0yr6z884xqw2apanbx4c0acqglvj0gaaqx25"))
          (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (home-page "https://gitlab.com/koral/gcmh")
@@ -1803,7 +1900,7 @@ is set.")
 (define-public emacs-ctrlf
   (package
     (name "emacs-ctrlf")
-    (version "1.1")
+    (version "1.2")
     (source
      (origin
        (method git-fetch)
@@ -1812,7 +1909,7 @@ is set.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ffcjf0ff0748gqipkklz6jmcj4f3blgzdcax93ql9ws8bmvlsdc"))))
+        (base32 "1f0k3432brc96am6az6xr1nks1vacqzixhdgwfn2xklb8if9a5xi"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/raxod502/ctrlf/")
     (synopsis "Single-buffer text search in Emacs")
@@ -1955,14 +2052,14 @@ as a library for other Emacs packages.")
 (define-public emacs-auctex
   (package
     (name "emacs-auctex")
-    (version "12.2.5")
+    (version "12.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "auctex-" version ".tar"))
        (sha256
-        (base32 "1288n0yna36g2h15gk34gvllifx4qms48355j8l2cafabvkffiph"))))
+        (base32 "0kn48mmsvp1yp8fjcl4lriymhyskv5s70wscmf596xf56s7mqas4"))))
     (build-system emacs-build-system)
     ;; We use 'emacs' because AUCTeX requires dbus at compile time
     ;; ('emacs-minimal' does not provide dbus).
@@ -2142,7 +2239,7 @@ Lock key.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/contrapunctus-1/chronometrist.git")
+             (url "https://github.com/contrapunctus-1/chronometrist")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2508,14 +2605,14 @@ filters, new key bindings and faces.  It can be enabled by
 (define-public emacs-djvu
   (package
     (name "emacs-djvu")
-    (version "1.1")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "djvu-" version ".el"))
        (sha256
-        (base32 "0njgyx09q225hliacsnjk8wallg5i6xkz6bj501pb05nwqfbvfk7"))))
+        (base32 "0z2qk1v4qkvcwl27ycqfb8vyszq5v6b8ci29b4la00yaki16p04i"))))
     (build-system emacs-build-system)
     (inputs `(("djview" ,djview)
               ("djvulibre" ,djvulibre)))
@@ -2952,6 +3049,66 @@ graphical tree presentation of all previous states of buffer that
 allows easily move between them.")
     (license license:gpl3+)))
 
+(define-public emacs-undo-fu
+  ;; There are no tagged releases upstream on gitlab, instead we are using
+  ;; the most recent commit.
+  (let ((commit "c0806c1903c5a0e4c69b6615cdc3366470a9b8ca")
+        (revision "0"))
+    (package
+      (name "emacs-undo-fu")
+      (version (git-version "0.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/ideasman42/emacs-undo-fu")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1n594aakmcgyl7qbda86v4wsx8clm62ypiv3h559xz3x72h7mr3j"))))
+      (build-system emacs-build-system)
+      (home-page "https://gitlab.com/ideasman42/emacs-undo-fu")
+      (synopsis "Simple, stable linear undo with redo for Emacs")
+      (description
+       "This is a light weight wrapper for Emacs built-in undo system,
+adding convenient undo/redo without losing access to the full undo history,
+allowing you to visit all previous states of the document if you need.")
+      (license license:gpl3+))))
+
+(define-public emacs-undo-fu-session
+  ;; There are no tagged releases upstream on gitlab, instead we are using the
+  ;; most recent commit.
+  (let ((commit "56cdd3538a058c6916bdf2d9010c2179f2505829")
+        (revision "0"))
+    (package
+      (name "emacs-undo-fu-session")
+      (version (git-version "0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/ideasman42/emacs-undo-fu-session")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "04wq1alrzzlidcb4mjb5j7pg68pks1vgv7kvvmi6dzb3l602mb2a"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:tests? #t
+         #:test-command '("emacs" "--batch" "-l" "undo-fu-session.el"
+                          "-l" "undo-fu-session-test.el")
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'set-home
+             (lambda _
+               (setenv "HOME" "/tmp")
+               #t)))))
+      (home-page "https://gitlab.com/ideasman42/emacs-undo-fu-session")
+      (synopsis "Save & recover undo steps between Emacs sessions")
+      (description "This package writes undo/redo information upon file save
+which is restored where possible when the file is loaded again.")
+      (license license:gpl3+))))
+
 (define-public emacs-s
   (package
     (name "emacs-s")
@@ -3560,7 +3717,7 @@ result.")
 (define-public emacs-rg
   (package
     (name "emacs-rg")
-    (version "1.8.1")
+    (version "2.0.2")
     (source
      (origin
        (method git-fetch)
@@ -3569,7 +3726,7 @@ result.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0k7x5z7mh9flwih35cqy8chs54rack3nswdcpw5wcpgv6xim227y"))))
+        (base32 "15qcnsnbni0aincm9pxpfhff3c5ivd5zs2s2qchjzhcn4kdm6kxr"))))
     (build-system emacs-build-system)
     (arguments
      '(#:phases
@@ -3583,6 +3740,7 @@ result.")
                  ("(defcustom rg-executable" (which "rg")))))))))
     (propagated-inputs
      `(("emacs-s" ,emacs-s)
+       ("emacs-transient" ,emacs-transient)
        ("emacs-wgrep" ,emacs-wgrep)))
     (inputs
      `(("ripgrep" ,ripgrep)))
@@ -3823,8 +3981,8 @@ in Lisp modes.")
       (license license:gpl3+))))
 
 (define-public emacs-literate-calc-mode
-  (let ((commit "e855bd718fa7d0d70b8f43264e10664369dd3a37")
-        (revision "0"))
+  (let ((commit "a50e897a816cb5580ad6ec867eeaae212e0e4798")
+        (revision "1"))
     (package
       (name "emacs-literate-calc-mode")
       (version (git-version "0.1" revision commit))
@@ -3836,7 +3994,7 @@ in Lisp modes.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0mk4cig8g8ibz97mvyan79fkypyanh7r0h7h20ibafq09nb0mw01"))))
+          (base32 "0z6y5f1rj28lbr30m6g4a9l6ahs66whi8861g4cx9xzhs84nwv5g"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-s" ,emacs-s)))
@@ -4467,7 +4625,7 @@ compile}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/purcell/flycheck-ledger.git")
+             (url "https://github.com/purcell/flycheck-ledger")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4846,10 +5004,45 @@ front-ends.  Company comes with many back-ends, e.g., @code{company-elisp}.
 These are distributed in separate files and can be used individually.")
     (license license:gpl3+)))
 
+(define-public emacs-company-box
+  ;; There is no release yet.  Version is extracted from the main
+  ;; file.
+  (let ((version "0.0.1")
+        (revision "0")
+        (commit "be37a9a30dc112ab172af21af694e2cb04a74f85"))
+    (package
+      (name "emacs-company-box")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sebastiencs/company-box")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "13fgmdy51gqdwijqfvb784pirx4lgva0y7ysi0c3fcx8f82cdj59"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)
+         ("emacs-dash" ,emacs-dash)
+         ("emacs-frame-local" ,emacs-frame-local)))
+      (home-page "https://github.com/sebastiencs/company-box")
+      (synopsis "Company front-end with icons")
+      (description
+       "Company box is a Company front-end.  It supports different
+colors for different backends, associates icons to functions,
+variables... and their backends, and displays candidate's
+documentation.  It is not limited by the current window size or
+buffer's text properties.
+
+This package is not compatible with a TTY.")
+      (license license:gpl3+))))
+
 (define-public emacs-company-posframe
   (let ((version "0.1.0")
-        (revision "1")
-        (commit "67d899502384fb9ab2870aba0af41523dea7b64f"))
+        (revision "2")
+        (commit "4bfb8bccef4b64479f4147de6bf6fbd05df2a67e"))
     (package
       (name "emacs-company-posframe")
       (version (git-version version revision commit))
@@ -4861,7 +5054,7 @@ These are distributed in separate files and can be used individually.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "051smlvz1siwglsd9k9l0m20mygrx4niflmyshha0064287aysxr"))))
+                  "0k19gkh8xbap4j1jjqw6lnkp1v2q76fz3ryrns7kvbzmca3y5599"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-company" ,emacs-company)
@@ -6561,6 +6754,33 @@ background of file-visiting buffers (and certain aspects of the UI) to make
 them easier to distinguish from other, less important buffers.")
     (license license:expat)))
 
+(define-public emacs-embark
+  ;; There are no tagged releases upstream on GitHub, instead we are using the
+  ;; most recent commit.
+  (let ((commit "dc20b4e53c4ce1ad91100dfeb093115f2cc0b210")
+        (revision "0"))
+    (package
+      (name "emacs-embark")
+      (version (git-version "0.6" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/oantolin/embark")
+               (commit commit)))
+         (sha256
+          (base32 "1jrvdlwip7zll5ixlnk9l0apr8hj60ysqfc47q3k4hhfyl9rawbq"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-avy" ,emacs-avy)))
+      (home-page "https://github.com/oantolin/embark")
+      (synopsis "Emacs mini-buffer actions rooted in keymaps")
+      (description "This package provides a command embark-act (and a variant
+embark-act-noexit), to execute actions on the top minibuffer completion
+canidate: the one that would be chosen by minibuffer-force-complete.")
+      (license license:gpl3+))))
+
 (define-public emacs-prescient
   (package
     (name "emacs-prescient")
@@ -6589,7 +6809,7 @@ for Ivy and Company that make use of the library.")
 (define-public emacs-selectrum
   (package
     (name "emacs-selectrum")
-    (version "2.0")
+    (version "3.0")
     (source
      (origin
        (method git-fetch)
@@ -6598,7 +6818,7 @@ for Ivy and Company that make use of the library.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08wm4ybidn8g7sy5a009lnsm0f1p7a3jfzpzxnzylvnyrmyhi3y4"))))
+        (base32 "0j10yxlikyg7qxcmp4fnddyd5nc3hlz080d1zcbijq020a08k86g"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/raxod502/selectrum/")
     (synopsis "Incremental narrowing in Emacs")
@@ -6612,6 +6832,29 @@ marginal benefit compared to the additional complexity of a new
 interface.")
     (license license:expat)))
 
+(define-public emacs-orderless
+  (package
+    (name "emacs-orderless")
+    (version "0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oantolin/orderless")
+             (commit version)))
+       (sha256
+        (base32 "032lfwflkpaxbcxl4jf438vapswsdagipjczcn30sc4dfdh3p42c"))
+       (file-name (git-file-name name version))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/oantolin/orderless")
+    (synopsis "Emacs completion style that matches multiple regexps in any order")
+    (description "This package provides an orderless completion style that
+divides the pattern into space-separated components, and matches candidates
+that match all of the components in any order.  Each component can match in
+any one of several ways: literally, as a regexp, as an initialism, in the flex
+style, or as multiple word prefixes.")
+    (license license:gpl3+)))
+
 (define-public emacs-smartparens
   (package
     (name "emacs-smartparens")
@@ -6682,27 +6925,25 @@ regardless of @code{highlight-symbol-idle-delay}.
       (license license:gpl2+))))
 
 (define-public emacs-symbol-overlay
-  (let ((commit "e40a7c407f24158c45eaa5f54ed41f5e416a51dc")
-        (revision "1"))
-    (package
-      (name "emacs-symbol-overlay")
-      (version (git-version "4.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/wolray/symbol-overlay")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0ibz3392d3jw1l8006h9kf8s7bg6vl7jc92bmqc031a433009ic7"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/wolray/symbol-overlay")
-      (synopsis "Highlight symbols and perform various search operations on them")
-      (description
-       "This package provides functions for highlighting and navigating
+  (package
+    (name "emacs-symbol-overlay")
+    (version "4.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wolray/symbol-overlay")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10n0871xzycifyqp73xnbqmrgy60imlb26yhm3p6vfj3d84mg1b2"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/wolray/symbol-overlay")
+    (synopsis "Highlight symbols and perform various search operations on them")
+    (description
+     "This package provides functions for highlighting and navigating
 between symbols.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-hl-todo
   (package
@@ -6914,29 +7155,33 @@ parallel.")
     (license license:gpl3+)))
 
 (define-public emacs-request
-  (package
-    (name "emacs-request")
-    (version "0.3.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/tkf/emacs-request")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl"))))
-    (build-system emacs-build-system)
-    (arguments
-     `(#:tests? #f)) ; requires network access.
-    (propagated-inputs
-     `(("emacs-deferred" ,emacs-deferred)))
-    (home-page "https://github.com/tkf/emacs-request")
-    (synopsis "Package for speaking HTTP in Emacs Lisp")
-    (description "This package provides a HTTP request library with multiple
+  ;; We prefer a more recent commit that has support for auth-source,
+  ;; which makes authentication more convenient for users and maintainers.
+  (let ((commit "d02d1347ffdf138cffd380cbeac62ac8732036ef")
+        (revision "0"))
+    (package
+      (name "emacs-request")
+      (version (git-version "0.3.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/tkf/emacs-request")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1rkpakzish2d470ca15yq3k0m1j7a2lrkvvddcyvc2rx0sncsdjs"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:tests? #f))                  ; requires network access.
+      (propagated-inputs
+       `(("emacs-deferred" ,emacs-deferred)))
+      (home-page "https://github.com/tkf/emacs-request")
+      (synopsis "Package for speaking HTTP in Emacs Lisp")
+      (description "This package provides a HTTP request library with multiple
 backends.  It supports url.el which is shipped with Emacs and the curl command
 line program.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-rudel
   (package
@@ -6992,6 +7237,35 @@ the Hydra very seamless; it's like a minor mode that disables itself
 automatically.")
     (license license:gpl3+)))
 
+(define-public emacs-pretty-hydra
+  (package
+    (name "emacs-pretty-hydra")
+    (version "0.2.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jerrypnz/major-mode-hydra.el")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "08a15knkdq35pzjq82imff016fbfdib5q4glg2xmdy2b5fnk7jqa"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-hydra" ,emacs-hydra)
+       ("emacs-s" ,emacs-s)))
+    (arguments
+     `(#:exclude (cons "^major-mode-hydra\\.el" %default-exclude)))
+    (home-page "https://github.com/jerrypnz/major-mode-hydra.el")
+    (synopsis "Major mode keybindings managed by Hydra")
+    (description
+     "This package offers an hydra-based method of managing major
+mode-specific key bindings.  It is intended for use as a library only; see
+package @code{emacs-major-mode-hydra} for a user-friendly interface.")
+    (license license:gpl3+)))
+
 (define-public emacs-interleave
   (package
     (name "emacs-interleave")
@@ -7014,6 +7288,20 @@ automatically.")
 by side to an Org buffer with your notes relevant to the current page.")
     (license license:gpl3+)))
 
+(define-public emacs-major-mode-hydra
+  (package
+    (inherit emacs-pretty-hydra)
+    (name "emacs-major-mode-hydra")
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-pretty-hydra" ,emacs-pretty-hydra)))
+    (arguments
+     `(#:exclude (cons "^pretty-hydra\\.el" %default-exclude)))
+    (synopsis "Create nice-looking hydras")
+    (description
+     "This package provides the macro @code{pretty-hydra-define} to define
+hydras with one column per group of heads.")))
+
 (define-public emacs-ivy
   (package
     (name "emacs-ivy")
@@ -7179,33 +7467,29 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
       (license license:gpl3+))))
 
 (define-public emacs-ivy-rich
-  ;; The latest release version has a small mistake that has since been fixed,
-  ;; so we use a more recent commit.
-  (let ((commit "7a667b135983a1f3ad33d6db8514638e2a3bdfb3")
-        (revision "2"))
-    (package
-      (name "emacs-ivy-rich")
-      (version (git-version "0.1.4" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/Yevgnen/ivy-rich")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "1v5j6pak2j1wjw19y7rx9rhxif0bj2h47xyl2knfcl6fi4qiqm9y"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-ivy" ,emacs-ivy)))
-      (home-page "https://github.com/Yevgnen/ivy-rich")
-      (synopsis "More friendly interface for @code{ivy}")
-      (description
-       "This package extends @code{ivy} by showing more information in the
-minibuffer for each candidate.  It adds columns showing buffer modes, file
-sizes, docstrings, etc.  If @code{emacs-all-the-icons} is installed, it can
-show icons as well.")
-      (license license:gpl3+))))
+  (package
+    (name "emacs-ivy-rich")
+    (version "0.1.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Yevgnen/ivy-rich")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ra18v6lgz3m6asm6d5b92zn1x22yiz4cwxd9b54dnvwi11121m7"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/Yevgnen/ivy-rich")
+    (synopsis "More friendly interface for @code{ivy}")
+    (description
+     "This package extends Ivy by showing more information in the minibuffer
+for each candidate.  It adds columns showing buffer modes, file sizes,
+docstrings, etc.  If @code{emacs-all-the-icons} is installed, it can show
+icons as well.")
+    (license license:gpl3+)))
 
 (define-public emacs-avy
   (package
@@ -7269,7 +7553,7 @@ highlighted.  Pressing that character will switch to that window.")
   ;; There is no proper release.  The base version is extracted from the
   ;; "Version" keyword in the main file.
   (let ((revision "1")
-	(commit "62c2846bbe95b0a73e996c75e4a644d05f57aaaa"))
+        (commit "62c2846bbe95b0a73e996c75e4a644d05f57aaaa"))
     (package
       (name "emacs-windsize")
       (version (git-version "0.1" revision commit))
@@ -7279,6 +7563,7 @@ highlighted.  Pressing that character will switch to that window.")
          (uri (git-reference
                (url "https://github.com/grammati/windsize")
                (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32 "13kfrmv3vmkfanxv9nym5v43hx5p7xkgqmx65zcxh4gcbaham1mi"))))
       (build-system emacs-build-system)
@@ -7342,63 +7627,68 @@ navigate code in a tree-like fashion.")
     (license license:gpl3+)))
 
 (define-public emacs-lispy
-  (package
-    (name "emacs-lispy")
-    (version "0.27.0")
-    (home-page "https://github.com/abo-abo/lispy")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/abo-abo/lispy")
-                    (commit version)))
-              (sha256
-               (base32
-                "1cm7f4pyl73f3vhkb7ah6bbbrj2sa7n0p31g09k7dy4zgx04bgw6"))
-              (file-name (git-file-name name version))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-ace-window" ,emacs-ace-window)
-       ("emacs-hydra" ,emacs-hydra)
-       ("emacs-iedit" ,emacs-iedit)
-       ("emacs-swiper" ,emacs-swiper)
-       ("emacs-zoutline" ,emacs-zoutline)))
-    (native-inputs
-     `(("emacs-clojure-mode" ,emacs-clojure-mode)
-       ("emacs-undercover" ,emacs-undercover)))
-    (arguments
-     `(#:include (cons* "^lispy-clojure\\.clj$"
-                        "^lispy-python\\.py$"
-                        %default-include)
-       #:phases
-       ;; XXX: one failing test involving python evaluation
-       (modify-phases %standard-phases
-         (add-before 'check 'make-test-writable
-           (lambda _
-             (make-file-writable "lispy-test.el")
-             #t))
-         (add-before 'check 'remove-python-eval-test
-           (lambda _
-             (emacs-batch-edit-file "lispy-test.el"
-               `(progn
-                 (progn
-                  (goto-char (point-min))
-                  (re-search-forward
-                   "ert-deftest lispy-eval-python-str")
-                  (beginning-of-line)
-                  (kill-sexp))
-                 (basic-save-buffer)))
-             #t)))
-       #:tests? #t
-       #:test-command '("make" "test")))
-    (synopsis "Modal S-expression editing")
-    (description
-     "Due to the structure of Lisp syntax it's very rare for the programmer
+  ;; No release since May 2019 and tons of fixes have landed on master.
+  ;; https://github.com/abo-abo/lispy/issues/513
+  (let ((commit "5c8a59ae7dd3dd342e7c86a8c0acdbd13e2989f3"))
+    (package
+      (name "emacs-lispy")
+      (version (git-version "0.27.0" "1" commit))
+      (home-page "https://github.com/abo-abo/lispy")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/abo-abo/lispy")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0738v9bp4dlxbwsnykvc35yh4dl4pvw25jl8srb7r3744ydvgyii"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-ace-window" ,emacs-ace-window)
+         ("emacs-hydra" ,emacs-hydra)
+         ("emacs-iedit" ,emacs-iedit)
+         ("emacs-swiper" ,emacs-swiper)
+         ("emacs-zoutline" ,emacs-zoutline)))
+      (native-inputs
+       `(("which" ,which)
+         ("emacs-clojure-mode" ,emacs-clojure-mode)
+         ("emacs-undercover" ,emacs-undercover)))
+      (arguments
+       `(#:include (cons* "^lispy-clojure\\.clj$"
+                          "^lispy-python\\.py$"
+                          %default-include)
+         #:phases
+         ;; XXX: Some failing tests
+         (modify-phases %standard-phases
+           (add-before 'check 'make-test-writable
+             (lambda _
+               (make-file-writable "lispy-test.el")
+               #t))
+           (add-before 'check 'remove-failing-test
+             (lambda _
+               (emacs-batch-edit-file "lispy-test.el"
+                 `(progn
+                   (dolist (test '("lispy-eval-python-str" "lispy--clojure-dot-object"))
+                    (goto-char (point-min))
+                    (re-search-forward
+                     (concat "ert-deftest " test))
+                    (beginning-of-line)
+                    (kill-sexp))
+                   (basic-save-buffer)))
+               #t)))
+         #:tests? #t
+         ;; Set BEMACS to prevent the test suite from loading straight.el.
+         #:test-command '("make" "test" "BEMACS=emacs -batch")))
+      (synopsis "Modal S-expression editing")
+      (description
+       "Due to the structure of Lisp syntax it's very rare for the programmer
 to want to insert characters right before \"(\" or right after \")\".  Thus
 unprefixed printable characters can be used to call commands when the point is
 at one of these special locations.  Lispy provides unprefixed keybindings for
 S-expression editing when point is at the beginning or end of an
 S-expression.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-lispyville
   (let ((commit "1bf38088c981f5ab4ef2e2684952ab6af96378db")
@@ -7499,7 +7789,7 @@ It is recommended to use @code{clojure-mode} with Paredit or Smartparens.")
 (define-public emacs-epl
   (package
     (name "emacs-epl")
-    (version "0.8")
+    (version "0.9")
     (source
      (origin
        (method git-fetch)
@@ -7508,7 +7798,7 @@ It is recommended to use @code{clojure-mode} with Paredit or Smartparens.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0sjxd5y5hxhrbgfkpwx6m724r3841b53hgc61a0g5zwispw5pmrr"))))
+        (base32 "0d3z5z90ln8ipk1yds1n1p8fj9yyh2kpspqjs7agl38indra3nb4"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/cask/epl")
     (synopsis "Emacs Package Library")
@@ -7530,7 +7820,7 @@ The purpose of this library is to wrap all the quirks and hassle of
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/fuxialexander/counsel-notmuch.git")
+               (url "https://github.com/fuxialexander/counsel-notmuch")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7786,23 +8076,19 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
       (license license:gpl3+))))
 
 (define-public emacs-julia-mode
-  ;; XXX: Upstream version remained stuck at 0.3.  See
-  ;; <https://github.com/JuliaEditorSupport/julia-emacs/issues/46>.
-  (let ((commit "115d4dc8a07445301772da8376b232fa8c7168f4")
-        (revision "1"))
     (package
       (name "emacs-julia-mode")
-      (version (string-append "0.3-" revision "." (string-take commit 8)))
+      (version "0.4")
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/JuliaEditorSupport/julia-emacs")
-               (commit commit)))
+               (commit version)))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0"))))
+           "1w131jb9mhvyjxa0p93iwfhzidgbcs6b8i6jg79yisqb9wchik99"))))
       (build-system emacs-build-system)
       (arguments
        `(#:tests? #t
@@ -7813,7 +8099,7 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
       (synopsis "Major mode for Julia")
       (description "This Emacs package provides a mode for the Julia
 programming language.")
-      (license license:expat))))
+      (license license:expat)))
 
 (define-public emacs-smex
   (package
@@ -8382,7 +8668,7 @@ indentation guides in Emacs:
 (define-public emacs-elpy
   (package
     (name "emacs-elpy")
-    (version "1.34.0")
+    (version "1.35.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -8391,7 +8677,7 @@ indentation guides in Emacs:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1x1z298axbh4xalssnq9nkf2z1sdgmx839vb01xz18kr9lfavx1x"))))
+                "07rdb9w3bxzfr07224awa541xdy116hyc2b3bpl3fc3ikddmbydk"))))
     (build-system emacs-build-system)
     (arguments
      `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include)
@@ -8659,25 +8945,24 @@ that uses the standard completion function completing-read.")
 (define-public emacs-yaml-mode
   (package
     (name "emacs-yaml-mode")
-    (version "0.0.14")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/yoshiki/yaml-mode")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "18g064ardqi1f3xz7j6rs1x9fvv9sn0iq9vgid8c6qvxq7gwj00r"))))
+    (version "0.0.15")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/yoshiki/yaml-mode")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0gsa153yp8lmwrvcc3nzpw5lj037y7q2nm23k5k404r5as4k355l"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/yoshiki/yaml-mode")
     (synopsis "Major mode for editing YAML files")
     (description
-     "Yaml-mode is an Emacs major mode for editing files in the YAML data
-serialization format.  It was initially developed by Yoshiki Kurihara and many
-features were added by Marshall Vandegrift.  As YAML and Python share the fact
-that indentation determines structure, this mode provides indentation and
-indentation command behavior very similar to that of python-mode.")
+     "Yaml mode is an Emacs major mode for editing files in the YAML data
+serialization format.  As YAML and Python share the fact that indentation
+determines structure, this mode provides indentation and indentation command
+behavior very similar to that of Python mode.")
     (license license:gpl3+)))
 
 (define-public emacs-gitlab-ci-mode
@@ -8777,7 +9062,7 @@ ack, ag, helm and pt.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "3.6.5")
+    (version "3.7.0")
     (source
      (origin
        (method git-fetch)
@@ -8786,7 +9071,7 @@ ack, ag, helm and pt.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0yzpb84346v42ig4h0rsnvzmln58ilhc0gsq0ggc7038ypqkdw4d"))))
+        (base32 "0lxq13bsbh7xawgsq08kjm7s28x9yl8mid3538flv5kcc1rv2b9y"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -9047,9 +9332,9 @@ CIDER).")
 ;; There hasn't been a tag or release since 2016, so we take the latest
 ;; commit.
 (define-public emacs-sly
-  (let ((commit "8e22c1f62667434ec1acd1e0c6b7ec1c22dc0958")
-        ;; Update together with sbcl-slynk-boot0.
-        (revision "6"))
+  (let ((commit "68561f1b7b66fa0240766ece836bb04da31ea17d")
+        ;; Update together with sbcl-slynk.
+        (revision "7"))
     (package
       (name "emacs-sly")
       (version (git-version "1.0.0" revision commit))
@@ -9062,7 +9347,7 @@ CIDER).")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "09wyqixsn7k889i54amf8bwjg6iyirp89xmcrgfwal010kh1ixcl"))))
+           "1xwx537dhgclngi6b0faf320i8pnac9309wvmk6z2g6dm3v652ds"))))
       (build-system emacs-build-system)
       (native-inputs
        `(("texinfo" ,texinfo)))
@@ -9365,8 +9650,14 @@ news items, openrc and runscripts.")
            (lambda _
              (substitute* "evil-test-helpers.el"
                (("\\(undo-tree-mode 1\\)") ""))
-             #t)))))
+             #t))
+         (add-before 'install 'make-info
+           (lambda _
+             (with-directory-excursion "doc/build/texinfo"
+                 (invoke "makeinfo" "--no-split"
+                         "-o" "evil.info" "evil.texi")))))))
     (build-system emacs-build-system)
+    (native-inputs `(("texinfo" ,texinfo)))
     (home-page "https://github.com/emacs-evil/evil")
     (synopsis "Extensible Vi layer for Emacs")
     (description
@@ -9376,8 +9667,8 @@ extensions.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-collection
-  (let ((commit "c68aed6a9694836602ada224160bc5b4c0a37919")
-        (revision "15"))
+  (let ((commit "8c256263ad100fecd6246c6c55cbb19dab717c39")
+        (revision "18"))
     (package
       (name "emacs-evil-collection")
       (version (git-version "0.0.3" revision commit))
@@ -9389,7 +9680,7 @@ extensions.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1xhrzl0vy540a572f9fnh5a039bpqsrkv0kh6bqw0rki70w7x0xx"))))
+                  "0hz1yfv5g016dm99bwnibbmyhbi21qlc39ckd7p3s82az89hgf2n"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)
@@ -10067,6 +10358,31 @@ Flx has support for ido (interactively do things) through flx-ido.")
 known loosely as deftheme.  Many mode-specific customizations are included.")
     (license license:gpl3+)))
 
+(define-public emacs-dart-mode
+  (package
+    (name "emacs-dart-mode")
+    (version "1.0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bradyt/dart-mode")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qmdlwjmmqyyb65sqvfpygifai5m0llc815vp0jqwp8ldd8ls172"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-flycheck" ,emacs-flycheck)
+       ("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/bradyt/dart-mode")
+    (synopsis "Emacs mode for the Dart programming language")
+    (description
+     "Dart mode is an Emacs major mode for editing Dart files.  It provides
+basic syntax highlighting and indentation.")
+    (license license:gpl3+)))
+
 (define-public emacs-danneskjold-theme
   (let* ((commit "8733d2fe8743e8a01826ea6d4430ef376c727e57")
          (revision "1"))
@@ -10312,6 +10628,28 @@ provides functions to convert hash tables from and to alists and plists.")
 you to deal with multiple log levels.")
     (license license:gpl3+)))
 
+(define-public emacs-gn-mode
+  (package
+    (name "emacs-gn-mode")
+    (version "0.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lashtear/gn-mode")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0dz5kgzbgsssr38z2kg6m915cvfys42ag1k42bsra3la2pixywfx"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/lashtear/gn-mode")
+    (synopsis "Emacs major mode for editing GN (ninja generator) config files")
+    (description
+     "GN mode is a major mode for editing @acronym{GN,Ninja Generator} config
+files in Emacs.  Files of this type (e.g., @file{BUILD.gn} or @file{*.gni})
+are common in Chromium-derived projects.")
+    (license license:bsd-3)))
+
 (define-public emacs-gntp
   (package
     (name "emacs-gntp")
@@ -10579,46 +10917,42 @@ Yasnippet.")
       (license license:gpl2+))))
 
 (define-public emacs-helm-system-packages
-  ;; There won't be a new release after 1.10.1 until
-  ;; https://github.com/emacs-helm/helm-system-packages/issues/25 is fixed,
-  ;; and latest commits fix import issues with Guix.
-  (let ((commit "6572340f41611ef1991e9612d34d59130957ee4a"))
-    (package
-      (name "emacs-helm-system-packages")
-      (version (git-version "1.10.1" "1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/emacs-helm/helm-system-packages")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0mcz6vkpk12vsyd37xv1rbg4v442sxc3lj8yxskqg294xbdaclz4"))))
-      (build-system emacs-build-system)
-      (inputs
-       `(("recutils" ,recutils)))
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'configure
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((recutils (assoc-ref inputs "recutils")))
-                 ;; Specify the absolute file names of the various
-                 ;; programs so that everything works out-of-the-box.
-                 (substitute* "helm-system-packages-guix.el"
-                   (("recsel") (string-append recutils "/bin/recsel")))))))))
-      (home-page "https://github.com/emacs-helm/helm-system-packages")
-      (synopsis "Helm System Packages is an interface to your package manager")
-      (description "List all available packages in Helm (with installed
+  (package
+    (name "emacs-helm-system-packages")
+    (version "1.10.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-helm/helm-system-packages")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13a8jpj4wwm0yjv8hnsizgjf8wi3r2ap87lyvw7g4c7snp2dydwa"))))
+    (build-system emacs-build-system)
+    (inputs
+     `(("recutils" ,recutils)))
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((recutils (assoc-ref inputs "recutils")))
+               ;; Specify the absolute file names of the various
+               ;; programs so that everything works out-of-the-box.
+               (substitute* "helm-system-packages-guix.el"
+                 (("recsel") (string-append recutils "/bin/recsel")))))))))
+    (home-page "https://github.com/emacs-helm/helm-system-packages")
+    (synopsis "Helm System Packages is an interface to your package manager")
+    (description "List all available packages in Helm (with installed
 packages displayed in their own respective face).  Fuzzy-search, mark and
 execute the desired action over any selections of packages: Install,
 uninstall, display packages details (in Org Mode) or insert details at point,
 find files owned by packages...  And much more, including performing all the
 above over the network.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-helm-org-rifle
   (package
@@ -10855,7 +11189,7 @@ highlights quasi-quoted expressions.")
 (define-public emacspeak
   (package
     (name "emacspeak")
-    (version "52.0")
+    (version "53.0")
     (source
      (origin
        (method url-fetch)
@@ -10863,17 +11197,13 @@ highlights quasi-quoted expressions.")
              "https://github.com/tvraman/emacspeak/releases/download/"
              version "/emacspeak-" version ".tar.bz2"))
        (sha256
-        (base32 "0x5b0s38r5ih2lk7f5hasi9arrgxlmmq5jaddadbxi8in2gw2jzl"))))
+        (base32 "0lasj4ggsh93ingf46n16wxfx5zzxvr1igikbmdqlz3i99j331gs"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list (string-append "prefix="
                                          (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'delete-broken-symlink
-           (lambda _
-             (delete-file "lisp/sudoku.el")
-             #t))
          (replace 'configure
            (lambda _
              (setenv "SHELL" (which "sh"))
@@ -11003,7 +11333,7 @@ abbreviation of the mode line displays (lighters) of minor modes.")
 (define-public emacs-use-package
   (package
     (name "emacs-use-package")
-    (version "2.4")
+    (version "2.4.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -11012,7 +11342,7 @@ abbreviation of the mode line displays (lighters) of minor modes.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"))))
+                "088kl3bml0rs5bkfymgzr15ram9qvy66h1kaisrbkynh0yxvf8g9"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
@@ -11046,14 +11376,14 @@ performance-oriented and tidy.")
 (define-public emacs-leaf
   (package
     (name "emacs-leaf")
-    (version "4.2.5")
+    (version "4.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "leaf-" version ".tar"))
        (sha256
-        (base32 "0y78mp4c2gcwp7dc87wlx3r4hfmap14vvx8gkjc9nkf99qavpnkw"))))
+        (base32 "190sfnnii9jnj8amjkdabd8w9k2xyalhg4h488a5gzjxdzz2s6zi"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/conao3/leaf.el")
     (synopsis "Simplify your init.el configuration, extended use-package")
@@ -11242,6 +11572,59 @@ constructs.")
 configuration of Chinese fonts.")
     (license license:gpl2+)))
 
+(define-public emacs-boon
+  (package
+    (name "emacs-boon")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jyp/boon")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ss9bjs34q41pa0g0nbdzd8fwpjcbd2239rdlx5aykfv9v0b8j77"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-expand-region" ,emacs-expand-region)
+       ("emacs-multiple-cursors" ,emacs-multiple-cursors)
+       ("emacs-powerline" ,emacs-powerline)
+       ("emacs-spaceline" ,emacs-spaceline)))
+    (home-page "https://github.com/jyp/boon")
+    (synopsis "Ergonomic command mode for Emacs")
+    (description "Boon is a complete package for modal editing with a focus on
+ergonomics and modularity.  Spacial allocation of keys comes first, mnemonics
+second.  Most common operations are mapped to the home row, common editing
+commands are bound to keys reachable with the left hand and movement keys are
+reached with the right hand.")
+    (license license:gpl3+)))
+
+(define-public emacs-csharp-mode
+  (package
+    (name "emacs-csharp-mode")
+    (version "0.10.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/josteink/csharp-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0vwkbla2gkfa9dzxfvrvr7hd2z16769iwbycl7k6l701dnwli1fw"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/josteink/csharp-mode")
+    (synopsis "Major mode for C# code")
+    (description
+     "This is a C# editing mode for Emacs, based on CC mode.  It handles
+syntax coloring, indentation, insertion of matched pairs of curly braces and
+documentation generation.  In addition, it provides menu-based navigation
+using Imenu, and Compilation mode support for MSBuild, devenv and xbuild.")
+    ;; XXX: Project switched to GPL3+ after 0.10.0 release.
+    (license license:gpl2+)))
+
 (define-public emacs-php-mode
   (package
     (name "emacs-php-mode")
@@ -11341,14 +11724,14 @@ and cangjie.")
 (define-public emacs-posframe
   (package
     (name "emacs-posframe")
-    (version "0.8.1")
+    (version "0.8.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "posframe-" version ".el"))
        (sha256
-        (base32 "01s9lc1liaxfpnfw183a320blp7cv6qg8gh2r22w4wkzi1yrcbb7"))))
+        (base32 "05m56aw2yxik0pgcvyr5c92j2mwfksxgq1syzvik6161gy8hdd0g"))))
     (build-system emacs-build-system)
     ;; emacs-minimal does not include the function font-info.
     (arguments
@@ -11747,7 +12130,7 @@ pressed simultaneously or a single key quickly pressed twice.")
 (define-public emacs-evil-surround
   (package
     (name "emacs-evil-surround")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method git-fetch)
@@ -11756,7 +12139,7 @@ pressed simultaneously or a single key quickly pressed twice.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "15v2spg5rhddr97pxjfvxj36sh7knp753a9qpw8v5zjnp65kf2kn"))))
+        (base32 "1gfgmr4909m36gknprcam6q4rkcqfbi6w43ky7x6jnlmgb6mxggg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -11946,7 +12329,7 @@ running tests easier.")
 (define-public emacs-disable-mouse
   (package
     (name "emacs-disable-mouse")
-    (version "0.2")
+    (version "0.3")
     (source
      (origin
        (method git-fetch)
@@ -11955,7 +12338,7 @@ running tests easier.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1v1y5hf6k6ng7xsvgb27nh740d14m6l4krr0paccda8zgm4mw357"))))
+        (base32 "0l6mai68ns3qw3rlvjvzsnqwdy7bxqiy0vdwflq0l1plxb1vazyc"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/disable-mouse")
     (synopsis "Disable mouse commands globally")
@@ -12057,14 +12440,14 @@ highlighting.")
 (define-public emacs-jsonrpc
   (package
     (name "emacs-jsonrpc")
-    (version "1.0.12")
+    (version "1.0.14")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "jsonrpc-" version ".el"))
        (sha256
-        (base32 "0cqp05awikbrn88ifld3vwnv6cxgmr83wlnsvxw8bqb96djz70ad"))))
+        (base32 "069l0sqkambam4ikj9id36kdw1jdjna8v586d51m64hiz96rmvm6"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/jsonrpc.html")
     (synopsis "JSON-RPC library")
@@ -12362,7 +12745,7 @@ when browsing files with Dired.")
 (define-public emacs-org-edit-latex
   (package
     (name "emacs-org-edit-latex")
-    (version "0.8.0")
+    (version "0.8.3")
     (source
      (origin
        (method git-fetch)
@@ -12371,18 +12754,16 @@ when browsing files with Dired.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zcllyhx9n9vcr5w87h0hfz25v52lvh5fi717cb7mf3jh89zh842"))))
+        (base32 "1w0lyz71dq8x28ira4hig1b70bqn1dr53w3k5dgch9szcf6xa86y"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-auctex" ,emacs-auctex)
-       ;; The version of org in Emacs 25.2 is not sufficient, because the
-       ;; `org-latex-make-preamble' function is required.
        ("emacs-org" ,emacs-org)))
     (home-page "https://github.com/et2010/org-edit-latex")
-    (synopsis "Edit a latex fragment just like editing a src block")
-    (description "@code{emacs-org-edit-latex} is an extension for org-mode.
-It lets you edit a latex fragment in a dedicated buffer just like editing a
-src block.")
+    (synopsis "Edit a LaTeX fragment just like editing a source block")
+    (description
+     "Org Edit LaTeX is an extension for Org mode.  It lets you edit a LaTeX
+fragment in a dedicated buffer just like editing a source block.")
     (license license:gpl3+)))
 
 (define-public emacs-emamux
@@ -12453,31 +12834,29 @@ functions written in continuation-passing style.")
     (license license:gpl3+)))
 
 (define-public emacs-attrap
-  (let ((commit "18cd1f7832870a36c404e872fa83a271fe8e688d")
-        (revision "2"))
-    (package
-      (name "emacs-attrap")
-      (version (git-version "1.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/jyp/attrap")
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "078391949h0fgmshin8f79a1a595m06ig577rkgjqgngcp0d61l9"))
-                (file-name (git-file-name name version))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-dash" ,emacs-dash)
-         ("emacs-f" ,emacs-f)
-         ("emacs-flycheck" ,emacs-flycheck)
-         ("emacs-s" ,emacs-s)))
-      (home-page "https://github.com/jyp/attrap")
-      (synopsis "Fix coding error at point")
-      (description "This package provides a command to fix the Flycheck error
+  (package
+    (name "emacs-attrap")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jyp/attrap")
+             (commit version)))
+       (sha256
+        (base32 "0wqc7bqx9rvk8r7fd3x84h8p01v97s6w2jf29nnjb59xakwp22i7"))
+       (file-name (git-file-name name version))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-f" ,emacs-f)
+       ("emacs-flycheck" ,emacs-flycheck)
+       ("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/jyp/attrap")
+    (synopsis "Fix coding error at point")
+    (description "This package provides a command to fix the Flycheck error
 at point.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-git-messenger
   (package
@@ -13086,16 +13465,16 @@ contexts.
 (define-public emacs-polymode
   (package
     (name "emacs-polymode")
-    (version "0.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/polymode/polymode")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "04v0gnzfsjb50bgly6kvpryx8cyzwjaq2llw4qv9ijw1l6ixmq3b"))))
+    (version "0.2.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/polymode/polymode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/polymode/polymode")
     (synopsis "Framework for multiple Emacs modes based on indirect buffers")
@@ -13108,38 +13487,59 @@ literate programming tools for exporting, weaving and tangling.")
     (license license:gpl3+)))
 
 (define-public emacs-polymode-ansible
-  (let ((commit "b26094d029e25dc797b94254f797e7807a57e4c8"))
+  (package
+    (name "emacs-polymode-ansible")
+    (version "0.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/mavit/poly-ansible")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0f0yq6gmkp194nxk90ipprglf1xkmxrgz1rkgrhfslvxq4q2l81h"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ansible-doc" ,emacs-ansible-doc)
+       ("emacs-jinja2-mode" ,emacs-jinja2-mode)
+       ("emacs-polymode" ,emacs-polymode)
+       ("emacs-yaml-mode" ,emacs-yaml-mode)))
+    (properties '((upstream-name . "poly-ansible")))
+    (home-page "https://gitlab.com/mavit/poly-ansible/")
+    (synopsis "Polymode for Ansible - Jinja2 in YAML")
+    (description
+     "Edit YAML files for Ansible containing embedded Jinja2 templating.")
+    (license license:gpl3+)))
+
+(define-public emacs-powershell
+  ;; Tagged branch 0.1 is outdated (2015).
+  (let ((revision "0")
+        (commit "d1b3f95669343399f199f291ef76c09a0ede5e60"))
     (package
-      (name "emacs-polymode-ansible")
-      ;; No upstream version release yet.
-      (version (git-version "0.1" "1" commit))
+      (name "emacs-powershell")
+      (build-system emacs-build-system)
+      (version (git-version "0.3" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://gitlab.com/mavit/poly-ansible")
-               (commit commit)))
+	       (url "https://github.com/jschaf/powershell.el")
+	       (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32
-           "055shddqibib3hx2ykwdz910nrqws40cd407mq946l2bf6v87gj6"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-ansible-doc" ,emacs-ansible-doc)
-         ("emacs-jinja2-mode" ,emacs-jinja2-mode)
-         ("emacs-polymode" ,emacs-polymode)
-         ("emacs-yaml-mode" ,emacs-yaml-mode)))
-      (properties '((upstream-name . "poly-ansible")))
-      (home-page "https://gitlab.com/mavit/poly-ansible/")
-      (synopsis "Polymode for Ansible - Jinja2 in YAML")
+          (base32 "1cxhzaaig88zhylyycvb3849r85j1ijqklnh9zbqsfl2zhpb0g5c"))))
+      (home-page "https://github.com/jschaf/powershell.el")
+      (synopsis "Emacs mode for editing PowerShell scripts")
       (description
-       "Edit YAML files for Ansible containing embedded Jinja2 templating.")
+       "Powershell is an Emacs major mode for editing and running
+Microsoft PowerShell files.")
       (license license:gpl3+))))
 
 (define-public emacs-polymode-org
   (package
     (name "emacs-polymode-org")
-    (version "0.2")
+    (version "0.2.2")
     (source
      (origin
        (method git-fetch)
@@ -13148,8 +13548,7 @@ literate programming tools for exporting, weaving and tangling.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "04x6apjad4kg30456z1j4ipp64yjgkcaim6hqr6bb0rmrianqhck"))))
+        (base32 "1srnwcsn2bh8gqzxixkhffk7gbnk66kd4dgvxbnps5nxqc6v0qhc"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-polymode" ,emacs-polymode)))
@@ -13157,10 +13556,9 @@ literate programming tools for exporting, weaving and tangling.")
     (home-page "https://github.com/polymode/poly-org")
     (synopsis "Polymode definitions for Org mode buffers")
     (description
-     "Provides definitions for @code{emacs-polymode} to support
-@code{emacs-org} buffers.  Edit source blocks in an Org mode buffer using the
-native modes of the blocks' languages while remaining inside the primary Org
-buffer.")
+     "This package provides definitions for Polymode to support Org buffers.
+It edits source blocks in an Org buffer using the native modes of the blocks'
+languages while remaining inside the primary Org buffer.")
     (license license:gpl3+)))
 
 (define-public eless
@@ -13218,7 +13616,7 @@ Features:
 (define-public emacs-evil-matchit
   (package
     (name "emacs-evil-matchit")
-    (version "2.3.4")
+    (version "2.3.9")
     (source
      (origin
        (method git-fetch)
@@ -13227,7 +13625,7 @@ Features:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1nflkmx08n3ya5vaipy1xg19hnqcp6f7ddsx9xjh5gl6ix2iz0az"))))
+        (base32 "1jk5qkqz3c4fnh6d2y889k5ycz8ipbkmzk4i8bl86xv9rhis1pv9"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -13757,15 +14155,14 @@ Anzu.zim.")
 (define-public emacs-ascii-art-to-unicode
   (package
     (name "emacs-ascii-art-to-unicode")
-    (version "1.12")
+    (version "1.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/ascii-art-to-unicode-"
                            version ".el"))
        (sha256
-        (base32
-         "1w9h2lyriafxj71r79774gh822cz8mry3gdfzyj6ym6v9mvqypna"))))
+        (base32 "1c0jva3amhl9c5xc5yzdpi58c8m1djym4ccj31z6wmakq7npy07p"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/ascii-art-to-unicode.html")
     (synopsis "ASCII to Unicode art converter for Emacs")
@@ -13997,31 +14394,6 @@ match and total match information in the mode-line in various search modes.")
        "This package provides an Emacs Lisp interface for PostgreSQL.")
       (license license:gpl3+))))
 
-(define-public emacs-cl-generic
-  (package
-    (name "emacs-cl-generic")
-    (version "0.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://elpa.gnu.org/packages/cl-generic-"
-                           version ".el"))
-       (sha256
-        (base32
-         "0vb338bhjpsnrf60qgxny4z5rjrnifahnrv9axd4shay89d894zq"))))
-    (build-system emacs-build-system)
-    ;; Byte compilation of the autoload file fails.
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'enable-autoloads-compilation))))
-    (home-page "https://elpa.gnu.org/packages/seq.html")
-    (synopsis
-     "Forward @code{cl-generic} compatibility for Emacs before version 25")
-    (description "This package provides a subset of the features of the
-@code{cl-generic} package introduced in Emacs-25, for use on previous
-@code{emacsen}.")
-    (license license:gpl3+)))
-
 (define-public emacs-finalize
   (package
   (name "emacs-finalize")
@@ -14036,8 +14408,6 @@ match and total match information in the mode-line in various search modes.")
       (sha256
         (base32 "1gvlm4i62af5jscwz0jccc8ra0grprxpg2rlq91d5nn8dn5lpy79"))))
   (build-system emacs-build-system)
-  (propagated-inputs
-    `(("emacs-cl-generic" ,emacs-cl-generic)))
   (home-page "https://github.com/skeeto/elisp-finalize")
   (synopsis "Finalizers for Emacs Lisp")
   (description
@@ -14166,33 +14536,31 @@ official @command{sqlite3} executable to access SQL database.")
     (license license:gpl3+)))
 
 (define-public emacs-closql
-  ;; Take a commit newer than 1.0.0 release because of Emacs upgrade to 26.3.
-  (let ((commit "70b98dbae53611d10a461d9b4a6f71086910dcef"))
-    (package
-      (name "emacs-closql")
-      (version (git-version "1.0.0" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/emacscollective/closql")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1wvhrihg663f61yzc7f0vha2abjdnlwbk0gjcwakdfk1bhwf5ikh"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-emacsql" ,emacs-emacsql)))
-      (home-page "https://github.com/emacscollective/closql")
-      (synopsis "Store EIEIO objects using EmacSQL")
-      (description
-       "This package stores uniform EIEIO objects in an EmacSQL
+  (package
+    (name "emacs-closql")
+    (version "1.0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacscollective/closql")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "06j0sc6dx8f34wc8i7dzkp8jwvwnrpnl8i93vpc1qw0ih0jwa2zh"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-emacsql" ,emacs-emacsql)))
+    (home-page "https://github.com/emacscollective/closql")
+    (synopsis "Store EIEIO objects using EmacSQL")
+    (description
+     "This package stores uniform EIEIO objects in an EmacSQL
 database.  SQLite is used as backend.  This library imposes some restrictions
 on what kind of objects can be stored; it isn't intended to store arbitrary
 objects.  All objects have to share a common superclass and subclasses cannot
 add any additional instance slots.")
-      (license license:gpl3))))
+    (license license:gpl3)))
 
 (define-public emacs-epkg
   (package
@@ -14843,7 +15211,7 @@ and @code{erc-send-modify-hook} to download and show images.")
 (define-public emacs-list-utils
   (package
     (name "emacs-list-utils")
-    (version "0.4.4")
+    (version "0.4.6")
     (source
      (origin
        (method git-fetch)
@@ -14852,13 +15220,41 @@ and @code{erc-send-modify-hook} to download and show images.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ql159v7sxs33yh2l080kchrj52vk34knz50cvqi3ykpb7djg3sz"))))
+        (base32 "07hbz2md52ccy95gv4d5n6szrfmpfqf3w4kwqdg2cf54c7kgf7hw"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rolandwalker/list-utils")
     (synopsis "List-manipulation utility functions")
     (description "This package provides a list manipulation library for Emacs.")
     (license license:gpl3+)))
 
+(define-public emacs-parsec
+  ;; Last release is too old (2016).
+  (let ((revision "0")
+        (commit "2cbbbc2254aa7bcaa4fb5e07c8c1bf2f381dba26"))
+    (package
+      (name "emacs-parsec")
+      (version (git-version "0.1.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/cute-jumper/parsec.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1g1s8s45g3kkbi3h7w0pmadmzdswb64mkdvdpg2lihg341kx37gm"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/cute-jumper/parsec.el")
+      (synopsis "Parser combinator library for Emacs Lisp")
+      (description
+       "Parsec is a parser combinator library for Emacs Lisp, similar to
+Haskell's Parsec library.  It contains most of the parser combinators in
+Text.Parsec.Combinator, and more combinators can be added if necessary!  Most
+of the parser combinators have the same behavior as their Haskell
+counterparts.  Parsec also comes with a simple error handling mechanism so
+that it can display an error message showing how the parser fails.")
+      (license license:gpl3+))))
+
 (define-public emacs-move-text
   (package
     (name "emacs-move-text")
@@ -16353,7 +16749,7 @@ yasnippet fields and mirrors to be.")
     (description "@code{highlight-numbers-mode} provides a minor mode for
 syntax highlighting of numeric literals in source code.
 
-It s customizable: it's easy to add or redefine what exactly consitutes a
+It s customizable: it's easy to add or redefine what exactly constitutes a
 \"number\" in given major mode.  See @code{highlight-numbers-modelist}.")
     (license license:gpl3+)))
 
@@ -16430,27 +16826,32 @@ decreasing the default font size in all GUI Emacs frames.")
       (license license:gpl3+))))
 
 (define-public emacs-mixed-pitch
-  (package
-    (name "emacs-mixed-pitch")
-    (version "1.0.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/jabranham/mixed-pitch.git")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1458sy5b6bis1i0k23jdqk6hfqg0ghk637r3ajql2g19ym48rf58"))))
-    (build-system emacs-build-system)
-    (home-page "https://gitlab.com/jabranham/mixed-pitch")
-    (synopsis "Mix variable- and fixed-pitch fonts in the same Emacs buffer")
-    (description
-     "@code{mixed-pitch-mode} is a minor mode that enables mixing
+  ;; This commit contains fixes for visual alignment of line numbers and
+  ;; org-indent-mode.
+  (let ((commit "d305108f9520e196b533f05d1dcc284cf535faaf")
+        (tag "1.1.0")
+        (revision "0"))
+    (package
+      (name "emacs-mixed-pitch")
+      (version (git-version tag revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/jabranham/mixed-pitch.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0yx89is3g2m8af8vfsz5rgjmfmx7mfrxlffb1x6y4b8lh9l0k6dj"))))
+      (build-system emacs-build-system)
+      (home-page "https://gitlab.com/jabranham/mixed-pitch")
+      (synopsis "Mix variable- and fixed-pitch fonts in the same Emacs buffer")
+      (description
+       "@code{mixed-pitch-mode} is a minor mode that enables mixing
 variable-pitch and fixed-pitch fonts in the same buffer.  The list
 @code{mixed-pitch-fixed-pitch-faces} defines the faces that are kept
 fixed-pitch,everything else becomes variable-pitch.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-visual-regexp
   (package
@@ -17127,7 +17528,7 @@ Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
           (base32
            "1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"))))
       (build-system emacs-build-system)
-      (home-page "https://github.com/bgamari/dts-mode.git")
+      (home-page "https://github.com/bgamari/dts-mode")
       (synopsis "Emacs minor mode for editing device tree files")
       (description
        "This package provides an Emacs minor mode for highlighting
@@ -18099,7 +18500,8 @@ server with @code{M-x pinentry-start}.")
       (home-page "https://www.emacswiki.org/emacs/SoLong")
       (synopsis "Improve performance in files with long lines")
       (description "This package improves the performance of Emacs when
-viewing files with long lines.")
+viewing files with long lines.  It is included as standard with Emacs 27 or
+later.")
       (license license:gpl3+))))
 
 (define-public emacs-github-review
@@ -18433,6 +18835,16 @@ files.  It focuses on highlighting the document to improve readability.")
            (lambda _
              (substitute* "Makefile"
                (("\\$\\{CASK\\} exec ") ""))
+             #t))
+         ;; Two tests are failing with Emacs 27, as reported here:
+         ;; <https://github.com/racer-rust/emacs-racer/issues/136>.  Disable
+         ;; them.
+         (add-before 'check 'fix-failing-tests
+           (lambda _
+             (substitute* "test/racer-test.el"
+               (("`Write`") "Write")
+               (("^\\\\\\[`str\\]:.*") "")
+               ((" \\[`str`\\]") " str"))
              #t)))))
     (native-inputs
      `(("emacs-ert-runner" ,emacs-ert-runner)
@@ -18456,7 +18868,7 @@ docstring of the thing at point.")
 (define-public emacs-rust-mode
   (package
     (name "emacs-rust-mode")
-    (version "0.4.0")
+    (version "0.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -18465,7 +18877,7 @@ docstring of the thing at point.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0bcrklyicxh032rrp585rl5mxd26nb61dp6r5bl935rlcmxzsczh"))))
+                "1f3nnl0d7p9b5cv1bpm0hj898qmr2psxfvmqr61bh684z7fgc045"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -18743,6 +19155,47 @@ News homepage.")
 can be queued at any time.")
       (license license:unlicense))))
 
+(define-public emacs-ytdl
+  (package
+    (name "emacs-ytdl")
+    (version "1.3.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/tuedachu/ytdl")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xv93ny942gha1ipic5r6z4icjsb7src7ssdck9983kks3zacjk7"))))
+    (build-system emacs-build-system)
+    (inputs
+     `(("youtube-dl" ,youtube-dl)))
+    (propagated-inputs
+     `(("async" ,emacs-async)
+       ("transient" ,emacs-transient)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((youtube-dl (assoc-ref inputs "youtube-dl")))
+               ;; .el is read-only in git.
+               (make-file-writable "ytdl.el")
+               ;; Specify the absolute file names of the various programs so
+               ;; that everything works out-of-the-box.
+               (emacs-substitute-variables "ytdl.el"
+                 ("ytdl-command" (string-append youtube-dl "/bin/youtube-dl")))
+               #t))))))
+    (home-page "https://gitlab.com/tuedachu/ytdl")
+    (synopsis "Emacs interface for youtube-dl")
+    (description
+     "This package manages a video download queue for @command{youtube-dl},
+which serves as the back end.  New videos can be queued at any time.  All
+youtube-dl backends are supported.  It is possible to create download profiles
+depending on the downloaded URL.")
+    (license license:gpl3+)))
+
 (define-public emacs-org-web-tools
   (package
     (name "emacs-org-web-tools")
@@ -19027,7 +19480,7 @@ scratch, and you think the Spacemacs theme looks good.
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/TheBB/spaceline.git")
+               (url "https://github.com/TheBB/spaceline")
                (commit commit)))
          (sha256
           (base32 "11lwckqcgzsahrkkm5wk1ph4kc7d4yz05r7251g8c9f0q6vdj9dp"))
@@ -19106,7 +19559,7 @@ correctly.")
 (define-public emacs-helm-sly
   (package
     (name "emacs-helm-sly")
-    (version "0.4.1")
+    (version "0.5.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -19115,7 +19568,7 @@ correctly.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0b2dx9nzh5233lkix3lz81c9cv626lk2hjpcjiikwvyp6y0q92ys"))))
+                "13s2dj09mcdwlibjlahyyq2dxjkjlpxs88dbdyvcd64249jmahsx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)
@@ -19125,11 +19578,12 @@ correctly.")
     (description "Helm-SLY defines a few new commands:
 
 @itemize
-@item helm-sly-list-connections: Yet another Lisp connection list with Helm.
-@item: helm-sly-apropos: Yet another @command{apropos} with Helm.
-@item helm-sly-mini: Like @command{helm-sly-list-connections}, but include an
-extra source of Lisp-related buffers, like the events buffer or the scratch
-buffer.
+@item @code{helm-sly-list-connections}: Yet another Lisp connection list with
+Helm.
+@item @code{helm-sly-apropos}: Yet another @command{apropos} with Helm.
+@item @code{helm-sly-mini}: Like @command{helm-sly-list-connections}, but
+include an extra source of Lisp-related buffers, like the events buffer or the
+scratch buffer.
 @end itemize\n")
     (license license:gpl3+)))
 
@@ -19192,10 +19646,10 @@ Emacs.")
     (license license:gpl3+)))
 
 (define-public emacs-matrix-client
-  (let ((commit "a0623667b07a4bf60980c97b078e9faed97ace79"))
+  (let ((commit "59c792423fd0503f1375f356bec56130e65d3b51"))
     (package
       (name "emacs-matrix-client")
-      (version (git-version "0.0.0" "4" commit))
+      (version (git-version "0.0.0" "5" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -19204,7 +19658,7 @@ Emacs.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1zya8id3y9wzjaj7nplq7br6nhm3lsskv0fkn1xr1y77fzcfgcdb"))))
+                  "1gmpw14q9zkvviqpnmvh5vbyxk42038yilxm6b2zqw7mwxfc1xra"))))
       (build-system emacs-build-system)
       (arguments
        `(#:phases
@@ -19361,6 +19815,34 @@ functions to ensure they are called with the right arguments during testing.")
 too ambiguous and navigation in the result buffer.")
       (license license:gpl3+))))
 
+(define-public emacs-frame-local
+  ;; There is no release yet.  Version is extracted from the main
+  ;; file.
+  (let ((version "0.0.1")
+        (revision "0")
+        (commit "7ee1106c3bcd4022f48421f8cb1ef4f995da816e"))
+    (package
+      (name "emacs-frame-local")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sebastiencs/frame-local")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0zfxsxdh3bd3fd566zl0byp13p5b8f4cgkwl637imvarvahczigp"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/sebastiencs/frame-local")
+      (synopsis "Access variables local to an Emacs frame")
+      (description
+       "This package allows setting and accessing variables local to
+an Emacs frame.  Note that the variables created with this package do
+not have any relation with variables defined by @code{defvar},
+@code{defconst}, etc.")
+      (license license:gpl3+))))
+
 (define-public emacs-frame-purpose
   (package
     (name "emacs-frame-purpose")
@@ -19592,7 +20074,7 @@ programs can use this table component for the application UI.")
     (package
       (name "emacs-leetcode")
       (version (git-version "0" "1" commit))
-      (home-page "https://github.com/ginqi7/leetcode-emacs.git")
+      (home-page "https://github.com/ginqi7/leetcode-emacs")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -19709,7 +20191,7 @@ to open SQLite databases.")
 (define-public emacs-nix-mode
   (package
     (name "emacs-nix-mode")
-    (version "1.4.4")
+    (version "1.4.5")
     (source
      (origin
        (method git-fetch)
@@ -19718,7 +20200,7 @@ to open SQLite databases.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19f36kl00pxm2a18hn4cdsdvxlfsdx1pnnm6s6zxd8nw6y8ynvn0"))))
+        (base32 "1bqlhkxg0faddhvxx909dq46dxdxk4mdyhdpww92dmzgxdpq38sx"))))
     (build-system emacs-build-system)
     (inputs
      `(("emacs-company" ,emacs-company)
@@ -20203,30 +20685,28 @@ constant expressions.")
     (license license:gpl3+)))
 
 (define-public emacs-dockerfile-mode
-  ;; Latest upstream release is too old.
-  (let ((commit "ed73e82dcc636dad00d1a8c3b32a49136d25ee60"))
-    (package
-      (name "emacs-dockerfile-mode")
-      (version (git-version "1.2" "2" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/spotify/dockerfile-mode")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0lri2rnx4lr23vqfphkpq39cd4xfgzkvz1xsz7ccdvl4qj0k7fdl"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-s" ,emacs-s)))
-      (home-page "https://github.com/spotify/dockerfile-mode")
-      (synopsis "Major mode for editing Dockerfile")
-      (description
-       "This package provides a major mode @code{dockerfile-mode} for use with
+  (package
+    (name "emacs-dockerfile-mode")
+    (version "1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/spotify/dockerfile-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1br73dsls42fn4rwagljkpa3l4wwj6f7jxfn3gmgl6c54z81av3v"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/spotify/dockerfile-mode")
+    (synopsis "Major mode for editing Dockerfile")
+    (description
+     "This package provides a major mode @code{dockerfile-mode} for use with
 the standard @code{Dockerfile} file format.")
-      (license license:asl2.0))))
+    (license license:asl2.0)))
 
 (define-public emacs-lsp-mode
   (package
@@ -20259,26 +20739,25 @@ Projectile.")
     (license license:gpl3+)))
 
 (define-public emacs-pfuture
-  (let ((commit "368254ee30692c709400db413c347e18e76a8a55"))
-    (package
-      (name "emacs-pfuture")
-      (version (git-version "1.6" "1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/Alexander-Miller/pfuture")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "096raqpjx84njws85r7pqq1wi9w9bjwkr0ga1mbbhlna1mfn3mg4"))))
-      (build-system emacs-build-system)
-      (home-page
-       "https://github.com/Alexander-Miller/pfuture")
-      (synopsis "Simple wrapper around asynchronous processes for Emacs")
-      (description "This package provides a simple wrapper around asynchronous
+  (package
+    (name "emacs-pfuture")
+    (version "1.9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Alexander-Miller/pfuture")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1chpin5277vbl2xvsl04pzzk7a9dbcvclibm2496gz6yvd19pwsf"))))
+    (build-system emacs-build-system)
+    (home-page
+     "https://github.com/Alexander-Miller/pfuture")
+    (synopsis "Simple wrapper around asynchronous processes for Emacs")
+    (description "This package provides a simple wrapper around asynchronous
 processes for Emacs")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-treemacs
   (package
@@ -20295,20 +20774,20 @@ processes for Emacs")
                 "0m083g3pg0n4ymi1w0jx34awr7cqbm4r561adij9kklblxsz7sc2"))))
     (build-system emacs-build-system)
     (propagated-inputs
-      `(("emacs-dash" ,emacs-dash)
-        ("emacs-s" ,emacs-s)
-        ("emacs-f" ,emacs-f)
-        ("emacs-ace-window" ,emacs-ace-window)
-        ("emacs-pfuture" ,emacs-pfuture)
-        ("emacs-hydra" ,emacs-hydra)
-        ("emacs-ht" ,emacs-ht)))
+     `(("emacs-ace-window" ,emacs-ace-window)
+       ("emacs-dash" ,emacs-dash)
+       ("emacs-f" ,emacs-f)
+       ("emacs-ht" ,emacs-ht)
+       ("emacs-hydra" ,emacs-hydra)
+       ("emacs-pfuture" ,emacs-pfuture)
+       ("emacs-s" ,emacs-s)))
     (native-inputs
      `(("emacs-buttercup" ,emacs-buttercup)
        ("emacs-el-mock" ,emacs-el-mock)))
     (inputs
      `(("python" ,python)))
     (arguments
-     `(#:tests? #t ;TODO: Investigate ‘treemacs--parse-collapsed-dirs’ test failure.
+     `(#:tests? #t
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-makefile
@@ -20323,12 +20802,14 @@ processes for Emacs")
            (lambda _
              (chdir "src/elisp")))
          (replace 'check
+           ;; FIXME: Work around ‘treemacs--parse-collapsed-dirs’ and
+           ;; `treemacs-collect-child-nodes' test failures.
            (lambda _
              (with-directory-excursion "../.." ;treemacs root
                (chmod "test/test-treemacs.el" #o644)
                (emacs-substitute-sexps "test/test-treemacs.el"
-                 ("(describe \"treemacs--parse-collapsed-dirs\""
-                  ""))
+                 ("(describe \"treemacs--parse-collapsed-dirs\"" "")
+                 ("\"Finds only direct childre\"" ""))
                (invoke "make" "test"))))
          (add-before 'install 'patch-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -20360,7 +20841,12 @@ processes for Emacs")
                  #t)))))))
     (home-page "https://github.com/Alexander-Miller/treemacs")
     (synopsis "Emacs tree style file explorer")
-    (description "Powerful and flexible file tree project explorer.")
+    (description
+     "Treemacs is a file and project explorer similar to NeoTree or Vim's
+NerdTree, but largely inspired by the Project Explorer in Eclipse.  It shows
+the file system outlines of your projects in a simple tree layout allowing
+quick navigation and exploration, while also possessing basic file management
+utilities.")
     (license license:gpl3+)))
 
 (define-public emacs-treemacs-extra
@@ -20660,10 +21146,10 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
       (license license:gpl3+))))
 
 (define-public emacs-forge
-  (let ((commit "09bf8adc9c9afb492632e612f51f39e1cc15fca0"))
+  (let ((commit "05ef02913004826165c383bd6d2ff6574542b76c"))
     (package
       (name "emacs-forge")
-      (version (git-version "0.1.0" "4" commit))
+      (version (git-version "0.1.0" "5" commit))
       (source
        (origin
          (method git-fetch)
@@ -20673,7 +21159,7 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "148h1rvmfmxyrfy2q5l0vzblr7lpsyw1si30hfwhzsj8fvj21qcr"))))
+           "1vv7xlawj2zmwqk69qlsqflhh0lbyqm5xf4x8l4v2069g0k8mmx1"))))
       (build-system emacs-build-system)
       (native-inputs
        `(("texinfo" ,texinfo)))
@@ -21020,11 +21506,11 @@ compatible with Emacs' shell modes.")
       (license license:gpl3+))))
 
 (define-public emacs-vdiff
-  (let ((commit "09e15fc932bfd2febe1d4a65780a532394562b07")
-        (revision "1"))
+  ;; There is no proper tag, but the commit below matches the version bump.
+  (let ((commit "007e44be19d068fd6b49874b6e9b8df8b1f552bd"))
     (package
       (name "emacs-vdiff")
-      (version (git-version "0.2.3" revision commit))
+      (version "0.2.4")
       (source
        (origin
          (method git-fetch)
@@ -21033,8 +21519,7 @@ compatible with Emacs' shell modes.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32
-           "1gvqi5l4zs872nn4pmj603aza09d81qad2rgijzv268lif8z34db"))))
+          (base32 "197xrwph1llrzjgkhlvagiwdgfp68pb45w5afg89ndahpqc2725s"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-hydra" ,emacs-hydra)))
@@ -21045,8 +21530,9 @@ compatible with Emacs' shell modes.")
                           "-f" "ert-run-tests-batch-and-exit")))
       (home-page "https://github.com/justbur/emacs-vdiff/")
       (synopsis "Frontend for diffing based on vimdiff")
-      (description "This package permits comparisons of two or three buffers
-based on diff output.")
+      (description
+       "This package permits comparisons of two or three buffers based on diff
+output.")
       (license license:gpl3+))))
 
 (define-public emacs-vdiff-magit
@@ -21423,8 +21909,8 @@ and searching through @code{Ctags} files.")
       (license license:expat))))
 
 (define-public emacs-org-download
-  (let ((commit "10c9d7c8eed928c88a896310c882e3af4d8d0f61")
-        (revision "2"))
+  (let ((commit "42ac361ef5502017e6fc1bceb00333eba90402f4")
+        (revision "3"))
     (package
       (name "emacs-org-download")
       (version (git-version "0.1.0" revision commit))
@@ -21433,10 +21919,9 @@ and searching through @code{Ctags} files.")
                 (uri (git-reference
                       (url "https://github.com/abo-abo/org-download")
                       (commit commit)))
+                (file-name (git-file-name name version))
                 (sha256
-                 (base32
-                  "0i8wlx1i7y1vn5lqwjifvymvszg28a07vwqcm4jslf1v2ajs1lsl"))
-                (file-name (git-file-name name version))))
+                 (base32 "0cg4y7hy7xbq4vrbdicfzgvyaf3cjbx2zkqd4yl0y2garz71j99l"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-org" ,emacs-org)
@@ -21548,7 +22033,7 @@ through Dash docsets.")
 (define-public emacs-calibredb
   (package
     (name "emacs-calibredb")
-    (version "2.6.0")
+    (version "2.7.0")
     (source
      (origin
        (method git-fetch)
@@ -21557,7 +22042,7 @@ through Dash docsets.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "132afbbh4km2cbll46i6bpksvin0ncgfy782g4nkfjmwjaqh3d5l"))))
+        (base32 "1w3kz9iny72gk54jdafz8sy5sv6hnpm3rw4fn1r8aznx4p00f9dy"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -21669,14 +22154,14 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.4.4.2")
+    (version "2.4.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "16c8x5d803hjql0z88lidyx3zrhxlpjphdpzn3ppzz3wrsxsv8rf"))))
+        (base32 "0ms739a61d7jkq0lkf4dxql6kjrq435d6ds079bb1fpzglbnqkym"))))
     (build-system emacs-build-system)
     (arguments
      `(#:emacs ,emacs                   ;need D-Bus
@@ -21855,7 +22340,7 @@ and article extracts for Wikipedia.")
 (define-public emacs-webfeeder
   (package
   (name "emacs-webfeeder")
-  (version "1.0.0")
+  (version "1.1.1")
   (source
     (origin
       (method url-fetch)
@@ -21865,7 +22350,7 @@ and article extracts for Wikipedia.")
              ".tar"))
       (sha256
         (base32
-          "06y5vxw9m6pmbrzb8v2i3w9dnhgqxz06vyx1knmgi9cczlrj4a64"))))
+          "09caj12hfdfhlbcsmjyhw728w1f7yq13hdslh793yvfqv83ipvc4"))))
   (build-system emacs-build-system)
   (home-page "https://gitlab.com/Ambrevar/emacs-webfeeder")
   (synopsis "Build RSS and Atom webfeeds from HTML files")
@@ -22379,14 +22864,14 @@ federated microblogging social network.")
 (define-public emacs-ebdb
   (package
     (name "emacs-ebdb")
-    (version "0.6.19")
+    (version "0.6.21")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "ebdb-" version ".tar"))
        (sha256
-        (base32 "0ch5vzhxa8h5v75lg3blsmrln497lr3ylivx6w28aiyb6cv5016l"))))
+        (base32 "0pp190wr6z98kggmw9ls486f9vxfimdjdbqsp263qiyi21ws98if"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/girzel/ebdb")
     (synopsis "EIEIO port of BBDB, Emacs's contact-management package")
@@ -22508,6 +22993,29 @@ contains a track position, playback will start at the specified position.")
 JIRA issue servers.")
    (license license:gpl3+)))
 
+(define-public emacs-slime-volleyball
+  (package
+    (name "emacs-slime-volleyball")
+    (version "1.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "slime-volleyball-" version ".tar"))
+       (sha256
+        (base32 "1jsx889j09jbib9v3jzn3k2hn71jzdyc5yv4f010l6fknbsfi7lr"))))
+    (build-system emacs-build-system)
+    (arguments '(#:include '("\\.el$" "\\.svg$" "\\.b64$" "slime\\.el\\.gz$")))
+    (home-page "http://elpa.gnu.org/packages/slime-volleyball.html")
+    (synopsis "SVG slime volleyball game")
+    (description
+     "Emacs Slime Volleyball is a volleyball game.  Win points by
+making the ball land on your opponent's side of the court.  The first
+player to five points wins!  You can play against a friend, or
+challenge the three computer opponents in one player mode.  You can
+even train opponent slimes.")
+    (license license:gpl3+)))
+
 (define-public emacs-systemd-mode
   (package
     (name "emacs-systemd-mode")
@@ -22707,15 +23215,24 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-operandi-theme
   (package
     (name "emacs-modus-operandi-theme")
-    (version "0.12.0")
+    (version "0.13.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://elpa.gnu.org/packages/"
-                           "modus-operandi-theme-" version ".el"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/protesilaos/modus-themes")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1mllyysn701qfnglxs7n2f6mrzrz55v9hcwspvafc6fl2blr393y"))))
+        (base32 "0i6n3pzrmlgabsijy6z0hhs71q7g99yagwr2m33lr30skqc9rvdn"))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-other-theme
+           (lambda _
+             (delete-file "modus-vivendi-theme.el")
+             #t)))))
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Accessible light theme (WCAG AAA)")
     (description
@@ -22728,15 +23245,24 @@ standard.  This is the highest standard of its kind.")
 (define-public emacs-modus-vivendi-theme
   (package
     (name "emacs-modus-vivendi-theme")
-    (version "0.12.0")
+    (version "0.13.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://elpa.gnu.org/packages/"
-                           "modus-vivendi-theme-" version ".el"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/protesilaos/modus-themes")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "01f6z5xjnmki1k9m83jwva42lxidb31pdpwm4wpxjzxqmb96picn"))))
+        (base32 "0i6n3pzrmlgabsijy6z0hhs71q7g99yagwr2m33lr30skqc9rvdn"))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-other-theme
+           (lambda _
+             (delete-file "modus-operandi-theme.el")
+             #t)))))
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Accessible dark theme (WCAG AAA)")
     (description
@@ -23253,6 +23779,29 @@ internal windowing system.  This combines particularly well with tiling window
 managers such as XMonad.")
     (license license:gpl3+)))
 
+(define-public emacs-modalka
+  (package
+    (name "emacs-modalka")
+    (version "0.1.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mrkkrp/modalka")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ggj8q92sb6wp3hs1vhpmy56id0p3i9zwnw24g2v7xa7w8ac9s7l"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/mrkkrp/modalka")
+    (synopsis "Minor mode to easily define native custom modal editing")
+    (description
+     "This is a building kit to help switch to modal editing in Emacs.  The
+main goal of the package is to make modal editing in Emacs as natural and
+native as possible.  Modalka lets you define your own keys and does not come
+with a preconfigured set of keys.")
+    (license license:gpl3+)))
+
 (define-public emacs-shrink-path
   (package
     (name "emacs-shrink-path")
@@ -23470,14 +24019,14 @@ interface.")
 (define-public emacs-ivy-posframe
   (package
     (name "emacs-ivy-posframe")
-    (version "0.5.1")
+    (version "0.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "ivy-posframe-" version ".el"))
        (sha256
-        (base32 "1yi5avbgk143xs82yqiia7yhh6jjjm22lpmwaq0ysw5mdpazjxfa"))))
+        (base32 "03ydfb155p5lak7nw4s79ab9zadwsjw1zggzwxgnlydsqdqbr6l6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-ivy" ,emacs-ivy)
@@ -24102,7 +24651,7 @@ launching other commands/applications from within Emacs, similar to the
 (define-public emacs-no-littering
   (package
     (name "emacs-no-littering")
-    (version "1.0.3")
+    (version "1.2.0")
     (source
      (origin
        (method git-fetch)
@@ -24111,7 +24660,7 @@ launching other commands/applications from within Emacs, similar to the
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "17is06l0w6glppabv2kaclrnqi3dqb6p6alpslpg7lrjd8vd45ir"))))
+        (base32 "1hma9var0nmrmjlh16s49hbfc1s4jvfd2prqxf14lxfd51404niw"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacscollective/no-littering")
     (synopsis "Help keep ~/.emacs.d/ clean")
@@ -24544,7 +25093,7 @@ snippets for Emacs.")
 (define-public emacs-org-roam
   (package
     (name "emacs-org-roam")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method git-fetch)
@@ -24553,7 +25102,7 @@ snippets for Emacs.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "10s7mcyshgj6yva4k1j086xm61k9zck3r586f1maar5b2z6hwvsa"))))
+        (base32 "0fanv0nl03qn65amxsq4q544zrhv94a37gdg9bwydik9439avbsc"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-company" ,emacs-company)
@@ -24578,7 +25127,7 @@ personal wiki.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/conao3/org-generate.el.git")
+                    (url "https://github.com/conao3/org-generate.el")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -24596,7 +25145,7 @@ personal wiki.")
     (build-system emacs-build-system)
     (home-page "https://github.com/conao3/org-generate.el")
     (synopsis "Generate template files and folders from Org document")
-    (description "This package allows to generate files and folders from Emacs
+    (description "This package generates files and folders from Emacs
 org-mode templates.")
     (license license:gpl3+)))
 
@@ -24697,6 +25246,45 @@ sources.  It features syntax highlighting, autocompletion, preview of buffer
 or region and use of locally installed binaries.")
     (license license:gpl3+)))
 
+(define-public emacs-execline
+  (let ((commit "c75dd9b2c54d8e59fc35fd4bd98d8e213948a3f5")
+        (revision "1"))
+    (package
+      (name "emacs-execline")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/KAction/emacs-execline/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "02q531c9wvdwflhggflnci4a36h2bb90bq25bbhw6i2lvrd9sk55"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)))
+      (arguments
+       `(#:tests? #t
+         #:test-command '("emacs" "-Q" "-batch" "-L" "."
+                          "-l" "t/indent.el"
+                          "-f" "ert-run-tests-batch-and-exit")))
+      (home-page "https://gitlab.com/KAction/emacs-execline/")
+      (synopsis "Major Emacs mode for editing execline scripts")
+      (description
+       "This package provides a major mode for editing execline scripts.
+
+Features:
+@itemize
+@item Syntax highlighting of commends, builtin commands and variable substitution.
+@item Completion of builtin commands.
+@item Working @code{comment-region} command.
+@item Indentation of blocks.
+@item Automatic enable of mode in @file{*.exec} files.
+@item Automatic enable of mode in files with @code{execlineb} interpreter.
+@end itemize\n")
+      (license license:gpl3+))))
+
 (define-public emacs-shell-pop
   (let ((commit "4b4394037940a890a313d715d203d9ead2d156a6")
         (revision "0"))
@@ -24832,7 +25420,7 @@ picked up when copy-pasting text from buffer to buffer.")
 (define-public emacs-org-webring
   (package
     (name "emacs-org-webring")
-    (version "1.9")
+    (version "2.0.0")
     (source
      (origin
        (method git-fetch)
@@ -24842,7 +25430,7 @@ picked up when copy-pasting text from buffer to buffer.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "09lm2h5d6xcdwilbmi6xs4qz33d0442m9iys9k36q9vhhakl7w4x"))))
+         "1si0jah7n2gvlvghjy5dpannqpkxni5rczfp1x2a4z6ydalr3bn5"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -24951,3 +25539,203 @@ web development.")
       ;; file and the header of the main elisp file which indicates
       ;; that it is licensed under the GPL version 3 or later.
       (license (list license:mpl2.0 license:gpl3+)))))
+
+(define-public emacs-iter2
+  (package
+    (name "emacs-iter2")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/doublep/iter2")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0gaq3z2v1q4r9mkyq71dzmqakhi0p8g7ph4z0n3a11rvyc3z9ykx"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/doublep/iter2")
+    (synopsis "Reimplementation of Elisp generators")
+    (description "@code{iter2} is a fully compatible reimplementation of
+built-in generator package.  It provides @code{iter2-defun} and
+@code{iter2-lambda} forms that can be used in place of @code{iter-defun} and
+@code{iter-lambda}.  All other functions and macros (e.g. @code{iter-yield},
+@code{iter-next}) are intentionally not duplicated: just use the ones from the
+original package.")
+    (license license:gpl3+)))
+
+(define-public emacs-promise
+  (package
+    (name "emacs-promise")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/chuntaro/emacs-promise")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xb34zdbwjvahfhycjphdkm925kgd22dr298c57hwxza4ljc2hxj"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/chuntaro/emacs-promise")
+    (synopsis "Promises/A+ for Emacs")
+    (description "This is a simple implementation of Promises/A+.
+
+This implementation ports the following Promises/A+ features
+faithfully.  See @url{https://github.com/then/promise}.
+
+@itemize
+@item The same API as the JavaScript version of Promise can be used.
+@item It has all the @code{then}, @code{catch}, @code{resolve}, @code{reject},
+@code{all}, @code{race}, etc.
+@item It supports \"thenable\".
+@item It supports \"Inheritance of Promise\".
+@item It supports \"rejection-tracking\".
+@end itemize\n")
+    (license license:gpl3+)))
+
+(define-public emacs-async-await
+  (package
+    (name "emacs-async-await")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/chuntaro/emacs-async-await")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0aav9qdswnw7ynqlzn0sm34as5fj2d85syxgg8zjabzp6646ay29"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("promise" ,emacs-promise)
+       ("iter2" ,emacs-iter2)))
+    (home-page "https://github.com/chuntaro/emacs-async-await")
+    (synopsis "Async/Await for Emacs")
+    (description "This is a simple implementation of Async/Await inspired by
+the TypeScript implementation.")
+    (license license:gpl3+)))
+
+(define-public emacs-rocket-chat
+  ;; No release.
+  (let ((commit "96fe27a8678de5ae4061f635108a7192eee13f98"))
+    (package
+      (name "emacs-rocket-chat")
+      (version (git-version "0.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/4hiziri/rocket-chat")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "02a4j0yy7330kfr3rd3k2agdj01ii6989nki598anbamq6xvj5ql"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("async-await" ,emacs-async-await)
+         ("request" ,emacs-request)))
+      (home-page "https://github.com/4hiziri/rocket-chat")
+      (synopsis "Emacs Rocket.chat client")
+      (description "This package provides an Emacs client for the Rocket.chat
+service.")
+      (license license:expat))))
+
+(define-public emacs-monokai-theme
+  (package
+    (name "emacs-monokai-theme")
+    (version "3.5.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oneKelvinSmith/monokai-emacs")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0dy8c3349j7fmp8052hbgvk0b7ldlv5jqpg0paq1i0hlypivd30i"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/oneKelvinSmith/monokai-emacs")
+    (synopsis "High contrast color theme for Emacs")
+    (description
+     "Monokai theme is a port of the popular TextMate Monokai theme for
+Emacs.")
+    (license license:gpl3+)))
+
+(define-public emacs-nord-theme
+  (package
+    (name "emacs-nord-theme")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/arcticicestudio/nord-emacs")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "096f8cik4jz89bvkifwp3gm9iraqrd75ljy2q9js724v7yj88711"))))
+    (build-system emacs-build-system)
+    (home-page "https://www.nordtheme.com/")
+    (synopsis "Low contrast arctic color theme for Emacs")
+    (description
+     "Nord is an arctic, north-bluish color scheme created for a clean and
+uncluttered design pattern to achieve optimal focus and readability for code
+syntax highlighting and UI components.")
+    (license license:expat)))
+
+(define-public emacs-janet-mode
+  (let ((commit "2f5bcabcb6953e1ed1926ba6a2328c453e8b4ac7"))
+    (package
+      (name "emacs-janet-mode")
+      (version (git-version "0.1.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ALSchwalm/janet-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qj0gpycv2f3z1dgz1a27bjn983hrr3ppvrp7csl34lagnmp89rz"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/ALSchwalm/janet-mode")
+      (synopsis "Emacs major mode for the Janet programming language")
+      (description
+       "This package provides an Emacs major mode for editing Janet files.")
+      (license license:gpl3))))
+
+(define-public emacs-inf-janet
+  (let ((commit "df46651d3aad32593b2195c80ca91fb64d571fb7"))
+    (package
+      (name "emacs-inf-janet")
+      (version (git-version "0.1.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/velkyel/inf-janet")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0g0y7q62667j0p32md1h6zb2cap9fga9qgdg7138xwjqnk0328v7"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("janet-mode" ,emacs-janet-mode)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-program-name
+             (lambda _
+               (make-file-writable "inf-janet.el")
+               (emacs-substitute-variables "inf-janet.el"
+                 ("inf-janet-program" "janet"))
+               #t)))))
+      (home-page "https://github.com/velkyel/inf-janet")
+      (synopsis "Run an external Janet process in an Emacs buffer")
+      (description
+       "This Emacs package provides a Janet REPL to evaluate @code{janet-mode}
+s-expression.")
+      (license license:expat))))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 4963379d74..6fb323deaf 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -59,7 +59,6 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages linux)     ; alsa-lib
   #:use-module (gnu packages mail)      ; for mailutils
   #:use-module (gnu packages multiprecision)
@@ -314,6 +313,38 @@ languages.")
               (variable "INFOPATH")
               (files '("share/info"))))))))
 
+(define-public emacs-next-pgtk
+  (let ((commit "3df4ca451d41a5f1036713277ef55ca9734c6fa7")
+        (revision "0"))
+    (package/inherit emacs-next
+      (name "emacs-next-pgtk")
+      (version (git-version "28.0.50" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/masm11/emacs")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1c677c97b9avhlzysg09cvf6bd69iz41ggppnszw8chhphk3knfc"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments emacs-next)
+         ((#:configure-flags flags ''())
+          `(cons* "--with-pgtk" "--with-xwidgets" ,flags))))
+      (propagated-inputs
+       `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+         ("glib-networking" ,glib-networking)))
+      (inputs
+       `(("webkitgtk" ,webkitgtk)
+         ,@(package-inputs emacs-next)))
+      (home-page "https://github.com/masm11/emacs")
+      (synopsis "Emacs text editor with @code{pgtk} and @code{xwidgets} support")
+      (description "This is an unofficial Emacs fork build with a pure-GTK
+graphical toolkit to work natively on Wayland.  In addition to that, xwidgets
+also enabled and works without glitches even on X server."))))
+
 (define-public emacs-minimal
   ;; This is the version that you should use as an input to packages that just
   ;; need to byte-compile .el files.
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index f9f0e04238..d6f487bd17 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
@@ -36,6 +36,7 @@
   #:use-module (guix build-system trivial)
   #:use-module ((guix build utils) #:select (alist-replace))
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module ((gnu packages base) #:prefix base:)
   #:use-module (gnu packages bison)
@@ -458,40 +459,36 @@ languages are C and C++.")
      ,@(package-arguments gdb)))))
 
 (define-public libjaylink
-  ;; No release tarballs available.
-  (let ((commit "699b7001d34a79c8e7064503dde1bede786fd7f0")
-        (revision "2"))
-    (package
-      (name "libjaylink")
-      (version (string-append "0.1.0-" revision "."
-                              (string-take commit 7)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://git.zapb.de/libjaylink.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "034872d44myycnzn67v5b8ixrgmg8sk32aqalvm5x7108w2byww1"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("libtool" ,libtool)
-         ("pkg-config" ,pkg-config)))
-      (inputs
-       `(("libusb" ,libusb)))
-      (home-page "https://repo.or.cz/w/libjaylink.git")
-      (synopsis "Library to interface Segger J-Link devices")
-      (description "libjaylink is a shared library written in C to access
+  (package
+    (name "libjaylink")
+    (version "0.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://repo.or.cz/libjaylink.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ndyfh51hiqyv2yscpj6qd091w7myxxjid3a6rx8f6k233vy826q"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libusb" ,libusb)))
+    (home-page "https://repo.or.cz/w/libjaylink.git")
+    (synopsis "Library to interface Segger J-Link devices")
+    (description "libjaylink is a shared library written in C to access
 SEGGER J-Link and compatible devices.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public jimtcl
   (package
     (name "jimtcl")
-    (version "0.79")
+    (version "0.80")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -500,17 +497,26 @@ SEGGER J-Link and compatible devices.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1k88hz0v3bi19xdvlp0i9nsx38imzwpjh632w7326zwbv2wldf0h"))))
+                "06rn60cx9sapc175vxvan87b8j5rkhh5gvvz7343xznzwlr0wcgk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         ;; Doesn't use autoconf.
          (replace 'configure
+         ;; This package doesn't use autoconf.
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (invoke "./configure"
-                       (string-append "--prefix=" out))))))))
+                       (string-append "--prefix=" out)))))
+         (add-before 'check 'delete-failing-tests
+           (lambda _
+             ;; XXX All but 1 TTY tests fail (Inappropriate ioctl for device).
+             (delete-file "tests/tty.test")
+             #t))
+         )))
+    (native-inputs
+     ;; For tests.
+     `(("inetutils" ,inetutils)))       ; for hostname
     (home-page "http://jim.tcl.tk/index.html")
     (synopsis "Small footprint Tcl implementation")
     (description "Jim is a small footprint implementation of the Tcl programming
@@ -518,67 +524,71 @@ language.")
     (license license:bsd-2)))
 
 (define-public openocd
-  (package
-    (name "openocd")
-    (version "0.10.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/openocd/openocd/"
-                                  version "/openocd-" version ".tar.gz"))
-              (sha256
-               (base32
-                "09p57y3c2spqx4vjjlz1ljm1lcd0j9q8g76ywxqgn3yc34wv18zd"))
-              ;; FIXME: Remove after nrf52 patch is merged.
-              (patches
-               (search-patches "openocd-nrf52.patch"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("hidapi" ,hidapi)
-       ("jimtcl" ,jimtcl)
-       ("libftdi" ,libftdi)
-       ("libjaylink" ,libjaylink)
-       ("libusb-compat" ,libusb-compat)))
-    (arguments
-     '(#:configure-flags
-       (append (list "--disable-werror"
-                     "--enable-sysfsgpio"
-                     "--disable-internal-jimtcl"
-                     "--disable-internal-libjaylink")
-               (map (lambda (programmer)
-                      (string-append "--enable-" programmer))
-                    '("amtjtagaccel" "armjtagew" "buspirate" "ftdi"
-                      "gw16012" "jlink" "opendous" "osbdm"
-                      "parport" "aice" "cmsis-dap" "dummy" "jtag_vpi"
-                      "remote-bitbang" "rlink" "stlink" "ti-icdi" "ulink"
-                      "usbprog" "vsllink" "usb-blaster-2" "usb_blaster"
-                      "presto" "openjtag")))
-       #:phases
-       (modify-phases %standard-phases
-         ;; Required because of patched sources.
-         (add-before 'configure 'autoreconf
-           (lambda _ (invoke "autoreconf" "-vfi") #t))
-         (add-after 'autoreconf 'change-udev-group
-           (lambda _
-             (substitute* "contrib/60-openocd.rules"
-               (("plugdev") "dialout"))
-             #t))
-         (add-after 'install 'install-udev-rules
-           (lambda* (#:key outputs #:allow-other-keys)
-             (install-file "contrib/60-openocd.rules"
-                           (string-append
-                            (assoc-ref outputs "out")
-                            "/lib/udev/rules.d/"))
-             #t)))))
-    (home-page "http://openocd.org")
-    (synopsis "On-Chip Debugger")
-    (description "OpenOCD provides on-chip programming and debugging support
+  (let ((commit "9a877a83a1c8b1f105cdc0de46c5cbc4d9e8799e")
+        (revision "0"))
+    (package
+      (name "openocd")
+      (version (string-append "0.10.0-" revision "."
+                              (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.code.sf.net/p/openocd/code")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1q536cp80v2bcy6xwk08f1r2ljyw13jchx3a1z7d3ni3vqql7rc6"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("which" ,base:which)
+         ("pkg-config" ,pkg-config)))
+      (inputs
+       `(("hidapi" ,hidapi)
+         ("jimtcl" ,jimtcl)
+         ("libftdi" ,libftdi)
+         ("libjaylink" ,libjaylink)
+         ("libusb-compat" ,libusb-compat)))
+      (arguments
+       '(#:configure-flags
+         (append (list "--disable-werror"
+                       "--enable-sysfsgpio"
+                       "--disable-internal-jimtcl"
+                       "--disable-internal-libjaylink")
+                 (map (lambda (programmer)
+                        (string-append "--enable-" programmer))
+                      '("amtjtagaccel" "armjtagew" "buspirate" "ftdi"
+                        "gw16012" "jlink" "opendous" "osbdm"
+                        "parport" "aice" "cmsis-dap" "dummy" "jtag_vpi"
+                        "remote-bitbang" "rlink" "stlink" "ti-icdi" "ulink"
+                        "usbprog" "vsllink" "usb-blaster-2" "usb_blaster"
+                        "presto" "openjtag")))
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'bootstrap
+             (lambda _
+               (patch-shebang "bootstrap")
+               (invoke "./bootstrap" "nosubmodule")))
+           (add-after 'autoreconf 'change-udev-group
+             (lambda _
+               (substitute* "contrib/60-openocd.rules"
+                 (("plugdev") "dialout"))
+               #t))
+           (add-after 'install 'install-udev-rules
+             (lambda* (#:key outputs #:allow-other-keys)
+               (install-file "contrib/60-openocd.rules"
+                             (string-append
+                              (assoc-ref outputs "out")
+                              "/lib/udev/rules.d/"))
+               #t)))))
+      (home-page "http://openocd.org")
+      (synopsis "On-Chip Debugger")
+      (description "OpenOCD provides on-chip programming and debugging support
 with a layered architecture of JTAG interface and TAP support.")
-    (license license:gpl2+)))
+      (license license:gpl2+))))
 
 ;; The commits for all propeller tools are the stable versions published at
 ;; https://github.com/propellerinc/propgcc in the release_1_0.  According to
@@ -1014,8 +1024,8 @@ the Raspberry Pi chip.")
       (home-page "https://github.com/puppeh/vc4-toolchain/"))))
 
 (define-public gcc-vc4
-  (let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2")
-        (xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4)))
+  (let ((commit "0fe4b83897341742f9df65797474cb0feab4b377")
+        (xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4)))
     (package (inherit xgcc)
       (name "gcc-vc4")
       (source (origin
@@ -1029,7 +1039,10 @@ the Raspberry Pi chip.")
                                           "-checkout"))
                 (sha256
                  (base32
-                  "13h30qjcwnlz6lfma1d82nnvfmjnhh7abkagip4vly6vm5fpnvf2"))))
+                  "0kvaq4s0assvinmmicwqp07d0wwldcw0fv6f4k13whp3q5909jnr"))
+                (patches
+                 (search-patches "gcc-6-fix-buffer-size.patch"
+                                 "gcc-6-fix-isl-includes.patch"))))
       (native-inputs
         `(("flex" ,flex)
           ,@(package-native-inputs xgcc)))
@@ -1366,7 +1379,7 @@ debugging them, and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/john30/ebusd.git")
+                     (url "https://github.com/john30/ebusd")
                      (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -1394,7 +1407,7 @@ debugging them, and more.")
         ,(origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/john30/ebusd-configuration.git")
+                     (url "https://github.com/john30/ebusd-configuration")
                      (commit "666c0f6b9c4d7545eff7f43ab28a1c7baeab7913")))
               (file-name "config-checkout")
               (sha256
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 0ce04dfaa5..6888672f9a 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -61,7 +61,6 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
@@ -477,14 +476,14 @@ V2.")
 (define-public mednafen
   (package
     (name "mednafen")
-    (version "1.24.3")
+    (version "1.26.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://mednafen.github.io/releases/files/"
                            "mednafen-" version ".tar.xz"))
        (sha256
-        (base32 "03zplcfvmnnv7grhacmr1zy789pb2wda36wylmzmar23g0zqbsix"))))
+        (base32 "1x7xhxjhwsdbak8l0iyb497f043xkhibk73w96xck4j2bk10fac4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -538,7 +537,7 @@ The following systems are supported:
 (define-public mgba
   (package
     (name "mgba")
-    (version "0.8.3")
+    (version "0.8.4")
     (source
      (origin
        (method git-fetch)
@@ -547,7 +546,7 @@ The following systems are supported:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0rwlfjdr0rzbq4kaplvwsgyb8xq6nrzxss2c8xrgw9hqw3ymx4s3"))
+        (base32 "0nqj4bnn5c2z1bq4bnbw1wznc0wpmq4sy3w8pipd6n6620b9m4qq"))
        (modules '((guix build utils)))
        (snippet
         ;; Make sure we don't use the bundled software.
@@ -567,7 +566,6 @@ The following systems are supported:
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("qttools" ,qttools)))
     (inputs `(("ffmpeg" ,ffmpeg)
-              ("imagemagick" ,imagemagick)
               ("libedit" ,libedit)
               ("libelf" ,libelf)
               ("libepoxy" ,libepoxy)
@@ -1385,7 +1383,7 @@ play them on systems for which they were never designed!")
 (define-public mame
   (package
     (name "mame")
-    (version "0.225")
+    (version "0.226")
     (source
      (origin
        (method git-fetch)
@@ -1394,7 +1392,7 @@ play them on systems for which they were never designed!")
              (commit (apply string-append "mame" (string-split version #\.)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1n61v1yqmc69399khcm8gdabqaz8rwwj822m8vm5mbyxnw92icqg"))
+        (base32 "1yfns42rk1l0qprj5ksj9fqsgqpa23xnzxf29r4434p4n18bb77v"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm
index 75b330f83b..dd7c7c8365 100644
--- a/gnu/packages/enchant.scm
+++ b/gnu/packages/enchant.scm
@@ -49,7 +49,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/nuspell/nuspell.git")
+         (url "https://github.com/nuspell/nuspell")
          (commit
           (string-append "v" version))))
        (file-name
@@ -79,7 +79,7 @@ dictionaries.")
 (define-public enchant
   (package
     (name "enchant")
-    (version "2.2.8")
+    (version "2.2.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/AbiWord/enchant/releases"
@@ -87,7 +87,7 @@ dictionaries.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0m9m564qqwbssvvf7y3dlz1yxzqsjiqy1yd2zsmb3l0d7y2y5df7"))))
+                "084aqsrkzz2c1ls47p759d9bsi26d0m6wq9901k37483g46zkfga"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static"
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 14d3de88ba..b39c9ecb47 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018, 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
 ;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
@@ -74,6 +74,7 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gd)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -754,8 +755,8 @@ fonts to gEDA.")
       (license license:gpl2+))))
 
 (define-public libfive
-  (let ((commit "6e39254e57c179459bb929df49ae96a6017a0ed6")
-        (revision "3"))
+  (let ((commit "8ca1b8685ef3fac7b64e66b10459b8421a3020c6")
+        (revision "4"))
     (package
       (name "libfive")
       (version (git-version "0" revision commit))
@@ -766,7 +767,7 @@ fonts to gEDA.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0ryv2hcbrwqc087w7rrs4a2irkcpmqync00g4dh8n7jn10w2jkim"))
+                  "1c762cd70iv2b9av0l9lq0py9138y98wk3dirhdmil7jncdhvq98"))
                 (file-name (git-file-name name version))))
       (build-system cmake-build-system)
       (arguments
@@ -784,7 +785,7 @@ fonts to gEDA.")
          ("libpng" ,libpng)
          ("qtbase" ,qtbase)
          ("eigen" ,eigen)
-         ("guile" ,guile-2.2)))
+         ("guile" ,guile-3.0)))
       (home-page "https://libfive.com")
       (synopsis "Tool for programmatic computer-aided design")
       (description
@@ -810,7 +811,14 @@ language.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0lan6930g5a9z4ack9jj0zdd0mb2s6q2xzpiwcjdc3pvl9b1nbw4"))))
+                  "0lan6930g5a9z4ack9jj0zdd0mb2s6q2xzpiwcjdc3pvl9b1nbw4"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    ;; Allow builds with Guile 3.0.
+                    (substitute* "configure.ac"
+                      (("2\\.2") "3.0 2.2"))
+                    #t))))
       (build-system gnu-build-system)
       (arguments
        `(#:phases
@@ -829,10 +837,10 @@ language.")
          ("pkg-config" ,pkg-config)))
       (inputs
        `(("mesa" ,mesa)
-         ("guile" ,guile-2.2)))
+         ("guile" ,guile-3.0)))
       (propagated-inputs
        `(("libfive" ,libfive)
-         ("guile-opengl" ,guile-opengl)))
+         ("guile-opengl" ,guile3.0-opengl)))
       (home-page "https://gitlab.com/kavalogic-inc/inspekt3d/")
       (synopsis "Lightweight 3D viewer for Libfive written in Guile Scheme")
       (description
@@ -1069,18 +1077,29 @@ the 'showing the effect of'-style of operation.")
 (define-public volk
   (package
     (name "volk")
-    (version "2.3.0")
+    (version "2.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.libvolk.org/releases/volk-"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gnuradio/volk")
+             (commit (string-append "v" version))
+             (recursive? #t)))          ; for cpu_features git submodule
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1pjxz3piwy49njj5y2zk437prwkv9lfs5g48577jj3kcsg766vi3"))))
+        (base32 "14y0988r5qi1h3yvkivx5ihccn8r15910lq30r8iy71ih190r5m9"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'install 'remove-static-libraries
+           ;; Remove libcpu_features.a (and any others that might appear).
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib")))
+               (for-each delete-file (find-files lib "\\.a$"
+                                                 #:fail-on-error? #t))
+               #t)))
          (add-after 'install 'wrap-pythonpath
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -1537,8 +1556,12 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
     (version "28")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/ngspice/ng-spice-rework/"
-                                  version "/ngspice-" version ".tar.gz"))
+              (uri (list
+                     (string-append "mirror://sourceforge/ngspice/ng-spice-rework/"
+                                    version "/ngspice-" version ".tar.gz")
+                     (string-append "mirror://sourceforge/ngspice/ng-spice-rework/"
+                                    "old-releases/" version
+                                    "/ngspice-" version ".tar.gz")))
               (sha256
                (base32
                 "0rnz2rdgyav16w7wfn3sfrk2lwvvgz1fh0l9107zkcldijklz04l"))
@@ -2823,3 +2846,39 @@ GUI.")
   provides a full-fledged procedural, interactive programming language designed
   to describe data structures and to operate on them.")
       (license license:gpl3+))))
+
+(define-public pcb2gcode
+    (package
+     (name "pcb2gcode")
+     (version "2.1.0")
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pcb2gcode/pcb2gcode")
+             (commit (string-append "v" version))
+             (recursive? #t)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0nzglcyh6ban27cc73j4l7w7r9k38qivq0jz8iwnci02pfalw4ry"))))
+     (build-system gnu-build-system)
+     (inputs
+      `(("boost" ,boost)
+        ("geos" ,geos)
+        ("gerbv" ,gerbv)
+        ("glibmm" ,glibmm)
+        ("gtkmm" ,gtkmm-2)
+        ("librsvg" ,librsvg)))
+     (native-inputs
+      `(("autoconf" ,autoconf)
+        ("automake" ,automake)
+        ("libtool" ,libtool)
+        ("pkg-config" ,pkg-config)))
+     (home-page "https://github.com/pcb2gcode/pcb2gcode")
+     (synopsis "Generate G-code for milling PCBs")
+     (description "pcb2gcode is a command-line program for isolation routing
+and drilling of PCBs.  It takes Gerber files as input and outputs G-code files
+for the milling of PCBs.  It also includes an autoleveller for the automatic
+dynamic calibration of the milling depth.")
+     (license license:gpl3+)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index ed15cd28d2..5ce2229a75 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -566,14 +566,14 @@ directories.
 (define-public evisum
   (package
     (name "evisum")
-    (version "0.5.6")
+    (version "0.5.7")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "https://download.enlightenment.org/rel/apps/"
                             "evisum/evisum-" version ".tar.xz"))
         (sha256
-         (base32 "1l8pym7738kncvic5ga03sj9d5igigvmcxa9lbg47z2yvdjwzv97"))))
+         (base32 "0pm63n3rls8vkjv3awq0f3zlqk33ddql3g0rl2bc46n48g2mcmbd"))))
     (build-system meson-build-system)
     (arguments
      '(#:tests? #f))                    ; no tests
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 6ceaad4fd1..bc147bf3c6 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -68,6 +68,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages xml))
 
 (define-public autofs
@@ -182,6 +183,79 @@ another location, similar to @command{mount --bind}.  It can be used for:
 @end itemize ")
     (license license:gpl2+)))
 
+(define-public davfs2
+  (package
+    (name "davfs2")
+    (version "1.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.savannah.nongnu.org/releases/"
+                           "davfs2/davfs2-" version ".tar.gz"))
+       (sha256
+        (base32 "0l1vnv5lfigciwg17p10zxwhzj4qw2d9kw30prr7g4dxhmb6fsrf"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--sysconfdir=/etc"        ; so man pages & binaries contain /etc
+             (string-append "--docdir=" (assoc-ref %outputs "out")
+                            "/share/doc/" ,name "-" ,version)
+             (string-append "ssbindir=" (assoc-ref %outputs "out") "/sbin")
+             ;; The default ‘davfs2’ user and group don't exist on most systems.
+             "dav_user=nobody"
+             "dav_group=nogroup")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'omit-redundancy
+           ;; Don't install redundant copies of /etc examples into /share.
+           (lambda _
+             (substitute* "etc/Makefile.in"
+               (("(dist_pkgdata_DATA =.*) davfs2.conf secrets(.*)"
+                 _ prefix suffix)
+                (string-append prefix suffix)))
+             #t))
+         (add-after 'unpack 'patch-file-names
+           (lambda _
+             ;; Don't auto-load the FUSE kernel module.  That's up to root.
+             ;; XXX If/when we restore the previous behaviour, make sure not
+             ;; to introduce a security hole when mount.davfs is setuid.
+             (substitute* "src/kernel_interface.c"
+               (("/sbin/modprobe") "/modprobe/disabled"))
+             #t))
+         (replace 'install
+           (lambda* (#:key make-flags outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (apply invoke "make" "install"
+                      (string-append "pkgsysconfdir=" out "/etc")
+                      make-flags)))))))
+    (inputs
+     `(("neon" ,neon)
+
+       ;; Neon requires but doesn't propagate zlib, nor would we want that.
+       ;; XZ as well, but that's already present in the build environment.
+       ("zlib" ,zlib)))
+    (home-page "https://savannah.nongnu.org/projects/davfs2")
+    (synopsis "Mount remote WebDAV resources in the local file system")
+    (description
+     "The @acronym{WebDAV, Web Distributed Authoring and Versioning} extension
+to the HTTP protocol defines a standard way to author resources on a remote Web
+server.  Davfs2 exposes such resources as a typical filesystem which can be used
+by standard applications with no built-in support for WebDAV, such as the GNU
+coreutils (@command{cp}, @command{mv}, etc.) or a graphical word processor.
+
+Davfs2 works with most WebDAV servers with no or little configuration.  It
+supports TLS (HTTPS), HTTP proxies, HTTP basic and digest authentication, and
+client certificates.  It performs extensive caching to avoid unnecessary network
+traffic, stay responsive even over slow or unreliable connections, and prevent
+data loss.  It aims to make use by unprivileged users as easy and secure as
+possible.
+
+However, davfs2 is not a full-featured WebDAV client.  The file system interface
+and the WebDAV protocol are quite different.  Translating between the two is not
+always possible.")
+    (license (list license:bsd-2        ; src/fuse_kernel.h
+                   license:gpl3+))))    ; everything else
+
 (define-public fsarchiver
   (package
     (name "fsarchiver")
@@ -254,8 +328,8 @@ from a mounted file system.")
     (license license:gpl2+)))
 
 (define-public bcachefs-tools
-  (let ((commit "ab2f1ec24f5307b0cf1e3c4ad19bf350d9f54d9f")
-        (revision "0"))
+  (let ((commit "742dbbdbb90efb786f05a8576917fcd0e9cbd57e")
+        (revision "1"))
     (package
       (name "bcachefs-tools")
       (version (git-version "0.1" revision commit))
@@ -267,7 +341,7 @@ from a mounted file system.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "10pafvaxg1lvwnqjv3a4rsi96bghbpcsgh3vhqilndi334k3b0hd"))))
+          (base32 "0kn8y3kqylz6scv47mzfmwrlh21kbb14z5vs65vks8w50i26sxnc"))))
       (build-system gnu-build-system)
       (arguments
        `(#:make-flags
@@ -287,7 +361,8 @@ from a mounted file system.")
          ("python-pytest" ,python-pytest)
          ("valgrind" ,valgrind)))
       (inputs
-       `(("keyutils" ,keyutils)
+       `(("eudev" ,eudev)
+         ("keyutils" ,keyutils)
          ("libaio" ,libaio)
          ("libscrypt" ,libscrypt)
          ("libsodium" ,libsodium)
@@ -698,7 +773,7 @@ APFS.")
 (define-public zfs
   (package
     (name "zfs")
-    (version "0.8.2")
+    (version "0.8.5")
     (outputs '("out" "module" "src"))
     (source
       (origin
@@ -707,8 +782,7 @@ APFS.")
                               "/download/zfs-" version
                               "/zfs-" version ".tar.gz"))
           (sha256
-           (base32
-            "1f7aig15q3z832pr2n48j3clafic2yk1vvqlh28vpklfghjqwq27"))))
+           (base32 "0gfdnynmsxbhi97q73smrgmcw1k8zmlr1hgljfn38sk0kimivd6v"))))
     (build-system linux-module-build-system)
     (arguments
      `(;; The ZFS kernel module should not be downloaded since the license
@@ -722,8 +796,7 @@ APFS.")
            (lambda* (#:key outputs inputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* "configure"
-                 (("-/bin/sh") (string-append "-" (which "sh")))
-                 ((" /bin/sh") (string-append " " (which "sh"))))
+                 (("-/bin/sh") (string-append "-" (which "sh"))))
                (invoke "./configure"
                        "--with-config=all"
                        (string-append "--prefix=" out)
@@ -739,6 +812,9 @@ APFS.")
                    (src        (assoc-ref outputs "src"))
                    (util-linux (assoc-ref inputs "util-linux"))
                    (nfs-utils  (assoc-ref inputs "nfs-utils")))
+               (substitute* "contrib/Makefile.in"
+                 ;; This is not configurable nor is its hard-coded /usr prefix.
+                 ((" initramfs") ""))
                (substitute* "module/zfs/zfs_ctldir.c"
                  (("/usr/bin/env\", \"umount")
                   (string-append util-linux "/bin/umount\", \"-n"))
@@ -782,7 +858,6 @@ APFS.")
                        "INSTALL_MOD_STRIP=1")
                (install-file "contrib/bash_completion.d/zfs"
                              (string-append out "/share/bash-completion/completions"))
-               (symlink "../share/pkgconfig/" (string-append out "/lib/pkgconfig"))
                #t))))))
     (native-inputs
      `(("attr" ,attr)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 182d38c1a9..a79c70d1e0 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +46,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system emacs)
+  #:use-module (guix build-system haskell)
   #:use-module (guix build-system python)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system go)
@@ -72,6 +74,9 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libevent)
@@ -103,7 +108,7 @@
 (define-public bitcoin-core
   (package
     (name "bitcoin-core")
-    (version "0.19.1")
+    (version "0.20.1")
     (source (origin
               (method url-fetch)
               (uri
@@ -111,11 +116,13 @@
                               version "/bitcoin-" version ".tar.gz"))
               (sha256
                (base32
-                "1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj"))
-              (patches (search-patches "bitcoin-core-python-compat.patch"))))
+                "0y5rad68b398arh0abr2wgiwybdw0i5a4dxz9s3fk9fgdbyn5gab"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)
        ("python" ,python)               ; for the tests
        ("util-linux" ,util-linux)       ; provides the hexdump command for tests
        ("qttools" ,qttools)))
@@ -125,7 +132,6 @@
        ("libevent" ,libevent)
        ("miniupnpc" ,miniupnpc)
        ("openssl" ,openssl)
-       ("protobuf" ,protobuf)
        ("qtbase" ,qtbase)))
     (arguments
      `(#:configure-flags
@@ -149,6 +155,13 @@
              ;; Make Qt deterministic.
              (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
              #t))
+         (add-before 'build 'set-no-git-flag
+           (lambda _
+             ;; Make it clear we are not building from within a git repository
+             ;; (and thus no information regarding this build is available
+             ;; from git).
+             (setenv "BITCOIN_GENBUILD_NO_GIT" "1")
+             #t))
          (add-before 'check 'set-home
            (lambda _
              (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
@@ -170,6 +183,64 @@ of the bitcoin protocol.  This package provides the Bitcoin Core command
 line client and a client based on Qt.")
     (license license:expat)))
 
+(define-public hledger
+  (package
+    (name "hledger")
+    (version "1.14.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/hledger/hledger-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1si9zqparkdq77yji87lhcsrf11fr3gisqwsv82cabhrhc36x6l4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
+       ("ghc-base-compat-batteries" ,ghc-base-compat-batteries)
+       ("ghc-cmdargs" ,ghc-cmdargs)
+       ("ghc-data-default" ,ghc-data-default)
+       ("ghc-decimal" ,ghc-decimal)
+       ("ghc-diff" ,ghc-diff)
+       ("ghc-easytest" ,ghc-easytest)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-hledger-lib" ,ghc-hledger-lib)
+       ("ghc-lucid" ,ghc-lucid)
+       ("ghc-math-functions" ,ghc-math-functions)
+       ("ghc-megaparsec" ,ghc-megaparsec)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-old-time" ,ghc-old-time)
+       ("ghc-pretty-show" ,ghc-pretty-show)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-shakespeare" ,ghc-shakespeare)
+       ("ghc-split" ,ghc-split)
+       ("ghc-tabular" ,ghc-tabular)
+       ("ghc-temporary" ,ghc-temporary)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-utility-ht" ,ghc-utility-ht)
+       ("ghc-wizards" ,ghc-wizards)))
+    (native-inputs
+     `(("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
+    (home-page "https://hledger.org")
+    (synopsis "Command-line interface for the hledger accounting system")
+    (description
+     "The command-line interface for the hledger accounting system.  Its basic
+function is to read a plain text file describing financial transactions and
+produce useful reports.
+
+hledger is a robust, cross-platform set of tools for tracking money, time, or
+any other commodity, using double-entry accounting and a simple, editable file
+format, with command-line, terminal and web interfaces.  It is a Haskell
+rewrite of Ledger, and one of the leading implementations of Plain Text
+Accounting.")
+    (license license:gpl3)))
+
 (define-public homebank
   (package
     (name "homebank")
@@ -293,67 +364,67 @@ in ability, and easy to use.")
                     "See src/wcwidth.cc in the distribution.")))))
 
 (define-public emacs-ledger-mode
-  ;; There have been no new releases since 2016.
-  (let ((commit "253a20dc62e137ed0ed8e1dd8614ecba116610ea")
-        (revision "1"))
-    (package
-      (name "emacs-ledger-mode")
-      (version (git-version "3.1.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/ledger/ledger-mode")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "06wrgkqpgvk17vibrk2qikdlqn8y63jg86marp1wgmram92mb3jk"))))
-      (build-system cmake-build-system)
-      (arguments
-       `(#:modules ((guix build cmake-build-system)
-                    (guix build utils)
-                    (guix build emacs-utils))
-         #:imported-modules (,@%cmake-build-system-modules
-                             (guix build emacs-utils))
-         #:tests? #f ; there are none
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-site-dir
-             (lambda _
-               (substitute* "CMakeLists.txt"
-                 (("DESTINATION share/emacs/site-lisp/ledger-mode")
-                  "DESTINATION share/emacs/site-lisp"))
-               #t))
-           (add-before 'build 'patch-path
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((ledger (assoc-ref inputs "ledger")))
-                 (make-file-writable "ledger-exec.el")
-                 (emacs-substitute-variables "ledger-exec.el"
-                   ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
-               #t))
-           (add-after 'build 'build-doc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((target (string-append (assoc-ref outputs "out")
-                                            "/share/info")))
-                 (mkdir-p target)
-                 (invoke "makeinfo" "-o" target
-                         "../source/doc/ledger-mode.texi"))
-               #t))
-           (add-after 'install 'generate-autoload
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((site-dir (string-append (assoc-ref outputs "out")
-                                               "/share/emacs/site-lisp")))
-                 (emacs-generate-autoloads ,name site-dir))
-               #t)))))
-      (inputs
-       `(("ledger" ,ledger)))
-      (native-inputs
-       `(("emacs-minimal" ,emacs-minimal)
-         ("texinfo" ,texinfo)))
-      (home-page "https://ledger-cli.org/")
-      (synopsis "Command-line double-entry accounting program")
-      (description
-       "Ledger is a powerful, double-entry accounting system that is
+  (package
+    (name "emacs-ledger-mode")
+    (version "4.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ledger/ledger-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1r5rcyxd6d1rqwamzpvqdbkbdf1zbj75aaciqijrklnm59ps244y"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:modules ((guix build cmake-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules (,@%cmake-build-system-modules
+                           (guix build emacs-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-site-dir
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("DESTINATION share/emacs/site-lisp/ledger-mode")
+                "DESTINATION share/emacs/site-lisp"))
+             #t))
+         (add-before 'build 'patch-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((ledger (assoc-ref inputs "ledger")))
+               (make-file-writable "ledger-exec.el")
+               (emacs-substitute-variables "ledger-exec.el"
+                 ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
+             #t))
+         (add-after 'build 'build-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((target (string-append (assoc-ref outputs "out")
+                                          "/share/info")))
+               (mkdir-p target)
+               (invoke "makeinfo" "-o" target
+                       "../source/doc/ledger-mode.texi"))
+             #t))
+         (add-after 'install 'generate-autoload
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((site-dir (string-append (assoc-ref outputs "out")
+                                             "/share/emacs/site-lisp")))
+               (emacs-generate-autoloads ,name site-dir))
+             #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "../source/test"
+               (invoke "make" "test-batch")))))))
+    (inputs
+     `(("ledger" ,ledger)))
+    (native-inputs
+     `(("emacs-minimal" ,emacs-minimal)
+       ("texinfo" ,texinfo)))
+    (home-page "https://ledger-cli.org/")
+    (synopsis "Command-line double-entry accounting program")
+    (description
+     "Ledger is a powerful, double-entry accounting system that is
 accessed from the UNIX command-line.  This may put off some users, since
 there is no flashy UI, but for those who want unparalleled reporting
 access to their data there are few alternatives.
@@ -367,7 +438,7 @@ a graph or html instead.  Ledger is simple in concept, surprisingly rich
 in ability, and easy to use.
 
 This package provides the Emacs mode.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public geierlein
   (package
@@ -480,7 +551,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
 (define-public electron-cash
   (package
     (name "electron-cash")
-    (version "4.1.1")
+    (version "4.2.2")
     (source
      (origin
        (method git-fetch)
@@ -489,7 +560,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1fllz2s20lg4hrppzmnlgjy9mrq7gaq66l2apb3vz1avzvsjw3gm"))))
+        (base32 "1zk40zbf67wid2s5wg1fknb71409wg0qlvznk44q571v9risrdy7"))))
     (build-system python-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -524,20 +595,17 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
          (add-after 'unpack 'create-output-directories
            (lambda* (#:key outputs #:allow-other-keys)
              ;; setup.py installs to ~/.local/share if this doesn't exist.
-             (mkdir-p (string-append (assoc-ref outputs "out") "/share"))
-             #t))
+             (mkdir-p (string-append (assoc-ref outputs "out") "/share"))))
          (add-after 'unpack 'use-libsecp256k1-input
            (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "lib/secp256k1.py"
+             (substitute* "electroncash/secp256k1.py"
                (("library_paths = .* 'libsecp256k1.so.0'.")
                 (string-append "library_paths = ('"
                                (assoc-ref inputs "libsecp256k1")
-                               "/lib/libsecp256k1.so.0'")))
-             #t))
+                               "/lib/libsecp256k1.so.0'")))))
          (add-after 'install 'wrap-qt
            (lambda* (#:key outputs #:allow-other-keys)
-             (wrap-qt-program (assoc-ref outputs "out") "electron-cash")
-             #t)))))
+             (wrap-qt-program (assoc-ref outputs "out") "electron-cash"))))))
     (home-page "https://electroncash.org/")
     (synopsis "Bitcoin Cash wallet")
     (description
@@ -555,7 +623,7 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
   ;; the system's dynamically linked library.
   (package
     (name "monero")
-    (version "0.17.1.0")
+    (version "0.17.1.5")
     (source
      (origin
        (method git-fetch)
@@ -575,7 +643,7 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
               "external/unbound"))
            #t))
        (sha256
-        (base32 "1cngniv7sndy8r0fcfgk737640k53q3kwd36g891p5igcb985qdw"))))
+        (base32 "0yy9n2qng02j314h8fh5n0mcy6vpdks0yk4d8ifn8hj03f3g2c8b"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -665,7 +733,7 @@ the Monero command line client and daemon.")
 (define-public monero-gui
   (package
     (name "monero-gui")
-    (version "0.17.1.0")
+    (version "0.17.1.5")
     (source
      (origin
        (method git-fetch)
@@ -674,7 +742,7 @@ the Monero command line client and daemon.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07r78ipv4g3i6z822kq380vi3qwlb958rccsy6lyybkhj9y0rx84"))))
+        (base32 "0qlcqli0wvrjfy89mbgh1hpmk60dxgn5sws93h8lhgyfwx557iw0"))))
     (build-system qt-build-system)
     (native-inputs
      `(,@(package-native-inputs monero)
@@ -686,8 +754,6 @@ the Monero command line client and daemon.")
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
-       ("qtlocation" ,qtlocation)
-       ("qtmultimedia" ,qtmultimedia)
        ("qtquickcontrols" ,qtquickcontrols)
        ("qtquickcontrols2",qtquickcontrols2)
        ("qtsvg" ,qtsvg)
@@ -698,8 +764,7 @@ the Monero command line client and daemon.")
        (list "-DARCH=default"
              "-DENABLE_PASS_STRENGTH_METER=ON"
              (string-append "-DReadline_ROOT_DIR="
-                            (assoc-ref %build-inputs "readline"))
-             "-DCMAKE_BUILD_TYPE=Release")
+                            (assoc-ref %build-inputs "readline")))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'extract-monero-sources
@@ -708,19 +773,14 @@ the Monero command line client and daemon.")
            (lambda* (#:key inputs #:allow-other-keys)
              (invoke "tar" "-xv" "--strip-components=1"
                      "-C" "monero"
-                     "-f" (assoc-ref inputs "monero-source"))
-             #t))
+                     "-f" (assoc-ref inputs "monero-source"))))
          (add-after 'extract-monero-sources 'fix-build
            (lambda _
-             (substitute* "monero/src/version.cpp.in"
-               (("@VERSION_IS_RELEASE@")
-                "false"))
              (substitute* "src/version.js.in"
                (("@VERSION_TAG_GUI@")
                 ,version))
              (substitute* "src/zxcvbn-c/makefile"
-               (("\\?=") "="))
-             #t))
+               (("\\?=") "="))))
          (add-before 'configure 'generate-zxcvbn-c-header
            (lambda _
              (invoke "make" "-C" "src/zxcvbn-c" "dict-src.h")))
@@ -728,8 +788,7 @@ the Monero command line client and daemon.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
                (mkdir-p bin)
-               (install-file "../build/bin/monero-wallet-gui" bin))
-             #t))
+               (install-file "../build/bin/monero-wallet-gui" bin))))
          (add-after 'qt-wrap 'install-monerod-link
            ;; The monerod program must be available so that monero-wallet-gui
            ;; can start a Monero daemon if necessary.
@@ -737,8 +796,7 @@ the Monero command line client and daemon.")
              (symlink (string-append (assoc-ref inputs "monero")
                                      "/bin/monerod")
                       (string-append (assoc-ref outputs "out")
-                                     "/bin/monerod"))
-             #t)))))
+                                     "/bin/monerod")))))))
     (home-page "https://web.getmonero.org/")
     (synopsis "Graphical user interface for the Monero currency")
     (description
@@ -1034,13 +1092,13 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ")
 (define-public python-duniterpy
   (package
     (name "python-duniterpy")
-    (version "0.60.0")
+    (version "0.60.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "duniterpy" version))
        (sha256
-        (base32 "0djn6ykmqbp8l2xbg6z8r7rkz9ijgygp2pr0gc6i7dsrlsqmjh32"))))
+        (base32 "1cwda5mk05zmpar7fpk9m4bziyz2s5pd0922h22fns5hw7vfsybh"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Tests fail with: "TypeError: block_uid() missing 1 required
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index f39c529beb..c37f5c28a6 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2020 Simen Endsjø <simendsjo@gmail.com>
 ;;; Copyright © 2020 Tim Van den Langenbergh <tmt_vdl@gmx.com>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -710,17 +711,17 @@ for use at smaller text sizes")))
 (define-public font-gnu-unifont
   (package
     (name "font-gnu-unifont")
-    (version "13.0.03")
+    (version "13.0.04")
     (source
      (origin
        (method url-fetch)
        (uri (list
-             (string-append "http://unifoundry.com/pub/unifont/unifont-"
+             (string-append "https://unifoundry.com/pub/unifont/unifont-"
                             version "/unifont-" version ".tar.gz")
              (string-append "mirror://gnu/unifont/unifont-"
                             version "/unifont-" version ".tar.gz")))
        (sha256
-        (base32 "04l2sbg6il78qsj3jxqfbz5k1xzihvw8vdlckgkp4zfr0nh2q7h7"))))
+        (base32 "064ilpbnz62cwmpajszs2b08x2zg7yh9whlaiqhjzi7bir3im94j"))))
     (build-system gnu-build-system)
     (outputs '("out"   ; TrueType version
                "pcf"   ; PCF (bitmap) version
@@ -1430,6 +1431,30 @@ emphasis while still being readable.")
 (define-public font-open-dyslexic
   (deprecated-package "font-open-dyslexic" font-opendyslexic))
 
+(define-public font-openmoji
+  (package
+    (name "font-openmoji")
+    (version "12.4.0")
+    (source
+     (origin
+       (method url-fetch/zipbomb)
+       (uri
+        (string-append "https://github.com/hfg-gmuend/openmoji/"
+                       "releases/download/" version
+                       "/openmoji-font.zip"))
+       (sha256
+        (base32
+         "0wvvg5vnc950h8v23wfgjyi7rv89mgm5hqq6viqv0bxcc3azglxb"))))
+    (build-system font-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://openmoji.org")
+    (synopsis "Font for rendering emoji characters")
+    (description
+     "This package provides the OpenMoji font in both color and black
+variants.")
+    (license license:cc-by-sa4.0)))
+
 (define-public font-dosis
   (package
     (name "font-dosis")
@@ -1736,24 +1761,30 @@ This package provides the TrueType fonts.")
 (define-public font-jetbrains-mono
   (package
     (name "font-jetbrains-mono")
-    (version "2.002")
+    (version "2.210")
     (source
      (origin
        (method url-fetch)
        (uri
-        (string-append "https://download.jetbrains.com/fonts/"
-                       "JetBrainsMono-" version ".zip"))
+        (string-append "https://github.com/JetBrains/JetBrainsMono/releases/"
+                       "download/v" version "/JetBrainsMono-" version ".zip"))
        (sha256
-        (base32 "0lcsl718jhkqgld1xqll7fsv8j968jlf292541fkqxwm8i5g93sn"))))
+        (base32 "19wbggnmqs3k1wdqy7l7imnx23g7hh159pl32nz3mzz8s8sqfdix"))))
     (build-system font-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-before 'install-license-files 'change-directory-to-archive-root
-           ;; Find the LICENSE file outside of the default subdirectory.
+           ;; Find the license file outside of the default subdirectory.
            (lambda _
              (chdir "..")
-             #t)))))
+             #t))
+         (replace 'install-license-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (install-file "OFL.txt" doc)
+               #t))))))
     (home-page "https://www.jetbrains.com/lp/mono/")
     (synopsis "Mono typeface for developers")
     (description
@@ -1762,6 +1793,36 @@ Mono’s typeface forms are simple and free from unnecessary details.  Rendered
 in small sizes, the text looks crisper.")
     (license license:asl2.0)))
 
+(define-public font-juliamono
+  (package
+    (name "font-juliamono")
+    (version "0.025")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cormullion/juliamono")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1w8mpl9zc1y4j1f26ikbz5g9dqsszhikp4r9p1d3ch3b5ayb5c3m"))))
+    (build-system font-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-website-folder
+           ;; This folder contains other unrelated fonts.
+           (lambda _
+             (delete-file-recursively "website")
+             #t)))))
+    (home-page "https://github.com/cormullion/juliamono")
+    (synopsis "Monospaced font for programming")
+    (description
+     "JuliaMono is a monospaced font for scientific and technical computing,
+designed to work for programming in the Julia Programming Language and other
+text environments.")
+    (license license:silofl1.1)))
+
 (define-public font-vazir
   (package
     (name "font-vazir")
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 516aca33ea..1b6f72d22b 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -69,6 +69,7 @@
   (package
    (name "freetype")
    (version "2.10.1")
+   (replacement freetype/fixed)
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://savannah/freetype/freetype-"
@@ -97,6 +98,19 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
    (license license:freetype)           ; some files have other licenses
    (home-page "https://www.freetype.org/")))
 
+(define freetype/fixed
+  ;; Security fix for CVE-2020-15999.
+  (package
+    (inherit freetype)
+    (version "2.10.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/freetype/freetype-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "112pyy215chg7f7fmp2l9374chhhpihbh8wgpj5nj6avj3c59a46"))))))
+
 (define-public ttfautohint
   (package
     (name "ttfautohint")
@@ -146,7 +160,7 @@ scripts.")
     (inputs
      `(("zlib" ,zlib)))
     (arguments
-     `(#:make-flags '("CC=gcc")
+     `(#:make-flags '(,(string-append "CC=" (cc-for-target)))
        #:tests? #f                      ;no tests
        #:phases
        (modify-phases %standard-phases
@@ -156,7 +170,8 @@ scripts.")
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin")))
                (install-file "sfnt2woff" bin)
-               (install-file "woff2sfnt" bin)))))))
+               (install-file "woff2sfnt" bin))
+             #t)))))
     (synopsis "Convert between OpenType and WOFF fonts")
     (description
      "This package provides two tools:
@@ -268,7 +283,7 @@ work with most software requiring Type 1 fonts.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/google/woff2.git")
+         (url "https://github.com/google/woff2")
          (commit (string-append "v" version))))
        (file-name
         (git-file-name name version))
@@ -945,7 +960,7 @@ Unicode Charts.  It was developed for use with DejaVu Fonts project.")
 (define-public libraqm
   (package
     (name "libraqm")
-    (version "0.7.0")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
@@ -953,7 +968,7 @@ Unicode Charts.  It was developed for use with DejaVu Fonts project.")
                            "releases/download/v" version "/"
                            "raqm-" version ".tar.gz"))
        (sha256
-        (base32 "0hgry3fj2y3qaq2fnmdgd93ixkk3ns5jds4vglkiv2jfvpn7b1g2"))))
+        (base32 "0a4q9dziirb85sa9rmkamg2krdhd009di2vlz91njwxcp3q8qj46"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--disable-static")))
@@ -975,3 +990,33 @@ It currently provides bidirectional text support (using FriBiDi),
 shaping (using HarfBuzz), and proper script itemization.  As a result, Raqm
 can support most writing systems covered by Unicode.")
     (license license:expat)))
+
+(define-public lcdf-typetools
+  (package
+    (name "lcdf-typetools")
+    (version "2.108")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/kohler/lcdf-typetools")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0a6jqaqwq43ldjjjlnsh6mczs2la9363qav7v9fyrfzkfj8kw9ad"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       ;; This is only provided by the monolithic texlive distribution.
+       ;; FIXME: texlive-kpathsea doesn't come with the library and headers
+       (list "--without-kpathsea")))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (home-page "https://lcdf.org/type/")
+    (synopsis "Multiple font manipulation tools")
+    (description "LCDF Typetools comprises several programs for manipulating
+PostScript Type 1, Type 1 Multiple Master, OpenType, and TrueType fonts.
+These tools are cfftot1, mmafm, mmpfb, otfinfo, otftotfm, t1dotlessj, t1lint,
+t1rawfm, t1reencode, t1testpage and ttftotype42.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 5519f04b11..731737a820 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com>
+;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -71,6 +72,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libffi)
@@ -79,6 +81,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages man)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
@@ -98,6 +101,90 @@
   #:use-module (gnu packages xorg)
   #:use-module (srfi srfi-1))
 
+(define-public farstream
+  (package
+    (name "farstream")
+    (version "0.2.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://gitlab.freedesktop.org/farstream/farstream.git")
+         (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1sd8syldyq6bphfdm129s3gq554vfv7vh1vcwzk48gjryf101awk"))
+       (patches
+        (search-patches "farstream-make.patch"))))
+    (build-system glib-or-gtk-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:tests? #f ; https://gitlab.freedesktop.org/farstream/farstream/-/issues/18
+       #:configure-flags
+       (list
+        "--enable-gtk-doc"
+        "--enable-glib-asserts"
+        (string-append "--with-html-dir="
+                       (assoc-ref %outputs "doc")
+                       "/share/gtk-doc/html"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'copy-common
+           (lambda _
+             (delete-file "autogen.sh")
+             (copy-recursively
+              (assoc-ref %build-inputs "common")
+              "common")
+             #t))
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "docs"
+               (substitute* '("libs/farstream-libs-docs.sgml"
+                              "plugins/farstream-plugins-docs.sgml")
+                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                  (string-append (assoc-ref inputs "docbook-xml")
+                                 "/xml/dtd/docbook/"))))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("common"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://gitlab.freedesktop.org/gstreamer/common.git")
+             (commit "88e512ca7197a45c4114f7fa993108f23245bf50")))
+           (file-name
+            (git-file-name "common" "latest.88e512c"))
+           (sha256
+            (base32 "1nk94pnskjyngqcfb9p32g4yvf4nzpjszisw24r9azl0pawqpsn6"))))
+       ("docbook-xml" ,docbook-xml-4.1.2)
+       ("docbook-xsl" ,docbook-xsl)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)
+       ("libtool" ,libtool)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("xsltproc" ,libxslt)))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("gupnp-igd" ,gupnp-igd)
+       ("libnice" ,libnice)))
+    (propagated-inputs
+     `(("gstreamer" ,gstreamer)
+       ("gst-plugins-bad" ,gst-plugins-bad)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gst-plugins-good" ,gst-plugins-good)))
+    (synopsis "The Farstream VVoIP framework")
+    (description "Farstream is a collection of GStreamer modules and libraries
+for videoconferencing.")
+    (home-page "https://www.freedesktop.org/wiki/Software/Farstream/")
+    (license license:lgpl2.1+)))
+
 (define-public libglib-testing
   (package
     (name "libglib-testing")
@@ -1298,17 +1385,22 @@ different sorts of messages in different formats.")
 (define-public telepathy-idle
   (package
     (name "telepathy-idle")
-    (version "0.2.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://telepathy.freedesktop.org/releases/"
-                                  name "/" name "-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "1argdzbif1vdmwp5vqbgkadq9ancjmgdm2ncp0qfckni715ss4rh"))))
+    (version "0.2.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TelepathyIM/telepathy-idle")
+             (commit (string-append "telepathy-idle-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1pfw4g2cicw3ykxhsy743r0fc1yqbdrqxh2c5ha6am19dajcr95l"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
     (inputs
      `(("xsltproc" ,libxslt)
        ("python" ,python-2)
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 96ed2f9da4..c57ea5a908 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -444,7 +444,7 @@ support.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "1.2.5")
+    (version "1.4.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -453,10 +453,11 @@ support.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "14v2zfka2y3h0r0biw1rl59585lji5074x958s4xnb352jm5h9b9"))))
+                "14bx4gywfzr2f07ldqk3la82g5ag1agj21f7ccrxip12ydmpx0xb"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
        ("qtsvg" ,qtsvg)
        ("zlib" ,zlib)))
     (native-inputs
@@ -1763,61 +1764,23 @@ a 2D editor view.")
 (define-public guile-chickadee
   (package
     (name "guile-chickadee")
-    (version "0.5.0")
+    (version "0.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://files.dthompson.us/chickadee/"
                                   "chickadee-" version ".tar.gz"))
               (sha256
                (base32
-                "0y3s0p4zyghys48sayfhcbmxmflh8hwawnx5an2jlb3x84yr0dsx"))))
+                "1jv4jkc35b7rizz8iflh74hhk9qy665isn1xa6gqz0qp9grwb019"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags '("GUILE_AUTO_COMPILE=0")))
     (propagated-inputs
-     `(("guile-opengl" ,guile-opengl)
-       ("guile-sdl2" ,guile-sdl2)))
-    (inputs
-     `(("guile" ,guile-2.2)
-       ("libvorbis" ,libvorbis)
-       ("mpg123" ,mpg123)
-       ("openal" ,openal)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)))
-    (home-page "https://dthompson.us/projects/chickadee.html")
-    (synopsis "Game development toolkit for Guile Scheme with SDL2 and OpenGL")
-    (description "Chickadee is a game development toolkit for Guile Scheme
-built on top of SDL2 and OpenGL.  Chickadee aims to provide all the features
-that parenthetically inclined game developers need to make 2D (and eventually
-3D) games in Scheme, such as:
-
-@enumerate
-@item extensible, fixed-timestep game loop
-@item OpenGL-based rendering engine
-@item keyboard, mouse, controller input
-@item REPL-driven development model
-@end enumerate\n")
-    (license license:gpl3+)))
-
-(define-public guile3.0-chickadee
-  (package
-    (inherit guile-chickadee)
-    (name "guile3.0-chickadee")
-    (version "0.5.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://files.dthompson.us/chickadee/"
-                                  "chickadee-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0y3s0p4zyghys48sayfhcbmxmflh8hwawnx5an2jlb3x84yr0dsx"))))
-    (build-system gnu-build-system)
-    (propagated-inputs
      `(("guile-opengl" ,guile3.0-opengl)
        ("guile-sdl2" ,guile3.0-sdl2)))
     (inputs
-     `(("guile" ,guile-3.0)
+     `(("freetype" ,freetype)
+       ("guile" ,guile-3.0)
        ("libvorbis" ,libvorbis)
        ("mpg123" ,mpg123)
        ("openal" ,openal)))
@@ -1839,10 +1802,13 @@ that parenthetically inclined game developers need to make 2D (and eventually
 @end enumerate\n")
     (license license:gpl3+)))
 
+(define-public guile3.0-chickadee
+  (deprecated-package "guile3.0-chickadee" guile-chickadee))
+
 (define-public bennu-game-development
   (package
     (name "bennu-game-development")
-    (version "348")
+    (version "353")
     (source (origin
               (method svn-fetch)
               (uri (svn-reference
@@ -1851,7 +1817,7 @@ that parenthetically inclined game developers need to make 2D (and eventually
               (file-name (string-append name "-" version))
               (sha256
                (base32
-                "0wpzsbh4zi3931493dnyl5ffmh1b7fj2sx3mzrq304z9zs4d6lqq"))
+                "1iri58ryk9lbqn585cbccnvrfkj8qxlbcsk8rpih40jhvs1j101l"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index af13dc3c5a..1b7faa97c9 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -54,6 +54,7 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Trevor Hass <thass@okstate.edu>
 ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2020 Lu hux <luhux@outlook.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -116,6 +117,7 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnu-doc)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
@@ -589,6 +591,139 @@ possible, while battling many vicious aliens.")
                    license:lgpl2.1+
                    license:bsd-2))))
 
+(define-public bsd-games
+  (package
+    (name "bsd-games")
+    (version "2.17.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri "https://ibiblio.org/pub/linux/games/bsd-games-2.17.tar.gz")
+       (sha256
+        (base32 "0q7zdyyfvn15y0w4g54kq3gza89h61py727m8slmw73cxx594vq6"))
+       (patches
+        (search-patches
+         ;; thanks Arch, and Debian
+         "bsd-games-2.17-64bit.patch"
+         "bsd-games-bad-ntohl-cast.patch"
+         "bsd-games-gamescreen.h.patch"
+         "bsd-games-getline.patch"
+         "bsd-games-null-check.patch"
+         "bsd-games-number.c-and-test.patch"
+         "bsd-games-stdio.h.patch"
+         "bsd-games-prevent-name-collisions.patch"
+         ;; Guix customizations
+         "bsd-games-add-configure-config.patch"
+         "bsd-games-dont-install-empty-files.patch"
+         "bsd-games-add-wrapper.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("flex" ,flex)
+       ("bison" ,bison)))
+    (inputs
+     `(("curses" ,ncurses)
+       ("pager" ,less)
+       ("miscfiles" ,miscfiles)
+       ("openssl" ,openssl)))           ;used only by 'factor'
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/bsd-games-" ,version))
+                    (man (string-append out "/share/man"))
+                    (word-list (string-append (assoc-ref inputs "miscfiles")
+                                              "/share/web2"))
+                    (static-data (string-append out "/share/games/bsd-games"))
+                    ;; Not a "./" because of substitute* in 'patch-install
+                    ;; below.  The .// allow us not to mess with the games'
+                    ;; code any further: we just use a wrapper script that
+                    ;; cd's to a BSD_GAMES_DIR.  :]
+                    (save-files ".//"))
+               (substitute* "configure"
+                 (("/usr/share/man") man)
+                 (("/usr/share/doc/bsd-games") doc)
+                 (("/usr/share/[^\n/]*") static-data)
+                 (("/var/games") save-files)
+                 (("/usr/bin/less") (which "less"))
+                 (("(/usr/bin|/usr/games)") bin))
+               (substitute* "config.params" (("WORD_LIST") word-list))
+               (substitute* "wrapper" (("STATIC_DATA") static-data))
+               (invoke "./configure"))
+             #t))
+         (add-before 'install 'patch-install
+           ;; Some games need a writable directory containing pre-maded files.
+           ;; The files get installed to the Store.  Then the wrapper kicks in.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (static-data (string-append out "/share/games/bsd-games"))
+                    (save-files ".//"))
+               (substitute* "Makeconfig" ((save-files) static-data)))
+             #t))
+         (add-after 'install 'install-documents
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/bsd-games-" ,version)))
+               (rename-file "phantasia/COPYRIGHT" "phantasia-COPYRIGHT")
+               (for-each
+                (lambda(file) (install-file file doc))
+                '("AUTHORS" "BUGS" "README" "SECURITY" "THANKS"
+                  "phantasia-COPYRIGHT")))
+             #t)))))
+    (home-page "https://github.com/vattam/BSDGames")
+    (synopsis "Collection of the old text-based games and amusements")
+    (description
+     "These are the BSD games.  See the fortune-mod package for fortunes.
+
+Action: atc (keep the airplanes safe), hack (explore the dangerous Dungeon),
+hunt (kill the others for the Pair of Boots, multi-player only), robots (avoid
+the evil robots), sail (game of naval warfare with wooden ships), snake (steal
+the $$ from the cave, anger the snake, and get out alive), tetris (game of
+lining up the falling bricks of different shapes), and worm (eat, grow big,
+and neither bite your tail, nor ram the wall).
+
+Amusements: banner (prints a large banner), bcd & morse & ppt (print a punch
+card, or paper tape, or Morse codes), caesar & rot13 (ciphers and deciphers
+the input), factor (factorizes a number), number (translates numbers into
+text), pig (translates from English to Pig Latin), pom (should print the
+Moon's phase), primes (generates primes), rain & worms (plays an screen-saver
+in terminal), random (prints randomly chosen lines from files, or returns a
+random exit-code), and wtf (explains what do some acronyms mean).
+
+Board: backgammon (lead the men out of board faster than the friend do),
+boggle (find the words in the square of letters), dab (game of dots and
+boxes), gomoku (game of five in a row), hangman (guess a word before man is
+hanged), and monop (game of monopoly, hot-seat only).  Also the card-games:
+canfield, cribbage, fish (juniors game), and mille.
+
+Quests: adventure (search for treasures with the help of wizard),
+battlestar (explore the world around, starting from dying spaceship),
+phantasia (role-play as an rogue), trek (hunt the Klingons, and save the
+Federation), and wump (hunt the big smelly Wumpus in a dark cave).
+
+Quizes: arithmetic, and quiz.")
+    ;; "Auxiliary and data files, distributed with the games in NetBSD, but
+    ;; not bearing copyright notices, probably fall under the terms of the UCB
+    ;; or NetBSD copyrights and licences.  The file "fortune/Notes" contains a
+    ;; warning in regard to the fortune databases."
+    (license (list
+              ;; Most games.  Files: countmail/countmail.6, dab/dab.6,
+              ;; lib/strlcpy.c, wargames/wargames.6
+              license:bsd-3
+              ;; dab and hunt.  Files: adventure/extern.h,
+              ;; backgammon/backgammon/backlocal.h, caesar/rot13.in,
+              ;; countmail/countmail, dm/utmpentry.c, dm/utmpentry.h,
+              ;; hack/extern.h, robots/auto.c, sail/display.h,
+              ;; sail/restart.h, wargames/wargames
+              license:bsd-4
+              ;; wtf (the game)
+              license:public-domain
+              ;; phantasia (all but phantasia/pathnames.h.in, which is bsd-3)
+              (license:fsf-free "file:///phantasia/COPYRIGHT")))))
+
+
 (define-public bzflag
   (package
     (name "bzflag")
@@ -1186,7 +1321,7 @@ automata.  The following features are available:
 (define-public julius
   (package
     (name "julius")
-    (version "1.4.1")
+    (version "1.5.1")
     (source
      (origin
        (method git-fetch)
@@ -1195,7 +1330,7 @@ automata.  The following features are available:
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12hhnhdwgz7hd3hlndbnk15pxggm1375qs0764ija4nl1gbpb110"))
+        (base32 "10d6py1cmkq8lnb5h3w8rdpp4fmpd1wgqkgiabdghqxi7b2s0g4b"))
        ;; Remove unused bundled libraries.
        (modules '((guix build utils)))
        (snippet
@@ -1222,7 +1357,7 @@ does not include game data.")
   (package
     (inherit julius)
     (name "augustus")
-    (version (package-version julius))
+    (version "1.4.1a")
     (source
      (origin
        (method git-fetch)
@@ -1231,7 +1366,7 @@ does not include game data.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ii0w0iwa9zv5bbqfcps5mxifd796m6fw4gvjf09pkm3yjgqc0ag"))
+        (base32 "1xqv8j8jh3f13fjhyf7hk1anrn799cwwsvsd75kpl9n5yh5s1j5y"))
        ;; Remove unused bundled libraries.
        (modules '((guix build utils)))
        (snippet
@@ -1470,7 +1605,14 @@ such as chess or stockfish.")
     (native-inputs `(("python-2" ,python-2)
                      ("pkg-config" ,pkg-config)))
     (arguments
-     `(#:phases
+     `(#:configure-flags
+       ;; SSE instructions are available on Intel systems only.
+       (list ,@(if (any (cute string-prefix? <> (or (%current-target-system)
+                                                    (%current-system)))
+                        '("x86_64" "i686"))
+                   '("--enable-simd=sse2") ; prevent avx instructions
+                   '()))
+       #:phases
        (modify-phases %standard-phases
          (add-after 'install 'install-desktop-file
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1734,8 +1876,8 @@ role, and your gender.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
-                           "pipewalker-" version ".tar.gz"))
+       (uri (string-append "mirror://sourceforge/pipewalker/pipewalker/"
+                           version "/pipewalker-" version ".tar.gz"))
        (sha256
         (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
     (build-system gnu-build-system)
@@ -4294,7 +4436,7 @@ is attributed to Albert Einstein.")
 (define-public powwow
   (package
     (name "powwow")
-    (version "1.2.19")
+    (version "1.2.22")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4302,7 +4444,7 @@ is attributed to Albert Einstein.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
+                "12i11b8zxg8vdb9d6ims8qy2lmwwr42rcqbwq3vsa1x94s51bcbp"))))
     (inputs
      `(("ncurses" ,ncurses)))
     (build-system gnu-build-system)
@@ -5083,7 +5225,7 @@ a style similar to the original Super Mario games.")
 (define-public tintin++
   (package
     (name "tintin++")
-    (version "2.02.04")
+    (version "2.02.05")
     (source
      (origin
        (method url-fetch)
@@ -5091,7 +5233,7 @@ a style similar to the original Super Mario games.")
                            (string-drop-right version 1)
                            "/tintin-" version ".tar.gz"))
        (sha256
-        (base32 "1w1y20vqcikg59gnbxjbhyq2yanwqz1a6wp8vd1qnmil240id4j7"))))
+        (base32 "18fm9ga08mxqmblahmnlzwnl387i8mbkj4n0gffxc91d299019v3"))))
     (inputs
      `(("gnutls" ,gnutls)
        ("pcre" ,pcre)
@@ -5119,7 +5261,7 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
 (define-public laby
   (package
     (name "laby")
-    (version "0.6.4")
+    (version "0.7.0")
     (source
      (origin (method git-fetch)
              (uri (git-reference
@@ -5128,7 +5270,7 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
+               "1y6nfxcjhqg9bb81hs0wijg7kcwk5kff81rgd8bsv5ps7ia9nj6b"))
              (patches (search-patches "laby-make-install.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -6387,76 +6529,72 @@ at their peak of economic growth and military prowess.
                    license:mpl2.0
                    license:zlib))))
 
-;; There have been no official releases.
 (define-public open-adventure
-  (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
-         (revision "2"))
-    (package
-      (name "open-adventure")
-      (version (string-append "2.5-" revision "." (string-take commit 7)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/esr/open-adventure")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:make-flags (list "CC=gcc")
-         #:parallel-build? #f ; not supported
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'configure
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               ;; Linenoise is meant to be included, so we have to
-               ;; copy it into the working directory.
-               (let* ((linenoise (assoc-ref inputs "linenoise"))
-                      (noisepath (string-append linenoise "/include/linenoise"))
-                      (out (assoc-ref outputs "out")))
-                 (copy-recursively noisepath "linenoise"))
-               #t))
-           (add-before 'build 'use-echo
-             (lambda _
-               (substitute* "tests/Makefile"
-                 (("/bin/echo") (which "echo")))
-               #t))
-           (add-after 'build 'build-manpage
-             (lambda _
-               ;; This target is missing a dependency
-               (substitute* "Makefile"
-                 ((".adoc.6:" line)
-                  (string-append line " advent.adoc")))
-               (invoke "make" ".adoc.6")))
-           ;; There is no install target
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin"))
-                      (man (string-append out "/share/man/man6")))
-                 (install-file "advent" bin)
-                 (install-file "advent.6" man))
-               #t)))))
-      (native-inputs
-       `(("asciidoc" ,asciidoc)
-         ("linenoise" ,linenoise)
-         ("python" ,python)
-         ("python-pyyaml" ,python-pyyaml)))
-      (home-page "https://gitlab.com/esr/open-adventure")
-      (synopsis "Colossal Cave Adventure")
-      (description "The original Colossal Cave Adventure from 1976 was the
-origin of all text adventures, dungeon-crawl (computer) games, and
-computer-hosted roleplaying games.  This is the last version released by
+  (package
+    (name "open-adventure")
+    (version "1.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/esr/open-adventure")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "123svzy7xczdklx6plbafp22yv9bcvwfibjk0jv2c9i22dfsr07f"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list "CC=gcc")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ;no configure script
+         (add-before 'build 'use-echo
+           (lambda _
+             (substitute* "tests/Makefile"
+               (("/bin/echo") (which "echo")))
+             #t))
+         (add-after 'build 'build-manpage
+           (lambda _
+             ;; This target is missing a dependency
+             (substitute* "Makefile"
+               ((".adoc.6:" line)
+                (string-append line " advent.adoc")))
+             (invoke "make" ".adoc.6")))
+         ;; There is no install target.
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man (string-append out "/share/man/man6")))
+               (install-file "advent" bin)
+               (install-file "advent.6" man))
+             #t)))))
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("libedit" ,libedit)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("python-pyyaml" ,python-pyyaml)))
+    (home-page "https://gitlab.com/esr/open-adventure")
+    (synopsis "Colossal Cave Adventure")
+    (description
+     "The original Colossal Cave Adventure from 1976 was the origin of all
+text adventures, dungeon-crawl (computer) games, and computer-hosted
+roleplaying games.  This is a forward port of the last version released by
 Crowther & Woods, its original authors, in 1995.  It has been known as
-\"adventure 2.5\" and \"430-point adventure\".")
-      (license license:bsd-2))))
+``adventure 2.5'' and ``430-point adventure''.")
+    (license license:bsd-2)))
+
+(define-public open-adventure-2.5
+  (package
+    (inherit open-adventure)
+    (version "2.5")
+    (properties `((superseded . ,open-adventure)))))
 
 (define-public tome4
   (package
     (name "tome4")
-    (version "1.6.7")
+    (version "1.7.2")
     (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
     (source
      (origin
@@ -6464,7 +6602,7 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
        (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
+        (base32 "1xa0pdn9pggwf7hnqb87ya2qxqhjahkdjwf8cr2y01gixgrkj9lv"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -6486,7 +6624,9 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
        ("vorbis" ,libvorbis)
        ("luajit" ,luajit)))
     (arguments
-     `(#:make-flags '("CC=gcc" "config=release")
+     `(#:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             "config=release")
        ;; XXX: Building in parallel occasionally causes this build failure:
        ;;   ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
        ;;   No such file or directory
@@ -6677,15 +6817,14 @@ some graphical niceities, and numerous bug-fixes and other improvements.")
 (define-public yamagi-quake2
   (package
     (name "yamagi-quake2")
-    (version "7.10")
+    (version "7.45")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
                            version ".tar.xz"))
        (sha256
-        (base32
-         "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
+        (base32 "0rgz8x7lzd0zb0xqd0gvnf2641nr9xpfm6v14mgh99hspxklaln7"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -6714,12 +6853,15 @@ some graphical niceities, and numerous bug-fixes and other improvements.")
                         (string-append out "/bin/yamagi-quake2"))
                (symlink (string-append out "/lib/yamagi-quake2/q2ded")
                         (string-append out "/bin/yamagi-q2ded"))))))))
-    (inputs `(("sdl2" ,sdl2)
-              ("mesa" ,mesa)
-              ("libvorbis" ,libvorbis)
-              ("zlib" ,zlib)
-              ("openal" ,openal)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl-minimal)
+       ("libvorbis" ,libvorbis)
+       ("mesa" ,mesa)
+       ("openal" ,openal)
+       ("sdl2" ,sdl2)
+       ("zlib" ,zlib)))
     (synopsis "First person shooter engine based on quake2")
     (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
 The main focus is an unchanged single player experience like back in 1997,
@@ -6737,17 +6879,23 @@ making Yamagi Quake II one of the most solid Quake II implementations available.
 (define-public nudoku
   (package
     (name "nudoku")
-    (version "1.0.0")
-    (source (origin
-	      (method url-fetch)
-	      (uri (string-append "https://github.com/jubalh/nudoku/"
-                                  "releases/download/" version
-                                  "/nudoku-" version ".tar.xz"))
-	      (sha256
-               (base32
-                "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
+    (version "2.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jubalh/nudoku.git")
+             (commit version)))
+       (sha256
+        (base32 "12v00z3p0ymi8f3w4b4bgl4c76irawn3kmd147r0ap6s9ssx2q6m"))))
     (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("ncurses" ,ncurses)))
     (home-page "https://jubalh.github.io/nudoku/")
     (synopsis "Sudoku for your terminal")
     (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
@@ -8144,6 +8292,39 @@ and cooperative.")
     ;; developers.
     (license (list license:gpl2+ license:lgpl2.1+))))
 
+(define-public slimevolley
+  (package
+    (name "slimevolley")
+    (version "2.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.tuxfamily.org/slime/"
+                           "slimevolley_" version ".tar.gz"))
+       (sha256
+        (base32 "1pi60zjpx95mfdkrbwf4cbzy5lv4v5qrljvgck46qca78i9g9g46"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       ;; Work around build failure: "error adding symbols: DSO
+       ;; missing from command line".
+       #:configure-flags (list "-DCMAKE_EXE_LINKER_FLAGS=-lm")))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)))
+    (inputs
+     `(("sdl" ,(sdl-union (list sdl sdl-image sdl-net sdl-ttf)))))
+    (home-page "https://slime.tuxfamily.org/")
+    (synopsis "Unrealistic 2D volleyball simulation")
+    (description
+     "Slime Volley is a 2D arcade-oriented volleyball simulation, in
+the spirit of some Java games of the same name.
+
+Two teams, 1-3 players each, try to be the first to get 10 points.
+This happens when the one ball touches the floor on the other side of
+the net.  There can be 1 to 8 balls in game.  Once one ball touches
+the ground, the set ends and all balls are served again.")
+    (license license:gpl3+)))
+
 (define-public slingshot
   (package
     (name "slingshot")
@@ -9345,7 +9526,7 @@ angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
      `(("bash" ,bash)
        ("scummvm" ,scummvm)))
     (home-page "https://www.scummvm.org/")
-    (synopsis "Classic 2D point an click science-fiction adventure game")
+    (synopsis "Classic 2D point and click science-fiction adventure game")
     (description
      "Beneath a Steel Sky is a science-fiction thriller set in a bleak
 post-apocalyptic vision of the future.  It revolves around Union City,
@@ -11806,3 +11987,33 @@ inside the Zenith Colony.")
 X11 that won't set your CPU on fire, drain your laptop battery, or lower video
 game FPS.")
       (license license:unlicense))))
+
+(define-public curseofwar
+  (package
+    (name "curseofwar")
+    (version "1.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/a-nikolaev/curseofwar")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1wd71wdnj9izg5d95m81yx3684g4zdi7fsy0j5wwnbd9j34ilz1i"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (inputs `(("ncurses" ,ncurses)))
+    (home-page "https://a-nikolaev.github.io/curseofwar/")
+    (synopsis "Fast-paced action strategy game")
+    (description "Curse of War is a fast-paced action strategy game originally
+implemented using ncurses user interface.  An SDL graphical version is also
+available.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 9b96fd180b..a39194df95 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -41,7 +41,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (srfi srfi-1))
 
-(define-public gdb
+(define-public gdb-9.2
   (package
     (name "gdb")
     (version "9.2")
@@ -135,18 +135,11 @@ the program is running to try to fix bugs.  It can be used to debug programs
 written in C, C++, Ada, Objective-C, Pascal and more.")
     (license gpl3+)))
 
-(define-public gdb-minimal
-  (package/inherit
-   gdb
-   (name "gdb-minimal")
-   (inputs (fold alist-delete (package-inputs gdb)
-                 '("libxml2" "ncurses" "python-wrapper" "source-highlight")))))
-
 ;; This version of GDB is required by some of the Rust compilers, see
 ;; <https://bugs.gnu.org/37810>.
 (define-public gdb-8.2
   (package
-    (inherit gdb)
+    (inherit gdb-9.2)
     (version "8.2.1")
     (source (origin
               (method url-fetch)
@@ -155,3 +148,30 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
               (sha256
                (base32
                 "00i27xqawjv282a07i73lp1l02n0a3ywzhykma75qg500wll6sha"))))))
+
+(define-public gdb
+  ;; This is the fixed version that packages depend on.  Update it rarely
+  ;; enough to avoid massive rebuilds.
+  gdb-9.2)
+
+(define-public gdb-10
+  (package
+    (inherit gdb)
+    (version "10.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gdb/gdb-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1h32dckz1y8fnyxh22iyw8h3hnhxr79v1ng85px3ljn1xv71wbzq"))))
+    (inputs
+     `(("guile" ,guile-3.0)
+       ,@(alist-delete "guile" (package-inputs gdb))))))
+
+(define-public gdb-minimal
+  (package/inherit
+   gdb-10
+   (name "gdb-minimal")
+   (inputs (fold alist-delete (package-inputs gdb)
+                 '("libxml2" "ncurses" "python-wrapper" "source-highlight")))))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 09afa658c7..5908ef4b66 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -112,7 +112,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/jiuka/memphis.git")
+         (url "https://github.com/jiuka/memphis")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -788,14 +788,14 @@ utilities for data translation and processing.")
 (define-public postgis
   (package
     (name "postgis")
-    (version "3.0.2")
+    (version "3.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.osgeo.org/postgis/source/postgis-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1jmji8i2wjabkrzqil683lypnmimigdmn64a10j3kj3kzlfn98d3"))))
+                "05s8cx1rlysiq7dd44kf7cid0la61a4p895j9g95bvfb8v8dpzh7"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -1277,7 +1277,7 @@ to the OSM opening hours specification.")
 (define-public josm
   (package
     (name "josm")
-    (version "17013")
+    (version "17084")
     (source (origin
               (method svn-fetch)
               (uri (svn-reference
@@ -1286,7 +1286,7 @@ to the OSM opening hours specification.")
                      (recursive? #f)))
               (sha256
                (base32
-                "12mcqswjijvx2n7hz7lnx83i3vjr5ib58cazqin10hczcwnd778q"))
+                "0pl1v0lj6lslnaxlr5isivg97xgnydsp0f491idvf93fi2g5grn5"))
               (file-name (string-append name "-" version "-checkout"))
               (modules '((guix build utils)))
             (snippet
@@ -2099,6 +2099,7 @@ growing set of geoscientific methods.")
        ("python" ,python)
        ("python-chardet" ,python-chardet)
        ("python-dateutil" ,python-dateutil)
+       ("python-future" ,python-future)
        ("python-gdal" ,python-gdal)
        ("python-jinja2" ,python-jinja2)
        ("python-numpy" ,python-numpy)
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index c955a0d286..5956742bbb 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages libunistring)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-check)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages xml)
   #:use-module (guix utils))
@@ -185,14 +186,14 @@ color, font attributes (weight, posture), or underlining.")
 (define-public po4a
   (package
     (name "po4a")
-    (version "0.57")
+    (version "0.61")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mquinson/po4a/releases/download/v"
                                   version "/po4a-" version ".tar.gz"))
               (sha256
                (base32
-                "15yd27krlpdvjhcnwys6i5k1ww62ifq2yx8k1zxyxiwy84myqmdv"))))
+                "1nw61dj7ymrsjps79vvfdzp549drwd51kyj598937zvyafq4r5b2"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -225,12 +226,13 @@ color, font attributes (weight, posture), or underlining.")
              #t))
          (add-before 'check 'disable-failing-tests
            (lambda _
-             ;; FIXME: ‘Files ../t-03-asciidoc/Titles.po and Titles.po differ’.
-             (delete-file "t/03-asciidoc.t")
-
              ;; FIXME: these tests require SGMLS.pm.
              (delete-file "t/01-classes.t")
-             (delete-file "t/16-sgml.t")
+
+             (delete-file "t/add.t")
+             (delete-file "t/core-porefs.t")
+             (delete-file "t/fmt-asciidoc.t")
+             (delete-file "t/fmt-sgml.t")
 
              #t)))))
     (native-inputs
@@ -242,6 +244,7 @@ color, font attributes (weight, posture), or underlining.")
 
        ;; For tests.
        ("docbook-xml" ,docbook-xml-4.1.2)
+       ("perl-test-pod" ,perl-test-pod)
        ("perl-yaml-tiny" ,perl-yaml-tiny)
        ("texlive" ,texlive-tiny)))
     (home-page "https://po4a.org/")
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 865e697c4f..c0c66e52f5 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -138,7 +139,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/hodefoting/mrg.git")
+         (url "https://github.com/hodefoting/mrg")
          (commit version)))
        (file-name
         (git-file-name name version))
@@ -204,7 +205,7 @@ provided, as well as a framework to add new color models and data types.")
 (define-public gegl
   (package
     (name "gegl")
-    (version "0.4.24")
+    (version "0.4.26")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://download.gimp.org/pub/gegl/"
@@ -218,11 +219,26 @@ provided, as well as a framework to add new color models and data types.")
                                         "/gegl-" version ".tar.xz")))
               (sha256
                (base32
-                "0ji57s7cba94vzy49agn7x47ca61rccm6rif0cb0s6rl4ygljrbp"))))
+                "097427icgpgvcx40019b3dm8m84cchz79pixzpz648drs8p1wdqg"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
-       (list "-Dintrospection=false")))
+       (list "-Dintrospection=false")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'extend-test-time-outs
+           (lambda _
+             ;; Multiply some poorly-chosen time-outs for busy build machines.
+             (substitute* "tests/simple/test-node-exponential.c"
+               (("G_TIME_SPAN_SECOND" match)
+                (string-append "10 * " match)))
+             (substitute* "tests/simple/test-buffer-sharing.c"
+               (("g_timeout_add_seconds\\([0-9]+" match)
+                (string-append match "0")))
+             (substitute* (find-files "tests" "^meson\\.build$")
+               (("timeout ?: [0-9]+" match)
+                (string-append match "0")))
+             #t)))))
     ;; These are propagated to satisfy 'gegl-0.4.pc'.
     (propagated-inputs
      `(("babl" ,babl)
@@ -249,7 +265,7 @@ buffers.")
 (define-public gimp
   (package
     (name "gimp")
-    (version "2.10.20")
+    (version "2.10.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.gimp.org/pub/gimp/v"
@@ -257,7 +273,7 @@ buffers.")
                                   "/gimp-" version ".tar.bz2"))
               (sha256
                (base32
-                "0g3vzh1bjffqx94mfghmwvkhncv71cgah2mnfx17q00s9f3rybz1"))))
+                "1fqqyshakvdarf1jipk2n33ibqr23ni22z3d8srq13bpydblpf1d"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ; 9 MiB of gtk-doc HTML
@@ -309,6 +325,7 @@ buffers.")
        ("exif" ,libexif)                ; optional, EXIF + XMP support
        ("lcms" ,lcms)                   ; optional, color management
        ("librsvg" ,librsvg)             ; optional, SVG support
+       ("libxcursor" ,libxcursor)       ; optional, Mouse Cursor support
        ("poppler" ,poppler)             ; optional, PDF support
        ("poppler-data" ,poppler-data)
        ("python" ,python-2)             ; optional, Python support
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 40b05747b7..6efc3928bf 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Arthur Margerit <ruhtra.mar@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,6 +56,7 @@
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages popt)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -63,6 +65,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
@@ -170,6 +173,7 @@ shared NFS home directories.")
   (package
    (name "glib")
    (version "2.62.6")
+   (replacement glib-with-gio-patch)
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
@@ -380,11 +384,20 @@ dynamic loading, and an object system.")
    (home-page "https://developer.gnome.org/glib/")
    (license license:lgpl2.1+)))
 
+(define glib-with-gio-patch
+  ;; GLib with a fix for <https://bugs.gnu.org/35594>.
+  ;; TODO: Fold into 'glib' above in the next rebuild cycle.
+  (package
+    (inherit glib)
+    (source (origin
+              (inherit (package-source glib))
+              (patches (cons (search-patch "glib-appinfo-watch.patch")
+                             (origin-patches (package-source glib))))))))
+
 (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.
-  (package
-    (inherit glib)
+  (package/inherit glib
     (properties (alist-delete 'hidden? (package-properties glib)))
     (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
     (native-inputs
@@ -691,8 +704,7 @@ useful for C++.")
        (sha256
         (base32
          "0nkam61rsn7y3wik3vw46wk5q2cjfh2iph57hl9m39rc8jijb7dv"))
-       (patches (search-patches
-                 "python2-pygobject-2-gi-info-type-error-domain.patch"))))
+       (patches (search-patches "python2-pygobject-2-deprecation.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)
@@ -928,6 +940,45 @@ programming language.  It also contains the utility
     (home-page "https://sourceforge.net/projects/dbus-cplusplus/")
     (license license:lgpl2.1+)))
 
+(define-public dbus-cxx
+  (package
+    (name "dbus-cxx")
+    (version "0.12.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/dbus-cxx/dbus-cxx/"
+                                  version "/dbus-cxx-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1acsgpkd9v7b9jdc79ijmh9dbdfrzgkwkaff518i3zpk7y6g5mzw"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DENABLE_TESTS=ON"
+                           "-DENABLE_TOOLS=ON"
+                           "-DENABLE_GLIBMM=ON")))
+    (inputs `(("dbus" ,dbus)
+              ("libsigc++" ,libsigc++)
+              ("glibmm" ,glibmm)
+              ("python" ,python)
+              ("popt" ,popt)
+              ("expat" ,expat)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("m4" ,m4)))
+    (synopsis "C++ wrapper for dbus")
+    (description "Dbus-cxx is a C++ wrapper for dbus.\n
+It exposes the C API to allow direct manipulation and
+relies on sigc++ to provide an Oriented Object interface.\n
+This package provide 2 utils:
+@enumerate
+@item @command{dbus-cxx-xml2cpp} to generate proxy and adapter
+@item @command{dbus-cxx-introspect} to introspect a dbus interface
+@end enumerate
+
+Some codes examples can be find at:
+@url{https://dbus-cxx.github.io/examples.html}")
+    (home-page "https://dbus-cxx.github.io/")
+    (license license:gpl3)))
+
 (define-public appstream-glib
   (package
     (name "appstream-glib")
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 7f3ae41d17..2eb08da50f 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
@@ -42,6 +43,7 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages ruby)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xml))
 
 (define-public matcha-theme
@@ -131,7 +133,7 @@ the Obsidian icon theme.")
               (method git-fetch)
               (uri (git-reference
                     (url
-                     "https://github.com/ubuntu/gnome-shell-extension-appindicator.git")
+                     "https://github.com/ubuntu/gnome-shell-extension-appindicator")
                     (commit (string-append "v" version))))
               (sha256
                (base32
@@ -515,6 +517,34 @@ scrollable tiling of windows and per monitor workspaces.  It's inspired by paper
 notebooks and tiling window managers.")
     (license license:gpl3)))
 
+(define-public greybird-gtk-theme
+  (package
+    (name "greybird-gtk-theme")
+    (version "3.22.12")
+    (source (origin
+              (method git-fetch)
+              (uri
+               (git-reference
+                (url "https://github.com/shimmerproject/Greybird")
+                (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1j66ddvl3pmwh2v8ajm8r5g5nbsr7r262ff1qn2nf3i0gy8b3lq8"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("gtk+" ,gtk+)
+       ("glib:bin" ,glib "bin")         ; for "glib-compile-resources"
+       ("librsvg" ,librsvg)
+       ("pkg-config" ,pkg-config)
+       ("ruby-sass" ,ruby-sass)
+       ("sassc" ,sassc)))
+    (home-page "https://shimmerproject.org/")
+    (synopsis "Grey GTK+ theme based on Bluebird")
+    (description "Greybird is a grey derivative of the Bluebird theme by the
+Shimmer Project.  It supports GNOME, Unity, and Xfce.")
+    (license (list license:gpl2+ license:cc-by-sa3.0))))
+
 (define-public numix-gtk-theme
   (package
     (name "numix-gtk-theme")
@@ -593,7 +623,7 @@ and a few extra features.")
     ;; Note to maintainer: VLS must be built with a Vala toolchain the same
     ;; version or newer. Therefore when you update this package you may need
     ;; to update Vala too.
-    (version "0.48")
+    (version "0.48.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -601,7 +631,7 @@ and a few extra features.")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "0chgfpci247skrvsiq1l8cas8sj2z6z42dlarka3df3qwxmh0if0"))))
+               (base32 "12k095052jkvbiyz8gzkj6w7r7p16d5m18fyikl48yvh5nln8fw0"))))
     (build-system meson-build-system)
     (arguments '(#:glib-or-gtk? #t))
     (inputs
@@ -609,7 +639,7 @@ and a few extra features.")
        ("json-glib" ,json-glib)
        ("jsonrpc-glib" ,jsonrpc-glib)
        ("libgee" ,libgee)
-       ("vala" ,vala-0.48)))
+       ("vala" ,vala-0.50)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/benwaffle/vala-language-server")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 4e7427fdb9..05499bc220 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -55,6 +55,7 @@
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -215,6 +216,62 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
+(define-public gupnp-igd
+  (package
+    (name "gupnp-igd")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://gnome/sources/" name "/"
+                       (version-major+minor version) "/"
+                       name "-" version ".tar.xz"))
+       (sha256
+        (base32 "1q9bw12ibih3yxpha3gm1dabyqg9gx6yxacbh4kxsgm1i84j0lab"))))
+    (build-system meson-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:glib-or-gtk? #t     ; To wrap binaries and compile schemas
+       #:configure-flags (list "-Dgtk_doc=true")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "doc"
+               (substitute* "gupnp-igd-docs.xml"
+                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                  (string-append (assoc-ref inputs "docbook-xml-4.1.2")
+                                 "/xml/dtd/docbook/"))))
+             #t))
+         (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/gtk-doc")
+                (string-append doc "/share/gtk-doc"))
+               #t))))))
+    (native-inputs
+     `(("docbook-xml-4.1.2" ,docbook-xml-4.1.2)
+       ("docbook-xsl" ,docbook-xsl)
+       ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtk-doc" ,gtk-doc)
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("glib" ,glib)
+       ("glib-networking" ,glib-networking)
+       ("gssdp" ,gssdp)
+       ("gupnp" ,gupnp)
+       ("libsoup" ,libsoup)))
+    (synopsis "UPnP IGD for GNOME")
+    (description "GUPnP-IGD is a library to handle UPnP IGD port mapping.")
+    (home-page "https://gitlab.gnome.org/GNOME/gupnp-igd")
+    (license license:lgpl2.1+)))
+
 (define-public brasero
   (package
     (name "brasero")
@@ -657,7 +714,7 @@ of known objects without needing a central registrar.")
 (define-public zeitgeist
   (package
     (name "zeitgeist")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method git-fetch)
@@ -669,7 +726,7 @@ of known objects without needing a central registrar.")
        (file-name
         (git-file-name name version))
        (sha256
-        (base32 "0ig3d3j1n0ghaxsgfww6g2hhcdwx8cljwwfmp9jk1nrvkxd6rnmv"))))
+        (base32 "0y6fyzxl5np4yskcxibd0p03h619w9ir907nhf40h02y0pk1kgkp"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags
@@ -2783,16 +2840,16 @@ database is translated at Transifex.")
 (define-public system-config-printer
   (package
     (name "system-config-printer")
-    (version "1.5.12")
+    (version "1.5.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://github.com/OpenPrinting/system-config-printer/releases/"
-             "download/" version
+             "download/v" version
              "/system-config-printer-" version ".tar.xz"))
        (sha256
-        (base32 "050yrx1vfh9f001qsn06y1jcidxq0ymxr64kxykasr0zzryp25kb"))))
+        (base32 "18dqvi1s971lggkw6pv1sqxixlpg5a8rppzc1pxbanxa91jg18zf"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:imported-modules ((guix build python-build-system)
@@ -4213,7 +4270,7 @@ passwords in the GNOME keyring.")
      `(("graphviz" ,graphviz)))
     (propagated-inputs
      `(("glib" ,glib))) ; required by libvala-0.40.pc
-    (home-page "https://live.gnome.org/Vala/")
+    (home-page "https://wiki.gnome.org/Projects/Vala/")
     (synopsis "Compiler for the GObject type system")
     (description
      "Vala is a programming language that aims to bring modern programming
@@ -4222,10 +4279,10 @@ requirements and without using a different ABI compared to applications and
 libraries written in C.")
     (license license:lgpl2.1+)))
 
-(define-public vala-0.48
+(define-public vala-0.50
   (package
     (inherit vala)
-    (version "0.48.9")
+    (version "0.50.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/vala/"
@@ -4233,7 +4290,7 @@ libraries written in C.")
                                   "vala-" version ".tar.xz"))
               (sha256
                (base32
-                "1agyrvslv2yh9ikiw7k5nw6j6il1l2zrzfan0pzdpb9xpg9idslw"))))))
+                "1nnf0x6vk0a9p2y6z7jwjfvmlxh3qhj581v381r0y1sxsv35s39c"))))))
 
 (define-public vte
   (package
@@ -5014,14 +5071,14 @@ keyboard shortcuts.")
 (define-public colord
   (package
     (name "colord")
-    (version "1.4.4")
+    (version "1.4.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
                            "colord-" version ".tar.xz"))
        (sha256
-        (base32 "19f0938fr7nvvm3jr263dlknaq7md40zrac2npfyz25zc00yh3ws"))))
+        (base32 "05sydi6qqqx1rrqwnga1vbg9srkf89wdcfw5w4p4m7r37m2flx5p"))))
     (build-system meson-build-system)
     (arguments
      '(;; FIXME: One test fails:
@@ -5950,7 +6007,7 @@ discovery protocols.")
 (define-public totem
   (package
     (name "totem")
-    (version "3.34.1")
+    (version "3.38.0")
     (source
      (origin
        (method url-fetch)
@@ -5959,14 +6016,14 @@ discovery protocols.")
                            "totem-" version ".tar.xz"))
        (sha256
         (base32
-         "028sc6xbyi7rs884862d8f3di6zhcm0lhvlpc3r69ifzjsq9my3b"))))
+         "0bs33ijvxbr2prb9yj4dxglsszslsn9k258n311sld84masz4ad8"))))
     (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("desktop-file-utils" ,desktop-file-utils)
+       ("gettext" ,gettext-minimal)
        ("gobject-introspection" ,gobject-introspection)
        ("glib:bin" ,glib "bin")                   ;for 'glib-mkenums'
-       ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("xmllint" ,libxml2)
        ("xorg-server" ,xorg-server-for-tests)))
@@ -6020,6 +6077,14 @@ discovery protocols.")
              (substitute* "meson_post_install.py"
                (("gtk-update-icon-cache") "true"))
              #t))
+         (add-after 'unpack 'patch-failing-test
+           (lambda _
+             ;; Work around test failure with GStreamer 1.18, because the test
+             ;; relies on "und" not being mapped to a particular language:
+             ;; https://gitlab.gnome.org/GNOME/totem/-/issues/450
+            (substitute* "src/test-totem.c"
+              (("und") "nosuchlang"))
+            #t))
          (add-before
           'install 'disable-cache-generation
           (lambda _
@@ -6383,7 +6448,7 @@ USB transfers with your high-level application or system daemon.")
 (define-public simple-scan
   (package
     (name "simple-scan")
-    (version "3.36.6")
+    (version "3.38.1")
     (source
      (origin
        (method url-fetch)
@@ -6391,7 +6456,7 @@ USB transfers with your high-level application or system daemon.")
                            (version-major+minor version) "/"
                            "simple-scan-" version ".tar.xz"))
        (sha256
-        (base32 "0x9hzqnji5l966yy2k5gppl8hqasn3sd5an4sr8srjmncxcs80ys"))))
+        (base32 "0grscz96bwj79ka4qvxh8h75avdx6824k8k38ylmaj6xbl6gi0hy"))))
     (build-system meson-build-system)
     ;; TODO: Fix icons in home screen, About dialogue, and scan menu.
     (arguments
@@ -6423,14 +6488,14 @@ almost all of them.")
 (define-public eolie
   (package
     (name "eolie")
-    (version "0.9.99")
+    (version "0.9.100")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://adishatz.org/eolie/eolie-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0zj5v7wxqj7c20bmil127ah0vnjfzvvf6kzz82b9ip3846h43j02"))))
+                "1vzhfp8j1z3jvd5ndqfyn7nqrx3zdvx9mv1byjl36nnd9g63ji62"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -6784,7 +6849,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.30.9")
+    (version "0.30.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/shotwell/"
@@ -6792,7 +6857,7 @@ metadata in photo and video files of various formats.")
                                   "shotwell-" version ".tar.xz"))
               (sha256
                (base32
-                "1y556yyzfya0310v5wqjkf17hy5lhf028iminvvgi2pdfva344id"))))
+                "12d26y40kjlv5x8f5g04wff33vh7mdjb8c41ydqbrwdip0jwy2n2"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -9487,19 +9552,21 @@ functionality and behavior.")
 (define-public arc-theme
   (package
     (name "arc-theme")
-    (version "20190917")
+    (version "20201013")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/NicoHood/arc-theme")
+                    (url "https://github.com/jnsh/arc-theme")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qgpk4p2hi5hd4yy0hj93kq1vs0b32wb8qkaj1wi90c8gwddq5wa"))))
+                "1x2l1mwjx68dwf3jb1i90c1q8nqsl1wf2zggcn8im6590k5yv39s"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     '(#:configure-flags
+       (list "--disable-cinnamon")
+       #:phases
        (modify-phases %standard-phases
          ;; autogen.sh calls configure at the end of the script.
          (replace 'bootstrap
@@ -9916,14 +9983,14 @@ only know by its Unicode name or code point.")
 (define-public bluefish
   (package
     (name "bluefish")
-    (version "2.2.11")
+    (version "2.2.12")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://www.bennewitz.com/bluefish/stable/source/"
+       (uri (string-append "https://www.bennewitz.com/bluefish/stable/source/"
                            "bluefish-" version ".tar.gz"))
        (sha256
-        (base32 "0a7kf78q4cj2ap4igjks9kbmmr74brsrl4y2f9wbxpl0b0v2ck2x"))))
+        (base32 "09hgxq139kbkjda5y073lqhq1z1x7cx0j80jh77afrqa3y9c53wl"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("desktop-file-utils" ,desktop-file-utils)
@@ -9938,7 +10005,7 @@ only know by its Unicode name or code point.")
     (home-page "http://bluefish.openoffice.nl")
     (synopsis "Web development studio")
     (description
-     "Bluefish is an editor targeted towards programmers and web developers,
+     "Bluefish is an editor aimed at programmers and web developers,
 with many options to write web sites, scripts and other code.
 Bluefish supports many programming and markup languages.")
     (license license:gpl3+)))
@@ -10339,9 +10406,9 @@ photo-booth-like software, such as Cheese.")
     (native-inputs
      `(("docbook-xsl" ,docbook-xsl)
        ("docbook-xml" ,docbook-xml-4.3)
+       ("gettext" ,gettext-minimal)
        ("glib:bin" ,glib "bin")
        ("gtk-doc" ,gtk-doc)
-       ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
@@ -10824,7 +10891,7 @@ advanced image management tool")
 (define-public libhandy
   (package
     (name "libhandy")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
      (origin
        (method git-fetch)
@@ -10833,7 +10900,7 @@ advanced image management tool")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "193y09yy0302x8fkyrnq591m805xp68bkd93fl5qggxi52k8pj0v"))))
+        (base32 "1bmmkahshvlvpsnb7zp8bddv7i1h5k4p967n6kxh71g1vnj8x20m"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -10862,7 +10929,7 @@ advanced image management tool")
        ;; Test suite dependencies.
        ("xorg-server" ,xorg-server-for-tests)
        ("hicolor-icon-theme" ,hicolor-icon-theme)))
-    (home-page "https://source.puri.sm/Librem5/libhandy")
+    (home-page "https://gitlab.gnome.org/GNOME/libhandy/")
     (synopsis "Library full of GTK+ widgets for mobile phones")
     (description "The aim of the handy library is to help with developing user
 interfaces for mobile devices using GTK+.  It provides responsive GTK+ widgets
@@ -11414,6 +11481,62 @@ symbol tables, document templates, project management, spell-checking, menus
 and toolbars.")
     (license license:gpl3+)))
 
+(define-public setzer
+  (package
+    (name "setzer")
+    (version "0.3.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cvfosammmm/Setzer")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "118gip6bv4mcsq4nrai7kl0vmqqbyzpsd4ky9vhxb1x2cvg048s8"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref outputs "out")
+                                        "/bin/setzer"))
+                   (pylib (string-append (assoc-ref outputs "out")
+                                         "/lib/python"
+                                         ,(version-major+minor
+                                           (package-version python))
+                                         "/site-packages")))
+               (wrap-program prog
+                 `("PYTHONPATH" = (,(getenv "PYTHONPATH") ,pylib))
+                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
+               #t))))))
+    (native-inputs
+     `(("desktop-file-utils" ,desktop-file-utils)
+       ("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+:bin" ,gtk+ "bin")))
+    (inputs
+     `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gspell" ,gspell)
+       ("gtk+" ,gtk+)
+       ("gtksourceview" ,gtksourceview)
+       ("pango" ,pango)
+       ("poppler" ,poppler)
+       ("python-pycairo" ,python-pycairo)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pyxdg" ,python-pyxdg)
+       ("webkitgtk" ,webkitgtk)
+       ("xdg-utils" ,xdg-utils)))
+    (home-page "https://www.cvfosammmm.org/setzer/")
+    (synopsis "LaTeX editor written in Python with GTK+")
+    (description
+     "Setzer is a simple yet full-featured LaTeX editor written in Python with
+GTK+.  It integrates well with the GNOME desktop environment.")
+    (license license:gpl3+)))
+
 (define-public libratbag
   (package
     (name "libratbag")
@@ -11553,7 +11676,7 @@ provided there is a DBus service present:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gkarsay/parlatype.git")
+             (url "https://github.com/gkarsay/parlatype")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11746,6 +11869,13 @@ libraries.  Applications do not need to be recompiled--or even restarted.")
                 (string-append (assoc-ref inputs "python-pygobject")
                                "/lib")))
              #t))
+         (add-after 'configure 'fix-ninja
+           (lambda _
+             ;; #43296: meson(?) incorrectly assumes we want to link
+             ;;         this PIE against a static libselinux.
+             (substitute* "build.ninja"
+               (("libselinux\\.a") "libselinux.so"))
+             #t))
          (add-before 'check 'pre-check
            (lambda _
              (system "Xvfb :1 &")
@@ -11785,7 +11915,7 @@ integrated profiler via Sysprof, debugging support, and more.")
 (define-public komikku
   (package
     (name "komikku")
-    (version "0.21.1")
+    (version "0.23.0")
     (source
      (origin
        (method git-fetch)
@@ -11795,7 +11925,7 @@ integrated profiler via Sysprof, debugging support, and more.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "17ss5k2hnymk6xyx1dy3q0y2pwcld78cw7d0cs9c0hnhskh5dirh"))))
+         "1xh3qmf2pk80qxj528lajjcwg7mps72s1zz8cj388av58p8l3hyw"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -11852,17 +11982,17 @@ developed with the aim of being used with the Librem 5 phone.")
 (define-public libgda
   (package
     (name "libgda")
-    (version "5.2.9")
+    (version "5.2.10")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://gitlab.gnome.org/GNOME/libgda.git/")
-             (commit "LIBGDA_5_2_9")))
+             (commit (string-append "LIBGDA_" (string-replace-substring
+                                               version "." "_")))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "122anbk15vj2dfxrw7s48b6zwlpp7cyppshxizynvf3zmc0ygw3j"))))
+        (base32 "18rg773gq9v3cdywpmrp12c5xyp97ir9yqjinccpi22sksb1kl8a"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-vala")
@@ -11907,6 +12037,7 @@ developed with the aim of being used with the Librem 5 phone.")
        ("vala" ,vala)))
     (native-inputs
      `(("autoconf" ,autoconf)
+       ("autoconf-archive" ,autoconf-archive)
        ("automake" ,automake)
        ("glib:bin" ,glib "bin")
        ("gnome-common" ,gnome-common)
@@ -11960,9 +12091,10 @@ your data.")
      `(("gtksourceview" ,gtksourceview))) ; required for source view
     (arguments
      `(#:build-type "release"
+       #:glib-or-gtk? #t
        #:phases
        (modify-phases %standard-phases
-       (add-after 'unpack 'skip-gtk-update-icon-cache
+         (add-after 'unpack 'skip-gtk-update-icon-cache
            (lambda _
              (substitute* "build-aux/meson/meson_post_install.py"
                (("gtk-update-icon-cache") (which "true")))
diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm
index 321a7f87d7..d6f0cd6f86 100644
--- a/gnu/packages/gnu-pw-mgr.scm
+++ b/gnu/packages/gnu-pw-mgr.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,15 +31,14 @@
 (define-public gnu-pw-mgr
   (package
     (name "gnu-pw-mgr")
-    (version "2.7")
+    (version "2.7.4")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-"
                           version ".tar.xz"))
       (sha256
-       (base32
-        "1ra8in91qx6n8jydb8kwl2rnqaa2hix5pyawn6nvyqs815h9gx17"))))
+       (base32 "0fhwvsmsqpw0vnivarfg63l8pgwqfv7d5wi6l80jpb41dj6qpjz8"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -50,7 +50,7 @@
              #t))
          (add-before 'check 'pre-check
            (lambda _
-             ;; In build environment, There is no /dev/tty
+             ;; In the build environment, there is no /dev/tty.
              (substitute* "tests/base.test"
                (("/dev/tty") "/dev/null"))
              #t)))))
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index 8f58ce332a..dcee4dc166 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2020 Prafulla Giri <pratheblackdiamond@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
 
 (define-module (gnu packages gnucash)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
@@ -48,6 +50,7 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
@@ -82,6 +85,7 @@
        ("libxslt" ,libxslt)
        ("webkitgtk" ,webkitgtk)
        ("aqbanking" ,aqbanking)
+       ("python" ,python)
        ("perl-date-manip" ,perl-date-manip)
        ("perl-finance-quote" ,perl-finance-quote)
        ("tzdata" ,tzdata-for-tests)))
@@ -95,9 +99,10 @@
     (propagated-inputs
      ;; dconf is required at runtime according to README.dependencies.
      `(("dconf" ,dconf)))
-    (outputs '("out" "doc" "debug"))
+    (outputs '("out" "doc" "debug" "python"))
     (arguments
      `(#:test-target "check"
+       #:configure-flags '("-DWITH_PYTHON=ON")
        #:make-flags '("GUILE_AUTO_COMPILE=0")
        #:modules ((guix build cmake-build-system)
                   ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
@@ -149,6 +154,20 @@
                (symlink (string-append docs "/share/gnome")
                         (string-append doc-output "/share/gnome"))
                #t)))
+         (add-after 'install 'split-python-bindings
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (python-output (assoc-ref outputs "python"))
+                    (python-bindings (string-append
+                                      "lib/python"
+                                      ,(version-major+minor
+                                        (package-version python)))))
+               (mkdir-p (string-append python-output "/" python-bindings))
+               (copy-recursively
+                (string-append out "/" python-bindings)
+                (string-append python-output "/" python-bindings))
+               (delete-file-recursively
+                (string-append out "/" python-bindings)))))
          (add-after 'install-docs 'wrap-programs
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (for-each (lambda (prog)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 4cf2ae8e70..4bb3a5addf 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -106,6 +106,7 @@
                         (match (string-take target
                                             (string-index target #\-))
                           ("armhf" "arm-unknown-linux-gnueabi")
+                          ("mips64el" "mips-unknown-linux-gnu")
                           (x
                            (string-append x "-unknown-linux-gnu")))))
                    (symlink
@@ -167,7 +168,7 @@ generation.")
 (define-public libassuan
   (package
     (name "libassuan")
-    (version "2.5.3")
+    (version "2.5.4")
     (source
      (origin
       (method url-fetch)
@@ -175,7 +176,7 @@ generation.")
                           version ".tar.bz2"))
       (sha256
        (base32
-        "00p7cpvzf0q3qwcgg51r9d0vbab4qga2xi8wpk2fgd36710b1g4i"))))
+        "1w7vnnycq4z7gf4bk38pi4hrb8qrrzgfpz3cd7frwldxnfbfx060"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error" ,libgpg-error)
@@ -195,7 +196,7 @@ provided.")
 (define-public libksba
   (package
     (name "libksba")
-    (version "1.3.5")
+    (version "1.5.0")
     (source
      (origin
       (method url-fetch)
@@ -204,7 +205,7 @@ provided.")
             version ".tar.bz2"))
       (sha256
        (base32
-        "0h53q4sns1jz1pkmhcz5wp9qrfn9f5g9i3vjv6dafwzzlvblyi21"))))
+        "1fm0mf3wq9fmyi1rmc1vk2fafn6liiw2mgxml3g7ybbb44lz2jmf"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error" ,libgpg-error)))
@@ -254,7 +255,7 @@ compatible to GNU Pth.")
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.2.23")
+    (version "2.2.25")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
@@ -262,7 +263,7 @@ compatible to GNU Pth.")
               (patches (search-patches "gnupg-default-pinentry.patch"))
               (sha256
                (base32
-                "0p6ss4f3vlkf91pmp27bmvfr5bdxxi0pb3dmxpqljglbsx4mxd8h"))))
+                "02n3klqbyzxyil13sg4wa0pcwr7vs7zjaslis926yjxg8yr0fly5"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -325,52 +326,6 @@ libskba (working with X.509 certificates and CMS data).")
     (properties '((ftp-server . "ftp.gnupg.org")
                   (ftp-directory . "/gcrypt/gnupg")))))
 
-(define-public gnupg-2.0
-  (package (inherit gnupg)
-    (version "2.0.30")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
-                                  ".tar.bz2"))
-              (sha256
-               (base32
-                "0wax4cy14hh0h7kg9hj0hjn9424b71z8lrrc5kbsasrn9xd7hag3"))))
-    (native-inputs '())
-    (inputs
-     `(("adns" ,adns)
-       ("bzip2" ,bzip2)
-       ("curl" ,curl)
-       ("libassuan" ,libassuan)
-       ("libgcrypt" ,libgcrypt)
-       ("libgpg-error" ,libgpg-error)
-       ("libksba" ,libksba)
-       ("pth" ,pth)
-       ("openldap" ,openldap)
-       ("zlib" ,zlib)
-       ("readline" ,readline)))
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (add-before 'configure 'patch-config-files
-          (lambda _
-            (substitute* "tests/openpgp/Makefile.in"
-              (("/bin/sh") (which "sh")))
-            #t))
-        (add-after 'install 'rename-v2-commands
-          (lambda* (#:key outputs #:allow-other-keys)
-            ;; Upstream suggests removing the trailing '2' from command names:
-            ;; <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22883#58>.
-            (let ((out (assoc-ref outputs "out")))
-              (with-directory-excursion (string-append out "/bin")
-                (rename-file "gpgv2" "gpgv")
-                (rename-file "gpg2" "gpg")
-
-                ;; Keep the old name around to ease transition.
-                (symlink "gpgv" "gpgv2")
-                (symlink "gpg" "gpg2")
-                #t)))))))
-   (properties `((superseded . ,gnupg)))))
-
 (define-public gnupg-1
   (package (inherit gnupg)
     (version "1.4.23")
@@ -400,13 +355,13 @@ libskba (working with X.509 certificates and CMS data).")
 (define-public gpgme
   (package
     (name "gpgme")
-    (version "1.14.0")
+    (version "1.15.0")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2"))
       (sha256
-       (base32 "01s3rlspykbm9vmi5rfbdm3d20ip6yni69r48idqzlmhlq8ggwff"))))
+       (base32 "0nqfipv5s4npfidsm1rs3kpq0r0av9bfqfd5r035jibx5k0jniqb"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gnupg" ,gnupg)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index e619271409..b5cbb4cebf 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -550,8 +550,8 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "78.3.1-guix0-preview1")
-(define %icecat-build-id "20200926000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "78.5.0-guix0-preview1")
+(define %icecat-build-id "20201117000000") ;must be of the form YYYYMMDDhhmmss
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -573,11 +573,11 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "1savwk91vhvg096w289xwpjvqbbd2ibfad90081hirlzd1kpvljz"))))
+              "1442yjmwz69hkfcvh8kkb60jf4c9ms0pac04nc3xw2da13v4zxai"))))
 
-         (upstream-icecat-base-version "78.3.1") ; maybe older than base-version
+         (upstream-icecat-base-version "78.5.0") ; maybe older than base-version
          ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
-         (gnuzilla-commit "cd2af837fce69145effef83def6993d244887b03")
+         (gnuzilla-commit "bcfe407570cae32d00dd33a268de0e0593166f7b")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -589,7 +589,7 @@ from forcing GEXP-PROMISE."
                                       (string-take gnuzilla-commit 8)))
             (sha256
              (base32
-              "0266gp8vs4avlfdnr8dj7b47msxv1vkd0xpnifp04v4scvgj0yaj"))))
+              "1pg8fjjg91qyrv7za585ds1xrdvmybbkf2jmkff107fh5y23lxrg"))))
 
          ;; 'search-patch' returns either a valid file name or #f, so wrap it
          ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
@@ -1161,11 +1161,11 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))
 
 ;; Update this together with icecat!
-(define %icedove-build-id "20201007000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20201117000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "78.3.2")
+    (version "78.5.0")
     (source icecat-source)
     (properties
      `((cpe-name . "thunderbird_esr")))
@@ -1445,7 +1445,7 @@ standards of the IceCat project.")
         ;; in the Thunderbird release tarball.  We don't use the release
         ;; tarball because it duplicates the Icecat sources and only adds the
         ;; "comm" directory, which is provided by this repository.
-        ,(let ((changeset "6ee0e0ff64f4ccda9c478426d0b5d15cd583f8e6"))
+        ,(let ((changeset "92abc26b9c80383e974fb0234f22e06fea793be2"))
            (origin
              (method hg-fetch)
              (uri (hg-reference
@@ -1454,7 +1454,7 @@ standards of the IceCat project.")
              (file-name (string-append "thunderbird-" version "-checkout"))
              (sha256
               (base32
-               "0w8p35x53g5anck69xnpn688600n2pyx9c7y640szl1ssdsgch82")))))
+               "0468k3qrqs9w1vva2fdxvwqdsypqpsdy5iixgx58dqivchg4qlf9")))))
        ("autoconf" ,autoconf-2.13)
        ("cargo" ,rust-1.41 "cargo")
        ("clang" ,clang)
@@ -1476,6 +1476,27 @@ standards of the IceCat project.")
 Thunderbird.  It supports email, news feeds, chat, calendar and contacts.")
     (license license:mpl2.0)))
 
+(define-public icedove/wayland
+  (package/inherit icedove
+    (name "icedove-wayland")
+    (arguments
+     (substitute-keyword-arguments (package-arguments icedove)
+       ((#:phases phases)
+        `(modify-phases ,phases
+          (replace 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib"))
+                    (gtk (assoc-ref inputs "gtk+"))
+                    (gtk-share (string-append gtk "/share"))
+                    (pulseaudio (assoc-ref inputs "pulseaudio"))
+                    (pulseaudio-lib (string-append pulseaudio "/lib")))
+               (wrap-program (car (find-files lib "^icedove$"))
+                 `("MOZ_ENABLE_WAYLAND" = ("1"))
+                 `("XDG_DATA_DIRS" prefix (,gtk-share))
+                 `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib)))
+               #t)))))))))
+
 (define-public firefox-decrypt
   (package
     (name "firefox-decrypt")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 0c9b269c2a..92533cfd50 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -59,6 +59,7 @@
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
@@ -232,7 +233,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
   (package
     (inherit go-1.4)
     (name "go")
-    (version "1.14.4")
+    (version "1.14.10")
     (source
      (origin
        (method git-fetch)
@@ -242,7 +243,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08bazglmqp123c9dgrxflvxd011xsqfxsgah2kzbvca0mhm6qcm3"))))
+         "0h1nmqzjc0xxpn6n2hjq7692gdqkznagzdmiq9490yzkrrii2lgk"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.4)
        ((#:system system)
@@ -918,6 +919,30 @@ time.")
  spec in Go.")
       (license license:bsd-3))))
 
+(define-public go-golang-org-x-xerrors
+  (let ((commit "5ec99f83aff198f5fbd629d6c8d8eb38a04218ca")
+        (revision "0"))
+    (package
+      (name "go-golang-org-x-xerrors")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/xerrors")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1dbzc3gmf2haazpv7cgmv97rq40g2xzwbglc17vas8dwhgwgwrzb"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "golang.org/x/xerrors"))
+      (synopsis "Go 1.13 error values")
+      (description
+       "This package holds the transition packages for the new Go 1.13 error values.")
+      (home-page "https://godoc.org/golang.org/x/xerrors")
+      (license license:bsd-3))))
+
 (define-public go-github-com-burntsushi-toml
   (package
     (name "go-github-com-burntsushi-toml")
@@ -1120,7 +1145,7 @@ optimized for performance yet simple to use.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tv42/httpunix.git")
+               (url "https://github.com/tv42/httpunix")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1689,7 +1714,7 @@ finding resources located relative to the executable file.")
          (method git-fetch)
          (uri (git-reference
                (url
-                "https://github.com/ayufan/golang-kardianos-service.git")
+                "https://github.com/ayufan/golang-kardianos-service")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3975,7 +4000,7 @@ colorized or SGR defined output to the standard output.")
 (define-public go-github-com-google-go-cmp-cmp
   (package
     (name "go-github-com-google-go-cmp-cmp")
-    (version "0.3.1")
+    (version "0.5.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3984,11 +4009,13 @@ colorized or SGR defined output to the standard output.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1caw49i0plkjxir7kdf5qhwls3krqwfmi7g4h392rdfwi3kfahx1"))))
+                "0qchy411jm9q2l9mf7x3ry2ycaqp9xdhf2nx14qrpzcxfigv2705"))))
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/google/go-cmp/cmp"
        #:unpack-path "github.com/google/go-cmp"))
+    (propagated-inputs
+     `(("go-golang-org-x-xerrors" ,go-golang-org-x-xerrors)))
     (synopsis "Determine equality of values in Go")
     (description "This package provides a more powerful and safer
 alternative to @code{reflect.DeepEqual} for comparing whether two values
@@ -5127,7 +5154,7 @@ escape sequences and color conversions.")
      `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth)))
     (home-page "https://github.com/olekukonko/tablewriter/")
     (synopsis "Generate ASCII table")
-    (description "This package allows to generate ASCII table.  Features:
+    (description "This package generates ASCII tables.  Features:
 @itemize
 @item automatic Padding
 @item support Multiple Lines
@@ -5827,3 +5854,190 @@ log package.  All the functionality of the built-in package still exists and
 is unchanged.  This package contains a series of small enhancements and
 additions.")
       (license license:bsd-3))))
+
+(define-public go-github-com-frankban-quicktest
+  (package
+    (name "go-github-com-frankban-quicktest")
+    (version "1.11.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/frankban/quicktest")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0b1b44b2hli2p969gqz30z8v9z6ahlklpqzi17nwk1lsjz9yv938"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/frankban/quicktest"))
+    (propagated-inputs
+     `(("go-github-com-google-go-cmp-cmp" ,go-github-com-google-go-cmp-cmp)
+       ("go-github-com-kr-pretty" ,go-github-com-kr-pretty)))
+    (home-page "https://github.com/frankban/quicktest")
+    (synopsis "Quick helpers for testing Go applications")
+    (description
+     "Package quicktest provides a collection of Go helpers for writing
+tests.")
+    (license license:expat)))
+
+(define-public go-github-com-bep-golibsass
+  (package
+    (name "go-github-com-bep-golibsass")
+    (version "0.7.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bep/golibsass")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0xk3m2ynbydzx87dz573ihwc4ryq0r545vz937szz175ivgfrhh3"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "libsass_src")
+           #t))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/bep/golibsass/libsass"
+       #:unpack-path "github.com/bep/golibsass"
+       ;; The dev build tag modifies the build to link to system libsass
+       ;; instead of including the bundled one (which we remove.)
+       ;; https://github.com/bep/golibsass/blob/v0.7.0/internal/libsass/a__cgo_dev.go
+       #:build-flags '("-tags" "dev")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'generate-bindings
+           ;; Generate bindings for system libsass, replacing the
+           ;; pre-generated bindings.
+           (lambda* (#:key inputs unpack-path #:allow-other-keys)
+             (mkdir-p (string-append "src/" unpack-path "/internal/libsass"))
+             (let ((libsass-src (string-append (assoc-ref inputs "libsass-src") "/src")))
+               (substitute* (string-append "src/" unpack-path "/gen/main.go")
+                 (("filepath.Join\\(rootDir, \"libsass_src\", \"src\"\\)")
+                  (string-append "\"" libsass-src "\""))
+                 (("../../libsass_src/src/")
+                  libsass-src)))
+             (invoke "go" "generate" (string-append unpack-path "/gen"))
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? import-path #:allow-other-keys)
+             (if tests?
+                 (invoke "go" "test" import-path "-tags" "dev"))
+             #t)))))
+    (propagated-inputs
+     `(("libsass" ,libsass)))
+    (native-inputs
+     `(("go-github-com-frankban-quicktest" ,go-github-com-frankban-quicktest)
+       ("libsass-src" ,(package-source libsass))))
+    (home-page "https://github.com/bep/golibsass")
+    (synopsis "Easy to use Go bindings for LibSass")
+    (description
+     "This package provides SCSS compiler support for Go applications.")
+    (license license:expat)))
+
+(define-public go-github-com-hashicorp-go-syslog
+  (package
+    (name "go-github-com-hashicorp-go-syslog")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hashicorp/go-syslog")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "09vccqggz212cg0jir6vv708d6mx0f9w5bxrcdah3h6chgmal6v1"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/hashicorp/go-syslog"))
+    (home-page "https://github.com/hashicorp/go-syslog")
+    (synopsis "Golang syslog wrapper, cross-compile friendly")
+    (description "This package is a very simple wrapper around log/syslog")
+    (license license:expat)))
+
+(define-public go-github-com-hjson-hjson-go
+  (package
+    (name "go-github-com-hjson-hjson-go")
+    (version "3.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hjson/hjson-go")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1dfdiahimg6z9idg8jiqxwnlwjnmasbjccx8gnag49cz4yfqskaz"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/hjson/hjson-go"))
+    (home-page "https://hjson.org/")
+    (synopsis "Human JSON implementation for Go")
+    (description "Hjson is a syntax extension to JSON.  It is intended to be
+used like a user interface for humans, to read and edit before passing the
+JSON data to the machine.")
+    (license license:expat)))
+
+(define-public go-golang-zx2c4-com-wireguard
+  (package
+    (name "go-golang-zx2c4-com-wireguard")
+    (version "0.0.20200320")
+    (source
+     (origin
+       (method git-fetch)
+       ;; NOTE: module URL is a redirect
+       ;; target: git.zx2c4.com/wireguard-go
+       ;; source: golang.zx2c4.com/wireguard
+       (uri (git-reference
+             (url "https://git.zx2c4.com/wireguard-go/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0fy4qsss3i3pkq1rpgjds4aipbwlh1dr9hbbf7jn2a1c63kfks0r"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "golang.zx2c4.com/wireguard"))
+    (propagated-inputs
+     `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+       ("go-golang-org-x-net" ,go-golang-org-x-net)
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)
+       ("go-golang-org-x-text" ,go-golang-org-x-text)))
+    (home-page "https://git.zx2c4.com/wireguard")
+    (synopsis "Implementation of WireGuard in Go")
+    (description "This package is a Go Implementation of WireGuard.")
+    (license license:expat)))
+
+(define-public go-github-com-kardianos-minwinsvc
+  (package
+    (name "go-github-com-kardianos-minwinsvc")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kardianos/minwinsvc")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0z941cxymkjcsj3p5l3g4wm2da3smz7iyqk2wbs5y8lmxd4kfzd8"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/kardianos/minwinsvc"))
+    (home-page "https://github.com/kardianos/minwinsvc/")
+    ;; some packages (Yggdrasil) need it to compile
+    ;; it's a tiny package and it's easier to bundle it than to patch it out
+    (synopsis "Minimal windows only service stub for Go")
+    (description "Go programs designed to run from most *nix style operating
+systems can import this package to enable running programs as services without
+modifying them.")
+    (license license:zlib)))
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
index 26ea15ba56..44c356e2ff 100644
--- a/gnu/packages/gpodder.scm
+++ b/gnu/packages/gpodder.scm
@@ -38,7 +38,7 @@
 (define-public gpodder
   (package
     (name "gpodder")
-    (version "3.10.16")
+    (version "3.10.17")
     (source
      (origin
        (method git-fetch)
@@ -46,8 +46,7 @@
              (url "https://github.com/gpodder/gpodder")
              (commit version)))
        (sha256
-        (base32
-         "0pbpaasd7kj6y25nm45y1qyb9sxd4570f7g6zkfcpf6pa3nx7qkq"))
+        (base32 "0wrk8d4q6ricbcjzlhk10vrk1qg9hi323kgyyd0c8nmh7a82h8pd"))
        (file-name (git-file-name name version))
        (patches (search-patches "gpodder-disable-updater.patch"))))
     (build-system python-build-system)
@@ -177,21 +176,20 @@ downloading episode status changes.")
 (define-public python-podcastparser
   (package
     (name "python-podcastparser")
-    (version "0.6.5")
+    (version "0.6.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "podcastparser" version))
        (sha256
-        (base32 "0k62ppg20i41gcc5x8ddjn7zbpy47hqpxzrq9257g2c71m4qw07b"))))
+        (base32 "0m24r2qhck0win44xfhxajbppkss4ha6am0042s0xyq3408883m3"))))
     (native-inputs
-     `(("python-coverage" ,python-coverage)
-       ("python-nose" ,python-nose)))
+     `(("python-pytest" ,python-pytest)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _ (invoke "nosetests"))))))
+           (lambda _ (invoke "pytest"))))))
     (build-system python-build-system)
     (home-page "http://gpodder.org/podcastparser")
     (synopsis "Simplified and fast RSS parser Python library")
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index fcb6ffc9bb..3b3e038cc8 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -151,7 +151,7 @@ between two other data points.")
 (define-public gama
   (package
     (name "gama")
-    (version "2.10")
+    (version "2.12")
     (source
       (origin
         (method url-fetch)
@@ -159,7 +159,12 @@ between two other data points.")
                             version ".tar.gz"))
         (sha256
          (base32
-          "14im3ahh849rildvs4qsk009jywf9w84vcmh7w44ajmlwcw7xiys"))))
+          "0zfilasalsy29b7viw0iwgnl9bkvp0l87gpxl1hx7379l8agwqyj"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (delete-file-recursively "lib/expat")
+            #t))))
     (build-system gnu-build-system)
     (arguments '(#:parallel-tests? #f)) ; race condition
     (native-inputs
@@ -179,7 +184,7 @@ coordinates as well as partial support for adjustments in global coordinate syst
 (define-public gpxsee
   (package
     (name "gpxsee")
-    (version "7.34")
+    (version "7.36")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -188,7 +193,7 @@ coordinates as well as partial support for adjustments in global coordinate syst
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0cdq2bqgkcqcyvasnrlgpl97b0kfi65iq2q6yy7dpp9xw4w764b1"))))
+                "18vsw6hw6kn5wmr4iarhx1v8q455j60fhf0hq69jkfyarl56b99j"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index db390fed5e..86c4b98bf1 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -57,18 +57,19 @@
 (define-public igraph
   (package
     (name "igraph")
-    (version "0.8.2")
+    (version "0.8.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/igraph/igraph/releases/"
                            "download/" version "/igraph-" version ".tar.gz"))
        (sha256
-        (base32 "158flvl80qh1l1ikfa04p1dzh8kapsvm6q80x3ih5gwcgcg4g2ki"))))
+        (base32 "127q6q40kbmvd62yhbz6dlfk370qiq98s1iscyagpgbpjwb4xvyf"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
-       (list "--with-external-glpk"
+       (list "--disable-static"
+             "--with-external-glpk"
              "--with-external-blas"
              "--with-external-lapack")))
     (inputs
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index d0bf577139..7a61084f24 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -90,6 +90,7 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
+  #:use-module (gnu packages stb)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages upnp)
@@ -120,7 +121,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/NVIDIA/eglexternalplatform.git")
+         (url "https://github.com/NVIDIA/eglexternalplatform")
          (commit version)))
        (file-name
         (git-file-name name version))
@@ -171,7 +172,7 @@ application-facing EGL functions.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/NVIDIA/egl-wayland.git")
+         (url "https://github.com/NVIDIA/egl-wayland")
          (commit version)))
        (file-name
         (git-file-name name version))
@@ -201,7 +202,7 @@ EGLStream families of extensions.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/hodefoting/mmm.git")
+         (url "https://github.com/hodefoting/mmm")
          (commit version)))
        (file-name
         (git-file-name name version))
@@ -230,7 +231,7 @@ framebuffer graphics, audio output and input event.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/deniskropp/DirectFB.git")
+         (url "https://github.com/deniskropp/DirectFB")
          (commit "DIRECTFB_1_7_7")))
        (file-name (git-file-name name version))
        (sha256
@@ -300,7 +301,7 @@ minimum of resource usage and overhead.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/deniskropp/flux.git")
+         (url "https://github.com/deniskropp/flux")
          (commit "e45758a")))
        (file-name (git-file-name name version))
        (sha256
@@ -430,14 +431,14 @@ with the @command{autotrace} utility or as a C library, @code{libautotrace}.")
 (define-public blender
   (package
     (name "blender")
-    (version "2.83.5")
+    (version "2.83.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.blender.org/source/"
                                   "blender-" version ".tar.xz"))
               (sha256
                (base32
-                "0xyawly00a59hfdb6b7va84k5fhcv2mxnzd77vs22bzi9y7sap43"))))
+                "106w9vi6z0gi2nbr73g8pm40w3wn7dkjcibzvvzbc786yrnzvkhb"))))
     (build-system cmake-build-system)
     (arguments
       (let ((python-version (version-major+minor (package-version python))))
@@ -855,26 +856,102 @@ other vector formats such as:
 @end itemize")
     (license license:gpl2+)))
 
+(define-public dear-imgui
+  (package
+    (name "dear-imgui")
+    (version "1.79")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocornut/imgui")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0x26igynxp6rlpp2wfc5dr7x6yh583ajb7p23pgycn9vqikn318q"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "VERSION=" ,version))
+       #:tests? #f                      ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-debian-files
+           (lambda* (#:key inputs #:allow-other-keys)
+             (invoke "tar" "xvf" (assoc-ref inputs "debian-files"))
+             (apply invoke "patch" "-Np1" "-i"
+                    (find-files "debian/patches" "\\.patch$"))
+             (substitute* "Makefile"
+               (("<stb/") "<")          ; Guix doesn't use this subdirectory
+               ;; Don't build or install the static library.
+               (("^all: .*") "all: $(SHLIB) $(PCFILE)"))
+             (substitute* (list "imgui.pc.in"
+                                "Makefile")
+               ;; Don't link against a non-existent library.
+               (("-lstb") ""))
+             #t))
+         (delete 'configure)            ; no configure script
+         (replace 'install
+           ;; The default ‘install’ target installs the static library.  Don't.
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "install-shared" "install-header"
+                    make-flags))))))
+    (native-inputs
+     `(("debian-files"
+        ;; Upstream doesn't provide a build system.  Use Debian's.
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "mirror://debian/pool/main/i/imgui/imgui_"
+                               version "+ds-1.debian.tar.xz"))
+           (sha256
+            (base32 "1xhk34pzpha6k5l2j150capq66y8czhmsi04ib09wvb34ahqxpby"))))
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("stb-rect-pack" ,stb-rect-pack)
+       ("stb-truetype" ,stb-truetype)))
+    (home-page "https://github.com/ocornut/imgui")
+    (synopsis "Immediate-mode C++ GUI library with minimal dependencies")
+    (description
+     "Dear ImGui is a @acronym{GUI, graphical user interface} library for C++.
+It creates optimized vertex buffers that you can render anytime in your
+3D-pipeline-enabled application.  It's portable, renderer-agnostic, and
+self-contained, without external dependencies.
+
+Dear ImGui is aimed at content creation, visualization, and debugging tools as
+opposed to average end-user interfaces.  Hence it favors simplicity and
+productivity but lacks certain features often found in higher-level libraries.
+It is particularly suited to integration in game engine tooling, real-time 3D
+applications, full-screen applications, and embedded platforms without standard
+operating system features.")
+    (license license:expat)))           ; some examples/ use the zlib licence
+
 (define-public ogre
   (package
     (name "ogre")
-    (version "1.12.6")
+    (version "1.12.9")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/OGRECave/ogre")
-             (commit (string-append "v" version))
-             (recursive? #t)))          ;for Dear ImGui submodule
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ap3krrl55hswv1n2r3ijf3xrb3kf9dnqvwyrc0fgnc7j7vd45sk"))))
+        (base32 "0b0pwh31nykrfhka6jqwclfx1pxzhj11vkl91951d63kwr5bbzms"))))
     (build-system cmake-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'unpack-dear-imgui
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "dear-imgui-source")
+                               "../dear-imgui-source")
+             #t))
          (add-before 'configure 'pre-configure
-           ;; CMakeLists.txt forces CMAKE_INSTALL_RPATH value.  As
+           ;; CMakeLists.txt forces a CMAKE_INSTALL_RPATH value.  As
            ;; a consequence, we cannot suggest ours in configure flags.  Fix
            ;; it.
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -888,6 +965,7 @@ other vector formats such as:
                                   (string-append out "/lib/OGRE"))
                             ";")))
          (list (string-append "-DCMAKE_INSTALL_RPATH=" runpath)
+               "-DIMGUI_DIR=../dear-imgui-source"
                "-DOGRE_BUILD_DEPENDENCIES=OFF"
                "-DOGRE_BUILD_TESTS=TRUE"
                "-DOGRE_INSTALL_DOCS=TRUE"
@@ -895,6 +973,7 @@ other vector formats such as:
                "-DOGRE_INSTALL_SAMPLES_SOURCE=TRUE"))))
     (native-inputs
      `(("boost" ,boost)
+       ("dear-imgui-source" ,(package-source dear-imgui))
        ("doxygen" ,doxygen)
        ("googletest" ,googletest-1.8)
        ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 0f2afb99de..b5c4774d5c 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +32,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
@@ -323,21 +325,34 @@ can be used either as a standalone application, or as a Python library.")
 (define-public python-pydot
   (package
     (name "python-pydot")
-    (version "1.2.4")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pydot" version))
        (sha256
         (base32
-         "1dhy4jpp646jslh2yks6klwwbaxcs905byyny880gl1iap8y5llj"))))
+         "00az4cbf8bv447lkk9xi6pjm7gcc7ia33y4pm71fwfwis56rv76l"))
+       (patches (search-patches "python-pydot-regression-test.patch"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           ;; Taken from .travis.yaml
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (with-directory-excursion "test"
+                 (invoke "python" "pydot_unittest.py")))
+             #t)))))
     (native-inputs
      ;; For tests.
-     `(("python-chardet" ,python-chardet)))
+     `(("graphviz" ,graphviz)
+       ("python-chardet" ,python-chardet)))
     (propagated-inputs
      `(("python-pyparsing" ,python-pyparsing)))
-    (home-page "https://github.com/erocarrera/pydot")
+    (home-page "https://github.com/pydot/pydot")
     (synopsis "Python interface to Graphviz's DOT language")
     (description
      "Pydot provides an interface to create, handle, modify and process
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 0ab93e3a65..256f298346 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -95,7 +96,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/occipital/OpenNI2.git")
+         (url "https://github.com/occipital/OpenNI2")
          (commit (string-append "v" version "-debian"))))
        (file-name (git-file-name name version))
        (sha256
@@ -167,7 +168,7 @@ module for the DMA capture of the video flow.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/CCExtractor/ccextractor.git")
+         (url "https://github.com/CCExtractor/ccextractor")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -220,7 +221,7 @@ and very fast.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/Libvisual/libvisual.git")
+         (url "https://github.com/Libvisual/libvisual")
          (commit (string-append name "-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -268,7 +269,7 @@ applications that want audio visualisation and audio visualisation plugins.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/Libvisual/libvisual.git")
+         (url "https://github.com/Libvisual/libvisual")
          (commit (string-append name "-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -397,7 +398,7 @@ arrays of data.")
 (define-public gstreamer-docs
   (package
     (name "gstreamer-docs")
-    (version "1.18.0")
+    (version "1.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -405,7 +406,7 @@ arrays of data.")
                     "/gstreamer-docs-" version ".tar.xz"))
               (sha256
                (base32
-                "0x6ix6dj3ndc1y133xidb21a4bamdfjh88mxxxld05d78wd1ayda"))))
+                "0npnsr1z4x951nw8bfcna1xlgi1p0b4qb291jj3pywlib2lscnnv"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -451,16 +452,16 @@ the GStreamer multimedia framework.")
   '((add-after 'unpack 'increase-test-timeout
       (lambda _
         (substitute* "tests/check/meson.build"
-          (("'CK_DEFAULT_TIMEOUT', '20'")
-           "'CK_DEFAULT_TIMEOUT', '60'")
-          (("timeout ?: 3 \\* 60")
-           "timeout: 9 * 60"))
+          (("'CK_DEFAULT_TIMEOUT', '[0-9]*'")
+           "'CK_DEFAULT_TIMEOUT', '600'")
+          (("timeout ?: .*\\)")
+           "timeout: 90 * 60)"))
         #t))))
 
 (define-public gstreamer
   (package
     (name "gstreamer")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
       (method url-fetch)
@@ -469,7 +470,7 @@ the GStreamer multimedia framework.")
             version ".tar.xz"))
       (sha256
        (base32
-        "01bq1k0gj603zyhq975zl09q4zla12mxqvhmk9fyn2kcn12r5w0g"))))
+        "1fpcpsw740svvdxvvwn0hly5i72miizm4s0mbid10ji83zi8vpvr"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -520,7 +521,7 @@ This package provides the core library and elements.")
 (define-public gst-plugins-base
   (package
     (name "gst-plugins-base")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
       (method url-fetch)
@@ -528,7 +529,7 @@ This package provides the core library and elements.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "15vqvcy842vhbic3w7l4yvannzazdgwggzv2x8f9m02hm78vsakn"))))
+        "0hf66sh8d4x2ksfnvaq2rqrrfq0vi0pv6wbh9i5jixrhvvbm99hv"))))
     (build-system meson-build-system)
     (propagated-inputs
      `(("glib" ,glib)              ;required by gstreamer-sdp-1.0.pc
@@ -582,7 +583,7 @@ for the GStreamer multimedia library.")
 (define-public gst-plugins-good
   (package
     (name "gst-plugins-good")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
        (method url-fetch)
@@ -591,12 +592,21 @@ for the GStreamer multimedia library.")
          "https://gstreamer.freedesktop.org/src/" name "/"
          name "-" version ".tar.xz"))
        (sha256
-        (base32 "1b4b3a6fm2wyqpnx300pg1sz01m9qhfajadk3b7sbzisg8vvqab3"))))
+        (base32 "0v329xi4qhlfh9aksfyviryqk9lclm4wj1lxrjnbdv4haldfj472"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
        #:phases
        (modify-phases %standard-phases
+         ,@%common-gstreamer-phases
+         (add-after 'unpack 'fix-broken-test
+           (lambda _
+             ;; Fix test failure on 32-bit.  Remove for > 1.18.1.
+             ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/803
+             (substitute* "tests/check/elements/qtdemux.c"
+               (("10000000")
+                "G_GUINT64_CONSTANT (10000000)"))
+             #t))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running X server.
@@ -671,14 +681,14 @@ model to base your own plug-in on, here it is.")
 (define-public gst-plugins-bad
   (package
     (name "gst-plugins-bad")
-    (version "1.18.0")
+    (version "1.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gstreamer.freedesktop.org/src/"
                                   name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0pqqq5bs9fjwcmbwgsgxs2dx6gznhxs7ii5pmjkslr6xmlfap0pk"))))
+                "1cn18cbqyysrxnrk5bpxdzd5xcws9g2kmm5rbv00cx6rhn69g5f1"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -705,7 +715,13 @@ model to base your own plug-in on, here it is.")
                  (("'GST_PLUGIN_SYSTEM_PATH_1_0', ''")
                   (string-append "'GST_PLUGIN_SYSTEM_PATH_1_0', '"
                                  gst-plugins-good "/lib/gstreamer-1.0'"))
-                 ;; This test occasionally times out, see
+
+                 ;; FIXME: Why is this failing.
+                 ((".*elements/dash_mpd\\.c.*") "")
+
+                 ;; These tests are flaky and occasionally time out:
+                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/932
+                 ((".*elements/curlhttpsrc\\.c.*") "")
                  ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1412
                  ((".*elements/dtls\\.c.*") ""))
                #t))))))
@@ -736,6 +752,7 @@ model to base your own plug-in on, here it is.")
        ("libgudev" ,libgudev)
        ("libkate" ,libkate)
        ("libmodplug" ,libmodplug)
+       ("libnice" ,libnice)
        ("librsvg" ,librsvg)
        ("libsndfile" ,libsndfile)
        ("libsrtp" ,libsrtp)
@@ -760,6 +777,7 @@ model to base your own plug-in on, here it is.")
        ;; GStreamer is not yet compatible with srt > 1.4.1.
        ("srt" ,srt-1.4.1)
        ("x265" ,x265)
+       ("webrtc-audio-processing" ,webrtc-audio-processing)
        ("wayland" ,wayland)))
     (home-page "https://gstreamer.freedesktop.org/")
     (synopsis "Plugins for the GStreamer multimedia library")
@@ -771,7 +789,7 @@ par compared to the rest.")
 (define-public gst-plugins-ugly
   (package
     (name "gst-plugins-ugly")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
        (method url-fetch)
@@ -779,12 +797,13 @@ par compared to the rest.")
         (string-append "https://gstreamer.freedesktop.org/src/"
                        name "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "10p0nyzighvkciaspxnhlr7d7n4acrv96lf483i8l988bvj48rk8"))))
+        (base32 "09gpbykjchw3lb51ipxj53fy238gr9mg9jybcg5135pb56w6rk8q"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
        #:phases
        (modify-phases %standard-phases
+         ,@%common-gstreamer-phases
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running X server.
@@ -829,7 +848,7 @@ think twice about shipping them.")
 (define-public gst-libav
   (package
     (name "gst-libav")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
        (method url-fetch)
@@ -838,7 +857,7 @@ think twice about shipping them.")
          "https://gstreamer.freedesktop.org/src/" name "/"
          name "-" version ".tar.xz"))
        (sha256
-        (base32 "0sm0sfdlalimpkf7a7rk7whvyvmmfi2kly2z3q2j5z53x5f3zya2"))))
+        (base32 "1n1fkkbxxsndblnbm0c2ziqp967hrz5gag6z36xbpvqk4sy1g9rr"))))
     (build-system meson-build-system)
     (native-inputs
      `(("perl" ,perl)
@@ -859,7 +878,7 @@ decoders, muxers, and demuxers provided by FFmpeg.")
 (define-public gst-editing-services
   (package
     (name "gst-editing-services")
-    (version "1.18.0")
+    (version "1.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -867,7 +886,7 @@ decoders, muxers, and demuxers provided by FFmpeg.")
                     "gst-editing-services-" version ".tar.xz"))
               (sha256
                (base32
-                "1a00f07v0yjqz1hydhgkjjarm4rk99yjicbz5wkfl5alhzag1bjd"))))
+                "09rr5a198p1r9wcbsjl01xg6idkfkgj5h9x7xxywarb5i7qv6g79"))))
     (build-system meson-build-system)
     (arguments
      ;; FIXME: 16/22 failing tests.
@@ -894,7 +913,7 @@ non-linear editors.")
 (define-public python-gst
   (package
     (name "python-gst")
-    (version "1.18.0")
+    (version "1.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -902,7 +921,7 @@ non-linear editors.")
                     "gst-python-" version ".tar.xz"))
               (sha256
                (base32
-                "0ifx2s2j24sj2w5jm7cxyg1kinnhbxiz4x0qp3gnsjlwbawfigvn"))))
+                "1xpncj9xdn6ycnmrqnk6iaqaia658licyj08cxbjgcvs5x18kcj2"))))
     (build-system meson-build-system)
     (arguments
      `(#:modules ((guix build meson-build-system)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index d378e6557b..3c930722b5 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -173,6 +173,12 @@ affine transformation (scale, rotation, shear, etc.).")
    (license license:lgpl2.1) ; or Mozilla Public License 1.1
    (home-page "https://cairographics.org/")))
 
+(define-public cairo-sans-poppler
+  ;; Variant used to break the dependency cycle between Poppler and Cairo.
+  (package/inherit cairo
+    (inputs (alist-delete "poppler" (package-inputs cairo)))
+    (properties `((hidden? . #t)))))
+
 (define-public cairo-xcb
   (package
     (inherit cairo)
@@ -1503,7 +1509,7 @@ write GNOME applications.")
 (define-public perl-cairo
   (package
     (name "perl-cairo")
-    (version "1.107")
+    (version "1.108")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1511,7 +1517,7 @@ write GNOME applications.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0sg1gf1f2pjq7pji0zsv4rbi3bzpsx82z98k7yqxafzrvlkf27ay"))))
+                "1nh5iya63q6j2w0cdi24x2ygpi8k8wwccnbh8cisnx8nqmywnhk0"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-extutils-depends" ,perl-extutils-depends)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 88c0586dc9..8285928b3c 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -31,6 +31,7 @@
 ;;; Copyright © 2020 Masaya Tojo <masaya@tojo.tokyo>
 ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
 ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
+;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -53,6 +54,7 @@
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages aspell)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
@@ -619,6 +621,45 @@ is not available for Guile 2.0.")
 (define-public guile3.0-fibers
   (deprecated-package "guile3.0-fibers" guile-fibers))
 
+(define-public guile-filesystem
+  (package
+    (name "guile-filesystem")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/leoprikler/guile-filesystem.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf-wrapper)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)))
+    (inputs
+     `(("guile" ,guile-3.0)))
+    (home-page "https://gitlab.com/leoprikler/guile-filesystem")
+    (synopsis "Complementary library to Guile's built-in file system procedures")
+    (description "@code{guile-filesystem} provides a set of utility functions,
+that augment Guile's support for handling files and their names.")
+    (license license:lgpl3+)))
+
+(define-public guile2.0-filesystem
+  (package
+    (inherit guile-filesystem)
+    (name "guile2.0-filesystem")
+    (inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-filesystem
+  (package
+    (inherit guile-filesystem)
+    (name "guile2.2-filesystem")
+    (inputs `(("guile" ,guile-2.2)))))
+
 (define-public guile-syntax-highlight
   (package
     (name "guile-syntax-highlight")
@@ -845,8 +886,8 @@ Vicare Scheme and IronScheme.  Right now it contains:
     (license license:bsd-3)))
 
 (define-public guile-prometheus
-  (let ((commit "8980f39bafb3e59d6de17e7b311df4932e5b5182")
-        (revision "1"))
+  (let ((commit "12d3d9de676f518eccf0a384d461cc4c035939b0")
+        (revision "2"))
     (package
     (name "guile-prometheus")
     (version (git-version "0" revision commit))
@@ -857,7 +898,7 @@ Vicare Scheme and IronScheme.  Right now it contains:
                     (commit commit)))
               (sha256
                (base32
-                "04vwza78b5nq0szzxzvpnfjyfkb4pqf2w4dx3kz1f082n01xnwss"))
+                "0d45g2719xy84l2si5h1fw7vlig4pqqkhp5zlw9dlr5gzaa3yrrs"))
               (file-name (string-append name "-" version "-checkout"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -925,8 +966,8 @@ convenient nested tree operations.")
     (license license:gpl3+)))
 
 (define-public guile-simple-zmq
-  (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
-        (revision "3"))
+  (let ((commit "5fc3b7190d31c258ce969c2a5d2ad38c66a09d09")
+        (revision "4"))
     (package
       (name "guile-simple-zmq")
       (version (git-version "0.0.0" revision commit))
@@ -938,7 +979,7 @@ convenient nested tree operations.")
                (commit commit)))
          (sha256
           (base32
-           "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
+           "0inhvl5jssvbw3nd129wdahfwyvy1iciq403wzf0algbvl1fqs7z"))
          (file-name (git-file-name name version))))
       (build-system guile-build-system)
       (arguments
@@ -1064,20 +1105,19 @@ allows users to interact with the Guile REPL through Jupyter.")
 (define-public guile-sparql
   (package
    (name "guile-sparql")
-   (version "0.0.7")
+   (version "0.0.8")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "https://github.com/roelj/guile-sparql/releases/download/"
                   version "/guile-sparql-" version ".tar.gz"))
             (sha256
-             (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
+             (base32 "1jf4972f9fpm0rd865xpnc9mzl3xv6vhfnp0iygadydy905z9nln"))))
    (build-system gnu-build-system)
-   (arguments `(#:tests? #f)) ; There are no tests.
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
-    `(("guile" ,guile-2.2)))
+    `(("guile" ,guile-3.0)))
    (home-page "https://github.com/roelj/guile-sparql")
    (synopsis "SPARQL module for Guile")
    (description "This package provides the functionality to query a SPARQL
@@ -1763,8 +1803,8 @@ capabilities.")
     (license license:gpl3+)))
 
 (define-public g-golf
-  (let ((commit   "84e894eb7945c3bcdf7f8d5135c1be3efa524c92")
-        (revision "822"))
+  (let ((commit   "ef830107b9765bd6a2da848d0cbe45e11374c0b5")
+        (revision "839"))
     (package
       (name "g-golf")
       (version (git-version "0.1.0" revision commit))
@@ -1776,7 +1816,7 @@ capabilities.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1pkcij65zy2lkip5yrfzj85nq17pp9mrf0d4sk6hpjqr4kd0bxd5"))))
+          (base32 "0r472hvmf447kqvkahp1wy4irb5gy8y793hm8r9rc511smdx66cw"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -2265,7 +2305,7 @@ inspired by the SCSH regular expression system.")
     (description "Haunt is a static site generator written in Guile
 Scheme.  Haunt features a functional build system and an extensible
 interface for reading articles in any format.")
-    (home-page "http://haunt.dthompson.us")
+    (home-page "https://dthompson.us/projects/haunt.html")
     (license license:gpl3+)))
 
 (define-public guile2.2-haunt
@@ -2933,7 +2973,7 @@ more expressive and flexible than the traditional @code{format} procedure.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/scheme-requests-for-implementation/srfi-180.git")
+               (url "https://github.com/scheme-requests-for-implementation/srfi-180")
                (commit commit)))
          (sha256
           (base32
@@ -3044,7 +3084,7 @@ in C using Gtk+-3 and WebKitGtk.")
     (license license:gpl3+)))
 
 (define-public emacsy-minimal
-  (let ((commit "v0.4.1-31-g415d96f"))
+  (let ((commit "v0.4.1-37-g5f91ee6"))
     (package
       (inherit emacsy)
       (name "emacsy-minimal")
@@ -3057,7 +3097,7 @@ in C using Gtk+-3 and WebKitGtk.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1cs1i1hxwrv0a512j54yrvfh743nci1chx6qjgp4jyzq98ncvxgg"))))
+          (base32 "03ym14g9qhjqmryr5z065kynqm8yhmvnbs2djl6vp3i9cmqln8cl"))))
       (build-system gnu-build-system)
       (inputs
        `(("guile" ,guile-2.2)
@@ -3110,7 +3150,7 @@ perform geometrical transforms on JPEG images.")
 (define-public nomad
   (package
     (name "nomad")
-    (version "0.2.0-alpha-100-g6a565d3")
+    (version "0.2.0-alpha-199-g3e7a475")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3119,7 +3159,7 @@ perform geometrical transforms on JPEG images.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0anmprm63a88kii251rl296v1g4iq62r6n4nssx5jbc0hzkknanz"))))
+                "0p0ha6prp7pyadp61clbhc6b55023vxzfwy14j2qygb2mkq7fhic"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -3130,7 +3170,7 @@ perform geometrical transforms on JPEG images.")
        ("guile" ,guile-2.2)
        ("glib:bin" ,glib "bin")
        ("texinfo" ,texinfo)
-       ("gettext" ,gnu-gettext)
+       ("gettext" ,gettext-minimal)
        ("perl" ,perl)))
     (inputs
      `(;; Guile
@@ -3150,6 +3190,7 @@ perform geometrical transforms on JPEG images.")
        ("gtk+:bin" ,gtk+ "bin")
        ("webkitgtk" ,webkitgtk)
        ("gtksourceview" ,gtksourceview)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("vte" ,vte)
        ;; Gstreamer
        ("gstreamer" ,gstreamer)
@@ -3693,7 +3734,7 @@ models and also supports a rich set of boolean query operators.")
     (source (origin (method git-fetch)
                     (uri (git-reference
                           (url
-                           "https://github.com/o-nly/torrent.git")
+                           "https://github.com/o-nly/torrent")
                           (commit version)))
                     (file-name (git-file-name name version))
                     (sha256
@@ -3836,7 +3877,7 @@ manipulating graphs and datasets.")
 (define-public guile-jsonld
   (package
     (name "guile-jsonld")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
       (origin
         (method git-fetch)
@@ -3846,13 +3887,13 @@ manipulating graphs and datasets.")
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "0zfn3nwlz6xzip1j8xbj768dc299r037cfc81bk6kwl9xhzkjbrg"))))
+          "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f)); require network
     (propagated-inputs
      `(("guile-gnutls" ,gnutls)
-       ("guile-json" ,guile-json-3)
+       ("guile-json" ,guile-json-4)
        ("guile-rdf" ,guile-rdf)))
     (inputs
      `(("guile" ,guile-3.0)))
@@ -4007,3 +4048,100 @@ features not found in the standard read procedure such as a compatible mode
 with support for other RnRS standards and a tolerant mode that continues on
 errors.")
     (license license:expat)))
+
+(define-public guile-avahi
+  (let ((commit "6d43caf64f672a9694bf6c98bbf7a734f17a51e8")
+        (revision "1"))
+    (package
+      (name "guile-avahi")
+      (version (git-version "0.4.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "git://git.sv.gnu.org/guile-avahi.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0fvrf8x22yvc71180hd3xkhspg9yvadi0pbv8shzlsaxqncwy1m9"))
+                (modules '((guix build utils)))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:modules (((guix build guile-build-system)
+                     #:select (target-guile-effective-version))
+                    ,@%gnu-build-system-modules)
+         #:imported-modules ((guix build guile-build-system)
+                             ,@%gnu-build-system-modules)
+         #:make-flags
+         '("GUILE_AUTO_COMPILE=0")    ;to prevent guild warnings
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'fix-guile-avahi-file-name
+           (lambda* (#:key outputs #:allow-other-keys)
+             (with-directory-excursion "src"
+               (invoke "make" "install"
+                       "-j" (number->string
+                             (parallel-job-count))))
+             (let* ((out   (assoc-ref outputs "out"))
+                    (files (find-files "modules" ".scm")))
+               (substitute* files
+                 (("\"guile-avahi-v-0\"")
+                  (format #f "\"~a/lib/guile/~a/extensions/guile-avahi-v-0\""
+                          out (target-guile-effective-version))))
+               #t))))))
+      (inputs
+       `(("guile" ,guile-3.0)
+         ("avahi" ,avahi)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("pkg-config" ,pkg-config)
+         ("texinfo" ,texinfo)))
+      (synopsis "Guile bindings to Avahi")
+      (description
+       "This package provides bindings for Avahi.  It allows programmers to
+use functionalities of the Avahi client library from Guile Scheme programs.
+Avahi itself is an implementation of multicast DNS (mDNS) and DNS Service
+Discovery (DNS-SD).")
+      (home-page "https://www.nongnu.org/guile-avahi/")
+      (license license:lgpl3+))))
+
+(define-public guile-mkdir-p
+  (package
+    (name "guile-mkdir-p")
+    (version "1.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://code.divoplade.fr/mkdir-p.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "01k20rjcv6p0spmw8ls776aar6bfw0jxw46d2n12w0cb2p79xjv8"))
+       (file-name (git-file-name name version))
+       (snippet
+        `(begin
+           (with-output-to-file ".tarball-version"
+             (lambda _ (format #t "~a~%" ,version)))
+           #t))))
+    (build-system gnu-build-system)
+    (arguments `())
+    (native-inputs
+     `(("guile" ,guile-3.0)
+       ("texinfo" ,texinfo)
+       ("autoconf" ,autoconf)
+       ("autoconf-archive" ,autoconf-archive)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("gettext" ,gettext-minimal)))
+    (inputs `(("guile" ,guile-3.0)))
+    (synopsis "Implementation of a recursive @code{mkdir} for Guile")
+    (description
+     "This package provides within the @code{(mkdir-p)} module the
+@code{mkdir-p} function that tries to create the chain of directories
+recursively.  It also provides new versions of @code{open-output-file},
+@code{call-with-output-file} and @code{with-output-to-file} to create the
+directory of its argument if it does not exist.")
+    (home-page "https://mkdir-p.divoplade.fr")
+    (license license:asl2.0)))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 912df146f1..442f49cbcb 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -677,17 +677,17 @@ Guile's foreign function interface.")
 (define-public guile-bytestructures
   (package
     (name "guile-bytestructures")
-    (version "1.0.7")
+    (version "1.0.9")
     (home-page "https://github.com/TaylanUB/scheme-bytestructures")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url home-page)
-                    (commit (string-append "v" version))))
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0q0habjiy3h9cigb7q1br9kz6z212dn2ab31f6dgd3rrmsfn5rvb"))))
+                "0r59sqrvwbsknw21bf44bppi6wdhd2rl2v5dw9i2vij3v8w7pgkm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("GUILE_AUTO_COMPILE=0")     ;to prevent guild warnings
@@ -728,16 +728,16 @@ type system, elevating types to first-class status.")
 (define-public guile-git
   (package
     (name "guile-git")
-    (version "0.3.0")
+    (version "0.4.0")
     (home-page "https://gitlab.com/guile-git/guile-git.git")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.com/guile-git/guile-git/uploads/"
-                                  "4c563d8e7e1ff84396abe8ca7011bcaf/guile-git-"
+                                  "2600bb0dfdfb00bfbe46811dccad51d8/guile-git-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0c5i3d16hp7gp9rd78vk9zc45js8bphf92m4lbb5gyi4l1yl7kkm"))))
+                "1kxyg9x2aa1pg69cl48wysq0pbxvwfahy1xpl5ab6p8babhf7kic"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("GUILE_AUTO_COMPILE=0")))     ; to prevent guild warnings
@@ -760,15 +760,7 @@ manipulate repositories of the Git version control system.")
   (package-for-guile-2.2 guile-git))
 
 (define-public guile2.0-git
-  (let ((base (package-for-guile-2.0 guile-git)))
-    (package
-      (inherit base)
-      ;; Libgit2's Guile test driver requires (ice-9 textual-ports), which is
-      ;; not in Guile 2.0.  Thus, keep LIBGIT2 as-is here (i.e., built against
-      ;; Guile 2.2).
-      (inputs `(("libgit2" ,libgit2)
-                ,@(srfi-1:alist-delete "libgit2"
-                                       (package-inputs base)))))))
+  (package-for-guile-2.0 guile-git))
 
 (define-deprecated-guile3.0-package guile3.0-git)
 
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index e4a8112a7d..b1aaa21980 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -289,7 +289,7 @@ be dangerous and may void your CPU or system board's warranty.")
 (define-public wavemon
   (package
     (name "wavemon")
-    (version "0.9.1")
+    (version "0.9.2")
     (source
      (origin
        (method git-fetch)
@@ -298,7 +298,24 @@ be dangerous and may void your CPU or system board's warranty.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "109ycwnjjqc2vpnd8b86njfifczlxglnyv4rh2qmbn2i5nw2wryg"))))
+        (base32 "0y984wm03lzqf7bk06a07mw7d1fzjsp9x7zxcvlx4xqmv7wlgb29"))
+       (patches
+        (list
+         ;; Two upstream commits required to find the correct <ncurses.h>.
+         (origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://github.com/uoaerg/wavemon/commit/"
+                 "ce7f9c4da90767bb50e4b80cdb3cee61264d8d12.patch"))
+           (sha256
+            (base32 "04b4qbsa5l0jr41dkj0c8yw74lm8z8b50nw1iwas6hnzq41dwdm3")))
+         (origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://github.com/uoaerg/wavemon/commit/"
+                 "31e3def1c7332ad830bd966e7d21b343b4f2da54.patch"))
+           (sha256
+            (base32 "0kyv3sbkv9hl8b88xnk6bq550axh9wzfjlhp3jbvqd4fqf7663br")))))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 1de8b040f1..c6045279c0 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -339,18 +339,18 @@ to @code{cabal repl}).")
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "8.20201007")
+    (version "8.20201116")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
-        (base32 "0v11yc4kkxnzvwqry277dpjwlavinrjiagfw0ayhrfwd703j1y8a"))))
+        (base32 "0xv7n9f6l90l4k964675v0lgs22gcy97ic86mbfb40rl0fk0jalr"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
-       '("--flags=-Android -Assistant -Pairing -Webapp")
+       '("--flags=-Android -Webapp")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-shell-for-tests
@@ -457,6 +457,7 @@ to @code{cabal repl}).")
        ("ghc-feed" ,ghc-feed)
        ("ghc-filepath-bytestring" ,ghc-filepath-bytestring)
        ("ghc-free" ,ghc-free)
+       ("ghc-hinotify" ,ghc-hinotify)
        ("ghc-hslogger" ,ghc-hslogger)
        ("ghc-http-client" ,ghc-http-client)
        ("ghc-http-conduit" ,ghc-http-conduit)
@@ -466,7 +467,10 @@ to @code{cabal repl}).")
        ("ghc-memory" ,ghc-memory)
        ("ghc-monad-control" ,ghc-monad-control)
        ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-mountpoints" ,ghc-mountpoints)
        ("ghc-network" ,ghc-network)
+       ("ghc-network-info" ,ghc-network-info)
+       ("ghc-network-multicast" ,ghc-network-multicast)
        ("ghc-old-locale" ,ghc-old-locale)
        ("ghc-optparse-applicative" ,ghc-optparse-applicative)
        ("ghc-persistent" ,ghc-persistent)
@@ -483,6 +487,7 @@ to @code{cabal repl}).")
        ("ghc-split" ,ghc-split)
        ("ghc-stm-chans" ,ghc-stm-chans)
        ("ghc-tagsoup" ,ghc-tagsoup)
+       ("ghc-torrent" ,ghc-torrent)
        ("ghc-unix-compat" ,ghc-unix-compat)
        ("ghc-unordered-containers" ,ghc-unordered-containers)
        ("ghc-utf8-string" ,ghc-utf8-string)
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 6176b95988..df7a667623 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1035,3 +1036,29 @@ regular development cycle and regressions caught early.
 See the documentation in \"Test.Inspection\" or the project webpage for more
 examples and more information.")
     (license license:expat)))
+
+(define-public ghc-easytest
+  (package
+    (name "ghc-easytest")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/easytest/easytest-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0gdyawzlw6d15yz7ji599xjgfr0g7l1iq11ffr4aw3j6g3dc6m8i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-random" ,ghc-random)
+       ("ghc-call-stack" ,ghc-call-stack)))
+    (home-page "https://github.com/joelburget/easytest")
+    (synopsis "Testing library for Haskell")
+    (description "EasyTest is a testing toolkit, meant to replace most uses of
+QuickCheck, SmallCheck, HUnit, and frameworks like Tasty, etc.  Tests can be
+written with ordinary Haskell code, with control flow explicit and under
+programmer control.")
+    (license license:expat)))
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index a4269599f6..9a149187b6 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@gmail.com>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -417,6 +418,48 @@ contents of the HTTP connection.  It also provides higher-level functions
 which allow you to avoid direct usage of conduits.")
     (license license:bsd-3)))
 
+(define-public ghc-http-reverse-proxy
+  (package
+    (name "ghc-http-reverse-proxy")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/http-reverse-proxy/"
+             "http-reverse-proxy-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1a6i5njf85b2lhg8m83njagcf09wih5q2irnyb2890s724qr277v"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-word8" ,ghc-word8)
+       ("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-http-client" ,ghc-http-client)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-network" ,ghc-network)
+       ("ghc-conduit" ,ghc-conduit)
+       ("ghc-conduit-extra" ,ghc-conduit-extra)
+       ("ghc-wai-logger" ,ghc-wai-logger)
+       ("ghc-resourcet" ,ghc-resourcet)
+       ("ghc-unliftio" ,ghc-unliftio)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)))
+    (native-inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-http-conduit" ,ghc-http-conduit)))
+    (home-page
+     "https://github.com/fpco/http-reverse-proxy")
+    (synopsis
+     "Reverse proxy HTTP requests, either over raw sockets or with WAI")
+    (description
+     "Provides a simple means of reverse-proxying HTTP requests.  The raw
+approach uses the same technique as leveraged by keter, whereas the WAI
+approach performs full request/response parsing via WAI and http-conduit.")
+    (license license:bsd-3)))
+
 (define-public ghc-wai
   (package
     (name "ghc-wai")
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5b9da15630..1655b88cb0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -26,6 +26,8 @@
 ;;; Copyright © 2020 JoJo <jo@jo.zone>
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
+;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
+;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -995,6 +997,32 @@ Users wishing to have an improved Prelude can use BasicPrelude.  Developers
 wishing to create a new prelude should use CorePrelude.")
     (license license:expat)))
 
+(define-public ghc-bencode
+  (package
+    (name "ghc-bencode")
+    (version "0.6.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/bencode/bencode-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0znv0y3b3zm5jvhlvj5f5s7y93db67j9yd59w1bnrw2pqv30gqaq"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (native-inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://hackage.haskell.org/package/bencode")
+    (synopsis "Parsers and printers for bencoded data")
+    (description
+     "This library provides parsers and printers for bencoded data.  Bencode
+is the encoding used by the peer-to-peer file sharing system BitTorrent for
+storing and transmitting loosely structured data.")
+    (license license:bsd-3)))
+
 (define-public ghc-bifunctors
   (package
     (name "ghc-bifunctors")
@@ -1551,6 +1579,118 @@ constructor which can be parameterised by a string-like type like:
 the resulting type will be insensitive to cases.")
     (license license:bsd-3)))
 
+(define-public ghc-cassava
+  (package
+    (name "ghc-cassava")
+    (version "0.5.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/cassava/cassava-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "01h1zrdqb313cjd4rqm1107azzx4czqi018c2djf66a5i7ajl3dk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-only" ,ghc-only)
+       ("ghc-text-short" ,ghc-text-short)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-quickcheck-instances" ,ghc-quickcheck-instances)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "1ph8rf91z4nf1ryrh9s4gd1kq98jlgk2manwddkpch8k0n9xvfk4")
+       #:configure-flags '("--flags=-bytestring--lt-0_10_4")))
+    (home-page "https://github.com/haskell-hvr/cassava")
+    (synopsis "CSV parsing and encoding library")
+    (description
+     "@code{cassava} is a library for parsing and encoding
+@url{https://tools.ietf.org/html/rfc4180, RFC 4180} compliant @url{https://
+en.wikipedia.org/wiki/Comma-separated_values, comma-separated values (CSV)}
+data, which is a textual line-oriented format commonly used for exchanging
+tabular data.
+
+@code{cassava}'s API includes support for:
+
+@itemize @bullet
+
+@item
+Index-based record-conversion
+@item
+Name-based record-conversion
+@item
+Typeclass directed conversion of fields and records
+@item
+Built-in field-conversion instances for standard types
+@item
+Customizable record-conversion instance derivation via GHC generics
+@item
+Low-level @url{https://hackage.haskell.org/package/bytestring), bytestring}
+builders (see @url{https://hackage.haskell.org/package/cassava-0.5.2.0/docs/
+Data-Csv-Builder.html, Data.Csv.Builder})
+@item
+Incremental decoding and encoding API (see @url{https://hackage.haskell.org/
+package/cassava-0.5.2.0/docs/Data-Csv-Incremental.html, Data.Csv.Incremental})
+@item
+Streaming API for constant-space decoding (see @url{https://hackage.haskell.org/
+package/cassava-0.5.2.0/docs/Data-Csv-Streaming.html, Data.Csv.Streaming})
+@end itemize
+
+Moreover, this library is designed to be easy to use; for instance, here's a
+very simple example of encoding CSV data:
+
+@verbatim
+>>> Data.Csv.encode [(\"John\",27),(\"Jane\",28)]
+\"John,27\r\nJane,28\r\n\"
+@end verbatim
+")
+    (license license:bsd-3)))
+
+(define-public ghc-cassava-megaparsec
+  (package
+    (name "ghc-cassava-megaparsec")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/cassava-megaparsec/"
+             "cassava-megaparsec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0q4skw98nzy6icmgpwqvgw0c5pqcgi25rf7nmwh2pksvv94pi3p3"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-cassava" ,ghc-cassava)
+       ("ghc-megaparsec" ,ghc-megaparsec)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)))
+    (native-inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-megaparsec" ,ghc-hspec-megaparsec)))
+    (home-page "https://github.com/stackbuilders/cassava-megaparsec")
+    (synopsis "Megaparsec parser for CSV files that plays nicely with Cassava")
+    (description
+     "Alternative parser for the Cassava package written with Megaparsec that
+provides for better error messages at the expense of some speed.")
+    (license license:expat)))
+
 (define-public ghc-cborg
   (package
     (name "ghc-cborg")
@@ -2608,6 +2748,36 @@ a vocabulary for working with them.")
 @code{ghc-contravariant} package.")
     (license license:expat)))
 
+(define-public ghc-control-monad-free
+  (package
+    (name "ghc-control-monad-free")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/"
+             "package/control-monad-free/control-monad-free-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1habgf7byffqf1rqjkzpihvdhclaafgqsqpfpwp3fgpj5ayk1j33"))))
+    (build-system haskell-build-system)
+    (home-page "https://github.com/pepeiborra/control-monad-free")
+    (synopsis "Free monads and monad transformers")
+    (description
+     "This package provides datatypes to construct Free monads, Free monad
+transformers, and useful instances.  In addition it provides the constructs to
+avoid quadratic complexity of left associative bind, as explained in:
+
+@itemize @bullet
+@item
+Janis Voigtlander, @cite{Asymptotic Improvement of Computations over
+Free Monads, MPC'08}
+@end itemize")
+    (license license:public-domain)))
+
 (define-public ghc-convertible
   (package
     (name "ghc-convertible")
@@ -2634,6 +2804,30 @@ pure @code{Either} value.  This means that you need not remember which specific
 function performs the conversion you desire.")
     (license license:bsd-3)))
 
+(define-public ghc-csv
+  (package
+    (name "ghc-csv")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/csv/csv-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "00767ai09wm7f0yzmpqck3cpgxncpr9djnmmz5l17ajz69139x4c"))))
+    (build-system haskell-build-system)
+    (home-page "http://hackage.haskell.org/package/csv")
+    (synopsis "CSV loader and dumper")
+    (description
+     "This library parses and dumps documents that are formatted according to
+RFC 4180, @cite{The common Format and MIME Type for Comma-Separated
+Values (CSV) Files}.  This format is used, among many other things, as a
+lingua franca for spreadsheets, and for certain web services.")
+    (license license:expat)))
+
 (define-public ghc-data-accessor
   (package
     (name "ghc-data-accessor")
@@ -2932,6 +3126,35 @@ to add D-Bus support to Haskell applications, without the awkward
 interfaces common to foreign bindings.")
     (license license:asl2.0)))
 
+(define-public ghc-decimal
+  (package
+    (name "ghc-decimal")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/Decimal/Decimal-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0k7kh05mr2f54w1lpgq1nln0h8k6s6h99dyp5jzsb9cfbb3aap2p"))))
+    (build-system haskell-build-system)
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
+    (home-page "https://github.com/PaulJohnson/Haskell-Decimal")
+    (synopsis "Decimal numbers with variable precision")
+    (description
+     "A decimal number has an integer mantissa and a negative exponent.
+The exponent can be interpreted as the number of decimal places in the
+value.")
+    (license license:bsd-3)))
+
 (define-public ghc-deepseq-generics
   (package
     (name "ghc-deepseq-generics")
@@ -3342,16 +3565,18 @@ Writer monad), where list append quickly becomes too expensive.")
     (build-system haskell-build-system)
     (arguments `(#:tests? #f))          ; FIXME: missing test framework
     (inputs
-     `(("ghc-syb" ,ghc-syb)
-       ("ghc-paths" ,ghc-paths)
-       ("ghc-base-compat" ,ghc-base-compat)
+     `(("ghc-base-compat" ,ghc-base-compat)
        ("ghc-code-page" ,ghc-code-page)
-       ("ghc-hunit" ,ghc-hunit)
-       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-paths" ,ghc-paths)
+       ("ghc-syb" ,ghc-syb)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
        ("ghc-quickcheck" ,ghc-quickcheck)
-       ("ghc-stringbuilder" ,ghc-stringbuilder)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-mockery" ,ghc-mockery)
+       ("ghc-setenv" ,ghc-setenv)
        ("ghc-silently" ,ghc-silently)
-       ("ghc-setenv" ,ghc-setenv)))
+       ("ghc-stringbuilder" ,ghc-stringbuilder)))
     (home-page
      "https://github.com/sol/doctest#readme")
     (synopsis "Test interactive Haskell examples")
@@ -4214,7 +4439,7 @@ file contents, and more.")
 (define-public ghc-filepath-bytestring
   (package
     (name "ghc-filepath-bytestring")
-    (version "1.4.2.1.1")
+    (version "1.4.2.1.6")
     (source
      (origin
        (method url-fetch)
@@ -4223,7 +4448,7 @@ file contents, and more.")
               "filepath-bytestring-" version ".tar.gz"))
        (sha256
         (base32
-         "06shdskjj391hb9295slm9gg2rbn5fdq5v6fg0mgn3yl5dv8q5dx"))))
+         "11xrrzdkm5i96dazbz0gi1qp8nnj2lwbnxzwy7f4cnahskz4f4g7"))))
     (build-system haskell-build-system)
     (native-inputs
      `(("ghc-quickcheck" ,ghc-quickcheck)))
@@ -5638,6 +5863,62 @@ feature, allowing applications to subscribe to notifications when a file is
 accessed or modified.")
     (license license:bsd-3)))
 
+(define-public ghc-hledger-lib
+  (package
+    (name "ghc-hledger-lib")
+    (version "1.14.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/hledger-lib/hledger-lib-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1w6qp01cak6spnpldm01czlm6i5a2alw47w76875l2nagrc4rfp2"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-ansi-terminal" ,ghc-ansi-terminal)
+       ("ghc-base-compat-batteries" ,ghc-base-compat-batteries)
+       ("ghc-blaze-markup" ,ghc-blaze-markup)
+       ("ghc-call-stack" ,ghc-call-stack)
+       ("ghc-cassava" ,ghc-cassava)
+       ("ghc-cassava-megaparsec" ,ghc-cassava-megaparsec)
+       ("ghc-cmdargs" ,ghc-cmdargs)
+       ("ghc-data-default" ,ghc-data-default)
+       ("ghc-decimal" ,ghc-decimal)
+       ("ghc-easytest" ,ghc-easytest)
+       ("ghc-extra" ,ghc-extra)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-glob" ,ghc-glob)
+       ("ghc-hashtables" ,ghc-hashtables)
+       ("ghc-megaparsec" ,ghc-megaparsec)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-old-time" ,ghc-old-time)
+       ("ghc-parser-combinators" ,ghc-parser-combinators)
+       ("ghc-pretty-show" ,ghc-pretty-show)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-split" ,ghc-split)
+       ("ghc-tabular" ,ghc-tabular)
+       ("ghc-uglymemo" ,ghc-uglymemo)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs `(("ghc-doctest" ,ghc-doctest)))
+    (home-page "https://hledger.org")
+    (synopsis "Reusable library providing the core functionality of hledger")
+    (description
+     "A reusable library containing hledger's core functionality.
+This is used by most hledger* packages so that they support the same common
+file formats, command line options, reports etc.
+
+hledger is a robust, cross-platform set of tools for tracking money, time, or
+any other commodity, using double-entry accounting and a simple, editable file
+format, with command-line, terminal and web interfaces.  It is a Haskell
+rewrite of Ledger, and one of the leading implementations of Plain Text
+Accounting.")
+    (license license:gpl3)))
+
 (define-public ghc-hmatrix
   (package
     (name "ghc-hmatrix")
@@ -5841,6 +6122,34 @@ are described in a file named @code{package.yaml}.  Both @code{cabal2nix} and
 @code{package.yaml}.")
     (license license:expat)))
 
+(define-public ghc-hspec-megaparsec
+  (package
+    (name "ghc-hspec-megaparsec")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/"
+             "package/hspec-megaparsec/hspec-megaparsec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0w8nn2rh01lkiwsiyqh3gviklhfmy0245rakj94dmliyljw8skfg"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec-expectations" ,ghc-hspec-expectations)
+       ("ghc-megaparsec" ,ghc-megaparsec)))
+    (native-inputs
+     `(("ghc-hspec" ,ghc-hspec)))
+    (home-page "https://github.com/mrkkrp/hspec-megaparsec")
+    (synopsis "Utility functions for testing Megaparsec parsers with Hspec")
+    (description
+     "Provides a small set of helper functions for testing Megaparsec parsers
+with Hspec.")
+    (license license:bsd-3)))
+
 (define-public ghc-hs-bibutils
   (package
     (name "ghc-hs-bibutils")
@@ -7169,6 +7478,48 @@ Transformers\" available @uref{http://okmij.org/ftp/papers/LogicT.pdf,
 online}.")
     (license license:bsd-3)))
 
+(define-public ghc-lucid
+  (package
+    (name "ghc-lucid")
+    (version "2.9.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/lucid/lucid-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "156wniydd1hlb7rygbm95zln8ky8lai8rn2apkkv0rax9cdw6jrh"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mmorph" ,ghc-mmorph)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-bifunctors" ,ghc-bifunctors)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "1f0whk5ncanxfjjanrf6rqyncig2xgc5mh2j0sqy3nrlyjr9aqq9")))
+    (home-page "https://github.com/chrisdone/lucid")
+    (synopsis "Haskell DSL for rendering HTML")
+    (description "Clear to write, read and edit Haskell DSL for HTML.
+
+@itemize @bullet
+@item
+Names are consistent, and do not conflict with base or are keywords
+(all have suffix @code{-}).
+@item
+Same combinator can be used for attributes and elements
+(e.g. @code{style_}).
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-lzma
   (package
     (name "ghc-lzma")
@@ -7975,6 +8326,28 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mountpoints
+  (package
+    (name "ghc-mountpoints")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/mountpoints/mountpoints-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1hnm31pqcffphyc463wf0vbik9fzm5lb2r4wjdc1y4dqzmjdzz37"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/mountpoints")
+    (synopsis "Haskell library for listing mount points")
+    (description "This library provides Haskell bindings for checking
+currently mounted filesystems.")
+    (license license:lgpl2.1+)))
+
 (define-public ghc-mtl-compat
   (package
     (name "ghc-mtl-compat")
@@ -8234,6 +8607,36 @@ getting a list of all the network interfaces and their respective
 IPv4, IPv6 and MAC addresses.")
     (license license:bsd-3)))
 
+(define-public ghc-network-multicast
+  (package
+    (name "ghc-network-multicast")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/network-multicast/network-multicast-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0whvi0pbwjy6dbwfdf9rv1j3yr3lcmfp3q7a8pwq63g537l4l2l3"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-network" ,ghc-network)
+       ("ghc-network-bsd" ,ghc-network-bsd)))
+    (home-page
+     "http://hackage.haskell.org/package/network-multicast")
+    (synopsis "Simple multicast library for Haskell")
+    (description
+     "This package provides the Network.Multicast Haskell module for
+sending UDP datagrams over multicast (class D) addresses.")
+    ;; Note that this is technically under CC0 1.0 and Expat, though it's not
+    ;; totally clear what the breakdown is.  Since CC0 1.0 is effectively
+    ;; "public domain with a minimal fallback license", figuring marking it
+    ;; as effectively Expat is probably correct.
+    (license license:expat)))
+
 (define-public ghc-network-uri
   (package
     (name "ghc-network-uri")
@@ -8441,6 +8844,38 @@ old @code{time} library.  For new projects, the newer
 @uref{https://hackage.haskell.org/package/time, time library} is recommended.")
     (license license:bsd-3)))
 
+(define-public ghc-only
+  (package
+    (name "ghc-only")
+    (version "0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/Only/Only-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rdj3a629fk2vp121jq8mf2smkblrz5w3cxhlsyx6my2x29s2ymb"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "1ahk7p34kmh041mz7lyc10nhcxgv2i4z8nvzxvqm2x34gslmsbzr")))
+    (home-page "https://hackage.haskell.org/package/Only")
+    (synopsis "The 1-tuple type or single-value collection")
+    (description
+     "This package provides a canonical anonymous 1-tuple type missing from
+Haskell for attaching typeclass instances.
+
+There is also the @url{https://hackage.haskell.org/package/OneTuple, OneTuple
+package} which by using a boxed @code{data}-type provides a 1-tuple type which
+has laziness properties which are more faithful to the ones of Haskell's
+native tuples; whereas the primary purpose of @code{Only} is to provide the
+traditionally so named type-wrapper for attaching typeclass instances.")
+    (license license:bsd-3)))
+
 (define-public ghc-opengl
   (package
     (name "ghc-opengl")
@@ -8722,6 +9157,45 @@ require aeson
     (description "Safe conversions between textual types")
     (license license:isc)))
 
+(define-public ghc-text-short
+  (package
+    (name "ghc-text-short")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/text-short/text-short-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0xyrxlb602z8bc9sr2y1fag0x56a20yj5qrkvy7iwc6hnznrynxz"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-hashable" ,ghc-hashable)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+       ("ghc-quickcheck-instances"
+        ,ghc-quickcheck-instances)))
+    (arguments
+     `(#:cabal-revision
+       ("2"
+        "17cb7p0qywf2dsrq3g8qb3ssknd9wl5k0nc2pxz9gc3l8rxpkw51")))
+    (home-page "https://hackage.haskell.org/package/text-short")
+    (synopsis "Memory-efficient representation of Unicode text strings")
+    (description "This package provides the @code{ShortText} type which
+is suitable for keeping many short strings in memory.  This is similar
+to how @code{ShortByteString} relates to @code{ByteString}.
+
+The main difference between @code{Text} and @code{ShortText} is that
+@code{ShortText} uses UTF-8 instead of UTF-16 internally and also doesn't
+support zero-copy slicing (thereby saving 2 words).  Consequently, the memory
+footprint of a (boxed) @{ShortText} value is 4 words (2 words when unboxed)
+plus the length of the UTF-8 encoded payload.")
+    (license license:bsd-3)))
+
 (define-public ghc-doclayout
   (package
     (name "ghc-doclayout")
@@ -12570,6 +13044,49 @@ Unlike the filepath package, this package does not simply reuse String,
 increasing type safety.")
     (license license:expat)))
 
+(define-public ghc-tabular
+  (package
+    (name "ghc-tabular")
+    (version "0.2.2.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/tabular/tabular-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1ysgq7rrks7f98nnvxil8xz1q27hxdgz4szbjhqwzbwd209dmy0k"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-csv" ,ghc-csv)
+       ("ghc-html" ,ghc-html)))
+    (home-page "https://github.com/bgamari/tabular")
+    (synopsis "Two-dimensional data tables with rendering functions")
+    (description
+     "Tabular provides a Haskell representation of two-dimensional data
+tables, the kind that you might find in a spreadsheet or or a research report.
+It also comes with some default rendering functions for turning those tables
+into ASCII art, simple text with an arbitrary delimiter, CSV, HTML or LaTeX.
+
+Below is an example of the kind of output this library produces.  The tabular
+package can group rows and columns, each group having one of three
+separators (no line, single line, double line) between its members.
+
+@example
+
+    || memtest 1 | memtest 2 ||  time test  | time test 2
+====++===========+===========++=============+============
+A 1 ||       hog |  terrible ||        slow |      slower
+A 2 ||       pig |   not bad ||        fast |     slowest
+----++-----------+-----------++-------------+------------
+B 1 ||      good |     awful || intolerable |    bearable
+B 2 ||    better | no chance ||    crawling |     amazing
+B 3 ||       meh |   well... ||  worst ever |          ok
+
+@end example")
+    (license license:bsd-3)))
 
 (define-public ghc-tagged
   (package
@@ -13299,6 +13816,28 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-torrent
+  (package
+    (name "ghc-torrent")
+    (version "10000.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/torrent/torrent-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0m7s0q7f8c7glxzqhf2j86ch5xhk6jnzwwsa4mkywag22119c290"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bencode" ,ghc-bencode)
+       ("ghc-syb" ,ghc-syb)))
+    (home-page "https://hackage.haskell.org/package/torrent")
+    (synopsis "BitTorrent file parser and generator")
+    (description "This library provides support for parsing and generating
+BitTorrent files.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers
   (package
     (name "ghc-transformers")
@@ -13592,6 +14131,28 @@ processes.  It wraps around the @code{process} library, and intends to improve
 upon it.")
     (license license:expat)))
 
+(define-public ghc-uglymemo
+  (package
+    (name "ghc-uglymemo")
+    (version "0.1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/uglymemo/uglymemo-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ixqg5d0ly1r18jbgaa89i6kjzgi6c5hanw1b1y8c5fbq14yz2gy"))))
+    (build-system haskell-build-system)
+    (home-page "https://hackage.haskell.org/package/uglymemo")
+    (synopsis "Simple memoization function for Haskell")
+    (description
+     "This package provides a simple (but internally ugly) memoization
+function.")
+    (license license:public-domain)))
+
 (define-public ghc-unagi-chan
   (package
     (name "ghc-unagi-chan")
@@ -14468,6 +15029,48 @@ widths to the Char type.")
 Haskell value or function.")
     (license license:bsd-3)))
 
+(define-public ghc-wizards
+  (package
+    (name "ghc-wizards")
+    (version "1.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/wizards/wizards-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1clvbd1ckhvy29qrbmpkn7bya7300fq6znnps23nn3nxyrxhsr85"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-control-monad-free" ,ghc-control-monad-free)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "095qd17zrdhqmcvmslbyzfa5sh9glvvsnsvnlz31gzsmi8nnsgim")))
+    (home-page "http://hackage.haskell.org/package/wizards")
+    (synopsis "High level, generic library for interrogative user interfaces")
+    (description
+     "@code{wizards} is a package designed for the quick and painless
+development of @emph{interrogative} programs, which revolve around a dialogue
+with the user, who is asked a series of questions in a sequence much like an
+installation wizard.
+
+Everything from interactive system scripts, to installation wizards, to
+full-blown shells can be implemented with the support of @code{wizards}.
+
+It is developed transparently on top of a free monad, which separates out the
+semantics of the program from any particular interface.  A variety of backends
+exist, including console-based @code{System.Console.Wizard.Haskeline} and
+@code{System.Console.Wizard.BasicIO}, and the pure
+@code{System.Console.Wizard.Pure}.  It is also possible to write your own
+backends, or extend existing back-ends with new features.  While both built-in
+IO backends operate on a console, there is no reason why @code{wizards} cannot
+also be used for making GUI wizard interfaces.")
+    (license license:bsd-3)))
+
 (define-public ghc-wl-pprint
   (package
     (name "ghc-wl-pprint")
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b28433431c..5f49265ebb 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -19,6 +19,7 @@
 (define-module (gnu packages heads)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -161,3 +162,36 @@ done
     (synopsis "Musl-cross gcc 5 toolchain")
     (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
     (license license:isc))))
+
+;; This package provides a "dev.cpio" file usable as a base for booting Heads.
+(define-public heads-dev-cpio
+  (package
+    (name "heads-dev-cpio")
+    (version "0.1")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix cpio))
+       #:builder (begin
+                   (use-modules (guix build utils)
+                                (guix cpio)
+                                (srfi srfi-26))
+                   (mkdir-p "dev") ; input directory.
+                   (let* ((out (assoc-ref %outputs "out"))
+                          (libexec (string-append out "/libexec")))
+                     (mkdir-p libexec)
+                     (call-with-output-file (string-append libexec "/dev.cpio")
+                      (lambda (port)
+                        (write-cpio-archive '("dev" "dev/console") port
+                         #:file->header
+                         (lambda (name)
+                           (if (string=? "dev/console" name)
+                               (special-file->cpio-header* name 'char-special 5 1 #o600)
+                               (file->cpio-header* name))))))
+                     #t))))
+    (synopsis "@file{dev.cpio} for Heads")
+    (description "This package provides a @file{dev.cpio} file usable as a
+base for heads' initrd.")
+    (home-page "http://osresearch.net/")
+    (license license:bsd-2)))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 05e09263a0..1efec0a0b8 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -495,7 +495,7 @@ For PDF support, install the @emph{mupdf} package.")
 (define-public qview
   (package
     (name "qview")
-    (version "3.0")
+    (version "4.0")
     (source
      (origin
        (method git-fetch)
@@ -504,29 +504,22 @@ For PDF support, install the @emph{mupdf} package.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "15a91bs3wcqhgf76wzigbn10hayg628j84pq4j2vaxar94ak0vk7"))))
+        (base32 "15n9cq7w3ckinnx38hvncxrbkv4qm4k51sal41q4y0pkvhmafhnr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'configure
-           (lambda _
-             (invoke "qmake")))
-         ;; Installation process hard-codes "/usr/bin", possibly
-         ;; prefixed.
-         (add-after 'configure 'fix-install-directory
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (substitute* "Makefile"
-                 (("\\$\\(INSTALL_ROOT\\)/usr") out))
-               #t)))
-         ;; Don't phone home or show "Checking for updates..." in the
-         ;; About menu.
+               (invoke "qmake" (string-append "PREFIX=" out)))))
+         ;; Don't phone home or show "Checking for updates..." in the About
+         ;; menu.
          (add-before 'build 'disable-auto-update
            (lambda _
              (substitute* "src/qvaboutdialog.cpp"
-               (("ui->updateLabel->setText\\(updateText\\);") "")
-               (("requestUpdates\\(\\);") ""))
+               (("qvApp->checkUpdates\\(\\);") "")
+               (("updateText\\(\\);") ""))
              #t)))))
     (inputs
      `(("qtbase" ,qtbase)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 03bcf1a2fa..ebebd79385 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -79,6 +80,7 @@
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses) #:prefix license:)
@@ -91,6 +93,7 @@
   #:use-module (guix build-system copy)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system scons)
   #:use-module (guix deprecation)
   #:use-module (srfi srfi-1))
@@ -791,7 +794,7 @@ images of initially unknown height.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/uclouvain/openjpeg-data.git")
+         (url "https://github.com/uclouvain/openjpeg-data")
          (commit "c5c4a8c")))
        (file-name (git-file-name name version))
        (sha256
@@ -1792,33 +1795,26 @@ parsing, viewing, modifying, and saving this metadata.")
 (define-public flameshot
   (package
     (name "flameshot")
-    (version "0.5.1")
+    (version "0.8.5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lupoDharkael/flameshot")
+             (url "https://github.com/flameshot-org/flameshot")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "13h77np93r796jf289v4r687cmnpqkyqs34dm9gif4akaig74ky0"))))
-    (build-system gnu-build-system)
+         "1z77igs60lz106vsf6wsayxjafxm3llf2lm4dpvsqyyrxybfq191"))))
+    (build-system qt-build-system)
     (native-inputs
      `(("qttools" ,qttools)))
     (inputs
-     `(("qtbase" ,qtbase)))
+     `(("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)))
     (arguments
-     `(#:tests? #f ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (invoke "qmake"
-                     "CONFIG+=packaging"
-                     (string-append "BASEDIR=" (assoc-ref outputs "out"))
-                     "PREFIX=/"))))))
-    (home-page "https://github.com/lupoDharkael/flameshot")
+     `(#:tests? #f))                    ;no tests
+    (home-page "https://github.com/flameshot-org/flameshot")
     (synopsis "Powerful yet simple to use screenshot software")
     (description "Flameshot is a screenshot program.
 Features:
@@ -1914,8 +1910,7 @@ identical visual appearance.")
            (commit (string-append "v" version))))
      (file-name (git-file-name name version))
      (sha256
-      (base32 "0fjmjq0ws9rlblkcqxxw2lv7zvvyi618jqzlnz5z9zb477jwdfib"))
-     (patches (search-patches "grim-revert-output-rotation.patch"))))
+      (base32 "0fjmjq0ws9rlblkcqxxw2lv7zvvyi618jqzlnz5z9zb477jwdfib"))))
    (build-system meson-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)
                     ("scdoc" ,scdoc)))
@@ -1932,7 +1927,7 @@ identical visual appearance.")
 (define-public slurp
   (package
    (name "slurp")
-   (version "1.2.0")
+   (version "1.3.1")
    (source
     (origin
      (method git-fetch)
@@ -1941,18 +1936,20 @@ identical visual appearance.")
            (commit (string-append "v" version))))
      (file-name (git-file-name name version))
      (sha256
-      (base32 "0580m6kaiilgsrcj608r837r37sl6a25y7w21p7d6ij20fs3gvg1"))))
+      (base32 "1fby2v2ylcadgclds05wpkl9xi2r9dfz49dqyqpn20rjv1wnz3jv"))))
    (build-system meson-build-system)
-   (native-inputs `(("pkg-config" ,pkg-config)))
-   (inputs `(("cairo" ,cairo)
-             ("scdoc" ,scdoc)
-             ("wayland" ,wayland)
-             ("wayland-protocols" ,wayland-protocols)))
+   (native-inputs
+    `(("pkg-config" ,pkg-config)
+      ("scdoc" ,scdoc)))
+   (inputs
+    `(("cairo" ,cairo)
+      ("libxkbcommon" ,libxkbcommon)
+      ("wayland" ,wayland)
+      ("wayland-protocols" ,wayland-protocols)))
    (home-page "https://github.com/emersion/slurp")
    (synopsis "Select a region in a Wayland compositor")
    (description "Slurp can select a region in a Wayland compositor and print it
 to the standard output.  It works well together with grim.")
-   ;; MIT license.
    (license license:expat)))
 
 (define-public sng
@@ -2127,16 +2124,16 @@ by AOM, including with alpha.")
     (name "mtpaint")
     ;; The author neither releases tarballs nor uses git version tags.
     ;; Instead, author puts version in git commit title.
-    (version "3.49.27")
+    (version "3.49.33")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/wjaguar/mtPaint")
-             (commit "26751cd0336414e2f16cbe25c9fe2702f34e7b5c")))
+             (commit "5272e2b1e773c8e02ac3506b2d3bde82ad946b21")))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12mzai9pqvyb342m21rjz0jxiy75q24sjw6ax147pzy8frzkgd54"))))
+        (base32 "1bmq4m0dxczl18n1yiqb75g05a4c3pal1vdcyypkilx7ijsr0cmc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index e4efea4e45..a624d7bc6a 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -124,6 +125,20 @@ transform images, adjust image colors, apply various special effects, or draw
 text, lines, polygons, ellipses and Bézier curves.")
     (license (license:fsf-free "http://www.imagemagick.org/script/license.php"))))
 
+;; XXX: 'transcode' fails to detect the above ImageMagick, so we provide
+;; this newer version.
+(define-public imagemagick-next
+  (package
+    (inherit imagemagick)
+    (version "6.9.11-37")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://imagemagick/ImageMagick-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "19r6fyhr1bycx0p6jz034mil1zh2k7hfr02is40h4g3wf9b9sdni"))))))
+
 (define-public perl-image-magick
   (package
     (name "perl-image-magick")
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 4ac3cf3966..56375f0759 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,6 +45,7 @@
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages fontutils)
@@ -250,7 +252,14 @@ endif()~%~%"
          (add-after 'install 'glib-or-gtk-compile-schemas
            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
          (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
-           (assoc-ref glib-or-gtk:%standard-phases '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")
+                 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))))
+             #t)))))
     (inputs
      `(("aspell" ,aspell)
        ("autotrace" ,autotrace)
@@ -275,15 +284,19 @@ endif()~%~%"
        ("popt" ,popt)
        ("potrace" ,potrace)
        ("lcms" ,lcms)
-       ("boost" ,boost)))
+       ("boost" ,boost)
+       ("python" ,python-wrapper)
+       ("python-scour" ,python-scour)
+       ("python-pyserial" ,python-pyserial)
+       ("python-numpy" ,python-numpy)
+       ("python-lxml" ,python-lxml)))
     (native-inputs
      `(("imagemagick" ,imagemagick)     ;for tests
        ("intltool" ,intltool)
        ("glib" ,glib "bin")
        ("googletest" ,googletest)
        ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+       ("pkg-config" ,pkg-config)))
     (home-page "https://inkscape.org/")
     (synopsis "Vector graphics editor")
     (description "Inkscape is a vector graphics editor.  What sets Inkscape
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 0d9908c771..61144618c0 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -62,6 +62,7 @@
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -499,7 +500,7 @@ interface for those who are accustomed to the ircII way of doing things.")
 (define-public inspircd
   (package
     (name "inspircd")
-    (version "3.7.0")
+    (version "3.8.1")
     (source
      (origin
        (method git-fetch)
@@ -508,13 +509,13 @@ interface for those who are accustomed to the ircII way of doing things.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1npzp23c3ac7m1grkm39i1asj04rs4i0jwf5w0c0j0hmnwslnz7a"))))
+        (base32 "1i30649dw84iscxa5as81g96f393mn1i883aq4za5ypdinr5x65g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (map (lambda (module)
                                 (string-append "--enable-extras=" module))
-                              '("m_geo_maxmind.cpp"
+                              '("m_argon2.cpp"
+                                "m_geo_maxmind.cpp"
                                 "m_ldap.cpp"
                                 "m_mysql.cpp"
                                 "m_pgsql.cpp"
@@ -550,16 +551,17 @@ interface for those who are accustomed to the ircII way of doing things.")
                        (string-append "--config-dir=" out-etc name)))
              #t)))))
     (native-inputs
-     `(("gnutls" ,gnutls)
-       ("libgcrypt" ,libgcrypt)
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("argon2" ,argon2)
+       ("gnutls" ,gnutls)
        ("libmaxminddb" ,libmaxminddb)
-       ("mysql" ,mysql)
        ("mbedtls-apache" ,mbedtls-apache)
+       ("mysql" ,mysql)
        ("openldap" ,openldap)
        ("openssl" ,openssl)
        ("pcre" ,pcre "bin")
        ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
        ("postgresql" ,postgresql)
        ("re2" ,re2)
        ("sqlite" ,sqlite)
diff --git a/gnu/packages/iso-codes.scm b/gnu/packages/iso-codes.scm
index 4a009c3159..637390d734 100644
--- a/gnu/packages/iso-codes.scm
+++ b/gnu/packages/iso-codes.scm
@@ -22,6 +22,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages gettext)
@@ -31,21 +32,22 @@
 (define-public iso-codes
   (package
     (name "iso-codes")
-    (version "3.77")
+    (version "4.5.0")
+    (home-page "https://salsa.debian.org/iso-codes-team/iso-codes")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://pkg-isocodes.alioth.debian.org/downloads/iso-codes-"
-                   version ".tar.xz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url home-page)
+                   (commit (string-append "iso-codes-" version))))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "140dgygv22a49xb8x1941xr5ff12cphd9zzwxds98pgrqsj77k91"))))
+               "1q6x9c5x4x0x4q11iygldsmxdyzhz1mb4n8im76glwsgqsqyjs80"))))
     (build-system gnu-build-system)
     (inputs
      `(("gettext" ,gettext-minimal)
        ("perl" ,perl)
        ("python" ,python-wrapper)))
-    (home-page "https://salsa.debian.org/iso-codes-team/iso-codes")
     (synopsis "Various ISO standards")
     (description
      "This package provides lists of various ISO standards (e.g. country,
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 97bb0b5d41..e298fd9537 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -827,6 +827,8 @@ machine.")))
               (sha256
                (base32
                 "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
+              (patches (search-patches
+                        "icedtea-6-extend-hotspot-aarch64-support.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -855,7 +857,8 @@ machine.")))
        `("--enable-bootstrap"
          "--enable-nss"
          "--without-rhino"
-         "--with-parallel-jobs"
+         ,(string-append "--with-parallel-jobs="
+                         (number->string (parallel-job-count)))
          "--disable-downloading"
          "--disable-tests"
          ,(string-append "--with-ecj="
@@ -888,11 +891,8 @@ machine.")))
                             (assoc-ref inputs
                                        (string-append part "-src"))
                             part))
-                         '("jdk" "corba"
+                         '("jdk" "hotspot" "corba"
                            "langtools" "jaxp" "jaxws")))
-             (with-directory-excursion "openjdk"
-               (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
-               (rename-file "hg-checkout" "hotspot"))
              (substitute* "patches/freetypeversion.patch"
                (("REQUIRED_FREETYPE_VERSION = 2.2.1")
                 "REQUIRED_FREETYPE_VERSION = 2.10.1"))
@@ -1118,9 +1118,7 @@ machine.")))
                  (changeset "jdk6-b41")))
            (sha256
             (base32
-             "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))
-           (patches
-            (search-patches "icedtea-6-hotspot-gcc-segfault-workaround.patch"))))
+             "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))))
        ("corba-src"
         ,(origin
            (method hg-fetch)
@@ -1231,6 +1229,8 @@ bootstrapping purposes.")
            "--enable-bootstrap"
            "--enable-nss"
            "--without-rhino"
+           ,(string-append "--with-parallel-jobs="
+                           (number->string (parallel-job-count)))
            "--disable-downloading"
            "--disable-tests"        ;they are run in the check phase instead
            "--with-openjdk-src-dir=./openjdk.src"
@@ -1659,7 +1659,7 @@ bootstrapping purposes.")
               (base32
                "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
              (patches (search-patches
-                       "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
+                       "icedtea-7-hotspot-aarch64-use-c++98.patch"))))
          ("ant" ,ant-bootstrap)
          ("attr" ,attr)
          ("coreutils" ,coreutils)
@@ -1762,6 +1762,8 @@ IcedTea build harness.")
                  `( ;;"--disable-bootstrap"
                    "--enable-bootstrap"
                    "--enable-nss"
+                   ,(string-append "--with-parallel-jobs="
+                                   (number->string (parallel-job-count)))
                    "--disable-downloading"
                    "--disable-system-pcsc"
                    "--disable-system-sctp"
@@ -1853,16 +1855,8 @@ new Date();"))
           ,(drop "langtools"
                  "15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw"))
          ("hotspot-drop"
-          ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "http://icedtea.classpath.org/download/drops"
-                   "/icedtea8/" version "/hotspot.tar.xz"))
-             (sha256
-              (base32
-               "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
-             (patches (search-patches
-                       "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
+          ,(drop "hotspot"
+                 "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
          ("nashorn-drop"
           ,(drop "nashorn"
                  "19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa"))
@@ -2729,7 +2723,7 @@ debugging, etc.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/javacc/javacc.git")
+                    (url "https://github.com/javacc/javacc")
                     (commit "release_32")))
               (file-name (string-append "javacc-" version "-checkout"))
               (sha256
@@ -3319,7 +3313,7 @@ libraries from the SIS division at ETH Zurich like jHDF5.")
          ("java-cisd-args4j" ,java-cisd-args4j)
          ("java-commons-lang" ,java-commons-lang)
          ("java-commons-io" ,java-commons-io)
-         ("hdf5" ,hdf5)
+         ("hdf5" ,hdf5-1.8)
          ("zlib" ,zlib)))
       (native-inputs
        `(("jdk" ,icedtea-8)
@@ -9684,8 +9678,11 @@ not included are ones that require dependency to the Databind package.")
      `(("junit" ,java-junit)
        ("hamcrest" ,java-hamcrest-core)))
     (home-page "https://github.com/FasterXML/jackson-core")
-    (synopsis "")
-    (description "")
+    (synopsis "Low-level streaming parser and generator abstractions")
+    (description "This package contains core low-level incremental
+(streaming) parser and generator abstractions used by the Jackson Data
+Processor.  It also includes the default implementation of handler types
+(parser, generator) that handle JSON format.")
     (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
 
 (define-public java-fasterxml-jackson-databind
@@ -9932,12 +9929,14 @@ interface and high-performance Typed Access API.")
     (name "java-woodstox-core")
     (version "5.0.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/FasterXML/woodstox/archive/"
-                                  "woodstox-core-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/FasterXML/woodstox")
+                     (commit (string-append "woodstox-core-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1i7pdgb8jbw6gdy5kmm0l6rz109n2ns92pqalpyp24vb8vlvdfd4"))))
+                "0bfylk24a967hwxprxqbg6cdvm6n4ldcarp54yg980viwvjiglyp"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "woodstox.jar"
@@ -9972,13 +9971,14 @@ interface and high-performance Typed Access API.")
     (name "java-fasterxml-jackson-dataformat-xml")
     (version "2.9.4")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/FasterXML/"
-                                  "jackson-dataformat-xml/archive/"
-                                  "jackson-dataformat-xml-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/FasterXML/jackson-dataformat-xml")
+                     (commit (string-append "jackson-dataformat-xml-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "111fkkl90w31jbf30kgj82qdcxlw4sxppki7i198liw0ck1jcavq"))))
+                "0s1wl65mbs57c2hz2v8rnh8i04y5lpyyvnjz562j5j6b83vwwpfx"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "jackson-dataformat-xml.jar"
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 0e61cf10ff..ac9fbfea60 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
@@ -32,7 +32,8 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
-  #:use-module (guix build-system minify))
+  #:use-module (guix build-system minify)
+  #:use-module (guix utils))
 
 (define-public font-mathjax
   (package
@@ -415,24 +416,28 @@ external server.")
 (define-public mujs
   (package
     (name "mujs")
-    (version "1.0.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://mujs.com/downloads/mujs-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "1ilhay15z4k7mlzs6g2d00snivin7vp72dfw5wwpmc0x70jr31l2"))))
+    (version "1.0.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ccxvii/mujs")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "146lmmigqlvx36d3fzb9kk7sy6y4ddv0ih4pkjz4zyj30zl84gy2"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (delete 'configure)  ; no configure
-         (add-after 'install 'install-shared-library
+         (delete 'configure)  ; no configure script
+         (replace 'install
            (lambda* (#:key (make-flags '()) #:allow-other-keys)
              (apply invoke "make" "install-shared" make-flags))))
-       #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))
-                          (string-append "CC=gcc"))
+       #:make-flags
+       (list ,(string-append "VERSION=" version)
+             ,(string-append "CC=" (cc-for-target))
+             (string-append "prefix=" (assoc-ref %outputs "out")))
        #:tests? #f))                    ; no tests
     (inputs
      `(("readline" ,readline)))
@@ -451,14 +456,14 @@ roots, or wrestle with obscure build systems.")
 (define-public quickjs
   (package
     (name "quickjs")
-    (version "2020-09-06")
+    (version "2020-11-08")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://bellard.org/quickjs/quickjs-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "05vpnnzmws7plnwsnk2brwf7whyj84l5xl0iahi1xdn6rpla6880"))))
+                "0yqqcjxi3cqagw184mqrxpvqg486x7c233r3cp9mxachngd6779f"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 65fa726d92..13c9f7baf1 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,8 +52,8 @@
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1")
-        (revision "1"))
+  (let ((commit "1fcc6d66f9df74189c74d3d390f02202bb7db953")
+        (revision "2"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
     ;; https://github.com/JuliaLang/julia/blob/v1.5.2/deps/libuv.version
     (package
@@ -67,7 +68,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "0dn3v6fdp1z382pqg3nhjzk60l61ky9b65mfgaj29fv2da95rwjs"))))
+                  "040l7f1hk7xyza11sry5cj4fhw05na949865axqqhxnifdvnmfji"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -104,7 +105,7 @@
                  "/deps/patches/" name ".patch"))
 
 (define (julia-patch name sha)
-  (let ((version "1.5.2"))
+  (let ((version "1.5.3"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -195,14 +196,15 @@
          "1bpa0fcqpa3ai3hm8mz0p13bf76fsq53wsfcx5qw302zh22108xr"))))
     (arguments
      `(#:make-flags
-       (list "CC=gcc")
+       (list (string-append "CC=" ,(cc-for-target)))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-before 'check 'set-ld-library-path
-           (lambda* (#:key inputs #:allow-other-keys)
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
              (setenv "LD_LIBRARY_PATH"
-                     (string-append (assoc-ref inputs "zlib") "/lib"))))
+                     (string-append (assoc-ref (or native-inputs inputs) "zlib")
+                                    "/lib"))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -221,7 +223,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 (define-public julia
   (package
     (name "julia")
-    (version "1.5.2")
+    (version "1.5.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -229,7 +231,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "08wazf3f1lb2c2c5s700kyak8llfqwki8xlnqyrbwmwxjj801p2n"))
+                "1zmim82x9kkdcgn0cdi01hmzi59zbszy1sqlygb86xq4hc1n66dy"))
               (patches
                (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index c4479de995..febdb1f4f0 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1963,7 +1963,8 @@ covers feedback and persistent events.")
                 "03rp7p7i8ihz5wg58gjs638jk7xbszknfiy2j3r979snc57g95mv"))
               ;; Default to: external paths/symlinks can be followed by a
               ;; package
-              (patches (search-patches "kpackage-allow-external-paths.patch"))))
+              (patches (search-patches "kpackage-allow-external-paths.patch"
+                                       "kpackage-fix-KF5PackageMacros.cmake.patch"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -3449,7 +3450,8 @@ setUrl, setUserAgent and call.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "06cxajsxj62g3c37ssrrcaxb9a12zbyp2kvrjqym329k5vd89272"))))
+                "06cxajsxj62g3c37ssrrcaxb9a12zbyp2kvrjqym329k5vd89272"))
+              (patches (search-patches "plasma-framework-fix-KF5PlasmaMacros.cmake.patch"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kpackage" ,kpackage)
diff --git a/gnu/packages/kde-internet.scm b/gnu/packages/kde-internet.scm
index 6c576223e1..4203ffbaec 100644
--- a/gnu/packages/kde-internet.scm
+++ b/gnu/packages/kde-internet.scm
@@ -178,14 +178,14 @@ This package is part of the KDE networking module.")
 (define-public konversation
   (package
     (name "konversation")
-    (version "1.7.6")
+    (version "1.7.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/konversation/" version
                            "/src/konversation-" version ".tar.xz"))
        (sha256
-        (base32 "14x0rs867grb1xjddycn9l6bfl3h3rp4cmx4zqd2gsvkihn4zlpx"))))
+        (base32 "19qqq9s8k0cl71ib33xn07f26j5ji2g4336jk65im6452cf1dv27"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
index ce6abb3a65..c53f6b29c7 100644
--- a/gnu/packages/kde-plasma.scm
+++ b/gnu/packages/kde-plasma.scm
@@ -38,14 +38,14 @@
 (define-public kdecoration
   (package
     (name "kdecoration")
-    (version "5.18.5")
+    (version "5.19.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kde/stable/plasma/" version
                                   "/kdecoration-" version ".tar.xz"))
               (sha256
                (base32
-                "1j59axgpdbj7nlg06h5gb0pix3s3nll32k6s2f88vc1cbwj5d67h"))))
+                "0pn8n7zyb0adzjnn92vmbcf7pmpss60k9k1rk5llamj016xzfgnf"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -62,17 +62,18 @@ manager which re-parents a Client window to a window decoration frame.")
 (define-public kscreenlocker
   (package
     (name "kscreenlocker")
-    (version "5.18.5")
+    (version "5.19.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kde/stable/plasma/" version
                                   "/kscreenlocker-" version ".tar.xz"))
               (sha256
                (base32
-                "1lhq9rxafbbxwpwzq8m25xi9hgcdfdfwl8hafqhygzp14z89q9ml"))))
-    (build-system cmake-build-system)
+                "1fd5sqaqx9kj3kr0bgxpllhcm5arf8bc9pkpd9yk9c8xjy0j0fxi"))))
+    (build-system qt-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f ;; TODO: make tests pass
+       #:phases
        (modify-phases %standard-phases
          (add-before 'check 'check-setup
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -83,13 +84,15 @@ manager which re-parents a Client window to a window decoration frame.")
          (delete 'check)
          ;; Tests use the installed library and require a DBus session.
          (add-after 'install 'check
-           (lambda _
-             (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
-             (invoke "dbus-launch" "ctest" "."))))))
+           (lambda* (#:key tests? #:allow-other-keys)
+             (if tests?
+                 (begin
+                   (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
+                   (invoke "dbus-launch" "ctest" ".")))
+             #t)))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)
-
        ;; For tests.
        ("dbus" ,dbus)
        ("xorg-server" ,xorg-server-for-tests)))
@@ -125,14 +128,14 @@ manager which re-parents a Client window to a window decoration frame.")
 (define-public libkscreen
   (package
     (name "libkscreen")
-    (version "5.18.5")
+    (version "5.19.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde/stable/plasma/" version "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "0z18djlfrj510dz3r2n8qx6fswdbp2qmhg5y3bn00hij02832qm9"))))
+        (base32 "0rf1pm0yyc069f4n5s9ipdx4glzfr9zvv5cbrmn4q9i4v6z1qd8i"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -155,15 +158,14 @@ basic needs and easy to configure for those who want special setups.")
 (define-public libksysguard
   (package
     (name "libksysguard")
-    (version "5.18.5")
+    (version "5.19.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://kde//stable/plasma/" version
                            "/libksysguard-" version ".tar.xz"))
        (sha256
-        (base32
-         "02s40ahqp4r9amjshdf0dhw9hdggvica2jl426i4d9b950507myl"))))
+        (base32 "1kd0h3p8bf9k5pqp0frhr81pa0yyrpkckg9zznirk9p1v88v7bfq"))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("pkg-config" ,pkg-config)))
@@ -176,11 +178,14 @@ basic needs and easy to configure for those who want special setups.")
        ("kcompletion" ,kcompletion)
        ("kconfig" ,kconfig)
        ("kcoreaddons" ,kcoreaddons)
+       ("kdeclarative" ,kdeclarative)
        ("kglobalaccel" ,kglobalaccel)
        ("kio" ,kio)
+       ("knewstuff" ,knewstuff)
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kservice" ,kservice)
        ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
        ("qtscript" ,qtscript)
        ("qtwebkit" ,qtwebkit)
        ("qtx11extras" ,qtx11extras)
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index f0a5c62856..546d8caa9b 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2018, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2018, 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
@@ -40,12 +40,14 @@
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages apr)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages code)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -135,7 +137,7 @@ This package contains GUI widgets for baloo.")
      (list license:lgpl2.1+ license:fdl1.2+))))
 
 (define-public kdenlive
-  (let ((version "20.08.2"))
+  (let ((version "20.08.3"))
     (package
       (name "kdenlive")
       (version version)
@@ -147,7 +149,7 @@ This package contains GUI widgets for baloo.")
                (commit (string-append "v" version))))
          (file-name (string-append name "-" version "-checkout"))
          (sha256
-          (base32 "1zcckv4wj12pvxjg85c8l67vi3amz79yv8mf7m4fbxnam3yxhy90"))))
+          (base32 "0x0qfwf6wfnybjyjvmllpf87sm27d1n2akslhp2k8ins838qy55i"))))
       (build-system cmake-build-system)
       (native-inputs
        `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -374,7 +376,7 @@ illustrate project schedules.")
 (define-public krita
   (package
     (name "krita")
-    (version "4.4.0")
+    (version "4.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -382,7 +384,7 @@ illustrate project schedules.")
                     "/krita-" version ".tar.gz"))
               (sha256
                (base32
-                "13r7x4gql5wp88hmpv9m6m3lh7gsybm4la48hqbjcb3iwiv86pzw"))))
+                "05rq5hkh2lmk8hall2h9ccaav0nw8fj7vd4aff5fyp2fiq3aybbg"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
@@ -790,3 +792,47 @@ services such as printers which advertise themselves with DNSSD (called Avahi
 or Bonjour by other projects).")
     (license ;; GPL for programs, LGPL for libraries, FDL for documentation
      (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
+
+(define-public kuserfeedback
+  ;; FIXME: Try to reduce data collection and ensure transmission i disabled by default.
+  ;; FIXME: Check https://www.reddit.com/r/kde/comments/f7ojg9 for insights
+  (package
+    (name "kuserfeedback")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/kuserfeedback/"
+                           "/kuserfeedback-" version ".tar.xz"))
+       (sha256
+        (base32 "1dwx9fscnfp3zsxdir774skn8xvad2dvscnaaw3ji6mrnkmm6bss"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("qttools" ,qttools)
+       ;; For optional component "Survey target expression parser"
+       ("bison" ,bison)
+       ("flex" ,flex)
+       ;; For syntax checking and unit tests of PHP server code
+       ;;("php" ,php)
+       ;;("phpunit" ,phpunit)
+       ))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtcharts" ,qtcharts)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtsvg" ,qtsvg)))
+    (arguments
+     `(#:tests? #f))  ;; 4/17 fail
+    (home-page "https://api.kde.org/frameworks/kuserfeedback/html/")
+    (synopsis "Framework for collecting feedback from application users via
+telemetry and targeted surveys")
+    (description "This framework consists of the following components:
+@itemize
+@item Libraries for use in applications.
+@item QML bindings for the above.
+@item A server application.
+@item A management and analytics application.
+@end itemize")
+    (license license:expat)))
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 9ccdea46ef..b3dc96f925 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,6 +43,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages file-systems)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
@@ -375,7 +377,6 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
            (lambda _
              (invoke "make" "kodi-test"))))))
     ;; TODO: Add dependencies for:
-    ;; - nfs
     ;; - cec
     ;; - plist
     ;; - shairplay
@@ -424,6 +425,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
        ("libmad" ,libmad)
        ("libmicrohttpd" ,libmicrohttpd)
        ("libmpeg2" ,libmpeg2)
+       ("libnfs" ,libnfs)
        ("libogg" ,libogg)
        ("libpng" ,libpng)
        ("libssh" ,libssh)
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 5ccc94167c..3f17465039 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -62,7 +62,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/liblouis/liblouis.git")
+         (url "https://github.com/liblouis/liblouis")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -115,7 +115,7 @@ Marburg.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/liblouis/liblouisutdml.git")
+         (url "https://github.com/liblouis/liblouisutdml")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1053,7 +1053,7 @@ noun phrases, verb phrases, etc.).")
 (define-public praat
   (package
     (name "praat")
-    (version "6.1.27")
+    (version "6.1.30")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1062,7 +1062,7 @@ noun phrases, verb phrases, etc.).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0wd2xy5shyk00d91yrif1c2xwzdl4i7qpdfa530f845yzn7k2ks1"))))
+                "1pjfifyv3wjn68l3i2dr83xm75nf2kxvfxrk9qqbmwz58p183jw4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test target
diff --git a/gnu/packages/lean.scm b/gnu/packages/lean.scm
index 0cc67da874..cc593291fd 100644
--- a/gnu/packages/lean.scm
+++ b/gnu/packages/lean.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +28,7 @@
 (define-public lean
   (package
     (name "lean")
-    (version "3.17.1")
+    (version "3.23.0")
     (home-page "https://github.com/leanprover-community/lean")
     (source (origin
               (method git-fetch)
@@ -36,7 +37,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15yfryg98x9lvy00v1w5kg4hp921mpvlxx1ic3m08k1ls6p1gkj4"))))
+                "09mklc1p6ms1jayg2f89hqfmhca3h5744lli936l38ypn1d00sxx"))))
     (build-system cmake-build-system)
     (inputs
      `(("gmp" ,gmp)))
@@ -65,7 +66,7 @@
                #t)))
          (add-before 'configure 'chdir-to-src
            (lambda _ (chdir "src") #t)))))
-    (synopsis "The Lean theorem prover and programming language")
+    (synopsis "Theorem prover and programming language")
     (description
      "Lean is a theorem prover and programming language with a small trusted
 core based on dependent typed theory, aiming to bridge the gap between
diff --git a/gnu/packages/lego.scm b/gnu/packages/lego.scm
index 2067e45dd1..2294d693c5 100644
--- a/gnu/packages/lego.scm
+++ b/gnu/packages/lego.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@posteo.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +35,8 @@
     (name "nqc")
     (version "3.1.r6")
     (source (origin
+              ;; XXX Using url-fetch/tarbomb results in failure:
+              ;; Error: could not create compiler/rcx1_nqh.h
               (method url-fetch)
               (uri (string-append "http://bricxcc.sourceforge.net/nqc/release/"
                                   "nqc-" version ".tgz"))
@@ -44,24 +46,48 @@
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
-       ("flex" ,flex)))
+       ("flex" ,flex)
+       ("add-usb-tcp-support.patch"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://sourceforge.net/p/bricxcc/patches/"
+                               "_discuss/thread/00b427dc/b84b/attachment/"
+                               "nqc-01-Linux_usb_and_tcp.diff"))
+           (sha256
+            (base32 "0z5gx55ra1kamhhqxz08lvvwslfl36pbmwdd566rhmbgmyhlykbr"))))
+       ("debian-writable-swap-inst-len.patch"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://sources.debian.org/data/main/n/nqc/"
+                               "3.1.r6-7/debian/patches/"
+                               "writable-swap-inst-len.patch"))
+           (sha256
+            (base32 "1kr7j057aa5i0kxmlfpbfcsif5yq2lrmjw4sljn400ijaq4mys3v"))))))
     (arguments
      '(#:tests? #f                      ;no tests
        #:make-flags (list (string-append "PREFIX=" %output))
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (add-before 'build 'rm-generated
-                    ;; Regenerating compiler/lexer.cpp avoids an 'undefined
-                    ;; reference to `isatty(int)'' error.
-                    (lambda _
-                      (for-each delete-file
-                                '("compiler/lexer.cpp"
-                                  "compiler/parse.cpp"))
-                      #t))
-                  (add-after 'unpack 'deal-with-tarbomb
-                    (lambda _
-                      (chdir "..")      ;tarbomb
-                      #t)))))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'rm-generated
+           ;; Regenerating compiler/lexer.cpp avoids an 'undefined
+           ;; reference to `isatty(int)'' error.
+           (lambda _
+             (for-each delete-file
+                       '("compiler/lexer.cpp"
+                         "compiler/parse.cpp"))
+             #t))
+         (add-after 'unpack 'deal-with-tarbomb
+           (lambda _
+             (chdir "..")               ;tarbomb
+             #t))
+         (add-after 'deal-with-tarbomb 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (for-each (lambda (patch)
+                         (invoke "patch" "-Np1" "-i"
+                                 (assoc-ref inputs patch)))
+                       (list "add-usb-tcp-support.patch"
+                             "debian-writable-swap-inst-len.patch")))))))
     (home-page "http://bricxcc.sourceforge.net/nqc/")
     (synopsis "C-like language for Lego's MINDSTORMS")
     (description
diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm
index 6543435fab..1057dc2909 100644
--- a/gnu/packages/less.scm
+++ b/gnu/packages/less.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
@@ -33,7 +33,7 @@
 (define-public less
   (package
     (name "less")
-    (version "551")
+    (version "563")
     (source
      (origin
        (method url-fetch)
@@ -43,7 +43,7 @@
                                  version ".tar.gz")))
        (patches (search-patches "less-hurd-path-max.patch"))
        (sha256
-        (base32 "0ggyjl3yzn7c450zk1rixi9ls6asdhgqynhk34zsd0ckhmsm45pz"))))
+        (base32 "16lsvk88vwjwp5ax1wnll44wxwnzs8lb2fn90xx2si64kwmnsnyf"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (home-page "https://www.gnu.org/software/less/")
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 0db8fa3e82..27bd79665a 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015, 2019 Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
 ;;; Copyright © 2016, 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -57,7 +57,25 @@
     (arguments
      `(;; Prevent the build system from passing -march and -mtune to the
        ;; compiler.  See "ax_cc_maxopt.m4" and "ax_gcc_archflag.m4".
-       #:configure-flags '("--enable-portable-binary" "--without-gcc-arch")))
+       #:configure-flags '("--enable-portable-binary" "--without-gcc-arch")
+
+       ;; TODO: Inline patch on next rebuild cycle.
+       ,@(if (string-prefix? "powerpc-" (or (%current-target-system)
+                                            (%current-system)))
+             '(#:phases (modify-phases %standard-phases
+                          (add-after 'unpack 'apply-patch
+                            (lambda* (#:key inputs #:allow-other-keys)
+                              (let ((patch (assoc-ref inputs
+                                                      "powerpc-patch")))
+                                (invoke "patch" "--batch" "-p1"
+                                        "-i" patch))))))
+             '())))
+    (inputs
+     (if (string-prefix? "powerpc-" (or (%current-target-system)
+                                        (%current-system)))
+         `(("powerpc-patch" ,@(search-patches
+                               "libffi-3.3-powerpc-fixes.patch")))
+         '()))
     (outputs '("out" "debug"))
     (synopsis "Foreign function call interface library")
     (description
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index fdc62e8825..76836d718b 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -1109,6 +1109,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
        ("clucene" ,clucene)
        ("cups" ,cups)
        ("dbus-glib" ,dbus-glib)
+       ("firebird" ,firebird)
        ("fontconfig" ,fontconfig)
        ("fontforge" ,fontforge)
        ("gconf" ,gconf)
@@ -1285,7 +1286,9 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
         "--without-java"
         ;; FIXME: Enable once the corresponding inputs are packaged.
         "--disable-coinmp"
-        "--disable-firebird-sdbc"       ; embedded firebird
+        ;; This could (Debian does this) be a separate output containing only
+        ;; program/libfirebird_sdbclo.so, if there's a way to point to it.
+        "--enable-firebird-sdbc"
         ;; XXX: PDFium support requires fetching an external tarball and
         ;; patching the build scripts to work with GCC5.  Try enabling this
         ;; when our default compiler is >=GCC 6.
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index f109ca0d8b..c403181c77 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -564,7 +564,7 @@ devices.")
 (define-public hidapi
   (package
     (name "hidapi")
-    (version "0.9.0")
+    (version "0.10.1")
     (source
      (origin
        (method git-fetch)
@@ -573,7 +573,7 @@ devices.")
              (commit (string-append "hidapi-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1p4g8lgwj4rki6lbn5l6rvwj0xlbn1xfh4d255bg5pvgczmwmc4i"))))
+        (base32 "1nr4z4b10vpbh3ss525r7spz4i43zim2ba5qzfl15dgdxshxxivb"))))
     (build-system gnu-build-system)
     (inputs
      `(("libusb" ,libusb)
diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 777485b9ea..afa542412f 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -2,6 +2,7 @@
 ;;;
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -49,6 +50,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system qt)
   #:use-module (guix build-system glib-or-gtk)
@@ -192,15 +194,16 @@ tracks in one file. ")
 (define-public bcg729
   (package
     (name "bcg729")
-    (version "1.0.4")
+    (version "1.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/bcg729.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "01y34ky7ykjgfnf8a9f59hg61fqfjiprfrzshdz06w0lz4gvy3qs"))))
+        (base32 "1hal6b3w6f8y5r1wa0xzj8sj2jjndypaxyw62q50p63garp2h739"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 0f725d0ec2..ec3c8ffd36 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -352,36 +352,36 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 
 ;; The current "stable" kernel. That is, the most recently released major
 ;; version.
-(define-public linux-libre-5.8-version "5.8.15")
-(define deblob-scripts-5.8
+(define-public linux-libre-5.9-version "5.9.11")
+(define deblob-scripts-5.9
   (linux-libre-deblob-scripts
-   linux-libre-5.8-version
-   (base32 "07z7sglyrfh0706icqqf3shadf638pvyid9386r661ds5lbsa2mw")
-   (base32 "0z28yj4f7hhc253hssslm6xl9sg92agbiw50jxb9y72d8zp6sksq")))
-(define-public linux-libre-5.8-pristine-source
-  (let ((version linux-libre-5.8-version)
-        (hash (base32 "0hfnq4n902pws8sjxd1lsdxxa0v45g988imp73xnqfqv2d71r0bj")))
+   linux-libre-5.9-version
+   (base32 "1l0iw2lp6alk0a8nvdafklyks83iiyw4b2r5xif84z47qfbydsis")
+   (base32 "0yb04a4j2wq3mwvks3cj7kcm2pscmfs29lrz3falkxpbvjxbbgq2")))
+(define-public linux-libre-5.9-pristine-source
+  (let ((version linux-libre-5.9-version)
+        (hash (base32 "0q6jlnigyjjnnxw6l724zv8acgs95s3pafabz4l9jrhhlijhmcjy")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
-                            deblob-scripts-5.8)))
+                            deblob-scripts-5.9)))
 
 ;; The "longterm" kernels — the older releases with long-term upstream support.
 ;; Here are the support timelines:
 ;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-5.4-version "5.4.71")
+(define-public linux-libre-5.4-version "5.4.80")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
    linux-libre-5.4-version
    (base32 "0ckxn7k5zgcqk30dq943bnamr6a6zjbw2aqjl3x30f4kvh5f6k25")
-   (base32 "1h6gbc9cfhb7dqx669iq26a23whka6km5av0ysk61aaz2z57vkrk")))
+   (base32 "167zcfkw62pm6nv1xdvvhxw0ca724sywcywnv3z00189f8f8p3vg")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1ivcimngj5h7lxslkrdljpfw9hfvdhrm8wrp7gp4d3gk7kpljw3k")))
+        (hash (base32 "1iv4rsc9mr13xqzayzwz8mpdrdpnc425mn1izz9hylrw3xf45nj9")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.151")
+(define-public linux-libre-4.19-version "4.19.160")
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
    linux-libre-4.19-version
@@ -389,12 +389,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf")))
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0vm3nsi9la3azxrsvndbd6fpz79pch7309f2144xyxszsk339cf7")))
+        (hash (base32 "118maapizgqgrgawnw7xmbcz26c61g5d012jzbd8l7n6z4354d0q")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.201")
+(define-public linux-libre-4.14-version "4.14.209")
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
    linux-libre-4.14-version
@@ -402,12 +402,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky")))
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "0nr3w5m7dz28v7qfhp99ih4c369qrhq751wfikbz8ga3di0dqa72")))
+        (hash (base32 "171b31c4rz9sn95s4s4yqchd4s46kivmvch78z0jr5zir1f4c0nb")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.239")
+(define-public linux-libre-4.9-version "4.9.246")
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
    linux-libre-4.9-version
@@ -415,12 +415,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2")))
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0lfbn5amykvwz1svvxayzhsz1dvm4mgzsnq1g0wqffclxm148hr3")))
+        (hash (base32 "1xd9vgc4yj2vrr5r76cy3fp9a1fc3086lj5aws68wf1dsz3ndqj9")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.239")
+(define-public linux-libre-4.4-version "4.4.246")
 (define deblob-scripts-4.4
   (linux-libre-deblob-scripts
    linux-libre-4.4-version
@@ -428,7 +428,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf")))
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "03myd9ngmjmnddh4iqqsgcfg9rd11vyvwym38yh4m1p08j1zbg0k")))
+        (hash (base32 "15xd1dqw53kwqvsa71nr1ymp0jp22pkl4h2yks4hqbd132zxw2wy")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -461,8 +461,8 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
     (patches (append (origin-patches source)
                      patches))))
 
-(define-public linux-libre-5.8-source
-  (source-with-patches linux-libre-5.8-pristine-source
+(define-public linux-libre-5.9-source
+  (source-with-patches linux-libre-5.9-pristine-source
                        (list %boot-logo-patch
                              %linux-libre-arm-export-__sync_icache_dcache-patch)))
 
@@ -565,9 +565,9 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
     (description "Headers of the Linux-Libre kernel.")
     (license license:gpl2)))
 
-(define-public linux-libre-headers-5.8
-  (make-linux-libre-headers* linux-libre-5.8-version
-                             linux-libre-5.8-source))
+(define-public linux-libre-headers-5.9
+  (make-linux-libre-headers* linux-libre-5.9-version
+                             linux-libre-5.9-source))
 
 (define-public linux-libre-headers-5.4
   (make-linux-libre-headers* linux-libre-5.4-version
@@ -856,16 +856,16 @@ It has been modified to remove all non-free binary blobs.")
 ;;; Generic kernel packages.
 ;;;
 
-(define-public linux-libre-5.8
-  (make-linux-libre* linux-libre-5.8-version
-                     linux-libre-5.8-source
+(define-public linux-libre-5.9
+  (make-linux-libre* linux-libre-5.9-version
+                     linux-libre-5.9-source
                      '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")
                      #:configuration-file kernel-config))
 
-(define-public linux-libre-version         linux-libre-5.8-version)
-(define-public linux-libre-pristine-source linux-libre-5.8-pristine-source)
-(define-public linux-libre-source          linux-libre-5.8-source)
-(define-public linux-libre                 linux-libre-5.8)
+(define-public linux-libre-version         linux-libre-5.9-version)
+(define-public linux-libre-pristine-source linux-libre-5.9-pristine-source)
+(define-public linux-libre-source          linux-libre-5.9-source)
+(define-public linux-libre                 linux-libre-5.9)
 
 (define-public linux-libre-5.4
   (make-linux-libre* linux-libre-5.4-version
@@ -979,7 +979,16 @@ It has been modified to remove all non-free binary blobs.")
                      #:extra-options
                      (append
                       `(;; needed to fix the RTC on rockchip platforms
-                        ("CONFIG_RTC_DRV_RK808" . #t))
+                        ("CONFIG_RTC_DRV_RK808" . #t)
+                        ;; Pinebook display, battery, charger and usb
+                        ("CONFIG_DRM_ANALOGIX_ANX6345" . m)
+                        ("CONFIG_CHARGER_AXP20X" . m)
+                        ("CONFIG_INPUT_AXP20X_PEK" . m)
+                        ("CONFIG_CHARGER_AXP20X" . m)
+                        ("CONFIG_BATTERY_AXP20X" . m)
+                        ("CONFIG_PINCTRL_AXP209" . m)
+                        ("CONFIG_AXP20X_POWER" . m)
+                        ("CONFIG_AXP20X_ADC" . m))
                       %default-extra-linux-options)))
 
 (define-public linux-libre-arm64-generic-5.4
@@ -1000,11 +1009,22 @@ It has been modified to remove all non-free binary blobs.")
                      '("riscv64-linux")
                      #:extra-version "riscv64-generic"))
 
+(define-public linux-libre-mips64el-fuloong2e
+  (make-linux-libre* linux-libre-version
+                     linux-libre-source
+                     '("mips64el-linux")
+                     #:defconfig "fuloong2e_defconfig"
+                     #:extra-version "mips64el-fuloong2e"
+                     #:extra-options
+                     (append
+                      `(("CONFIG_OVERLAY_FS" . m))
+                      %default-extra-linux-options)))
+
 (define-public linux-libre-with-bpf
   (let ((base-linux-libre
          (make-linux-libre*
-          linux-libre-5.4-version
-          linux-libre-5.4-source
+          linux-libre-5.9-version
+          linux-libre-5.9-source
           '("x86_64-linux" "i686-linux" "armhf-linux"
             "aarch64-linux" "riscv64-linux")
           #:extra-version "bpf"
@@ -1023,39 +1043,45 @@ It has been modified to remove all non-free binary blobs.")
 ;;;
 
 (define-public acpi-call-linux-module
-  (let ((commit "70b9c80bd700e6a4d10797eaac9fd34b7e8cbd4a")
-        (revision "0"))
-    (package
-      (name "acpi-call-linux-module")
-      (version (git-version "3.17" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/teleshoes/acpi_call")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "09c1vw6vcrkqxbwhpgfgpj4d1grzn4qq6ka8pwwzm7cvm405xj7x"))))
-      (build-system linux-module-build-system)
-      (arguments
-       `(#:tests? #f                    ; no tests
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'install-documentation
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (doc (string-append out "/share/doc/" ,name "-" ,version)))
-                 (for-each (lambda (file)
-                             (let ((target (string-append doc "/" file)))
-                               (mkdir-p (dirname target))
-                               (copy-recursively file target)))
-                           (list "README.md" "examples"))
-                 #t))))))
-      (home-page "https://github.com/teleshoes/acpi_call")
-      (synopsis "Linux kernel module to perform ACPI method calls")
-      (description
-       "This simple Linux kernel module allows calls from user space to any
+  (package
+    (name "acpi-call-linux-module")
+    (version "1.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nix-community/acpi_call")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0mr4rjbv6fj4phf038addrgv32940bphghw2v9n1z4awvw7wzkbg"))))
+    (build-system linux-module-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'patch-shebangs-harder
+           ;; The (only) shebangs in examples/ don't justify a reference.
+           ;; However, do substitute a more portable one than the original.
+           (lambda _
+             (substitute* (find-files "examples" ".")
+               (("^(#! *)/[^ ]*/" _ shebang)
+                (string-append shebang "/usr/bin/env ")))
+             #t))
+         (add-after 'install 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (for-each (lambda (file)
+                           (let ((target (string-append doc "/" file)))
+                             (mkdir-p (dirname target))
+                             (copy-recursively file target)))
+                         (list "README.md" "examples"))
+               #t))))))
+    (home-page "https://github.com/teleshoes/acpi_call")
+    (synopsis "Linux kernel module to perform ACPI method calls")
+    (description
+     "This simple Linux kernel module allows calls from user space to any
 @acronym{ACPI, Advanced Configuration and Power Interface} method provided by
 your computer's firmware, by writing to @file{/proc/acpi/call}.  You can pass
 any number of parameters of types @code{ACPI_INTEGER}, @code{ACPI_STRING},
@@ -1063,11 +1089,11 @@ and @code{ACPI_BUFFER}.
 
 It grants direct and undocumented access to your hardware that may cause damage
 and should be used with caution, especially on untested models.")
-      (license license:gpl3+))))        ; see README.md (no licence headers)
+    (license license:gpl3+)))           ; see README.md (no licence headers)
 
 (define-public rtl8812au-aircrack-ng-linux-module
-  (let ((commit "df2b8dfd8cb7d9f6cfeb55abaeab8a5372011fc9")
-        (revision "1"))
+  (let ((commit "e9fbf5c051453941bbc029810b893a6c010714e6")
+        (revision "2"))
     (package
       (name "rtl8812au-aircrack-ng-linux-module")
       (version (git-version "5.6.4.2" revision commit))
@@ -1079,7 +1105,7 @@ and should be used with caution, especially on untested models.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1qcr0j8yhg8l9l0f5y55zcsk1mgf3qd46yh9xfqgg91szxa3yvca"))
+          (base32 "0y71q7ajwz1w38gdmxd4p05hhkqndq504nndy6vfa16fxz6pqxhn"))
          (modules '((guix build utils)))
          (snippet
           '(begin
@@ -1347,7 +1373,7 @@ at login.  Local and dynamic reconfiguration are its key features.")
         ;; Tests not distributed in pypi release.
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/minrk/pamela.git")
+               (url "https://github.com/minrk/pamela")
                (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -1737,14 +1763,14 @@ slabtop, and skill.")
 (define-public usbutils
   (package
     (name "usbutils")
-    (version "012")
+    (version "013")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
                           "usbutils-" version ".tar.xz"))
       (sha256
-       (base32 "0iiy0q7fzikavmdsjsb0sl9kp3gfh701qwyjjccvqh0qz4jlcqw8"))))
+       (base32 "0f0klk6d3hmbpf6p4dcwa1qjzblmkhbxs1wsw87aidvqri7lj8wy"))))
     (build-system gnu-build-system)
     (outputs (list "out" "python"))
     (arguments
@@ -1753,7 +1779,7 @@ slabtop, and skill.")
          (add-before 'bootstrap 'patch-bootstrap-scripts
            (lambda _
              (substitute* "usbhid-dump/bootstrap"
-               (("/bin/bash") (which "bash")))
+               (("/bin/sh") (which "sh")))
 
              ;; Don't let autogen.sh run configure with bogus options & CFLAGS.
              (substitute* "autogen.sh"
@@ -2177,8 +2203,7 @@ external rate conversion.")
 (define-public iptables
   (package
     (name "iptables")
-    ;; XXX When updating, remove the ‘install-missing-script’ phase.
-    (version "1.8.5")
+    (version "1.8.6")
     (source
      (origin
        (method url-fetch)
@@ -2187,7 +2212,7 @@ external rate conversion.")
                   (string-append "https://www.netfilter.org/projects/iptables/"
                                  "files/iptables-" version ".tar.bz2")))
        (sha256
-        (base32 "02a3575ypdpg6a2x752mhk3f7h1381ymkq1n0gss6fp6292xfmyl"))))
+        (base32 "0rvp0k8a72h2snrdx48cfn75bfa0ycrd2xl3kjysbymq7q6gxx50"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2199,19 +2224,7 @@ external rate conversion.")
     (arguments
      '(#:tests? #f       ; no test suite
        #:configure-flags ; add $libdir to the RUNPATH of executables
-       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-missing-script
-           ;; A typo prevents installation of /sbin/iptables-apply.  It's been
-           ;; fixed upstream (d4ed0c741fc789bb09d977d74d30875fdd50d08b), but
-           ;; a patch would require bootstrapping and more inputs.  Simply copy
-           ;; the file ourselves.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (sbin (string-append out "/sbin")))
-               (install-file "iptables/iptables-apply" sbin)
-               #t))))))
+       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
     (home-page "https://www.netfilter.org/projects/iptables/index.html")
     (synopsis "Programs to configure Linux IP packet filtering rules")
     (description
@@ -2930,14 +2943,14 @@ file system is as easy as logging into the server with an SSH client.")
 (define-public archivemount
   (package
     (name "archivemount")
-    (version "0.8.12")
+    (version "0.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.cybernoia.de/software/archivemount/"
                            "archivemount-" version ".tar.gz"))
        (sha256
-        (base32 "12fb8fcmd1zwvfgzx4pay47md5cr2kgxcgq82cm6skmq75alfzi4"))))
+        (base32 "1cy5b6qril9c3ry6fv7ir87s8iyy5vxxmbyx90dm86fbra0vjaf5"))))
     (build-system gnu-build-system)
     (inputs `(("fuse" ,fuse)
               ("libarchive" ,libarchive)))
@@ -3205,7 +3218,7 @@ from the module-init-tools project.")
 (define-public earlyoom
   (package
     (name "earlyoom")
-    (version "1.3.1")
+    (version "1.6.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3214,23 +3227,23 @@ from the module-init-tools project.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "06sd3jpkdrwqbphsf8jrgs5rxfi7j3xjmygjjvj4xjk4gncz7r2i"))))
+                "16iyn51xlrsbshc7p5xl2338yyfzknaqc538sa7mamgccqwgyvvq"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (add-before 'check 'set-home
-                    (lambda _
-                      (setenv "HOME" (getcwd))
-                      #t))
-                  (add-after 'build 'install-contribs
-                    ;; Install what seems useful from the contrib directory.
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (contrib (string-append
-                                       out "/share/earlyoom/contrib")))
-                        (install-file "contrib/notify_all_users.py" contrib)
-                        #t))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure script
+         (add-before 'check 'set-go-HOME
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t))
+         (add-before 'check 'disable-failing-test
+           (lambda _
+             ;; This test relies on writing to /proc/%d/oom_score_adj.
+             (substitute* "testsuite_cli_test.go"
+               (("TestI" match)
+                (string-append "skipped" match)))
+             #t)))
        #:make-flags (let* ((prefix (assoc-ref %outputs "out")))
                       (list ,(string-append "CC=" (cc-for-target))
                             (string-append "VERSION=v" ,version)
@@ -4073,14 +4086,14 @@ isolation or root privileges.")
 (define-public hdparm
   (package
     (name "hdparm")
-    (version "9.58")
+    (version "9.60")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/hdparm/hdparm/"
                                   "hdparm-" version ".tar.gz"))
               (sha256
                (base32
-                "03z1qm8zbgpxagk3994lvp24yqsshjibkwg05v9p3q1w7y48xrws"))))
+                "1k1mcv7naiacw1y6bdd1adnjfiq1kkx2ivsadjwmlkg4fff775w3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -4112,7 +4125,7 @@ Translation (@dfn{SAT}) are also supported.")
 (define-public nvme-cli
   (package
     (name "nvme-cli")
-    (version "1.12")
+    (version "1.13")
     (home-page "https://github.com/linux-nvme/nvme-cli")
     (source (origin
               (method git-fetch)
@@ -4120,7 +4133,7 @@ Translation (@dfn{SAT}) are also supported.")
                     (url home-page)
                     (commit (string-append "v" version))))
               (sha256
-               (base32 "0ldky34sn0m5c4hgiip0fkzm465nca69bhxicpd5dg8wxhzxqrp3"))
+               (base32 "1d538kp841bjh8h8d9q7inqz56rdcwb3m78zfx8607ddykv7wcqb"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -4443,7 +4456,7 @@ arrays when needed.")
 (define-public multipath-tools
   (package
     (name "multipath-tools")
-    (version "0.8.4")
+    (version "0.8.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4452,8 +4465,7 @@ arrays when needed.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "14n8pcgnliicqxzc40xvjxk4cafm4qx7a3rsx5qva74r3ydzx8rn"))
-              (patches (search-patches "multipath-tools-sans-systemd.patch"))
+                "0gipg0z79h76j0f449cx4wcrfsv69ravjlpphsac11h302g3nrvg"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -4511,6 +4523,18 @@ arrays when needed.")
                (("-lmultipath -lcmocka")
                 "-lmultipath -L$(mpathcmddir) -lmpathcmd -lcmocka"))
              #t))
+         (add-after 'unpack 'skip-failing-tests
+           (lambda _
+             ;; This test and the module's setup() test an arbitrary block
+             ;; device node name, but the build environment has none.
+             (substitute* "tests/devt.c"
+               (("return get_one_devt.*") "return 0;\n")
+               (("cmocka_unit_test\\(test_devt2devname_devt_good\\),") ""))
+             ;; The above triggers -Werror=unused-function.  Ignore it.
+             (substitute* "tests/Makefile"
+               (("CFLAGS \\+= " match)
+                (string-append match "-Wno-error=unused-function ")))
+             #t))
          (delete 'configure))))         ; no configure script
     (native-inputs
      `(("perl" ,perl)
@@ -4808,7 +4832,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "5.7")
+    (version "5.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -4816,7 +4840,7 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "0p6ycbr8sw5bq3mj84gh9rvh5sk8sjr2l9hb9dhm4j41ij5h8bsw"))))
+                "14d7hz07kfczfgmy1ixkgccjn393gpkjn7givz5kwxddcnk5i4xq"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of the binaries in "out"
@@ -5807,7 +5831,7 @@ of flash storage.")
 (define-public libseccomp
   (package
     (name "libseccomp")
-    (version "2.5.0")
+    (version "2.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/seccomp/libseccomp/"
@@ -5815,7 +5839,7 @@ of flash storage.")
                                   "/libseccomp-" version ".tar.gz"))
               (sha256
                (base32
-                "1wql62cg8f95cwpy057cl764nni9g4sdn5lqj68x22kjs8w71yhz"))))
+                "0m8dlg1v7kflcxvajs4p76p275qwsm2abbf5mfapkakp7hw7wc7f"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")
@@ -5959,14 +5983,14 @@ running boot option, and more.")
 (define-public sysstat
   (package
     (name "sysstat")
-    (version "12.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://pagesperso-orange.fr/sebastien.godard/"
-                                  "sysstat-" version ".tar.xz"))
-              (sha256
-               (base32
-                "05idnvkhvzaynj9awx7q54x1v42jblzrxq0fn5zd1v4mjwrnqmbq"))))
+    (version "12.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://pagesperso-orange.fr/sebastien.godard/"
+                           "sysstat-" version ".tar.xz"))
+       (sha256
+        (base32 "02yf2c9n56c3ic72r4p4kb99zjxr8fldvsnmcy7s262izx78vbr4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite.
@@ -6041,43 +6065,40 @@ set the screen to be pitch black at a value of 0 (or higher).
     (license license:gpl3+)))
 
 (define-public brightnessctl
-  (let ((commit "6a791e7694aeeb5d027f71c6098e5182cf03371c"))
-    (package
-      (name "brightnessctl")
-      (version (git-version "0.4" "0" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/Hummer12007/brightnessctl/")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1n1gb8ldgqv3vs565yhk1w4jfvrviczp94r8wqlkv5q6ab43c8w9"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:tests? #f                    ; no tests
-         #:make-flags (list "CC=gcc"
-                            (string-append "PREFIX=" %output)
-                            (string-append "UDEVDIR=" %output "/lib/udev/rules.d/"))
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (add-after 'unpack 'adjust-udev-rules
-             (lambda _
-               (substitute* "90-brightnessctl.rules"
-                 (("/bin/") "/run/current-system/profile/bin/"))
-               #t)))))
-      (home-page "https://github.com/Hummer12007/brightnessctl")
-      (synopsis "Backlight and LED brightness control")
-      (description
-       "This program allows you read and control device brightness.  Devices
+  (package
+    (name "brightnessctl")
+    (version "0.5.1")
+    (home-page "https://github.com/Hummer12007/brightnessctl")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0immxc7almmpg80n3bdn834p3nrrz7bspl2syhb04s3lawa5y2lq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          (string-append "PREFIX=" %output)
+                          (string-append "UDEVDIR=" %output "/lib/udev/rules.d/"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'adjust-udev-rules
+           (lambda _
+             (substitute* "90-brightnessctl.rules"
+               (("/bin/") "/run/current-system/profile/bin/"))
+             #t)))))
+    (synopsis "Backlight and LED brightness control")
+    (description
+     "This program allows you read and control device brightness.  Devices
 include backlight and LEDs.  It can also preserve current brightness before
 applying the operation, such as on lid close.
 
 The appropriate permissions must be set on the backlight or LED control
 interface in sysfs, which can be accomplished with the included udev rules.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public tlp
   (package
@@ -6257,14 +6278,14 @@ re-use code and to avoid re-inventing the wheel.")
 (define-public libnftnl
   (package
     (name "libnftnl")
-    (version "1.1.7")
+    (version "1.1.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://netfilter.org/libnftnl/"
                            "libnftnl-" version ".tar.bz2"))
        (sha256
-        (base32 "13zd90bfrr0q3j0l0cbc8kiizccw6n8gp727kqnfljh024zw3nr0"))))
+        (base32 "04dp797llg3cqzivwrql30wg9mfr0ngnp0v5gs7jcdmp11dzm8q4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -6281,7 +6302,7 @@ used by nftables.")
 (define-public nftables
   (package
     (name "nftables")
-    (version "0.9.6")
+    (version "0.9.7")
     (source
      (origin
        (method url-fetch)
@@ -6290,7 +6311,7 @@ used by nftables.")
                   (string-append "https://www.nftables.org/projects/nftables"
                                  "/files/nftables-" version ".tar.bz2")))
        (sha256
-        (base32 "0vmn6xwqa1nq6crfxshh049b199d0aj6hfgin7k068xhibzgvmk8"))))
+        (base32 "1c1c2475nifncv0ng8z77h2dpanlsx0bhqm15k00jb3a6a68lszy"))))
     (build-system gnu-build-system)
     (arguments `(#:configure-flags
                  '("--disable-man-doc"))) ; FIXME: Needs docbook2x.
@@ -6943,7 +6964,7 @@ IP addresses and routes, and configure IPsec.")
 (define-public xfsprogs
   (package
     (name "xfsprogs")
-    (version "5.7.0")
+    (version "5.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -6951,7 +6972,7 @@ IP addresses and routes, and configure IPsec.")
                     "xfsprogs-" version ".tar.gz"))
               (sha256
                (base32
-                "0bssrfhnw5mhybgaa6d8wp87izi3c9cjpjy7vicm6y76mf7kl8p9"))))
+                "13xkn9jpmwp4fm9r68vhgznkmxhnv83n2b39mhy2qdaph90w2a1l"))))
     (build-system gnu-build-system)
     (outputs (list "out" "python"))
     (arguments
@@ -7511,7 +7532,7 @@ and above.")
 (define-public bpftrace
   (package
     (name "bpftrace")
-    (version "0.10.0")
+    (version "0.11.4")
     (source
      (origin
        (method git-fetch)
@@ -7520,8 +7541,7 @@ and above.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "023ardywbw5w8815j2ny9rrp2xlpxndqaa7v2njjm8109p7ilsdn"))
+        (base32 "0y4qgm2cpccrsm20rnh92hqplddqsc5q5zhw9nqn2igm3h9i0z7h"))
        (patches (search-patches "bpftrace-disable-bfd-disasm.patch"))))
     (build-system cmake-build-system)
     (native-inputs
@@ -7563,7 +7583,7 @@ created by Alastair Robertson.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/eBUS/ttyebus.git")
+               (url "https://github.com/eBUS/ttyebus")
                (commit "fe4332a2281cf79804ef4d8516aa848ca1c58d1f")))
          (file-name (git-file-name name version))
          (sha256
@@ -7583,13 +7603,13 @@ receiving.  It is dedicated to the PL011 UART of the Raspberry Pi.")
 (define-public ipset
   (package
     (name "ipset")
-    (version "7.6")
+    (version "7.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://ipset.netfilter.org/ipset-" version ".tar.bz2"))
+              (uri (string-append "https://ipset.netfilter.org/ipset-" version ".tar.bz2"))
               (sha256
                (base32
-                "1ny2spcm6bmpj8vnazssg99k59impr7n84jzkdmdjly1m7548z8f"))))
+                "02mkp7vmsh609dcp02xi290sxmsgq2fsch3875dxkwfxkrl16p5p"))))
     (build-system gnu-build-system)
     (inputs
      `(("libmnl" ,libmnl)))
@@ -7597,7 +7617,7 @@ receiving.  It is dedicated to the PL011 UART of the Raspberry Pi.")
      `(("pkg-config" ,pkg-config)))
     (arguments
      `(#:configure-flags '("--with-kmod=no")))
-    (home-page "http://ipset.netfilter.org/")
+    (home-page "https://ipset.netfilter.org/")
     (synopsis "Administration tool for IP sets")
     (description "IP sets are a framework inside the Linux 2.4.x and 2.6.x kernel which
 can be administered by the ipset utility.  Depending on the type,
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 1f0006964b..e92fa74b83 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
@@ -639,9 +639,9 @@ antialiased TrueType font rendering using CLX and XRender extension.")
   (sbcl-package->ecl-package sbcl-clx-truetype))
 
 (define-public sbcl-slynk
-  (let ((revision "3")
+  (let ((revision "4")
         ;; Update together with emacs-sly.
-        (commit "6a2f543cb21f14104c2253af5a1427b884a987ae"))
+        (commit "68561f1b7b66fa0240766ece836bb04da31ea17d"))
     (package
       (name "sbcl-slynk")
       (version (git-version "1.0.0-beta" revision commit))
@@ -653,7 +653,7 @@ antialiased TrueType font rendering using CLX and XRender extension.")
            (url "https://github.com/joaotavora/sly")
            (commit commit)))
          (sha256
-          (base32 "0wbpg9p9yg2hd62l15pvy50fk3hndq5zzyqlyyf04g368s895144"))
+          (base32 "1xwx537dhgclngi6b0faf320i8pnac9309wvmk6z2g6dm3v652ds"))
          (file-name (git-file-name "slynk" version))
          (modules '((guix build utils)
                     (ice-9 ftw)))
@@ -663,18 +663,7 @@ antialiased TrueType font rendering using CLX and XRender extension.")
              ;; access
              (substitute* "slynk/slynk.asd"
                (("\\.\\./contrib")
-                "contrib")
-               (("\\(defsystem :slynk/util")
-                "(defsystem :slynk/util :depends-on (:slynk)"))
-             (substitute* "contrib/slynk-trace-dialog.lisp"
-               (("\\(slynk::reset-inspector\\)") ; Causes problems on load
-                "nil"))
-             (substitute* "contrib/slynk-profiler.lisp"
-               (("slynk:to-line")
-                "slynk-pprint-to-line"))
-             (substitute* "contrib/slynk-fancy-inspector.lisp"
-               (("slynk/util") "slynk-util")
-               ((":compile-toplevel :load-toplevel") ""))
+                "contrib"))
              (rename-file "contrib" "slynk/contrib")
              ;; Move slynk's contents into the base directory for easier
              ;; access
@@ -690,7 +679,6 @@ antialiased TrueType font rendering using CLX and XRender extension.")
        `(#:tests? #f ; No test suite
          #:asd-systems '("slynk"
                          "slynk/arglists"
-                         "slynk/util"
                          "slynk/fancy-inspector"
                          "slynk/package-fu"
                          "slynk/mrepl"
@@ -709,7 +697,6 @@ antialiased TrueType font rendering using CLX and XRender extension.")
                             %outputs
                             #:dependencies '("slynk"
                                              "slynk/arglists"
-                                             "slynk/util"
                                              "slynk/fancy-inspector"
                                              "slynk/package-fu"
                                              "slynk/mrepl"
@@ -1121,6 +1108,40 @@ to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
 (define-public ecl-cl-yacc
   (sbcl-package->ecl-package sbcl-cl-yacc))
 
+(define-public sbcl-eager-future2
+  (let ((commit "54df8effd9d9eccac917509590286b5ac5f9cb30"))
+    (package
+      (name "sbcl-eager-future2")
+      (version (git-version "0.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.common-lisp.net/vsedach/eager-future2.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1qs1bv3m0ki8l5czhsflxcryh22r9d9g9a3a3b0cr0pl954q5rld"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("trivial-garbage" ,sbcl-trivial-garbage)))
+      (synopsis "Futures promises synchronization mechanism for Common Lisp")
+      (description
+       "Eager Future2 is a Common Lisp library that provides composable
+concurrency primitives that unify parallel and lazy evaluation, are integrated
+with the Common Lisp condition system, and have automatic resource
+management.")
+      (home-page "https://gitlab.common-lisp.net/vsedach/eager-future2")
+      (license license:lgpl3+))))
+
+(define-public cl-eager-future2
+  (sbcl-package->cl-source-package sbcl-eager-future2))
+
+(define-public ecl-eager-future2
+  (sbcl-package->ecl-package sbcl-eager-future2))
+
 (define-public sbcl-jpl-util
   (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
     (package
@@ -1197,6 +1218,62 @@ several blockable channels.)")
 (define-public ecl-jpl-queues
   (sbcl-package->ecl-package sbcl-jpl-queues))
 
+(define-public sbcl-calispel
+  (let ((commit "e9f2f9c1af97f4d7bb4c8ac25fb2a8f3e8fada7a"))
+    (package
+      (name "sbcl-calispel")
+      (version (git-version "0.1" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               ;; This fork replaces the dependency on the obsolete
+               ;; eager-future with eager-future2.
+               (url "https://github.com/hawkir/calispel")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "08bmf3pi7n5hadpmqqkg65cxcj6kbvm997wcs1f53ml1nb79d9z8"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("jpl-queues" ,sbcl-jpl-queues)
+         ("bordeaux-threads" ,sbcl-bordeaux-threads)))
+      (native-inputs
+       `(("eager-future2" ,sbcl-eager-future2)))
+      (synopsis "Thread-safe message-passing channels in Common Lisp")
+      (description
+       "Calispel is a Common Lisp library for thread-safe message-passing
+channels, in the style of the occam programming language, also known as
+communicating sequential processes (CSP).  See
+@url{https://en.wikipedia.org/wiki/Communicating_sequential_processes}.
+
+Calispel channels let one thread communicate with another, facilitating
+unidirectional communication of any Lisp object.  Channels may be unbuffered,
+where a sender waits for a receiver (or vice versa) before either operation can
+continue, or channels may be buffered with flexible policy options.
+
+Because sending and receiving on a channel may block, either operation can time
+out after a specified amount of time.
+
+A syntax for alternation is provided (like @code{ALT} in occam, or Unix
+@code{select()}): given a sequence of operations, any or all of which may
+block, alternation selects the first operation that doesn't block and executes
+associated code.  Alternation can also time out, executing an \"otherwise\"
+clause if no operation becomes available within a set amount of time.
+
+Calispel is a message-passing library, and as such leaves the role of
+threading abstractions and utilities left to be filled by complementary
+libraries such as Bordeaux-Threads and Eager Future.")
+      (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
+      (license license:isc))))
+
+(define-public cl-calispel
+  (sbcl-package->cl-source-package sbcl-calispel))
+
+(define-public ecl-calispel
+  (sbcl-package->ecl-package sbcl-calispel))
+
 (define-public sbcl-eos
   (let ((commit "b4413bccc4d142cbe1bf49516c3a0a22c9d99243")
         (revision "2"))
@@ -1601,7 +1678,7 @@ writing code that contains string literals that contain code themselves.")
 (define-public sbcl-slime-swank
   (package
     (name "sbcl-slime-swank")
-    (version "2.24")
+    (version "2.26")
     (source
      (origin
        (file-name (git-file-name "slime-swank" version))
@@ -1611,7 +1688,7 @@ writing code that contains string literals that contain code themselves.")
              (commit (string-append "v" version))))
        (sha256
         (base32
-         "0js24x42m7b5iymb4rxz501dff19vav5pywnzv50b673rbkaaqvh"))))
+         "0mxb1wnw19v0s72w2wkz5afdlzvpy5nn7pr4vav403qybac0sw5c"))))
     (build-system asdf-build-system/sbcl)
     (arguments
      '(#:asd-systems '("swank")))
@@ -2192,6 +2269,12 @@ non-consing thread safe queues and fibonacci priority queues.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-arm-support
+           (lambda _
+             ;; This is apparently deprecated since libffi-3.3.
+             (substitute* "libffi/libffi-types.lisp"
+               (("\\\(\\\(:unix64.*") ")\n"))
+             #t))
          (add-after 'unpack 'fix-paths
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "libffi/libffi.lisp"
@@ -2543,10 +2626,10 @@ is a library for creating graphical user interfaces.")
   (sbcl-package->ecl-package sbcl-cl-cffi-gtk))
 
 (define-public sbcl-cl-webkit
-  (let ((commit "04bb5703b68f4db9de71529b81896cc428ef54e1"))
+  (let ((commit "aecd76a2bcc7bfee049c91d94cc75f893800bf37"))
     (package
       (name "sbcl-cl-webkit")
-      (version (git-version "2.4" "8" commit))
+      (version (git-version "2.4" "9" commit))
       (source
        (origin
          (method git-fetch)
@@ -2556,7 +2639,7 @@ is a library for creating graphical user interfaces.")
          (file-name (git-file-name "cl-webkit" version))
          (sha256
           (base32
-           "12dzqgkvgwi97r8dbflslj7nsx7p6iavx82fs48nj9wf7ln1c87s"))))
+           "1j2wvn19kz0bcg17qr9pc4xp6fgjy8zngdnnp5rpfxd25sli62yc"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        `(("cffi" ,sbcl-cffi)
@@ -5342,38 +5425,37 @@ various string metrics in Common Lisp:
   (sbcl-package->ecl-package sbcl-mk-string-metrics))
 
 (define-public sbcl-cl-str
-  (let ((commit "eb480f283e28802d67b35bf916506701152f9a2a"))
-    (package
-      (name "sbcl-cl-str")
-      (version (git-version "0.17" "1" commit))
-      (home-page "https://github.com/vindarel/cl-str")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url home-page)
-                      (commit commit)))
-                (sha256
-                 (base32 "1hpq5m8zjjnzns370zy27z2vcm1p8n2ka5ij2x67gyc9amz9vla0"))
-                (file-name (git-file-name name version))))
-      (build-system asdf-build-system/sbcl)
-      (inputs
-       `(("cl-ppcre" ,sbcl-cl-ppcre)
-         ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
-         ("cl-change-case" ,sbcl-cl-change-case)))
-      (native-inputs
-       `(("prove" ,sbcl-prove)))
-      (arguments
-       `(#:asd-systems '("str")
-         #:test-asd-file "str.test.asd"))
-      (synopsis "Modern, consistent and terse Common Lisp string manipulation library")
-      (description "A modern and consistent Common Lisp string manipulation
+  (package
+    (name "sbcl-cl-str")
+    (version "0.19")
+    (home-page "https://github.com/vindarel/cl-str")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (sha256
+               (base32 "1jyza2jhn7w6fl4w87pv0m87z5ia48m6dqw12k0mdh7l3mgjq839"))
+              (file-name (git-file-name name version))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     `(("cl-ppcre" ,sbcl-cl-ppcre)
+       ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
+       ("cl-change-case" ,sbcl-cl-change-case)))
+    (native-inputs
+     `(("prove" ,sbcl-prove)))
+    (arguments
+     `(#:asd-systems '("str")
+       #:test-asd-file "str.test.asd"))
+    (synopsis "Modern, consistent and terse Common Lisp string manipulation library")
+    (description "A modern and consistent Common Lisp string manipulation
 library that focuses on modernity, simplicity and discoverability:
 @code{(str:trim s)} instead of @code{(string-trim '(#\\Space ...) s)}), or
 @code{str:concat strings} instead of an unusual format construct; one
 discoverable library instead of many; consistency and composability, where
 @code{s} is always the last argument, which makes it easier to feed pipes and
 arrows.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public cl-str
   (sbcl-package->cl-source-package sbcl-cl-str))
@@ -5564,8 +5646,8 @@ number of other open source projects.
   (sbcl-package->ecl-package sbcl-s-sysdeps))
 
 (define-public sbcl-cl-prevalence
-  (let ((commit "1e5f030d94237b33d20947a2f6c194abedb10727")
-        (revision "3"))
+  (let ((commit "5a76be036092ed6c18cb695a9e03bce87e21b840")
+        (revision "4"))
     (package
       (name "sbcl-cl-prevalence")
       (build-system asdf-build-system/sbcl)
@@ -5580,7 +5662,7 @@ number of other open source projects.
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "13yb8lv2aap5wvqa6hw7ms31xnax58f4m2nxifkssrzkb2w2qf29"))))
+           "050h6hwv8f16b5v6fzba8zmih92hgaaq27i2x9wv1iib41gbia3r"))))
       (inputs
        `(("s-sysdeps" ,sbcl-s-sysdeps)
          ("s-xml" ,sbcl-s-xml)))
@@ -7046,8 +7128,8 @@ by Chris Riesbeck.")
   (sbcl-package->ecl-package sbcl-lisp-unit2))
 
 (define-public sbcl-cl-csv
-  (let ((commit "3eba29c8364b033fbe0d189c2500559278b6a362")
-        (revision "1"))
+  (let ((commit "68ecb5d816545677513d7f6308d9e5e8d2265651")
+        (revision "2"))
     (package
       (name "sbcl-cl-csv")
       (version (git-version "1.0.6" revision commit))
@@ -7060,7 +7142,7 @@ by Chris Riesbeck.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "07h4ni89jzx93clx453hlnnb5g53hhlcmz5hghqv6ysam48lc8g6"))))
+           "0gcmlbwx5m3kwgk12qi80w08ak8fgdnvyia429fz6gnxmhg0k54x"))))
       (build-system asdf-build-system/sbcl)
       (arguments
        ;; See: https://github.com/AccelerationNet/cl-csv/pull/34
@@ -10427,6 +10509,70 @@ and decoder for Common Lisp.")
 (define-public ecl-qbase64
   (sbcl-package->ecl-package sbcl-qbase64))
 
+(define-public sbcl-lw-compat
+  ;; No release since 2013.
+  (let ((commit "aabfe28c6c1a4949f9d7b3cb30319367c9fd1c0d"))
+    (package
+      (name "sbcl-lw-compat")
+      (version (git-version "1.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pcostanza/lw-compat/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "131rq5k2mlv9bfhmafiv6nfsivl4cxx13d9wr06v5jrqnckh4aav"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "https://github.com/pcostanza/lw-compat/")
+      (synopsis "LispWorks utilities ported to other Common Lisp implementations")
+      (description "This package contains a few utility functions from the
+LispWorks library that are used in software such as ContextL.")
+      (license license:expat))))
+
+(define-public cl-lw-compat
+  (sbcl-package->cl-source-package sbcl-lw-compat))
+
+(define-public ecl-lw-compat
+  (sbcl-package->ecl-package sbcl-lw-compat))
+
+(define-public sbcl-contextl
+  ;; No release since 2013.
+  (let ((commit "5d18a71a85824f6c25a9f35a21052f967b8b6bb9"))
+    (package
+      (name "sbcl-contextl")
+      (version (git-version "1.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pcostanza/contextl/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0gk1izx6l6g48nypmnm9r6mzjx0jixqjj2kc6klf8a88rr5xd226"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("closer-mop" ,sbcl-closer-mop)
+         ("lw-compat" ,sbcl-lw-compat)))
+      (home-page "https://github.com/pcostanza/contextl")
+      (synopsis "Context-oriented programming for Common Lisp")
+      (description "ContextL is a CLOS extension for Context-Oriented
+Programming (COP).
+
+Find overview of ContextL's features in an overview paper:
+@url{http://www.p-cos.net/documents/contextl-soa.pdf}.  See also this general
+overview article about COP which also contains some ContextL examples:
+@url{http://www.jot.fm/issues/issue_2008_03/article4/}.")
+      (license license:expat))))
+
+(define-public cl-contextl
+  (sbcl-package->cl-source-package sbcl-contextl))
+
+(define-public ecl-contextl
+  (sbcl-package->ecl-package sbcl-contextl))
+
 (define-public sbcl-hu.dwim.common-lisp
   (package
     (name "sbcl-hu.dwim.common-lisp")
@@ -11018,7 +11164,8 @@ XML to Lisp structures or s-expressions and back.")
        (uri (string-append "https://common-lisp.net/project/geco/download/"
                            "geco-" version ".tar.gz"))
        (sha256
-        (base32 "0kk0bzr1019cfmf2b1jl1rk9shv3gx5z1znifxllg9mb98yqsgw0"))))
+        (base32 "0kk0bzr1019cfmf2b1jl1rk9shv3gx5z1znifxllg9mb98yqsgw0"))
+       (patches (search-patches "sbcl-geco-fix-organism-class.patch"))))
     (build-system asdf-build-system/sbcl)
     (home-page "https://common-lisp.net/project/geco/")
     (synopsis "Genetic algorithm toolkit for Common Lisp")
@@ -11032,3 +11179,271 @@ object-oriented framework for prototyping genetic algorithms in Common Lisp.")
 
 (define-public ecl-geco
   (sbcl-package->ecl-package sbcl-geco))
+
+(define-public sbcl-html-entities
+  (let ((commit "4af018048e891f41d77e7d680ed3aeb639e1eedb"))
+    (package
+      (name "sbcl-html-entities")
+      (version (git-version "0.02" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/BnMcGn/html-entities/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1b2yl6lf6vis17y4n5s505p7ica96bdafcl6vydy1hg50fy33nfr"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("ppcre" ,sbcl-cl-ppcre)))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (home-page "https://github.com/BnMcGn/html-entities/")
+      (synopsis "Encode and decode entities in HTML with Common Lisp")
+      (description "Html-entities is a Common Lisp library that lets you
+encode and decode entities in HTML.")
+      (license license:expat))))
+
+(define-public cl-html-entities
+  (sbcl-package->cl-source-package sbcl-html-entities))
+
+(define-public ecl-html-entities
+  (sbcl-package->ecl-package sbcl-html-entities))
+
+(define-public sbcl-quicksearch
+  (let ((commit "fb02ecf7c876ec580ab18c7d2c8c7814c06af599"))
+    (package
+      (name "sbcl-quicksearch")
+      (version (git-version "0.01.04" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tkych/quicksearch/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "16k19zjkhh7r64vjq371k5jwjs7cdfjz83flh561n4h4v1z89fps"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("iterate" ,sbcl-iterate)
+         ("alexandria" ,sbcl-alexandria)
+         ("anaphora" ,sbcl-anaphora)
+         ("ppcre" ,sbcl-cl-ppcre)
+         ("drakma" ,sbcl-drakma)
+         ("html-entities" ,sbcl-html-entities)
+         ("yason" ,sbcl-yason)
+         ("flexi-streams" ,sbcl-flexi-streams)
+         ("do-urlencode" ,sbcl-do-urlencode)))
+      (home-page "https://github.com/tkych/quicksearch/")
+      (synopsis "Search Engine Interface for Common Lisp packages")
+      (description "Quicksearch is a search-engine-interface for Common Lisp.
+The goal of Quicksearch is to find the Common Lisp library quickly.  For
+example, if you will find the library about json, just type @code{(qs:?
+'json)} at REPL.
+
+The function @code{quicksearch} searches for Common Lisp projects in
+Quicklisp, Cliki, GitHub and BitBucket, then outputs results in REPL.  The
+function @code{?} is abbreviation wrapper for @code{quicksearch}.")
+      (license license:expat))))
+
+(define-public cl-quicksearch
+  (sbcl-package->cl-source-package sbcl-quicksearch))
+
+(define-public ecl-quicksearch
+  (sbcl-package->ecl-package sbcl-quicksearch))
+
+(define-public sbcl-agutil
+  (let ((commit "df188d754d472da9faa1601a48f1f37bb7b34d68"))
+    (package
+      (name "sbcl-agutil")
+      (version (git-version "0.0.1" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/alex-gutev/agutil/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1xpnyzksk2xld64b6lw6rw0gn5zxlb77jwna59sd4yl7kxhxlfpf"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("trivia" ,sbcl-trivia)))
+      (home-page "https://github.com/alex-gutev/agutil/")
+      (synopsis "Collection of Common Lisp utilities")
+      (description "A collection of Common Lisp utility functions and macros
+mostly not found in other utility packages.")
+      (license license:expat))))
+
+(define-public cl-agutil
+  (sbcl-package->cl-source-package sbcl-agutil))
+
+(define-public ecl-agutil
+  (sbcl-package->ecl-package sbcl-agutil))
+
+(define-public sbcl-custom-hash-table
+  (let ((commit "f26983133940f5edf826ebbc8077acc04816ddfa"))
+    (package
+      (name "sbcl-custom-hash-table")
+      (version (git-version "0.3" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/metawilm/cl-custom-hash-table")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1k4mvrpbqqds2fwjxp1bxmrfmr8ch4dkwhnkbw559knbqshvrlj5"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       '(#:asd-files '("cl-custom-hash-table.asd")
+         #:asd-systems '("cl-custom-hash-table")))
+      (home-page "https://github.com/metawilm/cl-custom-hash-table")
+      (synopsis "Custom hash tables for Common Lisp")
+      (description "This library allows creation of hash tables with arbitrary
+@code{test}/@code{hash} functions, in addition to the @code{test} functions
+allowed by the standard (@code{EQ}, @code{EQL}, @code{EQUAL} and
+@code{EQUALP}), even in implementations that don't support this functionality
+directly.")
+      (license license:expat))))
+
+(define-public cl-custom-hash-table
+  (sbcl-package->cl-source-package sbcl-custom-hash-table))
+
+(define-public ecl-custom-hash-table
+  (sbcl-package->ecl-package sbcl-custom-hash-table))
+
+(define-public sbcl-collectors
+  (let ((commit "13acef25d8422d1d82e067b1861e513587c166ee"))
+    (package
+      (name "sbcl-collectors")
+      (version (git-version "0.1" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/AccelerationNet/collectors")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1si68n1j6rpns8jw6ksqjpb937pdl30v7xza8rld7j5vh0jhy2yi"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("closer-mop" ,sbcl-closer-mop)
+         ("symbol-munger" ,sbcl-symbol-munger)))
+      (native-inputs
+       `(("lisp-unit2" ,sbcl-lisp-unit2)))
+      (home-page "https://github.com/AccelerationNet/collectors/")
+      (synopsis "Common lisp library providing collector macros")
+      (description "A small collection of common lisp macros to make
+collecting values easier.")
+      (license license:bsd-3))))
+
+(define-public cl-collectors
+  (sbcl-package->cl-source-package sbcl-collectors))
+
+(define-public ecl-collectors
+  (sbcl-package->ecl-package sbcl-collectors))
+
+(define-public cl-environments
+  ;; TODO: asdf-build-system/sbcl fails here, why?  See if it works with the
+  ;; build system revamp once staging is merged after 2020-11-09.
+  (let ((commit "bbcd958a9ff23ce3e6ea5f8ee2edad9634819a3a")) ; No version in 2 years.
+    (package
+      (name "cl-environments")
+      (version (git-version "0.2.3" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/alex-gutev/cl-environments")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1pfxl3vcdrb4mjy4q4c3c7q95kzv6rfjif3hzd5q91i9z621d64r"))))
+      (build-system asdf-build-system/source)
+      (propagated-inputs
+       `(("alexandria" ,cl-alexandria)
+         ("anaphora" ,cl-anaphora)
+         ("collectors" ,cl-collectors)
+         ("optima" ,cl-optima)))
+      (native-inputs
+       `(("prove" ,sbcl-prove)))
+      (home-page "https://github.com/alex-gutev/cl-environments")
+      (synopsis "Implements the Common Lisp standard environment access API")
+      (description "This library provides a uniform API, as specified in Common
+Lisp the Language 2, for accessing information about variable and function
+bindings from implementation-defined lexical environment objects.  All major
+Common Lisp implementations are supported, even those which don't support the
+CLTL2 environment access API.")
+      (license license:expat))))
+
+(define-public sbcl-static-dispatch
+  (package
+    (name "sbcl-static-dispatch")
+    (version "0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alex-gutev/static-dispatch")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1wp5yz8liqqic3yifqf33qhccd755pd7ycvsq1j4i7k3f1wm18i0"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     `(("agutil" ,sbcl-agutil)
+       ("alexandria" ,sbcl-alexandria)
+       ("anaphora" ,sbcl-anaphora)
+       ("arrows" ,sbcl-arrows)
+       ("closer-mop" ,sbcl-closer-mop)
+       ("iterate" ,sbcl-iterate)
+       ("trivia" ,sbcl-trivia)))
+    (propagated-inputs
+     `(("cl-environments" ,cl-environments)))
+    (native-inputs
+     `(("prove" ,sbcl-prove)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Use `arrows' instead of cl-arrows which is abandoned and unlicensed.
+         ;; https://github.com/nightfly19/cl-arrows/issues/5
+         (add-after 'unpack 'use-arrows-instead-of-cl-arrows
+           (lambda _
+             (for-each
+              (lambda (file)
+                (substitute* file
+                  ((":cl-arrows") ":arrows")))
+              '("static-dispatch.asd"
+                "src/package.lisp"
+                "test/methods.lisp"
+                "test/test.lisp")))))))
+    (home-page "https://github.com/alex-gutev/static-dispatch")
+    (synopsis "Static generic function dispatch for Common Lisp")
+    (description "Static dispatch is a Common Lisp library, inspired by
+@code{inlined-generic-function}, which allows standard Common Lisp generic
+function dispatch to be performed statically (at compile time) rather than
+dynamically (runtime).  This is similar to what is known as \"overloading\" in
+languages such as C++ and Java.
+
+The purpose of static dispatch is to provide an optimization in cases where
+the usual dynamic dispatch is too slow, and the dynamic features of generic
+functions, such as adding/removing methods at runtime are not required.  An
+example of such a case is a generic equality comparison function.  Currently
+generic functions are considered far too slow to implement generic arithmetic
+and comparison operations when used heavily in numeric code.")
+    (license license:expat)))
+
+(define-public cl-static-dispatch
+  (sbcl-package->cl-source-package sbcl-static-dispatch))
+
+(define-public ecl-static-dispatch
+  (sbcl-package->ecl-package sbcl-static-dispatch))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index c2114e6935..a3139c21c8 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -379,14 +379,14 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "2.0.8")
+    (version "2.0.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "1xwrwvps7drrpyw3wg5h3g2qajmkwqs9gz0fdw1ns9adp7vld390"))))
+        (base32 "0mq5ga977hzsq4wgv31l8d6rpa186q8xc4x2awwcskf5nq842xai"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (native-inputs
@@ -1011,3 +1011,40 @@ including a built-in database engine and a GUI system.")
      (package
        (inherit picolisp32)
        (name "picolisp")))))
+
+(define-public janet
+  (package
+    (name "janet")
+    (version "1.12.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/janet-lang/janet")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0if514zdmbjvvrsa9x5yfvg2b14sz53yaka12g3yhwkq8ls3qk0c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list
+                     (string-append "DESTDIR=" (assoc-ref %outputs "out"))
+                     (string-append "PREFIX=")
+                     (string-append "CC=" (assoc-ref %build-inputs "gcc")
+                                    "/bin/gcc"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'check
+           (lambda _
+             (invoke "make" "test"))))))
+    (home-page "https://janet-lang.org/")
+    (synopsis "Functional, imperative and embeddable programming language")
+    (description
+     "Janet is a functional and imperative programming language.  It can be
+used for rapid prototyping, dynamic systems, and other domains where dynamic
+languages shine.  You can also add Janet scripting to an application by
+embedding a single C file and two headers.  It can be easily ported to new
+platforms.  The entire language (core library, interpreter, compiler,
+assembler, PEG) is less than 1MB.")
+    (license license:expat)))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 127a8f5e55..24d7c247f0 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,12 +49,16 @@
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages bootstrap)           ;glibc-dynamic-linker
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages libedit)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages mpi)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages xml)
   #:export (system->llvm-target))
 
@@ -388,6 +393,27 @@ given PATCHES.  When TOOLS-EXTRA is given, it must point to the
                                 (("@GLIBC_LIBDIR@")
                                  (string-append libc "/lib"))))))
                         #t)))
+                  ,@(if (version>=? version "10")
+                        `((add-after 'install 'adjust-cmake-file
+                            (lambda* (#:key outputs #:allow-other-keys)
+                              (let ((out (assoc-ref outputs "out")))
+                                ;; Clang generates a CMake file with "targets"
+                                ;; for each installed library file.  Downstream
+                                ;; consumers of the CMake interface can use this
+                                ;; to get absolute library locations.  Including
+                                ;; this file will needlessly assert that _all_
+                                ;; libraries are available, which causes problems
+                                ;; in Guix because some are removed (see the
+                                ;; move-extra-tools phase).  Thus, remove the
+                                ;; asserts so that the main functionality works.
+                                (substitute*
+                                    (string-append
+                                     out
+                                     "/lib/cmake/clang/ClangTargets-release.cmake")
+                                  (("list\\(APPEND _IMPORT_CHECK_TARGETS.*" all)
+                                   (string-append "# Disabled by Guix.\n#" all)))
+                                #t))))
+                        '())
                   ,@(if (version>? version "3.8")
                         `((add-after 'install 'symlink-cfi_blacklist
                             (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -639,11 +665,10 @@ of programming tools as well as libraries with equivalent functionality.")
        (sha256
         (base32
          "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))
-       (patch-flags '("-p2"))
        (patches (search-patches
-                  "llvm-9-fix-bitcast-miscompilation.patch"
-                  "llvm-9-fix-scev-miscompilation.patch"
-                  "llvm-9-fix-lpad-miscompilation.patch"))))))
+                 "llvm-9-fix-bitcast-miscompilation.patch"
+                 "llvm-9-fix-scev-miscompilation.patch"
+                 "llvm-9-fix-lpad-miscompilation.patch"))))))
 
 (define-public clang-runtime-9
   (clang-runtime-from-llvm
@@ -946,6 +971,40 @@ components which highly leverage existing libraries in the larger LLVM Project."
 components which highly leverage existing libraries in the larger LLVM Project.")
     (license license:asl2.0))) ; With LLVM exception
 
+(define-public lldb
+  (package
+    (name "lldb")
+    (version "11.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-uri "lldb" version))
+              (sha256
+               (base32
+                "0wic9lyb2la9bkzdc13szkm4f793w1mddp50xvh237iraygw0w45"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DCMAKE_CXX_COMPILER=clang++")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("swig" ,swig)))
+    (inputs
+     `(("clang" ,clang-11)
+       ("llvm" ,llvm-11)
+
+       ;; Optional (but recommended) inputs.
+       ("curses" ,ncurses)
+       ("editline" ,libedit)
+       ("liblzma" ,xz)
+       ("libxml2" ,libxml2)
+       ("lua" ,lua)
+       ("python" ,python)))
+    (home-page "https://lldb.llvm.org/")
+    (synopsis "Low level debugger")
+    (description
+     "LLDB is a high performance debugger built as a set of reusable components
+which highly leverage existing libraries in the larger LLVM project.")
+    (license license:asl2.0))) ;with LLVM exceptions
+
 (define-public libcxx
   (package
     (name "libcxx")
@@ -1078,48 +1137,96 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
 (define-public python-llvmlite
   (package
     (name "python-llvmlite")
-    (version "0.30.0")
+    (version "0.34.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "llvmlite" version))
        (sha256
         (base32
-         "01wspdc0xhnydl66jyhyr4ii16h3fnw6mjihiwnnxdxg9j6kkajf"))))
+         "0qqzs6h34002ig2jn31vk08q9hh5kn84lhmv4bljz3yakg8y0gph"))))
     (build-system python-build-system)
     (arguments
-     ;; FIXME: One test fails unable to find libm.so
-     ;; https://github.com/numba/llvmlite/issues/537
-     `(#:tests? #f))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-reference-to-llvmlite.so
+           ;; ctypes.CDLL uses dlopen to load libllvmlite.so, which
+           ;; fails, so locate it by its absolute path.  Change it in
+           ;; ffi.py, not utils.py, because setup.py relies on the
+           ;; output of get_library_name for proper installation.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (libllvmlite.so (string-append out "/lib/python"
+                                                   ,(version-major+minor
+                                                     (package-version python))
+                                                   "/site-packages/llvmlite/"
+                                                   "binding/libllvmlite.so")))
+               (substitute* "llvmlite/binding/ffi.py"
+                 (("_lib_name = get_library_name\\(\\)")
+                  (format #f "_lib_name = ~s" libllvmlite.so)))
+               #t)))
+         (add-after 'unpack 'skip-failing-tests
+           (lambda _
+             (substitute* "llvmlite/tests/test_binding.py"
+               (("    def test_libm\\(self\\).*" all)
+                (string-append "    @unittest.skip('Fails on Guix')\n" all)))
+             #t))
+         (add-before 'build 'set-compiler/linker-flags
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((llvm (assoc-ref inputs "llvm")))
+               ;; Refer to ffi/Makefile.linux.
+               (setenv "CPPFLAGS" "-fPIC")
+               (setenv "LDFLAGS" (string-append "-Wl,-rpath="
+                                                llvm "/lib"))
+               #t))))))
     (inputs
      `(("llvm"
-        ,(let ((patches-commit "486edd5fb2a6667feb5c865f300c0da73785434a"))
-           (package
-             (inherit llvm-7)
-             (source
-              (origin
-                (inherit (package-source llvm-7))
-                (patches
+        ,(let* ((patches-commit "061ab39e1d4591f3aa842458252a19ad01858167")
+                (patch-uri (lambda (name)
+                             (string-append
+                              "https://raw.githubusercontent.com/numba/"
+                              "llvmlite/" patches-commit "/conda-recipes/"
+                              name)))
+                (patch-origin (lambda (name hash)
+                                (origin
+                                  (method url-fetch)
+                                  (uri (patch-uri name))
+                                  (sha256 (base32 hash)))))
+                (arch-independent-patches
                  (list
+                  (patch-origin
+                   "partial-testing.patch"
+                   "1cwy4jsmijd838q0bylxl77vrwrb7ksijfly5062ay32303jmj86")
+                  (patch-origin
+                   "0001-Revert-Limit-size-of-non-GlobalValue-name.patch"
+                   "0n4k7za0smx6qwdipsh6x5lm7bfvzzb3p9r8q1zq1dqi4na21295"))))
+           (if (string=? "aarch64-linux" (%current-system))
+               (package
+                 (inherit llvm-9)
+                 (source
                   (origin
-                    (method url-fetch)
-                    (uri (string-append
-                          "https://raw.githubusercontent.com/numba/"
-                          "llvmlite/" patches-commit "/conda-recipes/"
-                          "D47188-svml-VF.patch"))
-                    (sha256
-                     (base32
-                      "0wxhgb61k17f0zg2m0726sf3hppm41f8jar2kkg2n8sl5cnjj9mr")))
+                    (inherit (package-source llvm-9))
+                    (patches
+                     `(,(patch-origin
+                         "intel-D47188-svml-VF_LLVM9.patch"
+                         "1f9ld7wc8bn4gbvdsmk07w1rq371h42vy05rxsq9a22f57rljqbd")
+                       ,@arch-independent-patches
+                       ,@(origin-patches (package-source llvm-9)))))))
+               (package
+                 (inherit llvm-10)
+                 (source
                   (origin
-                    (method url-fetch)
-                    (uri (string-append
-                          "https://raw.githubusercontent.com/numba/"
-                          "llvmlite/" patches-commit "/conda-recipes/"
-                          "twine_cfg_undefined_behavior.patch"))
-                    (sha256
-                     (base32
-                      "07h71n2m1mn9zcfgw04zglffknplb233zqbcd6pckq0wygkrxflp"))))))))))))
-    (home-page "http://llvmlite.pydata.org")
+                    (inherit (package-source llvm-10))
+                    (patches
+                     `(,(patch-origin
+                         "intel-D47188-svml-VF.patch"
+                         "0n46qjwfl7i12bl7wp0cyxl277axfvaaz5lxx5kdlgwjcpa582dg")
+                       ,(patch-origin
+                         "expect-fastmath-entrypoints-in-add-TLI-mappings.ll.patch"
+                         "0jxhjkkwwi1cy898l2n57l73ckpw0v73lqnrifp7r1mwpsh624nv")
+                       ,@arch-independent-patches
+                       ,@(origin-patches (package-source llvm-10))))))))))))
+    (home-page "https://llvmlite.pydata.org")
     (synopsis "Wrapper around basic LLVM functionality")
     (description
      "This package provides a Python binding to LLVM for use in Numba.")
diff --git a/gnu/packages/loko.scm b/gnu/packages/loko.scm
index f6699877f7..ef9312afe3 100644
--- a/gnu/packages/loko.scm
+++ b/gnu/packages/loko.scm
@@ -29,7 +29,7 @@
 (define-public loko-scheme
   (package
     (name "loko-scheme")
-    (version "0.6.0")
+    (version "0.7.0")
     (source
      (origin
        (method git-fetch)
@@ -37,11 +37,11 @@
              (url "https://gitlab.com/weinholt/loko")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "019jlh3lywy912cfz689c9fxgf4bi5700i9k04g7sl5w5gchj36m"))
+        (base32 "1441aarw3vy14zdxyab495ag2fch04v4j89krhbqnqfkz6mdi0vy"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     `(;; r7rs tests are still failing as of 0.6.0.
+     `(;; r7rs tests are a work in progress as of 0.7.0.
        #:tests? #f
        #:strip-binaries? #f
        #:make-flags
diff --git a/gnu/packages/lsof.scm b/gnu/packages/lsof.scm
index 34ad0f03d5..b317902ee7 100644
--- a/gnu/packages/lsof.scm
+++ b/gnu/packages/lsof.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -22,52 +22,37 @@
 (define-module (gnu packages lsof)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
-  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages groff)
   #:use-module (gnu packages perl))
 
 (define-public lsof
   (package
    (name "lsof")
-   (version "4.91")
+   (version "4.94.0")
    (source
     (origin
-      (method url-fetch)
-      (uri
-       (apply append
-              (map
-               (lambda (mirror-uri)
-                 (let ((tarball (string-append name "_" version ".tar.bz2")))
-                   (list
-                    (string-append mirror-uri "/" tarball)
-                    ;; Upon every new release, the previous one is moved here:
-                    (string-append mirror-uri "/OLD/" tarball))))
-               (list
-                "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/"
-
-                ;; Add mirrors because the canonical FTP server at purdue.edu
-                ;; bails out when it cannot do a reverse DNS lookup, as noted
-                ;; at <https://people.freebsd.org/~abe/>.
-                "ftp://ftp.fu-berlin.de/pub/unix/tools/lsof/"
-                (string-append "http://www.mirrorservice.org/sites/"
-                               "lsof.itap.purdue.edu/pub/tools/unix/lsof")
-                (string-append "ftp://ftp.mirrorservice.org/sites/"
-                               "lsof.itap.purdue.edu/pub/tools/unix/lsof")))))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/lsof-org/lsof")
+            (commit version)))
+      (file-name (git-file-name name version))
       (sha256
-       (base32 "18sh4hbl9jw2szkf0gvgan8g13f3g4c6s2q9h3zq5gsza9m99nn9"))))
+       (base32 "0yxv2jg6rnzys49lyrz9yjb4knamah4xvlqj596y6ix3vm4k3chp"))
+      (patches (search-patches "lsof-fatal-test-failures.patch"))))
    (build-system gnu-build-system)
-   (native-inputs `(("perl" ,perl)))
+   (native-inputs
+    `(("groff" ,groff)                  ; for soelim
+      ("perl" ,perl)))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
-        (replace 'unpack
-          (lambda* (#:key source #:allow-other-keys)
-            (let ((unpack (assoc-ref %standard-phases 'unpack)))
-              (unpack #:source source)
-              (unpack #:source (car (find-files "." "\\.tar$"))))))
         (replace 'configure
           (lambda _
-            (setenv "LSOF_CC" "gcc")
+            (setenv "LSOF_CC" ,(cc-for-target))
             (setenv "LSOF_MAKE" "make")
 
             ;; By default, the makefile captures the output of 'uname -a'.
@@ -83,14 +68,13 @@
             (substitute* "Makefile"
               (("`date`") "`date --date=@1`"))
             #t))
+        (add-after 'build 'build-man-page
+          (lambda _
+            (with-output-to-file "lsof.8"
+              (lambda _ (invoke "soelim" "Lsof.8")))
+            #t))
         (add-before 'check 'disable-failing-tests
           (lambda _
-            ;; In libc 2.28, the 'major' and 'minor' macros are provided by
-            ;; <sys/sysmacros.h> only so include it.
-            (substitute* "tests/LTlib.c"
-              (("#ifndef lint")
-               "#include <sys/sysmacros.h>\n\n#ifndef lint"))
-
             (substitute* "tests/Makefile"
               ;; Fails with ‘ERROR!!! client gethostbyaddr() failure’.
               (("(STDTST=.*) LTsock" _ prefix) prefix)
@@ -98,15 +82,16 @@
               (("(OPTTST=.*) LTnfs"  _ prefix) prefix))
             #t))
         (replace 'check
-          (lambda _
-            (with-directory-excursion "tests"
-              ;; Tests refuse to run on ‘unvalidated’ platforms.
-              (make-file-writable "TestDB")
-              (invoke "./Add2TestDB")
+          (lambda* (#:key tests? #:allow-other-keys)
+            (when tests?
+              (with-directory-excursion "tests"
+                ;; Tests refuse to run on ‘unvalidated’ platforms.
+                (make-file-writable "TestDB")
+                (invoke "./Add2TestDB")
 
-              ;; The ‘standard’ tests suggest running ‘optional’ ones as well.
-              (invoke "make" "standard" "optional")
-              #t)))
+                ;; The ‘standard’ tests suggest running ‘optional’ ones as well.
+                (invoke "make" "standard" "optional")))
+            #t))
         (replace 'install
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 42ef24e381..5d6da69fae 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -64,13 +64,16 @@
     (build-system gnu-build-system)
     (inputs `(("readline" ,readline)))
     (arguments
-     '(#:modules ((guix build gnu-build-system)
+     `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
                   (srfi srfi-1))
        #:test-target "test"
        #:make-flags
-       '("MYCFLAGS=-fPIC -DLUA_DL_DLOPEN"
-         "linux")
+       (list "MYCFLAGS=-fPIC -DLUA_DL_DLOPEN"
+             (string-append "CC=" ,(cc-for-target))
+             (string-append "SYSLIBS=-L" (assoc-ref %build-inputs "readline")
+                            "/lib")
+             "linux")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -883,7 +886,7 @@ on numbers.")
 (define-public lua-resty-core
   (package
     (name "lua-resty-core")
-    (version "0.1.17")
+    (version "0.1.18")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -892,7 +895,7 @@ on numbers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "11fyli6yrg7b91nv9v2sbrc6y7z3h9lgf4lrrhcjk2bb906576a0"))))
+                "1c58hykwpg5zqbyhrcb703pzwbkih409v3bh2gady6z2kj9q32dw"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -920,7 +923,7 @@ on numbers.")
 (define-public lua-resty-lrucache
   (package
     (name "lua-resty-lrucache")
-    (version "0.09")
+    (version "0.10")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -929,7 +932,7 @@ on numbers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1mwiy55qs8bija1kpgizmqgk15ijizzv4sa1giaz9qlqs2kqd7q2"))))
+                "1bsc54v1rvxmkwg7a2c01p192lvw5g576f589is8fy1m1c6v4ap8"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index a9e435cbfc..c5097076b1 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -164,7 +164,7 @@ or external monitor.")
 (define-public lxtask
   (package
     (name "lxtask")
-    (version "0.1.9")
+    (version "0.1.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/lxde/LXTask"
@@ -173,7 +173,7 @@ or external monitor.")
                                   "lxtask-" version ".tar.xz"))
               (sha256
                (base32
-                "0cv4hx5dg01hbyi5p10pl78n0a40xajpq4wx9c7886pkmpq8isj1"))))
+                "0b2fxg8jjjpk219gh7qa18g45365598nd2bq7rrq0bdvqjdxy5i2"))))
     (build-system gnu-build-system)
     (inputs `(("gtk+" ,gtk+-2)))
     (native-inputs `(("intltool"   ,intltool)
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index af452a9903..20efba17b7 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -849,12 +849,16 @@ allows for launching applications or shutting down the system.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
-           (lambda _
+           (lambda* (#:key outputs #:allow-other-keys)
              (substitute* '("autostart/CMakeLists.txt"
                             "config/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
-             #t))
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* '("xsession/lxqt.desktop.in")
+                 (("Exec=startlxqt") (string-append "Exec=" out "/bin/startlxqt"))
+                 (("TryExec=lxqt-session") (string-append "TryExec=" out "/bin/startlxqt")))
+               #t)))
          ;; add write permission to lxqt-rc.xml file which is stored as read-only in store
          (add-after 'unpack 'patch-openbox-permission
            (lambda _
@@ -872,7 +876,14 @@ allows for launching applications or shutting down the system.")
                (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
-             #t)))))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/startlxqt")
+                 `("XDG_CONFIG_DIRS" ":" suffix ("/run/current-system/profile/share"
+                                                 "/run/current-system/profile/share/pcmanfm-qt")))
+               #t))))))
     (home-page "https://lxqt.github.io")
     (synopsis "Session manager for LXQt")
     (description "lxqt-session provides the standard session manager
@@ -1021,6 +1032,9 @@ components to build desktop file managers which belongs to LXDE.")
              (substitute* '("autostart/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             (substitute* '("config/pcmanfm-qt/lxqt/settings.conf.in")
+               (("@LXQT_SHARE_DIR@")
+                "/run/current-system/profile/share/lxqt" ))
              #t)))))
     (home-page "https://lxqt.github.io")
     (synopsis "File manager and desktop icon manager")
@@ -1316,7 +1330,7 @@ like @command{tar} and @command{zip}.")
         (origin
           (method git-fetch)
           (uri (git-reference
-            (url (string-append "https://github.com/lxqt/" name ".git"))
+            (url (string-append "https://github.com/lxqt/" name))
             (commit commit)))
           (file-name (git-file-name name version))
           (sha256 (base32 "0br4bxfrl8k7lq84aq4grznlk8xzzjgkmd19bf9mwjr0a87gg72v"))))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 34b522c99b..f1d0922ef2 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -65,6 +65,7 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ocaml)
@@ -869,6 +870,77 @@ data analysis.")
                  (base32
                   "08zbzi8yx5wdlxfx9jap61vg1malc9ajf576w7a0liv6jvvrxlpj")))))))
 
+(define-public python-pynndescent
+  (package
+    (name "python-pynndescent")
+    (version "0.4.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pynndescent" version))
+       (sha256
+        (base32 "0li1fclif50v6xrq7wh3lif9vv5jpj7xhrb0z6g89wwjnp9b9833"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-joblib" ,python-joblib)
+       ("python-llvmlite" ,python-llvmlite)
+       ("python-numba" ,python-numba)
+       ("python-scikit-learn" ,python-scikit-learn)
+       ("python-scipy" ,python-scipy)))
+    (home-page "https://github.com/lmcinnes/pynndescent")
+    (synopsis "Nearest neighbor descent for approximate nearest neighbors")
+    (description
+     "PyNNDescent provides a Python implementation of Nearest Neighbor Descent
+for k-neighbor-graph construction and approximate nearest neighbor search.")
+    (license license:bsd-2)))
+
+(define-public python-opentsne
+  (package
+    (name "python-opentsne")
+    (version "0.4.4")
+    (source
+     (origin
+       ;; No tests in the PyPI tarball.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pavlin-policar/openTSNE")
+             (commit (string-append "v" version))))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32 "08wamsssmyf6511cbmglm67dp48i6xazs89m1cskdk219v90bc76"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Benchmarks require the 'macosko2015' data files.
+         (add-after 'unpack 'delete-benchmark
+           (lambda _
+             (delete-file-recursively "benchmarks")
+             #t))
+         ;; Numba needs a writable dir to cache functions.
+         (add-before 'check 'set-numba-cache-dir
+           (lambda _
+             (setenv "NUMBA_CACHE_DIR" "/tmp")
+             #t)))))
+    (native-inputs
+     `(("python-cython" ,python-cython)))
+    (inputs
+     `(("fftw" ,fftw)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-pynndescent" ,python-pynndescent)
+       ("python-scikit-learn" ,python-scikit-learn)
+       ("python-scipy" ,python-scipy)))
+    (home-page "https://github.com/pavlin-policar/openTSNE")
+    (synopsis "Extensible, parallel implementations of t-SNE")
+    (description
+     "This is a modular Python implementation of t-Distributed Stochastic
+Neighbor Embedding (t-SNE), a popular dimensionality-reduction algorithm for
+visualizing high-dimensional data sets.")
+    (license license:bsd-3)))
+
 (define-public python-scikit-rebate
   (package
     (name "python-scikit-rebate")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 5056098806..83b66a90c8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -28,7 +28,7 @@
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
+;;; Copyright © 2019, 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Justus Winter <justus@sequoia-pgp.org>
 ;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com>
@@ -36,6 +36,9 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Alexey Abramov <levenson@mmer.org>
 ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -61,6 +64,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -76,6 +80,7 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages enchant)
+  #:use-module (gnu packages file)
   #:use-module (gnu packages gdb)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
@@ -104,6 +109,7 @@
   #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages ninja)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
@@ -111,11 +117,13 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages ragel)
   #:use-module (gnu packages rdf)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
@@ -142,6 +150,7 @@
   #:use-module (guix git-download)
   #:use-module (guix svn-download)
   #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system guile)
@@ -400,7 +409,7 @@ to run without any changes.")
 (define-public fetchmail
   (package
     (name "fetchmail")
-    (version "6.4.12")
+    (version "6.4.13")
     (source
      (origin
        (method url-fetch)
@@ -408,7 +417,7 @@ to run without any changes.")
                            (version-major+minor version) "/"
                            "fetchmail-" version ".tar.xz"))
        (sha256
-        (base32 "11s83af63gs9nnrjb66yq58xriyvi8hzj4ykxp3kws5z3nby111b"))))
+        (base32 "1qablzgwx3a516vdhckx3pv716x9r7nyfyr6fbncif861c3cya3x"))))
     (build-system gnu-build-system)
     (inputs
      `(("openssl" ,openssl)))
@@ -435,7 +444,7 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.14.7")
+    (version "2.0.2")
     (source (origin
              (method url-fetch)
              (uri (list
@@ -445,7 +454,7 @@ aliasing facilities to work just as they would on normal mail.")
                                    version ".tar.gz")))
              (sha256
               (base32
-               "0r58xnjgkw0kmnnzhb32mk5gkkani5kbi5krybpbag156fqhgxg4"))
+               "1j0i2jmlk5sc78af9flj3ynj0iiwa8biw7jgf12qm5lppsx1h4j7"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -482,7 +491,7 @@ operating systems.")
 (define-public neomutt
   (package
     (name "neomutt")
-    (version "20200313")
+    (version "20201120")
     (source
      (origin
        (method git-fetch)
@@ -491,7 +500,7 @@ operating systems.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1k4k07l6h5krc3fx928qvdq3ssw9fxn95aj7k885xlckd2i1lnb5"))))
+        (base32 "0z6xavgd0zv9pqvfsdyvhhi1q3y7zxhgg24isbnn9r6mldafqwna"))))
     (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
@@ -514,7 +523,19 @@ operating systems.")
        ("docbook-xsl" ,docbook-xsl)
        ("docbook-xml" ,docbook-xml-4.2)
        ("w3m" ,w3m)
-       ("tcl" ,tcl)))
+       ("tcl" ,tcl)
+
+       ;; Test file data for the unit tests included in the neomutt source.
+       ("neomutt-test-files"
+        ,(let ((commit "8629adab700a75c54e8e28bf05ad092503a98f75"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/neomutt/neomutt-test-files")
+                   (commit commit)))
+             (file-name (git-file-name "neomutt-test-files" commit))
+             (sha256
+              (base32 "1ci04nqkab9mh60zzm66sd6mhsr6lya8wp92njpbvafc86vvwdlr")))))))
     (arguments
      `(#:test-target "test"
        #:configure-flags
@@ -565,7 +586,14 @@ operating systems.")
                (setenv "CONFIG_SHELL" bash)
                (apply invoke bash
                       (string-append (getcwd) "/configure")
-                      flags)))))))
+                      flags))))
+         (add-before 'check 'prepare-test-files
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively (assoc-ref inputs "neomutt-test-files") "tests")
+             (with-directory-excursion "tests"
+               (setenv "NEOMUTT_TEST_DIR" (getcwd)) ; must be absolute
+               (invoke "bash" "setup.sh")
+               #t))))))
     (home-page "https://neomutt.org/")
     (synopsis "Command-line mail reader based on Mutt")
     (description
@@ -588,12 +616,15 @@ It adds a large amount of new and improved features to mutt.")
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("gnupg" ,gnupg)))               ; for tests only
+       ("gnupg" ,gnupg)                 ; for tests only
+       ("gobject-introspection" ,gobject-introspection)))
     (inputs `(("glib" ,glib)
               ("gpgme" ,gpgme)
               ("zlib" ,zlib)))
     (arguments
-     `(#:phases
+     `(#:configure-flags
+         (list "--enable-introspection=yes")
+       #:phases
        (modify-phases %standard-phases
          (add-after
           'unpack 'patch-paths-in-tests
@@ -684,7 +715,7 @@ mailpack.  What can alterMIME do?
 
 @enumerate
 @item Insert disclaimers,
-@item insert arbitary X-headers,
+@item insert arbitrary X-headers,
 @item modify existing headers,
 @item remove attachments based on filename or content-type,
 @item replace attachments based on filename.
@@ -695,6 +726,118 @@ mailpack.  What can alterMIME do?
     (license (list (license:non-copyleft "file://LICENSE")
                    license:bsd-3))))
 
+(define-public astroid
+  (package
+    (name "astroid")
+    (version "0.15")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/astroidmail/astroid")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11cxbva9ni98gii59xmbxh4c6idcg3mg0pgdsp1c3j0yg7ix0lj3"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; https://github.com/astroidmail/astroid/pull/685
+           (substitute* "tests/test_composed_message.cc"
+             (("\\\\n\\.\\.\\.") "\\n...\\n"))
+           #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:modules ((guix build cmake-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils)
+                  (ice-9 match))
+       #:imported-modules ((guix build glib-or-gtk-build-system)
+                           ,@%cmake-build-system-modules)
+       #:configure-flags (list "-GNinja")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-markdown-test
+           ;; This test relies on the plugins and the test suite
+           ;; cannot find the Astroid module.
+           ;;  gi.require_version ('Astroid', '0.2')
+           ;; ValueError: Namespace Astroid not available
+           (lambda _
+             (substitute* "tests/CMakeLists.txt"
+               ((".*markdown.*") ""))
+             #t))
+         (replace 'build
+           (lambda _
+             (invoke "ninja" "-j" (number->string (parallel-job-count)))))
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server")))
+               (setenv "HOME" (getcwd))
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1")
+               #t)))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
+               (invoke "ctest" "."))
+             #t))
+         (replace 'install
+           (lambda _
+             (invoke "ninja" "install")))
+         (add-after 'install 'wrap-with-GI_TYPELIB_PATH
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (paths (map (match-lambda
+                                 ((outputs . directory)
+                                  (let ((girepodir (string-append
+                                                    directory
+                                                    "/lib/girepository-1.0")))
+                                    (if (file-exists? girepodir)
+                                        girepodir
+                                        #f))))
+                               inputs)))
+               (wrap-program (string-append out "/bin/astroid")
+                 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
+             #t))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'install 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (native-inputs
+     `(("glib-networking" ,glib-networking)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gnupg" ,gnupg)
+       ("ninja" ,ninja)
+       ("pkg-config" ,pkg-config)
+       ("ronn" ,ronn)
+       ("w3m" ,w3m)
+       ("xorg-server" ,xorg-server)))
+    (inputs
+     `(("boost" ,boost)
+       ("gmime" ,gmime)
+       ("gobject-introspection" ,gobject-introspection) ; it is referenced
+       ("gtkmm" ,gtkmm)
+       ("libpeas" ,libpeas)
+       ("libsass" ,libsass)
+       ("notmuch" ,notmuch)
+       ("protobuf" ,protobuf)
+       ("python" ,python-wrapper)
+       ("python-pygobject" ,python-pygobject)
+       ("webkitgtk" ,webkitgtk)))
+    (propagated-inputs
+     `(("adwaita-icon-theme" ,adwaita-icon-theme))) ; Required for the thread view
+    (home-page "https://astroidmail.github.io/")
+    (synopsis "GTK frontend to the notmuch mail system")
+    (description
+     "Astroid is a lightweight and fast Mail User Agent that provides a
+graphical interface to searching, display and composing email, organized in
+thread and tags.  Astroid uses the notmuch backend for searches through tons of
+email.  Astroid searches, displays and compose emails — and relies on other
+programs for fetching, syncing and sending email.")
+    (license (list license:gpl3+        ; 'this program'
+                   license:lgpl2.1+)))) ; code from geary, gmime
+
 (define-public ripmime
   ;; Upstream does not tag or otherwise provide any releases (only a version
   ;; number in the source)
@@ -743,6 +886,44 @@ MIME-encoded email package.")
       (home-page "https://github.com/inflex/ripMIME")
       (license license:bsd-3))))
 
+(define-public mailcap
+  (let* ((version "2.1.49")
+         (tag ;; mailcap tags their releases like this: rMajor-minor-patch
+          (string-append "r" (string-join (string-split version #\.) "-"))))
+    (package
+      (name "mailcap")
+      (version version)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://pagure.io/mailcap.git")
+               (commit tag)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0ck1fw6gqn51phcfakhfpfq1yziv3gnmgjvswzhj9x0p162n6alj"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-before 'install 'set-dest-dir
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (setenv "DESTDIR" out)
+                 (substitute* "Makefile"
+                   (("/usr") ""))       ; This allows the man page to install.
+                 #t))))))
+      (native-inputs
+       `(("python" ,python)))           ; for tests
+      (synopsis "MIME type associations for file types")
+      (description
+       "This package provides MIME type associations for file types.")
+      (home-page "https://pagure.io/mailcap")
+      (license (list license:expat              ; mailcap.5
+                     license:public-domain))))) ; mailcap and mime.types
+
 (define-public bogofilter
   (package
     (name "bogofilter")
@@ -961,7 +1142,7 @@ attachments, create new maildirs, and so on.")
 (define-public alot
   (package
     (name "alot")
-    (version "0.5.1")
+    (version "0.9.1")
     (source (origin
               (method url-fetch)
               ;; package author intends on distributing via github rather
@@ -972,27 +1153,47 @@ attachments, create new maildirs, and so on.")
               (file-name (string-append "alot-" version ".tar.gz"))
               (sha256
                (base32
-                "0wax30hjzmkqfml7hig1dqw1v1y63yc0cgbzl96x58b9h2ggqx3a"))))
+                "1r0x3n2fxi6sfq3paz8a4vn2mmyqaznj1207wa7jl0ixnjqilb7f"))))
     (build-system python-build-system)
     (arguments
-     `(;; python 3 is currently unsupported, more info:
-       ;; https://github.com/pazz/alot/blob/master/docs/source/faq.rst
-       #:python ,python-2))
+     `(#:phases
+       (modify-phases %standard-phases
+        (add-before 'check 'fix-tests
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((gnupg (assoc-ref inputs "gnupg")))
+              (substitute* "tests/test_crypto.py"
+                (("gpg2") (string-append gnupg "/bin/gpg")))
+              #t)))
+        (add-before 'check 'disable-failing-tests
+         ;; FIXME: Investigate why these tests are failing.
+         (lambda _
+          (substitute* "tests/test_helper.py"
+            (("def test_env_set") "def _test_env_set"))
+          (substitute* "tests/commands/test_global.py"
+            (("def test_no_spawn_no_stdin_attached")
+             "def _test_no_spawn_no_stdin_attached"))
+          #t)))))
     (native-inputs
-     `(("python2-mock" ,python2-mock)))
+     `(("procps" ,procps)
+       ("python-mock" ,python-mock)))
     (inputs
-     `(("python2-magic" ,python2-magic)
-       ("python2-configobj" ,python2-configobj)
-       ("python2-twisted" ,python2-twisted)
-       ("python2-urwid" ,python2-urwid)
-       ("python2-urwidtrees" ,python2-urwidtrees)
-       ("python2-pygpgme" ,python2-pygpgme)
-       ("python2-notmuch" ,python2-notmuch)))
+     `(("gnupg" ,gnupg)
+       ("python-magic" ,python-magic)
+       ("python-configobj" ,python-configobj)
+       ("python-twisted" ,python-twisted)
+       ("python-service-identity" ,python-service-identity)
+       ("python-urwid" ,python-urwid)
+       ("python-urwidtrees" ,python-urwidtrees)
+       ("python-gpg" ,python-gpg)
+       ("python-notmuch" ,python-notmuch)))
     (home-page "https://github.com/pazz/alot")
-    (synopsis "Command-line MUA using @code{notmuch}")
+    (synopsis "Command-line MUA using Notmuch")
     (description
-     "Alot is an experimental terminal mail user agent (@dfn{MUA}) based on
-@code{notmuch} mail.  It is written in Python using the @code{urwid} toolkit.")
+     "Alot is a terminal-based mail user agent based on the Notmuch mail
+indexer.  It is written in Python using the @code{urwid} toolkit and features
+a modular and command prompt driven interface to provide a full mail user
+agent (@dfn{MUA}) experience as an alternative to the Emacs mode shipped with
+Notmuch.")
     (license license:gpl3+)))
 
 (define-public notifymuch
@@ -1046,14 +1247,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.31")
+    (version "0.31.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1543l57viqzqikjgfzp2abpwz3p0k2iq0b1b3wmn31lwaghs07sp"))))
+                "1vzv9imd0ba51y5zw8h358wikm1fh52rlvvyzvp98w330hzbcmhl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -1203,14 +1404,14 @@ and search library.")
 (define-public muchsync
   (package
     (name "muchsync")
-    (version "5")
+    (version "6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.muchsync.org/src/"
                            "muchsync-" version ".tar.gz"))
        (sha256
-        (base32 "1k2m44pj5i6vfhp9icdqs42chsp208llanc666p3d9nww8ngq2lb"))))
+        (base32 "1s799kx16nm5ry1fcqcc0grgxrwnnp4cnzd0hzwbkvc5v2sf6g8b"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pandoc" ,pandoc)
@@ -1230,7 +1431,7 @@ broadband.  Muchsync supports arbitrary pairwise synchronization among
 replicas.  A version-vector-based algorithm allows it to exchange only the
 minimum information necessary to bring replicas up to date regardless of which
 pairs have previously synchronized.")
-    (license license:gpl2+)))
+    (license license:gpl2+)))           ; with OpenSSL libcrypto exception
 
 (define-public getmail
   (package
@@ -1265,7 +1466,7 @@ useful features.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url  "https://github.com/dinhviethoa/libetpan.git")
+                   (url  "https://github.com/dinhviethoa/libetpan")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -1320,16 +1521,15 @@ compresses it.")
 (define-public claws-mail
   (package
     (name "claws-mail")
-    (version "3.17.7")
+    (version "3.17.8")
     (source
      (origin
        (method url-fetch)
        (uri
-        (string-append
-         "https://www.claws-mail.org/releases/claws-mail-"
-         version ".tar.xz"))
+        (string-append "https://www.claws-mail.org/releases/claws-mail-"
+                       version ".tar.xz"))
        (sha256
-        (base32 "1j6x09621wng0lavh53nwzh9vqjzpspl8kh5azh7kbihpi4ldfb0"))))
+        (base32 "1byxmz68lnm2m8q1gnp0lpr3qp7dcwabrw5iqflz9mlm960v5dyd"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags
@@ -1389,14 +1589,14 @@ addons which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.12")
+    (version "1.8.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/msmtp/releases/"
                            "/msmtp-" version ".tar.xz"))
        (sha256
-        (base32 "0m33m5bc7ajmgy7vivnzj3mhybg37259hx79xypj769kfyafyvx8"))))
+        (base32 "1fcv99nis7c6yc63n04cncjysv9jndrp469gcfxh54aiinmlbadd"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsecret" ,libsecret)
@@ -2420,17 +2620,68 @@ existing mail server.  With Postfix, the proxies can operate as either
 converts them to maildir format directories.")
     (license license:public-domain)))
 
+(define-public mblaze
+  (package
+    (name "mblaze")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/leahneukirchen/mblaze")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hxy3mjjv4hg856sl1r15fdmqaw4s9c26b3lidsd5x0kpqy601ai"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl)))
+    (arguments
+     `(#:tests? #f                   ; XXX: Upstream tests appear to be broken
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          "PREFIX="
+                          (string-append "DESTDIR=" %output))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://github.com/leahneukirchen/mblaze")
+    (synopsis "Unix utilities to deal with Maildir")
+    (description
+     "The mblaze message system is a set of Unix utilities for processing and
+interacting with mail messages which are stored in maildir folders.
+
+Its design is roughly inspired by MH, the RAND Message Handling System, but it
+is a complete implementation from scratch.
+
+mblaze is a classic command line MUA and has no features for receiving or
+transferring messages; you can operate on messages in a local maildir spool,
+or fetch your messages using fdm(1), getmail(1), offlineimap(1), or similar
+utilities, and send it using dma(8), msmtp(1), sendmail(8), as provided by
+OpenSMTPD, Postfix, or similar.
+
+mblaze operates directly on maildir folders and doesn't use its own caches or
+databases.  There is no setup needed for many uses.  All utilities have been
+written with performance in mind.  Enumeration of all messages in a maildir is
+avoided unless necessary, and then optimized to limit syscalls.  Parsing
+message metadata is optimized to limit I/O requests.  Initial operations on a
+large maildir may feel slow, but as soon as they are in the file system cache,
+everything is blazingly fast.  The utilities are written to be memory
+efficient (i.e. not wasteful), but whole messages are assumed to fit into RAM
+easily (one at a time).")
+    (license (list license:public-domain
+                   license:expat))))    ; mystrverscmp.c and mymemmem
+
 (define-public mpop
   (package
     (name "mpop")
-    (version "1.4.10")
+    (version "1.4.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/mpop/releases/"
                            "mpop-" version ".tar.xz"))
        (sha256
-        (base32 "1243hazpiwgvz2m3p48cdh0yw1019i6xjxgc7qyhmxcdy0inb6wy"))))
+        (base32 "1gcxvhin5y0q47svqbf90r5aip0cgywm8sq6m84ygda7km8xylwv"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)))
@@ -2877,14 +3128,13 @@ messages with @acronym{DKIM, DomainKeys Identified Mail} (RFC 4871).")
 (define-public mailman
   (package
     (name "mailman")
-    (version "3.3.1")
+    (version "3.3.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "mailman" version))
         (sha256
-         (base32
-          "0idfiv48jjgc0jq4731094ddhraqq8bxnwmjk6sg5ask0jss9kxq"))))
+         (base32 "0a5ckbf8hc3y28b7p5psp0d4bxk601jlr5pd3hhh545xd8d9f0dg"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("gunicorn" ,gunicorn)
@@ -3420,20 +3670,23 @@ the use of a local MTA such as Sendmail.")
 (define-public afew
   (package
     (name "afew")
-    (version "1.2.0")
+    (version "3.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "afew" version))
        (sha256
         (base32
-         "121w7bd53xyibllxxbfykjj76n81kn1vgjqd22izyh67y8qyyk5r"))))
+         "0wpfqbqjlfb9z0hafvdhkm7qw56cr9kfy6n8vb0q42dwlghpz1ff"))))
     (build-system python-build-system)
     (inputs
-     `(("python-chardet" ,python-chardet)
+     `(("notmuch" ,notmuch)
+       ("python-chardet" ,python-chardet)
+       ("python-dkimpy" ,python-dkimpy)
        ("python-notmuch" ,python-notmuch)))
     (native-inputs
-     `(("python-setuptools-scm" ,python-setuptools-scm)))
+     `(("python-freezegun" ,python-freezegun)
+       ("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://github.com/afewmail/afew")
     (synopsis "Initial tagging script for notmuch mail")
     (description "afew is an initial tagging script for notmuch mail.  It
@@ -3492,7 +3745,7 @@ PGP handling, multiple servers, and secure connections.")
 (define-public imapfilter
   (package
     (name "imapfilter")
-    (version "2.6.16")
+    (version "2.7.4")
     (source
      (origin
        (method git-fetch)
@@ -3501,19 +3754,19 @@ PGP handling, multiple servers, and secure connections.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0f65sg6hhv6778fxwsz4hvarbm97dsb8jj0mg7a9qs273r35pqck"))))
+        (base32 "0nb0ysdp91r6dr3jgx24halbf4f56g4imx9112hkbz1abzgrmxs3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
        #:make-flags
        (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
-             "CC=gcc")
+             (string-append "CC=" ,(cc-for-target)))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))         ; no configure script
-    (native-inputs
+    (inputs
      `(("lua" ,lua)
-       ("pcre" ,pcre)
+       ("pcre2" ,pcre2)
        ("openssl" ,openssl)))
     (home-page "https://github.com/lefcha/imapfilter")
     (synopsis "IMAP mail filtering utility")
@@ -3884,7 +4137,7 @@ DKIM and ARC sign messages and output the corresponding signature headers.")
 (define-public python-aiosmtpd
   (package
     (name "python-aiosmtpd")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method git-fetch)
@@ -3892,7 +4145,7 @@ DKIM and ARC sign messages and output the corresponding signature headers.")
              (url "https://github.com/aio-libs/aiosmtpd")
              (commit version)))
        (sha256
-        (base32 "14c30dm6jzxiblnsah53fdv68vqhxwvb9x0aq9bc4vcdas747vr7"))
+        (base32 "0083d6nf75xv8nq1il6jabz36v6c452svy4p402csxwwih5pw6sk"))
        (file-name (git-file-name name version))))
     (build-system python-build-system)
     (arguments
@@ -3918,3 +4171,42 @@ DKIM and ARC sign messages and output the corresponding signature headers.")
 based on asyncio.")
     (license (list license:asl2.0
                    license:lgpl3))))    ; only for setup_helpers.py
+
+(define-public rspamd
+  (package
+    (name "rspamd")
+    (version "2.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rspamd/rspamd")
+             (commit version)))
+       (sha256
+        (base32 "0vwa7k2s2bkfb8w78z5izkd6ywjbzqysb0grls898y549hm8ii70"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DENABLE_LUAJIT=ON")))
+    (inputs
+     `(("openssl" ,openssl)
+       ("glib" ,glib)
+       ("ragel" ,ragel)
+       ("luajit" ,luajit)
+       ("sqlite" ,sqlite)
+       ("file" ,file)
+       ("icu4c" ,icu4c)
+       ("pcre" ,pcre)
+       ("zlib" ,zlib)
+       ("perl" ,perl)
+       ("libsodium" ,libsodium)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "Spam filtering system")
+    (description "Rspamd is an advanced spam filtering system that
+allows evaluation of messages by a number of rules including regular
+expressions, statistical analysis and custom services such as URL
+black lists.  Each message is analysed by Rspamd and given a spam
+score.")
+    (home-page "https://www.rspamd.com/")
+    (license license:asl2.0)))
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index b44b66b42c..0eadd9d153 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -83,7 +83,7 @@ as description, options, see also, etc.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/rtomayko/ronn.git")
+         (url "https://github.com/rtomayko/ronn")
          (commit version)))
        (file-name
         (git-file-name name version))
@@ -223,7 +223,7 @@ the traditional flat-text whatis databases.")
 (define-public man-pages
   (package
     (name "man-pages")
-    (version "5.08")
+    (version "5.09")
     (source
      (origin
        (method url-fetch)
@@ -233,7 +233,7 @@ the traditional flat-text whatis databases.")
               (string-append "mirror://kernel.org/linux/docs/man-pages/Archive/"
                              "man-pages-" version ".tar.xz")))
        (sha256
-        (base32 "1xzp3f6wvw3wplk1a1x09zfv0jp0pdc9wh95czndh3h8z0qwv9yf"))))
+        (base32 "1whbxim4diyan97y9pz9k4ck16rmjalw5i1m0dg6ycv3pxv386nz"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 77e55731a3..a9635d90fe 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -903,7 +903,6 @@ icons on the MATE desktop.  It works on local and remote file systems.")
        ("dbus-glib" ,dbus-glib)
        ("gajim" ,gajim) ;runtime only?
        ("gtk+" ,gtk+)
-       ("imagemagick" ,imagemagick)
        ("graphicsmagick" ,graphicsmagick)
        ("mate-desktop" ,mate-desktop)
        ("pidgin" ,pidgin) ;runtime only?
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index ee6c75e1a0..b1680db063 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -307,13 +307,13 @@ programming language.")
 (define-public units
   (package
    (name "units")
-   (version "2.19")
+   (version "2.21")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/units/units-" version
                                 ".tar.gz"))
             (sha256 (base32
-                     "0mk562g7dnidjgfgvkxxpvlba66fh1ykmfd9ylzvcln1vxmi6qj2"))))
+                     "1bybhqs4yrly9myb5maz3kdmf8k4fhk2m1d5cbcryn40z6lq0gkc"))))
    (build-system gnu-build-system)
    (inputs
     `(("readline" ,readline)
@@ -1207,7 +1207,7 @@ extremely large and complex data collections.")
 
 (define-public hdf5
   ;; Default version of HDF5.
-  hdf5-1.8)
+  hdf5-1.10)
 
 (define-public hdf-java
   (package
@@ -1239,7 +1239,7 @@ extremely large and complex data collections.")
        ("slf4j-simple" ,java-slf4j-simple)))
     (inputs
      `(("hdf4" ,hdf4)
-       ("hdf5" ,hdf5)
+       ("hdf5" ,hdf5-1.8)
        ("zlib" ,zlib)
        ("libjpeg" ,libjpeg-turbo)
        ("slf4j-api" ,java-slf4j-api)))
@@ -1399,7 +1399,7 @@ System (Grid, Point and Swath).")
      `(("gfortran" ,gfortran)))
     (build-system gnu-build-system)
     (inputs
-     `(("hdf5" ,hdf5)
+     `(("hdf5" ,hdf5-1.8)
        ("zlib" ,zlib)
        ("gctp" ,gctp)))
     (arguments
@@ -1500,7 +1500,7 @@ Blosc-compressed datasets.")
         (base32
          "1gm76jbwhz9adbxgn14zx8cj33dmjdr2g5xcy0m9c2gakp8w59kj"))))
     (build-system gnu-build-system)
-    (inputs `(("hdf5" ,hdf5)))                 ;h5cc for tests
+    (inputs `(("hdf5" ,hdf5-1.8)))                ;h5cc for tests
     (home-page "https://www.hdfgroup.org/products/hdf5_tools/h5check.html")
     (synopsis "HDF5 format checker")
     (description "@code{h5check} is a validation tool for verifying that an
@@ -1542,17 +1542,17 @@ similar to MATLAB, GNU Octave or SciPy.")
 (define-public netcdf
   (package
     (name "netcdf")
-    (version "4.4.1.1")
+    (version "4.7.4")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "ftp://ftp.unidata.ucar.edu/pub/netcdf/"
-                           "netcdf-" version ".tar.gz"))
+       (uri (string-append
+             "https://www.unidata.ucar.edu/downloads/netcdf/ftp/"
+             "netcdf-c-" version ".tar.gz"))
        (sha256
         (base32
-         "1blc7ik5yin7i0ls2kag0a9xjk12m0dzx6v1x88az3ras3scci2d"))
-       (patches (search-patches "netcdf-date-time.patch"
-                                "netcdf-tst_h_par.patch"))))
+         "1a2fpp15a2rl1m50gcvvzd9y6bavl6vjf9zzf63sz5gdmq06yiqf"))
+       (patches (search-patches "netcdf-date-time.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("m4" ,m4)
@@ -1561,6 +1561,7 @@ similar to MATLAB, GNU Octave or SciPy.")
     (inputs
      `(("hdf4" ,hdf4-alt)
        ("hdf5" ,hdf5)
+       ("curl" ,curl)
        ("zlib" ,zlib)
        ("libjpeg" ,libjpeg-turbo)))
     (arguments
@@ -1622,7 +1623,7 @@ sharing of scientific data.")
 (define-public netcdf-fortran
   (package
     (name "netcdf-fortran")
-    (version "4.4.4")
+    (version "4.5.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1630,7 +1631,7 @@ sharing of scientific data.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0xaxdcg1p83zmypwml3swsnr3ccn38inwldyr1l3wa4dbwbrblxj"))))
+                "0x4acvfhbsx1q79dkkwrwbgfhm0w5ngnp4zj5kk92s1khihmqfhj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-tests? #f))
@@ -2473,7 +2474,18 @@ scientific applications modeled by partial differential equations.")
         (uri (pypi-uri "petsc4py" version))
         (sha256
           (base32
-            "1rm1qj5wlkhxl39by9n78lh3gbmii31wsnb8j1rr5hvfr5xgbx2q"))))
+           "1rm1qj5wlkhxl39by9n78lh3gbmii31wsnb8j1rr5hvfr5xgbx2q"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            ;; Ensure source file is regenerated in the build phase.
+            (delete-file "src/petsc4py.PETSc.c")
+            ;; Remove legacy GC code.  See
+            ;; https://bitbucket.org/petsc/petsc4py/issues/125.
+            (substitute* "src/PETSc/cyclicgc.pxi"
+                         ((".*gc_refs.*") "" )
+                         ((".*PyGC_Head.*") ""))
+            #t))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -2485,6 +2497,8 @@ scientific applications modeled by partial differential equations.")
              #t))
          (add-before 'check 'mpi-setup
            ,%openmpi-setup))))
+    (native-inputs
+     `(("python-cython" ,python-cython)))
     (inputs
      `(("petsc" ,petsc-openmpi)
        ("python-numpy" ,python-numpy)))
@@ -2898,14 +2912,14 @@ easy-to-write markup language for mathematics.")
 (define-public superlu
   (package
     (name "superlu")
-    (version "5.2.1")
+    (version "5.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://portal.nersc.gov/project/sparse/superlu/"
                            "superlu_" version ".tar.gz"))
        (sha256
-        (base32 "0qzlb7cd608q62kyppd0a8c65l03vrwqql6gsm465rky23b6dyr8"))
+        (base32 "13520vk6fqspyl22cq4ak2jh3rlmhja4czq56j75fdx65fkk80s7"))
        (modules '((guix build utils)))
        (snippet
         ;; Replace the non-free implementation of MC64 with a stub adapted
@@ -4542,7 +4556,7 @@ structured and unstructured grid problems.")))
     (build-system gnu-build-system)
     (inputs
      `(("zlib" ,zlib)
-       ("hdf5" ,hdf5)))
+       ("hdf5" ,hdf5-1.8)))
     (home-page "http://matio.sourceforge.net/")
     (synopsis "Library for reading and writing MAT files")
     (description "Matio is a library for reading and writing MAT files.  It
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index 83a0d478af..6a6cc628ca 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -61,13 +61,13 @@ an LDAP server.")
 (define-public synapse
   (package
     (name "synapse")
-    (version "1.20.1")
+    (version "1.22.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "matrix-synapse" version))
               (sha256
                (base32
-                "1sf36vwvy2f9jy6dldq6gqfmh60384i5j64s7yc131b4dp0n7lcw"))))
+                "1pbxdqpfa7wzdz61p6x58x7841vng1g65qayxgcw73bn1shl50jb"))))
     (build-system python-build-system)
     ;; TODO Run tests with ‘PYTHONPATH=. trial3 tests’.
     (propagated-inputs
@@ -109,6 +109,7 @@ an LDAP server.")
        ("python-txacme" ,python-txacme)
        ("python-pysaml2" ,python-pysaml2)
        ("python-lxml" ,python-lxml)
+       ("python-packaging" ,python-packaging)
        ;; sentry-sdk, jaeger-client, and opentracing could be included, but
        ;; all are monitoring aids and not essential.
        ("python-pyjwt" ,python-pyjwt)))
diff --git a/gnu/packages/mercury.scm b/gnu/packages/mercury.scm
index bab8909862..5a2c85a79b 100644
--- a/gnu/packages/mercury.scm
+++ b/gnu/packages/mercury.scm
@@ -56,7 +56,7 @@
 (define-public mercury-minimal
   (package
     (name "mercury-minimal")
-    (version "20.06")
+    (version "20.06.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -64,7 +64,7 @@
                     version ".tar.gz"))
               (sha256
                (base32
-                "1gkr9w8lsdzqykqwd3f1a1phsqv090648i14ilhv8jdg85frdimr"))))
+                "07qwkk871yxd4q1sw5xv26g8jrpvnpprmzvfd7zg7i142kl3l2gg"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -173,7 +173,7 @@ separate compilation, and numerous optimization/time trade-offs.")
 (define-public mercury
   (package (inherit mercury-minimal)
            (name "mercury")
-           (version "20.06")
+           (version "20.06.1")
            (source
             (origin
               (method git-fetch)
@@ -185,7 +185,7 @@ separate compilation, and numerous optimization/time trade-offs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1pc51r7vlqmi689rkwdkk1ka2dyk36q11dqvl339cizng6mp72h6"))))
+                "1b6rmdinw8mj6n9sc7c75kkf42gd2k254rf51x4snlrqckxj7aaz"))))
            (arguments
             (substitute-keyword-arguments
                 (package-arguments mercury-minimal)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 5e2a39fece..14172a13f5 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -69,6 +70,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages icu4c)
@@ -701,23 +703,29 @@ simultaneously and therefore appear under the same nickname on IRC.")
 (define-public python-nbxmpp
   (package
     (name "python-nbxmpp")
-    (version "0.6.10")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "nbxmpp" version))
+       (uri
+        (pypi-uri "nbxmpp" version))
        (sha256
-        (base32
-         "1vq89nhamciblyi5579bppnm4sb0zk5cg5hdipfpz174fxvl2wyd"))))
+        (base32 "0vw5drr077w9ks4crnw6pwa4735ycyjdcm54knc3w4in4x5027wr"))))
     (build-system python-build-system)
-    (arguments
-     `(#:tests? #f))                    ; no tests
+    (native-inputs
+     `(("glib:bin" ,glib "bin")))
+    (inputs
+     `(("glib" ,glib)
+       ("glib-networking" ,glib-networking)
+       ("libsoup" ,libsoup)
+       ("python-idna" ,python-idna)
+       ("python-precis-i18n" ,python-precis-i18n)
+       ("python-pygobject" ,python-pygobject)))
+    (synopsis "Non-blocking XMPP Module")
+    (description "Python-nbxmpp is a Python library that provides a way for
+Python applications to use the XMPP network.  This library was initially a fork
+of xmpppy.")
     (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
-    (synopsis "Non-blocking Jabber/XMPP module")
-    (description
-     "The goal of this python library is to provide a way for Python
-applications to use Jabber/XMPP networks in a non-blocking way.  This library
-was initially a fork of xmpppy, but uses non-blocking sockets.")
     (license license:gpl3+)))
 
 (define-public python2-nbxmpp
@@ -726,132 +734,132 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
 (define-public gajim
   (package
     (name "gajim")
-    (version "1.1.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://gajim.org/downloads/"
-                                  (version-major+minor version)
-                                  "/gajim-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
+    (version "1.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://gajim.org/downloads/"
+                       (version-major+minor version)
+                       "/gajim-" version ".tar.gz"))
+       (sha256
+        (base32 "1gfcp3b5nq43xxz5my8vfhfxnnli726j3hzcgwh9fzrzzd9ic3gx"))
+       (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:imported-modules
+       (,@%python-build-system-modules
+        (guix build glib-or-gtk-build-system))
+       #:modules
+       ((guix build python-build-system)
+        ((guix build glib-or-gtk-build-system)
+         #:prefix glib-or-gtk:)
+        (guix build utils))
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'add-plugin-dirs
-           (lambda _
-             (substitute* "gajim/common/configpaths.py"
-               (("_paths\\['PLUGINS_USER'\\]\\]")
-                "_paths['PLUGINS_USER']] + \
-([os.getenv('GAJIM_PLUGIN_PATH')] \
-if os.getenv('GAJIM_PLUGIN_PATH') \
-and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
-else [])"))
-             #t))
          (replace 'check
            (lambda _
-             (invoke "python" "./setup.py" "test" "-s" "test.no_gui")))
-         (add-after 'install 'wrap-gi-typelib-path
+             ;; Tests require a running X server.
+             (system "Xvfb :1 +extension GLX &")
+             (setenv "DISPLAY" ":1")
+             ;; For missing '/etc/machine-id'.
+             (setenv "DBUS_FATAL_WARNINGS" "0")
+             (invoke "dbus-launch" "python" "./setup.py" "test")
+             #t))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'install 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+         (add-after 'install 'wrap-env
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (for-each
                 (lambda (name)
                   (let ((file (string-append out "/bin/" name))
+                        (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
                         (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
                     (wrap-program file
-                      `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
-                      ;; For translations
-                      `("XDG_DATA_DIRS" ":" prefix
-                        (,(string-append (assoc-ref outputs "out") "/share"))))))
+                      `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
+                      `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
                 '("gajim" "gajim-remote" "gajim-history-manager")))
-             #t))
-         (add-after 'install 'install-icons
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (adwaita (string-append
-                              (assoc-ref inputs "adwaita-icon-theme")
-                              "/share/icons/Adwaita"))
-                    (hicolor (string-append
-                              (assoc-ref inputs "hicolor-icon-theme")
-                              "/share/icons/hicolor"))
-                    (icons (string-append
-                            out "/lib/python"
-                            ,(version-major+minor (package-version python))
-                            "/site-packages/gajim/data/icons")))
-               (with-directory-excursion icons
-                 (symlink adwaita "Adwaita")
-                 (copy-recursively hicolor "hicolor")))
-             #t))
-         (add-after 'install-icons 'wrap-gsettings-schema-dir
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/gajim")
-               ;; For GtkFileChooserDialog.
-               `("GSETTINGS_SCHEMA_DIR" =
-                 (,(string-append (assoc-ref inputs "gtk+")
-                                  "/share/glib-2.0/schemas"))))
              #t)))))
     (native-search-paths
-     (list (search-path-specification
-            (variable "GAJIM_PLUGIN_PATH")
-            (separator #f)              ;single entry
-            (files '("share/gajim/plugins")))
-           ;; Gajim needs to use the propagated inputs of its plugins.
-           (search-path-specification
-            (variable "PYTHONPATH")
-            (files (list (string-append
-                          "lib/python"
-
-                          ;; FIXME: Cannot use this expression as it would
-                          ;; introduce a circular dependency at the top level.
-                          ;; (version-major+minor (package-version python))
-                          "3.8"
-
-                          "/site-packages"))))))
+     (list
+      (search-path-specification
+       (variable "GAJIM_PLUGIN_PATH")
+       (separator #f)                   ;single entry
+       (files
+        (list
+         "share/gajim/plugins")))
+      ;; Gajim needs to use the propagated inputs of its plugins.
+      (search-path-specification
+       (variable "PYTHONPATH")
+       (files
+        (list
+         (string-append
+          "lib/python"
+          ;; FIXME: Cannot use this expression as it would
+          ;; introduce a circular dependency at the top level.
+          ;; (version-major+minor (package-version python))
+          "3.8"
+          "/site-packages"))))))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("python-docutils" ,python-docutils)
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+:bin" ,gtk+ "bin")
+       ("python-distutils-extra" ,python-distutils-extra)
+       ("python-setuptools" ,python-setuptools)
        ("xorg-server" ,xorg-server-for-tests)))
     (inputs
-     `(("adwaita-icon-theme" ,adwaita-icon-theme)
+     `(("avahi" ,avahi)
+       ("dbus" ,dbus)
+       ("farstream" ,farstream)
+       ("geoclue" ,geoclue)
+       ("glib" ,glib)
+       ("glib-networking" ,glib-networking)
        ("gnome-keyring" ,gnome-keyring)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gsound",gsound)
+       ("gspell" ,gspell)
+       ("gstreamer" ,gstreamer)
+       ("gst-plugins-base" ,gst-plugins-base)
        ("gtk+" ,gtk+)
-       ("gtkspell3" ,gtkspell3)
-       ("hicolor-icon-theme" ,hicolor-icon-theme)
-       ("libsecret" ,libsecret)
-       ("python-cssutils" ,python-cssutils)
-       ("python-dbus" ,python-dbus)
-       ("python-gnupg" ,python-gnupg)
+       ("gupnp-igd" ,gupnp-igd)
+       ("libsoup" ,libsoup)
+       ("libxss" ,libxscrnsaver)
+       ("network-manager" ,network-manager)
+       ("python-css-parser" ,python-css-parser)
        ("python-keyring" ,python-keyring)
        ("python-nbxmpp" ,python-nbxmpp)
+       ("python-packaging" ,python-packaging)
        ("python-pillow" ,python-pillow)
        ("python-precis-i18n" ,python-precis-i18n)
        ("python-pycairo" ,python-pycairo)
        ("python-pygobject" ,python-pygobject)
-       ("python-pyopenssl" ,python-pyopenssl)
-       ("python-qrcode" ,python-qrcode)))
+       ("python-pyopenssl" ,python-pyopenssl)))
+    (propagated-inputs
+     `(("dconf" ,dconf)))
+    (synopsis "Fully-featured XMPP client")
+    (description "Gajim aims to be an easy to use and fully-featured XMPP chat
+client.  It is extensible via plugins, supports end-to-end encryption (OMEMO
+and OpenPGP) and available in 29 languages.")
     (home-page "https://gajim.org/")
-    (synopsis "Jabber (XMPP) client")
-    (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
-Among its features are: a tabbed chat window and single window modes; support
-for group chat (with Multi-User Chat protocol), invitation, chat to group chat
-transformation; audio and video conferences; file transfer; TLS, GPG and
-end-to-end encryption support; XML console.")
     (license license:gpl3)))
 
 (define-public gajim-omemo
   (package
     (name "gajim-omemo")
-    (version "2.7.7")
-    (source (origin
-              (method url-fetch/zipbomb)
-              (uri (string-append
-                    "https://ftp.gajim.org/plugins_releases/omemo_"
-                    version ".zip"))
-              (sha256
-               (base32
-                "17jl4blkq04ag3g0har6z1bmk36523d29s51g260wb1pywfb536h"))))
+    (version "2.6.80")
+    (source
+     (origin
+       (method url-fetch/zipbomb)
+       (uri
+        (string-append
+         "https://ftp.gajim.org/plugins_releases/omemo_"
+         version ".zip"))
+       (sha256
+        (base32 "179hgx091c12258335znn1540jhp4z3n3wv5ksrgqq7l3jgc93d7"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -865,33 +873,69 @@ end-to-end encryption support; XML console.")
            (copy-recursively source share)
            #t))))
     (propagated-inputs
-     `(("python-axolotl" ,python-axolotl)))
+     `(("python-axolotl" ,python-axolotl)
+       ("python-axolotl-curve25519" ,python-axolotl-curve25519)
+       ("python-cryptography" ,python-cryptography)
+       ("python-qrcode" ,python-qrcode)))
+    (synopsis "Gajim OMEMO plugin")
+    (description "Gajim-OMEMO is a plugin that adds support for the OMEMO
+Encryption to Gajim.  OMEMO is an XMPP Extension Protocol (XEP) for secure
+multi-client end-to-end encryption.")
     (home-page
      "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
-    (synopsis "Gajim OMEMO plugin")
-    (description
-     "This package provides the Gajim OMEMO plugin.  OMEMO is an XMPP
-Extension Protocol (XEP) for secure multi-client end-to-end encryption based
-on Axolotl and PEP.")
+    (license license:gpl3+)))
+
+(define-public gajim-openpgp
+  (package
+    (name "gajim-openpgp")
+    (version "1.2.14")
+    (source
+     (origin
+       (method url-fetch/zipbomb)
+       (uri
+        (string-append
+         "https://ftp.gajim.org/plugins_releases/openpgp_"
+         version ".zip"))
+       (sha256
+        (base32 "0wdjpf1i4pvl4ha4plfpywwi9aw5n2mhrpv8mmbidpawxqfbd94b"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (share (in-vicinity out "share/gajim/plugins"))
+                (source (assoc-ref %build-inputs "source")))
+           (mkdir-p share)
+           (copy-recursively source share)
+           #t))))
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-gnupg" ,python-gnupg)))
+    (synopsis "Gajim OpenPGP plugin")
+    (description "Gajim-OpenPGP is a plugin that adds support for the OpenPGP
+Encryption to Gajim.")
+    (home-page "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OpenPGPplugin")
     (license license:gpl3+)))
 
 (define-public dino
   (package
     (name "dino")
-    (version "0.1.0")
-    (outputs '("out" "debug"))
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/dino/dino/releases/download/v"
-                           version "/dino-" version ".tar.gz"))
+       (uri
+        (string-append "https://github.com/dino/dino/releases/download/v"
+                       version "/dino-" version ".tar.gz"))
        (sha256
-        (base32
-         "0dcq2jhpywgxrp9x1qqmrl2z50hazspqj547b9zz70apy3y4418h"))))
+        (base32 "0iigh7bkil6prf02dqcl6lmd89jxz685h8lqr3ni4x39zkcransn"))))
     (build-system cmake-build-system)
+    (outputs '("out" "debug"))
     (arguments
      `(#:tests? #f
-       #:parallel-build? #f ; not supported
+       #:parallel-build? #f             ; not supported
        #:modules ((guix build cmake-build-system)
                   ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
                   (guix build utils))
@@ -902,10 +946,21 @@ on Axolotl and PEP.")
        (modify-phases %standard-phases
          (add-after 'install 'glib-or-gtk-wrap
            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("gtk+:bin" ,gtk+ "bin")
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
     (inputs
-     `(("libgee" ,libgee)
-       ("libsignal-protocol-c" ,libsignal-protocol-c)
+     `(("glib" ,glib)
+       ("glib-networking" ,glib-networking)
+       ("gpgme" ,gpgme)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtk+" ,gtk+)
        ("libgcrypt" ,libgcrypt)
+       ("libgee" ,libgee)
+       ("libsignal-protocol-c" ,libsignal-protocol-c)
        ("libsoup" ,libsoup)
        ("qrencode" ,qrencode)
        ("sqlite" ,sqlite)
@@ -913,15 +968,11 @@ on Axolotl and PEP.")
        ("gtk+" ,gtk+)
        ("glib-networking" ,glib-networking)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("glib" ,glib "bin")
-       ("vala" ,vala)
-       ("gettext" ,gettext-minimal)))
+    (synopsis "Graphical Jabber/XMPP Client using GTK+/Vala")
+    (description "Dino is a chat client for the desktop.  It focuses on providing
+a minimal yet reliable Jabber/XMPP experience and having encryption enabled by
+default.")
     (home-page "https://dino.im")
-    (synopsis "Graphical Jabber (XMPP) client")
-    (description "Dino is a Jabber (XMPP) client which aims to fit well into
-a graphical desktop environment like GNOME.")
     (license license:gpl3+)))
 
 (define-public prosody
@@ -1209,15 +1260,15 @@ instant messenger with audio and video chat capabilities.")
 (define-public qtox
   (package
     (name "qtox")
-    (version "1.17.2")
+    (version "1.17.3")
     (source (origin
-              (method url-fetch/tarbomb)
+              (method url-fetch)
               (uri (string-append "https://github.com/qTox/qTox/releases"
                                   "/download/v" version
                                   "/v" version ".tar.gz"))
               (sha256
                (base32
-                "0fmr3a0apil3rl32247qv2pqslp3knpbj5vhprdq0ixsvifrlhmh"))
+                "11n7si9wdpf80iwkvbspp14dh5jrwm7hxkj8vqhn5pkc48c5bh9j"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (arguments
@@ -1863,7 +1914,7 @@ building the IRC clients and bots.")
 (define-public toxic
   (package
     (name "toxic")
-    (version "0.8.3")
+    (version "0.8.4")
     (source
      (origin
        (method git-fetch)
@@ -1871,7 +1922,7 @@ building the IRC clients and bots.")
              (url "https://github.com/JFreegman/toxic")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
+        (base32 "0p1cmj1kyp506y5xm04mhlznhf5wcylvgsn6b307ms91vjqs3fg2"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -2095,7 +2146,8 @@ There is support for:
        ("qtquickcontrols" ,qtquickcontrols)
        ("qtquickcontrols2" ,qtquickcontrols2)
        ("qtsvg" ,qtsvg)
-       ("qttools" ,qttools)))
+       ("qttools" ,qttools)
+       ("xdg-utils", xdg-utils)))
     (arguments
      `(#:tests? #f))                    ; no tests
     (home-page "https://matrix.org/docs/projects/client/quaternion.html")
@@ -2320,7 +2372,7 @@ support for high performance Telegram Bot creation.")
 (define-public chatty
  (package
    (name "chatty")
-   (version "0.1.16")
+   (version "0.1.17")
    (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2329,7 +2381,7 @@ support for high performance Telegram Bot creation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "085hb3ii1cy0jb3f0mim25v5r5w3gpfsdpjid5dmrpw4gi88aa2x"))))
+                "0ba1rw8a3vif9k3570hxjfm25vqys3vk3f6g8z5irklwq4bi6lmn"))))
    (build-system meson-build-system)
    (arguments
     '(#:phases
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 30fe61ea00..0ee4b4c9ee 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -158,7 +158,7 @@ etc. via a Web interface.  Features include:
 (define-public zabbix-agentd
   (package
     (name "zabbix-agentd")
-    (version "5.0.3")
+    (version "5.2.1")
     (source
      (origin
        (method url-fetch)
@@ -166,7 +166,7 @@ etc. via a Web interface.  Features include:
              "https://cdn.zabbix.com/zabbix/sources/stable/"
              (version-major+minor version) "/zabbix-" version ".tar.gz"))
        (sha256
-        (base32 "1dc3fb9pa2cr6mfwgfyy1hpx26pbrws7989wj2kiiilmvimvrz1l"))))
+        (base32 "0rz5hg0r2m6qc0dj9b57g96dgilbg8i0rjhm4v9025v51jkby3xq"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -456,7 +456,7 @@ written in Go with pluggable metric collectors.")
 (define-public collectd
   (package
     (name "collectd")
-    (version "5.11.0")
+    (version "5.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -465,7 +465,7 @@ written in Go with pluggable metric collectors.")
                     ".tar.bz2"))
               (sha256
                (base32
-                "1cjxksxdqcqdccz1nbnc2fp6yy84qq361ynaq5q8bailds00mc9p"))
+                "1mh97afgq6qgmpvpr84zngh58m0sl1b4wimqgvvk376188q09bjv"))
               (patches (search-patches "collectd-5.11.0-noinstallvar.patch"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index fdc8ba801f..ac546e8c95 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -550,14 +550,13 @@ is to provide an accurate identifier for record tracks.")
 (define-public python-audioread
   (package
     (name "python-audioread")
-    (version "2.1.8")
+    (version "2.1.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "audioread" version))
        (sha256
-        (base32
-         "0s6iilb8ca6j6nv5a5hbyxi5alr3crvsbr6kggh82a44pkx08f87"))))
+        (base32 "129hab8x9sb3plff2bkq4xnzc3i8k9rgcm1a36l813kc0m10wj53"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f)) ; there is no "audiofile" fixture
     (native-inputs
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index b0d3645b4a..4944c960a6 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -8,6 +8,8 @@
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net>
+;;; Copyright © 2020 Simon Streit <simon@netpanic.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,16 +33,22 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages cdrom)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -53,7 +61,9 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages video)
@@ -94,7 +104,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.22")
+    (version "0.22.3")
     (source (origin
               (method url-fetch)
               (uri
@@ -103,7 +113,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "0xlhwdbnww7gjw474j54j94iwrzbzlqvnv6chlkga6yh4pcl5rvx"))))
+                "1kvcarqijyw07bdqszjsn62plmncaid5az0q542p6rsygc1i501k"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=enabled")))
@@ -185,7 +195,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.41")
+    (version "0.42")
     (source (origin
               (method url-fetch)
               (uri
@@ -194,7 +204,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "1b0kxidz3h3anc006cjrrbb281zl75f1qaip4m3672pczdc2lwwa"))))
+                "0kfdyvqd2dfrxll5bla8mm10xvpngshlmyjf6wic4wbafqflgxx5"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -369,3 +379,84 @@ MPD library in a similar way to many other music players' 'shuffle library'
 feature. ashuffle works like any other MPD client, and can be used alongside
 other MPD frontends.")
     (license license:expat)))
+
+(define-public mpdris2
+  (package
+    (name "mpdris2")
+    (version "0.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/eonpatapon/mpDris2")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "048b8acsd1b8kcxzd9fsh5p9g2an9c4rznicfcpyrsjz5syv894h"))))
+    (build-system gnu-build-system)
+    ;; Manually wrap the binary, because we’re not using python-build-system.
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out         (assoc-ref outputs "out"))
+                   (python-path (getenv "PYTHONPATH")))
+               (wrap-program (string-append out "/bin/mpDris2")
+                 `("PYTHONPATH" ":" prefix (,python-path)))
+               #t))))))
+    (inputs
+     `(("python-mpd2" ,python-mpd2)
+       ("python-dbus" ,python-dbus)
+       ("python-pygobject" ,python-pygobject)
+       ("python" ,python)))             ; Sets PYTHONPATH.
+    ;; For bootstrapping.
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("which" ,which)
+       ("intltool" ,intltool)))
+    (synopsis "MPRIS V2.1 support for MPD")
+    (description "Client for the Music Player Daemon providing MPRIS 2
+support")
+    (home-page "https://github.com/eonpatapon/mpDris2")
+    (license license:gpl3+)))
+
+(define-public cantata
+  (package
+    (name "cantata")
+    (version "2.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/CDrummond/"
+                                  "cantata/releases/download/v" version "/"
+                                  "cantata-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "10pcrpmb4n1mkgr21xd580nrbmh57q7s72cbs1zay847hc65vliy"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ; No test suite
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("eudev", eudev)
+       ("ffmpeg" ,ffmpeg)
+       ("libcdio-paranoia" ,libcdio-paranoia)
+       ("libebur128" ,libebur128)
+       ("libmtp" ,libmtp)
+       ("mpg123" ,mpg123)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtsvg" ,qtsvg)
+       ("taglib" ,taglib)
+       ("zlib" ,zlib)))
+    (synopsis "Graphical MPD Client")
+    (description "Cantata is a graphical client for the Music Player Daemon
+(MPD), using the Qt5 toolkit.  Its user interface is highly customizable,
+supporting multiple collections, ratings, and dynamic playlists.  A local cache
+of the music library will be created to provide a hierarchy of albums and
+artists along with albumart.")
+    (home-page "https://github.com/cdrummond/cantata")
+    (license license:gpl3+)))
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 06a82cce95..2b73794409 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -69,6 +69,7 @@
     (build-system gnu-build-system)
     (outputs '("out"           ;'lstopo' & co., depends on Cairo, libx11, etc.
                "lib"           ;small closure
+               "doc"           ;400+ section 3 man pages
                "debug"))
     (inputs
      `(("libx11" ,libx11)
@@ -114,6 +115,15 @@
                (substitute* (string-append lib "/lib/pkgconfig/hwloc.pc")
                  (("^.*prefix=.*$")
                   ""))
+               #t)))
+         (add-after 'install 'move-man3-pages
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move section 3 man pages to the "doc" output.
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (copy-recursively (string-append out "/share/man/man3")
+                                 (string-append doc "/share/man/man3"))
+               (delete-file-recursively (string-append out "/share/man/man3"))
                #t))))))
     (home-page "https://www.open-mpi.org/projects/hwloc/")
     (synopsis "Abstraction of hardware architectures")
@@ -436,7 +446,12 @@ arrays) that expose a buffer interface.")
      `(#:configure-flags
        (list "--disable-silent-rules"             ;let's see what's happening
              "--enable-debuginfo"
-             ;; "--with-device=ch4:ucx" ; --with-device=ch4:ofi segfaults in tests
+
+             ;; Default to "ch4", as will be the case in 3.4.  It also works
+             ;; around issues when running test suites of packages that use
+             ;; MPICH: <https://issues.guix.gnu.org/39588#15>.
+             "--with-device=ch4:ucx" ; --with-device=ch4:ofi segfaults in tests
+
              (string-append "--with-hwloc-prefix="
                             (assoc-ref %build-inputs "hwloc"))
 
diff --git a/gnu/packages/mtools.scm b/gnu/packages/mtools.scm
index 5994cd140c..2483459b71 100644
--- a/gnu/packages/mtools.scm
+++ b/gnu/packages/mtools.scm
@@ -29,14 +29,14 @@
 (define-public mtools
   (package
     (name "mtools")
-    (version "4.0.24")
+    (version "4.0.25")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/mtools/mtools-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1f9g7g8zspp8nvg1nz869il9pvxpdpchqd0vxfc89y8rjbda5x14"))
+                "059cirrarizvcxv8zyp6ykaz45rymljpgdkdjc9kvadp7gn1w5px"))
               (patches
                (search-patches "mtools-mformat-uninitialized.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 830bc4dfbe..2f75c39dd8 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -31,6 +31,7 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2019 Riku Viitanen <riku.viitanen0@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -158,6 +159,123 @@
   #:use-module (gnu packages lua)
   #:use-module ((srfi srfi-1) #:select (last)))
 
+(define-public audacious
+  (package
+    (name "audacious")
+    (version "4.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://distfiles.audacious-media-player.org/"
+                           "audacious-" version ".tar.bz2"))
+       (sha256
+        (base32 "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+       #:tests? #f                      ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'unpack-plugins
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((plugins (assoc-ref inputs "audacious-plugins")))
+               (invoke "tar" "xvf" plugins)
+               #t)))
+         (add-after 'unpack-plugins 'configure-plugins
+           (lambda* (#:key configure-flags outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion
+                   (string-append "audacious-plugins-" ,version)
+                 (substitute* "configure"
+                   (("/bin/sh") (which "sh")))
+                 (apply invoke "./configure"
+                        (append configure-flags
+                                ;; audacious-plugins requires audacious to build.
+                                (list (string-append "PKG_CONFIG_PATH="
+                                                     out "/lib/pkgconfig:"
+                                                     (getenv "PKG_CONFIG_PATH"))
+                                      (string-append "--prefix=" out))))))))
+         (add-after 'configure-plugins 'build-plugins
+           (lambda _
+             (with-directory-excursion
+                 (string-append "audacious-plugins-" ,version)
+               (invoke "make" "-j" (number->string (parallel-job-count))))))
+         (add-after 'build-plugins 'install-plugins
+           (lambda _
+             (with-directory-excursion
+                 (string-append "audacious-plugins-" ,version)
+               (invoke "make" "install")))))))
+    (native-inputs
+     `(("audacious-plugins"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://distfiles.audacious-media-player.org/"
+                               "audacious-plugins-" version ".tar.bz2"))
+           (sha256
+            (base32 "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz"))))
+       ("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")         ; for gdbus-codegen
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("dbus" ,dbus)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ;; Plugin dependencies
+       ("alsa-lib" ,alsa-lib)
+       ("curl" ,curl)
+       ("faad2" ,faad2)
+       ("ffmpeg" ,ffmpeg)
+       ("flac" ,flac)
+       ("fluidsynth" ,fluidsynth)
+       ("lame" ,lame)
+       ("libbs2b" ,libbs2b)
+       ("libcddb" ,libcddb)
+       ("libcdio-paranoia" ,libcdio-paranoia)
+       ("libcue" ,libcue)
+       ("libmodplug" ,libmodplug)
+       ("libnotify" ,libnotify)
+       ("libogg" ,libogg)
+       ("libsamplerate" ,libsamplerate)
+       ("libsndfile" ,libsndfile)
+       ("libvorbis" ,libvorbis)
+       ("libxcomposite" ,libxcomposite)
+       ("libxml2" ,libxml2)
+       ("libxrender" ,libxrender)
+       ("lirc" ,lirc)
+       ("jack" ,jack-1)
+       ("mesa" ,mesa)
+       ("mpg123" ,mpg123)
+       ("neon" ,neon)
+       ("pulseaudio" ,pulseaudio)
+       ("sdl2" ,sdl2)
+       ("soxr" ,soxr)
+       ("wavpack" ,wavpack)))
+    (home-page "https://audacious-media-player.org")
+    (synopsis "Modular and skinnable audio player")
+    (description
+     "Audacious is an audio player descended from XMMS.  Drag and drop
+folders and individual song files, search for artists and albums in
+your entire music library, or create and edit your own custom
+playlists.  Listen to CD’s or stream music from the Internet.  Tweak
+the sound with the graphical equalizer or experiment with LADSPA
+effects.  Enjoy the modern GTK-themed interface or change things up
+with Winamp Classic skins.  Use the plugins included with Audacious to
+fetch lyrics for your music, to set an alarm in the morning, and
+more.")
+    ;; According to COPYING, Audacious and its plugins are licensed
+    ;; under the BSD 2-clause license and libguess is licensed under
+    ;; the BSD 3-clause license.
+    (license (list license:bsd-2
+                   license:bsd-3
+                   ;; Plugin licenses that aren't BSD 2- or 3-clause.
+                   license:lgpl2.1
+                   license:gpl2
+                   license:gpl3
+                   license:expat
+                   license:isc
+                   license:lgpl2.0))))
+
 (define-public aria-maestosa
   (package
     (name "aria-maestosa")
@@ -944,6 +1062,60 @@ engine (except effects) that can be used for layering or split patches.")
 you to define complex tempo maps for entire songs or performances.")
     (license license:gpl2+)))
 
+(define-public glyr
+  (package
+    (name "glyr")
+    (version "1.0.10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sahib/glyr")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1miwbqzkhg0v3zysrwh60pj9sv6ci4lzq2vq2hhc6pc6hdyh8xyr"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DTEST=true")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tests
+           (lambda _
+             (substitute* "spec/capi/check_api.c"
+               (("fail_unless \\(c != NULL,\"Could not load www.google.de\"\\);")
+                ""))
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; capi tests
+               (invoke "bin/check_api")
+               ;; (invoke "bin/check_opt") TODO Very dependent on the network
+               (invoke "bin/check_dbc"))
+
+             ;; TODO Work out how to run the spec/providers Python tests
+             #t)))))
+    (inputs
+     `(("glib" ,glib)
+       ("curl" ,curl)
+       ("sqlite" ,sqlite)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("check" ,check)))
+    (home-page "https://github.com/sahib/glyr")
+    (synopsis "Search engine for music related metadata")
+    (description
+     "Glyr comes both in a command-line interface tool (@command{glyrc}) and
+as a C library (libglyr).
+
+The sort of metadata glyr is searching (and downloading) is usually the data
+you see in your musicplayer.  And indeed, originally it was written to serve
+as internally library for a musicplayer, but has been extended to work as a
+standalone program which is able to download cover art, lyrics, photos,
+biographies, reviews and more.")
+    (license license:lgpl3+)))
+
 (define-public gtklick
   (package
     (name "gtklick")
@@ -1328,7 +1500,7 @@ complete studio.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/onkelDead/tascam-gtk.git")
+                      (url "https://github.com/onkelDead/tascam-gtk")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1661,7 +1833,7 @@ users to select LV2 plugins and run them with jalv.")
 (define-public synthv1
   (package
     (name "synthv1")
-    (version "0.9.17")
+    (version "0.9.18")
     (source (origin
               (method url-fetch)
               (uri
@@ -1669,7 +1841,7 @@ users to select LV2 plugins and run them with jalv.")
                               "/synthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0jc2drk5dzsaa6vxmk1hyi0zp02zm3mzar3arssfy5vcyc5ig6sk"))))
+                "1sggiaswcdpyxnnbg583ldg0m92fiys6nc5qdiqli7450w416a6c"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1693,7 +1865,7 @@ oscillators and stereo effects.")
 (define-public drumkv1
   (package
     (name "drumkv1")
-    (version "0.9.17")
+    (version "0.9.18")
     (source (origin
               (method url-fetch)
               (uri
@@ -1701,7 +1873,7 @@ oscillators and stereo effects.")
                               "/drumkv1-" version ".tar.gz"))
               (sha256
                (base32
-                "198fyc5dwjn679si86vy139ngym4n3mdy1z4vfjikn7b6mriq1x2"))))
+                "1bzkaz7sqx1pvirja8zm7i2ckzl5ad6xspr4840389ik3l8qpnr5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1726,7 +1898,7 @@ effects.")
 (define-public samplv1
   (package
     (name "samplv1")
-    (version "0.9.17")
+    (version "0.9.18")
     (source (origin
               (method url-fetch)
               (uri
@@ -1734,7 +1906,7 @@ effects.")
                               "/samplv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1v21r722m027jjy4x6lm5cvzapsnpx36r10ar543ay0hgmygl322"))))
+                "13p5aj1513fwhzi9s4i1a5dbvzmbx9867zb0ddb9s9nbwks4ry3q"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1759,7 +1931,7 @@ effects.")
 (define-public padthv1
   (package
     (name "padthv1")
-    (version "0.9.17")
+    (version "0.9.18")
     (source (origin
               (method url-fetch)
               (uri
@@ -1767,7 +1939,7 @@ effects.")
                               "/padthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "098fk8fwcgssnfr1gilqg8g17zvch62lrn3rqsswpzbr3an5adb3"))))
+                "1karrprb3ijrbiwpr43rl3nxnzc33lnmwrd1832psgr3flnr9fp5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1804,17 +1976,30 @@ special variant of additive synthesis.")
         (base32
          "1882pfcmf3rqg3vd4qflzkppcv158d748i603spqjbxqi8z7x7w0"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-file-names
+           (lambda _
+             (substitute* "src/GUI/editor_pane.c"
+               (("/usr/bin/unzip") (which "unzip")))
+             (substitute* "src/GUI/GUI.cc"
+               (("/usr/bin/which") (which "which")))
+             #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
+       ("gtk+" ,gtk+-2)
+       ("gtkmm" ,gtkmm-2)
        ("jack" ,jack-1)
-       ("lv2" ,lv2)
        ("lash" ,lash)
        ("libsndfile" ,libsndfile)
-       ("gtk+" ,gtk+-2)
-       ("gtkmm" ,gtkmm-2)))
+       ("lv2" ,lv2)
+       ;; External commands invoked at run time.
+       ("unzip" ,unzip)
+       ("which" ,which)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("intltool" ,intltool)))
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
     (home-page "https://amsynth.github.io")
     (synopsis "Analog modeling synthesizer")
     (description
@@ -2443,7 +2628,7 @@ capabilities, custom envelopes, effects, etc.")
 (define-public yoshimi
   (package
     (name "yoshimi")
-    (version "1.7.2")
+    (version "1.7.3")
     (source
      (origin
        (method url-fetch)
@@ -2451,7 +2636,7 @@ capabilities, custom envelopes, effects, etc.")
                            (version-major+minor version)
                            "/yoshimi-" version ".tar.bz2"))
        (sha256
-        (base32 "1vxrksg199pcgiykq0nsf67ihfk2ny2jmpf6gzdb3nk9iphm7di3"))))
+        (base32 "1ixb2kqmfgm2lfjaj6z3h03c840hcfmca4h6pjnc4aln2mzm7fcw"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -2703,14 +2888,14 @@ from the command line.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.9.17")
+    (version "0.9.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "0mcfli3wffz5a9pkpcxli03ysyrr53ij3569m81ck9h8pr7yng4b"))))
+                "121vmygdzp37p6f93f8dbbg2m2r55j7amyiapzkqgypgn4vfdbwr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; no "check" target
@@ -4194,7 +4379,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
 (define-public musescore
   (package
     (name "musescore")
-    (version "3.5.1")
+    (version "3.5.2")
     (source
      (origin
        (method git-fetch)
@@ -4203,16 +4388,16 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01jj6rbvbjxvmv6q13a22vfqp3id52a5mf2a1vzph2giz7pr313x"))
+        (base32 "0yzps5xxa50cr2i5iv2ycjdywd0mcrdd6hx93l4p8lfljag3w3al"))
        (modules '((guix build utils)))
        (snippet
-        ;; Un-bundle OpenSSL and remove unused libraries.
+        ;; Remove unused libraries.
         '(begin
            (for-each delete-file-recursively
                      '("thirdparty/freetype"
-                       "thirdparty/google_analytics"
                        "thirdparty/openssl"
-                       "thirdparty/portmidi"))
+                       "thirdparty/portmidi"
+                       "thirdparty/qt-google-analytics"))
            #t))))
     (build-system cmake-build-system)
     (arguments
@@ -4220,6 +4405,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
        `("-DBUILD_TELEMETRY_MODULE=OFF" ;don't phone home
          "-DBUILD_WEBENGINE=OFF"
          "-DDOWNLOAD_SOUNDFONT=OFF"
+         "-DMUSESCORE_BUILD_CONFIG=release"
          "-DUSE_SYSTEM_FREETYPE=ON")
        ;; There are tests, but no simple target to run.  The command used to
        ;; run them is:
@@ -4252,8 +4438,9 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
      `(("pkg-config" ,pkg-config)
        ("qttools" ,qttools)))
     (synopsis "Music composition and notation software")
-    (description "MuseScore is a music score typesetter.  Its main purpose is
-the creation of high-quality engraved musical scores in a WYSIWYG environment.
+    (description
+     "MuseScore is a music score typesetter.  Its main purpose is the creation
+of high-quality engraved musical scores in a WYSIWYG environment.
 
 It supports unlimited staves, linked parts and part extraction, tablature,
 MIDI input, percussion notation, cross-staff beaming, automatic transposition,
@@ -5047,7 +5234,7 @@ complete without obstructing your daily work.")
 (define-public playerctl
   (package
     (name "playerctl")
-    (version "2.0.2")
+    (version "2.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5056,7 +5243,7 @@ complete without obstructing your daily work.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz"))))
+                "17hi33sw3663qz5v54bqqil31sgkrlxkb2l5bgqk87pac6x2wnbz"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
@@ -5082,7 +5269,7 @@ for integration into status line generators or other command-line tools.")
               (method git-fetch)
               (uri (git-reference
                     (url
-                     "https://github.com/openAVproductions/openAV-ArtyFX.git")
+                     "https://github.com/openAVproductions/openAV-ArtyFX")
                     (commit (string-append "release-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5889,7 +6076,7 @@ plugin and a standalone JACK application.")
 (define-public wolf-shaper
   (package
     (name "wolf-shaper")
-    (version "0.1.7")
+    (version "0.1.8")
     (source
       (origin
         (method git-fetch)
@@ -5901,7 +6088,7 @@ plugin and a standalone JACK application.")
         (file-name (git-file-name name version))
         (sha256
           (base32
-            "0lllgcbnnh1m95bp29hh17x170hl7170zizjrvy892qfkn36830d"))))
+            "1j9xmh1nkf45ay1c5dz2g165qvrwlanzcq6mvb3nfxar265drd9q"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index de76406a31..8a84c8476a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -97,6 +97,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
@@ -135,12 +136,39 @@
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
-  #:use-module (gnu packages version-control)
   #:use-module (gnu packages web)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
   #:use-module (ice-9 match))
 
+(define-public axel
+  (package
+    (name "axel")
+    (version "2.17.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/axel-download-accelerator/axel/"
+                           "releases/download/v" version "/"
+                           "axel-" version ".tar.xz"))
+       (sha256
+        (base32 "0kmlqk04sgkshsll4r9w3k0rvrgz0gpk987618r50khwl484zss6"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libressl" ,libressl)))
+    (home-page "https://github.com/axel-download-accelerator/axel")
+    (synopsis "Light command line download accelerator")
+    (description
+     "Axel tries to accelerate the download process by using multiple
+connections per file, and can also balance the load between different
+servers.  It tries to be as light as possible, so it might be useful
+on byte-critical systems.  It supports HTTP, HTTPS, FTP and FTPS
+protocols.")
+    (license license:gpl2+)))
+
 ;; This package does not have a release yet.
 ;; But this is required to provide a feature in PipeWire.
 (define-public libcamera
@@ -207,7 +235,7 @@ Android, and ChromeOS.")
 (define-public libnice
   (package
     (name "libnice")
-    (version "0.1.17")
+    (version "0.1.18")
     (source
      (origin
        (method url-fetch)
@@ -215,7 +243,7 @@ Android, and ChromeOS.")
         (string-append "https://libnice.freedesktop.org/releases/"
                        name "-" version ".tar.gz"))
        (sha256
-        (base32 "09lm0rxwvbr53svi3inaharlq96iwbs3s6957z69qp4bqpga0lhr"))))
+        (base32 "1x3kj9b3dy9m2h6j96wgywfamas1j8k2ca43k5v82kmml9dx5asy"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -225,6 +253,13 @@ Android, and ChromeOS.")
         "-Dgtk_doc=enabled")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-test
+           (lambda _
+             (substitute* "tests/meson.build"
+               ;; ‘test-set-port-range.c:66:main: assertion failed:
+               ;; (nice_agent_gather_candidates (agent, stream1))’
+               (("'test-set-port-range'") "#"))
+             #t))
          (add-after 'install 'move-docs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -240,13 +275,13 @@ Android, and ChromeOS.")
        ("gtk-doc" ,gtk-doc)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("gnutls" ,gnutls)
-       ("gstreamer" ,gstreamer)
+     `(("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
        ("libnsl" ,libnsl)))
     (propagated-inputs
      `(("glib" ,glib)
-       ("glib-networking" ,glib-networking)))
+       ("glib-networking" ,glib-networking)
+       ("gnutls" ,gnutls)))
     (synopsis "GLib ICE implementation")
     (description "LibNice is a library that implements the Interactive
 Connectivity Establishment (ICE) standard (RFC 5245 & RFC 8445).  It provides a
@@ -314,7 +349,7 @@ supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/Haivision/srt.git")
+         (url "https://github.com/Haivision/srt")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -325,17 +360,11 @@ supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
        (list
         (string-append "-DCMAKE_INSTALL_BINDIR="
                        (assoc-ref %outputs "out") "/bin")
-        (string-append "-DCMAKE_INSTALL_LIBDIR="
-                       (assoc-ref %outputs "out") "/lib")
-        (string-append "-DINSTALL_SHARED_DIR="
-                       (assoc-ref %outputs "out") "/lib")
-        (string-append "-DCMAKE_INSTALL_INCLUDEDIR="
-                       (assoc-ref %outputs "out") "/include")
-        "-DENABLE_UNITTESTS=ON"
-        "-DENABLE_CODE_COVERAGE=ON")))
+        "-DCMAKE_INSTALL_INCLUDEDIR=include"
+        "-DENABLE_STATIC=OFF"
+        "-DENABLE_UNITTESTS=ON")))
     (native-inputs
-     `(("git" ,git-minimal)
-       ("gtest" ,googletest)
+     `(("gtest" ,googletest)
        ("pkg-config" ,pkg-config)
        ("tclsh" ,tcl)))
     (propagated-inputs
@@ -357,7 +386,7 @@ performance across unpredictable networks, such as the Internet.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/Haivision/srt.git")
+         (url "https://github.com/Haivision/srt")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -373,7 +402,7 @@ performance across unpredictable networks, such as the Internet.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/sctp/lksctp-tools.git")
+         (url "https://github.com/sctp/lksctp-tools")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -429,7 +458,7 @@ at the link-layer level.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nanomsg/nng.git")
+             (url "https://github.com/nanomsg/nng")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -472,7 +501,7 @@ publish/subscribe, RPC-style request/reply, or service discovery.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/nanomsg/nanomsg.git")
+         (url "https://github.com/nanomsg/nanomsg")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -508,14 +537,14 @@ systems with no further dependencies.")
 (define-public blueman
   (package
     (name "blueman")
-    (version "2.1.3")
+    (version "2.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/blueman-project/blueman/releases"
                            "/download/" version "/blueman-" version ".tar.xz"))
        (sha256
-        (base32 "1pngqbwapbvywhkmflapqvs0wa0af7d1a87wy56l5hg2r462xl1v"))))
+        (base32 "1nk46s1s8yrlqv37sc7la05nnn7sdgqhkrcdm98qin34llwkv70x"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags (list "--enable-polkit"
@@ -870,6 +899,7 @@ transparently check connection attempts against an access control list.")
                (base32
                 "18km71p77jm1w7wly2a5mxvphjb0f2l6s08cg382x55f6zdqb4lx"))))
     (build-system gnu-build-system)
+    (arguments '(#:configure-flags '("--disable-static")))
     (home-page "https://zeromq.org")
     (synopsis "Library for message-based applications")
     (description
@@ -900,10 +930,14 @@ more.")
        #:phases (modify-phases %standard-phases
                   (add-before 'check 'patch-tests
                     (lambda _
-                      ;; XXX FIXME: Disable the zproc test, which fails on some
-                      ;; hardware: <https://github.com/zeromq/czmq/issues/2007>.
                       (substitute* "src/czmq_selftest.c"
+                        ;; Disable the zproc test, which fails on some hardware
+                        ;; (see: https://github.com/zeromq/czmq/issues/2007).
                         (("\\{ \"zproc\", zproc_test.*")
+                         "")
+                        ;; Also disable the zarmour test, which fails as well
+                        ;; (see: https://github.com/zeromq/czmq/issues/2125).
+                        (("\\{ \"zarmour\", zarmour_test.*")
                          ""))
                       #t)))))
     (inputs
@@ -1289,24 +1323,27 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.2.7")
+    (version "3.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32 "1nkhglzxj05hwhgzrgan4glv0z67rmasf9djx1dmqicwdnw2z0xy"))))
+        (base32 "1bm8jj2rviis9j9l6nixvhxcfx362y9iphkxssgmiz2kj6yypr37"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'remove-failing-test
-           ;; Test 31/32 fails with errors like "Program reassemble_test is
-           ;; not available".  Skipping it for now.
+           ;; Skip test suite failing with "Program reassemble_test is not
+           ;; available" and alike errors.  Also skip test suite failing with
+           ;; "AssertionError: Program extcap/sdjournal is not available"
+           ;; error.'
            (lambda _
              (substitute* "CMakeLists.txt"
-               (("suite_unittests" all) (string-append "# " all)))
+               (("suite_unittests" all) (string-append "# " all))
+               (("suite_extcaps" all) (string-append "# " all)))
              #t)))
        ;; Build process chokes during `validate-runpath' phase.
        ;;
@@ -1561,7 +1598,11 @@ TCP connection, TLS handshake and so on) in the terminal.")
         (base32 "1q1ywpic6s7dfjj3cwzcfgscc4zq0aih462gyas7j1z683ss14b8"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     '(#:configure-flags
+       ;; disable -march=native in build for reproducibility; see
+       ;; https://wiki.squid-cache.org/KnowledgeBase/IllegalInstructionError
+       (list "--disable-arch-native")
+       #:phases
        (modify-phases %standard-phases
          (add-before 'build 'fix-true-path
            (lambda* (#:key inputs #:allow-other-keys)
@@ -1810,7 +1851,7 @@ private (reserved).")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.27")
+  (version "1.28")
   (source
     (origin
       (method url-fetch)
@@ -1821,7 +1862,7 @@ private (reserved).")
         (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
                        version ".tar.gz")))
       (sha256
-       (base32 "0hdx5ajr34f39rycai090y9w8gq9v0shgziynaaj0rzk21vjfdpk"))))
+       (base32 "0kh2qbhxv005pqb35mdk2bld7cg7xnxl12qvdwv30sgd91aqica7"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
@@ -2129,14 +2170,14 @@ HTTP proxies.")
 (define-public enet
   (package
     (name "enet")
-    (version "1.3.16")
+    (version "1.3.17")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://enet.bespin.org/download/"
                            "enet-" version ".tar.gz"))
        (sha256
-        (base32 "1lggc82rbzscci057dqqyhkbq4j6mr5k01hbrvn06jkzc2xpxdxv"))))
+        (base32 "1p6f9mby86af6cs7pv6h48032ip9g32c05cb7d9mimam8lchz3x3"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -3450,14 +3491,14 @@ maximum extent possible.")
 (define-public batctl
   (package
    (name "batctl")
-   (version "2020.3")
+   (version "2020.4")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://downloads.open-mesh.org/batman/releases/batman-adv-"
                          version "/batctl-" version ".tar.gz"))
      (sha256
-      (base32 "0r2w2v4sy6wgr7mp9lc7yj9k4ldsbsm3425rjil7p0b17zmzf4rm"))))
+      (base32 "05rrpfbpdhxn5zgdps849qls2ifis6a94cjryb60d4y1nc2n0d7w"))))
    (inputs
     `(("libnl" ,libnl)))
    (native-inputs
@@ -3695,14 +3736,14 @@ thousands of connections is clearly realistic with today's hardware.")
 (define-public lldpd
   (package
     (name "lldpd")
-    (version "1.0.6")
+    (version "1.0.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://media.luffy.cx/files/lldpd/lldpd-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1v5fd8vwxracvzvgrsswvhppwyx5c4srj89g1cnvy73w831mpq95"))
+        (base32 "1qc7k83zpcq27hpjv1lmgrj4la2zy1gspwk5jas43j49siwr3xqx"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -3716,6 +3757,7 @@ thousands of connections is clearly realistic with today's hardware.")
         "--with-privsep-group=nogroup"
         "--localstatedir=/var"
         "--enable-pie"
+        "--disable-static"
         "--without-embedded-libevent"
         (string-append "--with-systemdsystemunitdir="
                        (assoc-ref %outputs "out")
@@ -3808,3 +3850,97 @@ stamps.")
 client and server.  It allows you to use remote block devices over a TCP/IP
 network.")
     (license license:gpl2)))
+
+(define-public yggdrasil
+  (package
+    (name "yggdrasil")
+    (version "0.3.15")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/yggdrasil-network/yggdrasil-go")
+         (commit (string-append "v" version))
+         (recursive? #t)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0gk7gy8yq5nrnblv4imxzzm2hac4ri0hlw19ajfbc1zll5kj32gf"))
+       (patches (search-patches "yggdrasil-extra-config.patch"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/yggdrasil-network/yggdrasil-go"
+       ;; TODO: figure out how tests are run
+       #:tests? #f
+       #:install-source? #f
+       #:phases (modify-phases %standard-phases
+                  (replace 'build
+                    (lambda _
+                      (for-each
+                       (lambda (c)
+                         (invoke
+                          "go" "build" "-v" "-ldflags=-s -w"
+                          (string-append
+                           "github.com/yggdrasil-network/yggdrasil-go/cmd/" c)))
+                       (list "yggdrasil" "yggdrasilctl"))
+                      #t))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (bin (string-append out "/bin/"))
+                             (doc (string-append out "/share/doc/yggdrasil/")))
+                        (mkdir-p bin)
+                        (for-each
+                         (lambda (f)
+                           (install-file f bin))
+                         (list "yggdrasil" "yggdrasilctl"))
+                        (mkdir-p doc)
+                        (copy-recursively
+                         (string-append
+                          "src/github.com/yggdrasil-network/yggdrasil-go/"
+                          "doc/yggdrasil-network.github.io")
+                         doc))
+                      #t)))))
+    ;; https://github.com/kardianos/minwinsvc is windows only
+    (propagated-inputs
+     `(("go-github-com-arceliar-phony" ,go-github-com-arceliar-phony)
+       ("go-github-com-cheggaaa-pb" ,go-github-com-cheggaaa-pb)
+       ("go-github-com-gologme-log" ,go-github-com-gologme-log)
+       ("go-github-com-hashicorp-go-syslog" ,go-github-com-hashicorp-go-syslog)
+       ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
+       ("go-github-com-kardianos-minwinsvc" ,go-github-com-kardianos-minwinsvc)
+       ("go-github-com-mitchellh-mapstructure"
+        ,go-github-com-mitchellh-mapstructure)
+       ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+       ("go-golang-org-x-net" ,go-golang-org-x-net)
+       ("go-golang-org-x-text" ,go-golang-org-x-text)
+       ("go-golang-zx2c4-com-wireguard" ,go-golang-zx2c4-com-wireguard)
+       ("go-netlink" ,go-netlink)
+       ("go-netns" ,go-netns)))
+    (home-page "https://yggdrasil-network.github.io/blog.html")
+    (synopsis
+     "Experiment in scalable routing as an encrypted IPv6 overlay network")
+    (description
+     "Yggdrasil is an early-stage implementation of a fully end-to-end encrypted
+IPv6 network.  It is lightweight, self-arranging, supported on multiple
+platforms and allows pretty much any IPv6-capable application to communicate
+securely with other Yggdrasil nodes.  Yggdrasil does not require you to have
+IPv6 Internet connectivity - it also works over IPv4.")
+    (license
+     ;; As a special exception to the GNU Lesser General Public License
+     ;; version 3 ("LGPL3"), the copyright holders of this Library give you
+     ;; permission to convey to a third party a Combined Work that links
+     ;; statically or dynamically to this Library without providing any Minimal
+     ;; Corresponding Source or Minimal Application Code as set out in 4d or
+     ;; providing the installation information set out in section 4e, provided
+     ;; that you comply with the other provisions of LGPL3 and provided that you
+     ;; meet, for the Application the terms and conditions of the license(s)
+     ;; which apply to the Application. Except as stated in this special
+     ;; exception, the provisions of LGPL3 will continue to comply in full to
+     ;; this Library. If you modify this Library, you may apply this exception
+     ;; to your version of this Library, but you are not obliged to do so. If
+     ;; you do not wish to do so, delete this exception statement from your
+     ;; version. This exception does not (and cannot) modify any license terms
+     ;; which apply to the Application, with which you must still comply
+     license:lgpl3)))
diff --git a/gnu/packages/nvi.scm b/gnu/packages/nvi.scm
index c34b1cad72..b520b32784 100644
--- a/gnu/packages/nvi.scm
+++ b/gnu/packages/nvi.scm
@@ -19,12 +19,14 @@
 
 (define-module (gnu packages nvi)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages dbm)
   #:use-module (gnu packages ncurses)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
-  #:use-module (guix licenses))
+  #:use-module (guix licenses)
+  #:use-module (guix utils))
 
 (define-public nvi
   (package
@@ -64,17 +66,41 @@
     (build-system gnu-build-system)
     (arguments
       `(#:out-of-source? #t
-        #:configure-flags '("--enable-widechar")))
+        #:configure-flags
+        '("--enable-widechar"
+          ,@(if (%current-target-system)
+                '("vi_cv_sprintf_count=yes")
+                '()))
+        #:phases
+        (modify-phases %standard-phases
+          (add-before 'configure 'fix-configure
+            (lambda* (#:key inputs native-inputs #:allow-other-keys)
+              ;; Replace outdated config.sub and config.guess:
+              (with-directory-excursion "dist"
+                (for-each (lambda (file)
+                            (chmod file #o755)
+                            (install-file
+                             (string-append
+                              (assoc-ref
+                               (or native-inputs inputs) "automake")
+                              "/share/automake-"
+                              ,(version-major+minor
+                                (package-version automake))
+                              "/" file) "."))
+                          '("config.sub")))
+              #t)))))
     (inputs
       `(("bdb" ,bdb)
         ("ncurses" ,ncurses)))
+    (native-inputs
+     `(("automake" ,automake))) ;Up to date 'config.guess' and 'config.sub'.
     (synopsis "The Berkeley Vi Editor")
     (description
       "Vi is the original screen based text editor for Unix systems.  It is
 considered the standard text editor, and is available on almost all Unix
-systems.  Nvi is intended as a \"bug-for-bug compatible\" clone of the original
-BSD vi editor.  As such, it doesn't have a lot of snazzy features as do some
-of the other vi clones such as elvis and vim.  However, if all you want is vi,
-this is the one to get.")
+systems.  Nvi is intended as a \"bug-for-bug compatible\" clone of the
+original BSD vi editor.  As such, it doesn't have a lot of snazzy features as
+do some of the other vi clones such as elvis and vim.  However, if all you
+want is vi, this is the one to get.")
     (home-page "https://sites.google.com/a/bostic.com/keithbostic/vi")
     (license bsd-3)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 4cc530509a..369e819573 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -132,10 +133,10 @@
                          "/lib/ocaml/site-lib"))
     #:phases (modify-phases %standard-phases (delete 'configure))))
 
-(define-public ocaml-4.09
+(define-public ocaml-4.11
   (package
     (name "ocaml")
-    (version "4.09.0")
+    (version "4.11.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -144,7 +145,7 @@
                     "/ocaml-" version ".tar.xz"))
               (sha256
                (base32
-                "1v3z5ar326f3hzvpfljg4xj8b9lmbrl53fn57yih1bkbx3gr3yzj"))))
+                "0k4521c0p10c5ams6vjv5qkkjhmpkb0bfn04llcz46ah0f3r2jpa"))))
     (build-system gnu-build-system)
     (native-search-paths
      (list (search-path-specification
@@ -202,6 +203,20 @@ functional, imperative and object-oriented styles of programming.")
     ;; distributed under lgpl2.0.
     (license (list license:qpl license:lgpl2.0))))
 
+(define-public ocaml-4.09
+  (package
+    (inherit ocaml-4.11)
+    (version "4.09.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://caml.inria.fr/pub/distrib/ocaml-"
+                    (version-major+minor version)
+                    "/ocaml-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1v3z5ar326f3hzvpfljg4xj8b9lmbrl53fn57yih1bkbx3gr3yzj"))))))
+
 (define-public ocaml-4.07
   (package
     (inherit ocaml-4.09)
@@ -229,7 +244,7 @@ functional, imperative and object-oriented styles of programming.")
                           "--prefix" out
                           "--mandir" mandir))))))))))
 
-(define-public ocaml ocaml-4.09)
+(define-public ocaml ocaml-4.11)
 
 (define-public ocamlbuild
   (package
@@ -672,49 +687,54 @@ the OCaml core distribution.")
     (license license:lgpl2.1+))); with linking exception
 
 (define-public emacs-tuareg
-  (package
-    (name "emacs-tuareg")
-    (version "2.2.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/ocaml/tuareg")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "06zxnn85fk5087iq0zxc5l5n9fz8r0367wylmynbfhc9711vccy6"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("emacs" ,emacs-minimal)
-                     ("opam" ,opam)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'make-git-checkout-writable
-           (lambda _
-             (for-each make-file-writable (find-files "."))
-             #t))
-         (delete 'configure)
-         (add-before 'install 'fix-install-path
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "Makefile"
-               (("/emacs/site-lisp")
-                (string-append (assoc-ref %outputs "out")
-                               "/share/emacs/site-lisp/")))
-             #t))
-         (add-after 'install 'post-install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (symlink "tuareg.el"
-                      (string-append (assoc-ref outputs "out")
-                                     "/share/emacs/site-lisp/"
-                                     "tuareg-autoloads.el"))
-             #t)))))
-    (home-page "https://github.com/ocaml/tuareg")
-    (synopsis "OCaml programming mode, REPL, debugger for Emacs")
-    (description "Tuareg helps editing OCaml code, to highlight important
+  ;; Last upstream release on Sept., 14th, 2018, since then "Package cl
+  ;; deprecated" or 'lexical-binding' and others had been fixed.
+  (let ((commit "ccde45bbc292123ec20617f1af7f7e19f7481545")
+        (revision "0"))
+    (package
+      (name "emacs-tuareg")
+      (version (git-version "2.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ocaml/tuareg")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1yxv4bnqarilnpg5j7wywall8170hwvm0q4xx06yqjgcn8pq1lac"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("emacs" ,emacs-minimal)
+         ("opam" ,opam)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'make-git-checkout-writable
+             (lambda _
+               (for-each make-file-writable (find-files "."))
+               #t))
+           (delete 'configure)
+           (add-before 'install 'fix-install-path
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* "Makefile"
+                 (("/emacs/site-lisp")
+                  (string-append (assoc-ref %outputs "out")
+                                 "/share/emacs/site-lisp/")))
+               #t))
+           (add-after 'install 'post-install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (symlink "tuareg.el"
+                        (string-append (assoc-ref outputs "out")
+                                       "/share/emacs/site-lisp/"
+                                       "tuareg-autoloads.el"))
+               #t)))))
+      (home-page "https://github.com/ocaml/tuareg")
+      (synopsis "OCaml programming mode, REPL, debugger for Emacs")
+      (description "Tuareg helps editing OCaml code, to highlight important
 parts of the code, to run an OCaml REPL, and to run the OCaml debugger within
 Emacs.")
-    (license license:gpl2+)))
+      (license license:gpl2+))))
 
 (define-public ocaml-menhir
   (package
@@ -993,6 +1013,14 @@ compilers that can directly deal with packages.")
      `(("m4" ,m4)
        ("ocaml" ,ocaml-4.07)))))
 
+(define-public ocaml4.09-findlib
+  (package
+    (inherit ocaml-findlib)
+    (name "ocaml4.09-findlib")
+    (native-inputs
+     `(("m4" ,m4)
+       ("ocaml" ,ocaml-4.09)))))
+
 ;; note that some tests may hang for no obvious reason.
 (define-public ocaml-ounit
   (package
@@ -1287,6 +1315,9 @@ release of Jane Street packages.  It reads metadata from @file{dune} files
 following a very simple s-expression syntax.")
     (license license:expat)))
 
+(define ocaml4.09-dune-bootstrap
+  (package-with-ocaml4.09 dune-bootstrap))
+
 (define-public dune-configurator
   (package
     (inherit dune-bootstrap)
@@ -1299,15 +1330,45 @@ following a very simple s-expression syntax.")
        #:tests? #f))
     (propagated-inputs
      `(("ocaml-csexp" ,ocaml-csexp)))
-    (synopsis "")
-    (description "")))
+    (properties `((ocaml4.09-variant . ,(delay ocaml4.09-dune-configurator))))
+    (synopsis "Dune helper library for gathering system configuration")
+    (description "Dune-configurator is a small library that helps writing
+OCaml scripts that test features available on the system, in order to generate
+config.h files for instance.  Among other things, dune-configurator allows one to:
+
+@itemize
+@item test if a C program compiles
+@item query pkg-config
+@item import #define from OCaml header files
+@item generate config.h file
+@end itemize")))
+
+(define-public ocaml4.09-dune-configurator
+  (package
+    (inherit dune-configurator)
+    (name "ocaml4.09-dune-configurator")
+    (arguments
+     `(#:package "dune-configurator"
+       #:tests? #f
+       #:dune ,ocaml4.09-dune-bootstrap
+       #:ocaml ,ocaml-4.09
+       #:findlib ,ocaml4.09-findlib))
+    (propagated-inputs
+     `(("ocaml-csexp" ,ocaml4.09-csexp)))))
 
 (define-public dune
   (package
     (inherit dune-bootstrap)
     (propagated-inputs
      `(("dune-configurator" ,dune-configurator)))
-    (properties `((ocaml4.07-variant . ,(delay ocaml4.07-dune))))))
+    (properties `((ocaml4.07-variant . ,(delay ocaml4.07-dune))
+                  (ocaml4.09-variant . ,(delay ocaml4.09-dune))))))
+
+(define-public ocaml4.09-dune
+  (package
+    (inherit ocaml4.09-dune-bootstrap)
+    (propagated-inputs
+     `(("dune-configurator" ,dune-configurator)))))
 
 (define-public ocaml4.07-dune
   (package
@@ -1348,6 +1409,7 @@ following a very simple s-expression syntax.")
              #t)))))
     (propagated-inputs
      `(("ocaml-result" ,ocaml-result)))
+    (properties `((ocaml4.09-variant . ,(delay ocaml4.09-csexp))))
     (home-page "https://github.com/ocaml-dune/csexp")
     (synopsis "Parsing and printing of S-expressions in Canonical form")
     (description "This library provides minimal support for Canonical
@@ -1364,6 +1426,18 @@ To avoid a dependency on a particular S-expression library, the only
 module of this library is parameterised by the type of S-expressions.")
     (license license:expat)))
 
+(define-public ocaml4.09-csexp
+  (package
+    (inherit ocaml-csexp)
+    (name "ocaml4.09-csexp")
+    (arguments
+     `(#:ocaml ,ocaml-4.09
+       #:findlib ,ocaml4.09-findlib
+       ,@(substitute-keyword-arguments (package-arguments ocaml-csexp)
+           ((#:dune _) ocaml4.09-dune-bootstrap))))
+    (propagated-inputs
+     `(("ocaml-result" ,ocaml4.09-result)))))
+
 (define-public ocaml-migrate-parsetree
   (package
     (name "ocaml-migrate-parsetree")
@@ -1408,7 +1482,8 @@ functions to the next and/or previous version.")
                 "07lnj4yzwvwyh5fhpp1dxrys4ddih15jhgqjn59pmgxinbnddi66"))))
     (build-system dune-build-system)
     (arguments
-     `(#:test-target "."))
+     `(#:test-target "."
+       #:package "ppx_tools_versioned"))
     (propagated-inputs
      `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)))
     (properties `((upstream-name . "ppx_tools_versioned")))
@@ -1472,12 +1547,23 @@ powerful.")
     (arguments
      `(#:test-target "."
        #:dune ,dune-bootstrap))
+    (properties `((ocaml4.09-variant . ,(delay ocaml4.09-result))))
     (home-page "https://github.com/janestreet/result")
     (synopsis "Compatibility Result module")
     (description "Uses the new result type defined in OCaml >= 4.03 while
 staying compatible with older version of OCaml should use the Result module
 defined in this library.")
     (license license:bsd-3)))
+
+(define-public ocaml4.09-result
+  (package
+    (inherit ocaml-result)
+    (name "ocaml4.09-result")
+    (arguments
+     `(#:test-target "."
+       #:dune ,ocaml4.09-dune-bootstrap
+       #:ocaml ,ocaml-4.09
+       #:findlib ,ocaml4.09-findlib))))
  
 (define-public ocaml-topkg
   (package
@@ -2366,21 +2452,28 @@ radix-64 representation.  It is specified in RFC 4648.")
         (base32 "1f0fghvlbfryf5h3j4as7vcqrgfjb4c8abl5y0y5h069vs4kp5ii"))))
     (build-system ocaml-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f; no tests
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-safe-string
-           ;; Work around ‘Error: This expression has type string but an
-           ;; expression was expected of type bytes’ since OCaml 4.06.
+         (delete 'configure)
+         (replace 'build
+           ;; This package uses pre-generated setup.ml by oasis, but is
+           ;; a dependency of oasis.  the pre-generated setup.ml is broken
+           ;; with recent versions of OCaml, so we perform a bootstrap instead.
            (lambda _
-             (setenv "OCAMLPARAM" "safe-string=0,_")
+             (substitute* "src/OCamlifyConfig.ml.ab"
+               (("$pkg_version") ,version))
+             (rename-file "src/OCamlifyConfig.ml.ab" "src/OCamlifyConfig.ml")
+             (with-directory-excursion "src"
+               (invoke "ocamlc" "OCamlifyConfig.ml" "ocamlify.ml" "-o"
+                       "ocamlify"))
              #t))
-         (delete 'check)                ; tests are run during the build
-         (replace 'configure
+         (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
-             (invoke "ocaml" "setup.ml" "-configure" "--prefix"
-                     (assoc-ref outputs "out")))))))
-    (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)))
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (mkdir-p bin)
+               (install-file "src/ocamlify" bin)
+               #t))))))
     (home-page "https://forge.ocamlcore.org/projects/ocamlify")
     (synopsis "Include files in OCaml code")
     (description "OCamlify creates OCaml source code by including
@@ -5704,6 +5797,12 @@ convenience functions for vectors and matrices.")
                     (url "https://github.com/Chris00/ocaml-cairo")
                     (commit version)))
               (file-name (git-file-name name version))
+              (patches
+               (search-patches
+                ;; NOTE: This patch will be obsolete on the
+                ;; next tagged release. Remove it at that
+                ;; point.
+                "ocaml-cairo2-caml_ba_array-fix.patch"))
               (sha256
                (base32
                 "0wzysis9fa850s68qh8vrvqc6svgllhwra3kzll2ibv0wmdqrich"))))
@@ -5727,7 +5826,7 @@ and SVG file output.")
 (define-public lablgtk3
   (package
     (name "lablgtk")
-    (version "3.0.beta8")
+    (version "3.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5736,7 +5835,7 @@ and SVG file output.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "08pgwnia240i2rw1rbgiahg673kwa7b6bvhsg3z4b47xr5sh9pvz"))))
+                "11qfc39cmwfwfpwmjh6wh98zwdv6p73bv8hqwcsss869vs1r7gmn"))))
     (build-system dune-build-system)
     (arguments
      `(#:tests? #t
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index d0294cdef3..13b92936d0 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +27,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -45,47 +47,64 @@
 (define-public python-bandit
   (package
     (name "python-bandit")
-    (version "1.4.0")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bandit" version))
        (sha256
         (base32
-         "1m5bm42120zyazky4k0lp3d9r0jwhjmp6sb108xfr0vz952p15yb"))))
+         "0rb034c99pyhb4a60z7f2kz40cjydhm8m9v2blaal1rmhlam7rs1"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (delete 'check)
-                  (add-after 'install 'check
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Tests require the 'bandit' executable in PATH.
-                      ;; It's only built during install time.
-                      (add-installed-pythonpath inputs outputs)
-                      (setenv "PATH" (string-append (assoc-ref outputs "out")
-                                                    "/bin:" (getenv "PATH")))
-                      (invoke "python" "setup.py" "testr"))))))
+     ;; The tests are disabled to avoid a circular dependency with
+     ;; python-stestr.
+     `(#:tests? #f))
     (propagated-inputs
-      `(("python-gitpython" ,python-gitpython)
-        ("python-pyyaml" ,python-pyyaml)
-        ("python-six" ,python-six)
-        ("python-stevedore" ,python-stevedore)))
+     `(("python-gitpython" ,python-gitpython)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-six" ,python-six)
+       ("python-stevedore" ,python-stevedore)))
     (native-inputs
-      `(;; Tests.
-        ("python-beautifulsoup4" ,python-beautifulsoup4)
-        ("python-fixtures" ,python-fixtures)
-        ("python-mock" ,python-mock)
-        ("python-subunit" ,python-subunit)
-        ("python-testrepository" ,python-testrepository)
-        ("python-testscenarios" ,python-testscenarios)
-        ("python-testtools" ,python-testtools)))
+     `(("python-pbr" ,python-pbr)))
     (home-page "https://github.com/PyCQA/bandit")
     (synopsis "Security oriented static analyser for python code")
-    (description
-      "Bandit is a tool designed to find common security issues in Python code.
-To do this Bandit processes each file, builds an AST from it, and runs
-appropriate plugins against the AST nodes.  Once Bandit has finished scanning
-all the files it generates a report.")
+    (description "Bandit is a tool designed to find common security issues in
+Python code.  To do this Bandit processes each file, builds an AST from it,
+and runs appropriate plugins against the AST nodes.  Once Bandit has finished
+scanning all the files it generates a report.")
+    (license asl2.0)))
+
+(define-public python-cliff
+  (package
+    (name "python-cliff")
+    (version "3.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "cliff" version))
+       (sha256
+        (base32
+         "0n8pzr0mnn9lq2mykds69ij2xrn0fsirh4ndmkx0mzydbx5niysv"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (native-inputs
+     `(("python-pbr" ,python-pbr)))
+    (propagated-inputs
+     `(("python-cmd2" ,python-cmd2)
+       ("python-prettytable" ,python-prettytable)
+       ("python-pyparsing" ,python-pyparsing)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-bandit" ,python-bandit)
+       ("python-stevedore" ,python-stevedore)))
+    (home-page "https://opendev.org/openstack/cliff")
+    (synopsis "Framework for building command line programs")
+    (description "The @code{cliff} framework allows creating multi-level
+commands such as those of @command{subversion} and @command{git}, where the
+main program handles some basic argument parsing and then invokes a
+sub-command to do the work.  It uses plugins to define sub-commands, output
+formatters, and other extensions.")
     (license asl2.0)))
 
 (define-public python-debtcollector
@@ -131,39 +150,30 @@ manner.")
 (define-public python-hacking
   (package
     (name "python-hacking")
-    (version "1.1.0")
+    (version "4.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "hacking" version))
        (sha256
         (base32
-         "1vlgh81v4vsw3q3cf7qggsp043vq16knp203lrll82h7l7rhd8r3"))))
+         "062rvbkvbavqqz55f7q00ikwipkn5j0rdls1rrajdbfwgckjcrsm"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'delete-broken-test
-           (lambda _
-             ;; TODO: Just one test fails:
-             ;; hacking.tests.test_doctest.HackingTestCase.test_pycodestyle
-             ;;   (H403-hacking_docstring_multiline_end-line-5)
-             (delete-file "hacking/tests/test_doctest.py")
-             #t)))))
-    (propagated-inputs
-     `(("python-flake8" ,python-flake8-2.6)
-       ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
-       ("python-pbr" ,python-pbr)
-       ("python-pep8-1.5.7" ,python-pep8-1.5.7)
-       ("python-pyflakes-1.2" ,python-pyflakes-1.2)
-       ("python-six" ,python-six)))
+     (propagated-inputs
+     `(("python-flake8" ,python-flake8)))
     (native-inputs
      `( ;; Tests
+       ("python-coverage" ,python-coverage)
+       ("python-ddt" ,python-ddt)
+       ("python-dnspython" ,python-dnspython)
+       ("python-fixtures" ,python-fixtures)
        ("python-eventlet" ,python-eventlet)
        ("python-mock" ,python-mock)
-       ("python-reno" ,python-reno)
-       ("python-testrepository" ,python-testrepository)
-       ("python-testscenarios" ,python-testscenarios)))
+       ("python-monotonic" ,python-monotonic)
+       ("python-subunit" ,python-subunit)
+       ("python-stestr" ,python-stestr)
+       ("python-testscenarios" ,python-testscenarios)
+       ("python-testtools" ,python-testtools)))
     (home-page "https://github.com/openstack-dev/hacking")
     (synopsis "OpenStack hacking guideline enforcement")
     (description
@@ -172,9 +182,6 @@ manner.")
 guidelines}.")
     (license asl2.0)))
 
-(define-public python2-hacking
-  (package-with-python2 python-hacking))
-
 (define-public python-mox3
   (package
     (name "python-mox3")
@@ -310,22 +317,21 @@ to docs.openstack.org and developer.openstack.org.")
 (define-public python-stevedore
   (package
     (name "python-stevedore")
-    (version "1.28.0")
+    (version "3.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "stevedore" version))
        (sha256
         (base32
-         "02ynfgwma84g59834dmvzr39mcppy5s229zf1w23c0qngf753izi"))))
+         "1w11lm293afzb73iq0ba9wnmr2rjwymnhr92km4a4xrs7a5qcigq"))))
     (build-system python-build-system)
-    (propagated-inputs
-     `(("python-pbr" ,python-pbr)
-       ("python-six" ,python-six)))
+    (arguments
+     ;; The tests are disabled to avoid a circular dependency with
+     ;; python-stestr.
+     `(#:tests? #f))
     (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-sphinx" ,python-sphinx)
-       ("python-testrepository" ,python-testrepository)))
+     `(("python-pbr" ,python-pbr)))
     (home-page "https://github.com/dreamhost/stevedore")
     (synopsis "Manage dynamic plugins for Python applications")
     (description
@@ -427,22 +433,33 @@ common features used in Tempest.")
 (define-public python-oslo.context
   (package
     (name "python-oslo.context")
-    (version "2.20.0")
+    (version "3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "oslo.context" version))
        (sha256
         (base32
-         "0iiq9rpwg6wrdqnhf3d8z8g0g7fjhs5zn6qw6igvxplz2c3rbvvx"))))
+         "1l2z186rkd9acrb2ygf53yrdc1lgf7cy1akbhm21kgkzind4p2r6"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'relax-requirements
+                    (lambda _
+                      (substitute* "test-requirements.txt"
+                        (("hacking>=3.0.1,<3.1.0")
+                         "hacking>=3.0.1"))
+                      #t)))))
     (propagated-inputs
-     `(("python-debtcollector" ,python-debtcollector)
-       ("python-pbr" ,python-pbr)))
+     `(("python-debtcollector" ,python-debtcollector)))
     (native-inputs
-     `(("python-fixtures" ,python-fixtures)
+     `(("python-bandit" ,python-bandit)
+       ("python-coverage" ,python-coverage)
+       ("python-fixtures" ,python-fixtures)
        ("python-hacking" ,python-hacking)
-       ("python-oslotest" ,python-oslotest)))
+       ("python-oslotest" ,python-oslotest)
+       ("python-pbr" ,python-pbr)
+       ("python-stestr" ,python-stestr)))
     (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo context library")
     (description
@@ -600,70 +617,62 @@ and building documentation from them.")
 (define-public python-oslosphinx
   (package
     (name "python-oslosphinx")
-    (version "4.10.0")
+    (version "4.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "oslosphinx" version))
        (sha256
         (base32
-         "09mxqyabi68f3s3arvdhlhq0mn38vf74jbsfcg84151hcj6czhnl"))))
+         "1xm41857vzrzjmnyi6bqirg4i5qa61v7wxcsdc4q1nzgr3ndgz5k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (replace 'check
+         (add-after 'unpack 'relax-requirements
            (lambda _
-             ;; Note: Upstream tests would have also built the release notes.
-             ;; That only would work if we were in a git checkout.
-             ;; Therefore, we don't do it here.
-             (invoke "python" "setup.py" "build_sphinx"))))))
+             (substitute* "test-requirements.txt"
+               (("hacking!=0.13.0,<0.14,>=0.12.0")
+                "hacking!=0.13.0,>=0.12.0"))
+             #t)))))
     (propagated-inputs
-      `(("python-requests" ,python-requests)))
+     `(("python-requests" ,python-requests)))
     (native-inputs
-      `(("python-pbr" ,python-pbr)
-        ("python-docutils" ,python-docutils)
-        ("python-hacking" ,python-hacking)
-        ("python-sphinx" ,python-sphinx)))
+     `(("python-hacking" ,python-hacking)
+       ("python-openstackdocstheme" ,python-openstackdocstheme)
+       ("python-pbr" ,python-pbr)
+       ("python-reno" ,python-reno)
+       ("python-sphinx" ,python-sphinx)))
     (home-page "https://www.openstack.org/")
     (synopsis "OpenStack sphinx extensions and theme")
-    (description
-      "This package provides themes and extensions for Sphinx documentation
-from the OpenStack project.")
+    (description "This package provides themes and extensions for Sphinx
+documentation from the OpenStack project.")
     (license asl2.0)))
 
-(define-public python2-oslosphinx
-  (package-with-python2 python-oslosphinx))
-
 (define-public python-oslotest
   (package
     (name "python-oslotest")
-    (version "3.4.0")
+    (version "4.4.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "oslotest" version))
-        (sha256
-          (base32
-            "1pp8lq61d548cxcqi451czvrz5i5b3hyi2ry00wmngdgiswcqj1h"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "oslotest" version))
+       (sha256
+        (base32
+         "0r50sz55m8ljv2vk1k7sp88iz1iqq4p9w6kb8hn8g8c50r9zdi5i"))))
     (build-system python-build-system)
+    (arguments
+     ;; The tests are disabled to avoid a circular dependency with oslo.config.
+     `(#:tests? #f))
     (propagated-inputs
-      `(("python-fixtures" ,python-fixtures)
-        ("python-mock" ,python-mock)
-        ("python-mox3" ,python-mox3)
-        ("python-os-client-config" ,python-os-client-config)
-        ("python-six" ,python-six)
-        ("python-subunit" ,python-subunit)
-        ("python-testrepository" ,python-testrepository)
-        ("python-testtools" ,python-testtools)))
-    (native-inputs
-      `(("python-pbr" ,python-pbr)
-        ("python-testscenarios" ,python-testscenarios)))
+     `(("python-fixtures" ,python-fixtures)
+       ("python-six" ,python-six)
+       ("python-subunit" ,python-subunit)
+       ("python-testtools" ,python-testtools)))
     (home-page "https://launchpad.net/oslo")
     (synopsis "Oslo test framework")
-    (description
-      "The Oslo Test framework provides common fixtures, support for debugging,
-and better support for mocking results.")
+    (description "The Oslo Test framework provides common fixtures, support
+for debugging, and better support for mocking results.")
     (license asl2.0)))
 
 (define-public python2-oslotest
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index d59859335a..8b95127163 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -130,9 +130,9 @@
   ;; Latest version of Guix, which may or may not correspond to a release.
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
-  (let ((version "1.1.0")
-        (commit "875c01f82dc5f2c4ca82952ea88b3240fbe8bede")
-        (revision 30))
+  (let ((version "1.2.0")
+        (commit "2c11cf1b91b07ed8c00b5525ab6a75e81f5cc289")
+        (revision 2))
     (package
       (name "guix")
 
@@ -148,7 +148,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0mh1hnrk84h5nzqp6aflh9ab3kxr5672c8bx44minzyd26177yik"))
+                  "0w9yrky8qx6zwh97aq6z07mxpjixxg5pp7lzw1r72j3qg3rircj2"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -336,7 +336,13 @@ $(prefix)/etc/init.d\n")))
                             (let ((bash (assoc-ref inputs "bash")))
                               (substitute* (string-append out "/bin/guix")
                                 (("^#!.*/bash") (string-append "#! " bash "/bin/bash")))))
-                          #t))))))
+                          #t)))
+
+                    ;; The 'guix' executable has 'OUT/libexec/guix/guile' as
+                    ;; its shebang; that should remain unchanged, thus remove
+                    ;; the 'patch-shebangs' phase, which would otherwise
+                    ;; change it to 'GUILE/bin/guile'.
+                    (delete 'patch-shebangs))))
       (native-inputs `(("pkg-config" ,pkg-config)
 
                        ;; Guile libraries are needed here for
@@ -566,14 +572,14 @@ out) and returning a package that uses that as its 'source'."
 (define-public nix
   (package
     (name "nix")
-    (version "2.3.7")
+    (version "2.3.9")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://nixos.org/releases/nix/nix-"
+             (uri (string-append "https://nixos.org/releases/nix/nix-"
                                  version "/nix-" version ".tar.xz"))
              (sha256
               (base32
-               "15p50jkss6szinisb7axhxybgfi29sm9grz7mxwair8ljj2553yx"))))
+               "1yi2c1fp33sxv9j0pvxlpxs1dhq3axrwkxdwr867ll90lbdiycvj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--sysconfdir=/etc" "--enable-gc")
@@ -641,6 +647,25 @@ letting you install them apart in distinct directories and then create
 symlinks to the files in a common directory such as /usr/local.")
     (license license:gpl3+)))
 
+(define-public xstow
+  (package
+    (name "xstow")
+    (version "1.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/xstow/xstow-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1vy6lcswpkixh7h5mvsmq2wbcih6lpsmcva3m7v6f5npllciy13g"))))
+    (build-system gnu-build-system)
+    (synopsis "Replacement of GNU Stow written in C++")
+    (description
+     "XStow is a replacement of GNU Stow written in C++.  It supports all
+features of Stow with some extensions.")
+    (home-page "http://xstow.sourceforge.net/")
+    (license license:gpl2)))
+
 (define-public rpm
   (package
     (name "rpm")
@@ -990,90 +1015,96 @@ environments.")
     (license (list license:gpl3+ license:agpl3+ license:silofl1.1))))
 
 (define-public guix-build-coordinator
-  (let ((commit "e701d4d7f24a11d94cf504e7efbcee4e1091b092")
-        (revision "1"))
+  (let ((commit "ed3b2e56655ccf4cd9574f00e72b20e9022d9ab0")
+        (revision "8"))
     (package
-    (name "guix-build-coordinator")
-    (version (git-version "0" revision commit))
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://git.cbaines.net/git/guix/build-coordinator")
-                    (commit commit)))
-              (sha256
-               (base32
-                "16f09sl527b6bgyxs2ybyjfncli60dwzg4v1c58h4hcl2zm8qx70"))
-              (file-name (string-append name "-" version "-checkout"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules (((guix build guile-build-system)
-                   #:select (target-guile-effective-version))
-                  ,@%gnu-build-system-modules)
-       #:imported-modules ((guix build guile-build-system)
-                           ,@%gnu-build-system-modules)
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'set-GUILE_AUTO_COMPILE
-           (lambda _
-             ;; To avoid warnings relating to 'guild'.
-             (setenv "GUILE_AUTO_COMPILE" "0")
-             #t))
-         (add-after 'install 'wrap-executable
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (guile (assoc-ref inputs "guile"))
-                    (version (target-guile-effective-version))
-                    (scm (string-append out "/share/guile/site/" version))
-                    (go  (string-append out "/lib/guile/" version "/site-ccache")))
-               (for-each
-                (lambda (file)
-                  (simple-format (current-error-port) "wrapping: ~A\n" file)
-                  (wrap-program file
-                    `("PATH" ":" prefix
-                      (,bin
-                       ;; Support building without sqitch as an input, as it
-                       ;; can't be cross-compiled yet
-                       ,@(or (and=> (assoc-ref inputs "sqitch")
-                                    list)
-                             '())))
-                    `("GUILE_LOAD_PATH" ":" prefix
-                      (,scm ,(getenv "GUILE_LOAD_PATH")))
-                    `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                      (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
-                (find-files bin)))
-             #t))
-         (delete 'strip))))             ; As the .go files aren't compatible
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-
-       ;; Guile libraries are needed here for cross-compilation.
-       ("guile-json" ,guile-json-3)
-       ("guile-gcrypt" ,guile-gcrypt)
-       ("guix" ,guix)
-       ("guile-prometheus" ,guile-prometheus)
-       ("guile-fibers" ,guile-fibers)
-       ("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))))
-    (inputs
-     `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
-       ("guile-fibers" ,guile-fibers)
-       ("guile-prometheus" ,guile-prometheus)
-       ("guile-gcrypt" ,guile-gcrypt)
-       ("guile-json" ,guile-json-3)
-       ("guile-lzlib" ,guile-lzlib)
-       ("guile-sqlite3" ,guile-sqlite3)
-       ("guix" ,guix)
-       ("sqlite" ,sqlite)
-       ("sqitch" ,sqitch)))
-    (home-page "https://git.cbaines.net/guix/build-coordinator/")
-    (synopsis "Tool to help build derivations")
-    (description
-     "The Guix Build Coordinator helps with performing lots of builds across
+      (name "guix-build-coordinator")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.cbaines.net/git/guix/build-coordinator")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "15c7398km1870w82410jrmcnb4mvkhrsb8qvshr8wa1gjcpb6s6z"))
+                (file-name (string-append name "-" version "-checkout"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:modules (((guix build guile-build-system)
+                     #:select (target-guile-effective-version))
+                    ,@%gnu-build-system-modules)
+         #:imported-modules ((guix build guile-build-system)
+                             ,@%gnu-build-system-modules)
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'build 'set-GUILE_AUTO_COMPILE
+             (lambda _
+               ;; To avoid warnings relating to 'guild'.
+               (setenv "GUILE_AUTO_COMPILE" "0")
+               #t))
+           (add-after 'install 'wrap-executable
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (guile (assoc-ref inputs "guile"))
+                      (version (target-guile-effective-version))
+                      (scm (string-append out "/share/guile/site/" version))
+                      (go  (string-append out "/lib/guile/" version "/site-ccache")))
+                 (for-each
+                  (lambda (file)
+                    (simple-format (current-error-port) "wrapping: ~A\n" file)
+                    (wrap-program file
+                      `("PATH" ":" prefix
+                        (,bin
+                         ;; Support building without sqitch as an input, as it
+                         ;; can't be cross-compiled yet
+                         ,@(or (and=> (assoc-ref inputs "sqitch")
+                                      list)
+                               '())))
+                      `("GUILE_LOAD_PATH" ":" prefix
+                        (,scm ,(getenv "GUILE_LOAD_PATH")))
+                      `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                        (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
+                  (find-files bin)))
+               #t))
+           (delete 'strip))))             ; As the .go files aren't compatible
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("gnutls" ,gnutls)
+
+         ;; Guile libraries are needed here for cross-compilation.
+         ("guile-json" ,guile-json-4)
+         ("guile-gcrypt" ,guile-gcrypt)
+         ("guix" ,guix)
+         ("guile-prometheus" ,guile-prometheus)
+         ("guile-fibers" ,guile-fibers)
+         ("guile-lib" ,guile-lib)
+         ("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))))
+      (inputs
+       `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
+         ("sqlite" ,sqlite)
+         ("sqitch" ,sqitch)))
+      (propagated-inputs
+       `(("guile-fibers" ,guile-fibers)
+         ("guile-prometheus" ,guile-prometheus)
+         ("guile-gcrypt" ,guile-gcrypt)
+         ("guile-json" ,guile-json-4)
+         ("guile-lib" ,guile-lib)
+         ("guile-lzlib" ,guile-lzlib)
+         ("guile-zlib" ,guile-zlib)
+         ("guile-sqlite3" ,guile-sqlite3)
+         ("guix" ,guix)
+         ("gnutls" ,gnutls)))
+      (home-page "https://git.cbaines.net/guix/build-coordinator/")
+      (synopsis "Tool to help build derivations")
+      (description
+       "The Guix Build Coordinator helps with performing lots of builds across
 potentially many machines, and with doing something with the results and
 outputs of those builds.")
-    (license license:gpl3+))))
+      (license license:gpl3+))))
 
 (define-public guix-jupyter
   (package
@@ -1242,7 +1273,7 @@ for packaging and deployment of cross-compiled Windows applications.")
 (define-public libostree
   (package
     (name "libostree")
-    (version "2020.7")
+    (version "2020.8")
     (source
      (origin
        (method url-fetch)
@@ -1250,7 +1281,7 @@ for packaging and deployment of cross-compiled Windows applications.")
              "https://github.com/ostreedev/ostree/releases/download/v"
              (version-major+minor version) "/libostree-" version ".tar.xz"))
        (sha256
-        (base32 "0clriq2ypz1fycd6mpjyrhzid44svzpzw0amnank593h69b216ax"))))
+        (base32 "16v73v63h16ika73kgh2cvgm0v27r2d48m932mbj3xm6s295kapx"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/pantheon.scm b/gnu/packages/pantheon.scm
index aa7074827e..249c27e4db 100644
--- a/gnu/packages/pantheon.scm
+++ b/gnu/packages/pantheon.scm
@@ -37,7 +37,7 @@
 (define-public granite
   (package
     (name "granite")
-    (version "5.4.0")
+    (version "5.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -46,7 +46,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0acicv3f9gksb352v88lwap8ailjsxdrfknl2xql7blasbjzl2q0"))))
+                "13qfhq8xndikk6kmybibs6a4ddyp6mhvbsp2yy4qr7aiiyxf7mna"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index b600a1e5b2..be88829825 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -55,14 +55,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20200822")
+    (version "20201122")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "02dy46g6f05p7s2qs8h6yg20p1zl3flxxf77n5jw74l3h1m24m4n"))))
+       (base32 "0c7zrb26xhbn48kvxs01qyj1vhwrpzkm11xxvi23njb6qi1bz82d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -190,6 +190,25 @@ by managing a queue of pending work.")
                   license:zlib        ; src/common/strnatcmp.c
                   license:gpl2+))))   ; the rest, often with OpenSSL exception
 
+;; The SLURM client/daemon protocol and file format changes from time to time
+;; in incompatible ways, as noted in
+;; <https://slurm.schedmd.com/troubleshoot.html#network>.  Thus, keep older
+;; releases here.  See also <https://issues.guix.gnu.org/44387>.
+
+(define-public slurm-19.05
+  (package
+    (inherit slurm)
+    (version "19.05.3-2")
+    (source (origin
+              (inherit (package-source slurm))
+              (method url-fetch)
+              (uri (string-append
+                    "https://download.schedmd.com/slurm/slurm-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "0qj4blfymrd2ry2qmb58l3jbr4jwygc3adcfw7my27rippcijlyc"))))))
+
 (define-public slurm-drmaa
   (package
     (name "slurm-drmaa")
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index c178c2de8d..c1bd212f09 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016, 2019, 2020 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -123,7 +123,7 @@ human.")
 (define-public keepassxc
   (package
     (name "keepassxc")
-    (version "2.6.1")
+    (version "2.6.2")
     (source
      (origin
        (method url-fetch)
@@ -131,7 +131,7 @@ human.")
                            "/releases/download/" version "/keepassxc-"
                            version "-src.tar.xz"))
        (sha256
-        (base32 "1j4cmj5mv13m5b4ig950yas8ayybakqs366lp1cimmzw8ycparml"))))
+        (base32 "0f3ygnjzjijqmmrvrslwsbnz208jgxp5bwy4p336w3bn1bggl6qh"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags '("-DWITH_XC_ALL=YES"
@@ -211,7 +211,7 @@ algorithms AES or Twofish.")
 (define-public pwsafe
   (package
     (name "pwsafe")
-    (version "3.52.0")
+    (version "3.54.1")
     (home-page "https://www.pwsafe.org/")
     (source
      (origin
@@ -220,7 +220,7 @@ algorithms AES or Twofish.")
              (url "https://github.com/pwsafe/pwsafe")
              (commit version)))
        (sha256
-        (base32 "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh"))
+        (base32 "0d51dlw98mv23nwb0b5jyji8gnb9f5cnig6kivfljl97lmr6lhvf"))
        (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (native-inputs
@@ -367,7 +367,7 @@ them out, at the source.")
 (define-public libpwquality
   (package
     (name "libpwquality")
-    (version "1.4.2")
+    (version "1.4.4")
     (source (origin
               (method url-fetch)
               (uri (list
@@ -379,7 +379,7 @@ them out, at the source.")
                                    "libpwquality-" version ".tar.bz2")))
               (sha256
                (base32
-                "13hw532fmzc5xjpy75d74rlfdlxf2a8ibb4hyy9c0s92wsgf0qsj"))))
+                "0id5a8bi8xnjg11g9vzrl2xbpx65mfxclxcvis7zx1v8vhisyfyl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch b/gnu/packages/patches/audiofile-check-number-of-coefficients.patch
index f9427cbe61..f9427cbe61 100644
--- a/gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch
+++ b/gnu/packages/patches/audiofile-check-number-of-coefficients.patch
diff --git a/gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch b/gnu/packages/patches/audiofile-division-by-zero.patch
index e001133916..e001133916 100644
--- a/gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch
+++ b/gnu/packages/patches/audiofile-division-by-zero.patch
diff --git a/gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch b/gnu/packages/patches/audiofile-function-signature.patch
index 35627d3869..35627d3869 100644
--- a/gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch
+++ b/gnu/packages/patches/audiofile-function-signature.patch
diff --git a/gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch b/gnu/packages/patches/audiofile-multiply-overflow.patch
index 0f17140d6b..0f17140d6b 100644
--- a/gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch
+++ b/gnu/packages/patches/audiofile-multiply-overflow.patch
diff --git a/gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch b/gnu/packages/patches/audiofile-overflow-in-MSADPCM.patch
index 2be930b924..2be930b924 100644
--- a/gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch
+++ b/gnu/packages/patches/audiofile-overflow-in-MSADPCM.patch
diff --git a/gnu/packages/patches/benchmark-unbundle-googletest.patch b/gnu/packages/patches/benchmark-unbundle-googletest.patch
deleted file mode 100644
index 4dce8f59f1..0000000000
--- a/gnu/packages/patches/benchmark-unbundle-googletest.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 5eb306618196ea78b8c9390e22ea2edce20760fe Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
-Date: Fri, 14 Jun 2019 22:15:49 +0200
-Subject: [PATCH] Remove googletest lookup from build system.
-
----
- cmake/GoogleTest.cmake    | 18 +++++++++---------
- cmake/GoogleTest.cmake.in | 12 ++++++------
- 2 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/cmake/GoogleTest.cmake b/cmake/GoogleTest.cmake
-index fb7c6be..a6c473b 100644
---- a/cmake/GoogleTest.cmake
-+++ b/cmake/GoogleTest.cmake
-@@ -27,15 +27,15 @@ endif()
- # settings on Windows
- set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
- 
--include(${GOOGLETEST_PREFIX}/googletest-paths.cmake)
-+#include(${GOOGLETEST_PREFIX}/googletest-paths.cmake)
- 
- # Add googletest directly to our build. This defines
- # the gtest and gtest_main targets.
--add_subdirectory(${GOOGLETEST_SOURCE_DIR}
--                 ${GOOGLETEST_BINARY_DIR}
--                 EXCLUDE_FROM_ALL)
--
--set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>)
--set_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest_main,INTERFACE_INCLUDE_DIRECTORIES>)
--set_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock,INTERFACE_INCLUDE_DIRECTORIES>)
--set_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock_main,INTERFACE_INCLUDE_DIRECTORIES>)
-+#add_subdirectory(${GOOGLETEST_SOURCE_DIR}
-+#                 ${GOOGLETEST_BINARY_DIR}
-+#                 EXCLUDE_FROM_ALL)
-+
-+#set_target_properties(gtest PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>)
-+#set_target_properties(gtest_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gtest_main,INTERFACE_INCLUDE_DIRECTORIES>)
-+#set_target_properties(gmock PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock,INTERFACE_INCLUDE_DIRECTORIES>)
-+#set_target_properties(gmock_main PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gmock_main,INTERFACE_INCLUDE_DIRECTORIES>)
-diff --git a/cmake/GoogleTest.cmake.in b/cmake/GoogleTest.cmake.in
-index 28818ee..13b0888 100644
---- a/cmake/GoogleTest.cmake.in
-+++ b/cmake/GoogleTest.cmake.in
-@@ -31,7 +31,7 @@ if(EXISTS "${GOOGLETEST_PATH}"            AND IS_DIRECTORY "${GOOGLETEST_PATH}"
-   )
- else()
-   if(NOT ALLOW_DOWNLOADING_GOOGLETEST)
--    message(SEND_ERROR "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable ALLOW_DOWNLOADING_GOOGLETEST, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.")
-+    message(WARNING "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable ALLOW_DOWNLOADING_GOOGLETEST, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.")
-   else()
-     message(WARNING "Did not find Google Test sources! Fetching from web...")
-     ExternalProject_Add(
-@@ -51,8 +51,8 @@ else()
-   endif()
- endif()
- 
--ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
--file(WRITE googletest-paths.cmake
--"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
--set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
--")
-+#ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR)
-+#file(WRITE googletest-paths.cmake
-+#"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\")
-+#set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\")
-+#")
--- 
-2.22.0
-
diff --git a/gnu/packages/patches/bitcoin-core-python-compat.patch b/gnu/packages/patches/bitcoin-core-python-compat.patch
deleted file mode 100644
index 6bf744124d..0000000000
--- a/gnu/packages/patches/bitcoin-core-python-compat.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Get rid of deprecation warning emitted by Python 3.8, which causes a test failure(!).
-
-https://github.com/bitcoin/bitcoin/pull/17931
-
-Taken from upstream:
-
-https://github.com/bitcoin/bitcoin/commit/f117fb00da747147cddfb071c1427a2754c278cd
-
-diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py
-index 20864881c165..07eacf410d88 100755
---- a/test/functional/p2p_invalid_messages.py
-+++ b/test/functional/p2p_invalid_messages.py
-@@ -145,13 +145,13 @@ def run_test(self):
-     def test_magic_bytes(self):
-         conn = self.nodes[0].add_p2p_connection(P2PDataStore())
- 
--        def swap_magic_bytes():
-+        async def swap_magic_bytes():
-             conn._on_data = lambda: None  # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes
-             conn.magic_bytes = b'\x00\x11\x22\x32'
- 
-         # Call .result() to block until the atomic swap is complete, otherwise
-         # we might run into races later on
--        asyncio.run_coroutine_threadsafe(asyncio.coroutine(swap_magic_bytes)(), NetworkThread.network_event_loop).result()
-+        asyncio.run_coroutine_threadsafe(swap_magic_bytes(), NetworkThread.network_event_loop).result()
- 
-         with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']):
-             conn.send_message(messages.msg_ping(nonce=0xff))
diff --git a/gnu/packages/patches/bsd-games-2.17-64bit.patch b/gnu/packages/patches/bsd-games-2.17-64bit.patch
new file mode 100644
index 0000000000..e286c1c531
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-2.17-64bit.patch
@@ -0,0 +1,43 @@
+David Leverton writes about adventure/crc.c:
+
+The 'adventure' game from the games-misc/bsd-games-2.13 package crashes
+when saving the game on AMD64 (and probably other 64-bit systems, but I
+haven't checked).  Find attached to fix this.
+
+http://bugs.gentoo.org/show_bug.cgi?id=77032
+
+
+About utmpentry.c:
+
+the utmpx structure defines the ut_tv member a little differently on
+64bit hosts so that a 32bit and 64bit structure can be shared.  So the
+ut_tv is a custom 32bit structure rather than the native 64bit timeval
+structure.  Work around is to assign the submembers instead.
+
+http://bugs.gentoo.org/show_bug.cgi?id=102667
+
+--- bsd-games/adventure/crc.c
++++ bsd-games/adventure/crc.c
+@@ -134,7 +134,8 @@
+				if (step >= sizeof(crctab) / sizeof(crctab[0]))
+					step = 0;
+			}
+-			crcval = (crcval << 8) ^ crctab[i];
++			/* Mask to 32 bits. */
++			crcval = ((crcval << 8) ^ crctab[i]) & 0xffffffff;
+		}
+-	return crcval & 0xffffffff;	/* Mask to 32 bits. */
++	return crcval;
+ }
+--- bsd-games/dm/utmpentry.c
++++ bsd-games/dm/utmpentry.c
+@@ -291,7 +291,8 @@
+	e->line[sizeof(e->line) - 1] = '\0';
+	(void)strncpy(e->host, up->ut_host, sizeof(up->ut_host));
+	e->name[sizeof(e->host) - 1] = '\0';
+-	e->tv = up->ut_tv;
++	e->tv.tv_sec = up->ut_tv.tv_sec;
++	e->tv.tv_usec = up->ut_tv.tv_usec;
+	adjust_size(e);
+ }
+ #endif
diff --git a/gnu/packages/patches/bsd-games-add-configure-config.patch b/gnu/packages/patches/bsd-games-add-configure-config.patch
new file mode 100644
index 0000000000..d8636addb6
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-add-configure-config.patch
@@ -0,0 +1,22 @@
+Remove a few 'setenv's from the definition.
+
+diff -Naur bsd-games-2.17/config.params bsd-games-patch/config.params
+--- bsd-games-2.17/config.params	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/config.params	2020-04-22 20:49:40.809695248 +0700
+@@ -0,0 +1,16 @@
++bsd_games_cfg_do_chown=n
++bsd_games_cfg_non_interactive=y
++
++# Fix some man-pages: cfscores, morse, ppt, rot13, snscore, teachgammon.
++bsd_games_cfg_use_dot_so=syml
++
++# Don't build some games:
++# Countmail require some BSD-package called `from`.
++# DM is a toy to restrict access to bsd-games.
++# Fortune seems to be already packaged (fortune-mod).
++# Wargames isn't convenient as a game launcher.
++bsd_games_cfg_no_build_dirs="countmail dm fortune wargames"
++
++# Those are substitute*'d with GNU miscfiles.
++bsd_games_cfg_hangman_wordsfile=WORD_LIST
++bsd_games_cfg_dictionary_src=WORD_LIST
diff --git a/gnu/packages/patches/bsd-games-add-wrapper.patch b/gnu/packages/patches/bsd-games-add-wrapper.patch
new file mode 100644
index 0000000000..ad3b1a9860
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-add-wrapper.patch
@@ -0,0 +1,251 @@
+As we cannot install outside the Store, and those games do not create the
+needed writable files on their own, we need a wrapper script.
+
+diff -Naur bsd-games-2.17/atc/Makefrag bsd-games-patch/atc/Makefrag
+--- bsd-games-2.17/atc/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/atc/Makefrag	2020-04-23 20:24:04.446176222 +0700
+@@ -47,7 +47,8 @@
+	mv atc/lex.yy.c $@
+
+ atc_install:	atc_all
+-	$(INSTALL_SCORE_GAME) atc/atc $(INSTALL_PREFIX)$(GAMESDIR)/atc
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/atc
++	$(INSTALL_SCORE_GAME) atc/atc $(INSTALL_PREFIX)$(GAMESDIR)/.atc-real
+	$(HIDE_GAME) atc
+	$(INSTALL_SCORE_FILE) $(ATC_SCOREFILE)
+	$(INSTALL_MANUAL) atc/atc.6
+diff -Naur bsd-games-2.17/battlestar/Makefrag bsd-games-patch/battlestar/Makefrag
+--- bsd-games-2.17/battlestar/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/battlestar/Makefrag	2020-04-23 20:24:04.482175771 +0700
+@@ -32,7 +32,8 @@
+ battlestar_all:	battlestar/battlestar battlestar/battlestar.6
+
+ battlestar_install:	battlestar_all
+-	$(INSTALL_SCORE_GAME) battlestar/battlestar $(INSTALL_PREFIX)$(GAMESDIR)/battlestar
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/battlestar
++	$(INSTALL_SCORE_GAME) battlestar/battlestar $(INSTALL_PREFIX)$(GAMESDIR)/.battlestar-real
+	$(HIDE_GAME) battlestar
+	$(INSTALL_MANUAL) battlestar/battlestar.6
+	$(INSTALL_SCORE_FILE) $(BATTLESTAR_SCOREFILE)
+diff -Naur bsd-games-2.17/canfield/canfield/Makefrag bsd-games-patch/canfield/canfield/Makefrag
+--- bsd-games-2.17/canfield/canfield/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/canfield/canfield/Makefrag	2020-04-23 20:24:04.522175270 +0700
+@@ -31,7 +31,8 @@
+ canfield_canfield_all:	canfield/canfield/canfield canfield/canfield/canfield.6
+
+ canfield_canfield_install: canfield_canfield_all
+-	$(INSTALL_SCORE_GAME) canfield/canfield/canfield $(INSTALL_PREFIX)$(GAMESDIR)/canfield
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/canfield
++	$(INSTALL_SCORE_GAME) canfield/canfield/canfield $(INSTALL_PREFIX)$(GAMESDIR)/.canfield-real
+	$(HIDE_GAME) canfield
+	$(INSTALL_MANUAL) canfield/canfield/canfield.6
+	$(INSTALL_SCORE_FILE) $(CANFIELD_SCOREFILE)
+diff -ur bsd-games-2.17.orig/canfield/cfscores/Makefrag bsd-games-2.17/canfield/cfscores/Makefrag
+--- bsd-games-2.17.orig/canfield/cfscores/Makefrag	1970-01-01 07:00:01.000000000 +0700
++++ bsd-games-2.17/canfield/cfscores/Makefrag	2020-08-06 12:20:10.592076477 +0700
+@@ -32,6 +32,7 @@
+ canfield_cfscores_all:	canfield/cfscores/cfscores
+
+ canfield_cfscores_install:	canfield_cfscores_all
+-	$(INSTALL_BINARY) canfield/cfscores/cfscores $(INSTALL_PREFIX)$(GAMESDIR)/cfscores
++	$(INSTALL_BINARY) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/cfscores
++	$(INSTALL_BINARY) canfield/cfscores/cfscores $(INSTALL_PREFIX)$(GAMESDIR)/.cfscores-real
+	$(HIDE_GAME) cfscores
+	$(INSTALL_MANUAL) canfield.6 cfscores.6
+diff -Naur bsd-games-2.17/cribbage/Makefrag bsd-games-patch/cribbage/Makefrag
+--- bsd-games-2.17/cribbage/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/cribbage/Makefrag	2020-04-23 20:24:04.534175120 +0700
+@@ -31,7 +31,8 @@
+ cribbage_all:	cribbage/cribbage cribbage/cribbage.n cribbage/cribbage.6
+
+ cribbage_install:	cribbage_all
+-	$(INSTALL_SCORE_GAME) cribbage/cribbage $(INSTALL_PREFIX)$(GAMESDIR)/cribbage
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/cribbage
++	$(INSTALL_SCORE_GAME) cribbage/cribbage $(INSTALL_PREFIX)$(GAMESDIR)/.cribbage-real
+	$(HIDE_GAME) cribbage
+	$(INSTALL_DATA) cribbage/cribbage.n $(INSTALL_PREFIX)$(CRIBBAGE_INSTRFILE)
+	$(INSTALL_SCORE_FILE) $(CRIBBAGE_SCOREFILE)
+diff -Naur bsd-games-2.17/hack/Makefrag bsd-games-patch/hack/Makefrag
+--- bsd-games-2.17/hack/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/hack/Makefrag	2020-04-23 20:24:04.590174419 +0700
+@@ -53,7 +53,8 @@
+ hack/hack.zap.d hack/rnd.d:	hack/hack.onames.h
+
+ hack_install:	hack_all
+-	$(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/hack
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/hack
++	$(INSTALL_SCORE_GAME) hack/hack $(INSTALL_PREFIX)$(GAMESDIR)/.hack-real
+	$(HIDE_GAME) hack
+	$(INSTALL_HACK_DIR) $(INSTALL_PREFIX)$(HACK_DIR)
+	set -e; for f in data help hh rumors; do $(INSTALL_DATA) hack/$$f $(INSTALL_PREFIX)$(HACK_DIR)/$$f; done
+diff -Naur bsd-games-2.17/phantasia/Makefrag bsd-games-patch/phantasia/Makefrag
+--- bsd-games-2.17/phantasia/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/phantasia/Makefrag	2020-04-23 20:24:04.650173667 +0700
+@@ -38,7 +38,8 @@
+	touch phantasia/scorefiles.stamp
+
+ phantasia_install:	phantasia_all
+-	$(INSTALL_SCORE_GAME) phantasia/phantasia $(INSTALL_PREFIX)$(GAMESDIR)/phantasia
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/phantasia
++	$(INSTALL_SCORE_GAME) phantasia/phantasia $(INSTALL_PREFIX)$(GAMESDIR)/.phantasia-real
+	$(HIDE_GAME) phantasia
+	(set -e; for f in $(phantasia_VFILES1); do \
+	    cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; \
+diff -Naur bsd-games-2.17/robots/Makefrag bsd-games-patch/robots/Makefrag
+--- bsd-games-2.17/robots/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/robots/Makefrag	2020-04-23 20:24:04.702173016 +0700
+@@ -32,7 +32,8 @@
+ robots_all:	robots/robots robots/robots.6
+
+ robots_install:	robots_all
+-	$(INSTALL_SCORE_GAME) robots/robots $(INSTALL_PREFIX)$(GAMESDIR)/robots
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/robots
++	$(INSTALL_SCORE_GAME) robots/robots $(INSTALL_PREFIX)$(GAMESDIR)/.robots-real
+	$(HIDE_GAME) robots
+	$(INSTALL_SCORE_FILE) $(ROBOTS_SCOREFILE)
+	$(INSTALL_MANUAL) robots/robots.6
+diff -Naur bsd-games-2.17/sail/Makefrag bsd-games-patch/sail/Makefrag
+--- bsd-games-2.17/sail/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/sail/Makefrag	2020-04-23 20:24:04.710172917 +0700
+@@ -31,7 +31,8 @@
+ sail_all:	sail/sail sail/sail.6
+
+ sail_install:	sail_all
+-	$(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/sail
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/sail
++	$(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/.sail-real
+	$(HIDE_GAME) sail
+	$(INSTALL_SCORE_FILE) $(SAIL_SCOREFILE)
+	$(INSTALL_SAIL_DIR) $(INSTALL_PREFIX)$(SAIL_DIR)
+diff -Naur bsd-games-2.17/snake/snake/Makefrag bsd-games-patch/snake/snake/Makefrag
+--- bsd-games-2.17/snake/snake/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/snake/snake/Makefrag	2020-04-23 20:24:04.722172766 +0700
+@@ -31,7 +31,8 @@
+ snake_snake_all:	snake/snake/snake snake/snake/snake.6
+
+ snake_snake_install:	snake_snake_all
+-	$(INSTALL_SCORE_GAME) snake/snake/snake $(INSTALL_PREFIX)$(GAMESDIR)/snake
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/snake
++	$(INSTALL_SCORE_GAME) snake/snake/snake $(INSTALL_PREFIX)$(GAMESDIR)/.snake-real
+	$(HIDE_GAME) snake
+	$(INSTALL_SCORE_FILE) $(SNAKE_SCOREFILE)
+	$(INSTALL_SCORE_FILE) $(SNAKE_RAWSCOREFILE)
+--- bsd-games-2.17.orig/snake/snscore/Makefrag	1970-01-01 07:00:01.000000000 +0700
++++ bsd-games-2.17/snake/snscore/Makefrag	2020-08-06 12:33:09.636089394 +0700
+@@ -32,6 +32,7 @@
+ snake_snscore_all:	snake/snscore/snscore
+
+ snake_snscore_install:	snake_snscore_all
+-	$(INSTALL_BINARY) snake/snscore/snscore $(INSTALL_PREFIX)$(GAMESDIR)/snscore
++	$(INSTALL_BINARY) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/snscore
++	$(INSTALL_BINARY) snake/snscore/snscore $(INSTALL_PREFIX)$(GAMESDIR)/.snscore-real
+	$(HIDE_GAME) snscore
+	$(INSTALL_MANUAL) snake.6 snscore.6
+diff -Naur bsd-games-2.17/tetris/Makefrag bsd-games-patch/tetris/Makefrag
+--- bsd-games-2.17/tetris/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/tetris/Makefrag	2020-04-23 20:24:04.734172616 +0700
+@@ -32,7 +32,8 @@
+ tetris_all:	tetris/tetris tetris/tetris.6
+
+ tetris_install:	tetris_all
+-	$(INSTALL_SCORE_GAME) tetris/tetris $(INSTALL_PREFIX)$(GAMESDIR)/tetris-bsd
++	$(INSTALL_SCORE_GAME) wrapper $(INSTALL_PREFIX)$(GAMESDIR)/tetris-bsd
++	$(INSTALL_SCORE_GAME) tetris/tetris $(INSTALL_PREFIX)$(GAMESDIR)/.tetris-bsd-real
+	$(HIDE_GAME) tetris-bsd
+	$(INSTALL_SCORE_FILE) $(TETRIS_SCOREFILE)
+	ln -f tetris/tetris.6 tetris/tetris-bsd.6
+diff -Naur bsd-games-2.17/wrapper bsd-games-patch/wrapper
+--- bsd-games-2.17/wrapper	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/wrapper	2020-04-23 20:24:37.153766719 +0700
+@@ -0,0 +1,91 @@
++#!/bin/sh
++# This file works around limitations of our read-only Store.
++
++set -e
++
++check_empty_files () {
++    # those start empty
++    for f in ${@}
++    do
++        if [[ ! -f ${f} ]]
++        then
++            touch      ${f}
++            echo "$(pwd)/${f} RESTORED"
++        fi
++    done
++}
++check_data_files () {
++    # those start with some initial data
++    for f in ${@}
++    do
++        if [[ ! -f ${f} ]]
++        then
++            cp STATIC_DATA/${game}/${f} ${f}
++            chmod u+w ${f}
++            echo "$(pwd)/${f} RESTORED"
++        fi
++    done
++}
++visit_dir () {
++    mkdir -p ${1}
++    cd ${1}
++}
++exit_with_variable_error () {
++    variables="${1}${2:+ or ${2}}"
++    echo "Guix: Please set up the ${variables} variable."
++    echo "Examples:"
++    echo "   export ${1}=/var/multiplayer"
++    echo "   export ${2:-${1}}=~/.local/share/bsd-games"
++    echo "You can place this in ~/.bashrc or a similar file for Your shell."
++    echo "For multiplayer this directory should be writable for all players."
++    exit 1
++}
++
++game=$(basename $0)
++if [[ ${game} == "hack" ]]
++then
++    if   [[ -n ${HACKDIR} ]];       then visit_dir "${HACKDIR}"
++    elif [[ -n ${BSD_GAMES_DIR} ]]; then visit_dir "${BSD_GAMES_DIR}/hack"
++    else exit_with_variable_error "HACKDIR" "BSD_GAMES_DIR"
++    fi
++else
++    if [[ -n ${BSD_GAMES_DIR} ]]; then visit_dir "${BSD_GAMES_DIR}"
++    else exit_with_variable_error "BSD_GAMES_DIR"
++    fi
++fi
++
++case ${game} in
++    ### Games with score-files
++    atc)
++        check_empty_files "atc_score";;
++    battlestar)
++        check_empty_files "battlestar.log";;
++    canfield)
++        check_empty_files "cfscores";;
++    cribbage)
++        check_empty_files "criblog";;
++    robots)
++        check_empty_files "robots_roll";;
++    snake)
++        check_empty_files "snakerawscores" "snake.log";;
++    tetris)
++        check_empty_files "tetris-bsd.scores";;
++    ### Games with saved state
++    hack)
++        check_empty_files "record" "perm"
++        check_data_files "data" "help" "hh" "rumors"
++        visit_dir "save"
++        cd ../../;;
++    phantasia)
++        visit_dir "phantasia"
++        check_empty_files "characs" "gold" "lastdead"\
++                          "mess" "motd" "scoreboard" "void"
++        check_data_files "monsters"
++        cd ../;;
++    sail)
++        visit_dir "sail"
++        check_empty_files "log" "syncfile"
++        cd ../;;
++esac
++
++exec .${game}-real ${@}
diff --git a/gnu/packages/patches/bsd-games-bad-ntohl-cast.patch b/gnu/packages/patches/bsd-games-bad-ntohl-cast.patch
new file mode 100644
index 0000000000..caadfa5054
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-bad-ntohl-cast.patch
@@ -0,0 +1,22 @@
+diff --git a/hunt/hunt/playit.c b/hunt/hunt/playit.c
+index 9acf86e..881a4e7 100644
+--- a/hunt/hunt/playit.c
++++ b/hunt/hunt/playit.c
+@@ -114,7 +114,7 @@ playit()
+		bad_con();
+		/* NOTREACHED */
+	}
+-	if (ntohl(version) != (unsigned long)HUNT_VERSION) {
++	if (ntohl(version) != (uint32_t)HUNT_VERSION) {
+		bad_ver();
+		/* NOTREACHED */
+	}
+@@ -649,7 +649,7 @@ do_message()
+		bad_con();
+		/* NOTREACHED */
+	}
+-	if (ntohl(version) != (unsigned long)HUNT_VERSION) {
++	if (ntohl(version) != (uint32_t)HUNT_VERSION) {
+		bad_ver();
+		/* NOTREACHED */
+	}
diff --git a/gnu/packages/patches/bsd-games-dont-install-empty-files.patch b/gnu/packages/patches/bsd-games-dont-install-empty-files.patch
new file mode 100644
index 0000000000..4ee0578177
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-dont-install-empty-files.patch
@@ -0,0 +1,87 @@
+Those games rely on user to provide the files to write scores in.
+Those score-files are initially empty.  Anyway, the Store is read-only.
+So we do not install those empty files.
+
+diff -Naur bsd-games-2.17/install-score.in bsd-games-patch/install-score.in
+--- bsd-games-2.17/install-score.in	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/install-score.in	2020-04-22 21:41:47.810544804 +0700
+@@ -1,45 +0,0 @@
+-# install-score.in - install a score file
+-#
+-# Copyright (c) 1997, 1998, 1999 Joseph Samuel Myers.
+-# All rights reserved.
+-#
+-# Redistribution and use in source and binary forms, with or without
+-# modification, are permitted provided that the following conditions
+-# are met:
+-# 1. Redistributions of source code must retain the above copyright
+-#    notice, this list of conditions and the following disclaimer.
+-# 2. Redistributions in binary form must reproduce the above copyright
+-#    notice, this list of conditions and the following disclaimer in the
+-#    documentation and/or other materials provided with the distribution.
+-# 3. The name of the author may not be used to endorse or promote products
+-#    derived from this software without specific prior written permission.
+-#
+-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-# SUCH DAMAGE.
+-
+-set -e
+-
+-if [ "$1" = "-p" ]; then
+-    scorefile="@install_prefix@$2"
+-    perms=@vardata_perms_priv@
+-else
+-    scorefile="@install_prefix@$1"
+-    perms=@vardata_perms@
+-fi
+-
+-mkdir -p "$(dirname "$scorefile")"
+-
+-test -e "$scorefile" || touch "$scorefile"
+-if [ @do_chown@ = y ]; then
+-    chown @vardata_owner@:@vardata_group@ "$scorefile"
+-fi
+-chmod "$perms" "$scorefile"
+diff -Naur bsd-games-2.17/phantasia/Makefrag bsd-games-patch/phantasia/Makefrag
+--- bsd-games-2.17/phantasia/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/phantasia/Makefrag	2020-04-22 21:26:00.162409464 +0700
+@@ -27,9 +27,8 @@
+ # SUCH DAMAGE.
+
+ phantasia_DIRS := $(GAMESDIR) $(MAN6DIR) $(PHANTASIA_DIR)
+-phantasia_VFILES1 := gold lastdead mess monsters motd void
+-phantasia_VFILES2 := scoreboard characs
+-phantasia_CLEANFILES := $(phantasia_VFILES1) $(phantasia_VFILES2) scorefiles.stamp
++phantasia_VFILES1 := monsters
++phantasia_CLEANFILES := $(phantasia_VFILES1) scorefiles.stamp
+
+ phantasia_all:	phantasia/phantasia phantasia/phantasia.6 phantasia/scorefiles.stamp
+
+@@ -43,9 +42,4 @@
+	(set -e; for f in $(phantasia_VFILES1); do \
+	    cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; \
+	    $(INSTALL_SCORE_FILE) $(PHANTASIA_DIR)/$$f; done)
+-	(set -e; for f in $(phantasia_VFILES2); do \
+-	    if [ ! -e $(PHANTASIA_DIR)/$$f ]; then \
+-		cp phantasia/$$f $(INSTALL_PREFIX)$(PHANTASIA_DIR)/$$f; fi; done; \
+-	    $(INSTALL_SCORE_FILE) $(PHANTASIA_DIR)/scoreboard; \
+-	    $(INSTALL_SCORE_FILE) -p $(PHANTASIA_DIR)/characs)
+	$(INSTALL_MANUAL) phantasia/phantasia.6
+diff -Naur bsd-games-2.17/sail/Makefrag bsd-games-patch/sail/Makefrag
+--- bsd-games-2.17/sail/Makefrag	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/sail/Makefrag	2020-04-22 21:26:48.701801676 +0700
+@@ -34,5 +34,4 @@
+	$(INSTALL_SCORE_GAME) sail/sail $(INSTALL_PREFIX)$(GAMESDIR)/sail
+	$(HIDE_GAME) sail
+	$(INSTALL_SCORE_FILE) $(SAIL_SCOREFILE)
+-	$(INSTALL_SAIL_DIR) $(INSTALL_PREFIX)$(SAIL_DIR)
+	$(INSTALL_MANUAL) sail/sail.6
diff --git a/gnu/packages/patches/bsd-games-gamescreen.h.patch b/gnu/packages/patches/bsd-games-gamescreen.h.patch
new file mode 100644
index 0000000000..d3c6b4ae50
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-gamescreen.h.patch
@@ -0,0 +1,14 @@
+--- a/dab/gamescreen.h	2004-01-02 23:34:51.000000000 +0530
++++ b/dab/gamescreen.h	2008-07-31 23:45:19.000000000 +0530
+@@ -70,9 +70,9 @@
+     virtual void redraw(void) = 0;			// Refresh
+     virtual int getinput(void) = 0;			// Get user input
+     virtual void bell(void) = 0;			// Beep
+-    virtual void score(size_t p, const PLAYER& p) = 0;	// Post current score
+-    virtual void games(size_t p, const PLAYER& p) = 0;	// Post games won
+-    virtual void total(size_t p, const PLAYER& p) = 0;	// Post total score
++    virtual void score(size_t, const PLAYER&) = 0;	// Post current score
++    virtual void games(size_t, const PLAYER&) = 0;	// Post games won
++    virtual void total(size_t, const PLAYER&) = 0;	// Post total score
+     virtual void ties(const PLAYER& p) = 0;		// Post tie games
+ };
diff --git a/gnu/packages/patches/bsd-games-getline.patch b/gnu/packages/patches/bsd-games-getline.patch
new file mode 100644
index 0000000000..d7c0b4034d
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-getline.patch
@@ -0,0 +1,194 @@
+diff -Naur bsd-games-2.17/boggle/boggle/bog.c bsd-games-2.17.1/boggle/boggle/bog.c
+--- bsd-games-2.17/boggle/boggle/bog.c	2004-12-07 07:34:21.000000000 -0600
++++ bsd-games-2.17.1/boggle/boggle/bog.c	2010-05-22 10:51:23.000000000 -0500
+@@ -336,7 +336,7 @@
+	}
+
+	while (1) {
+-		if (getline(buf) == NULL) {
++		if (boggle_getline(buf) == NULL) {
+			if (feof(stdin))
+				clearerr(stdin);
+			break;
+diff -Naur bsd-games-2.17/boggle/boggle/extern.h bsd-games-2.17.1/boggle/boggle/extern.h
+--- bsd-games-2.17/boggle/boggle/extern.h	2004-01-27 14:52:07.000000000 -0600
++++ bsd-games-2.17.1/boggle/boggle/extern.h	2010-05-22 10:51:23.000000000 -0500
+@@ -43,7 +43,7 @@
+ long	 dictseek(FILE *, long, int);
+ void	 findword(void);
+ void	 flushin(FILE *);
+-char	*getline(char *);
++char	*boggle_getline(char *);
+ void	 getword(char *);
+ int	 help(void);
+ int	 inputch(void);
+diff -Naur bsd-games-2.17/boggle/boggle/mach.c bsd-games-2.17.1/boggle/boggle/mach.c
+--- bsd-games-2.17/boggle/boggle/mach.c	2004-12-07 07:34:21.000000000 -0600
++++ bsd-games-2.17.1/boggle/boggle/mach.c	2010-05-22 10:51:23.000000000 -0500
+@@ -168,7 +168,7 @@
+  * - doesn't accept words longer than MAXWORDLEN or containing caps
+  */
+ char *
+-getline(q)
++boggle_getline(q)
+	char *q;
+ {
+	int ch, done;
+diff -Naur bsd-games-2.17/cribbage/cribbage.h bsd-games-2.17.1/cribbage/cribbage.h
+--- bsd-games-2.17/cribbage/cribbage.h	2004-02-08 16:29:14.000000000 -0600
++++ bsd-games-2.17.1/cribbage/cribbage.h	2010-05-22 10:51:23.000000000 -0500
+@@ -77,7 +77,7 @@
+ int	 fifteens(const CARD [], int);
+ void	 game(void);
+ void	 gamescore(void);
+-char	*getline(void);
++char	*cribbage_getline(void);
+ int	 getuchar(void);
+ int	 incard(CARD *);
+ int	 infrom(const CARD [], int, const char *);
+diff -Naur bsd-games-2.17/cribbage/crib.c bsd-games-2.17.1/cribbage/crib.c
+--- bsd-games-2.17/cribbage/crib.c	2004-01-27 14:52:07.000000000 -0600
++++ bsd-games-2.17.1/cribbage/crib.c	2010-05-22 10:51:23.000000000 -0500
+@@ -221,7 +221,7 @@
+			if (!rflag) {			/* player cuts deck */
+				msg(quiet ? "Cut for crib? " :
+			    "Cut to see whose crib it is -- low card wins? ");
+-				getline();
++				cribbage_getline();
+			}
+			i = (rand() >> 4) % CARDS;	/* random cut */
+			do {	/* comp cuts deck */
+@@ -397,7 +397,7 @@
+		if (!rflag) {	/* random cut */
+			msg(quiet ? "Cut the deck? " :
+		    "How many cards down do you wish to cut the deck? ");
+-			getline();
++			cribbage_getline();
+		}
+		i = (rand() >> 4) % (CARDS - pos);
+		turnover = deck[i + pos];
+diff -Naur bsd-games-2.17/cribbage/io.c bsd-games-2.17.1/cribbage/io.c
+--- bsd-games-2.17/cribbage/io.c	2004-12-07 07:34:21.000000000 -0600
++++ bsd-games-2.17.1/cribbage/io.c	2010-05-22 10:51:23.000000000 -0500
+@@ -245,7 +245,7 @@
+
+	retval = FALSE;
+	rnk = sut = EMPTY;
+-	if (!(line = getline()))
++	if (!(line = cribbage_getline()))
+		goto gotit;
+	p = p1 = line;
+	while (*p1 != ' ' && *p1 != '\0')
+@@ -346,7 +346,7 @@
+
+	for (sum = 0;;) {
+		msg(prompt);
+-		if (!(p = getline()) || *p == '\0') {
++		if (!(p = cribbage_getline()) || *p == '\0') {
+			msg(quiet ? "Not a number" :
+			    "That doesn't look like a number");
+			continue;
+@@ -528,12 +528,12 @@
+ }
+
+ /*
+- * getline:
++ * cribbage_getline:
+  *      Reads the next line up to '\n' or EOF.  Multiple spaces are
+  *	compressed to one space; a space is inserted before a ','
+  */
+ char *
+-getline()
++cribbage_getline()
+ {
+	char *sp;
+	int c, oy, ox;
+diff -Naur bsd-games-2.17/gomoku/bdisp.c bsd-games-2.17.1/gomoku/bdisp.c
+--- bsd-games-2.17/gomoku/bdisp.c	2003-12-16 20:47:37.000000000 -0600
++++ bsd-games-2.17.1/gomoku/bdisp.c	2010-05-22 10:51:23.000000000 -0500
+@@ -241,7 +241,7 @@
+ }
+
+ int
+-getline(buf, size)
++gomoku_getline(buf, size)
+	char *buf;
+	int size;
+ {
+diff -Naur bsd-games-2.17/gomoku/gomoku.h bsd-games-2.17.1/gomoku/gomoku.h
+--- bsd-games-2.17/gomoku/gomoku.h	2004-01-27 14:52:07.000000000 -0600
++++ bsd-games-2.17.1/gomoku/gomoku.h	2010-05-22 10:51:23.000000000 -0500
+@@ -263,7 +263,7 @@
+
+ void	bdinit(struct spotstr *);
+ void	init_overlap(void);
+-int	getline(char *, int);
++int	gomoku_getline(char *, int);
+ void	ask(const char *);
+ void	dislog(const char *);
+ void	bdump(FILE *);
+diff -Naur bsd-games-2.17/gomoku/main.c bsd-games-2.17.1/gomoku/main.c
+--- bsd-games-2.17/gomoku/main.c	2004-01-27 14:52:07.000000000 -0600
++++ bsd-games-2.17.1/gomoku/main.c	2010-05-22 10:51:23.000000000 -0500
+@@ -155,7 +155,7 @@
+		if (inputfp == NULL && test == 0) {
+			for (;;) {
+				ask("black or white? ");
+-				getline(buf, sizeof(buf));
++				gomoku_getline(buf, sizeof(buf));
+				if (buf[0] == 'b' || buf[0] == 'B') {
+					color = BLACK;
+					break;
+@@ -172,7 +172,7 @@
+		}
+	} else {
+		setbuf(stdout, 0);
+-		getline(buf, sizeof(buf));
++		gomoku_getline(buf, sizeof(buf));
+		if (strcmp(buf, "black") == 0)
+			color = BLACK;
+		else if (strcmp(buf, "white") == 0)
+@@ -244,7 +244,7 @@
+		getinput:
+			if (interactive)
+				ask("move? ");
+-			if (!getline(buf, sizeof(buf))) {
++			if (!gomoku_getline(buf, sizeof(buf))) {
+				curmove = RESIGN;
+				break;
+			}
+@@ -256,7 +256,7 @@
+					FILE *fp;
+
+					ask("save file name? ");
+-					(void)getline(buf, sizeof(buf));
++					(void)gomoku_getline(buf, sizeof(buf));
+					if ((fp = fopen(buf, "w")) == NULL) {
+						glog("cannot create save file");
+						goto getinput;
+@@ -309,14 +309,14 @@
+		if (i != RESIGN) {
+		replay:
+			ask("replay? ");
+-			if (getline(buf, sizeof(buf)) &&
++			if (gomoku_getline(buf, sizeof(buf)) &&
+			    (buf[0] == 'y' || buf[0] == 'Y'))
+				goto again;
+			if (strcmp(buf, "save") == 0) {
+				FILE *fp;
+
+				ask("save file name? ");
+-				(void)getline(buf, sizeof(buf));
++				(void)gomoku_getline(buf, sizeof(buf));
+				if ((fp = fopen(buf, "w")) == NULL) {
+					glog("cannot create save file");
+					goto replay;
+@@ -367,7 +367,7 @@
+		quit();
+ top:
+	ask("cmd? ");
+-	if (!getline(fmtbuf, sizeof(fmtbuf)))
++	if (!gomoku_getline(fmtbuf, sizeof(fmtbuf)))
+		quit();
+	switch (*fmtbuf) {
+	case '\0':
diff --git a/gnu/packages/patches/bsd-games-null-check.patch b/gnu/packages/patches/bsd-games-null-check.patch
new file mode 100644
index 0000000000..ba977c95bf
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-null-check.patch
@@ -0,0 +1,24 @@
+diff --git a/hunt/hunt/hunt.c b/hunt/hunt/hunt.c
+index 11f4c44..28321bc 100644
+--- a/hunt/hunt/hunt.c
++++ b/hunt/hunt/hunt.c
+@@ -394,7 +394,8 @@ broadcast_vec(s, vector)
+
+	vec_cnt = 0;
+	for (ip = ifp; ip; ip = ip->ifa_next)
+-		if ((ip->ifa_addr->sa_family == AF_INET) &&
++		if (ip->ifa_addr &&
++		    (ip->ifa_addr->sa_family == AF_INET) &&
+		    (ip->ifa_flags & IFF_BROADCAST))
+			vec_cnt++;
+
+@@ -405,7 +406,8 @@ broadcast_vec(s, vector)
+
+	vec_cnt = 0;
+	for (ip = ifp; ip; ip = ip->ifa_next)
+-		if ((ip->ifa_addr->sa_family == AF_INET) &&
++		if (ip->ifa_addr &&
++		    (ip->ifa_addr->sa_family == AF_INET) &&
+		    (ip->ifa_flags & IFF_BROADCAST))
+			memcpy(&(*vector)[vec_cnt++], ip->ifa_broadaddr,
+			       sizeof(struct sockaddr_in));
diff --git a/gnu/packages/patches/bsd-games-number.c-and-test.patch b/gnu/packages/patches/bsd-games-number.c-and-test.patch
new file mode 100644
index 0000000000..1cf5ba2822
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-number.c-and-test.patch
@@ -0,0 +1,183 @@
+Arch's patch, and a fix for the "number" game's test.
+--- bsdgames-2.17.orig/number/number.c
++++ bsdgames-2.17/number/number.c
+@@ -78,9 +78,9 @@
+
+ void	convert(char *);
+ int	main(int, char *[]);
+-int	number(const char *, int);
+-void	pfract(int);
+-int	unit(int, const char *);
++int	number(const char *, int, int *);
++void	pfract(int, int);
++int	unit(int, const char *, int *);
+ void	usage(void) __attribute__((__noreturn__));
+
+ int lflag;
+@@ -131,7 +131,7 @@
+ convert(line)
+	char *line;
+ {
+-	int flen, len, rval;
++	int flen, len, rval, singular;
+	char *p, *fraction;
+
+	flen = 0;
+@@ -174,7 +174,7 @@
+		--len;
+	}
+
+-	rval = len > 0 ? unit(len, line) : 0;
++	rval = len > 0 ? unit(len, line, &singular) : 0;
+	if (fraction != NULL && flen != 0)
+		for (p = fraction; *p != '\0'; ++p)
+			if (*p != '0') {
+@@ -182,10 +182,10 @@
+					(void)printf("%sand%s",
+					    lflag ? " " : "",
+					    lflag ? " " : "\n");
+-				if (unit(flen, fraction)) {
++				if (unit(flen, fraction, &singular)) {
+					if (lflag)
+						(void)printf(" ");
+-					pfract(flen);
++					pfract(flen, singular);
+					rval = 1;
+				}
+				break;
+@@ -197,9 +197,10 @@
+ }
+
+ int
+-unit(len, p)
++unit(len, p, singular)
+	int len;
+	const char *p;
++	int *singular;
+ {
+	int off, rval;
+
+@@ -208,7 +209,7 @@
+		if (len % 3) {
+			off = len % 3;
+			len -= off;
+-			if (number(p, off)) {
++			if (number(p, off, singular)) {
+				rval = 1;
+				(void)printf(" %s%s",
+				    name3[len / 3], lflag ? " " : ".\n");
+@@ -217,14 +218,16 @@
+		}
+		for (; len > 3; p += 3) {
+			len -= 3;
+-			if (number(p, 3)) {
++			if (number(p, 3, singular)) {
+				rval = 1;
+				(void)printf(" %s%s",
+				    name3[len / 3], lflag ? " " : ".\n");
+			}
+		}
+	}
+-	if (number(p, len)) {
++	if (number(p, len, singular)) {
++		if (rval)
++			*singular = 0;
+		if (!lflag)
+			(void)printf(".\n");
+		rval = 1;
+@@ -233,17 +236,20 @@
+ }
+
+ int
+-number(p, len)
++number(p, len, singular)
+	const char *p;
+	int len;
++	int *singular;
+ {
+	int val, rval;
+
+	rval = 0;
++	*singular = 1;
+	switch (len) {
+	case 3:
+		if (*p != '0') {
+			rval = 1;
++			*singular = 0;
+			(void)printf("%s hundred", name1[*p - '0']);
+		}
+		++p;
+@@ -262,33 +268,42 @@
+			}
+			rval = 1;
+		}
++		if (val != 1)
++			*singular = 0;
+		break;
+	case 1:
+		if (*p != '0') {
+			rval = 1;
+			(void)printf("%s", name1[*p - '0']);
+		}
++		if (*p != '1')
++			*singular = 0;
+	}
+	return (rval);
+ }
+
+ void
+-pfract(len)
++pfract(len, singular)
+	int len;
++	int singular;
+ {
+	static const char *const pref[] = { "", "ten-", "hundred-" };
+
+	switch(len) {
+	case 1:
+-		(void)printf("tenths.\n");
++		(void)printf("tenth");
+		break;
+	case 2:
+-		(void)printf("hundredths.\n");
++		(void)printf("hundredth");
+		break;
+	default:
+-		(void)printf("%s%sths.\n", pref[len % 3], name3[len / 3]);
++		(void)printf("%s%sth", pref[len % 3], name3[len / 3]);
+		break;
+	}
++	if (!singular) {
++		printf("s");
++	}
++	printf(".\n");
+ }
+
+ void
+diff -Naur bsd-games-2.17/tests/number.-0.1 bsd-games-patch/tests/number.-0.1
+--- bsd-games-2.17/tests/number.-0.1	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/tests/number.-0.1	2020-04-17 15:14:27.831098084 +0700
+@@ -1,3 +1,3 @@
+ minus
+ one.
+-tenths.
++tenth.
+diff -Naur bsd-games-2.17/tests/number.-0.2 bsd-games-patch/tests/number.-0.2
+--- bsd-games-2.17/tests/number.-0.2	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/tests/number.-0.2	2020-04-17 15:20:48.162336279 +0700
+@@ -0,0 +1,3 @@
++minus
++two.
++tenths.
+diff -Naur bsd-games-2.17/tests/number.test bsd-games-patch/tests/number.test
+--- bsd-games-2.17/tests/number.test	1970-01-01 07:00:00.000000000 +0700
++++ bsd-games-patch/tests/number.test	2020-04-17 15:20:22.774654155 +0700
+@@ -36,6 +36,8 @@
+ testno 1
+ number/number -- -0.1 >test.out 2>&1 || failtest
+ compare test.out tests/number.-0.1
++number/number -- -0.2 >test.out 2>&1 || failtest
++compare test.out tests/number.-0.2
+ rm -f test.out
+
+ testno 2
diff --git a/gnu/packages/patches/bsd-games-prevent-name-collisions.patch b/gnu/packages/patches/bsd-games-prevent-name-collisions.patch
new file mode 100644
index 0000000000..855ce59131
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-prevent-name-collisions.patch
@@ -0,0 +1,13 @@
+There is already a "fish" shell.
+diff -ur bsd-games-2.17.orig/fish/Makefrag bsd-games-2.17/fish/Makefrag
+--- bsd-games-2.17.orig/fish/Makefrag	1970-01-01 07:00:01.000000000 +0700
++++ bsd-games-2.17/fish/Makefrag	2020-08-06 19:18:43.204492847 +0700
+@@ -31,7 +31,7 @@
+ fish_all:	fish/fish fish/fish.instr fish/fish.6
+
+ fish_install:	fish_all
+-	$(INSTALL_BINARY) fish/fish $(INSTALL_PREFIX)$(GAMESDIR)/fish
++	$(INSTALL_BINARY) fish/fish $(INSTALL_PREFIX)$(GAMESDIR)/fish-game
+	$(HIDE_GAME) fish
+	$(INSTALL_DATA) fish/fish.instr $(INSTALL_PREFIX)$(FISH_INSTRFILE)
+	$(INSTALL_MANUAL) fish/fish.6
diff --git a/gnu/packages/patches/bsd-games-stdio.h.patch b/gnu/packages/patches/bsd-games-stdio.h.patch
new file mode 100644
index 0000000000..1c3a402042
--- /dev/null
+++ b/gnu/packages/patches/bsd-games-stdio.h.patch
@@ -0,0 +1,14 @@
+diff -ru a/include/stdio.h b/include/stdio.h
+--- a/include/stdio.h	2000-08-04 10:24:39.000000000 +1000
++++ b/include/stdio.h	2005-06-18 14:26:35.000000000 +1000
+@@ -34,6 +34,10 @@
+ #include <bsd-games.h>
+ #include_next <stdio.h>
+
++__BEGIN_DECLS
++
+ #ifndef HAVE_fgetln
+ extern char *fgetln(FILE *stream, size_t *len);
+ #endif
++
++__END_DECLS
diff --git a/gnu/packages/patches/eigen-remove-openmp-error-counting.patch b/gnu/packages/patches/eigen-remove-openmp-error-counting.patch
new file mode 100644
index 0000000000..556474e8b3
--- /dev/null
+++ b/gnu/packages/patches/eigen-remove-openmp-error-counting.patch
@@ -0,0 +1,64 @@
+From ef3cc72cb65e2d500459c178c63e349bacfa834f Mon Sep 17 00:00:00 2001
+From: Luke Peterson <hazelnusse@gmail.com>
+Date: Thu, 8 Oct 2020 12:16:53 -0700
+Subject: [PATCH] Remove error counting in OpenMP parallelize_gemm
+
+This resolves a compilation error associated with
+Eigen::eigen_assert_exception. It also eliminates the counting of
+exceptions that may occur in the OpenMP parallel section. If an
+unhandled exception occurs in this section, the behavior is non-conforming
+according to the OpenMP specification.
+---
+ Eigen/src/Core/products/Parallelizer.h | 14 +++++---------
+ test/CMakeLists.txt                    |  2 +-
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h
+index 67b2442b5..a3cc05b77 100644
+--- a/Eigen/src/Core/products/Parallelizer.h
++++ b/Eigen/src/Core/products/Parallelizer.h
+@@ -132,8 +132,7 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth,
+ 
+   ei_declare_aligned_stack_constructed_variable(GemmParallelInfo<Index>,info,threads,0);
+ 
+-  int errorCount = 0;
+-  #pragma omp parallel num_threads(threads) reduction(+: errorCount)
++  #pragma omp parallel num_threads(threads)
+   {
+     Index i = omp_get_thread_num();
+     // Note that the actual number of threads might be lower than the number of request ones.
+@@ -152,14 +151,11 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth,
+     info[i].lhs_start = r0;
+     info[i].lhs_length = actualBlockRows;
+ 
+-    EIGEN_TRY {
+-      if(transpose) func(c0, actualBlockCols, 0, rows, info);
+-      else          func(0, rows, c0, actualBlockCols, info);
+-    } EIGEN_CATCH(...) {
+-      ++errorCount;
+-    }
++    if(transpose)
++      func(c0, actualBlockCols, 0, rows, info);
++    else
++      func(0, rows, c0, actualBlockCols, info);
+   }
+-  if (errorCount) EIGEN_THROW_X(Eigen::eigen_assert_exception());
+ #endif
+ }
+ 
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 0747aa6cb..b02577780 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -163,7 +163,7 @@ ei_add_test(constructor)
+ ei_add_test(linearstructure)
+ ei_add_test(integer_types)
+ ei_add_test(unalignedcount)
+-if(NOT EIGEN_TEST_NO_EXCEPTIONS)
++if(NOT EIGEN_TEST_NO_EXCEPTIONS AND NOT EIGEN_TEST_OPENMP)
+   ei_add_test(exceptions)
+ endif()
+ ei_add_test(redux)
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/farstream-make.patch b/gnu/packages/patches/farstream-make.patch
new file mode 100644
index 0000000000..6c1e9e7119
--- /dev/null
+++ b/gnu/packages/patches/farstream-make.patch
@@ -0,0 +1,39 @@
+This patch comes from upstream:
+https://gitlab.freedesktop.org/farstream/farstream/-/merge_requests/4
+
+From 54987d445ea714b467d901b7daf8c09ed0644189 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@freedesktop.org>
+Date: Thu, 12 Mar 2020 14:07:23 +0100
+Subject: [PATCH] build: Adapt to backwards incompatible change in GNU Make 4.3
+
+GNU Make 4.3 has a backwards incompatible change affecting the use of
+number signs or hashes (ie., #) inside function invocations. See:
+https://lists.gnu.org/archive/html/info-gnu/2020-01/msg00004.html
+
+In this case, it would expand the '\#' in the '\n\#include \"$(h)\"'
+argument to the foreach call to '\#', not '#'. This would lead to
+spurious backslashes in front of the '#include' directives in the
+generated fs-enumtypes.c file.
+
+Spotted by Ernestas Kulik.
+---
+ common-modified/gst-glib-gen.mak | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/common-modified/gst-glib-gen.mak b/common-modified/gst-glib-gen.mak
+index 14f1ba37..2247a41c 100644
+--- a/common-modified/gst-glib-gen.mak
++++ b/common-modified/gst-glib-gen.mak
+@@ -6,7 +6,8 @@
+ #glib_gen_prefix=gst_color_balance
+ #glib_gen_basename=colorbalance
+ 
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++hash:=\#
++enum_headers=$(foreach h,$(glib_enum_headers),\n$(hash)include \"$(h)\")
+ 
+ # these are all the rules generating the relevant files
+ $(glib_gen_basename)-enumtypes.h: $(glib_enum_headers)
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch b/gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch
new file mode 100644
index 0000000000..cb3313197c
--- /dev/null
+++ b/gnu/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch
@@ -0,0 +1,11 @@
+--- a/gajim/common/configpaths.py	2020-11-19 12:12:02.004414323 +0100
++++ a/gajim/common/configpaths.py	2020-11-19 15:34:52.211476895 +0100
+@@ -47,7 +47,7 @@
+         return [Path(_paths['PLUGINS_BASE']),
+                 Path('/app/plugins')]
+     return [Path(_paths['PLUGINS_BASE']),
+-            Path(_paths['PLUGINS_USER'])]
++            Path(_paths['PLUGINS_USER'])] + ([Path(os.getenv('GAJIM_PLUGIN_PATH'))] if os.getenv('GAJIM_PLUGIN_PATH') and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() else [])
+ 
+ 
+ def get_paths(type_: PathType) -> Generator[str, None, None]:
diff --git a/gnu/packages/patches/gcc-6-fix-buffer-size.patch b/gnu/packages/patches/gcc-6-fix-buffer-size.patch
new file mode 100644
index 0000000000..5fcd769d45
--- /dev/null
+++ b/gnu/packages/patches/gcc-6-fix-buffer-size.patch
@@ -0,0 +1,15 @@
+Fixes a possible buffer overflow.  (There are others)
+Author: Danny Milosavljevic <dannym@scratchpost.org>
+Date: 2020-11-16
+
+--- a/gcc/gimplify.c.orig	2020-10-29 08:45:11.532479774 +0100
++++ b/gcc/gimplify.c	2020-10-29 08:45:49.584637018 +0100
+@@ -5229,7 +5229,7 @@
+ 	     flexibility, split it into separate input and output
+  	     operands.  */
+ 	  tree input;
+-	  char buf[10];
++	  char buf[12];
+ 
+ 	  /* Turn the in/out constraint into an output constraint.  */
+ 	  char *p = xstrdup (constraint);
diff --git a/gnu/packages/patches/gcc-6-fix-isl-includes.patch b/gnu/packages/patches/gcc-6-fix-isl-includes.patch
new file mode 100644
index 0000000000..ab3c5634ea
--- /dev/null
+++ b/gnu/packages/patches/gcc-6-fix-isl-includes.patch
@@ -0,0 +1,16 @@
+See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86724
+Author: Rainer Jung
+Date: 2018-07-29
+
+isl 0.20 stopped including other unused header files in their header files.
+Therefore,now it's necessary to include the stuff ourselves.
+--- .../gcc/graphite.h 2018-01-03 11:03:58.000000000 +0000
++++ .../gcc/graphite.h 2018-07-29 17:42:55.836121000 +0000
+@@ -37,6 +37,8 @@
+ #include <isl/schedule.h>
+ #include <isl/ast_build.h>
+ #include <isl/schedule_node.h>
++#include <isl/id.h>
++#include <isl/space.h>
+
+ typedef struct poly_dr *poly_dr_p;
diff --git a/gnu/packages/patches/glib-appinfo-watch.patch b/gnu/packages/patches/glib-appinfo-watch.patch
new file mode 100644
index 0000000000..638a5e0949
--- /dev/null
+++ b/gnu/packages/patches/glib-appinfo-watch.patch
@@ -0,0 +1,92 @@
+This patch lets GLib's GDesktopAppInfo API watch and notice changes
+to the Guix user and system profiles.  That way, the list of available
+applications shown by the desktop environment is immediately updated
+when the user runs "guix install", "guix remove", or "guix system
+reconfigure" (see <https://issues.guix.gnu.org/35594>).
+
+It does so by monitoring /var/guix/profiles (for changes to the system
+profile) and /var/guix/profiles/per-user/USER (for changes to the user
+profile) and crawling their share/applications sub-directory when
+changes happen.
+
+diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
+index f1e2fdd..095c110 100644
+--- a/gio/gdesktopappinfo.c
++++ b/gio/gdesktopappinfo.c
+@@ -148,6 +148,7 @@ typedef struct
+   gchar                      *alternatively_watching;
+   gboolean                    is_config;
+   gboolean                    is_setup;
++  gchar                      *guix_profile_watch_dir;
+   GFileMonitor               *monitor;
+   GHashTable                 *app_names;
+   GHashTable                 *mime_tweaks;
+@@ -180,6 +181,7 @@ desktop_file_dir_unref (DesktopFileDir *dir)
+     {
+       desktop_file_dir_reset (dir);
+       g_free (dir->path);
++      g_free (dir->guix_profile_watch_dir);
+       g_free (dir);
+     }
+ }
+@@ -204,6 +206,13 @@ desktop_file_dir_get_alternative_dir (DesktopFileDir *dir)
+ {
+   gchar *parent;
+ 
++  /* If DIR is a profile, watch the specified directory--e.g.,
++   * /var/guix/profiles/per-user/$USER/ for the user profile.  Do not watch
++   * ~/.guix-profile or /run/current-system/profile because GFileMonitor does
++   * not pass IN_DONT_FOLLOW and thus cannot notice any change.  */
++  if (dir->guix_profile_watch_dir != NULL)
++    return g_strdup (dir->guix_profile_watch_dir);
++
+   /* If the directory itself exists then we need no alternative. */
+   if (g_access (dir->path, R_OK | X_OK) == 0)
+     return NULL;
+@@ -249,11 +258,11 @@ desktop_file_dir_changed (GFileMonitor      *monitor,
+    *
+    * If this is a notification for a parent directory (because the
+    * desktop directory didn't exist) then we shouldn't fire the signal
+-   * unless something actually changed.
++   * unless something actually changed or it's in /var/guix/profiles.
+    */
+   g_mutex_lock (&desktop_file_dir_lock);
+ 
+-  if (dir->alternatively_watching)
++  if (dir->alternatively_watching && dir->guix_profile_watch_dir == NULL)
+     {
+       gchar *alternative_dir;
+ 
+@@ -1555,6 +1564,32 @@ desktop_file_dirs_lock (void)
+       for (i = 0; dirs[i]; i++)
+         g_ptr_array_add (desktop_file_dirs, desktop_file_dir_new (dirs[i]));
+ 
++      {
++        /* Monitor the system and user profile under /var/guix/profiles and
++         * treat modifications to them as if they were modifications to their
++         * /share sub-directory.  */
++        const gchar *user;
++        DesktopFileDir *system_profile_dir, *user_profile_dir;
++
++        system_profile_dir =
++          desktop_file_dir_new ("/var/guix/profiles/system/profile/share");
++        system_profile_dir->guix_profile_watch_dir = g_strdup ("/var/guix/profiles");
++        g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (system_profile_dir));
++
++        user = g_get_user_name ();
++        if (user != NULL)
++          {
++            gchar *profile_dir, *user_data_dir;
++
++            profile_dir = g_build_filename ("/var/guix/profiles/per-user", user, NULL);
++            user_data_dir = g_build_filename (profile_dir, "guix-profile", "share", NULL);
++            user_profile_dir = desktop_file_dir_new (user_data_dir);
++            user_profile_dir->guix_profile_watch_dir = profile_dir;
++            g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (user_profile_dir));
++            g_free (user_data_dir);
++          }
++      }
++
+       /* The list of directories will never change after this, unless
+        * g_get_user_config_dir() changes due to %G_TEST_OPTION_ISOLATE_DIRS. */
+       desktop_file_dirs_config_dir = user_config_dir;
diff --git a/gnu/packages/patches/gnash-fix-giflib-version.patch b/gnu/packages/patches/gnash-fix-giflib-version.patch
new file mode 100644
index 0000000000..44816d2a14
--- /dev/null
+++ b/gnu/packages/patches/gnash-fix-giflib-version.patch
@@ -0,0 +1,17 @@
+Description: Change GIFLIB_MINOR to allow matching with v5.2+
+Source: https://savannah.gnu.org/patch/index.php?9873
+Author: marius851000
+
+diff --git a/libbase/GnashImageGif.cpp b/libbase/GnashImageGif.cpp
+index 2ae5ddb..b87b1e7 100644
+--- a/libbase/GnashImageGif.cpp
++++ b/libbase/GnashImageGif.cpp
+@@ -120,7 +120,7 @@ GifInput::GifInput(std::shared_ptr<IOChannel> in)
+ GifInput::~GifInput()
+ {
+     // Clean up allocated data.
+-#if GIFLIB_MAJOR==5 && GIFLIB_MINOR==1
++#if GIFLIB_MAJOR==5 && GIFLIB_MINOR!=0
+ 	DGifCloseFile(_gif, 0);
+ #else
+ 	DGifCloseFile(_gif);
diff --git a/gnu/packages/patches/grim-revert-output-rotation.patch b/gnu/packages/patches/grim-revert-output-rotation.patch
deleted file mode 100644
index cbf0a86502..0000000000
--- a/gnu/packages/patches/grim-revert-output-rotation.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 80b17ceaff90b81b28b44004d2aca4cc40f365be Mon Sep 17 00:00:00 2001
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Fri, 2 Oct 2020 00:07:30 +0200
-Subject: [PATCH] Revert "Correct interpretation of output rotation"
-
-This reverts commit 8f9d60885ce2f9bd66cd93d3378dcb6866d4588a.
-It is incompatible with the current Sway version (1.4) in Guix.
----
- render.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/render.c b/render.c
-index 8f31e7e..a6b0b12 100644
---- a/render.c
-+++ b/render.c
-@@ -104,7 +104,7 @@ cairo_surface_t *render(struct grim_state *state, struct grim_box *geometry,
- 		cairo_matrix_translate(&matrix,
- 			(double)output->geometry.width / 2,
- 			(double)output->geometry.height / 2);
--		cairo_matrix_rotate(&matrix, get_output_rotation(output->transform));
-+		cairo_matrix_rotate(&matrix, -get_output_rotation(output->transform));
- 		cairo_matrix_scale(&matrix,
- 			(double)raw_output_width / output_width * output_flipped_x,
- 			(double)raw_output_height / output_height * output_flipped_y);
--- 
-2.28.0
-
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index c90950d5ef..9a6e40df4b 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -25,7 +25,7 @@ index 8be2362..48716f2 100755
 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
 -gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
--echo -n 5fd27d67689fe60803022035e556146d2dbce5e53d21c14d026fc31dd2e45be9 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 -
 -echo Extracting Firefox tarball
 -tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -37,7 +37,7 @@ index 8be2362..48716f2 100755
 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
 +# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-+# echo -n 5fd27d67689fe60803022035e556146d2dbce5e53d21c14d026fc31dd2e45be9 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 +# 
 +# echo Extracting Firefox tarball
 +# tar -xf firefox-${FFVERSION}esr.source.tar.xz
diff --git a/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch b/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
new file mode 100644
index 0000000000..9dc112a344
--- /dev/null
+++ b/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
@@ -0,0 +1,1831 @@
+From d51cb8c0f7966ac0b870e90e421cc8a796d98abf Mon Sep 17 00:00:00 2001
+From: Simon South <simon@simonsouth.net>
+Date: Tue, 9 Jun 2020 13:48:42 -0400
+Subject: [PATCH] Extend AArch64 support
+
+This adds to IcedTea 6 a patch that extends the support for AArch64 in
+its version of HotSpot, allowing the portable Zero virtual machine to
+be built for that platform.
+
+The patch added is a backport of the one prepared for JDK 9 by the
+OpenJDK AArch64 Porting Project, available (as of 11 June 2020) for
+download from https://openjdk.java.net/jeps/237.
+---
+ Makefile.am                                   |    3 +-
+ Makefile.in                                   |   12 +-
+ .../hs23/aarch64-extended-support.patch       | 1766 +++++++++++++++++
+ 3 files changed, 1775 insertions(+), 6 deletions(-)
+ create mode 100644 patches/hotspot/hs23/aarch64-extended-support.patch
+
+diff --git a/Makefile.am b/Makefile.am
+index 97dac85..f5c917b 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -621,7 +621,8 @@ ICEDTEA_PATCHES = \
+ 	patches/openjdk/6260348-pr3068.patch \
+ 	patches/openjdk/6961123-pr2975.patch \
+ 	patches/pr2800-missing_resources.patch \
+-	patches/pr3213-conditional_arm32jit.patch
++	patches/pr3213-conditional_arm32jit.patch \
++	patches/hotspot/hs23/aarch64-extended-support.patch
+ 
+ if WITH_RHINO
+ ICEDTEA_PATCHES += \
+diff --git a/Makefile.in b/Makefile.in
+index aced7c2..e3545ee 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1049,11 +1049,13 @@ ICEDTEA_PATCHES = $(DROP_PATCHES) $(SECURITY_PATCHES) \
+ 	patches/openjdk/6260348-pr3068.patch \
+ 	patches/openjdk/6961123-pr2975.patch \
+ 	patches/pr2800-missing_resources.patch \
+-	patches/pr3213-conditional_arm32jit.patch $(am__append_21) \
+-	$(am__append_22) $(am__append_23) $(am__append_24) \
+-	$(am__append_25) $(am__append_26) $(am__append_27) \
+-	$(am__append_28) $(am__append_29) $(am__append_30) \
+-	$(am__append_31) $(am__append_32) $(DISTRIBUTION_PATCHES)
++	patches/pr3213-conditional_arm32jit.patch \
++	patches/hotspot/hs23/aarch64-extended-support.patch \
++	$(am__append_21) $(am__append_22) $(am__append_23) \
++	$(am__append_24) $(am__append_25) $(am__append_26) \
++	$(am__append_27) $(am__append_28) $(am__append_29) \
++	$(am__append_30) $(am__append_31) $(am__append_32) \
++	$(DISTRIBUTION_PATCHES)
+ @ENABLE_NSS_FALSE@NSS_PATCHES = patches/nss-not-enabled-config.patch
+ @ENABLE_NSS_TRUE@NSS_PATCHES = patches/nss-config.patch
+ 
+diff --git a/patches/hotspot/hs23/aarch64-extended-support.patch b/patches/hotspot/hs23/aarch64-extended-support.patch
+new file mode 100644
+index 0000000..7817f4d
+--- /dev/null
++++ b/patches/hotspot/hs23/aarch64-extended-support.patch
+@@ -0,0 +1,1766 @@
++diff --git openjdk.orig/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
++index 5771fdd..b23cc17 100644
++--- openjdk.orig/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
+++++ openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
++@@ -304,6 +304,9 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
++ #ifdef amd64
++ #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
++ #endif
+++#ifdef aarch64
+++#define NPRGREG 32
+++#endif
++ #if defined(sparc) || defined(sparcv9)
++ #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG
++ #endif
++@@ -406,6 +409,12 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
++   regs[REG_INDEX(R_O7)]  = gregs.u_regs[14];
++ #endif /* sparc */
++ 
+++#if defined(aarch64)
+++
+++#define REG_INDEX(reg) sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_##reg
+++
+++#endif /* aarch64 */
+++
++ 
++   (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT);
++   return array;
++diff --git openjdk.orig/hotspot/agent/src/os/linux/libproc.h openjdk/hotspot/agent/src/os/linux/libproc.h
++index e4d77f7..c02b841 100644
++--- openjdk.orig/hotspot/agent/src/os/linux/libproc.h
+++++ openjdk/hotspot/agent/src/os/linux/libproc.h
++@@ -54,6 +54,10 @@ struct pt_regs {
++ 
++ #endif //sparc or sparcv9
++ 
+++#if defined(aarch64)
+++#include "asm/ptrace.h"
+++#endif
+++
++ /************************************************************************************
++ 
++ 0. This is very minimal subset of Solaris libproc just enough for current application.
++@@ -97,6 +101,9 @@ unsigned long   regs[IA64_REG_COUNT];     /* integer and fp regs */
++ #if defined(sparc)  || defined(sparcv9)
++ #define user_regs_struct  pt_regs
++ #endif
+++#if defined(aarch64)
+++#define user_regs_struct user_pt_regs
+++#endif
++ 
++ // This C bool type must be int for compatibility with Linux calls and
++ // it would be a mistake to equivalence it to C++ bool on many platforms
++diff --git openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make
++index 44f21f8..4e8d00b 100644
++--- openjdk.orig/hotspot/make/defs.make
+++++ openjdk/hotspot/make/defs.make
++@@ -232,7 +232,7 @@ ifneq ($(OSNAME),windows)
++ 
++   # Use uname output for SRCARCH, but deal with platform differences. If ARCH
++   # is not explicitly listed below, it is treated as x86. 
++-  SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc zero,$(ARCH)))
+++  SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc aarch64 zero,$(ARCH)))
++   ARCH/       = x86
++   ARCH/sparc  = sparc
++   ARCH/sparc64= sparc
++@@ -242,6 +242,7 @@ ifneq ($(OSNAME),windows)
++   ARCH/ppc64  = ppc
++   ARCH/ppc    = ppc
++   ARCH/arm    = arm
+++  ARCH/aarch64= aarch64
++   ARCH/zero   = zero
++ 
++   # BUILDARCH is usually the same as SRCARCH, except for sparcv9
++@@ -267,11 +268,12 @@ ifneq ($(OSNAME),windows)
++   LIBARCH/sparcv9 = sparcv9
++   LIBARCH/ia64    = ia64
++   LIBARCH/ppc64   = ppc
+++  LIBARCH/aarch64 = aarch64
++   LIBARCH/ppc     = ppc
++   LIBARCH/arm     = arm
++   LIBARCH/zero    = $(ZERO_LIBARCH)
++ 
++-  LP64_ARCH = sparcv9 amd64 ia64 zero
+++  LP64_ARCH = sparcv9 amd64 ia64 aarch64 zero
++ endif
++ 
++ # Required make macro settings for all platforms
++diff --git openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make
++index 7c3d4f9..3bc7e8a 100644
++--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make
+++++ openjdk/hotspot/make/linux/makefiles/buildtree.make
++@@ -385,6 +385,7 @@ DATA_MODE/sparc   = 32
++ DATA_MODE/sparcv9 = 64
++ DATA_MODE/amd64   = 64
++ DATA_MODE/ia64    = 64
+++DATA_MODE/aarch64 = 64
++ DATA_MODE/zero    = $(ARCH_DATA_MODEL)
++ 
++ JAVA_FLAG/32 = -d32
++diff --git openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make
++index 7bb3149..39ffda4 100644
++--- openjdk.orig/hotspot/make/linux/makefiles/defs.make
+++++ openjdk/hotspot/make/linux/makefiles/defs.make
++@@ -118,6 +118,15 @@ ifeq ($(ARCH), ppc)
++   HS_ARCH          = ppc
++ endif
++ 
+++# AARCH64
+++ifeq ($(ARCH), aarch64)
+++  ARCH_DATA_MODEL  = 64
+++  MAKE_ARGS        += LP64=1
+++  PLATFORM         = linux-aarch64
+++  VM_PLATFORM      = linux_aarch64
+++  HS_ARCH          = aarch64
+++endif
+++
++ # determine if HotSpot is being built in JDK6 or earlier version
++ JDK6_OR_EARLIER=0
++ ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
++diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
++index 897e3a6..44f1673 100644
++--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
+++++ openjdk/hotspot/make/linux/makefiles/gcc.make
++@@ -104,6 +104,7 @@ endif
++ ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
++ ARCHFLAG/i486    = -m32 -march=i586
++ ARCHFLAG/amd64   = -m64
+++ARCHFLAG/aarch64 =
++ ARCHFLAG/ia64    =
++ ARCHFLAG/sparc   = -m32 -mcpu=v9
++ ARCHFLAG/sparcv9 = -m64 -mcpu=v9
++diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
++index c1b0e5c..9f7cda0 100644
++--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
+++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
++@@ -296,6 +296,8 @@ static char cpu_arch[] = "sparcv9";
++ #  else
++ static char cpu_arch[] = "sparc";
++ #  endif
+++#elif defined(AARCH64)
+++static char cpu_arch[] = "aarch64";
++ #else
++ #error Add appropriate cpu_arch setting
++ #endif
++@@ -1442,7 +1444,7 @@ void os::Linux::clock_init() {
++ #ifndef SYS_clock_getres
++ 
++ #if defined(IA32) || defined(AMD64)
++-#define SYS_clock_getres IA32_ONLY(266)  AMD64_ONLY(229)
+++#define SYS_clock_getres IA32_ONLY(266)  AMD64_ONLY(229) AARCH64_ONLY(114)
++ #define sys_clock_getres(x,y)  ::syscall(SYS_clock_getres, x, y)
++ #else
++ #warning "SYS_clock_getres not defined for this platform, disabling fast_thread_cpu_time"
++@@ -1930,7 +1932,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
++     static  Elf32_Half running_arch_code=EM_AARCH64;
++   #else
++     #error Method os::dll_load requires that one of following is defined:\
++-         IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH
+++      IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH, AARCH64
++   #endif
++ 
++   // Identify compatability class for VM's architecture and library's architecture
++@@ -3056,7 +3058,7 @@ void os::large_page_init() {
++ 
++ #ifndef ZERO
++     _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M)
++-                       ARM_ONLY(2 * M) PPC_ONLY(4 * M);
+++                       ARM_ONLY(2 * M) PPC_ONLY(4 * M) AARCH64_ONLY(2 * M);
++ #endif // ZERO
++ 
++     FILE *fp = fopen("/proc/meminfo", "r");
++@@ -5378,11 +5380,11 @@ void Parker::unpark() {
++ extern char** environ;
++ 
++ #ifndef __NR_fork
++-#define __NR_fork IA32_ONLY(2) IA64_ONLY(not defined) AMD64_ONLY(57)
+++#define __NR_fork IA32_ONLY(2) IA64_ONLY(not defined) AMD64_ONLY(57) AARCH64_ONLY(1079)
++ #endif
++ 
++ #ifndef __NR_execve
++-#define __NR_execve IA32_ONLY(11) IA64_ONLY(1033) AMD64_ONLY(59)
+++#define __NR_execve IA32_ONLY(11) IA64_ONLY(1033) AMD64_ONLY(59) AARCH64_ONLY(221)
++ #endif
++ 
++ // Run the specified command in a separate process. Return its exit value,
++diff --git openjdk.orig/hotspot/src/share/vm/adlc/main.cpp openjdk/hotspot/src/share/vm/adlc/main.cpp
++index 47e207a..b93504e 100644
++--- openjdk.orig/hotspot/src/share/vm/adlc/main.cpp
+++++ openjdk/hotspot/src/share/vm/adlc/main.cpp
++@@ -244,6 +244,11 @@ int main(int argc, char *argv[])
++   AD.addInclude(AD._CPP_file, "assembler_arm.inline.hpp");
++   AD.addInclude(AD._CPP_file, "nativeInst_arm.hpp");
++   AD.addInclude(AD._CPP_file, "vmreg_arm.inline.hpp");
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++  AD.addInclude(AD._CPP_file, "assembler_aarch64.inline.hpp");
+++  AD.addInclude(AD._CPP_file, "nativeInst_aarch64.hpp");
+++  AD.addInclude(AD._CPP_file, "vmreg_aarch64.inline.hpp");
++ #endif
++   AD.addInclude(AD._HPP_file, "memory/allocation.hpp");
++   AD.addInclude(AD._HPP_file, "opto/machnode.hpp");
++diff --git openjdk.orig/hotspot/src/share/vm/asm/assembler.cpp openjdk/hotspot/src/share/vm/asm/assembler.cpp
++index 2bcdcbc..57787ac 100644
++--- openjdk.orig/hotspot/src/share/vm/asm/assembler.cpp
+++++ openjdk/hotspot/src/share/vm/asm/assembler.cpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ // Implementation of AbstractAssembler
++diff --git openjdk.orig/hotspot/src/share/vm/asm/assembler.hpp openjdk/hotspot/src/share/vm/asm/assembler.hpp
++index c25aa3f..4f77825 100644
++--- openjdk.orig/hotspot/src/share/vm/asm/assembler.hpp
+++++ openjdk/hotspot/src/share/vm/asm/assembler.hpp
++@@ -51,6 +51,10 @@
++ # include "register_ppc.hpp"
++ # include "vm_version_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "register_aarch64.hpp"
+++# include "vm_version_aarch64.hpp"
+++#endif
++ 
++ // This file contains platform-independent assembler declarations.
++ 
++@@ -459,6 +463,9 @@ class AbstractAssembler : public ResourceObj  {
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.hpp"
+++#endif
++ 
++ 
++ #endif // SHARE_VM_ASM_ASSEMBLER_HPP
++diff --git openjdk.orig/hotspot/src/share/vm/asm/codeBuffer.hpp openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp
++index 685297a..002faef 100644
++--- openjdk.orig/hotspot/src/share/vm/asm/codeBuffer.hpp
+++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp
++@@ -573,6 +573,9 @@ class CodeBuffer: public StackObj {
++ #ifdef TARGET_ARCH_ppc
++ # include "codeBuffer_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "codeBuffer_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp openjdk/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp
++index c95a23c..2ec31e5 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp
++@@ -877,6 +877,13 @@ static bool match(UnsafeRawOp* x,
++     return false;
++   }
++ 
+++// AARCH64 cannot handle shifts which are not either 0, or log2 of the type size
+++#ifdef AARCH64
+++  if (*log2_scale != 0 &&
+++	(1 << *log2_scale) != type2aelembytes(x->basic_type(), true))
+++    return false;
+++#endif
+++
++   // If the value is pinned then it will be always be computed so
++   // there's no profit to reshaping the expression.
++   return !root->is_pinned();
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Defs.hpp openjdk/hotspot/src/share/vm/c1/c1_Defs.hpp
++index bebb3b0..ddaceb7 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Defs.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_Defs.hpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "register_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "register_aarch64.hpp"
+++#endif
++ 
++ // set frame size and return address offset to these values in blobs
++ // (if the compiled frame uses ebp as link pointer on IA; otherwise,
++@@ -62,6 +65,9 @@ enum {
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_Defs_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_Defs_aarch64.hpp"
+++#endif
++ 
++ 
++ // native word offsets from memory address
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp openjdk/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp
++index a1e4c38..491b064 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp
++@@ -44,6 +44,9 @@ class FpuStackSim;
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_FpuStackSim_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_FpuStackSim_aarch64.hpp"
+++#endif
++ 
++ 
++ #endif // SHARE_VM_C1_C1_FPUSTACKSIM_HPP
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.cpp openjdk/hotspot/src/share/vm/c1/c1_FrameMap.cpp
++index ea50b27..6a3dc63 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_FrameMap.cpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.hpp openjdk/hotspot/src/share/vm/c1/c1_FrameMap.hpp
++index 288fc5c..e9a0250 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_FrameMap.hpp
++@@ -93,6 +93,9 @@ class FrameMap : public CompilationResourceObj {
++ #endif
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_FrameMap_ppc.hpp"
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_FrameMap_aarch64.hpp"
++ #endif
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.cpp openjdk/hotspot/src/share/vm/c1/c1_LIR.cpp
++index 776a6a3..6e1a362 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.cpp
++@@ -67,7 +67,7 @@ FloatRegister LIR_OprDesc::as_double_reg() const {
++ 
++ #endif
++ 
++-#ifdef ARM
+++#if defined(ARM) || defined (TARGET_ARCH_aarch64)
++ 
++ FloatRegister LIR_OprDesc::as_float_reg() const {
++   return as_FloatRegister(fpu_regnr());
++@@ -147,7 +147,11 @@ void LIR_Address::verify() const {
++ #endif
++ #ifdef _LP64
++   assert(base()->is_cpu_register(), "wrong base operand");
+++#ifndef TARGET_ARCH_aarch64
++   assert(index()->is_illegal() || index()->is_double_cpu(), "wrong index operand");
+++#else
+++  assert(index()->is_illegal() || index()->is_double_cpu() || index()->is_single_cpu(), "wrong index operand");
+++#endif
++   assert(base()->type() == T_OBJECT || base()->type() == T_LONG,
++          "wrong type for addresses");
++ #else
++@@ -545,7 +549,7 @@ void LIR_OpVisitState::visit(LIR_Op* op) {
++       assert(opConvert->_info == NULL, "must be");
++       if (opConvert->_opr->is_valid())       do_input(opConvert->_opr);
++       if (opConvert->_result->is_valid())    do_output(opConvert->_result);
++-#ifdef PPC
+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)
++       if (opConvert->_tmp1->is_valid())      do_temp(opConvert->_tmp1);
++       if (opConvert->_tmp2->is_valid())      do_temp(opConvert->_tmp2);
++ #endif
++@@ -1468,6 +1472,11 @@ void LIR_OprDesc::print(outputStream* out) const {
++     out->print("fpu%d", fpu_regnr());
++   } else if (is_double_fpu()) {
++     out->print("fpu%d", fpu_regnrLo());
+++#elif defined(AARCH64)
+++  } else if (is_single_fpu()) {
+++    out->print("fpu%d", fpu_regnr());
+++  } else if (is_double_fpu()) {
+++    out->print("fpu%d", fpu_regnrLo());
++ #elif defined(ARM)
++   } else if (is_single_fpu()) {
++     out->print("s%d", fpu_regnr());
++@@ -1836,7 +1845,7 @@ void LIR_OpConvert::print_instr(outputStream* out) const {
++   print_bytecode(out, bytecode());
++   in_opr()->print(out);                  out->print(" ");
++   result_opr()->print(out);              out->print(" ");
++-#ifdef PPC
+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)
++   if(tmp1()->is_valid()) {
++     tmp1()->print(out); out->print(" ");
++     tmp2()->print(out); out->print(" ");
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.hpp openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp
++index f8589c3..eb3383f 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.hpp
++@@ -437,8 +437,8 @@ class LIR_OprDesc: public CompilationResourceObj {
++   XMMRegister as_xmm_double_reg() const;
++   // for compatibility with RInfo
++   int fpu () const                                  { return lo_reg_half(); }
++-#endif // X86
++-#if defined(SPARC) || defined(ARM) || defined(PPC)
+++#endif
+++#if defined(SPARC) || defined(ARM) || defined(PPC) || defined(AARCH64)
++   FloatRegister as_float_reg   () const;
++   FloatRegister as_double_reg  () const;
++ #endif
++@@ -526,7 +526,7 @@ class LIR_Address: public LIR_OprPtr {
++      , _type(type)
++      , _disp(0) { verify(); }
++ 
++-#if defined(X86) || defined(ARM)
+++#if defined(X86) || defined(ARM) || defined(AARCH64)
++   LIR_Address(LIR_Opr base, LIR_Opr index, Scale scale, intx disp, BasicType type):
++        _base(base)
++      , _index(index)
++@@ -601,7 +601,7 @@ class LIR_OprFact: public AllStatic {
++                                                                              LIR_OprDesc::fpu_register         |
++                                                                              LIR_OprDesc::double_size); }
++ #endif
++-#ifdef X86
+++#if defined(X86) || defined(AARCH64)
++   static LIR_Opr double_fpu(int reg)            { return (LIR_Opr)(intptr_t)((reg  << LIR_OprDesc::reg1_shift) |
++                                                                              (reg  << LIR_OprDesc::reg2_shift) |
++                                                                              LIR_OprDesc::double_type          |
++@@ -1398,7 +1398,7 @@ class LIR_OpConvert: public LIR_Op1 {
++  private:
++    Bytecodes::Code _bytecode;
++    ConversionStub* _stub;
++-#ifdef PPC
+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)
++   LIR_Opr _tmp1;
++   LIR_Opr _tmp2;
++ #endif
++@@ -1413,7 +1413,7 @@ class LIR_OpConvert: public LIR_Op1 {
++ #endif
++      , _bytecode(code)                           {}
++ 
++-#ifdef PPC
+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)
++    LIR_OpConvert(Bytecodes::Code code, LIR_Opr opr, LIR_Opr result, ConversionStub* stub
++                  ,LIR_Opr tmp1, LIR_Opr tmp2)
++      : LIR_Op1(lir_convert, opr, result)
++@@ -1425,7 +1425,7 @@ class LIR_OpConvert: public LIR_Op1 {
++ 
++   Bytecodes::Code bytecode() const               { return _bytecode; }
++   ConversionStub* stub() const                   { return _stub; }
++-#ifdef PPC
+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)
++   LIR_Opr tmp1() const                           { return _tmp1; }
++   LIR_Opr tmp2() const                           { return _tmp2; }
++ #endif
++@@ -1973,7 +1973,14 @@ class LIR_List: public CompilationResourceObj {
++ #ifdef PPC
++   void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst, LIR_Opr tmp1, LIR_Opr tmp2) { append(new LIR_OpConvert(code, left, dst, NULL, tmp1, tmp2)); }
++ #endif
+++#if defined (TARGET_ARCH_aarch64)
+++  void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst,
+++	       ConversionStub* stub = NULL, LIR_Opr tmp1 = LIR_OprDesc::illegalOpr()) {
+++    append(new LIR_OpConvert(code, left, dst, stub, tmp1, LIR_OprDesc::illegalOpr()));
+++  }
+++#else
++   void convert(Bytecodes::Code code, LIR_Opr left, LIR_Opr dst, ConversionStub* stub = NULL/*, bool is_32bit = false*/) { append(new LIR_OpConvert(code, left, dst, stub)); }
+++#endif
++ 
++   void logical_and (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_and,  left, right, dst)); }
++   void logical_or  (LIR_Opr left, LIR_Opr right, LIR_Opr dst) { append(new LIR_Op2(lir_logic_or,   left, right, dst)); }
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp
++index 528f21e..4d83fca 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp
++@@ -50,6 +50,10 @@
++ # include "nativeInst_ppc.hpp"
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) {
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp
++index 58adf59..f4a49b3 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LIRAssembler.hpp
++@@ -261,6 +261,9 @@ class LIR_Assembler: public CompilationResourceObj {
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_LIRAssembler_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_LIRAssembler_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.cpp openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp
++index aaae71d..93f9f5f 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LinearScan.cpp
++@@ -47,6 +47,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ #ifndef PRODUCT
++@@ -2190,7 +2193,7 @@ LIR_Opr LinearScan::color_lir_opr(LIR_Opr opr, int op_id, LIR_OpVisitState::OprM
++ 
++   LIR_Opr res = operand_for_interval(interval);
++ 
++-#ifdef X86
+++#if defined(X86) || defined(AARCH64)
++   // new semantic for is_last_use: not only set on definite end of interval,
++   // but also before hole
++   // This may still miss some cases (e.g. for dead values), but it is not necessary that the
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.hpp openjdk/hotspot/src/share/vm/c1/c1_LinearScan.hpp
++index 0c06f1b..a152328 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LinearScan.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LinearScan.hpp
++@@ -985,6 +985,9 @@ class LinearScanTimers : public StackObj {
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_LinearScan_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_LinearScan_aarch64.hpp"
+++#endif
++ 
++ 
++ #endif // SHARE_VM_C1_C1_LINEARSCAN_HPP
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp openjdk/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp
++index 55d9803..eda2174 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_MacroAssembler.hpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.inline.hpp"
+++#endif
++ 
++ class CodeEmitInfo;
++ 
++@@ -73,6 +76,9 @@ class C1_MacroAssembler: public MacroAssembler {
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_MacroAssembler_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_MacroAssembler_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.cpp openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp
++index 765dec4..f0b3aae 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.cpp
++@@ -1103,6 +1103,7 @@ JRT_END
++ // completes we can check for deoptimization. This simplifies the
++ // assembly code in the cpu directories.
++ //
+++#ifndef TARGET_ARCH_aarch64
++ int Runtime1::move_klass_patching(JavaThread* thread) {
++ //
++ // NOTE: we are still in Java
++@@ -1150,6 +1151,7 @@ int Runtime1::access_field_patching(JavaThread* thread) {
++ 
++   return caller_is_deopted();
++ JRT_END
+++#endif
++ 
++ 
++ JRT_LEAF(void, Runtime1::trace_block_entry(jint block_id))
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.hpp openjdk/hotspot/src/share/vm/c1/c1_Runtime1.hpp
++index 2032564..19261be 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Runtime1.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_Runtime1.hpp
++@@ -159,6 +159,9 @@ class Runtime1: public AllStatic {
++   static int move_klass_patching(JavaThread* thread);
++ 
++   static void patch_code(JavaThread* thread, StubID stub_id);
+++#ifdef TARGET_ARCH_aarch64
+++  static void patch_code_aarch64(JavaThread* thread, StubID stub_id);
+++#endif
++ 
++  public:
++   // initialization
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_globals.hpp openjdk/hotspot/src/share/vm/c1/c1_globals.hpp
++index 15f3cc1..4143a87 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_globals.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_globals.hpp
++@@ -38,6 +38,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_globals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_globals_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "c1_globals_linux.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/classfile/classFileStream.hpp openjdk/hotspot/src/share/vm/classfile/classFileStream.hpp
++index cf6f0e5..b128b3a 100644
++--- openjdk.orig/hotspot/src/share/vm/classfile/classFileStream.hpp
+++++ openjdk/hotspot/src/share/vm/classfile/classFileStream.hpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ // Input stream for reading .class file
++ //
++diff --git openjdk.orig/hotspot/src/share/vm/classfile/stackMapTable.hpp openjdk/hotspot/src/share/vm/classfile/stackMapTable.hpp
++index f876029..ac415b6 100644
++--- openjdk.orig/hotspot/src/share/vm/classfile/stackMapTable.hpp
+++++ openjdk/hotspot/src/share/vm/classfile/stackMapTable.hpp
++@@ -46,6 +46,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ class StackMapReader;
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/classfile/verifier.cpp openjdk/hotspot/src/share/vm/classfile/verifier.cpp
++index c5c5e11..9c22a21 100644
++--- openjdk.orig/hotspot/src/share/vm/classfile/verifier.cpp
+++++ openjdk/hotspot/src/share/vm/classfile/verifier.cpp
++@@ -60,6 +60,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ #define NOFAILOVER_MAJOR_VERSION 51
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/code/codeBlob.cpp openjdk/hotspot/src/share/vm/code/codeBlob.cpp
++index 244c320..429e0be 100644
++--- openjdk.orig/hotspot/src/share/vm/code/codeBlob.cpp
+++++ openjdk/hotspot/src/share/vm/code/codeBlob.cpp
++@@ -54,6 +54,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "nativeInst_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++#endif
++ #ifdef COMPILER1
++ #include "c1/c1_Runtime1.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/code/compiledIC.hpp openjdk/hotspot/src/share/vm/code/compiledIC.hpp
++index fe1cfb3..c9f6a2e 100644
++--- openjdk.orig/hotspot/src/share/vm/code/compiledIC.hpp
+++++ openjdk/hotspot/src/share/vm/code/compiledIC.hpp
++@@ -44,6 +44,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "nativeInst_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++#endif
++ 
++ //-----------------------------------------------------------------------------
++ // The CompiledIC represents a compiled inline cache.
++diff --git openjdk.orig/hotspot/src/share/vm/code/icBuffer.cpp openjdk/hotspot/src/share/vm/code/icBuffer.cpp
++index ed70457..d022482 100644
++--- openjdk.orig/hotspot/src/share/vm/code/icBuffer.cpp
+++++ openjdk/hotspot/src/share/vm/code/icBuffer.cpp
++@@ -52,6 +52,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ DEF_STUB_INTERFACE(ICStub);
++diff --git openjdk.orig/hotspot/src/share/vm/code/relocInfo.cpp openjdk/hotspot/src/share/vm/code/relocInfo.cpp
++index 4fd82df..78310e6 100644
++--- openjdk.orig/hotspot/src/share/vm/code/relocInfo.cpp
+++++ openjdk/hotspot/src/share/vm/code/relocInfo.cpp
++@@ -49,6 +49,10 @@
++ # include "assembler_ppc.inline.hpp"
++ # include "nativeInst_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.inline.hpp"
+++# include "nativeInst_aarch64.hpp"
+++#endif
++ 
++ 
++ const RelocationHolder RelocationHolder::none; // its type is relocInfo::none
++diff --git openjdk.orig/hotspot/src/share/vm/code/relocInfo.hpp openjdk/hotspot/src/share/vm/code/relocInfo.hpp
++index 1d14b44..3823889 100644
++--- openjdk.orig/hotspot/src/share/vm/code/relocInfo.hpp
+++++ openjdk/hotspot/src/share/vm/code/relocInfo.hpp
++@@ -435,6 +435,9 @@ class relocInfo VALUE_OBJ_CLASS_SPEC {
++ #endif
++ #ifdef TARGET_ARCH_ppc
++ # include "relocInfo_ppc.hpp"
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "relocInfo_aarch64.hpp"
++ #endif
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/code/vmreg.hpp openjdk/hotspot/src/share/vm/code/vmreg.hpp
++index d57e6f8..1c18e47 100644
++--- openjdk.orig/hotspot/src/share/vm/code/vmreg.hpp
+++++ openjdk/hotspot/src/share/vm/code/vmreg.hpp
++@@ -42,6 +42,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "register_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "register_aarch64.hpp"
+++#endif
++ #ifdef COMPILER2
++ #include "opto/adlcVMDeps.hpp"
++ #include "utilities/ostream.hpp"
++@@ -63,6 +66,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/adGlobals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/adGlobals_aarch64.hpp"
+++#endif
++ #endif
++ 
++ //------------------------------VMReg------------------------------------------
++@@ -182,6 +188,9 @@ public:
++ #ifdef TARGET_ARCH_ppc
++ # include "vmreg_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmreg_aarch64.hpp"
+++#endif
++ 
++ 
++ };
++diff --git openjdk.orig/hotspot/src/share/vm/compiler/disassembler.cpp openjdk/hotspot/src/share/vm/compiler/disassembler.cpp
++index 9603e86..3a67259 100644
++--- openjdk.orig/hotspot/src/share/vm/compiler/disassembler.cpp
+++++ openjdk/hotspot/src/share/vm/compiler/disassembler.cpp
++@@ -47,6 +47,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "depChecker_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "depChecker_aarch64.hpp"
+++#endif
++ #ifdef SHARK
++ #include "shark/sharkEntry.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/compiler/disassembler.hpp openjdk/hotspot/src/share/vm/compiler/disassembler.hpp
++index a70b8cc..4c90c9a 100644
++--- openjdk.orig/hotspot/src/share/vm/compiler/disassembler.hpp
+++++ openjdk/hotspot/src/share/vm/compiler/disassembler.hpp
++@@ -78,6 +78,9 @@ class Disassembler {
++ #endif
++ #ifdef TARGET_ARCH_ppc
++ # include "disassembler_ppc.hpp"
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "disassembler_aarch64.hpp"
++ #endif
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
++index d23f37a..24ca30e 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
++@@ -44,6 +44,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "interp_masm_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "interp_masm_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "thread_linux.inline.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecode.hpp openjdk/hotspot/src/share/vm/interpreter/bytecode.hpp
++index 107161a..205d0f7 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecode.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/bytecode.hpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ class ciBytecodeStream;
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp
++index e637414..308ad3b 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp
++@@ -47,6 +47,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ #ifdef CC_INTERP
++ 
++@@ -618,6 +621,9 @@ void print();
++ #ifdef TARGET_ARCH_ppc
++ # include "bytecodeInterpreter_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytecodeInterpreter_aarch64.hpp"
+++#endif
++ 
++ 
++ }; // BytecodeInterpreter
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp
++index 3715a52..0d6a8aa 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.inline.hpp
++@@ -58,6 +58,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytecodeInterpreter_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytecodeInterpreter_aarch64.inline.hpp"
+++#endif
++ 
++ #endif // CC_INTERP
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeStream.hpp openjdk/hotspot/src/share/vm/interpreter/bytecodeStream.hpp
++index 6106eac..f3dee0a 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodeStream.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeStream.hpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ // A BytecodeStream is used for fast iteration over the bytecodes
++ // of a methodOop.
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/bytecodes.cpp openjdk/hotspot/src/share/vm/interpreter/bytecodes.cpp
++index 04f3f64..48ef30e 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/bytecodes.cpp
+++++ openjdk/hotspot/src/share/vm/interpreter/bytecodes.cpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ 
++ #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600))
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.hpp
++index e3a9f2e..8347473 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreter.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.hpp
++@@ -101,6 +101,9 @@ class CppInterpreter: public AbstractInterpreter {
++ #ifdef TARGET_ARCH_ppc
++ # include "cppInterpreter_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "cppInterpreter_aarch64.hpp"
+++#endif
++ 
++ 
++ };
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp openjdk/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp
++index c27805e..272f6e8 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/cppInterpreterGenerator.hpp
++@@ -59,6 +59,9 @@ class CppInterpreterGenerator: public AbstractInterpreterGenerator {
++ #ifdef TARGET_ARCH_ppc
++ # include "cppInterpreterGenerator_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "cppInterpreterGenerator_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreter.hpp openjdk/hotspot/src/share/vm/interpreter/interpreter.hpp
++index 0ab0be7..6a6822f 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreter.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/interpreter.hpp
++@@ -158,6 +158,9 @@ class Interpreter: public CC_INTERP_ONLY(CppInterpreter) NOT_CC_INTERP(TemplateI
++ #ifdef TARGET_ARCH_ppc
++ # include "interpreter_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "interpreter_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp openjdk/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp
++index 7bc43ec..0434ca3 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/interpreterGenerator.hpp
++@@ -56,6 +56,9 @@ InterpreterGenerator(StubQueue* _code);
++ #ifdef TARGET_ARCH_ppc
++ # include "interpreterGenerator_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "interpreterGenerator_aarch64.hpp"
+++#endif
++ 
++ 
++ };
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
++index e451c04..37700fb 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
+++++ openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
++@@ -71,6 +71,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vm_version_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vm_version_aarch64.hpp"
+++#endif
++ #ifdef COMPILER2
++ #include "opto/runtime.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp
++index 93c1a9e..425400e 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp
++@@ -164,6 +164,9 @@ class InterpreterRuntime: AllStatic {
++ #endif
++ #ifdef TARGET_ARCH_ppc
++ # include "interpreterRT_ppc.hpp"
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "interpreterRT_aarch64.hpp"
++ #endif
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreter.hpp openjdk/hotspot/src/share/vm/interpreter/templateInterpreter.hpp
++index 25d74f7..f78a16e 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreter.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/templateInterpreter.hpp
++@@ -198,6 +198,9 @@ class TemplateInterpreter: public AbstractInterpreter {
++ #ifdef TARGET_ARCH_ppc
++ # include "templateInterpreter_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "templateInterpreter_aarch64.hpp"
+++#endif
++ 
++ 
++ };
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp openjdk/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp
++index fb7bdc5..6007630 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.hpp
++@@ -101,6 +101,9 @@ class TemplateInterpreterGenerator: public AbstractInterpreterGenerator {
++ #ifdef TARGET_ARCH_ppc
++ # include "templateInterpreterGenerator_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "templateInterpreterGenerator_aarch64.hpp"
+++#endif
++ 
++ 
++ };
++diff --git openjdk.orig/hotspot/src/share/vm/interpreter/templateTable.hpp openjdk/hotspot/src/share/vm/interpreter/templateTable.hpp
++index 5d2a7e8..c5e0f0a 100644
++--- openjdk.orig/hotspot/src/share/vm/interpreter/templateTable.hpp
+++++ openjdk/hotspot/src/share/vm/interpreter/templateTable.hpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "interp_masm_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "interp_masm_aarch64.hpp"
+++#endif
++ 
++ #ifndef CC_INTERP
++ // All the necessary definitions used for (bytecode) template generation. Instead of
++@@ -373,6 +376,9 @@ class TemplateTable: AllStatic {
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "templateTable_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "templateTable_aarch64.hpp"
+++#endif
++ 
++ };
++ #endif /* !CC_INTERP */
++diff --git openjdk.orig/hotspot/src/share/vm/oops/constantPoolOop.hpp openjdk/hotspot/src/share/vm/oops/constantPoolOop.hpp
++index c2f985d..3d0d0fc 100644
++--- openjdk.orig/hotspot/src/share/vm/oops/constantPoolOop.hpp
+++++ openjdk/hotspot/src/share/vm/oops/constantPoolOop.hpp
++@@ -45,6 +45,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ // A constantPool is an array containing class constants as described in the
++ // class file.
++diff --git openjdk.orig/hotspot/src/share/vm/oops/oop.inline.hpp openjdk/hotspot/src/share/vm/oops/oop.inline.hpp
++index db14b2e..c8b326f 100644
++--- openjdk.orig/hotspot/src/share/vm/oops/oop.inline.hpp
+++++ openjdk/hotspot/src/share/vm/oops/oop.inline.hpp
++@@ -58,6 +58,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ // Implementation of all inlined member functions defined in oop.hpp
++ // We need a separate file to avoid circular references
++diff --git openjdk.orig/hotspot/src/share/vm/opto/buildOopMap.cpp openjdk/hotspot/src/share/vm/opto/buildOopMap.cpp
++index fc73160..2c5ec41 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/buildOopMap.cpp
+++++ openjdk/hotspot/src/share/vm/opto/buildOopMap.cpp
++@@ -47,6 +47,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ 
++ // The functions in this file builds OopMaps after all scheduling is done.
++ //
++diff --git openjdk.orig/hotspot/src/share/vm/opto/c2_globals.hpp openjdk/hotspot/src/share/vm/opto/c2_globals.hpp
++index f73dcbd..462c875 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/c2_globals.hpp
+++++ openjdk/hotspot/src/share/vm/opto/c2_globals.hpp
++@@ -35,6 +35,9 @@
++ #ifdef TARGET_ARCH_arm
++ # include "c2_globals_arm.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c2_globals_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "c2_globals_linux.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/opto/c2compiler.cpp openjdk/hotspot/src/share/vm/opto/c2compiler.cpp
++index 713e3f1..948e447 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/c2compiler.cpp
+++++ openjdk/hotspot/src/share/vm/opto/c2compiler.cpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ 
++ volatile int C2Compiler::_runtimes = uninitialized;
++diff --git openjdk.orig/hotspot/src/share/vm/opto/compile.cpp openjdk/hotspot/src/share/vm/opto/compile.cpp
++index a7ee07a..91dc290 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/compile.cpp
+++++ openjdk/hotspot/src/share/vm/opto/compile.cpp
++@@ -80,6 +80,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ 
++ // -------------------- Compile::mach_constant_base_node -----------------------
++diff --git openjdk.orig/hotspot/src/share/vm/opto/gcm.cpp openjdk/hotspot/src/share/vm/opto/gcm.cpp
++index 8b8f311..4deb0b4 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/gcm.cpp
+++++ openjdk/hotspot/src/share/vm/opto/gcm.cpp
++@@ -53,6 +53,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ // Portions of code courtesy of Clifford Click
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/opto/lcm.cpp openjdk/hotspot/src/share/vm/opto/lcm.cpp
++index aee6123..4b9aaed 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/lcm.cpp
+++++ openjdk/hotspot/src/share/vm/opto/lcm.cpp
++@@ -48,6 +48,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ // Optimization - Graph Style
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/opto/locknode.hpp openjdk/hotspot/src/share/vm/opto/locknode.hpp
++index 91b99bc..665594f 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/locknode.hpp
+++++ openjdk/hotspot/src/share/vm/opto/locknode.hpp
++@@ -46,6 +46,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ //------------------------------BoxLockNode------------------------------------
++ class BoxLockNode : public Node {
++diff --git openjdk.orig/hotspot/src/share/vm/opto/matcher.cpp openjdk/hotspot/src/share/vm/opto/matcher.cpp
++index ca2d4e3..d0f55c5 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/matcher.cpp
+++++ openjdk/hotspot/src/share/vm/opto/matcher.cpp
++@@ -55,6 +55,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ OptoReg::Name OptoReg::c_frame_pointer;
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/opto/output.hpp openjdk/hotspot/src/share/vm/opto/output.hpp
++index 50b6e76..6a920b2 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/output.hpp
+++++ openjdk/hotspot/src/share/vm/opto/output.hpp
++@@ -45,6 +45,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ class Arena;
++ class Bundle;
++diff --git openjdk.orig/hotspot/src/share/vm/opto/regmask.cpp openjdk/hotspot/src/share/vm/opto/regmask.cpp
++index ce220f0..20c6028 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/regmask.cpp
+++++ openjdk/hotspot/src/share/vm/opto/regmask.cpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/opto/regmask.hpp openjdk/hotspot/src/share/vm/opto/regmask.hpp
++index e50ff84..26c6854 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/regmask.hpp
+++++ openjdk/hotspot/src/share/vm/opto/regmask.hpp
++@@ -46,6 +46,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/adGlobals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/adGlobals_aarch64.hpp"
+++#endif
++ 
++ // Some fun naming (textual) substitutions:
++ //
++diff --git openjdk.orig/hotspot/src/share/vm/opto/runtime.cpp openjdk/hotspot/src/share/vm/opto/runtime.cpp
++index d315f10..11a58b1 100644
++--- openjdk.orig/hotspot/src/share/vm/opto/runtime.cpp
+++++ openjdk/hotspot/src/share/vm/opto/runtime.cpp
++@@ -86,6 +86,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ 
++ 
++ // For debugging purposes:
++diff --git openjdk.orig/hotspot/src/share/vm/prims/jniCheck.cpp openjdk/hotspot/src/share/vm/prims/jniCheck.cpp
++index 3bf4ecd..2ad9014 100644
++--- openjdk.orig/hotspot/src/share/vm/prims/jniCheck.cpp
+++++ openjdk/hotspot/src/share/vm/prims/jniCheck.cpp
++@@ -51,6 +51,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "jniTypes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "jniTypes_aarch64.hpp"
+++#endif
++ 
++ 
++ // Heap objects are allowed to be directly referenced only in VM code,
++diff --git openjdk.orig/hotspot/src/share/vm/prims/jni_md.h openjdk/hotspot/src/share/vm/prims/jni_md.h
++index 7fa5829..3bd4e31 100644
++--- openjdk.orig/hotspot/src/share/vm/prims/jni_md.h
+++++ openjdk/hotspot/src/share/vm/prims/jni_md.h
++@@ -39,6 +39,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "jni_ppc.h"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "jni_aarch64.h"
+++#endif
++ 
++ 
++ /*
++diff --git openjdk.orig/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp openjdk/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp
++index 97dd154..fd1fa43 100644
++--- openjdk.orig/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp
+++++ openjdk/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ // FIXME: add Deprecated, LVTT attributes
++ // FIXME: fix Synthetic attribute
++ // FIXME: per Serguei, add error return handling for constantPoolOopDesc::copy_cpool_bytes()
++diff --git openjdk.orig/hotspot/src/share/vm/prims/methodHandles.hpp openjdk/hotspot/src/share/vm/prims/methodHandles.hpp
++index 514ba6a..ea747d0 100644
++--- openjdk.orig/hotspot/src/share/vm/prims/methodHandles.hpp
+++++ openjdk/hotspot/src/share/vm/prims/methodHandles.hpp
++@@ -738,6 +738,9 @@ public:
++ #ifdef TARGET_ARCH_ppc
++ # include "methodHandles_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "methodHandles_aarch64.hpp"
+++#endif
++ };
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/atomic.cpp openjdk/hotspot/src/share/vm/runtime/atomic.cpp
++index 80780d7..5a34f15 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/atomic.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/atomic.cpp
++@@ -60,6 +60,9 @@
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "atomic_linux_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "atomic_linux_aarch64.inline.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_bsd_x86
++ # include "atomic_bsd_x86.inline.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/deoptimization.cpp openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp
++index 4735588..4e7958a 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/deoptimization.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp
++@@ -65,6 +65,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ #ifdef COMPILER2
++ #ifdef TARGET_ARCH_MODEL_x86_32
++ # include "adfiles/ad_x86_32.hpp"
++@@ -84,6 +87,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/ad_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/ad_aarch64.hpp"
+++#endif
++ #endif
++ 
++ bool DeoptimizationMarker::_is_active = false;
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/dtraceJSDT.hpp openjdk/hotspot/src/share/vm/runtime/dtraceJSDT.hpp
++index bff4310..1129cd6 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/dtraceJSDT.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/dtraceJSDT.hpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "nativeInst_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++#endif
++ 
++ class RegisteredProbes;
++ typedef jlong OpaqueProbes;
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp openjdk/hotspot/src/share/vm/runtime/frame.cpp
++index 7ae9aa8..6654714 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/frame.cpp
++@@ -59,6 +59,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "nativeInst_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++#endif
++ 
++ RegisterMap::RegisterMap(JavaThread *thread, bool update_map) {
++   _thread         = thread;
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/frame.hpp openjdk/hotspot/src/share/vm/runtime/frame.hpp
++index c55380e..c13caae 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/frame.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/frame.hpp
++@@ -50,6 +50,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/adGlobals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/adGlobals_aarch64.hpp"
+++#endif
++ #endif
++ #ifdef ZERO
++ #ifdef TARGET_ARCH_zero
++@@ -491,6 +494,9 @@ class frame VALUE_OBJ_CLASS_SPEC {
++ #ifdef TARGET_ARCH_ppc
++ # include "frame_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "frame_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/frame.inline.hpp openjdk/hotspot/src/share/vm/runtime/frame.inline.hpp
++index b80b042..f6e1b0e 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/frame.inline.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/frame.inline.hpp
++@@ -46,6 +46,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "jniTypes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "jniTypes_aarch64.hpp"
+++#endif
++ #ifdef ZERO
++ #ifdef TARGET_ARCH_zero
++ # include "entryFrame_zero.hpp"
++@@ -100,6 +103,9 @@ inline bool frame::is_first_frame() const {
++ #ifdef TARGET_ARCH_ppc
++ # include "frame_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "frame_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ #endif // SHARE_VM_RUNTIME_FRAME_INLINE_HPP
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
++index 10d74cd..4cc5dfb 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp
++@@ -52,6 +52,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "globals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "globals_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "globals_linux.hpp"
++ #endif
++@@ -88,6 +91,9 @@
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "globals_linux_ppc.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "globals_linux_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_bsd_x86
++ # include "globals_bsd_x86.hpp"
++ #endif
++@@ -107,6 +113,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_globals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_globals_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "c1_globals_linux.hpp"
++ #endif
++@@ -130,6 +139,9 @@
++ #ifdef TARGET_ARCH_arm
++ # include "c2_globals_arm.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c2_globals_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "c2_globals_linux.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/icache.hpp openjdk/hotspot/src/share/vm/runtime/icache.hpp
++index d460a0f..9a3b9c8 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/icache.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/icache.hpp
++@@ -83,6 +83,9 @@ class AbstractICache : AllStatic {
++ #ifdef TARGET_ARCH_ppc
++ # include "icache_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "icache_aarch64.hpp"
+++#endif
++ 
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/java.cpp openjdk/hotspot/src/share/vm/runtime/java.cpp
++index fc3b67a..46794b0 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/java.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/java.cpp
++@@ -78,6 +78,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vm_version_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vm_version_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "thread_linux.inline.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/javaCalls.hpp openjdk/hotspot/src/share/vm/runtime/javaCalls.hpp
++index d4f8595..bc2ca9b 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/javaCalls.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/javaCalls.hpp
++@@ -45,6 +45,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "jniTypes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "jniTypes_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "thread_linux.inline.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp openjdk/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp
++index 8374aa2..6be5f79 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/javaFrameAnchor.hpp
++@@ -47,6 +47,9 @@
++ #ifdef TARGET_OS_ARCH_linux_arm
++ # include "orderAccess_linux_arm.inline.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "orderAccess_linux_aarch64.inline.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "orderAccess_linux_ppc.inline.hpp"
++ #endif
++@@ -121,6 +124,9 @@ friend class JavaCallWrapper;
++ #ifdef TARGET_ARCH_ppc
++ # include "javaFrameAnchor_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "javaFrameAnchor_aarch64.hpp"
+++#endif
++ 
++ 
++ public:
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/os.hpp openjdk/hotspot/src/share/vm/runtime/os.hpp
++index 5867deb..0f1fbb4 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/os.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/os.hpp
++@@ -719,6 +719,9 @@ class os: AllStatic {
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "os_linux_ppc.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "os_linux_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_bsd_x86
++ # include "os_bsd_x86.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/registerMap.hpp openjdk/hotspot/src/share/vm/runtime/registerMap.hpp
++index 5dd677a..7bd425f 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/registerMap.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/registerMap.hpp
++@@ -42,6 +42,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "register_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "register_aarch64.hpp"
+++#endif
++ 
++ class JavaThread;
++ 
++@@ -150,6 +153,9 @@ class RegisterMap : public StackObj {
++ #ifdef TARGET_ARCH_ppc
++ # include "registerMap_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "registerMap_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/relocator.hpp openjdk/hotspot/src/share/vm/runtime/relocator.hpp
++index c34866f..790bd80 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/relocator.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/relocator.hpp
++@@ -42,6 +42,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "bytes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "bytes_aarch64.hpp"
+++#endif
++ 
++ // This code has been converted from the 1.1E java virtual machine
++ // Thanks to the JavaTopics group for using the code
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp openjdk/hotspot/src/share/vm/runtime/safepoint.cpp
++index c29d257..a842bb3 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/safepoint.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/safepoint.cpp
++@@ -70,6 +70,10 @@
++ # include "nativeInst_ppc.hpp"
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "thread_linux.inline.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
++index c25dcfe..aa7caff 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/sharedRuntime.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
++@@ -76,6 +76,10 @@
++ # include "nativeInst_ppc.hpp"
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++ #ifdef COMPILER1
++ #include "c1/c1_Runtime1.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/stackValueCollection.cpp openjdk/hotspot/src/share/vm/runtime/stackValueCollection.cpp
++index 110f712..779f994 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/stackValueCollection.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/stackValueCollection.cpp
++@@ -39,6 +39,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "jniTypes_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "jniTypes_aarch64.hpp"
+++#endif
++ 
++ jint StackValueCollection::int_at(int slot) const {
++   intptr_t val =  at(slot)->get_int();
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/statSampler.cpp openjdk/hotspot/src/share/vm/runtime/statSampler.cpp
++index 0b24def..c82a214 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/statSampler.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/statSampler.cpp
++@@ -48,6 +48,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vm_version_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vm_version_aarch64.hpp"
+++#endif
++ 
++ // --------------------------------------------------------
++ // StatSamplerTask
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
++index b6068a5..4ef7e38 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp
++@@ -42,6 +42,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.inline.hpp"
+++#endif
++ 
++ 
++ // Implementation of StubCodeDesc
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/stubRoutines.hpp openjdk/hotspot/src/share/vm/runtime/stubRoutines.hpp
++index 8481dce..f233b56 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/stubRoutines.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/stubRoutines.hpp
++@@ -46,6 +46,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "nativeInst_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "nativeInst_aarch64.hpp"
+++#endif
++ 
++ // StubRoutines provides entry points to assembly routines used by
++ // compiled code and the run-time system. Platform-specific entry
++@@ -116,6 +119,9 @@ class StubRoutines: AllStatic {
++ #endif
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "stubRoutines_ppc.hpp"
+++#endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "stubRoutines_aarch64.hpp"
++ #endif
++ 
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/thread.hpp openjdk/hotspot/src/share/vm/runtime/thread.hpp
++index 7846cc0..6964c22 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/thread.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/thread.hpp
++@@ -1651,6 +1651,9 @@ public:
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "thread_linux_ppc.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "thread_linux_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_bsd_x86
++ # include "thread_bsd_x86.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/threadLocalStorage.hpp openjdk/hotspot/src/share/vm/runtime/threadLocalStorage.hpp
++index c2f7a9e..26ef559 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/threadLocalStorage.hpp
+++++ openjdk/hotspot/src/share/vm/runtime/threadLocalStorage.hpp
++@@ -68,6 +68,9 @@ class ThreadLocalStorage : AllStatic {
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "threadLS_linux_ppc.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "threadLS_linux_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_bsd_x86
++ # include "threadLS_bsd_x86.hpp"
++ #endif
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/vmStructs.cpp openjdk/hotspot/src/share/vm/runtime/vmStructs.cpp
++index 8afd933..359f9fc 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/vmStructs.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/vmStructs.cpp
++@@ -125,6 +125,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vmStructs_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmStructs_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_FAMILY_linux
++ # include "thread_linux.inline.hpp"
++ #endif
++@@ -161,6 +164,9 @@
++ #ifdef TARGET_OS_ARCH_linux_ppc
++ # include "vmStructs_linux_ppc.hpp"
++ #endif
+++#ifdef TARGET_OS_ARCH_linux_aarch64
+++# include "vmStructs_linux_aarch64.hpp"
+++#endif
++ #ifdef TARGET_OS_ARCH_bsd_x86
++ # include "vmStructs_bsd_x86.hpp"
++ #endif
++@@ -221,6 +227,9 @@
++ #ifdef TARGET_ARCH_MODEL_ppc
++ # include "adfiles/adGlobals_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_MODEL_aarch64
+++# include "adfiles/adGlobals_aarch64.hpp"
+++#endif
++ #endif
++ 
++ // Note: the cross-product of (c1, c2, product, nonproduct, ...),
++diff --git openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
++index 2d51b67..bba9b01 100644
++--- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp
+++++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vm_version_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vm_version_aarch64.hpp"
+++#endif
++ 
++ const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
++ const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
++@@ -185,6 +188,7 @@ const char* Abstract_VM_Version::jre_release_version() {
++                  AMD64_ONLY("amd64")             \
++                  ARM_ONLY("arm")                 \
++                  PPC_ONLY("ppc")                 \
+++                 AARCH64_ONLY("aarch64")         \
++                  SPARC_ONLY("sparc")
++ #endif // ZERO
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/utilities/copy.hpp openjdk/hotspot/src/share/vm/utilities/copy.hpp
++index 3dcbfee..198590f 100644
++--- openjdk.orig/hotspot/src/share/vm/utilities/copy.hpp
+++++ openjdk/hotspot/src/share/vm/utilities/copy.hpp
++@@ -337,6 +337,9 @@ class Copy : AllStatic {
++ #ifdef TARGET_ARCH_ppc
++ # include "copy_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "copy_aarch64.hpp"
+++#endif
++ 
++ };
++ 
++diff --git openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions.hpp openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp
++index b55b0ac..5d11e26 100644
++--- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions.hpp
+++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp
++@@ -346,6 +346,9 @@ extern int LogMinObjAlignmentInBytes;
++ #ifdef TARGET_ARCH_ppc
++ # include "globalDefinitions_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "globalDefinitions_aarch64.hpp"
+++#endif
++ 
++ 
++ // The byte alignment to be used by Arena::Amalloc.  See bugid 4169348.
++diff --git openjdk.orig/hotspot/src/share/vm/utilities/macros.hpp openjdk/hotspot/src/share/vm/utilities/macros.hpp
++index 003f2af..2aa7f87 100644
++--- openjdk.orig/hotspot/src/share/vm/utilities/macros.hpp
+++++ openjdk/hotspot/src/share/vm/utilities/macros.hpp
++@@ -261,6 +261,14 @@
++ #define NOT_ARM(code) code
++ #endif
++ 
+++#ifdef AARCH64
+++#define AARCH64_ONLY(code) code
+++#define NOT_AARCH64(code)
+++#else
+++#define AARCH64_ONLY(code)
+++#define NOT_AARCH64(code) code
+++#endif
+++
++ #ifdef JAVASE_EMBEDDED
++ #define EMBEDDED_ONLY(code) code
++ #define NOT_EMBEDDED(code)
+-- 
+2.26.2
+
diff --git a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
deleted file mode 100644
index ef090e0ec9..0000000000
--- a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-# HG changeset patch
-# User Gábor Boskovits <boskovits@gmail.com>
-# Date 1530519413 -7200
-#      Mon Jul 02 10:16:53 2018 +0200
-# Node ID 77e5bc9e238a28d17e097647badc04ed67a6a452
-# Parent  1ae05a34e052d1672b4a7894ddf5fc2f662eb861
-Fix gcc segfault.
-
-diff -r 1ae05a34e052 -r 77e5bc9e238a src/share/vm/opto/output.cpp
---- a/src/share/vm/opto/output.cpp	Sun Dec 25 23:52:13 2016 +0000
-+++ b/src/share/vm/opto/output.cpp	Mon Jul 02 10:16:53 2018 +0200
-@@ -1758,6 +1758,8 @@
- 
- // Initializer for class Scheduling
- 
-+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
-+
- Scheduling::Scheduling(Arena *arena, Compile &compile)
-   : _arena(arena),
-     _cfg(compile.cfg()),
-@@ -1802,8 +1804,8 @@
- 
-   // Clear the bundling information
-   memcpy(_bundle_use_elements,
--    Pipeline_Use::elaborated_elements,
--    sizeof(Pipeline_Use::elaborated_elements));
-+	 (void *)eePointer,
-+    11*sizeof(Pipeline_Use_Element));
- 
-   // Get the last node
-   Block *bb = _cfg->_blocks[_cfg->_blocks.size()-1];
-@@ -1854,8 +1856,8 @@
-   _bundle_use.reset();
- 
-   memcpy(_bundle_use_elements,
--    Pipeline_Use::elaborated_elements,
--    sizeof(Pipeline_Use::elaborated_elements));
-+	 (void *)eePointer,
-+    11*sizeof(Pipeline_Use_Element));
- }
- 
- //------------------------------ScheduleAndBundle------------------------------
diff --git a/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch b/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch
new file mode 100644
index 0000000000..7ad215f975
--- /dev/null
+++ b/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch
@@ -0,0 +1,33 @@
+From 919dd016be1abd213b3a7d0e9a3b79e3286ef6ad Mon Sep 17 00:00:00 2001
+From: Simon South <simon@simonsouth.net>
+Date: Wed, 10 Jun 2020 13:02:09 -0400
+Subject: [PATCH] aarch64: Use only C++98
+
+This patch removes an unneeded C++ template that causes the build to
+fail for aarch64 using gcc 7.5.0 and its default support for only the
+C++98 standard.
+
+It is based on original work by Severin Gehwolf <sgehwolf@redhat.com>.
+See: https://bugzilla.redhat.com/show_bug.cgi?id=1307224
+---
+ src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
+index 0bc0a2b..6f73ca0 100644
+--- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
++++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
+@@ -194,10 +194,6 @@ static int reg2offset_out(VMReg r) {
+   return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;
+ }
+ 
+-template <class T> static const T& min (const T& a, const T& b) {
+-  return (a > b) ? b : a;
+-}
+-
+ // ---------------------------------------------------------------------------
+ // Read the array of BasicTypes from a signature, and compute where the
+ // arguments should go.  Values in the VMRegPair regs array refer to 4-byte
+-- 
+2.26.2
+
diff --git a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
deleted file mode 100644
index 35cfe38152..0000000000
--- a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 2f0ef2c69e99e1096a2a72c7a29025a736b044b4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
-Date: Mon, 2 Jul 2018 23:37:25 +0200
-Subject: [PATCH] Fix gcc segfault.
-
----
- src/share/vm/opto/output.cpp | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp
-index d46cb87..0eb9eda 100644
---- a/src/share/vm/opto/output.cpp
-+++ b/src/share/vm/opto/output.cpp
-@@ -1787,6 +1787,8 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+
- 
- // Initializer for class Scheduling
- 
-+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
-+
- Scheduling::Scheduling(Arena *arena, Compile &compile)
-   : _arena(arena),
-     _cfg(compile.cfg()),
-@@ -1829,7 +1831,7 @@ Scheduling::Scheduling(Arena *arena, Compile &compile)
-   memset(_current_latency,    0, node_max * sizeof(unsigned short));
- 
-   // Clear the bundling information
--  memcpy(_bundle_use_elements, Pipeline_Use::elaborated_elements, sizeof(Pipeline_Use::elaborated_elements));
-+  memcpy(_bundle_use_elements, (void *)eePointer, 11*sizeof(Pipeline_Use_Element));
- 
-   // Get the last node
-   Block* block = _cfg->get_block(_cfg->number_of_blocks() - 1);
-@@ -1880,8 +1882,8 @@ void Scheduling::step_and_clear() {
-   _bundle_use.reset();
- 
-   memcpy(_bundle_use_elements,
--    Pipeline_Use::elaborated_elements,
--    sizeof(Pipeline_Use::elaborated_elements));
-+	 (void *)eePointer,
-+    11*sizeof(Pipeline_Use_Element));
- }
- 
- // Perform instruction scheduling and bundling over the sequence of
--- 
-2.18.0
-
diff --git a/gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch b/gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch
new file mode 100644
index 0000000000..d677f19a70
--- /dev/null
+++ b/gnu/packages/patches/kpackage-fix-KF5PackageMacros.cmake.patch
@@ -0,0 +1,25 @@
+From 668010ebc9fd84d9dc60f90b9a4ebf3c7054977f Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Sun, 25 Oct 2020 20:11:13 +0000
+Subject: [PATCH] Fix build errors if PREFIX is different from ECM's PREFIX.
+
+See <https://bugs.kde.org/424483> for details.
+---
+ KF5PackageMacros.cmake | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/KF5PackageMacros.cmake b/KF5PackageMacros.cmake
+index f4c1d1d..acd3798 100644
+--- a/KF5PackageMacros.cmake
++++ b/KF5PackageMacros.cmake
+@@ -1,6 +1,5 @@
+ 
+-find_package(ECM 1.6.0 CONFIG REQUIRED)
+-include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
++include(KDEInstallDirs)
+ 
+ set(KPACKAGE_RELATIVE_DATA_INSTALL_DIR "kpackage")
+ 
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
index fe381acf1b..ec8e888618 100644
--- a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
+++ b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
@@ -36,8 +36,8 @@ Differential Revision: https://reviews.llvm.org/D70844
 
 diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
 index 2c9ba203fbf3..0af3de300e77 100644
---- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
-+++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+--- llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
++++ llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
 @@ -18,6 +18,7 @@
  #include "llvm/IR/DIBuilder.h"
  #include "llvm/IR/PatternMatch.h"
@@ -158,8 +158,8 @@ index 2c9ba203fbf3..0af3de300e77 100644
  
 diff --git a/llvm/test/Transforms/InstCombine/cast.ll b/llvm/test/Transforms/InstCombine/cast.ll
 index b6d1eda0601d..3ce8de033422 100644
---- a/llvm/test/Transforms/InstCombine/cast.ll
-+++ b/llvm/test/Transforms/InstCombine/cast.ll
+--- llvm/test/Transforms/InstCombine/cast.ll
++++ llvm/test/Transforms/InstCombine/cast.ll
 @@ -824,7 +824,7 @@ define i64 @test59(i8 %A, i8 %B) {
  
  define <3 x i32> @test60(<4 x i32> %call4) {
diff --git a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
index 6cfe07e50a..9a97d82ddc 100644
--- a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
+++ b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
@@ -15,8 +15,8 @@ PR45261
 
 diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
 index 5ac3606dc662..2638b1e8a05c 100644
---- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
-+++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+--- llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
++++ llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
 @@ -225,6 +225,21 @@ static bool isRegUsedByPhiNodes(unsigned DefReg,
    return false;
  }
@@ -50,8 +50,8 @@ index 5ac3606dc662..2638b1e8a05c 100644
      }
 diff --git a/llvm/test/CodeGen/X86/sink-local-value.ll b/llvm/test/CodeGen/X86/sink-local-value.ll
 index b0e511ac1189..f7d861ac9b6c 100644
---- a/llvm/test/CodeGen/X86/sink-local-value.ll
-+++ b/llvm/test/CodeGen/X86/sink-local-value.ll
+--- llvm/test/CodeGen/X86/sink-local-value.ll
++++ llvm/test/CodeGen/X86/sink-local-value.ll
 @@ -145,6 +145,42 @@ try.cont:                                         ; preds = %entry, %lpad
  ; CHECK:         retl
  
diff --git a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
index 3f16de5a2b..ec37dc16fd 100644
--- a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
+++ b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
@@ -21,8 +21,8 @@ llvm-svn: 373184
 
 diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
 index 354ae05bb841..c29fc5dbccfb 100644
---- a/llvm/lib/Analysis/ScalarEvolution.cpp
-+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
+--- llvm/lib/Analysis/ScalarEvolution.cpp
++++ llvm/lib/Analysis/ScalarEvolution.cpp
 @@ -4992,7 +4992,7 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN,
    // overflow.
    if (auto *BEInst = dyn_cast<Instruction>(BEValueV))
@@ -34,8 +34,8 @@ index 354ae05bb841..c29fc5dbccfb 100644
  }
 diff --git a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
 index db68a4f84c91..6fdf8c5df974 100644
---- a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
-+++ b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+--- llvm/test/Analysis/ScalarEvolution/limit-depth.ll
++++ llvm/test/Analysis/ScalarEvolution/limit-depth.ll
 @@ -46,7 +46,7 @@ define void @test_mul(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
  define void @test_sext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
  ; CHECK-LABEL: @test_sext
@@ -47,8 +47,8 @@ index db68a4f84c91..6fdf8c5df974 100644
  
 diff --git a/llvm/test/Analysis/ScalarEvolution/nsw.ll b/llvm/test/Analysis/ScalarEvolution/nsw.ll
 index 69427368625d..ca24f9d4a04b 100644
---- a/llvm/test/Analysis/ScalarEvolution/nsw.ll
-+++ b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+--- llvm/test/Analysis/ScalarEvolution/nsw.ll
++++ llvm/test/Analysis/ScalarEvolution/nsw.ll
 @@ -163,7 +163,7 @@ bb5:                                              ; preds = %bb2
  declare void @f(i32)
  
@@ -60,8 +60,8 @@ index 69427368625d..ca24f9d4a04b 100644
    %add = add nsw i32 %v, 1
 diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
 index 5e7d72d5e4f3..d0086ee2e6ac 100644
---- a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
-+++ b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+--- llvm/test/Analysis/ScalarEvolution/trip-count12.ll
++++ llvm/test/Analysis/ScalarEvolution/trip-count12.ll
 @@ -1,7 +1,7 @@
  ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
  
@@ -73,8 +73,8 @@ index 5e7d72d5e4f3..d0086ee2e6ac 100644
  define zeroext i16 @test(i16* nocapture %p, i32 %len) nounwind readonly {
 diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
 index c0a1d12fa00e..9a080b34743f 100644
---- a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
-+++ b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+--- llvm/test/Analysis/ScalarEvolution/trip-count9.ll
++++ llvm/test/Analysis/ScalarEvolution/trip-count9.ll
 @@ -179,7 +179,7 @@ exit:
  }
  
diff --git a/gnu/packages/patches/lsof-fatal-test-failures.patch b/gnu/packages/patches/lsof-fatal-test-failures.patch
new file mode 100644
index 0000000000..e874ba6ad4
--- /dev/null
+++ b/gnu/packages/patches/lsof-fatal-test-failures.patch
@@ -0,0 +1,58 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Mon, 23 Nov 2020 05:36:53 +0100
+Subject: [PATCH] gnu: lsof: Make test failures fatal.
+
+Submitted upstream[0].
+
+[0]: https://github.com/lsof-org/lsof/pull/144
+
+diff --git a/tests/Makefile b/tests/Makefile
+index 08574a0..2923bb8 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -27,7 +27,7 @@ all:	${CKTSTDB} ${BASTST} ${STDTST} FRC
+ 	  exit 1 ;\
+ 	fi
+ 	@rm -f config.LT*
+-	-@err=0; \
++	@err=0; \
+ 	echo ""; \
+ 	echo "Basic test:"; \
+ 	./${BASTST}; \
+@@ -54,8 +54,11 @@ all:	${CKTSTDB} ${BASTST} ${STDTST} FRC
+ 	    echo "Suggestion: try the optional tests: \"make opt\""; \
+ 	    echo ""; \
+ 	  fi; \
+-	fi;
+-	@rm -f config.LT*
++	fi; \
++	rm -f config.LT*; \
++	if [ $$err -ne 0 ]; then \
++	  exit 1; \
++	fi
+ 
+ auto:	ckDB silent FRC
+ 
+@@ -112,7 +115,7 @@ LTunix: LTunix.c ${CONFIG} ${LIBOBJ} ${HDR} config.ldflags
+ 
+ opt:	${CKTSTDB} ${OPTTST} FRC
+ 	@rm -f config.LT*
+-	-@err=0; \
++	@err=0; \
+ 	echo ""; \
+ 	echo "Optional tests:"; \
+ 	for i in ${OPTTST}; do \
+@@ -126,8 +129,11 @@ opt:	${CKTSTDB} ${OPTTST} FRC
+ 	else \
+ 	  echo "All optional tests succeeded."; \
+ 	fi; \
+-	echo "";
+-	@rm -f config.LT*
++	echo ""; \
++	rm -f config.LT*; \
++	if [ $$err -ne 0 ]; then \
++	  exit 1; \
++	fi
+ 
+ optional: opt
+ 
diff --git a/gnu/packages/patches/multipath-tools-sans-systemd.patch b/gnu/packages/patches/multipath-tools-sans-systemd.patch
deleted file mode 100644
index 8f3144718c..0000000000
--- a/gnu/packages/patches/multipath-tools-sans-systemd.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-Fix various compiler warnings when built without systemd.
-
-Submitted upstream at <https://www.redhat.com/archives/dm-devel/2020-May/thread.html>.
-
-diff --git a/libmultipath/config.c b/libmultipath/config.c
---- a/libmultipath/config.c
-+++ b/libmultipath/config.c
-@@ -696,7 +696,7 @@ process_config_dir(struct config *conf, char *dir)
- 	pthread_cleanup_pop(1);
- }
- 
--static void set_max_checkint_from_watchdog(struct config *conf)
-+static void set_max_checkint_from_watchdog(__attribute__((unused)) struct config *conf)
- {
- #ifdef USE_SYSTEMD
- 	char *envp = getenv("WATCHDOG_USEC");
-diff --git a/multipathd/main.c b/multipathd/main.c
---- a/multipathd/main.c
-+++ b/multipathd/main.c
-@@ -176,6 +176,7 @@ daemon_status(void)
- /*
-  * I love you too, systemd ...
-  */
-+#ifdef USE_SYSTEMD
- static const char *
- sd_notify_status(enum daemon_status state)
- {
-@@ -195,7 +196,6 @@ sd_notify_status(enum daemon_status state)
- 	return NULL;
- }
- 
--#ifdef USE_SYSTEMD
- static void do_sd_notify(enum daemon_status old_state,
- 			 enum daemon_status new_state)
- {
-@@ -247,7 +247,9 @@ enum daemon_status wait_for_state_change_if(enum daemon_status oldstate,
- static void __post_config_state(enum daemon_status state)
- {
- 	if (state != running_state && running_state != DAEMON_SHUTDOWN) {
--		enum daemon_status old_state = running_state;
-+		/* save state for sd_notify */
-+		enum daemon_status
-+			__attribute__((unused)) old_state = running_state;
- 
- 		running_state = state;
- 		pthread_cond_broadcast(&config_cond);
-@@ -272,7 +274,9 @@ int set_config_state(enum daemon_status state)
- 	pthread_cleanup_push(config_cleanup, NULL);
- 	pthread_mutex_lock(&config_lock);
- 	if (running_state != state) {
--		enum daemon_status old_state = running_state;
-+		/* save state for sd_notify */
-+		enum daemon_status
-+			__attribute__((unused)) old_state = running_state;
- 
- 		if (running_state == DAEMON_SHUTDOWN)
- 			rc = EINVAL;
-@@ -2280,7 +2284,6 @@ checkerloop (void *ap)
- 	struct timespec last_time;
- 	struct config *conf;
- 	int foreign_tick = 0;
--	bool use_watchdog;
- 
- 	pthread_cleanup_push(rcu_unregister, NULL);
- 	rcu_register_thread();
-@@ -2292,11 +2295,15 @@ checkerloop (void *ap)
- 	get_monotonic_time(&last_time);
- 	last_time.tv_sec -= 1;
- 
--	/* use_watchdog is set from process environment and never changes */
- 	conf = get_multipath_config();
--	use_watchdog = conf->use_watchdog;
- 	put_multipath_config(conf);
- 
-+#ifdef USE_SYSTEMD
-+	/* use_watchdog is set from process environment and never changes */
-+	bool use_watchdog;
-+	use_watchdog = conf->use_watchdog;
-+#endif
-+
- 	while (1) {
- 		struct timespec diff_time, start_time, end_time;
- 		int num_paths = 0, strict_timing, rc = 0;
diff --git a/gnu/packages/patches/mupdf-fix-linkage.patch b/gnu/packages/patches/mupdf-fix-linkage.patch
new file mode 100644
index 0000000000..4ffd1c6a77
--- /dev/null
+++ b/gnu/packages/patches/mupdf-fix-linkage.patch
@@ -0,0 +1,27 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Tue, 24 Nov 2020 10:29:28 +0000
+Subject: [PATCH] gnu: mupdf: Fix linkage.
+
+Replace broken linkage to ‘build/shared-release/libmupdf.so’ with the
+proper ‘-L$(libdir) -lmupdf’ incantation, and fix libmupdf.so's mode.
+
+--- mupdf-1.18.0-source.org/Makefile
++++ mupdf-1.18.0-source/Makefile
+@@ -61,7 +61,7 @@
+ ifdef RANLIB
+   RANLIB_CMD = $(QUIET_RANLIB) $(RANLIB) $@
+ endif
+-LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
++LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $(subst $(MUPDF_LIB),-L$(libdir) -L$(OUT) -lmupdf,$^) $(LIBS)
+ TAGS_CMD = $(QUIET_TAGS) ctags -R --c-kinds=+p
+ WINDRES_CMD = $(QUIET_WINDRES) $(MKTGTDIR) ; $(WINDRES) $< $@
+ OBJCOPY_CMD = $(QUIET_OBJCOPY) $(MKTGTDIR) ; $(LD) -r -b binary -z noexecstack -o $@ $<
+@@ -364,7 +364,7 @@ install: libs apps
+ 	install -m 644 include/mupdf/pdf/*.h $(DESTDIR)$(incdir)/mupdf/pdf
+ 
+ 	install -d $(DESTDIR)$(libdir)
+-	install -m 644 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
++	install -m 755 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
+ 
+ 	install -d $(DESTDIR)$(bindir)
+ 	install -m 755 $(TOOL_APPS) $(VIEW_APPS) $(DESTDIR)$(bindir)
diff --git a/gnu/packages/patches/mutt-store-references.patch b/gnu/packages/patches/mutt-store-references.patch
index 3b69c7b0bd..77d1680d60 100644
--- a/gnu/packages/patches/mutt-store-references.patch
+++ b/gnu/packages/patches/mutt-store-references.patch
@@ -2,15 +2,16 @@ By default 'mutt' embeds configure flags and the output of 'gcc -v',
 which contains the store file name of Bash and GCC.  This patch makes
 sure we don't embed a reference to these in 'mutt'.
 
---- mutt-1.5.23/txt2c.sh	2015-06-26 22:56:56.500731643 +0200
-+++ mutt-1.5.23/txt2c.sh	2015-06-26 22:57:26.664583900 +0200
+diff --git a/txt2c.sh b/txt2c.sh
+index f634bb9..53845cf 100755
+--- a/txt2c.sh
++++ b/txt2c.sh
 @@ -21,6 +21,8 @@ txt2c_fallback () {
  	echo ";"
  }
  
 +echo "unsigned char $1[] = \"value of '$1' not kept\";"
 +exit 0
- ./txt2c test </dev/null >/dev/null 2>&1 &&
- ./txt2c "$1" ||
- txt2c_fallback "$1"
-
+ if ./txt2c test </dev/null >/dev/null 2>&1; then
+     ./txt2c "$1"
+ else
diff --git a/gnu/packages/patches/netcdf-date-time.patch b/gnu/packages/patches/netcdf-date-time.patch
index a4e7925aa1..0bdfc55299 100644
--- a/gnu/packages/patches/netcdf-date-time.patch
+++ b/gnu/packages/patches/netcdf-date-time.patch
@@ -3,9 +3,9 @@
 @@ -13,7 +13,7 @@
  #endif
  
- /* Tell the user the version of netCDF. */
+ /** @internal The version string for the library, used by
+  * nc_inq_libvers(). */
 -static const char nc_libvers[] = PACKAGE_VERSION " of "__DATE__" "__TIME__" $";
-+static const char nc_libvers[] = PACKAGE_VERSION" $";
++static const char nc_libvers[] = PACKAGE_VERSION " $";
  
  /**
- \defgroup lib_version Library Version
diff --git a/gnu/packages/patches/netcdf-tst_h_par.patch b/gnu/packages/patches/netcdf-tst_h_par.patch
deleted file mode 100644
index ac14a4c0a2..0000000000
--- a/gnu/packages/patches/netcdf-tst_h_par.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From a83702834938b23cc2e843589aa223e2024a7e6f Mon Sep 17 00:00:00 2001
-From: Orion Poplawski <orion@cora.nwra.com>
-Date: Tue, 29 Nov 2016 11:48:01 -0700
-Subject: [PATCH] Add missing #include "err_macros.h" to tst_h_par.c
-
----
- h5_test/tst_h_par.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/h5_test/tst_h_par.c b/h5_test/tst_h_par.c
-index c3da7f4..a419d55 100644
---- a/h5_test/tst_h_par.c
-+++ b/h5_test/tst_h_par.c
-@@ -11,6 +11,7 @@
-    $Id: tst_h_par.c,v 1.15 2010/05/25 13:53:04 ed Exp $
- */
- #include <nc_tests.h>
-+#include "err_macros.h"
- #include <hdf5.h>
- 
- /* Defining USE_MPE causes the MPE trace library to be used (and you
diff --git a/gnu/packages/patches/oath-toolkit-glibc-compat.patch b/gnu/packages/patches/oath-toolkit-glibc-compat.patch
deleted file mode 100644
index 22814599e5..0000000000
--- a/gnu/packages/patches/oath-toolkit-glibc-compat.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-Adjust the bundled Gnulib to cope with removal of libio interface in Glibc 2.28.
-
-Based on this upstream gnulib patch:
-https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a71827c0bc5e0ec67af23edef4f15cee8e
-
---- a/liboath/gl/fflush.c
-+++ b/liboath/gl/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 @@
- 
- #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, Android */
-@@ -148,7 +148,7 @@
-   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);
- 
---- a/liboath/gl/fpurge.c
-+++ b/liboath/gl/fpurge.c
-@@ -62,7 +62,7 @@
-   /* 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.  */
---- a/libaoth/gl/freading.c
-+++ b/liboath/gl/freading.c
-@@ -31,7 +31,7 @@
-   /* 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));
---- a/liboath/gl/fseeko.c
-+++ b/liboath/gl/fseeko.c
-@@ -47,7 +47,7 @@
- #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 @@
-           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__
---- a/liboath/gl/stdio-impl.h
-+++ b/liboath/gl/stdio-impl.h
-@@ -18,6 +18,11 @@
-    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, so define it here for now.  */
-+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-+# define _IO_IN_BACKUP 0x100
-+#endif
-+
- /* BSD stdio derived implementations.  */
- 
- #if defined __NetBSD__                         /* NetBSD */
diff --git a/gnu/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch b/gnu/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch
deleted file mode 100644
index fd9a4c9401..0000000000
--- a/gnu/packages/patches/ocaml-bisect-fix-camlp4-in-another-directory.patch
+++ /dev/null
@@ -1,283 +0,0 @@
-From bc3b353cb2f26cf10aa5c5caebddf6d3d5b1e318 Mon Sep 17 00:00:00 2001
-From: Julien Lepiller <julien@lepiller.eu>
-Date: Fri, 21 Sep 2018 22:31:29 +0200
-Subject: [PATCH] fix camlp4 in another directory
-
----
- Makefile                              | 11 ++++++-----
- configure                             | 13 ++++++++++++-
- tests/Makefile                        |  2 +-
- tests/camlp4-comments/Makefile        |  2 +-
- tests/camlp4-exclude-file/Makefile    |  2 +-
- tests/camlp4-exclude/Makefile         |  2 +-
- tests/camlp4-instrument-fast/Makefile |  2 +-
- tests/camlp4-instrument/Makefile      |  2 +-
- tests/combine-expr/Makefile           |  2 +-
- tests/ppx-comments/Makefile           |  2 +-
- tests/ppx-exclude-file/Makefile       |  2 +-
- tests/ppx-exclude/Makefile            |  2 +-
- tests/ppx-instrument-fast/Makefile    |  2 +-
- tests/ppx-instrument/Makefile         |  2 +-
- tests/report/Makefile                 |  2 +-
- 15 files changed, 31 insertions(+), 19 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index b0980ee..6697922 100644
---- a/Makefile
-+++ b/Makefile
-@@ -25,7 +25,7 @@ PATH_BUILD=$(PATH_BASE)/_build
- PATH_OCAMLDOC=$(PATH_BASE)/ocamldoc
- PATH_SRC=$(PATH_BASE)/src
- PATH_TESTS=$(PATH_BASE)/tests
--PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
-+PATH_INSTALL=$(PREFIX)/lib/ocaml/bisect
- 
- 
- # DEFINITIONS
-@@ -33,7 +33,8 @@ PATH_INSTALL=$(PATH_OCAML_PREFIX)/lib/ocaml/bisect
- PROJECT_NAME=bisect
- OCAMLBUILD=ocamlbuild
- OCAMLBUILD_ENV=WARNINGS=$(WARNINGS) PATH_OCAML_PREFIX=$(PATH_OCAML_PREFIX)
--OCAMLBUILD_FLAGS=-classic-display -no-links
-+CAMLP4_INCLUDE=$(shell test -z $(CAMLP4_LIBDIR) || echo "-cflags -I,$(CAMLP4_LIBDIR)")
-+OCAMLBUILD_FLAGS=-classic-display -no-links $(CAMLP4_INCLUDE)
- MODULES_ODOCL=$(PROJECT_NAME).odocl
- MODULES_MLPACK=$(PROJECT_NAME).mlpack
- MODULES_MLPACK_PP=$(PROJECT_NAME)_pp.mlpack
-@@ -80,11 +81,11 @@ veryclean: clean
- 	rm -f $(PATH_OCAMLDOC)/*.html $(PATH_OCAMLDOC)/*.css
- 
- install: FORCE
--	cp $(PATH_BUILD)/src/report/report.byte $(PATH_OCAML_PREFIX)/bin/bisect-report; \
-+	cp $(PATH_BUILD)/src/report/report.byte $(PREFIX)/bin/bisect-report; \
- 	if [ "$(PPX)" = "TRUE" ]; then \
--	  cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PATH_OCAML_PREFIX)/bin; \
-+	  cp $(PATH_BUILD)/src/syntax/bisect_ppx.byte $(PREFIX)/bin; \
- 	fi; \
--	(which ocamlopt && cp $(PATH_BUILD)/src/report/report.native $(PATH_OCAML_PREFIX)/bin/bisect-report.opt || true); \
-+	(which ocamlopt && cp $(PATH_BUILD)/src/report/report.native $(PREFIX)/bin/bisect-report.opt || true); \
- 	if [ -x "$(PATH_OCAMLFIND)" ]; then \
- 	  $(PATH_OCAMLFIND) query $(PROJECT_NAME) && $(PATH_OCAMLFIND) remove $(PROJECT_NAME) || true; \
- 	  $(PATH_OCAMLFIND) install $(PROJECT_NAME) META -optional \
-diff --git a/configure b/configure
-index bb7ebf4..43ef46b 100755
---- a/configure
-+++ b/configure
-@@ -21,7 +21,9 @@
- # default values
- ocamlbuild=`which ocamlbuild || echo '/usr/local/bin/ocamlbuild'`
- bin_path=`dirname $ocamlbuild`
-+prefix=''
- ocaml_prefix=`dirname $bin_path`
-+camlp4_prefix=`dirname $(dirname $(which camlp4of))`
- ocamlfind=`which ocamlfind 2> /dev/null || echo ''`
- native_dynlink='TRUE'
- devel='FALSE'
-@@ -32,8 +34,12 @@ ppx='FALSE'
- while [ $# -gt 0 ]
- do
-     case "$1" in
-+        -prefix)
-+            prefix="$2"; shift;;
-         -ocaml-prefix)
-             ocaml_prefix="$2"; shift;;
-+        -camlp4-prefix)
-+            camlp4_prefix="$2"; shift;;
-         -ocamlfind)
-             ocamlfind="$2"; shift;;
-         -no-native-dynlink)
-@@ -45,7 +51,7 @@ do
-         -ppx)
-             ppx='TRUE';;
-         *)
--            echo "usage: $0 [-ocaml-prefix <path>] [-ocamlfind <path>] [-no-native-dynlink] [-devel]";
-+            echo "usage: $0 [-prefix <path>] [-ocaml-prefix <path>] [-camlp4-prefix <path>] [-ocamlfind <path>] [-no-native-dynlink] [-devel]";
-             exit 1;;
-         esac
-         shift
-@@ -57,6 +63,9 @@ if [ "$no_camlp4" = "TRUE" -a "$ppx" = "FALSE" ]; then
-   exit 1
- fi
- 
-+# prefix default value
-+test -z $prefix && prefix=$ocaml_prefix
-+
- # make options
- make_quiet=`make -f - <<EOF
- default: gnumake
-@@ -66,7 +75,9 @@ EOF`
- 
- # file creation
- echo "# timestamp: `date`" > Makefile.config
-+echo "PREFIX=$prefix" >> Makefile.config
- echo "PATH_OCAML_PREFIX=$ocaml_prefix" >> Makefile.config
-+echo "PATH_CAMLP4_PREFIX=$camlp4_prefix" >> Makefile.config
- echo "PATH_OCAMLFIND=$ocamlfind" >> Makefile.config
- echo "NATIVE_DYNLINK=$native_dynlink" >> Makefile.config
- echo "WARNINGS=$devel" >> Makefile.config
-diff --git a/tests/Makefile b/tests/Makefile
-index 1aba27f..9642323 100644
---- a/tests/Makefile
-+++ b/tests/Makefile
-@@ -41,7 +41,7 @@ one: FORCE
- 	else \
- 	  echo "Running tests for '$(NAME)'..." | tee -a _log; \
-           (cd $(NAME) && \
--	    $(MAKE) PATH_OCAML_BIN=$(PATH_OCAML_PREFIX)/bin \
-+	    $(MAKE) PATH_OCAML_BIN=$(PATH_OCAML_PREFIX)/bin PATH_CAMLP4_PREFIX=$(PATH_CAMLP4_PREFIX) \
- 	    COMPILER=ocamlc EXECUTABLE=bytecode RUN=./ LIB_EXT=cma EXE_SUFFIX='' \
- 	    REPORT=../../_build/src/report/report.byte && \
- 	  cd ..) || echo '*** error' >> _log; \
-diff --git a/tests/camlp4-comments/Makefile b/tests/camlp4-comments/Makefile
-index 33fca72..a918118 100644
---- a/tests/camlp4-comments/Makefile
-+++ b/tests/camlp4-comments/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cmp
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cmp
-diff --git a/tests/camlp4-exclude-file/Makefile b/tests/camlp4-exclude-file/Makefile
-index ab13983..e2520fa 100644
---- a/tests/camlp4-exclude-file/Makefile
-+++ b/tests/camlp4-exclude-file/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cmp
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude-file exclusions -o $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude-file exclusions -o $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cmp
-diff --git a/tests/camlp4-exclude/Makefile b/tests/camlp4-exclude/Makefile
-index 18aada4..d71a7bc 100644
---- a/tests/camlp4-exclude/Makefile
-+++ b/tests/camlp4-exclude/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cmp
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude 'f.*' -o $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -exclude 'f.*' -o $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cmp
-diff --git a/tests/camlp4-instrument-fast/Makefile b/tests/camlp4-instrument-fast/Makefile
-index f60767f..8506e38 100644
---- a/tests/camlp4-instrument-fast/Makefile
-+++ b/tests/camlp4-instrument-fast/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cmp
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo -mode fast $$file -o $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo -mode fast $$file -o $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cmp
-diff --git a/tests/camlp4-instrument/Makefile b/tests/camlp4-instrument/Makefile
-index 33fca72..a918118 100644
---- a/tests/camlp4-instrument/Makefile
-+++ b/tests/camlp4-instrument/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cmp
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/camlp4o$(EXE_SUFFIX) str.cma ../../_build/bisect_pp.cmo $$file -o $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cmp
-diff --git a/tests/combine-expr/Makefile b/tests/combine-expr/Makefile
-index 46ae9eb..e8e2af2 100644
---- a/tests/combine-expr/Makefile
-+++ b/tests/combine-expr/Makefile
-@@ -1,4 +1,4 @@
--COMPILE_FLAGS=-I ../../_build -pp '$(PATH_OCAML_BIN)/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
-+COMPILE_FLAGS=-I ../../_build -pp '$(PATH_CAMLP4_PREFIX)/bin/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
- 
- default: clean compile run report
- 
-diff --git a/tests/ppx-comments/Makefile b/tests/ppx-comments/Makefile
-index f8c645a..667526f 100644
---- a/tests/ppx-comments/Makefile
-+++ b/tests/ppx-comments/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cm*
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cm*
-diff --git a/tests/ppx-exclude-file/Makefile b/tests/ppx-exclude-file/Makefile
-index a575a77..0dd1a20 100644
---- a/tests/ppx-exclude-file/Makefile
-+++ b/tests/ppx-exclude-file/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cm*
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -exclude-file exclusions' -dsource $$file 2> $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -exclude-file exclusions' -dsource $$file 2> $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cm*
-diff --git a/tests/ppx-exclude/Makefile b/tests/ppx-exclude/Makefile
-index a517af4..f502a42 100644
---- a/tests/ppx-exclude/Makefile
-+++ b/tests/ppx-exclude/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cm*
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx "../../_build/src/syntax/bisect_ppx.byte -exclude 'f.*'" -dsource $$file 2> $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx "../../_build/src/syntax/bisect_ppx.byte -exclude 'f.*'" -dsource $$file 2> $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cm*
-diff --git a/tests/ppx-instrument-fast/Makefile b/tests/ppx-instrument-fast/Makefile
-index da78bb6..1195988 100644
---- a/tests/ppx-instrument-fast/Makefile
-+++ b/tests/ppx-instrument-fast/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cm*
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -mode fast' -dsource $$file 2> $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte -mode fast' -dsource $$file 2> $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cm*
-diff --git a/tests/ppx-instrument/Makefile b/tests/ppx-instrument/Makefile
-index f8c645a..667526f 100644
---- a/tests/ppx-instrument/Makefile
-+++ b/tests/ppx-instrument/Makefile
-@@ -2,7 +2,7 @@ default:
- 	@rm -fr *.result *.cm*
- 	@for file in *.ml; do \
- 		echo "     testing '$$file' ..."; \
--		$(PATH_OCAML_BIN)/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
-+		$(PATH_CAMLP4_PREFIX)/bin/ocamlc -c -I ../../_build -ppx '../../_build/src/syntax/bisect_ppx.byte' -dsource $$file 2> $$file.result; \
- 		diff -q $$file.reference $$file.result || exit 1; \
- 	done
- 	@rm -fr *.result *.cm*
-diff --git a/tests/report/Makefile b/tests/report/Makefile
-index a7ffe44..a968bf9 100644
---- a/tests/report/Makefile
-+++ b/tests/report/Makefile
-@@ -1,4 +1,4 @@
--COMPILE_FLAGS=-I ../../_build -pp '$(PATH_OCAML_BIN)/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
-+COMPILE_FLAGS=-I ../../_build -pp '$(PATH_CAMLP4_PREFIX)/bin/camlp4o str.cma -I ../../_build bisect_pp.cmo' bisect.$(LIB_EXT) $(FLAGS)
- XMLLINT=$(shell which xmllint)
- 
- default: clean compile run report
--- 
-2.18.0
-
diff --git a/gnu/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch b/gnu/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch
new file mode 100644
index 0000000000..1ebde1997f
--- /dev/null
+++ b/gnu/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch
@@ -0,0 +1,68 @@
+From 3c70f2ff18650c4794556049cd4ea22a58cc719e Mon Sep 17 00:00:00 2001
+From: Christophe Troestler <Christophe.Troestler@umons.ac.be>
+Date: Sun, 27 Sep 2020 23:20:52 +0200
+Subject: [PATCH] Do not store the Caml_ba_array_val pointer during surface
+ creation
+
+Extracted from Cairo git-tree on November 22, 2020 by
+Brett Gilio <brettg@gnu.org>
+---
+ src/cairo_stubs.c     | 3 ++-
+ tests/image_create.ml | 5 +++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/cairo_stubs.c b/src/cairo_stubs.c
+index 641ee2c..200abf3 100644
+--- a/src/cairo_stubs.c
++++ b/src/cairo_stubs.c
+@@ -1580,6 +1580,7 @@ static cairo_status_t caml_cairo_image_bigarray_attach_proxy
+                                      caml_cairo_image_bigarray_finalize);
+ }
+ 
++#define b (Caml_ba_array_val(vb))
+ #define SURFACE_CREATE_DATA(name)                                       \
+   CAMLexport value caml_cairo_image_surface_create_for_##name           \
+   (value vb, value vformat, value vwidth, value vheight, value vstride) \
+@@ -1588,7 +1589,6 @@ static cairo_status_t caml_cairo_image_bigarray_attach_proxy
+     CAMLlocal1(vsurf);                                                  \
+     cairo_surface_t* surf;                                              \
+     const int width =  Int_val(vwidth);                                 \
+-    struct caml_ba_array *b = Caml_ba_array_val(vb);                    \
+     cairo_status_t status;                                              \
+                                                                         \
+     if ((b->flags & CAML_BA_MANAGED_MASK) == CAML_BA_MAPPED_FILE)       \
+@@ -1610,6 +1610,7 @@ static cairo_status_t caml_cairo_image_bigarray_attach_proxy
+ 
+ SURFACE_CREATE_DATA(data8)
+ SURFACE_CREATE_DATA(data32)
++#undef b
+ 
+ #define SURFACE_GET_DATA(type, num_dims, dims ...)                      \
+   CAMLexport value caml_cairo_image_surface_get_##type(value vsurf)     \
+diff --git a/tests/image_create.ml b/tests/image_create.ml
+index eec98d6..b13c206 100644
+--- a/tests/image_create.ml
++++ b/tests/image_create.ml
+@@ -10,6 +10,7 @@ let create() =
+ 
+ let () =
+   let cr = create() in
++  printf "With Cairo handle:\n%!";
+   set_source_rgb cr 1. 1. 1.;
+   rectangle cr 0. 0. ~w:300. ~h:300.;
+   fill cr;
+@@ -21,9 +22,9 @@ let () =
+   show_text cr "Hello";
+   Gc.compact();  Gc.compact();
+ 
+-  eprintf "Write image\n%!";
++  eprintf "- Write image\n%!";
+   PNG.write (get_target cr) "test_image.png";
+-  eprintf "Finish surface\n%!";
++  eprintf "- Finish surface\n%!";
+   Surface.finish (get_target cr);
+   Gc.compact()
+ 
+-- 
+2.29.2
+
diff --git a/gnu/packages/patches/openocd-nrf52.patch b/gnu/packages/patches/openocd-nrf52.patch
deleted file mode 100644
index 0ec4348cb4..0000000000
--- a/gnu/packages/patches/openocd-nrf52.patch
+++ /dev/null
@@ -1,827 +0,0 @@
-This patch adds support for nRF52 series devices.  It is patchset 7 from
-<http://openocd.zylin.com/#/c/3511/>, which has been tested, but not
-merged yet in master.
-
-From: Michael Dietz <mjdietzx@gmail.com>
-Date: Mon, 30 May 2016 12:50:44 +0000 (-0700)
-Subject: Added support for nRF52 Series Devices.
-X-Git-Url: http://openocd.zylin.com/gitweb?p=openocd.git;a=commitdiff_plain;h=9ba15633e221d9d72e320372ba8f49d3f30d4bce
-
-Added support for nRF52 Series Devices.
-
-Both nrf52.c and nrf52.cfg are based off of previous nRF51 files.
-- Some possible race conditions with NVMC have been fixed in nRF52.c
-- Removed nrf51_get_probed_chip_if_halted() as the core does not have to be halted to perform operations where it is called.
-- Only registers that are needed by openOCD are defined, some registers in nRF51 don't exist in nRF52 and are removed.
-- Some all around cleanup has been done.
-- The protection mechanism is completely different on nRF52 and this has not been implemented yet - just prints a warning and returns for now.
-
-Change-Id: I4dd42c86f33f450709bb981806c2655f04aa6201
-Signed-off-by: Michael Dietz <mjdietzx@gmail.com>
----
-
-diff --git a/src/flash/nor/Makefile.am b/src/flash/nor/Makefile.am
-index 727e4f2..839667c 100644
---- a/src/flash/nor/Makefile.am
-+++ b/src/flash/nor/Makefile.am
-@@ -36,6 +36,7 @@ NOR_DRIVERS = \
- 	%D%/niietcm4.c \
- 	%D%/non_cfi.c \
- 	%D%/nrf51.c \
-+	%D%/nrf52.c \
- 	%D%/numicro.c \
- 	%D%/ocl.c \
- 	%D%/pic32mx.c \
-diff --git a/src/flash/nor/drivers.c b/src/flash/nor/drivers.c
-index 56a5cb2..071273e 100644
---- a/src/flash/nor/drivers.c
-+++ b/src/flash/nor/drivers.c
-@@ -48,6 +48,7 @@ extern struct flash_driver mdr_flash;
- extern struct flash_driver mrvlqspi_flash;
- extern struct flash_driver niietcm4_flash;
- extern struct flash_driver nrf51_flash;
-+extern struct flash_driver nrf52_flash;
- extern struct flash_driver numicro_flash;
- extern struct flash_driver ocl_flash;
- extern struct flash_driver pic32mx_flash;
-@@ -100,6 +101,7 @@ static struct flash_driver *flash_drivers[] = {
- 	&mrvlqspi_flash,
- 	&niietcm4_flash,
- 	&nrf51_flash,
-+       &nrf52_flash,
- 	&numicro_flash,
- 	&ocl_flash,
- 	&pic32mx_flash,
-diff --git a/src/flash/nor/nrf52.c b/src/flash/nor/nrf52.c
-new file mode 100644
-index 0000000..7f2bd35
---- /dev/null
-+++ b/src/flash/nor/nrf52.c
-@@ -0,0 +1,733 @@
-+/***************************************************************************
-+ *   Copyright (C) 2013 Synapse Product Development                        *
-+ *   Andrey Smirnov <andrew.smironv@gmail.com>                             *
-+ *   Angus Gratton <gus@projectgus.com>                                    *
-+ *   Erdem U. Altunyurt <spamjunkeater@gmail.com>                          *
-+ *                                                                         *
-+ *   This program is free software; you can redistribute it and/or modify  *
-+ *   it under the terms of the GNU General Public License as published by  *
-+ *   the Free Software Foundation; either version 2 of the License, or     *
-+ *   (at your option) any later version.                                   *
-+ *                                                                         *
-+ *   This program is distributed in the hope that it will be useful,       *
-+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
-+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
-+ *   GNU General Public License for more details.                          *
-+ *                                                                         *
-+ *   You should have received a copy of the GNU General Public License     *
-+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include <stdlib.h>
-+
-+#include "imp.h"
-+#include <target/algorithm.h>
-+#include <target/armv7m.h>
-+#include <helper/types.h>
-+
-+/* nRF52 Register addresses used by openOCD. */
-+#define NRF52_FLASH_BASE_ADDR        (0x0)
-+
-+#define NRF52_FICR_BASE_ADDR         (0x10000000)
-+#define NRF52_FICR_CODEPAGESIZE_ADDR (NRF52_FICR_BASE_ADDR | 0x010)
-+#define NRF52_FICR_CODESIZE_ADDR     (NRF52_FICR_BASE_ADDR | 0x014)
-+
-+#define NRF52_UICR_BASE_ADDR         (0x10001000)
-+
-+#define NRF52_NVMC_BASE_ADDR         (0x4001E000)
-+#define NRF52_NVMC_READY_ADDR        (NRF52_NVMC_BASE_ADDR | 0x400)
-+#define NRF52_NVMC_CONFIG_ADDR       (NRF52_NVMC_BASE_ADDR | 0x504)
-+#define NRF52_NVMC_ERASEPAGE_ADDR    (NRF52_NVMC_BASE_ADDR | 0x508)
-+#define NRF52_NVMC_ERASEALL_ADDR     (NRF52_NVMC_BASE_ADDR | 0x50C)
-+#define NRF52_NVMC_ERASEUICR_ADDR    (NRF52_NVMC_BASE_ADDR | 0x514)
-+
-+/* nRF52 bit fields. */
-+enum nrf52_nvmc_config_bits {
-+	NRF52_NVMC_CONFIG_REN = 0x0,
-+	NRF52_NVMC_CONFIG_WEN = 0x01,
-+	NRF52_NVMC_CONFIG_EEN = 0x02
-+};
-+
-+enum nrf52_nvmc_ready_bits {
-+	NRF52_NVMC_BUSY  = 0x0,
-+	NRF52_NVMC_READY = 0x01
-+};
-+
-+/* nRF52 state information. */
-+struct nrf52_info {
-+	uint32_t code_page_size; /* Size of FLASH page in bytes. */
-+	uint32_t code_memory_size; /* Size of Code FLASH region in bytes. */
-+
-+	struct {
-+		bool probed;
-+		int (*write) (struct flash_bank *bank,
-+				struct nrf52_info *chip,
-+				const uint8_t *buffer, uint32_t offset, uint32_t count);
-+	} bank[2]; /* There are two regions in nRF52 FLASH - Code and UICR. */
-+	struct target *target;
-+};
-+
-+static int nrf52_protect_check(struct flash_bank *bank);
-+
-+static int nrf52_probe(struct flash_bank *bank)
-+{
-+	int res;
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	res = target_read_u32(chip->target,
-+						NRF52_FICR_CODEPAGESIZE_ADDR,
-+						&chip->code_page_size);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Couldn't read code page size");
-+		return res;
-+	}
-+
-+	res = target_read_u32(chip->target,
-+						NRF52_FICR_CODESIZE_ADDR,
-+						&chip->code_memory_size);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Couldn't read code memory size");
-+		return res;
-+	}
-+
-+	chip->code_memory_size = chip->code_memory_size * chip->code_page_size;
-+
-+	if (bank->base == NRF52_FLASH_BASE_ADDR) {
-+		bank->size = chip->code_memory_size;
-+		bank->num_sectors = bank->size / chip->code_page_size;
-+		bank->sectors = calloc(bank->num_sectors,
-+							sizeof((bank->sectors)[0]));
-+		if (!bank->sectors)
-+			return ERROR_FLASH_BANK_NOT_PROBED;
-+
-+		/* Fill out the sector information: All nRF51 sectors are the same size. */
-+		for (int i = 0; i < bank->num_sectors; i++) {
-+			bank->sectors[i].size = chip->code_page_size;
-+			bank->sectors[i].offset	= i * chip->code_page_size;
-+
-+			/* Mark as unknown. */
-+			bank->sectors[i].is_erased = -1;
-+			bank->sectors[i].is_protected = -1;
-+		}
-+
-+		nrf52_protect_check(bank);
-+
-+		chip->bank[0].probed = true;
-+	} else { /* This is the UICR bank. */
-+		bank->size = chip->code_page_size;
-+		bank->num_sectors = 1;
-+		bank->sectors = calloc(bank->num_sectors,
-+							sizeof((bank->sectors)[0]));
-+		if (!bank->sectors)
-+			return ERROR_FLASH_BANK_NOT_PROBED;
-+
-+		bank->sectors[0].size = bank->size;
-+		bank->sectors[0].offset	= 0;
-+
-+		bank->sectors[0].is_erased = -1;
-+		bank->sectors[0].is_protected = -1;
-+
-+		chip->bank[1].probed = true;
-+	}
-+
-+	return ERROR_OK;
-+}
-+
-+static int nrf52_bank_is_probed(struct flash_bank *bank)
-+{
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	return chip->bank[bank->bank_number].probed;
-+}
-+
-+static int nrf52_auto_probe(struct flash_bank *bank)
-+{
-+	if (!nrf52_bank_is_probed(bank))
-+		return nrf52_probe(bank);
-+	else
-+		return ERROR_OK;
-+}
-+
-+static int nrf52_wait_for_nvmc(struct nrf52_info *chip)
-+{
-+	int res;
-+	uint32_t ready;
-+	int timeout = 100;
-+
-+	do {
-+		res = target_read_u32(chip->target, NRF52_NVMC_READY_ADDR, &ready);
-+		if (res != ERROR_OK) {
-+			LOG_ERROR("Couldn't read NVMC_READY register");
-+			return res;
-+		}
-+
-+		if (ready == NRF52_NVMC_READY)
-+			return ERROR_OK;
-+
-+		alive_sleep(1);
-+	} while (timeout--);
-+
-+	LOG_DEBUG("Timed out waiting for the NVMC to be ready");
-+	return ERROR_FLASH_BUSY;
-+}
-+
-+static int nrf52_nvmc_erase_enable(struct nrf52_info *chip)
-+{
-+	int res;
-+
-+	res = nrf52_wait_for_nvmc(chip);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	res = target_write_u32(chip->target,
-+						NRF52_NVMC_CONFIG_ADDR,
-+						NRF52_NVMC_CONFIG_EEN);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Failed to configure the NVMC for erasing");
-+		return res;
-+	}
-+
-+	return res;
-+}
-+
-+static int nrf52_nvmc_write_enable(struct nrf52_info *chip)
-+{
-+	int res;
-+
-+	res = nrf52_wait_for_nvmc(chip);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	res = target_write_u32(chip->target,
-+						NRF52_NVMC_CONFIG_ADDR,
-+						NRF52_NVMC_CONFIG_WEN);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Failed to configure the NVMC for writing");
-+		return res;
-+	}
-+
-+	return res;
-+}
-+
-+static int nrf52_nvmc_read_only(struct nrf52_info *chip)
-+{
-+	int res;
-+
-+	res = nrf52_wait_for_nvmc(chip);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	res = target_write_u32(chip->target,
-+						NRF52_NVMC_CONFIG_ADDR,
-+						NRF52_NVMC_CONFIG_REN);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Failed to configure the NVMC for read-only");
-+		return res;
-+	}
-+
-+	return res;
-+}
-+
-+static int nrf52_nvmc_generic_erase(struct nrf52_info *chip,
-+								uint32_t erase_register,
-+								uint32_t erase_value)
-+{
-+	int res;
-+
-+	res = nrf52_nvmc_erase_enable(chip);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	res = target_write_u32(chip->target,
-+						erase_register,
-+						erase_value);
-+	if (res != ERROR_OK)
-+		LOG_ERROR("Failed to write NVMC erase register");
-+
-+	return nrf52_nvmc_read_only(chip);
-+}
-+
-+static int nrf52_protect_check(struct flash_bank *bank)
-+{
-+	LOG_WARNING("nrf52_protect_check() is not implemented for nRF52 series devices yet");
-+	return ERROR_OK;
-+}
-+
-+static int nrf52_protect(struct flash_bank *bank, int set, int first, int last)
-+{
-+	LOG_WARNING("nrf52_protect() is not implemented for nRF52 series devices yet");
-+	return ERROR_OK;
-+}
-+
-+static struct flash_sector *nrf52_find_sector_by_address(struct flash_bank *bank, uint32_t address)
-+{
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	for (int i = 0; i < bank->num_sectors; i++)
-+		if (bank->sectors[i].offset <= address &&
-+			address < (bank->sectors[i].offset + chip->code_page_size)) {
-+			return &bank->sectors[i];
-+		}
-+
-+	return NULL;
-+}
-+
-+static int nrf52_erase_all(struct nrf52_info *chip)
-+{
-+	LOG_DEBUG("Erasing all non-volatile memory");
-+	return nrf52_nvmc_generic_erase(chip,
-+								NRF52_NVMC_ERASEALL_ADDR,
-+								0x01);
-+}
-+
-+static int nrf52_erase_page(struct flash_bank *bank,
-+							struct nrf52_info *chip,
-+							struct flash_sector *sector)
-+{
-+	int res;
-+
-+	LOG_DEBUG("Erasing page at 0x%"PRIx32, sector->offset);
-+	if (sector->is_protected == 1) {
-+		LOG_ERROR("Cannot erase protected sector at 0x%" PRIx32, sector->offset);
-+		return ERROR_FAIL;
-+	}
-+
-+	if (bank->base == NRF52_UICR_BASE_ADDR) {
-+		res = nrf52_nvmc_generic_erase(chip,
-+									NRF52_NVMC_ERASEUICR_ADDR,
-+									0x00000001);
-+	} else {
-+		res = nrf52_nvmc_generic_erase(chip,
-+									NRF52_NVMC_ERASEPAGE_ADDR,
-+									sector->offset);
-+	}
-+
-+	if (res == ERROR_OK)
-+		sector->is_erased = 1;
-+	return res;
-+}
-+
-+static const uint8_t nrf52_flash_write_code[] = {
-+	/* See contrib/loaders/flash/cortex-m0.S */
-+	/* <wait_fifo>: */
-+	0x0d, 0x68,		/* ldr	r5,	[r1,	#0] */
-+	0x00, 0x2d,		/* cmp	r5,	#0 */
-+	0x0b, 0xd0,		/* beq.n	1e <exit> */
-+	0x4c, 0x68,		/* ldr	r4,	[r1,	#4] */
-+	0xac, 0x42,		/* cmp	r4,	r5 */
-+	0xf9, 0xd0,		/* beq.n	0 <wait_fifo> */
-+	0x20, 0xcc,		/* ldmia	r4!,	{r5} */
-+	0x20, 0xc3,		/* stmia	r3!,	{r5} */
-+	0x94, 0x42,		/* cmp	r4,	r2 */
-+	0x01, 0xd3,		/* bcc.n	18 <no_wrap> */
-+	0x0c, 0x46,		/* mov	r4,	r1 */
-+	0x08, 0x34,		/* adds	r4,	#8 */
-+	/* <no_wrap>: */
-+	0x4c, 0x60,		/* str	r4, [r1,	#4] */
-+	0x04, 0x38,		/* subs	r0, #4 */
-+	0xf0, 0xd1,		/* bne.n	0 <wait_fifo> */
-+	/* <exit>: */
-+	0x00, 0xbe		/* bkpt	0x0000 */
-+};
-+
-+
-+/* Start a low level flash write for the specified region */
-+static int nrf52_ll_flash_write(struct nrf52_info *chip, uint32_t offset, const uint8_t *buffer, uint32_t bytes)
-+{
-+	struct target *target = chip->target;
-+	uint32_t buffer_size = 8192;
-+	struct working_area *write_algorithm;
-+	struct working_area *source;
-+	uint32_t address = NRF52_FLASH_BASE_ADDR + offset;
-+	struct reg_param reg_params[4];
-+	struct armv7m_algorithm armv7m_info;
-+	int retval = ERROR_OK;
-+
-+	LOG_DEBUG("Writing buffer to flash offset=0x%"PRIx32" bytes=0x%"PRIx32, offset, bytes);
-+	assert(bytes % 4 == 0);
-+
-+	/* allocate working area with flash programming code */
-+	if (target_alloc_working_area(target, sizeof(nrf52_flash_write_code),
-+			&write_algorithm) != ERROR_OK) {
-+		LOG_WARNING("no working area available, falling back to slow memory writes");
-+
-+		for (; bytes > 0; bytes -= 4) {
-+			retval = target_write_memory(chip->target,
-+										offset, 4, 1, buffer);
-+			if (retval != ERROR_OK)
-+				return retval;
-+
-+			retval = nrf52_wait_for_nvmc(chip);
-+			if (retval != ERROR_OK)
-+				return retval;
-+
-+			offset += 4;
-+			buffer += 4;
-+		}
-+
-+		return ERROR_OK;
-+	}
-+
-+	LOG_WARNING("using fast async flash loader. This is currently supported");
-+	LOG_WARNING("only with ST-Link and CMSIS-DAP. If you have issues, add");
-+	LOG_WARNING("\"set WORKAREASIZE 0\" before sourcing nrf52.cfg to disable it");
-+
-+	retval = target_write_buffer(target, write_algorithm->address,
-+				sizeof(nrf52_flash_write_code),
-+				nrf52_flash_write_code);
-+	if (retval != ERROR_OK)
-+		return retval;
-+
-+	/* memory buffer */
-+	while (target_alloc_working_area(target, buffer_size, &source) != ERROR_OK) {
-+		buffer_size /= 2;
-+		buffer_size &= ~3UL; /* Make sure it's 4 byte aligned */
-+		if (buffer_size <= 256) {
-+			/* free working area, write algorithm already allocated */
-+			target_free_working_area(target, write_algorithm);
-+
-+			LOG_WARNING("No large enough working area available, can't do block memory writes");
-+			return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
-+		}
-+	}
-+
-+	armv7m_info.common_magic = ARMV7M_COMMON_MAGIC;
-+	armv7m_info.core_mode = ARM_MODE_THREAD;
-+
-+	init_reg_param(&reg_params[0], "r0", 32, PARAM_IN_OUT);	/* byte count */
-+	init_reg_param(&reg_params[1], "r1", 32, PARAM_OUT);	/* buffer start */
-+	init_reg_param(&reg_params[2], "r2", 32, PARAM_OUT);	/* buffer end */
-+	init_reg_param(&reg_params[3], "r3", 32, PARAM_IN_OUT);	/* target address */
-+
-+	buf_set_u32(reg_params[0].value, 0, 32, bytes);
-+	buf_set_u32(reg_params[1].value, 0, 32, source->address);
-+	buf_set_u32(reg_params[2].value, 0, 32, source->address + source->size);
-+	buf_set_u32(reg_params[3].value, 0, 32, address);
-+
-+	retval = target_run_flash_async_algorithm(target, buffer, bytes/4, 4,
-+			0, NULL,
-+			4, reg_params,
-+			source->address, source->size,
-+			write_algorithm->address, 0,
-+			&armv7m_info);
-+
-+	target_free_working_area(target, source);
-+	target_free_working_area(target, write_algorithm);
-+
-+	destroy_reg_param(&reg_params[0]);
-+	destroy_reg_param(&reg_params[1]);
-+	destroy_reg_param(&reg_params[2]);
-+	destroy_reg_param(&reg_params[3]);
-+
-+	return retval;
-+}
-+
-+/* Check and erase flash sectors in specified range, then start a low level page write.
-+   start/end must be sector aligned.
-+*/
-+static int nrf52_write_pages(struct flash_bank *bank, uint32_t start, uint32_t end, const uint8_t *buffer)
-+{
-+	int res;
-+	uint32_t offset;
-+	struct flash_sector *sector;
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	assert(start % chip->code_page_size == 0);
-+	assert(end % chip->code_page_size == 0);
-+
-+	/* Erase all sectors */
-+	for (offset = start; offset < end; offset += chip->code_page_size) {
-+		sector = nrf52_find_sector_by_address(bank, offset);
-+
-+		if (sector == NULL) {
-+			LOG_ERROR("Invalid sector @ 0x%08"PRIx32, offset);
-+			return ERROR_FLASH_SECTOR_INVALID;
-+		}
-+
-+		if (sector->is_protected == 1) {
-+			LOG_ERROR("Can't erase protected sector @ 0x%08"PRIx32, offset);
-+			return ERROR_FAIL;
-+		}
-+
-+		if (sector->is_erased != 1) {	/* 1 = erased, 0= not erased, -1 = unknown */
-+			res = nrf52_erase_page(bank, chip, sector);
-+			if (res != ERROR_OK) {
-+				LOG_ERROR("Failed to erase sector @ 0x%08"PRIx32, sector->offset);
-+				return res;
-+			}
-+		}
-+		sector->is_erased = 1;
-+	}
-+
-+	res = nrf52_nvmc_write_enable(chip);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	res = nrf52_ll_flash_write(chip, start, buffer, (end - start));
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Failed to write FLASH");
-+		nrf52_nvmc_read_only(chip);
-+		return res;
-+	}
-+
-+	return nrf52_nvmc_read_only(chip);
-+}
-+
-+static int nrf52_erase(struct flash_bank *bank, int first, int last)
-+{
-+	int res = ERROR_OK;
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	/* For each sector to be erased */
-+	for (int s = first; s <= last && res == ERROR_OK; s++)
-+		res = nrf52_erase_page(bank, chip, &bank->sectors[s]);
-+
-+	return res;
-+}
-+
-+static int nrf52_code_flash_write(struct flash_bank *bank,
-+								struct nrf52_info *chip,
-+								const uint8_t *buffer, uint32_t offset, uint32_t count)
-+{
-+	int res;
-+	/* Need to perform reads to fill any gaps we need to preserve in the first page,
-+	   before the start of buffer, or in the last page, after the end of buffer */
-+	uint32_t first_page = offset / chip->code_page_size;
-+	uint32_t last_page = DIV_ROUND_UP(offset+count, chip->code_page_size);
-+
-+	uint32_t first_page_offset = first_page * chip->code_page_size;
-+	uint32_t last_page_offset = last_page * chip->code_page_size;
-+
-+	LOG_DEBUG("Padding write from 0x%08"PRIx32"-0x%08"PRIx32" as 0x%08"PRIx32"-0x%08"PRIx32,
-+			offset, offset+count, first_page_offset, last_page_offset);
-+
-+	uint32_t page_cnt = last_page - first_page;
-+	uint8_t buffer_to_flash[page_cnt * chip->code_page_size];
-+
-+	/* Fill in any space between start of first page and start of buffer */
-+	uint32_t pre = offset - first_page_offset;
-+	if (pre > 0) {
-+		res = target_read_memory(bank->target, first_page_offset, 1, pre, buffer_to_flash);
-+		if (res != ERROR_OK)
-+			return res;
-+	}
-+
-+	/* Fill in main contents of buffer */
-+	memcpy(buffer_to_flash + pre, buffer, count);
-+
-+	/* Fill in any space between end of buffer and end of last page */
-+	uint32_t post = last_page_offset - (offset + count);
-+	if (post > 0) {
-+		/* Retrieve the full row contents from Flash */
-+		res = target_read_memory(bank->target, offset + count, 1, post, buffer_to_flash + pre + count);
-+		if (res != ERROR_OK)
-+			return res;
-+	}
-+
-+	return nrf52_write_pages(bank, first_page_offset, last_page_offset, buffer_to_flash);
-+}
-+
-+static int nrf52_uicr_flash_write(struct flash_bank *bank,
-+								struct nrf52_info *chip,
-+								const uint8_t *buffer, uint32_t offset, uint32_t count)
-+{
-+	int res;
-+	uint32_t nrf52_uicr_size = chip->code_page_size;
-+	uint8_t uicr[nrf52_uicr_size];
-+	struct flash_sector *sector = &bank->sectors[0];
-+
-+	if ((offset + count) > nrf52_uicr_size)
-+		return ERROR_FAIL;
-+
-+	res = target_read_memory(bank->target, NRF52_UICR_BASE_ADDR, 1, nrf52_uicr_size, uicr);
-+
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	if (sector->is_erased != 1) {
-+		res = nrf52_erase_page(bank, chip, sector);
-+		if (res != ERROR_OK)
-+			return res;
-+	}
-+
-+	memcpy(&uicr[offset], buffer, count);
-+
-+	res = nrf52_nvmc_write_enable(chip);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	res = nrf52_ll_flash_write(chip, NRF52_UICR_BASE_ADDR, uicr, nrf52_uicr_size);
-+	if (res != ERROR_OK) {
-+		nrf52_nvmc_read_only(chip);
-+		return res;
-+	}
-+
-+	return nrf52_nvmc_read_only(chip);
-+}
-+
-+
-+static int nrf52_write(struct flash_bank *bank, const uint8_t *buffer,
-+					uint32_t offset, uint32_t count)
-+{
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	return chip->bank[bank->bank_number].write(bank, chip, buffer, offset, count);
-+}
-+
-+
-+FLASH_BANK_COMMAND_HANDLER(nrf52_flash_bank_command)
-+{
-+	static struct nrf52_info *chip;
-+
-+	assert(bank != NULL);
-+
-+	switch (bank->base) {
-+	case NRF52_FLASH_BASE_ADDR:
-+		bank->bank_number = 0;
-+		break;
-+	case NRF52_UICR_BASE_ADDR:
-+		bank->bank_number = 1;
-+		break;
-+	default:
-+		LOG_ERROR("Invalid bank address 0x%08" PRIx32, bank->base);
-+		return ERROR_FAIL;
-+	}
-+
-+	if (!chip) {
-+		/* Create a new chip */
-+		chip = calloc(1, sizeof(*chip));
-+		assert(chip != NULL);
-+
-+		chip->target = bank->target;
-+	}
-+
-+	switch (bank->base) {
-+	case NRF52_FLASH_BASE_ADDR:
-+		chip->bank[bank->bank_number].write = nrf52_code_flash_write;
-+		break;
-+	case NRF52_UICR_BASE_ADDR:
-+		chip->bank[bank->bank_number].write = nrf52_uicr_flash_write;
-+		break;
-+	}
-+
-+	chip->bank[bank->bank_number].probed = false;
-+	bank->driver_priv = chip;
-+
-+	return ERROR_OK;
-+}
-+
-+COMMAND_HANDLER(nrf52_handle_mass_erase_command)
-+{
-+	int res;
-+	struct flash_bank *bank = NULL;
-+	struct target *target = get_current_target(CMD_CTX);
-+
-+	res = get_flash_bank_by_addr(target, NRF52_FLASH_BASE_ADDR, true, &bank);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	assert(bank != NULL);
-+
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	res = nrf52_erase_all(chip);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Failed to erase the chip");
-+		nrf52_protect_check(bank);
-+		return res;
-+	}
-+
-+	for (int i = 0; i < bank->num_sectors; i++)
-+		bank->sectors[i].is_erased = 1;
-+
-+	res = nrf52_protect_check(bank);
-+	if (res != ERROR_OK) {
-+		LOG_ERROR("Failed to check chip's write protection");
-+		return res;
-+	}
-+
-+	res = get_flash_bank_by_addr(target, NRF52_UICR_BASE_ADDR, true, &bank);
-+	if (res != ERROR_OK)
-+		return res;
-+
-+	bank->sectors[0].is_erased = 1;
-+
-+	return ERROR_OK;
-+}
-+
-+static int nrf52_info(struct flash_bank *bank, char *buf, int buf_size)
-+{
-+	int res;
-+	uint32_t ficr[2];
-+	struct nrf52_info *chip = bank->driver_priv;
-+	assert(chip != NULL);
-+
-+	res = target_read_u32(chip->target, NRF52_FICR_CODEPAGESIZE_ADDR, &ficr[0]);
-+		if (res != ERROR_OK) {
-+			LOG_ERROR("Couldn't read NVMC_READY register");
-+			return res;
-+		}
-+
-+	res = target_read_u32(chip->target, NRF52_FICR_CODESIZE_ADDR, &ficr[1]);
-+		if (res != ERROR_OK) {
-+			LOG_ERROR("Couldn't read NVMC_READY register");
-+			return res;
-+		}
-+
-+	snprintf(buf, buf_size,
-+			"\n--------nRF52 Series Device--------\n\n"
-+			"\n[factory information control block]\n"
-+			"code page size: %"PRIu32"B\n"
-+			"code memory size: %"PRIu32"kB\n",
-+			ficr[0],
-+			(ficr[1] * ficr[0]) / 1024);
-+
-+	return ERROR_OK;
-+}
-+
-+static const struct command_registration nrf52_exec_command_handlers[] = {
-+	{
-+		.name		= "mass_erase",
-+		.handler	= nrf52_handle_mass_erase_command,
-+		.mode		= COMMAND_EXEC,
-+		.help		= "Erase all flash contents of the chip.",
-+	},
-+	COMMAND_REGISTRATION_DONE
-+};
-+
-+static const struct command_registration nrf52_command_handlers[] = {
-+	{
-+		.name	= "nrf52",
-+		.mode	= COMMAND_ANY,
-+		.help	= "nrf52 flash command group",
-+		.usage	= "",
-+		.chain	= nrf52_exec_command_handlers,
-+	},
-+	COMMAND_REGISTRATION_DONE
-+};
-+
-+struct flash_driver nrf52_flash = {
-+	.name			= "nrf52",
-+	.commands		= nrf52_command_handlers,
-+	.flash_bank_command	= nrf52_flash_bank_command,
-+	.info			= nrf52_info,
-+	.erase			= nrf52_erase,
-+	.protect		= nrf52_protect,
-+	.write			= nrf52_write,
-+	.read			= default_flash_read,
-+	.probe			= nrf52_probe,
-+	.auto_probe		= nrf52_auto_probe,
-+	.erase_check	= default_flash_blank_check,
-+	.protect_check	= nrf52_protect_check,
-+};
-diff --git a/tcl/target/nrf52.cfg b/tcl/target/nrf52.cfg
-index c1cbf1a..41a22ff 100644
---- a/tcl/target/nrf52.cfg
-+++ b/tcl/target/nrf52.cfg
-@@ -10,6 +10,13 @@ if { [info exists CHIPNAME] } {
- 	set _CHIPNAME nrf52
- }
- 
-+# Work-area is a space in RAM used for flash programming, by default use 16kB.
-+if { [info exists WORKAREASIZE] } {
-+        set _WORKAREASIZE $WORKAREASIZE
-+} else {
-+        set _WORKAREASIZE 0x4000
-+}
-+
- if { [info exists CPUTAPID] } {
- 	set _CPUTAPID $CPUTAPID
- } else {
-@@ -22,7 +29,15 @@ set _TARGETNAME $_CHIPNAME.cpu
- target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME
- 
- adapter_khz 10000
-+$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
- 
- if { ![using_hla] } {
- 	cortex_m reset_config sysresetreq
- }
-+
-+flash bank $_CHIPNAME.flash nrf52 0x00000000 0 1 1 $_TARGETNAME
-+flash bank $_CHIPNAME.uicr nrf52 0x10001000 0 1 1 $_TARGETNAME
-+
-+adapter_khz 1000
-+
-+$_TARGETNAME configure -event reset-end {}
diff --git a/gnu/packages/patches/openssh-fix-ssh-copy-id.patch b/gnu/packages/patches/openssh-fix-ssh-copy-id.patch
new file mode 100644
index 0000000000..6adba639a3
--- /dev/null
+++ b/gnu/packages/patches/openssh-fix-ssh-copy-id.patch
@@ -0,0 +1,38 @@
+Fix a bug where ssh-copy-id would fail with "EOF: command not found":
+
+https://github.com/openssh/openssh-portable/pull/206
+
+Patch copied from upstream source repository:
+
+https://github.com/openssh/openssh-portable/commit/d9e727dcc04a52caaac87543ea1d230e9e6b5604
+
+From d9e727dcc04a52caaac87543ea1d230e9e6b5604 Mon Sep 17 00:00:00 2001
+From: Oleg <Fallmay@users.noreply.github.com>
+Date: Thu, 1 Oct 2020 12:09:08 +0300
+Subject: [PATCH] Fix `EOF: command not found` error in ssh-copy-id
+
+---
+ contrib/ssh-copy-id | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id
+index 392f64f94..a76907717 100644
+--- a/contrib/ssh-copy-id
++++ b/contrib/ssh-copy-id
+@@ -247,7 +247,7 @@ installkeys_sh() {
+   #    the -z `tail ...` checks for a trailing newline. The echo adds one if was missing
+   #    the cat adds the keys we're getting via STDIN
+   #    and if available restorecon is used to restore the SELinux context
+-  INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF)
++  INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF
+ 	cd;
+ 	umask 077;
+ 	mkdir -p $(dirname "${AUTH_KEY_FILE}") &&
+@@ -258,6 +258,7 @@ installkeys_sh() {
+ 	  restorecon -F .ssh ${AUTH_KEY_FILE};
+ 	fi
+ EOF
++  )
+ 
+   # to defend against quirky remote shells: use 'exec sh -c' to get POSIX;
+   printf "exec sh -c '%s'" "${INSTALLKEYS_SH}"
diff --git a/gnu/packages/patches/perl-www-curl-fix-struct-void.patch b/gnu/packages/patches/perl-www-curl-fix-struct-void.patch
new file mode 100644
index 0000000000..b150950668
--- /dev/null
+++ b/gnu/packages/patches/perl-www-curl-fix-struct-void.patch
@@ -0,0 +1,24 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Sat, 14 Nov 2020 15:40:56 +0100
+Subject: [PATCH] gnu: perl-www-curl: Fix struct void* usage.
+
+Copied verbatim from Gentoo[0].  Fixes:
+
+  Curl.xs:76:12: error: expected ‘{’ before ‘void’
+       struct void *curlm;
+              ^~~~
+  Curl.xs:76:12: error: two or more data types in declaration specifiers
+
+[0]: https://694466.bugs.gentoo.org/attachment.cgi?id=595098
+
+--- WWW-Curl-4.17/Curl.xs	2014-02-21 18:08:30.000000000 +0200
++++ WWW-Curl-4.17.new/Curl.xs	2019-11-05 21:44:55.434395739 +0200
+@@ -73,7 +73,7 @@ typedef struct {
+ #ifdef __CURL_MULTI_H
+     struct CURLM *curlm;
+ #else
+-    struct void *curlm;
++    void *curlm;
+ #endif
+ } perl_curl_multi;
+ 
diff --git a/gnu/packages/patches/perl-www-curl-remove-symbol.patch b/gnu/packages/patches/perl-www-curl-remove-symbol.patch
index ae3486708b..c32a34897b 100644
--- a/gnu/packages/patches/perl-www-curl-remove-symbol.patch
+++ b/gnu/packages/patches/perl-www-curl-remove-symbol.patch
Binary files differdiff --git a/gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch b/gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch
new file mode 100644
index 0000000000..bd55d512cf
--- /dev/null
+++ b/gnu/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch
@@ -0,0 +1,25 @@
+From ff5ed26f21d304e867ab57781878069567deb23d Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Mon, 3 Aug 2020 19:49:58 +0000
+Subject: [PATCH] Fix build errors if PREFIX is different from ECM's PREFIX.
+
+See <https://bugs.kde.org/424483> for details
+---
+ KF5PlasmaMacros.cmake | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/KF5PlasmaMacros.cmake b/KF5PlasmaMacros.cmake
+index 494b42d56..80b3fd8dd 100644
+--- a/KF5PlasmaMacros.cmake
++++ b/KF5PlasmaMacros.cmake
+@@ -1,6 +1,5 @@
+ 
+-find_package(ECM 1.6.0 CONFIG REQUIRED)
+-include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
++include(KDEInstallDirs)
+ 
+ set(PLASMA_RELATIVE_DATA_INSTALL_DIR "plasma")
+ set(PLASMA_DATA_INSTALL_DIR "${KDE_INSTALL_DATADIR}/${PLASMA_RELATIVE_DATA_INSTALL_DIR}")
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch b/gnu/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch
deleted file mode 100644
index 6cdddefd50..0000000000
--- a/gnu/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Do not fail test on runtime warning like: RuntimeWarning: coroutine 'noop2' was
-never awaited. This could be related to
-https://github.com/aio-libs/aiohttp/commit/60f01cca36b9f9d8d35dd351384eaae2f8fd0d4b,
-which does not fix this issue though.
-
---- a/aiohttp/pytest_plugin.py	2019-10-09 18:52:31.000000000 +0200
-+++ b/aiohttp/pytest_plugin.py	2020-03-05 08:35:48.230396025 +0100
-@@ -120,15 +120,6 @@
-     """
-     with warnings.catch_warnings(record=True) as _warnings:
-         yield
--        rw = ['{w.filename}:{w.lineno}:{w.message}'.format(w=w)
--              for w in _warnings  # type: ignore
--              if w.category == RuntimeWarning]
--        if rw:
--            raise RuntimeError('{} Runtime Warning{},\n{}'.format(
--                len(rw),
--                '' if len(rw) == 1 else 's',
--                '\n'.join(rw)
--            ))
- 
- 
- @contextlib.contextmanager
---- a/tests/test_pytest_plugin.py	2020-03-05 09:26:58.502284893 +0100
-+++ a/tests/test_pytest_plugin.py	2020-03-05 09:27:06.074284619 +0100
-@@ -170,7 +170,7 @@
-     expected_outcomes = (
-         {'failed': 0, 'passed': 2}
-         if IS_PYPY and bool(os.environ.get('PYTHONASYNCIODEBUG'))
--        else {'failed': 1, 'passed': 1}
-+        else {'failed': 0, 'passed': 2}
-     )
-     """Under PyPy "coroutine 'foobar' was never awaited" does not happen."""
-     result.assert_outcomes(**expected_outcomes)
diff --git a/gnu/packages/patches/python-pydot-regression-test.patch b/gnu/packages/patches/python-pydot-regression-test.patch
new file mode 100644
index 0000000000..d2f0f5996e
--- /dev/null
+++ b/gnu/packages/patches/python-pydot-regression-test.patch
@@ -0,0 +1,79 @@
+This patch is taken from the upstream repository
+https://github.com/pydot/pydot/commit/a10ced4d132361027a545a471af4541dea8c5cf5.patch
+It should be included in the 1.4.2 release.
+
+
+From a10ced4d132361027a545a471af4541dea8c5cf5 Mon Sep 17 00:00:00 2001
+From: Peter Nowee <peter@peternowee.com>
+Date: Wed, 26 Jun 2019 15:43:38 +0800
+Subject: [PATCH] Fix multi.dot Graphviz regression test
+
+Commit d6602ad of 2018-12-01 fixed the regression test broken by commit
+2d55978 of 2016-07-01. This revealed that `test/graphs/multi.dot` was
+failing.
+
+`multi.dot` was introduced in commit 2b3f088 of 2010-11-07 together
+with many of the other tests still here today. It has not been touched
+since. It is a DOT-file containing two digraphs. The regression test
+compares the JPEG images rendered from the DOT-file by pydot with those
+rendered by Graphviz's dot directly.
+
+Commit 66734d2 of 2016-07-01 is the actual cause of the failure. It
+changed one of the render methods of the regression test,
+`_render_with_pydot`, from calculating a single hash for all the JPEG
+images to calculating separate hashes for each JPEG image and then
+concatenating those hashes in one long string. The other render method,
+`_render_with_graphviz`, still calculates a single hash over all data.
+For DOT-files that generate only one image the end result is the same,
+but because `multi.dot` has two graphs, it produces two images and this
+leads to comparing a string of two hashes with one single hash.
+
+I do not think the change in generating the hash was intentional, for
+the following reasons:
+- Commit 66734d2 states that its purpose was to adapt the test to an
+  API change in pydot. It does not mention a deliberate choice to
+  change the testing method.
+- There was no effort to change `_render_with_graphviz` to also produce
+  multiple hashes.
+- Except for easier debugging in case of a failing test with multiple
+  images (AFAICT, only `multi.dot`), I do not see much added benefit in
+  checking a concatenation of the hashes of all images vs. checking one
+  hash of all images together: In both cases the test will fail if one
+  or more images is rendered differently.
+- Given that there were many commits authored that same hour, including
+  commit 2d55978 which broke the regression tests, I suspect the author
+  did not run the tests for each individual commit, but only at the end
+  of that batch, and was therefore also not alerted of this change by
+  the test suite.
+
+Assuming that the change was not intended, this commit will now revert
+`_render_with_pydot` to the old behavior of calculating a single hash
+from all JPEG image data.
+
+Tested with Debian 9.9, Graphviz 2.38.0-17, Python 2.7.13-2 and 3.5.3-1.
+
+Fixes https://github.com/pydot/pydot/issues/204.
+---
+ test/pydot_unittest.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/test/pydot_unittest.py b/test/pydot_unittest.py
+index 881ee16..64aa856 100644
+--- a/test/pydot_unittest.py
++++ b/test/pydot_unittest.py
+@@ -194,11 +194,11 @@ def _render_with_graphviz(self, filename, encoding):
+ 
+     def _render_with_pydot(self, filename, encoding):
+         c = pydot.graph_from_dot_file(filename, encoding=encoding)
+-        sha = ''
++        jpe_data = bytearray()
+         for g in c:
+-            jpe_data = g.create(prog=TEST_PROGRAM, format='jpe', encoding=encoding)
+-            sha += sha256(jpe_data).hexdigest()
+-        return sha
++            jpe_data.extend(g.create(prog=TEST_PROGRAM, format='jpe',
++                                     encoding=encoding))
++        return sha256(jpe_data).hexdigest()
+ 
+     def test_my_regression_tests(self):
+         path = os.path.join(test_dir, TESTS_DIR_1)
diff --git a/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch b/gnu/packages/patches/python-robotframework-source-date-epoch.patch
index ccd87911d8..ccd87911d8 100644
--- a/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch
+++ b/gnu/packages/patches/python-robotframework-source-date-epoch.patch
diff --git a/gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch b/gnu/packages/patches/python2-pygobject-2-deprecation.patch
index 6a08e56351..6a08e56351 100644
--- a/gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch
+++ b/gnu/packages/patches/python2-pygobject-2-deprecation.patch
diff --git a/gnu/packages/patches/rcs-5.10.0-no-stdin.patch b/gnu/packages/patches/rcs-5.10.0-no-stdin.patch
new file mode 100644
index 0000000000..56edfe7b65
--- /dev/null
+++ b/gnu/packages/patches/rcs-5.10.0-no-stdin.patch
@@ -0,0 +1,57 @@
+http://git.savannah.gnu.org/cgit/rcs.git/patch/?id=8883c4f5a29be18e9ea09bd27a7b660830de45bb
+
+
+From 8883c4f5a29be18e9ea09bd27a7b660830de45bb Mon Sep 17 00:00:00 2001
+From: Thien-Thi Nguyen <ttn@gnu.org>
+Date: Fri, 23 Oct 2020 09:23:49 -0400
+Subject: [v] Don't test signal handling if stdin not ok.
+
+<https://mail.gnu.org/archive/html/bug-rcs/2020-10/msg00014.html>
+
+* tests/t632: If stdin is not open and connected to
+a tty, skip the signal handling portion of the test.
+---
+ tests/ChangeLog | 9 +++++++++
+ tests/t632      | 9 +++++++++
+ 2 files changed, 18 insertions(+)
+
+diff --git a/tests/ChangeLog b/tests/ChangeLog
+index c3715c0..0565058 100644
+--- a/tests/ChangeLog
++++ b/tests/ChangeLog
+@@ -1,3 +1,12 @@
++2020-10-23  Thien-Thi Nguyen  <ttn@gnu.org>
++
++	[v] Don't test signal handling if stdin not ok.
++
++	<https://mail.gnu.org/archive/html/bug-rcs/2020-10/msg00014.html>
++
++	* t632: If stdin is not open and connected to
++	a tty, skip the signal handling portion of the test.
++
+ 2020-10-20  Thien-Thi Nguyen  <ttn@gnu.org>
+ 
+ 	Release: 5.10.0
+diff --git a/tests/t632 b/tests/t632
+index df6acc9..677ec8c 100644
+--- a/tests/t632
++++ b/tests/t632
+@@ -40,6 +40,15 @@ echo | co -l -I $w \
+ # (This is skipped if GNU coreutils timeout(1) is not available.)
+ ##
+ 
++# <https://mail.gnu.org/archive/html/bug-rcs/2020-10/msg00014.html>
++# The timeout test needs co(1) to block on input.
++# If stdin is not open and connected to a tty, skip out.
++if test -t 0 ; then
++    echo STDIN OK
++else
++    exit 0
++fi
++
+ # TODO: Don't be lame!  Pick one:
+ # (a) Mimic timeout(1) w/ sh commands.
+ # (b) Incorporate heart of timeout(1) into ./btdt and use that.
+-- 
+cgit v1.2.1
+
diff --git a/gnu/packages/patches/rcs-5.9.4-noreturn.patch b/gnu/packages/patches/rcs-5.9.4-noreturn.patch
deleted file mode 100644
index 0c0c044ed5..0000000000
--- a/gnu/packages/patches/rcs-5.9.4-noreturn.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Builds with GCC-5 failed due to misplaced `_Noreturn (__attribute__((noreturn)))`
-statement.
-
-Patch copied from upstream source repository:
-
-http://git.savannah.gnu.org/cgit/rcs.git/commit/?h=p&id=260704a9164dd34cf7128d6b1e88075ffa3be054
-
-Upstream bug URL:
-
-https://savannah.gnu.org/bugs/?49568
-
-commit 260704a9164dd34cf7128d6b1e88075ffa3be054
-Author: Thien-Thi Nguyen <ttn@gnu.org>
-Date:   Thu Jun 18 21:25:53 2015 +0200
-
-    [C slog] Move ‘exiting’ to beginning of func decl.
-    
-    Apparently, ‘gcc --std=c11’ does not abide the ‘exiting’
-    attribute appearing at the end of the func decl.
-    Reported by Romain Francoise.
-    See also <https://bugs.debian.org/778100>.
-    
-    * src/b-complain.h (generic_fatal, fatal_syntax, fatal_sys)
-    * src/b-fb.h (Ierror, Oerror)
-    * src/base.h (unexpected_EOF, thank_you_and_goodnight):
-    Move ‘exiting’ attribute to beginning of func decl.
-
-diff --git a/src/b-complain.h b/src/b-complain.h
-index 0ffd157..ea0ffc5 100644
---- a/src/b-complain.h
-+++ b/src/b-complain.h
-@@ -32,12 +32,14 @@ extern void generic_warn (char const *who, char const *fmt, ...)
-   printf_string (2, 3);
- extern void generic_error (char const *who, char const *fmt, ...)
-   printf_string (2, 3);
-+exiting
- extern void generic_fatal (char const *who, char const *fmt, ...)
--  printf_string (2, 3) exiting;
-+  printf_string (2, 3);
-+exiting
- extern void fatal_syntax (size_t lno, char const *fmt, ...)
--  printf_string (2, 3) exiting;
--extern void fatal_sys (char const *who)
--  exiting;
-+  printf_string (2, 3);
-+exiting
-+extern void fatal_sys (char const *who);
- 
- /* Idioms.  Here, prefix P stands for "program" (general operation);
-    M for "manifestation"; R for "repository".  */
-diff --git a/src/b-fb.h b/src/b-fb.h
-index c9850e7..bf5eaf8 100644
---- a/src/b-fb.h
-+++ b/src/b-fb.h
-@@ -21,9 +21,11 @@
- */
- 
- extern int change_mode (int fd, mode_t mode);
--extern void Ierror (void) exiting;
-+exiting
-+extern void Ierror (void);
- extern void testIerror (FILE *f);
--extern void Oerror (void) exiting;
-+exiting
-+extern void Oerror (void);
- extern void testOerror (FILE *o);
- extern FILE *fopen_safer (char const *filename, char const *type);
- extern void Ozclose (FILE **p);
-diff --git a/src/base.h b/src/base.h
-index 163ee09..5e7a9f8 100644
---- a/src/base.h
-+++ b/src/base.h
-@@ -755,8 +755,8 @@ int dorewrite (bool lockflag, int changed);
- int donerewrite (int changed, time_t newRCStime);
- void ORCSclose (void);
- void ORCSerror (void);
--void unexpected_EOF (void)
--  exiting;
-+exiting
-+void unexpected_EOF (void);
- void initdiffcmd (struct diffcmd *dc);
- int getdiffcmd (struct fro *finfile, bool delimiter,
-                 FILE *foutfile, struct diffcmd *dc);
-@@ -831,8 +831,8 @@ char const *date2str (char const date[datesize],
-                       char datebuf[datesize + zonelenmax]);
- 
- /* rcsutil */
--void thank_you_and_goodnight (int const how)
--  exiting;
-+exiting
-+void thank_you_and_goodnight (int const how);
- /* These are for ‘thank_you_and_goodnight’.  */
- #define TYAG_ORCSERROR     (1 << 3)
- #define TYAG_DIRTMPUNLINK  (1 << 2)
diff --git a/gnu/packages/patches/sbcl-geco-fix-organism-class.patch b/gnu/packages/patches/sbcl-geco-fix-organism-class.patch
new file mode 100644
index 0000000000..817596241e
--- /dev/null
+++ b/gnu/packages/patches/sbcl-geco-fix-organism-class.patch
@@ -0,0 +1,13 @@
+Fix the ORGANISM class so that SBCL >= 2.0.9 can compile it without error.
+
+--- a/classes.lisp	2020-10-28 12:11:10.725659464 +0100
++++ b/classes.lisp	2020-10-31 17:34:36.822752447 +0100
+@@ -148,7 +148,7 @@
+     :accessor score
+     :initarg :score
+     :initform 'nil
+-    :type number)
++    :type (or number null))
+    (NORMALIZED-SCORE
+     :accessor normalized-score
+     :initarg :normalized-score
diff --git a/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch b/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch
deleted file mode 100644
index 39008cba5c..0000000000
--- a/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch
+++ /dev/null
@@ -1,642 +0,0 @@
-Fix build with Poppler 0.86.
-
-The original series of patches authored by Craig Bradney <mrb@scribus.info>
-and Jean Ghali <jghali@libertysurf.fr>, taken from
-https://gitweb.gentoo.org/repo/gentoo.git/tree/app-office/scribus/files
-
-diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp
---- a/scribus/plugins/import/pdf/importpdf.cpp
-+++ b/scribus/plugins/import/pdf/importpdf.cpp
-@@ -75,7 +75,11 @@ PdfPlug::PdfPlug(ScribusDoc* doc, int flags)
- QImage PdfPlug::readThumbnail(const QString& fName)

- {

- 	QString pdfFile = QDir::toNativeSeparators(fName);

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)

-+	globalParams.reset(new GlobalParams());

-+#else

- 	globalParams = new GlobalParams();

-+#endif

- 	if (globalParams)

- 	{

- #if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0)

-@@ -90,7 +94,9 @@ QImage PdfPlug::readThumbnail(const QString& fName)
- 			if (pdfDoc->getErrorCode() == errEncrypted)

- 			{

- 				delete pdfDoc;

-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)

- 				delete globalParams;

-+#endif

- 				return QImage();

- 			}

- 			if (pdfDoc->isOk())

-@@ -134,11 +140,15 @@ QImage PdfPlug::readThumbnail(const QString& fName)
- 				image.setText("YSize", QString("%1").arg(h));

- 				delete dev;

- 				delete pdfDoc;

-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)

- 				delete globalParams;

-+#endif

- 				return image;

- 			}

- 			delete pdfDoc;

-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)

- 			delete globalParams;

-+#endif

- 		}

- 	}

- 	return QImage();

-@@ -387,7 +397,11 @@ bool PdfPlug::convert(const QString& fn)
- 		qApp->processEvents();

- 	}

- 

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)

-+	globalParams.reset(new GlobalParams());

-+#else

- 	globalParams = new GlobalParams();

-+#endif

- 	GooString *userPW = nullptr;

- 	if (globalParams)

- 	{

-@@ -429,7 +443,9 @@ bool PdfPlug::convert(const QString& fn)
- 					if (progressDialog)

- 						progressDialog->close();

- 					delete pdfDoc;

-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)

- 					delete globalParams;

-+#endif

- 					return false;

- 				}

- 				if (progressDialog)

-@@ -474,7 +490,9 @@ bool PdfPlug::convert(const QString& fn)
- 							progressDialog->close();

- 						delete optImp;

- 						delete pdfDoc;

-+#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0)

- 						delete globalParams;

-+#endif

- 						return false;

- 					}

- 					pageString = optImp->getPagesString();

-@@ -838,11 +856,20 @@ bool PdfPlug::convert(const QString& fn)
- 								names = catDict.dictLookup("OpenAction");

- 								if (names.isDict())

- 								{

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+									std::unique_ptr<LinkAction> linkAction;

-+									linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI());

-+#else

- 									LinkAction *linkAction = nullptr;

- 									linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI());

-+#endif

- 									if (linkAction)

- 									{

--										LinkJavaScript *jsa = (LinkJavaScript*)linkAction;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+										LinkJavaScript *jsa = (LinkJavaScript*) linkAction.get();

-+#else

-+										LinkJavaScript *jsa = (LinkJavaScript*) linkAction;

-+#endif

- 										if (jsa->isOk())

- 										{

- 											QString script = UnicodeParsedString(jsa->getScript());

-@@ -908,8 +935,12 @@ bool PdfPlug::convert(const QString& fn)
- 		}

- 		delete pdfDoc;

- 	}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)

-+	globalParams.release();

-+#else

- 	delete globalParams;

- 	globalParams = nullptr;

-+#endif

- 

- //	qDebug() << "converting finished";

- //	qDebug() << "Imported" << Elements.count() << "Elements";

-@@ -1046,3 +1077,43 @@ QString PdfPlug::UnicodeParsedString(POPPLER_CONST GooString *s1)
- 	}

- 	return result;

- }

-+

-+QString PdfPlug::UnicodeParsedString(const std::string& s1)

-+{

-+	if (s1.length() == 0)

-+		return QString();

-+	GBool isUnicode;

-+	int i;

-+	Unicode u;

-+	QString result;

-+	if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff))

-+	{

-+		isUnicode = gTrue;

-+		i = 2;

-+		result.reserve((s1.length() - 2) / 2);

-+	}

-+	else

-+	{

-+		isUnicode = gFalse;

-+		i = 0;

-+		result.reserve(s1.length());

-+	}

-+	while (i < s1.length())

-+	{

-+		if (isUnicode)

-+		{

-+			u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff);

-+			i += 2;

-+		}

-+		else

-+		{

-+			u = s1.at(i) & 0xff;

-+			++i;

-+		}

-+		// #15616: imagemagick may write unicode strings incorrectly in PDF

-+		if (u == 0)

-+			continue;

-+		result += QChar( u );

-+	}

-+	return result;

-+}

-diff --git a/scribus/plugins/import/pdf/importpdf.h b/scribus/plugins/import/pdf/importpdf.h
---- a/scribus/plugins/import/pdf/importpdf.h
-+++ b/scribus/plugins/import/pdf/importpdf.h
-@@ -82,6 +82,7 @@ private:
- 	bool convert(const QString& fn);
- 	QRectF getCBox(int box, int pgNum);
- 	QString UnicodeParsedString(POPPLER_CONST GooString *s1);
-+	QString UnicodeParsedString(const std::string& s1);
- 	
- 	QList<PageItem*> Elements;
- 	double baseX, baseY;
-diff --git a/scribus/plugins/import/pdf/importpdfconfig.h b/scribus/plugins/import/pdf/importpdfconfig.h
---- a/scribus/plugins/import/pdf/importpdfconfig.h
-+++ b/scribus/plugins/import/pdf/importpdfconfig.h
-@@ -52,4 +52,16 @@ for which a new license (GPL+exception) is in place.
- #define POPPLER_REF

- #endif

- 

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 82, 0)

-+#define POPPLER_CONST_082 const

-+#else

-+#define POPPLER_CONST_082

-+#endif

-+

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0)

-+#define POPPLER_CONST_083 const

-+#else

-+#define POPPLER_CONST_083

-+#endif

-+

- #endif

-diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp
---- a/scribus/plugins/import/pdf/slaoutput.cpp
-+++ b/scribus/plugins/import/pdf/slaoutput.cpp
-@@ -308,9 +308,15 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano)
- }

- 

- /* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano)

-+{

-+	std::unique_ptr<LinkAction> linkAction;

-+#else

- LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano)

- {

- 	LinkAction *linkAction = nullptr;

-+#endif

- 	Object obj;

- 	Ref refa = ano->getRef();

- 

-@@ -455,7 +461,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do
- 			POPPLER_CONST GooString *ndst = gto->getNamedDest();

- 			if (ndst)

- 			{

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+				std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);

-+#else

- 				LinkDest *dstn = pdfDoc->findDest(ndst);

-+#endif

- 				if (dstn)

- 				{

- 					if (dstn->getKind() == destXYZ)

-@@ -499,7 +509,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do
- 			POPPLER_CONST GooString *ndst = gto->getNamedDest();

- 			if (ndst)

- 			{

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+				std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);

-+#else

- 				LinkDest *dstn = pdfDoc->findDest(ndst);

-+#endif

- 				if (dstn)

- 				{

- 					if (dstn->getKind() == destXYZ)

-@@ -967,7 +981,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- 				POPPLER_CONST GooString *ndst = gto->getNamedDest();

- 				if (ndst)

- 				{

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+					std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);

-+#else

- 					LinkDest *dstn = pdfDoc->findDest(ndst);

-+#endif

- 					if (dstn)

- 					{

- 						if (dstn->getKind() == destXYZ)

-@@ -1019,7 +1037,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- 				POPPLER_CONST GooString *ndst = gto->getNamedDest();

- 				if (ndst)

- 				{

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+					std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst);

-+#else

- 					LinkDest *dstn = pdfDoc->findDest(ndst);

-+#endif

- 					if (dstn)

- 					{

- 						if (dstn->getKind() == destXYZ)

-@@ -1088,96 +1110,148 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- 		else

- 			qDebug() << "Found unsupported Action of type" << Lact->getKind();

- 	}

--	LinkAction *Aact = SC_getAdditionalAction("D", ano);

-+	auto Aact = SC_getAdditionalAction("D", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setD_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("E", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setE_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("X", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setX_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("Fo", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setFo_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("Bl", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setBl_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("C", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setC_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("F", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setF_act(UnicodeParsedString(jsa->getScript()));

-@@ -1185,14 +1259,22 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- 				ite->annotation().setFormat(5);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("K", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setK_act(UnicodeParsedString(jsa->getScript()));

-@@ -1200,21 +1282,33 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano)
- 				ite->annotation().setFormat(5);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- 	Aact = SC_getAdditionalAction("V", ano);

- 	if (Aact)

- 	{

- 		if (Aact->getKind() == actionJavaScript)

- 		{

--			LinkJavaScript *jsa = (LinkJavaScript*)Aact;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact.get();

-+#else

-+			LinkJavaScript *jsa = (LinkJavaScript*) Aact;

-+#endif

- 			if (jsa->isOk())

- 			{

- 				ite->annotation().setV_act(UnicodeParsedString(jsa->getScript()));

- 				ite->annotation().setAAact(true);

- 			}

- 		}

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+		Aact.reset();

-+#else

- 		Aact = nullptr;

-+#endif

- 	}

- }

- 

-@@ -1224,6 +1318,11 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA)
- 	catalog = catA;

- 	pdfDoc = doc;

- 	updateGUICounter = 0;

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 84, 0)

-+	m_fontEngine = new SplashFontEngine(true, true, true, true);

-+#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 61, 0)

-+	m_fontEngine = new SplashFontEngine(globalParams->getEnableFreeType(), true, true, true);

-+#else

- 	m_fontEngine = new SplashFontEngine(

- #if HAVE_T1LIB_H

- 	globalParams->getEnableT1lib(),

-@@ -1234,6 +1333,7 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA)
- 	true,

- #endif

- 	true);

-+#endif

- }

- 

- void SlaOutputDev::startPage(int pageNum, GfxState *, XRef *)

-@@ -2784,7 +2884,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str,  i
- 	delete[] mbuffer;

- }

- 

--void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg)

-+void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int* maskColors, GBool inlineImg)

- {

- 	ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits());

- //	qDebug() << "Image Components" << colorMap->getNumPixelComps() << "Mask" << maskColors;

-@@ -3365,7 +3465,7 @@ err1:
- 		fontsrc->unref();

- }

- 

--void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, Unicode *u, int uLen)

-+void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, POPPLER_CONST_082 Unicode *u, int uLen)

- {

- 	double x1, y1, x2, y2;

- 	int render;

-@@ -3452,7 +3552,7 @@ void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, doub
- 	}

- }

- 

--GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen)

-+GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen)

- {

- //	qDebug() << "beginType3Char";

- 	GfxFont *gfxFont;

-@@ -3705,7 +3805,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotColor *color)
- 	return fNam;

- }

- 

--QString SlaOutputDev::convertPath(GfxPath *path)

-+QString SlaOutputDev::convertPath(POPPLER_CONST_083 GfxPath *path)

- {

- 	if (! path)

- 		return QString();

-@@ -3715,7 +3815,7 @@ QString SlaOutputDev::convertPath(GfxPath *path)
- 

- 	for (int i = 0; i < path->getNumSubpaths(); ++i)

- 	{

--		GfxSubpath * subpath = path->getSubpath(i);

-+		POPPLER_CONST_083 GfxSubpath * subpath = path->getSubpath(i);

- 		if (subpath->getNumPoints() > 0)

- 		{

- 			output += QString("M %1 %2").arg(subpath->getX(0)).arg(subpath->getY(0));

-@@ -3922,6 +4022,46 @@ QString SlaOutputDev::UnicodeParsedString(POPPLER_CONST GooString *s1)
- 	return result;

- }

- 

-+QString SlaOutputDev::UnicodeParsedString(const std::string& s1)

-+{

-+	if (s1.length() == 0)

-+		return QString();

-+	GBool isUnicode;

-+	int i;

-+	Unicode u;

-+	QString result;

-+	if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff))

-+	{

-+		isUnicode = gTrue;

-+		i = 2;

-+		result.reserve((s1.length() - 2) / 2);

-+	}

-+	else

-+	{

-+		isUnicode = gFalse;

-+		i = 0;

-+		result.reserve(s1.length());

-+	}

-+	while (i < s1.length())

-+	{

-+		if (isUnicode)

-+		{

-+			u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff);

-+			i += 2;

-+		}

-+		else

-+		{

-+			u = s1.at(i) & 0xff;

-+			++i;

-+		}

-+		// #15616: imagemagick may write unicode strings incorrectly in PDF

-+		if (u == 0)

-+			continue;

-+		result += QChar( u );

-+	}

-+	return result;

-+}

-+

- bool SlaOutputDev::checkClip()

- {

- 	bool ret = false;

-diff --git a/scribus/plugins/import/pdf/slaoutput.h b/scribus/plugins/import/pdf/slaoutput.h
---- a/scribus/plugins/import/pdf/slaoutput.h
-+++ b/scribus/plugins/import/pdf/slaoutput.h
-@@ -20,6 +20,8 @@ for which a new license (GPL+exception) is in place.
- #include <QTextStream>

- #include <QTransform>

- 

-+#include <memory>

-+

- #include "fpointarray.h"

- #include "importpdfconfig.h"

- #include "pageitem.h"

-@@ -159,7 +161,11 @@ public:
- 	virtual ~SlaOutputDev();

- 

- 	LinkAction* SC_getAction(AnnotWidget *ano);

-+#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0)

-+	std::unique_ptr<LinkAction> SC_getAdditionalAction(const char *key, AnnotWidget *ano);

-+#else

- 	LinkAction* SC_getAdditionalAction(const char *key, AnnotWidget *ano);

-+#endif

- 	static GBool annotations_callback(Annot *annota, void *user_data);

- 	bool handleTextAnnot(Annot* annota, double xCoor, double yCoor, double width, double height);

- 	bool handleLinkAnnot(Annot* annota, double xCoor, double yCoor, double width, double height);

-@@ -229,7 +235,7 @@ public:
- 

- 	//----- image drawing

- 	void drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool interpolate, GBool inlineImg) override;

--	void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) override;

-+	void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int *maskColors, GBool inlineImg) override;

- 	void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,

- 				   int width, int height,

- 				   GfxImageColorMap *colorMap,

-@@ -261,8 +267,8 @@ public:
- 	//----- text drawing

- 	void  beginTextObject(GfxState *state) override;

- 	void  endTextObject(GfxState *state) override;

--	void  drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, Unicode * /*u*/, int /*uLen*/) override;

--	GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, Unicode * /*u*/, int /*uLen*/) override;

-+	void  drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override;

-+	GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override;

- 	void  endType3Char(GfxState * /*state*/) override;

- 	void  type3D0(GfxState * /*state*/, double /*wx*/, double /*wy*/) override;

- 	void  type3D1(GfxState * /*state*/, double /*wx*/, double /*wy*/, double /*llx*/, double /*lly*/, double /*urx*/, double /*ury*/) override;

-@@ -282,11 +288,12 @@ private:
- 	void getPenState(GfxState *state);

- 	QString getColor(GfxColorSpace *color_space, POPPLER_CONST_070 GfxColor *color, int *shade);

- 	QString getAnnotationColor(const AnnotColor *color);

--	QString convertPath(GfxPath *path);

-+	QString convertPath(POPPLER_CONST_083 GfxPath *path);

- 	int getBlendMode(GfxState *state);

- 	void applyMask(PageItem *ite);

- 	void pushGroup(const QString& maskName = "", GBool forSoftMask = gFalse, GBool alpha = gFalse, bool inverted = false);

- 	QString UnicodeParsedString(POPPLER_CONST GooString *s1);

-+	QString UnicodeParsedString(const std::string& s1);

- 	bool checkClip();

- 	bool pathIsClosed;

- 	QString CurrColorFill;

diff --git a/gnu/packages/patches/sdcc-disable-non-free-code.patch b/gnu/packages/patches/sdcc-disable-non-free-code.patch
new file mode 100644
index 0000000000..545f0cbd69
--- /dev/null
+++ b/gnu/packages/patches/sdcc-disable-non-free-code.patch
@@ -0,0 +1,3643 @@
+This patch disables the use of non-free code distributed with SDCC by
+removing
+
+  - The "--disable-non-free" option to "configure" and the build logic
+    it controls;
+
+  - All references to the "device/non-free" source directory and the
+    corresponding "non-free" installation directory; and
+
+  - The "--use-non-free" and "--no-warn-non-free" compiler options and
+    references to them in build scripts and compiler output.
+
+It also updates SDCC's documentation to reflect these changes and to
+remove instructions that encourage the use of SDCC with non-free
+software.
+
+diff --git a/Makefile.common.in b/Makefile.common.in
+index 4c75cfa..9fa306d 100644
+--- a/Makefile.common.in
++++ b/Makefile.common.in
+@@ -65,7 +65,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
+ OPT_DISABLE_SDBINUTILS  = @OPT_DISABLE_SDBINUTILS@
+ OPT_DISABLE_SDCPP       = @OPT_DISABLE_SDCPP@
+ OPT_DISABLE_UCSIM       = @OPT_DISABLE_UCSIM@
+-OPT_DISABLE_NON_FREE    = @OPT_DISABLE_NON_FREE@
+ 
+ SLIB                    = $(top_builddir)/support/util
+ 
+diff --git a/Makefile.in b/Makefile.in
+index aac442e..dd73e40 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -82,9 +82,6 @@ endif
+ ifeq ($(OPT_DISABLE_DEVICE_LIB), 0)
+ TARGETS        += sdcc-device-lib
+ PKGS           += device/lib
+-ifeq ($(OPT_DISABLE_NON_FREE), 0)
+-PKGS           += device/non-free/lib
+-endif
+ endif
+ 
+ ifeq ($(OPT_DISABLE_PACKIHX), 0)
+@@ -105,9 +102,6 @@ endif
+ TARGETS        += sdcc-libs sdcc-cc sdcc-device-inc sdcc-as sdcc-ld sdcc-scripts
+ 
+ PKGS           += $(SDCC_LIBS) src device/include
+-ifeq ($(OPT_DISABLE_NON_FREE), 0)
+-PKGS           += device/non-free/include
+-endif
+ PKGS           += $(SDCC_AS) sdas/linksrc $(SDCC_LIBRARIAN) $(SDCC_SCRIPTS)
+ 
+ PORTS           = $(shell cat ports.build)
+@@ -156,21 +150,12 @@ sdcc-sdbinutils:
+ 
+ sdcc-device-inc:
+ 	$(MAKE) -C device/include
+-ifeq ($(OPT_DISABLE_NON_FREE), 0)
+-	$(MAKE) -C device/non-free/include
+-endif
+ 
+ sdcc-device-lib: sdcc-cc sdcc-as sdcc-ld $(SDCC_BINUTILS)
+ 	$(MAKE) -C device/lib
+-ifeq ($(OPT_DISABLE_NON_FREE), 0)
+-	$(MAKE) -C device/non-free/lib
+-endif
+ 
+ sdcc-device-tini:
+ 	$(MAKE) -C device/include
+-ifeq ($(OPT_DISABLE_NON_FREE), 0)
+-	$(MAKE) -C device/non-free/include
+-endif
+ 	$(MAKE) -C device/lib model-ds390 model-ds400
+ 
+ # doc depends on latex and latex2html
+diff --git a/configure b/configure
+index 42b1c7d..00ecb51 100755
+--- a/configure
++++ b/configure
+@@ -632,7 +632,6 @@ LATEX
+ LATEX2HTML
+ LYX
+ OPT_ENABLE_DOC
+-OPT_DISABLE_NON_FREE
+ OPT_DISABLE_SDBINUTILS
+ OPT_DISABLE_SDCDB
+ OPT_DISABLE_SDCPP
+@@ -654,10 +653,7 @@ OPT_DISABLE_R2K
+ OPT_DISABLE_Z180
+ OPT_DISABLE_Z80
+ OPT_DISABLE_MCS51
+-non_free_lib_dir_suffix
+ lib_dir_suffix
+-non_free_include_dir_suffix
+-non_free_inclib_dir_suffix
+ include_dir_suffix
+ inclib_dir_suffix
+ LIB_TYPE
+@@ -771,7 +767,6 @@ enable_packihx
+ enable_sdcpp
+ enable_sdcdb
+ enable_sdbinutils
+-enable_non_free
+ enable_doc
+ enable_libgc
+ '
+@@ -792,10 +787,7 @@ sdccconf_h_dir_separator
+ LIB_TYPE
+ inclib_dir_suffix
+ include_dir_suffix
+-non_free_inclib_dir_suffix
+-non_free_include_dir_suffix
+ lib_dir_suffix
+-non_free_lib_dir_suffix
+ docdir'
+ ac_subdirs_all='support/cpp
+ support/packihx
+@@ -803,9 +795,7 @@ sim/ucsim
+ debugger/mcs51
+ support/sdbinutils
+ device/lib/pic14
+-device/non-free/lib/pic14
+-device/lib/pic16
+-device/non-free/lib/pic16'
++device/lib/pic16'
+ 
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -1452,7 +1442,6 @@ Optional Features:
+   --disable-sdcpp         Disables building sdcpp
+   --disable-sdcdb         Disables building sdcdb
+   --disable-sdbinutils    Disables configuring and building of sdbinutils
+-  --disable-non-free      Disables non-free runtime library parts
+   --enable-doc            Enables building the documentation
+   --enable-libgc          Use the Bohem memory allocator. Lower runtime
+                           footprint.
+@@ -1481,16 +1470,8 @@ Some influential environment variables:
+               appended to datadir to define SDCC's include/lib directory
+   include_dir_suffix
+               appended to datadir to define SDCC's include directory
+-  non_free_inclib_dir_suffix
+-              appended to datadir to define SDCC's non-free include/lib
+-              directory
+-  non_free_include_dir_suffix
+-              appended to datadir to define SDCC's non-free include directory
+   lib_dir_suffix
+               appended to datadir to define SDCC's library root directory
+-  non_free_lib_dir_suffix
+-              appended to datadir to define SDCC's non-free library root
+-              directory
+   docdir      documentation installation directory
+ 
+ Use these variables to override the choices made by `configure' or to help
+@@ -7236,19 +7217,6 @@ if test "${include_dir_suffix}" = ""; then
+     include_dir_suffix="${inclib_dir_suffix}/include"
+ fi
+ 
+-
+-if test "${non_free_inclib_dir_suffix}" = ""; then
+-    non_free_inclib_dir_suffix="sdcc/non-free"
+-fi
+-
+-# non_free_include_dir_suffix:
+-# *nix default: "sdcc/non-free/include"
+-
+-
+-if test "${non_free_include_dir_suffix}" = ""; then
+-    non_free_include_dir_suffix="${non_free_inclib_dir_suffix}/include"
+-fi
+-
+ # lib_dir_suffix:
+ # *nix default: "sdcc/lib"
+ 
+@@ -7256,13 +7224,6 @@ if test "${lib_dir_suffix}" = ""; then
+     lib_dir_suffix="${inclib_dir_suffix}/lib"
+ fi
+ 
+-# non_free_lib_dir_suffix:
+-# *nix default: "sdcc/non-free/lib"
+-
+-if test "${non_free_lib_dir_suffix}" = ""; then
+-    non_free_lib_dir_suffix="${non_free_inclib_dir_suffix}/lib"
+-fi
+-
+ # docdir:
+ # *nix default: "${datadir}/sdcc/doc"
+ 
+@@ -7429,24 +7390,6 @@ cat >>confdefs.h <<_ACEOF
+ #define INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}"
+ _ACEOF
+ 
+-norm_non_free_inc_dir_suffix=${non_free_include_dir_suffix}
+-case ":$norm_non_free_inc_dir_suffix:" in
+-  ::) norm_non_free_inc_dir_suffix='.' ;;
+-  :*[\\/]:) norm_non_free_inc_dir_suffix=`echo "$norm_non_free_inc_dir_suffix" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $sdccconf_h_dir_separator in
+-
+-    *\\*) norm_non_free_inc_dir_suffix=`echo "$norm_non_free_inc_dir_suffix" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) norm_non_free_inc_dir_suffix=`echo "$norm_non_free_inc_dir_suffix" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-
+-cat >>confdefs.h <<_ACEOF
+-#define NON_FREE_INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_non_free_inc_dir_suffix}"
+-_ACEOF
+-
+ 
+ norm_lib_dir_suffix=${lib_dir_suffix}
+ case ":$norm_lib_dir_suffix:" in
+@@ -7466,24 +7409,6 @@ cat >>confdefs.h <<_ACEOF
+ #define LIB_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_lib_dir_suffix}"
+ _ACEOF
+ 
+-norm_non_free_lib_dir_suffix=${non_free_lib_dir_suffix}
+-case ":$norm_non_free_lib_dir_suffix:" in
+-  ::) norm_non_free_lib_dir_suffix='.' ;;
+-  :*[\\/]:) norm_non_free_lib_dir_suffix=`echo "$norm_non_free_lib_dir_suffix" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $sdccconf_h_dir_separator in
+-
+-    *\\*) norm_non_free_lib_dir_suffix=`echo "$norm_non_free_lib_dir_suffix" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) norm_non_free_lib_dir_suffix=`echo "$norm_non_free_lib_dir_suffix" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-
+-cat >>confdefs.h <<_ACEOF
+-#define NON_FREE_LIB_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_non_free_lib_dir_suffix}"
+-_ACEOF
+-
+ 
+ # relative paths
+ for _lcl_i in expanded_bindir:expanded_datadir:bin2data_dir; do
+@@ -8411,28 +8336,6 @@ _ACEOF
+ 
+ 
+ 
+-  # Check whether --enable-non-free was given.
+-if test "${enable_non_free+set}" = set; then :
+-  enableval=$enable_non_free;
+-fi
+-
+-
+-      arg1=`echo non-free | sed s/-/_/`
+-
+-  if test "`eval echo \\$enable_$arg1`" = "no"; then
+-    OPT_DISABLE_NON_FREE=1
+-  else
+-    OPT_DISABLE_NON_FREE=0
+-  fi
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define OPT_DISABLE_NON_FREE $OPT_DISABLE_NON_FREE
+-_ACEOF
+-
+-
+-
+-
+ 
+   # Check whether --enable-doc was given.
+ if test "${enable_doc+set}" = set; then :
+@@ -8827,20 +8730,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
+ 
+   test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/lib/pic14"
+ 
+-fi
+-if test $OPT_DISABLE_PIC14 = 0 && test $OPT_DISABLE_NON_FREE = 0; then
+-  test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/non-free/lib/pic14"
+-
+ fi
+ if test $OPT_DISABLE_PIC16 = 0; then
+   ac_config_files="$ac_config_files src/pic16/Makefile"
+ 
+   test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/lib/pic16"
+ 
+-fi
+-if test $OPT_DISABLE_PIC16 = 0 && test $OPT_DISABLE_NON_FREE = 0; then
+-  test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/non-free/lib/pic16"
+-
+ fi
+ 
+ if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0; then
+@@ -8885,15 +8780,9 @@ fi
+ 
+ test $OPT_DISABLE_DEVICE_LIB = 0 && ac_config_files="$ac_config_files device/lib/Makefile"
+ 
+-test $OPT_DISABLE_DEVICE_LIB = 0 && test $OPT_DISABLE_NON_FREE = 0 && ac_config_files="$ac_config_files device/non-free/lib/Makefile"
+-
+ 
+ ac_config_files="$ac_config_files main.mk:main_in.mk src/Makefile device/include/Makefile sdas/linksrc/Makefile support/librarian/Makefile support/makebin/Makefile support/regression/Makefile support/valdiag/Makefile support/scripts/Makefile support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in Makefile Makefile.common:Makefile.common.in"
+ 
+-if test $OPT_DISABLE_NON_FREE = 0; then
+-  ac_config_files="$ac_config_files device/non-free/include/Makefile"
+-
+-fi
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -9621,7 +9510,6 @@ do
+     "sdas/asstm8/Makefile") CONFIG_FILES="$CONFIG_FILES sdas/asstm8/Makefile" ;;
+     "device/lib/stm8/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/stm8/Makefile" ;;
+     "device/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/Makefile" ;;
+-    "device/non-free/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/non-free/lib/Makefile" ;;
+     "main.mk") CONFIG_FILES="$CONFIG_FILES main.mk:main_in.mk" ;;
+     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+     "device/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/include/Makefile" ;;
+@@ -9634,7 +9522,6 @@ do
+     "support/regression/ports/host/spec.mk") CONFIG_FILES="$CONFIG_FILES support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in" ;;
+     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+     "Makefile.common") CONFIG_FILES="$CONFIG_FILES Makefile.common:Makefile.common.in" ;;
+-    "device/non-free/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/non-free/include/Makefile" ;;
+ 
+   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+   esac
+@@ -10443,54 +10330,6 @@ esac
+ incPath3=`echo "$incPath3" | sed 's,\\\\\\\\,\\\\,g'`
+ 
+ 
+-nonFreeIncPath1=`echo "/${prefix2data_dir}/${norm_non_free_inc_dir_suffix}" | sed 's,/\./,/,g'`
+-case ":$nonFreeIncPath1:" in
+-  ::) nonFreeIncPath1='.' ;;
+-  :*[\\/]:) nonFreeIncPath1=`echo "$nonFreeIncPath1" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $dirch in
+-
+-    *\\*) nonFreeIncPath1=`echo "$nonFreeIncPath1" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) nonFreeIncPath1=`echo "$nonFreeIncPath1" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-nonFreeIncPath1=`echo "$nonFreeIncPath1" | sed 's,\\\\\\\\,\\\\,g'`
+-
+-
+-nonFreeIncPath2=`echo "/${bin2data_dir}/${norm_non_free_inc_dir_suffix}" | sed 's,/\./,/,g'`
+-case ":$nonFreeIncPath2:" in
+-  ::) nonFreeIncPath2='.' ;;
+-  :*[\\/]:) nonFreeIncPath2=`echo "$nonFreeIncPath2" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $dirch in
+-
+-    *\\*) nonFreeIncPath2=`echo "$nonFreeIncPath2" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) nonFreeIncPath2=`echo "$nonFreeIncPath2" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-nonFreeIncPath2=`echo "$nonFreeIncPath2" | sed 's,\\\\\\\\,\\\\,g'`
+-
+-
+-nonFreeIncPath3=`echo "${expanded_datadir}/${norm_non_free_inc_dir_suffix}" | sed 's,/\./,/,g'`
+-case ":$nonFreeIncPath3:" in
+-  ::) nonFreeIncPath3='.' ;;
+-  :*[\\/]:) nonFreeIncPath3=`echo "$nonFreeIncPath3" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $dirch in
+-
+-    *\\*) nonFreeIncPath3=`echo "$nonFreeIncPath3" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) nonFreeIncPath3=`echo "$nonFreeIncPath3" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-nonFreeIncPath3=`echo "$nonFreeIncPath3" | sed 's,\\\\\\\\,\\\\,g'`
+-
+-
+ 
+ libPath1=`echo "/${prefix2data_dir}/${norm_lib_dir_suffix}" | sed 's,/\./,/,g'`
+ case ":$libPath1:" in
+@@ -10540,54 +10379,6 @@ esac
+ libPath3=`echo "$libPath3" | sed 's,\\\\\\\\,\\\\,g'`
+ 
+ 
+-nonFreeLibPath1=`echo "/${prefix2data_dir}/${norm_non_free_lib_dir_suffix}" | sed 's,/\./,/,g'`
+-case ":$nonFreeLibPath1:" in
+-  ::) nonFreeLibPath1='.' ;;
+-  :*[\\/]:) nonFreeLibPath1=`echo "$nonFreeLibPath1" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $dirch in
+-
+-    *\\*) nonFreeLibPath1=`echo "$nonFreeLibPath1" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) nonFreeLibPath1=`echo "$nonFreeLibPath1" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-nonFreeLibPath1=`echo "$nonFreeLibPath1" | sed 's,\\\\\\\\,\\\\,g'`
+-
+-
+-nonFreeLibPath2=`echo "/${bin2data_dir}/${norm_non_free_lib_dir_suffix}" | sed 's,/\./,/,g'`
+-case ":$nonFreeLibPath2:" in
+-  ::) nonFreeLibPath2='.' ;;
+-  :*[\\/]:) nonFreeLibPath2=`echo "$nonFreeLibPath2" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $dirch in
+-
+-    *\\*) nonFreeLibPath2=`echo "$nonFreeLibPath2" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) nonFreeLibPath2=`echo "$nonFreeLibPath2" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-nonFreeLibPath2=`echo "$nonFreeLibPath2" | sed 's,\\\\\\\\,\\\\,g'`
+-
+-
+-nonFreeLibPath3=`echo "${expanded_datadir}/${norm_non_free_lib_dir_suffix}" | sed 's,/\./,/,g'`
+-case ":$nonFreeLibPath3:" in
+-  ::) nonFreeLibPath3='.' ;;
+-  :*[\\/]:) nonFreeLibPath3=`echo "$nonFreeLibPath3" | sed 's,[\\/]*$,,'` ;;
+-  :*:) ;;
+-esac
+-case $dirch in
+-
+-    *\\*) nonFreeLibPath3=`echo "$nonFreeLibPath3" | sed 's,\(.\)[\\/][\\/]*,\1\\\\\\\\,g
+-                                  s,^[\\/],\\\\\\\\,'` ;;
+-
+- *) nonFreeLibPath3=`echo "$nonFreeLibPath3" | sed 's,\(.\)[\\/][\\/]*,\1/,g'` ;;
+-esac
+-nonFreeLibPath3=`echo "$nonFreeLibPath3" | sed 's,\\\\\\\\,\\\\,g'`
+-
+-
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ sdcc ${VERSION} is now configured for
+ 
+@@ -10618,7 +10409,6 @@ sdcc ${VERSION} is now configured for
+     tlcs90              ${enable_tlcs90_port}
+     stm8                ${enable_stm8_port}
+ 
+-  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
+   Disable packihx:      ${OPT_DISABLE_PACKIHX}
+   Disable ucsim:        ${OPT_DISABLE_UCSIM}
+   Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
+@@ -10633,9 +10423,6 @@ sdcc ${VERSION} is now configured for
+     include/library files:  ${datadir}/${inclib_dir_suffix}
+     include files:          ${datadir}/${include_dir_suffix}
+     library files:          ${datadir}/${lib_dir_suffix}
+-    non-free files:         ${datadir}/${non_free_inclib_dir_suffix}
+-    non-free include files: ${datadir}/${non_free_include_dir_suffix}
+-    non-free library files: ${datadir}/${non_free_lib_dir_suffix}
+     documentation:          ${docdir}
+ 
+     prefix:             ${prefix}
+@@ -10647,15 +10434,9 @@ sdcc ${VERSION} is now configured for
+     include files:      ${incPath1}
+                         path(argv[0])${incPath2}
+                         ${incPath3}
+-                        ${nonFreeIncPath1}
+-                        path(argv[0])${nonFreeIncPath2}
+-                        ${nonFreeIncPath3}
+     library files:      \$SDCC_HOME${libPath1}${dirch}<model>
+                         path(argv[0])${libPath2}${dirch}<model>
+                         ${libPath3}${dirch}<model>
+-                        \$SDCC_HOME${nonFreeLibPath1}${dirch}<model>
+-                        path(argv[0])${nonFreeLibPath2}${dirch}<model>
+-                        ${nonFreeLibPath3}${dirch}<model>
+ " >&5
+ $as_echo "
+ sdcc ${VERSION} is now configured for
+@@ -10687,7 +10468,6 @@ sdcc ${VERSION} is now configured for
+     tlcs90              ${enable_tlcs90_port}
+     stm8                ${enable_stm8_port}
+ 
+-  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
+   Disable packihx:      ${OPT_DISABLE_PACKIHX}
+   Disable ucsim:        ${OPT_DISABLE_UCSIM}
+   Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
+@@ -10702,9 +10482,6 @@ sdcc ${VERSION} is now configured for
+     include/library files:  ${datadir}/${inclib_dir_suffix}
+     include files:          ${datadir}/${include_dir_suffix}
+     library files:          ${datadir}/${lib_dir_suffix}
+-    non-free files:         ${datadir}/${non_free_inclib_dir_suffix}
+-    non-free include files: ${datadir}/${non_free_include_dir_suffix}
+-    non-free library files: ${datadir}/${non_free_lib_dir_suffix}
+     documentation:          ${docdir}
+ 
+     prefix:             ${prefix}
+@@ -10716,14 +10493,8 @@ sdcc ${VERSION} is now configured for
+     include files:      ${incPath1}
+                         path(argv[0])${incPath2}
+                         ${incPath3}
+-                        ${nonFreeIncPath1}
+-                        path(argv[0])${nonFreeIncPath2}
+-                        ${nonFreeIncPath3}
+     library files:      \$SDCC_HOME${libPath1}${dirch}<model>
+                         path(argv[0])${libPath2}${dirch}<model>
+                         ${libPath3}${dirch}<model>
+-                        \$SDCC_HOME${nonFreeLibPath1}${dirch}<model>
+-                        path(argv[0])${nonFreeLibPath2}${dirch}<model>
+-                        ${nonFreeLibPath3}${dirch}<model>
+ " >&6; }
+ # End of configure/configure.in
+diff --git a/configure.ac b/configure.ac
+index 3a16e42..bfba129 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -588,19 +588,6 @@ if test "${include_dir_suffix}" = ""; then
+     include_dir_suffix="${inclib_dir_suffix}/include"
+ fi
+ 
+-AC_ARG_VAR([non_free_inclib_dir_suffix], [appended to datadir to define SDCC's non-free include/lib directory])
+-if test "${non_free_inclib_dir_suffix}" = ""; then
+-    non_free_inclib_dir_suffix="sdcc/non-free"
+-fi
+-
+-# non_free_include_dir_suffix:
+-# *nix default: "sdcc/non-free/include"
+-
+-AC_ARG_VAR([non_free_include_dir_suffix], [appended to datadir to define SDCC's non-free include directory])
+-if test "${non_free_include_dir_suffix}" = ""; then
+-    non_free_include_dir_suffix="${non_free_inclib_dir_suffix}/include"
+-fi
+-
+ # lib_dir_suffix:
+ # *nix default: "sdcc/lib"
+ AC_ARG_VAR([lib_dir_suffix], [appended to datadir to define SDCC's library root directory])
+@@ -608,13 +595,6 @@ if test "${lib_dir_suffix}" = ""; then
+     lib_dir_suffix="${inclib_dir_suffix}/lib"
+ fi
+ 
+-# non_free_lib_dir_suffix:
+-# *nix default: "sdcc/non-free/lib"
+-AC_ARG_VAR([non_free_lib_dir_suffix], [appended to datadir to define SDCC's non-free library root directory])
+-if test "${non_free_lib_dir_suffix}" = ""; then
+-    non_free_lib_dir_suffix="${non_free_inclib_dir_suffix}/lib"
+-fi
+-
+ # docdir:
+ # *nix default: "${datadir}/sdcc/doc"
+ AC_ARG_VAR([docdir], [documentation installation directory])
+@@ -655,19 +635,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
+ adl_NORMALIZE_PATH([norm_inc_dir_suffix], [$sdccconf_h_dir_separator])
+ AC_DEFINE_UNQUOTED(INCLUDE_DIR_SUFFIX,
+                    DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}", [XXX])
+-norm_non_free_inc_dir_suffix=${non_free_include_dir_suffix}
+-adl_NORMALIZE_PATH([norm_non_free_inc_dir_suffix], [$sdccconf_h_dir_separator])
+-AC_DEFINE_UNQUOTED(NON_FREE_INCLUDE_DIR_SUFFIX,
+-                   DIR_SEPARATOR_STRING "${norm_non_free_inc_dir_suffix}", [XXX])
+ 
+ norm_lib_dir_suffix=${lib_dir_suffix}
+ adl_NORMALIZE_PATH([norm_lib_dir_suffix], [$sdccconf_h_dir_separator])
+ AC_DEFINE_UNQUOTED(LIB_DIR_SUFFIX,
+                    DIR_SEPARATOR_STRING "${norm_lib_dir_suffix}", [XXX])
+-norm_non_free_lib_dir_suffix=${non_free_lib_dir_suffix}
+-adl_NORMALIZE_PATH([norm_non_free_lib_dir_suffix], [$sdccconf_h_dir_separator])
+-AC_DEFINE_UNQUOTED(NON_FREE_LIB_DIR_SUFFIX,
+-                   DIR_SEPARATOR_STRING "${norm_non_free_lib_dir_suffix}", [XXX])
+ 
+ # relative paths
+ adl_COMPUTE_RELATIVE_PATHS([expanded_bindir:expanded_datadir:bin2data_dir])
+@@ -836,7 +808,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
+ AC_DO_DISABLER(sdcpp,      SDCPP,      [Disables building sdcpp])
+ AC_DO_DISABLER(sdcdb,      SDCDB,      [Disables building sdcdb])
+ AC_DO_DISABLER(sdbinutils, SDBINUTILS, [Disables configuring and building of sdbinutils])
+-AC_DO_DISABLER(non-free,   NON_FREE,   [Disables non-free runtime library parts])
+ 
+ AC_DO_ENABLER(doc,   DOC,   [Enables building the documentation])
+ AC_CHECK_PROG([LYX],        [lyx],        [lyx],        [:])
+@@ -907,16 +878,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
+   AC_CONFIG_FILES(src/pic14/Makefile)
+   test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/lib/pic14)
+ fi
+-if test $OPT_DISABLE_PIC14 = 0 && test $OPT_DISABLE_NON_FREE = 0; then
+-  test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/non-free/lib/pic14)
+-fi
+ if test $OPT_DISABLE_PIC16 = 0; then
+   AC_CONFIG_FILES(src/pic16/Makefile)
+   test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/lib/pic16)
+ fi
+-if test $OPT_DISABLE_PIC16 = 0 && test $OPT_DISABLE_NON_FREE = 0; then
+-  test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/non-free/lib/pic16)
+-fi
+ 
+ if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0; then
+   AC_CONFIG_FILES([src/z80/Makefile])
+@@ -951,7 +916,6 @@ if test $OPT_DISABLE_STM8 = 0; then
+ fi
+ 
+ test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_FILES([device/lib/Makefile])
+-test $OPT_DISABLE_DEVICE_LIB = 0 && test $OPT_DISABLE_NON_FREE = 0 && AC_CONFIG_FILES([device/non-free/lib/Makefile])
+ 
+ AC_CONFIG_FILES([main.mk:main_in.mk
+ src/Makefile
+@@ -966,9 +930,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in
+ Makefile
+ Makefile.common:Makefile.common.in
+ ])
+-if test $OPT_DISABLE_NON_FREE = 0; then
+-  AC_CONFIG_FILES([device/non-free/include/Makefile])
+-fi
+ AC_OUTPUT
+ 
+ # I found no better place
+@@ -986,16 +947,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
+ adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_inc_dir_suffix}, [incPath1], [$dirch])
+ adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_inc_dir_suffix},    [incPath2], [$dirch])
+ adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_inc_dir_suffix}, [incPath3], [$dirch])
+-adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_non_free_inc_dir_suffix}, [nonFreeIncPath1], [$dirch])
+-adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_non_free_inc_dir_suffix},    [nonFreeIncPath2], [$dirch])
+-adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_non_free_inc_dir_suffix}, [nonFreeIncPath3], [$dirch])
+ 
+ adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_lib_dir_suffix}, [libPath1], [$dirch])
+ adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_lib_dir_suffix},    [libPath2], [$dirch])
+ adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_lib_dir_suffix}, [libPath3], [$dirch])
+-adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_non_free_lib_dir_suffix}, [nonFreeLibPath1], [$dirch])
+-adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_non_free_lib_dir_suffix},    [nonFreeLibPath2], [$dirch])
+-adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_non_free_lib_dir_suffix}, [nonFreeLibPath3], [$dirch])
+ 
+ AC_MSG_RESULT([
+ sdcc ${VERSION} is now configured for
+@@ -1027,7 +982,6 @@ sdcc ${VERSION} is now configured for
+     tlcs90              ${enable_tlcs90_port}
+     stm8                ${enable_stm8_port}
+ 
+-  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
+   Disable packihx:      ${OPT_DISABLE_PACKIHX}
+   Disable ucsim:        ${OPT_DISABLE_UCSIM}
+   Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
+@@ -1042,9 +996,6 @@ sdcc ${VERSION} is now configured for
+     include/library files:  ${datadir}/${inclib_dir_suffix}
+     include files:          ${datadir}/${include_dir_suffix}
+     library files:          ${datadir}/${lib_dir_suffix}
+-    non-free files:         ${datadir}/${non_free_inclib_dir_suffix}
+-    non-free include files: ${datadir}/${non_free_include_dir_suffix}
+-    non-free library files: ${datadir}/${non_free_lib_dir_suffix}
+     documentation:          ${docdir}
+ 
+     prefix:             ${prefix}
+@@ -1056,14 +1007,8 @@ sdcc ${VERSION} is now configured for
+     include files:      ${incPath1}
+                         path(argv[[0]])${incPath2}
+                         ${incPath3}
+-                        ${nonFreeIncPath1}
+-                        path(argv[[0]])${nonFreeIncPath2}
+-                        ${nonFreeIncPath3}
+     library files:      \$SDCC_HOME${libPath1}${dirch}<model>
+                         path(argv[[0]])${libPath2}${dirch}<model>
+                         ${libPath3}${dirch}<model>
+-                        \$SDCC_HOME${nonFreeLibPath1}${dirch}<model>
+-                        path(argv[[0]])${nonFreeLibPath2}${dirch}<model>
+-                        ${nonFreeLibPath3}${dirch}<model>
+ ])
+ # End of configure/configure.in
+diff --git a/device/lib/pic14/Makefile.common b/device/lib/pic14/Makefile.common
+index e456838..8179255 100644
+--- a/device/lib/pic14/Makefile.common
++++ b/device/lib/pic14/Makefile.common
+@@ -3,11 +3,10 @@ EARCH ?= @EARCH@
+ 
+ AM_CPPFLAGS =
+ AM_CPPFLAGS += -I.
+-AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic14 -I$(top_srcdir)/../../non-free/include/pic14
++AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic14
+ 
+ AM_CFLAGS =
+ AM_CFLAGS += -mpic14 -p$(ARCH)
+-AM_CFLAGS += --no-warn-non-free
+ AM_CFLAGS += --std-c99
+ #AM_CFLAGS += --asm="$(CCAS)"
+ ##AM_CFLAGS += -Wa,-q
+@@ -29,7 +28,7 @@ AM_CFLAGS += --i-code-in-asm
+ 
+ AM_CCASFLAGS =
+ AM_CCASFLAGS += -p$(ARCH)
+-AM_CCASFLAGS += -I$(top_srcdir)/../../include/pic14 -I$(top_srcdir)/../../non-free/include/pic14
++AM_CCASFLAGS += -I$(top_srcdir)/../../include/pic14
+ AM_CCASFLAGS += -I$(srcdir)
+ 
+ clean-local:
+diff --git a/device/lib/pic14/Makefile.in b/device/lib/pic14/Makefile.in
+index f1c9940..de47dbe 100644
+--- a/device/lib/pic14/Makefile.in
++++ b/device/lib/pic14/Makefile.in
+@@ -297,15 +297,13 @@ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ SUBDIRS = libm libsdcc/regular $(am__append_1) $(am__append_2)
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
+ #AM_CFLAGS += --asm="$(CCAS)"
+ 
+ #AM_CFLAGS += --debug-ralloc
+ #AM_CFLAGS += --debug-xtra
+ #AM_CFLAGS += --pcode-verbose
+-AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+-	--i-code-in-asm
++AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
+ 
+ #AM_CFLAGS += --no-pcode-opt
+ 
+@@ -316,8 +314,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
++AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
+ DISTCLEANFILES = a.cod a.hex ./.checkdevices/*
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+diff --git a/device/lib/pic14/libm/Makefile.in b/device/lib/pic14/libm/Makefile.in
+index fd9fd2e..4a7d250 100644
+--- a/device/lib/pic14/libm/Makefile.in
++++ b/device/lib/pic14/libm/Makefile.in
+@@ -299,15 +299,13 @@ libm_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c ceilf.c \
+ libm_a_CFLAGS = -p$(ARCH) $(AM_CFLAGS)
+ libme_a_SOURCES = $(libm_a_SOURCES)
+ libme_a_CFLAGS = -p$(EARCH) $(AM_CFLAGS) $(am__append_2)
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
+ #AM_CFLAGS += --asm="$(CCAS)"
+ 
+ #AM_CFLAGS += --debug-ralloc
+ #AM_CFLAGS += --debug-xtra
+ #AM_CFLAGS += --pcode-verbose
+-AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+-	--i-code-in-asm
++AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
+ 
+ #AM_CFLAGS += --no-pcode-opt
+ 
+@@ -318,8 +316,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
++AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
+index e946da7..bced941 100644
+--- a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
++++ b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
+@@ -311,15 +311,13 @@ libsdcce_a_SOURCES = ../_divschar.c ../_divsint.c ../_divslong.c \
+ 	_gptrput3.S _gptrput4.S macros.inc
+ libsdcce_a_CFLAGS = -p$(EARCH) $(AM_CFLAGS)
+ CLEANFILES = ../*.asm ../*.lst
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
+ #AM_CFLAGS += --asm="$(CCAS)"
+ 
+ #AM_CFLAGS += --debug-ralloc
+ #AM_CFLAGS += --debug-xtra
+ #AM_CFLAGS += --pcode-verbose
+-AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+-	--i-code-in-asm
++AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
+ 
+ #AM_CFLAGS += --no-pcode-opt
+ 
+@@ -330,8 +328,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
++AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic14/libsdcc/enhanced/Makefile.in b/device/lib/pic14/libsdcc/enhanced/Makefile.in
+index 7fe1e25..854f87f 100644
+--- a/device/lib/pic14/libsdcc/enhanced/Makefile.in
++++ b/device/lib/pic14/libsdcc/enhanced/Makefile.in
+@@ -311,15 +311,13 @@ libsdcce_a_SOURCES = ../_divschar.c ../_divsint.c ../_divslong.c \
+ 	_gptrput3.S _gptrput4.S macros.inc
+ libsdcce_a_CFLAGS = -p$(EARCH) $(AM_CFLAGS)
+ CLEANFILES = ../*.asm ../*.lst
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
+ #AM_CFLAGS += --asm="$(CCAS)"
+ 
+ #AM_CFLAGS += --debug-ralloc
+ #AM_CFLAGS += --debug-xtra
+ #AM_CFLAGS += --pcode-verbose
+-AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+-	--i-code-in-asm
++AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
+ 
+ #AM_CFLAGS += --no-pcode-opt
+ 
+@@ -330,8 +328,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
++AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic14/libsdcc/regular/Makefile.in b/device/lib/pic14/libsdcc/regular/Makefile.in
+index 29a5924..8c60a49 100644
+--- a/device/lib/pic14/libsdcc/regular/Makefile.in
++++ b/device/lib/pic14/libsdcc/regular/Makefile.in
+@@ -304,15 +304,13 @@ libsdcc_a_SOURCES = ../_divschar.c ../_divsint.c ../_divslong.c \
+ 	_gptrput3.S _gptrput4.S macros.inc shadowregs.c
+ libsdcc_a_CFLAGS = -p$(ARCH) $(AM_CFLAGS)
+ CLEANFILES = ../*.asm ../*.lst
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
+ #AM_CFLAGS += --asm="$(CCAS)"
+ 
+ #AM_CFLAGS += --debug-ralloc
+ #AM_CFLAGS += --debug-xtra
+ #AM_CFLAGS += --pcode-verbose
+-AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+-	--i-code-in-asm
++AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
+ 
+ #AM_CFLAGS += --no-pcode-opt
+ 
+@@ -323,8 +321,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
+-	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
++AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic16/Makefile.common b/device/lib/pic16/Makefile.common
+index 73200d7..e298bf5 100644
+--- a/device/lib/pic16/Makefile.common
++++ b/device/lib/pic16/Makefile.common
+@@ -1,11 +1,10 @@
+ AM_CPPFLAGS =
+ AM_CPPFLAGS += -I.
+-AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic16 -I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic16
+ 
+ AM_CFLAGS =
+ AM_CFLAGS += --std-c99
+ AM_CFLAGS += --asm="$(CCAS)"
+-AM_CFLAGS += --no-warn-non-free
+ ##AM_CFLAGS += -Wa,-q
+ 
+ AM_CFLAGS += --fomit-frame-pointer
+@@ -31,7 +30,7 @@ AM_CFLAGS += --i-code-in-asm
+ AM_CFLAGS += @USE_FLOATS@
+ 
+ AM_CCASFLAGS =
+-AM_CCASFLAGS += -I$(top_srcdir)/../../include/pic16 -I$(top_srcdir)/../../non-free/include/pic16
++AM_CCASFLAGS += -I$(top_srcdir)/../../include/pic16
+ AM_CCASFLAGS += -I$(srcdir)
+ 
+ clean-local:
+diff --git a/device/lib/pic16/Makefile.in b/device/lib/pic16/Makefile.in
+index b17f151..31ecfa4 100644
+--- a/device/lib/pic16/Makefile.in
++++ b/device/lib/pic16/Makefile.in
+@@ -87,10 +87,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ subdir = .
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+@@ -295,8 +292,7 @@ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ SUBDIRS = debug libc libio libm libsdcc startup
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -310,11 +306,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ DISTCLEANFILES = a.cod a.hex ./.checkdevices/* pics.supported
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+diff --git a/device/lib/pic16/configure b/device/lib/pic16/configure
+index d8760a0..eaea231 100755
+--- a/device/lib/pic16/configure
++++ b/device/lib/pic16/configure
+@@ -3657,7 +3657,6 @@ fi
+ 
+ 
+ 
+-LIBDEV="${srcdir}/../../non-free/lib/pic16/libdev"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking devices supported by gputils" >&5
+ $as_echo_n "checking devices supported by gputils... " >&6; }
+ GOOD_PICS="";
+diff --git a/device/lib/pic16/configure.ac b/device/lib/pic16/configure.ac
+index 3966c11..cdbffc7 100644
+--- a/device/lib/pic16/configure.ac
++++ b/device/lib/pic16/configure.ac
+@@ -68,10 +68,6 @@ AC_SUBST(OBJEXT, [o])
+ _AM_DEPENDENCIES(CC)
+ _AM_DEPENDENCIES(CCAS)
+ 
+-LIBDEV="${srcdir}/../../non-free/lib/pic16/libdev"
+-m4_include([../../non-free/lib/pic16/supported-devices.ac])
+-m4_include([../../non-free/lib/pic16/processors.ac])
+-
+ # Checks for libraries.
+ 
+ # Checks for header files.
+diff --git a/device/lib/pic16/debug/Makefile.in b/device/lib/pic16/debug/Makefile.in
+index bc77b98..724a443 100644
+--- a/device/lib/pic16/debug/Makefile.in
++++ b/device/lib/pic16/debug/Makefile.in
+@@ -88,10 +88,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ subdir = debug
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+@@ -290,8 +287,7 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ lib_LIBRARIES = libdebug.a
+ libdebug_a_SOURCES = gstack/gstack.c
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -305,11 +301,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic16/libc/Makefile.in b/device/lib/pic16/libc/Makefile.in
+index 6d2699f..5546319 100644
+--- a/device/lib/pic16/libc/Makefile.in
++++ b/device/lib/pic16/libc/Makefile.in
+@@ -88,10 +88,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ subdir = libc
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+@@ -344,8 +341,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
+ 	string/strpbrk.c string/strrchr.c string/strspn.c \
+ 	string/strstr.c string/strtok.c string/strupr.c \
+ 	utils/cnvfrac.S utils/cnvint.S utils/cvtdec.S
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -359,11 +355,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic16/libio/Makefile.in b/device/lib/pic16/libio/Makefile.in
+index 0d7c731..64b56c8 100644
+--- a/device/lib/pic16/libio/Makefile.in
++++ b/device/lib/pic16/libio/Makefile.in
+@@ -481,10 +481,7 @@ POST_UNINSTALL = :
+ @ENABLE_18LF8723_TRUE@am__append_393 = libio18lf8723.a
+ subdir = libio
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+@@ -9826,8 +9823,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
+ libio18lf8722_a_CFLAGS = -p18lf8722 $(AM_CFLAGS)
+ libio18lf8723_a_SOURCES = dummy.c
+ libio18lf8723_a_CFLAGS = -p18lf8723 $(AM_CFLAGS)
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -9841,11 +9837,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic16/libio/mkmk.sh b/device/lib/pic16/libio/mkmk.sh
+index 211604e..e8896bf 100755
+--- a/device/lib/pic16/libio/mkmk.sh
++++ b/device/lib/pic16/libio/mkmk.sh
+@@ -17,40 +17,6 @@ lib_LIBRARIES =
+ 
+ HEREDOC
+ 
+-for f in "../../../non-free/lib/pic16/libdev/pic1"*.c; do
+-    p="${f##*/pic}";
+-    p="${p%.c}";
+-    P=$(echo "$p" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ);
+-    echo "Generating for device >>${p}<<" >&2;
+-    cat <<HERE
+-if ENABLE_$P
+-lib_LIBRARIES += libio${p}.a
+-endif ENABLE_$P
+-libio${p}_a_SOURCES = dummy.c
+-HERE
+-    sed -e 's/\s*\(#.*\)\{0,1\}$//' adc.ignore | grep -x "$p" > /dev/null 2>&1 && { echo "No adc." >&2 ; } || cat <<HERE
+-libio${p}_a_SOURCES += adc/adcbusy.c adc/adcclose.c adc/adcconv.c
+-libio${p}_a_SOURCES += adc/adcopen.c adc/adcread.c adc/adcsetch.c
+-HERE
+-    sed -e 's/\s*\(#.*\)\{0,1\}$//' i2c.ignore | grep -x "$p" > /dev/null 2>&1 && { echo "No i2c." >&2 ; } || cat <<HERE
+-libio${p}_a_SOURCES += i2c/i2cack.c i2c/i2cclose.c i2c/i2cdrdy.c
+-libio${p}_a_SOURCES += i2c/i2cidle.c i2c/i2cnack.c i2c/i2copen.c
+-libio${p}_a_SOURCES += i2c/i2creadc.c i2c/i2creads.c i2c/i2crestart.c
+-libio${p}_a_SOURCES += i2c/i2cstart.c i2c/i2cstop.c i2c/i2cwritec.c
+-libio${p}_a_SOURCES += i2c/i2cwrites.c
+-HERE
+-    sed -e 's/\s*\(#.*\)\{0,1\}$//' usart.ignore | grep -x "$p" > /dev/null 2>&1 && { echo "No usart." >&2 ; } || cat <<HERE
+-libio${p}_a_SOURCES += usart/ubaud.c usart/ubusy.c usart/uclose.c
+-libio${p}_a_SOURCES += usart/udrdy.c usart/ugetc.c usart/ugets.c
+-libio${p}_a_SOURCES += usart/uopen.c usart/uputc.c usart/uputs.c
+-libio${p}_a_SOURCES += usart/usartd.c
+-HERE
+-    cat <<HERE
+-libio${p}_a_CFLAGS = -p${p} \$(AM_CFLAGS)
+-
+-HERE
+-done
+-
+ cat <<HEREDOC
+ include \$(top_srcdir)/Makefile.common
+ 
+diff --git a/device/lib/pic16/libm/Makefile.in b/device/lib/pic16/libm/Makefile.in
+index 7f90e89..94cd985 100644
+--- a/device/lib/pic16/libm/Makefile.in
++++ b/device/lib/pic16/libm/Makefile.in
+@@ -88,10 +88,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ subdir = libm
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+@@ -299,8 +296,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
+ 	frexpf.c isinf.c isnan.c ldexpf.c log10f.c logf.c modff.c \
+ 	powf.c sincosf.c sincoshf.c sinf.c sinhf.c sqrtf.c tancotf.c \
+ 	tanf.c tanhf.c
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -314,11 +310,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic16/libsdcc/Makefile.in b/device/lib/pic16/libsdcc/Makefile.in
+index e58bad0..b318b70 100644
+--- a/device/lib/pic16/libsdcc/Makefile.in
++++ b/device/lib/pic16/libsdcc/Makefile.in
+@@ -88,10 +88,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ subdir = libsdcc
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+@@ -364,8 +361,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
+ 	int/modsint.c int/moduint.c int/mulint.c long/divslong.c \
+ 	long/divulong.c long/modslong.c long/modulong.c long/mullong.c \
+ 	lregs/lrrest.c lregs/lrst.c stack/stack.S
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -379,11 +375,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/device/lib/pic16/startup/Makefile.in b/device/lib/pic16/startup/Makefile.in
+index 3c44c6f..274acde 100644
+--- a/device/lib/pic16/startup/Makefile.in
++++ b/device/lib/pic16/startup/Makefile.in
+@@ -89,10 +89,7 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ subdir = startup
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps =  \
+-	$(top_srcdir)/../../non-free/lib/pic16/supported-devices.ac \
+-	$(top_srcdir)/../../non-free/lib/pic16/processors.ac \
+-	$(top_srcdir)/configure.ac
++am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ 	$(ACLOCAL_M4)
+ DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+@@ -306,8 +303,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
+ # Force installation of .o files into $libdir
+ crtdir = $(libdir)
+ crt_DATA = crt0.o crt0i.o crt0iz.o
+-AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16
++AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16
+ #AM_CFLAGS += --no-optimize-goto
+ 
+ #AM_CFLAGS += --debug-ralloc
+@@ -321,11 +317,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+ #AM_CFLAGS += --noinduction
+ #AM_CFLAGS += --nojtbound
+ #AM_CFLAGS += --noloopreverse
+-AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+ 	--fomit-frame-pointer --obanksel=9 --denable-peeps \
+ 	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
+-AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
+-	-I$(top_srcdir)/../../non-free/include/pic16 -I$(srcdir)
++AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 -I$(srcdir)
+ all: all-am
+ 
+ .SUFFIXES:
+diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt
+index 7d83ef7..5bd71d3 100644
+--- a/doc/INSTALL.txt
++++ b/doc/INSTALL.txt
+@@ -18,9 +18,7 @@ To install:
+ 
+ This will install sdcc binaries into: /usr/local/bin/
+ header files into:                    /usr/local/share/sdcc/include/
+-non-free header files into:           /usr/local/share/sdcc/non-free/include/
+ library files into:                   /usr/local/share/sdcc/lib/
+-non-free library files into:          /usr/local/share/sdcc/non-free/lib/
+ and documentation into:               /usr/local/share/sdcc/doc/
+ 
+ You can test the install by entering:
+@@ -44,9 +42,7 @@ To install:
+ 
+ By default this will install sdcc binaries into: C:\Program Files\SDCC\bin\
+ header files into:                               C:\Program Files\SDCC\include\
+-non-free header files into:                      C:\Program Files\SDCC\non-free\include\
+ library files into:                              C:\Program Files\SDCC\lib\
+-non-free library files into:                     C:\Program Files\SDCC\non-free\lib\
+ and documentation into:                          C:\Program Files\SDCC\doc\
+ 
+ You can test the install by opening a DOS box and entering:
+@@ -75,9 +71,7 @@ To install:
+ 
+ This will install sdcc binaries into: /Developer/sdcc/bin/
+ header files into:                    /Developer/sdcc/share/sdcc/include/
+-non-free header files into:           /Developer/sdcc/share/sdcc/non-free/include/
+ library files into:                   /Developer/sdcc/share/sdcc/lib/
+-non-free library files into:          /Developer/sdcc/share/sdcc/non-free/lib/
+ and documentation into:               /Developer/sdcc/share/sdcc/doc/
+ 
+ You can test the install by entering:
+diff --git a/doc/README.txt b/doc/README.txt
+index 86ed809..69e16e2 100644
+--- a/doc/README.txt
++++ b/doc/README.txt
+@@ -35,10 +35,9 @@ Exception are pic device libraries and header files which are derived
+ from Microchip header (.inc) and linker script (.lkr) files. Microchip
+ requires that "The header files should state that they are only to be
+ used with authentic Microchip devices" which makes them incompatible
+-with the GPL. Pic device libraries and header files are located at
+-non-free/lib and non-free/include directories respectively. Sdcc should
+-be run with the --use-non-free command line option in order to include
+-non-free header files and libraries.
++with the GPL. These non-free libraries and header files (and the build
++and run-time options that enable their use) are omitted in the SDCC
++package distributed with GNU Guix.
+ 
+ See:
+ 
+diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx
+index 41e8db0..9a971fa 100644
+--- a/doc/sdccman.lyx
++++ b/doc/sdccman.lyx
+@@ -1083,54 +1083,9 @@ Exception are pic device libraries and header files which are derived from
+  Microchip requires that "The header files should state that they are only
+  to be used with authentic Microchip devices" which makes them incompatible
+  with the GPL.
+- Pic device libraries and header files are located at non-free/lib and non-free/
+-include directories respectively.
+- SDCC should be run with the 
+-\series bold
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--
+-\series default
+-use-non-free
+-\series bold
+-
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+-
+-\series default
+- command line option in order to include non-free header files and libraries.
+- 
++ These non-free libraries and header files (and the build and run-time options
++ that enable their use) are omitted in the SDCC package distributed with
++ GNU Guix.
+ \end_layout
+ 
+ \begin_layout Itemize
+@@ -2890,18 +2845,6 @@ include_dir_suffix environment variable, see table below
+ \end_inset
+ 
+ 
+-\begin_inset space ~
+-\end_inset
+-
+-non_free_include_dir_suffix environment variable, see table below
+-\end_layout
+-
+-\begin_layout Labeling
+-\labelwidthstring 00.00.0000
+-\begin_inset space ~
+-\end_inset
+-
+-
+ \begin_inset space ~
+ \end_inset
+ 
+@@ -2914,22 +2857,6 @@ lib_dir_suffix environment variable, see table below
+ \end_inset
+ 
+ 
+-\begin_inset space ~
+-\end_inset
+-
+-
+-\begin_inset space ~
+-\end_inset
+-
+-non_free_lib_dir_suffix environment variable, see table below
+-\end_layout
+-
+-\begin_layout Labeling
+-\labelwidthstring 00.00.0000
+-\begin_inset space ~
+-\end_inset
+-
+-
+ \begin_inset space ~
+ \end_inset
+ 
+@@ -3410,7 +3337,7 @@ These defaults are:
+ \begin_layout Standard
+ \align center
+ \begin_inset Tabular
+-<lyxtabular version="3" rows="11" columns="3">
++<lyxtabular version="3" rows="9" columns="3">
+ <features tabularvalignment="middle">
+ <column alignment="block" valignment="top" width="0in">
+ <column alignment="block" valignment="top" width="0in">
+@@ -3694,68 +3621,6 @@ sdcc/include
+ include
+ \end_layout
+ 
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-NON_FREE_INCLUDE_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-sdcc/non-free/include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-non-free/include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-LIB_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-sdcc/lib
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-lib
+-\end_layout
+-
+ \end_inset
+ </cell>
+ </row>
+@@ -3766,7 +3631,7 @@ lib
+ \begin_layout Plain Layout
+ 
+ \emph on
+-NON_FREE_LIB_DIR_SUFFIX
++LIB_DIR_SUFFIX
+ \end_layout
+ 
+ \end_inset
+@@ -3775,7 +3640,7 @@ NON_FREE_LIB_DIR_SUFFIX
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+-sdcc/non-free/lib
++sdcc/lib
+ \end_layout
+ 
+ \end_inset
+@@ -3784,7 +3649,7 @@ sdcc/non-free/lib
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+-non-free/lib
++lib
+ \end_layout
+ 
+ \end_inset
+@@ -4183,20 +4048,6 @@ include
+ \end_inset
+ 
+  
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-non_free_include_dir_suffix=
+-\begin_inset Quotes srd
+-\end_inset
+-
+-non-free/include
+-\begin_inset Quotes srd
+-\end_inset
+-
+- 
+ \backslash
+ 
+ \begin_inset Newline newline
+@@ -4211,20 +4062,6 @@ lib
+ \end_inset
+ 
+  
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-non_free_lib_dir_suffix=
+-\begin_inset Quotes srd
+-\end_inset
+-
+-non-free/lib
+-\begin_inset Quotes srd
+-\end_inset
+-
+- 
+ \backslash
+ 
+ \begin_inset Newline newline
+@@ -4405,20 +4242,6 @@ include
+ \end_inset
+ 
+  
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-non_free_include_dir_suffix=
+-\begin_inset Quotes srd
+-\end_inset
+-
+-non-free/include
+-\begin_inset Quotes srd
+-\end_inset
+-
+- 
+ \backslash
+ 
+ \begin_inset Newline newline
+@@ -4433,20 +4256,6 @@ lib
+ \end_inset
+ 
+  
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-non_free_lib_dir_suffix=
+-\begin_inset Quotes srd
+-\end_inset
+-
+-non-free/lib
+-\begin_inset Quotes srd
+-\end_inset
+-
+- 
+ \backslash
+ 
+ \begin_inset Newline newline
+@@ -4543,7 +4352,7 @@ Install paths
+ \begin_layout Standard
+ \align center
+ \begin_inset Tabular
+-<lyxtabular version="3" rows="7" columns="4">
++<lyxtabular version="3" rows="5" columns="4">
+ <features tabularvalignment="middle">
+ <column alignment="left" valignment="top">
+ <column alignment="left" valignment="top" width="4.5cm">
+@@ -4699,64 +4508,6 @@ include
+ <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+ \begin_inset Text
+ 
+-\begin_layout Plain Layout
+-Non-free include files
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-$DATADIR/non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$INCLUDE_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-/usr/local/share/
+-\begin_inset Newline newline
+-\end_inset
+-
+-sdcc/non-free/include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\backslash
+-sdcc
+-\backslash
+-non-free
+-\backslash
+-include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+ \begin_layout Plain Layout
+ Library file**
+ \end_layout
+@@ -4806,64 +4557,6 @@ sdcc
+ lib
+ \end_layout
+ 
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Library file**
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-$DATADIR/non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$LIB_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-/usr/local/share/
+-\begin_inset Newline newline
+-\end_inset
+-
+-sdcc/non-free/lib
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\backslash
+-sdcc
+-\backslash
+-non-free
+-\backslash
+-lib
+-\end_layout
+-
+ \end_inset
+ </cell>
+ </row>
+@@ -5186,7 +4879,7 @@ $PATH
+ \begin_layout Standard
+ \align center
+ \begin_inset Tabular
+-<lyxtabular version="3" rows="9" columns="4">
++<lyxtabular version="3" rows="6" columns="4">
+ <features tabularvalignment="middle">
+ <column alignment="block" valignment="top" width="0.5cm">
+ <column alignment="block" valignment="top" width="4.8cm">
+@@ -5464,203 +5157,13 @@ include
+ </cell>
+ </row>
+ <row>
+-<cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
++<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+ 5
+ \end_layout
+ 
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-$DATADIR/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$INCLUDE_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-/usr/local/share/
+-\begin_inset Newline newline
+-\end_inset
+-
+-sdcc/include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-(not on Win32)
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-6
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-$SDCC_HOME/
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$PREFIX2DATA_DIR/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$INCLUDE_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-$SDCC_HOME/share/
+-\begin_inset Newline newline
+-\end_inset
+-
+-sdcc/non-free/include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-$SDCC_HOME
+-\backslash
+-non-free
+-\backslash
+-include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-7
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-path(argv[0])/
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$BIN2DATADIR/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$INCLUDE_DIR_SUFFIX
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-path(argv[0])/../
+-\begin_inset Newline newline
+-\end_inset
+-
+-sdcc/non-free/include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-path(argv[0])
+-\backslash
+-..
+-\backslash
+-non-free
+-\backslash
+-include
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-8
+-\end_layout
+-
+ \end_inset
+ </cell>
+ <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+@@ -5676,21 +5179,13 @@ $DATADIR/
+ \end_inset
+ 
+ 
+-\emph on
+-non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+ \emph on
+ $INCLUDE_DIR_SUFFIX
+ \end_layout
+ 
+ \end_inset
+ </cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
++<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+@@ -5698,7 +5193,7 @@ $INCLUDE_DIR_SUFFIX
+ \begin_inset Newline newline
+ \end_inset
+ 
+-sdcc/non-free/include
++sdcc/include
+ \end_layout
+ 
+ \end_inset
+@@ -5796,7 +5291,7 @@ model
+ \begin_layout Standard
+ \align center
+ \begin_inset Tabular
+-<lyxtabular version="3" rows="10" columns="4">
++<lyxtabular version="3" rows="6" columns="4">
+ <features tabularvalignment="middle">
+ <column alignment="block" valignment="top" width="0.5cm">
+ <column alignment="block" valignment="top" width="4.5cm">
+@@ -6076,7 +5571,7 @@ lib
+ </cell>
+ </row>
+ <row>
+-<cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
++<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+@@ -6085,7 +5580,7 @@ lib
+ 
+ \end_inset
+ </cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
++<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+@@ -6116,7 +5611,7 @@ $LIB_DIR_SUFFIX/
+ 
+ \end_inset
+ </cell>
+-<cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
++<cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+@@ -6131,7 +5626,7 @@ lib/
+ 
+ \end_inset
+ </cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
++<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+ \begin_inset Text
+ 
+ \begin_layout Plain Layout
+@@ -6154,308 +5649,6 @@ lib
+ <model>
+ \end_layout
+ 
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-6
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-$DATADIR/non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$LIB_DIR_SUFFIX/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-/usr/local/share/sdcc/
+-\begin_inset Newline newline
+-\end_inset
+-
+-lib/
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-(not on Win32)
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-7
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-$SDCC_HOME/
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$PREFIX2DATA_DIR/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$LIB_DIR_SUFFIX/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-$SDCC_HOME/share/sdcc/
+-\begin_inset Newline newline
+-\end_inset
+-
+-non-free/lib/
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-$SDCC_HOME
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-lib
+-\backslash
+-non-free
+-\emph on
+-
+-\backslash
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-8
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-path(argv[0])/
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$BIN2DATADIR/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$LIB_DIR_SUFFIX/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-path(argv[0])/../sdcc/
+-\begin_inset Newline newline
+-\end_inset
+-
+-non-free/lib/
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-path(argv[0])
+-\backslash
+-..
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-lib
+-\backslash
+-non-free
+-\emph on
+-
+-\backslash
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-9
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-
+-\emph on
+-$DATADIR/non-free/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-$LIB_DIR_SUFFIX/
+-\emph default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-/usr/local/share/sdcc/
+-\begin_inset Newline newline
+-\end_inset
+-
+-non-free/lib/
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\emph on
+-<model>
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-(not on Win32)
+-\end_layout
+-
+ \end_inset
+ </cell>
+ </row>
+@@ -8723,14 +7916,6 @@ In <installdir>/share/sdcc/include
+ the include files
+ \end_layout
+ 
+-\begin_layout Standard
+-In <installdir>/share/sdcc/non-free/include
+-\end_layout
+-
+-\begin_layout Itemize
+-the non-free include files
+-\end_layout
+-
+ \begin_layout Standard
+ In <installdir>/share/sdcc/lib
+ \end_layout
+@@ -8739,14 +7924,6 @@ In <installdir>/share/sdcc/lib
+ the src and target subdirectories with the precompiled relocatables.
+ \end_layout
+ 
+-\begin_layout Standard
+-In <installdir>/share/sdcc/non-free/lib
+-\end_layout
+-
+-\begin_layout Itemize
+-the src and target subdirectories with the non-free precompiled relocatables.
+-\end_layout
+-
+ \begin_layout Standard
+ In <installdir>/share/sdcc/doc
+ \end_layout
+@@ -15589,66 +14766,6 @@ splint
+ myprogram.c
+ \end_layout
+ 
+-\begin_layout Labeling
+-\labelwidthstring 00.00.0000
+-
+-\series bold
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\series default
+-
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+-
+-\begin_inset CommandInset label
+-LatexCommand label
+-name "lyx:--use-non-free"
+-
+-\end_inset
+-
+- Search / include non-free licensed libraries and header files, located
+- under the non-free directory - see section 
+-\begin_inset CommandInset ref
+-LatexCommand ref
+-reference "subsec:Search-Paths"
+-
+-\end_inset
+-
+-
+-\end_layout
+-
+ \begin_layout Subsection
+ Linker Options
+ \begin_inset Index idx
+@@ -44653,66 +43770,9 @@ http://sourceforge.net/projects/gputils
+ Pic device specific header and c source files are automatically generated
+  from MPLAB include files, which are published by Microchip with a special
+  requirement that they are only to be used with authentic Microchip devices.
+- This reqirement prevents to publish generated header and c source files
+- under the GPL compatible license, so they are located in non-free directory
+- (see section 
+-\begin_inset CommandInset ref
+-LatexCommand ref
+-reference "subsec:Search-Paths"
+-
+-\end_inset
+-
+-).
+- In order to include them in include and library search paths, the 
+-\series bold
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+-
+-\series default
+- command line option should be defined.
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-NOTE: the compiled code, which use non-free pic device specific libraries,
+- is not GPL compatible!
++ As this restriction is incompatible with the goal of software freedom,
++ header files and libraries generated from these files are not included
++ in the SDCC package distributed with Guix.
+ \begin_inset Newline newline
+ \end_inset
+ 
+@@ -44766,7 +43826,7 @@ Makefile
+ \begin_inset space ~
+ \end_inset
+ 
+-sdcc -V --use-non-free -mpic14 -p16f877 -c $<
++sdcc -V -mpic14 -p16f877 -c $<
+ \begin_inset Newline newline
+ \end_inset
+ 
+@@ -44860,7 +43920,7 @@ Makefile
+ \begin_inset space ~
+ \end_inset
+ 
+-sdcc -S -V --use-non-free -mpic14 -p16f877 $<
++sdcc -S -V -mpic14 -p16f877 $<
+ \begin_inset Newline newline
+ \end_inset
+ 
+@@ -45142,47 +44202,6 @@ status collapsed
+ \begin_layout Plain Layout
+ 
+ 
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+-PIC14!Options!-
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+- make non-free device headers and libraries available in the compiler's
+- search paths (implicit -I and -L options)
+-\end_layout
+-
+-\begin_layout Description
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+ \backslash
+ /
+ \end_layout
+@@ -46055,47 +45074,6 @@ status collapsed
+ -all-callee-saves
+ \end_layout
+ 
+-\begin_layout Description
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+-PIC16!Options!-
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+- Make non-free device headers and libraries available in the compiler's
+- search paths (implicit -I and -L options).
+-\end_layout
+-
+ \begin_layout Subsection
+ Port Specific Options
+ \begin_inset Index idx
+@@ -47372,188 +46350,6 @@ Linker
+ \end_inset
+ 
+ 
+-\end_layout
+-
+-\begin_layout Standard
+-If the 
+-\series bold
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+-
+-\series default
+- command line option is specified, non-free directories are searched:
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\begin_inset Separator latexpar
+-\end_inset
+-
+-
+-\end_layout
+-
+-\begin_layout Standard
+-\align center
+-\begin_inset Tabular
+-<lyxtabular version="3" rows="3" columns="4">
+-<features tabularvalignment="middle">
+-<column alignment="center" valignment="top">
+-<column alignment="center" valignment="top">
+-<column alignment="center" valignment="top">
+-<column alignment="center" valignment="top">
+-<row>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Directory
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Description
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Target
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Command prefix
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-PREFIX/sdcc/non-free/include/pic16
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-PIC16 specific non-free headers
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Compiler
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+--I
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-<row>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-PREFIX/sdcc/non-free/lib/pic16
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-PIC16 specific non-free libraries
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+-Linker
+-\end_layout
+-
+-\end_inset
+-</cell>
+-<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+-\begin_inset Text
+-
+-\begin_layout Plain Layout
+--L
+-\end_layout
+-
+-\end_inset
+-</cell>
+-</row>
+-</lyxtabular>
+-
+-\end_inset
+-
+-
+ \end_layout
+ 
+ \begin_layout Subsection
+@@ -48249,66 +47045,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
+ Pic device specific header and c source files are automatically generated
+  from MPLAB include files, which are published by Microchip with a special
+  requirement that they are only to be used with authentic Microchip devices.
+- This requirement prevents to publish generated header and c source files
+- under the GPL compatible license, so they are located in the non-free directory
+- (see section 
+-\begin_inset CommandInset ref
+-LatexCommand ref
+-reference "subsec:Search-Paths"
+-
+-\end_inset
+-
+-).
+- In order to include them in include and library search paths, the 
+-\series bold
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\begin_inset Index idx
+-status collapsed
+-
+-\begin_layout Plain Layout
+--
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-/
+-\end_layout
+-
+-\end_inset
+-
+--use-non-free
+-\end_layout
+-
+-\end_inset
+-
+-
+-\series default
+- command line option should be defined.
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-NOTE: the compiled code, which use non-free pic device specific libraries,
+- is not GPL compatible!
++ As this restriction is incompatible with the goal of software freedom,
++ header files and libraries generated from these files are not included
++ in the SDCC package distributed with Guix.
+ \end_layout
+ 
+ \begin_layout Subsection
+@@ -48554,195 +47293,6 @@ vfprintf.c
+  should also work, but is untested.
+ \end_layout
+ 
+-\begin_layout Subsection
+-Adding New Devices to the Port
+-\end_layout
+-
+-\begin_layout Standard
+-Adding support for a new 16
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+-,
+-\end_layout
+-
+-\end_inset
+-
+-bit PIC MCU requires the following steps:
+-\end_layout
+-
+-\begin_layout Enumerate
+-Create picDEVICE.c and picDEVICE.h from pDEVICE.inc using
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\family typewriter
+-perl /path/to/sdcc/support/scripts/inc2h-pic16.pl 
+-\backslash
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-/path/to/gputils/header/pDEVICE.inc
+-\end_layout
+-
+-\begin_layout Enumerate
+-
+-\family typewriter
+-mv picDEVICE.h /path/to/sdcc/device/non-free/include/pic16
+-\end_layout
+-
+-\begin_layout Enumerate
+-
+-\family typewriter
+-mv picDEVICE.c /path/to/sdcc/device/non-free/lib/pic16/libdev
+-\end_layout
+-
+-\begin_layout Enumerate
+-Either
+-\begin_inset Separator latexpar
+-\end_inset
+-
+-
+-\end_layout
+-
+-\begin_deeper
+-\begin_layout Enumerate
+-add the new device to 
+-\family typewriter
+-/path/to/sdcc/device/lib/pic16/libio/*.ignore
+-\family default
+- to suppress building any of the I/O libraries for the new device
+-\begin_inset Foot
+-status collapsed
+-
+-\begin_layout Plain Layout
+-In fact, the 
+-\family typewriter
+-.ignore
+-\family default
+- files are only used when auto-generating 
+-\family typewriter
+-Makefile.am
+-\family default
+- using the 
+-\family typewriter
+-.../libio/mkmk.sh
+-\family default
+- script.
+-\end_layout
+-
+-\end_inset
+-
+-, or
+-\end_layout
+-
+-\begin_layout Enumerate
+-add the device (family) to 
+-\family typewriter
+-/path/to/sdcc/support/scripts/pic18fam-h-gen.pl
+-\family default
+- to assign I/O styles, run the 
+-\family typewriter
+-pic18fam-h-gen.pl
+-\family default
+- script to generate 
+-\family typewriter
+-pic18fam.h.gen
+-\family default
+-, replace your existing 
+-\family typewriter
+-pic18fam.h
+-\family default
+- with the generated file, and (if required) implement new I/O styles in
+- 
+-\family typewriter
+-/path/to/sdcc/device/include/pic16/{adc,i2c,usart}.h
+-\family default
+- and 
+-\family typewriter
+-/path/to/sdcc/device/lib/pic16/libio/*/*.
+-\end_layout
+-
+-\end_deeper
+-\begin_layout Enumerate
+-Edit 
+-\family typewriter
+-/path/to/sdcc/device/include/pic16/pic18fregs.h
+-\family default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-The file format is self-explanatory, just add
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\family typewriter
+-#elif defined(picDEVICE)
+-\begin_inset Newline newline
+-\end_inset
+-
+-#
+-\begin_inset ERT
+-status collapsed
+-
+-\begin_layout Plain Layout
+-
+-
+-\backslash
+- 
+-\backslash
+- 
+-\end_layout
+-
+-\end_inset
+-
+-include <picDEVICE.h>
+-\family default
+-
+-\begin_inset Newline newline
+-\end_inset
+-
+-at the right place (keep the file sorted, please).
+-\end_layout
+-
+-\begin_layout Enumerate
+-Edit 
+-\family typewriter
+-/path/to/sdcc/device/include/pic16devices.txt
+-\begin_inset Newline newline
+-\end_inset
+-
+-
+-\family default
+-Copy and modify an existing entry or create a new one and insert it at the
+- correct place (keep the file sorted, please).
+-\end_layout
+-
+-\begin_layout Enumerate
+-
+-\family typewriter
+-( cd /path/to/sdcc/device/non-free/lib/pic16 && sh update.sh )
+-\end_layout
+-
+-\begin_layout Enumerate
+-Recompile the pic16 libraries as described in 
+-\begin_inset CommandInset ref
+-LatexCommand ref
+-reference "subsec:pic16Libraries"
+-
+-\end_inset
+-
+- or just configure and build sdcc again from scratch (recommended).
+-\end_layout
+-
+ \begin_layout Subsection
+ Memory Models
+ \end_layout
+@@ -73525,6 +72075,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
+  developers.
+ \end_layout
+ 
++\begin_layout Standard
++It has been modified from the original to reflect the removal of non-free
++ components and related functionality in the SDCC package distributed with
++ GNU Guix.
++\end_layout
++
+ \begin_layout Standard
+ All product names mentioned herein may be trademarks
+ \begin_inset Index idx
+diff --git a/sdcc.spec b/sdcc.spec
+index 9f1eeff..3686228 100644
+--- a/sdcc.spec
++++ b/sdcc.spec
+@@ -83,15 +83,15 @@ rm -rf $RPM_BUILD_ROOT
+ %files common
+ %defattr(-,root,root)
+ /usr/share/sdcc/include
+-/usr/share/sdcc/non-free/include
+ /usr/share/sdcc/lib
+-/usr/share/sdcc/non-free/lib
+ 
+ %files doc
+ %defattr(-,root,root)
+ %doc %{_defaultdocdir}
+ 
+ %changelog
++* Sat Oct 31 2020 - simon AT simonsouth.net
++- removed non-free include and lib directories
+ * Wed Feb 07 2018 - pkk AT spth.de
+ - version updated to 3.7.0
+ * Sun May 29 2016 - sourceforge.brock AT dse.nl
+diff --git a/sdcc_vc.h.in b/sdcc_vc.h.in
+index 06d8cca..736c325 100644
+--- a/sdcc_vc.h.in
++++ b/sdcc_vc.h.in
+@@ -23,8 +23,6 @@
+ 
+ #define INCLUDE_DIR_SUFFIX          "\\include"
+ #define LIB_DIR_SUFFIX              "\\lib"
+-#define NON_FREE_INCLUDE_DIR_SUFFIX "\\non-free\\include"
+-#define NON_FREE_LIB_DIR_SUFFIX     "\\non-free\\lib"
+ 
+ #define BIN2DATA_DIR                "\\.."
+ #define PREFIX2BIN_DIR              "\\bin"
+diff --git a/sdccconf_in.h b/sdccconf_in.h
+index 29619bd..dadf310 100644
+--- a/sdccconf_in.h
++++ b/sdccconf_in.h
+@@ -106,12 +106,6 @@
+ /* XXX */
+ #undef LIB_DIR_SUFFIX
+ 
+-/* XXX */
+-#undef NON_FREE_INCLUDE_DIR_SUFFIX
+-
+-/* XXX */
+-#undef NON_FREE_LIB_DIR_SUFFIX
+-
+ /* Define to 1 to disable the AVR port */
+ #undef OPT_DISABLE_AVR
+ 
+@@ -133,9 +127,6 @@
+ /* XXX */
+ #undef OPT_DISABLE_MCS51
+ 
+-/* XXX */
+-#undef OPT_DISABLE_NON_FREE
+-
+ /* XXX */
+ #undef OPT_DISABLE_PACKIHX
+ 
+diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h
+index 2ce040b..d72d3b8 100644
+--- a/src/SDCCglobl.h
++++ b/src/SDCCglobl.h
+@@ -315,7 +315,6 @@ struct options
+     int no_pack_iram;           /* MCS51/DS390 - Deprecated: Tells the linker not to pack variables in internal ram */
+     int acall_ajmp;             /* MCS51 - Use acall/ajmp instead of lcall/ljmp */
+     int no_ret_without_call;    /* MCS51 - Do not use ret independent of acall/lcall */
+-    int use_non_free;           /* Search / include non-free licensed libraries and header files */
+     /* starting address of the segments */
+     int xstack_loc;             /* initial location of external stack */
+     int stack_loc;              /* initial value of internal stack pointer */
+diff --git a/src/SDCCmain.c b/src/SDCCmain.c
+index a523164..a279d3d 100644
+--- a/src/SDCCmain.c
++++ b/src/SDCCmain.c
+@@ -144,7 +144,6 @@ char buffer[PATH_MAX * 2];
+ #define OPTION_DATA_SEG             "--dataseg"
+ #define OPTION_DOLLARS_IN_IDENT     "--fdollars-in-identifiers"
+ #define OPTION_SIGNED_CHAR          "--fsigned-char"
+-#define OPTION_USE_NON_FREE         "--use-non-free"
+ #define OPTION_PEEP_RETURN          "--peep-return"
+ #define OPTION_NO_PEEP_RETURN       "--no-peep-return"
+ #define OPTION_NO_OPTSDCC_IN_ASM    "--no-optsdcc-in-asm"
+@@ -192,7 +191,6 @@ static const OPTION optionsTable[] = {
+   {0,   OPTION_STD_SDCC11, NULL, "Use ISO C11 standard with SDCC extensions (default)"},
+   {0,   OPTION_DOLLARS_IN_IDENT, &options.dollars_in_ident, "Permit '$' as an identifier character"},
+   {0,   OPTION_SIGNED_CHAR, &options.signed_char, "Make \"char\" signed by default"},
+-  {0,   OPTION_USE_NON_FREE, &options.use_non_free, "Search / include non-free licensed libraries and header files"},
+ 
+   {0,   NULL, NULL, "Code generation options"},
+   {'m', NULL, NULL, "Set the port to use e.g. -mz80."},
+@@ -2045,10 +2043,6 @@ preProcess (char **envp)
+       else
+         addSet (&preArgvSet, Safe_strdup ("-D__SDCC_CHAR_UNSIGNED"));
+ 
+-      /* set the macro for non-free  */
+-      if (options.use_non_free)
+-        addSet (&preArgvSet, Safe_strdup ("-D__SDCC_USE_NON_FREE"));
+-
+       /* set the macro for large model  */
+       switch (options.model)
+         {
+@@ -2262,12 +2256,6 @@ setIncludePath (void)
+    *  6. - $SDCC_HOME/PREFIX2DATA_DIR/INCLUDE_DIR_SUFFIX
+    *  7. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX
+    *  8. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix)
+-   *  9. - $SDCC_HOME/PREFIX2DATA_DIR/NON_FREE_INCLUDE_DIR_SUFFIX/target
+-   * 10. - path(argv[0])/BIN2DATA_DIR/NON_FREE_INCLUDE_DIR_SUFFIX/target
+-   * 11. - DATADIR/NON_FREE_INCLUDE_DIR_SUFFIX/target (only on *nix)
+-   * 12. - $SDCC_HOME/PREFIX2DATA_DIR/NON_FREE_INCLUDE_DIR_SUFFIX
+-   * 13. - path(argv[0])/BIN2DATA_DIR/NON_FREE_INCLUDE_DIR_SUFFIX
+-   * 14. - DATADIR/NON_FREE_INCLUDE_DIR_SUFFIX (only on *nix)
+    */
+ 
+   if (!options.nostdinc)
+@@ -2280,17 +2268,6 @@ setIncludePath (void)
+       includeDirsSet = processStrSet (includeDirsSet, NULL, port->target, NULL);
+       mergeSets (&includeDirsSet, tempSet);
+ 
+-      if (options.use_non_free)
+-        {
+-          set *tempSet1;
+-
+-          tempSet = processStrSet (dataDirsSet, NULL, NON_FREE_INCLUDE_DIR_SUFFIX, NULL);
+-          tempSet1 = processStrSet (tempSet, NULL, DIR_SEPARATOR_STRING, NULL);
+-          tempSet1 = processStrSet (tempSet1, NULL, port->target, NULL);
+-          mergeSets (&tempSet1, tempSet);
+-          mergeSets (&includeDirsSet, tempSet1);
+-        }
+-
+       if ((p = getenv (SDCC_INCLUDE_NAME)) != NULL)
+         {
+           struct dbuf_s dbuf;
+@@ -2315,9 +2292,6 @@ setLibPath (void)
+    * 3. - $SDCC_HOME/PREFIX2DATA_DIR/LIB_DIR_SUFFIX/<model>
+    * 4. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/<model>
+    * 5. - DATADIR/LIB_DIR_SUFFIX/<model> (only on *nix)
+-   * 6. - $SDCC_HOME/PREFIX2DATA_DIR/NON_FREE_LIB_DIR_SUFFIX/<model>
+-   * 7. - path(argv[0])/BIN2DATA_DIR/NON_FREE_LIB_DIR_SUFFIX/<model>
+-   * 8. - DATADIR/NON_FREE_LIB_DIR_SUFFIX/<model> (only on *nix)
+    */
+ 
+   if (!options.nostdlib)
+@@ -2334,13 +2308,6 @@ setLibPath (void)
+       dbuf_makePath (&dbuf, LIB_DIR_SUFFIX, port->general.get_model ? port->general.get_model () : targetname);
+       libDirsSet = processStrSet (dataDirsSet, NULL, dbuf_c_str (&dbuf), NULL);
+ 
+-      if (options.use_non_free)
+-        {
+-          dbuf_set_length (&dbuf, 0);
+-          dbuf_makePath (&dbuf, NON_FREE_LIB_DIR_SUFFIX, port->general.get_model ? port->general.get_model () : targetname);
+-          mergeSets (&libDirsSet, processStrSet (dataDirsSet, NULL, dbuf_c_str (&dbuf), NULL));
+-        }
+-
+       if ((p = getenv (SDCC_LIB_NAME)) != NULL)
+         {
+           addSetHead (&libDirsSet, Safe_strdup (p));
+diff --git a/src/pic14/main.c b/src/pic14/main.c
+index 3d868cc..e8ecaaf 100644
+--- a/src/pic14/main.c
++++ b/src/pic14/main.c
+@@ -42,7 +42,6 @@ static OPTION _pic14_poptions[] =
+     { 0, "--no-pcode-opt", &pic14_options.disable_df, "disable (slightly faulty) optimization on pCode" },
+     { 0, OPTION_STACK_SIZE, &options.stack_size, "sets the size if the argument passing stack (default: 16, minimum: 4)", CLAT_INTEGER },
+     { 0, "--no-extended-instructions", &pic14_options.no_ext_instr, "forbid use of the extended instruction set (e.g., ADDFSR)" },
+-    { 0, "--no-warn-non-free", &pic14_options.no_warn_non_free, "suppress warning on absent --use-non-free option" },
+     { 0, NULL, NULL, NULL }
+   };
+ 
+@@ -153,16 +152,6 @@ _pic14_finaliseOptions (void)
+       addSet (&preArgvSet, dbuf_detach_c_str (&dbuf));
+     }
+ 
+-  if (!pic14_options.no_warn_non_free && !options.use_non_free)
+-    {
+-      fprintf(stderr,
+-              "WARNING: Command line option --use-non-free not present.\n"
+-              "         When compiling for PIC14/PIC16, please provide --use-non-free\n"
+-              "         to get access to device headers and libraries.\n"
+-              "         If you do not use these, you may provide --no-warn-non-free\n"
+-              "         to suppress this warning (not recommended).\n");
+-    } // if
+-
+ }
+ 
+ static void
+diff --git a/src/pic14/main.h b/src/pic14/main.h
+index 4275b65..0dc8c86 100644
+--- a/src/pic14/main.h
++++ b/src/pic14/main.h
+@@ -5,7 +5,6 @@ typedef struct {
+   unsigned int isLibrarySource:1;
+   int disable_df;
+   int no_ext_instr;
+-  int no_warn_non_free;
+ } pic14_options_t;
+ 
+ extern pic14_options_t pic14_options;
+diff --git a/src/pic16/device.h b/src/pic16/device.h
+index cdfbba0..5877f09 100644
+--- a/src/pic16/device.h
++++ b/src/pic16/device.h
+@@ -99,7 +99,6 @@ typedef struct {
+   int gstack;
+   unsigned int debgen;
+   int xinst;
+-  int no_warn_non_free;
+ } pic16_options_t;
+ 
+ extern pic16_options_t pic16_options;
+diff --git a/src/pic16/main.c b/src/pic16/main.c
+index 6f194c1..7f7b2f0 100644
+--- a/src/pic16/main.c
++++ b/src/pic16/main.c
+@@ -655,7 +655,6 @@ OPTION pic16_optionsTable[]= {
+     { 0, "--pcode-verbose",     &pic16_pcode_verbose, "dump pcode related info"},
+     { 0, "--calltree",          &pic16_options.dumpcalltree, "dump call tree in .calltree file"},
+     { 0, "--gstack",            &pic16_options.gstack, "trace stack pointer push/pop to overflow"},
+-    { 0, "--no-warn-non-free",  &pic16_options.no_warn_non_free, "suppress warning on absent --use-non-free option" },
+     { 0, NULL,                  NULL, NULL}
+ };
+ 
+@@ -940,16 +939,6 @@ _pic16_finaliseOptions (void)
+       addSet (&asmOptionsSet, Safe_strdup ("-D__STACK_MODEL_SMALL"));
+     }
+ 
+-  if (!pic16_options.no_warn_non_free && !options.use_non_free)
+-    {
+-      fprintf(stderr,
+-              "WARNING: Command line option --use-non-free not present.\n"
+-              "         When compiling for PIC14/PIC16, please provide --use-non-free\n"
+-              "         to get access to device headers and libraries.\n"
+-              "         If you do not use these, you may provide --no-warn-non-free\n"
+-              "         to suppress this warning (not recommended).\n");
+-    } // if
+-
+   dbuf_destroy (&dbuf);
+ }
+ 
+@@ -979,7 +968,6 @@ _pic16_setDefaultOptions (void)
+   pic16_options.ip_stack = 1;       /* set to 1 to enable ipop/ipush for stack */
+   pic16_options.gstack = 0;
+   pic16_options.debgen = 0;
+-  pic16_options.no_warn_non_free = 0;
+ }
+ 
+ static const char *
+diff --git a/src/regression/Makefile b/src/regression/Makefile
+index 26a7ff3..4547295 100644
+--- a/src/regression/Makefile
++++ b/src/regression/Makefile
+@@ -65,10 +65,10 @@ TARGETPIC = 18f452
+ CFLAGS	= -mpic16 -p$(TARGETPIC)
+ DIR = pic16
+ endif
+-CFLAGS += -Wl,-q --no-warn-non-free
++CFLAGS += -Wl,-q
+ CFLAGS += -Wl,--map
+-CFLAGS += -I $(SDCC_SRC)/device/include/$(DIR) -I $(SDCC_SRC)/device/non-free/include/$(DIR)
+-CFLAGS += -L $(SDCC_BIN)/device/lib/build/$(DIR) -L $(SDCC_BIN)/device/non-free/lib/build/$(DIR)
++CFLAGS += -I $(SDCC_SRC)/device/include/$(DIR)
++CFLAGS += -L $(SDCC_BIN)/device/lib/build/$(DIR)
+ #CFLAGS += --no-pcode-opt
+ #CFLAGS += -V
+ 
+diff --git a/support/regression/ports/pic14/spec.mk b/support/regression/ports/pic14/spec.mk
+index a3dcc05..bef1c45 100644
+--- a/support/regression/ports/pic14/spec.mk
++++ b/support/regression/ports/pic14/spec.mk
+@@ -12,13 +12,9 @@ endif
+ 
+ ifndef SDCC_BIN_PATH
+   ifndef CROSSCOMPILING
+-    SDCCFLAGS += --nostdinc -I$(top_srcdir)/device/include/pic14 -I$(top_srcdir)/device/non-free/include/pic14 -I$(top_srcdir)
+-    LINKFLAGS += --nostdlib -L$(top_builddir)/device/lib/build/pic14 -L$(top_builddir)/device/non-free/lib/build/pic14
+-  else
+-    SDCCFLAGS += --use-non-free
++    SDCCFLAGS += --nostdinc -I$(top_srcdir)/device/include/pic14 -I$(top_srcdir)
++    LINKFLAGS += --nostdlib -L$(top_builddir)/device/lib/build/pic14
+   endif
+-else
+-  SDCCFLAGS += --use-non-free
+ endif
+ 
+ ifdef CROSSCOMPILING
+@@ -26,7 +22,6 @@ ifdef CROSSCOMPILING
+ endif
+ 
+ SDCCFLAGS += -mpic14 -pp16f877 --less-pedantic -Wl,-q
+-SDCCFLAGS += --no-warn-non-free
+ LINKFLAGS += libsdcc.lib libm.lib
+ 
+ OBJEXT = .o
+diff --git a/support/regression/ports/pic16/spec.mk b/support/regression/ports/pic16/spec.mk
+index 1f94cde..f1ac726 100644
+--- a/support/regression/ports/pic16/spec.mk
++++ b/support/regression/ports/pic16/spec.mk
+@@ -12,13 +12,9 @@ endif
+ 
+ ifndef SDCC_BIN_PATH
+   ifndef CROSSCOMPILING
+-    SDCCFLAGS += --nostdinc -I$(top_srcdir)/device/include/pic16 -I$(top_srcdir)/device/non-free/include/pic16 -I$(top_srcdir)
+-    LINKFLAGS += --nostdlib -L$(top_builddir)/device/lib/build/pic16 -L$(top_builddir)/device/non-free/lib/build/pic16
+-  else
+-    SDCCFLAGS += --use-non-free
++    SDCCFLAGS += --nostdinc -I$(top_srcdir)/device/include/pic16 -I$(top_srcdir)
++    LINKFLAGS += --nostdlib -L$(top_builddir)/device/lib/build/pic16
+   endif
+-else
+-  SDCCFLAGS += --use-non-free
+ endif
+ 
+ ifdef CROSSCOMPILING
+@@ -27,7 +23,6 @@ endif
+ 
+ SDCCFLAGS += -mpic16 -pp18f452 --less-pedantic -Wl,-q
+ SDCCFLAGS += --no-peep
+-SDCCFLAGS += --no-warn-non-free
+ LINKFLAGS += libsdcc.lib libc18f.lib libm18f.lib
+ 
+ OBJEXT = .o
+diff --git a/support/scripts/cinc2h.pl b/support/scripts/cinc2h.pl
+index 8558135..30d72b7 100755
+--- a/support/scripts/cinc2h.pl
++++ b/support/scripts/cinc2h.pl
+@@ -39,58 +39,10 @@
+ 
+   -------------------------------------------------
+ 
+-  Steps to add a new target device to SDCC/PIC16:
+-  (Following Raphael Neider <rneider AT web.de>)
+-
+-   1. Create the picDEVICE.c and picDEVICE.h from pDEVICE.inc using
+-      ./cinc2h.pl -p 18f4520 -cb -cp -gp "path/to/gputils_source" -o "path/to/output"
+-
+-   2. mv picDEVICE.h $SDCC/device/non-free/include/pic16
+-   3. mv picDEVICE.c $SDCC/device/non-free/lib/pic16/libdev
+-   4. either
+-
+-      (a) adjust $SDCC/device/lib/pic16/libio/*.ignore
+-          if the device does not support ADC, I2C, or USART
+-          --- OR ---
+-      (b) adjust
+-          * SDCC/scripts/pic18fam-h-gen.pl
+-          * SDCC/device/include/pic16/adc.h (if required)
+-          * SDCC/device/include/pic16/usart.h (if required)
+-          * SDCC/device/lib/pic16/libio/*/* (if required)
+-          to add the new device to the appropriate I/O style
+-          and implement new styles (if required).
+-
+-          Having modified pic18fam-h-gen.pl, you need to run the
+-          script to generate pic18fam.h.gen, which in turn must
+-          then replace your .../include/pic16/pic18fam.h to take
+-          effect; see pic18fam-h-gen.pl for usage information.
+-   6. edit $SDCC/device/include/pic16/pic18fregs.h
+-   7. edit $SDCC/device/include/pic16/pic16devices.txt
+-   8. run cd $SDCC/device/non-free/lib/pic16 && sh update.sh
+-      to regenerate .../libdev/Makefile.am and processors.ac
+-
+-   The file format of steps 6 and 7 is self explanatory, in most
+-   if not all cases you can copy and paste another device's records
+-   and adjust them to the newly added device.
+-
+-  -------------------------------------------------
+-
+-  Steps to add a new target device to SDCC/PIC14:
+-
+-   1. Create the picDEVICE.c and picDEVICE.h from pDEVICE.inc using
+-      ./cinc2h.pl -p 16f1503 -cb -cp -gp "path/to/gputils_source" -o "path/to/output"
+-
+-   2. mv picDEVICE.h $SDCC/device/non-free/include/pic14
+-   3. mv picDEVICE.c $SDCC/device/non-free/lib/pic14/libdev
+-   4. add DEVICE to $SDCC/device/non-free/lib/pic14/libdev/devices.txt
+-      (The names of the enhanced devices the "# enhanced cores" line
+-       after follow.)
+-
+-   5. edit $SDCC/device/include/pic14/pic14devices.txt
+-
+-   The file format of step 5 is self explanatory, in most if not all
+-   cases you can copy and paste another device's records and adjust
+-   them to the newly added device.
++  For its inclusion in the SDCC package distributed with GNU Guix
++  (https://guix.gnu.org/) this file has been modified from the
++  original to remove instructions on its use with non-free software
++  and to update the output of the print_license subroutine below.
+ 
+   $Id: cinc2h.pl 9450 2016-01-09 16:47:43Z molnarkaroly $
+ =cut
+@@ -1345,10 +1297,9 @@ sub print_license($)
+  * Microchip header (.inc) and linker script (.lkr) files Microchip
+  * requires that "The header files should state that they are only to be
+  * used with authentic Microchip devices" which makes them incompatible
+- * with the GPL. Pic device libraries and header files are located at
+- * non-free/lib and non-free/include directories respectively.
+- * Sdcc should be run with the --use-non-free command line option in
+- * order to include non-free header files and libraries.
++ * with the GPL. These non-free libraries and header files (and the
++ * build and run-time options that enable their use) are omitted in the
++ * SDCC package distributed with GNU Guix.
+  *
+  * See http://sdcc.sourceforge.net/ for the latest information on sdcc.
+  */
+diff --git a/support/scripts/pic14-header-parser.pl b/support/scripts/pic14-header-parser.pl
+index 4413c25..57c6076 100755
+--- a/support/scripts/pic14-header-parser.pl
++++ b/support/scripts/pic14-header-parser.pl
+@@ -63,9 +63,7 @@ use constant P_SHOW_ONLY_NAME   => 3;
+ 
+ my @default_paths =
+   (
+-  '/usr/share/sdcc/non-free/include',
+   '/usr/share/sdcc/include',
+-  '/usr/local/share/sdcc/non-free/include',
+   '/usr/local/share/sdcc/include'
+   );
+ 
+diff --git a/support/scripts/pic16-header-parser.pl b/support/scripts/pic16-header-parser.pl
+index 6db417a..4b35225 100755
+--- a/support/scripts/pic16-header-parser.pl
++++ b/support/scripts/pic16-header-parser.pl
+@@ -62,9 +62,7 @@ use constant P_SHOW_ONLY_NAME   => 3;
+ 
+ my @default_paths =
+   (
+-  '/usr/share/sdcc/non-free/include',
+   '/usr/share/sdcc/include',
+-  '/usr/local/share/sdcc/non-free/include',
+   '/usr/local/share/sdcc/include'
+   );
+ 
+diff --git a/support/scripts/sdcc.nsi b/support/scripts/sdcc.nsi
+index 5086181..9527244 100644
+--- a/support/scripts/sdcc.nsi
++++ b/support/scripts/sdcc.nsi
+@@ -477,11 +477,6 @@ ${Section} "SDCC include files" SEC05
+ 
+   SetOutPath "$INSTDIR\include"
+   File "${DEV_ROOT}\include\*.h"
+-
+-  SetOutPath "$INSTDIR\non-free\include\pic14"
+-  File "${DEV_ROOT}\non-free\include\pic14\*.h"
+-  SetOutPath "$INSTDIR\non-free\include\pic16"
+-  File "${DEV_ROOT}\non-free\include\pic16\*.h"
+ ${SectionEnd}
+ 
+ ${Section} "SDCC DS390 library" SEC06
+@@ -579,18 +574,12 @@ ${Section} "SDCC PIC16 library" SEC21
+   SetOutPath "$INSTDIR\lib\pic16"
+   File "${DEV_ROOT}\lib\pic16\*.o"
+   File "${DEV_ROOT}\lib\pic16\*.lib"
+-
+-  SetOutPath "$INSTDIR\non-free\lib\pic16"
+-  File "${DEV_ROOT}\non-free\lib\pic16\*.lib"
+ ${SectionEnd}
+ 
+ ${Section} "SDCC PIC14 library" SEC22
+   SectionIn 1 2
+   SetOutPath "$INSTDIR\lib\pic14"
+   File "${DEV_ROOT}\lib\pic14\*.lib"
+-
+-  SetOutPath "$INSTDIR\non-free\lib\pic14"
+-  File "${DEV_ROOT}\non-free\lib\pic14\*.lib"
+ ${SectionEnd}
+ 
+ ${Section} "SDCC STM8 library" SEC23
+@@ -691,10 +680,6 @@ ${Section} "SDCC library sources" SEC25
+   File "${DEV_ROOT}\lib\src\pic14\libsdcc\enhanced\*.inc"
+ #  File "${DEV_ROOT}\lib\src\pic14\libsdcc\Makefile"
+ 
+-  SetOutPath "$INSTDIR\non-free\lib\src\pic14\libdev"
+-  File "${DEV_ROOT}\non-free\lib\src\pic14\libdev\*.c"
+-#  File "${DEV_ROOT}\non-free\lib\src\pic14\libdev\Makefile"
+-
+   SetOutPath "$INSTDIR\lib\src\pic14\libm"
+   File "${DEV_ROOT}\lib\src\pic14\libm\*.c"
+ 
+@@ -746,10 +731,6 @@ ${Section} "SDCC library sources" SEC25
+   File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
+ #  File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
+ 
+-  SetOutPath "$INSTDIR\non-free\lib\src\pic16\libdev"
+-  File "${DEV_ROOT}\non-free\lib\src\pic16\libdev\*.c"
+-#  File "${DEV_ROOT}\non-free\lib\src\pic16\libdev\Makefile"
+-
+   SetOutPath "$INSTDIR\lib\src\pic16\libio"
+   File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
+ #  File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
+@@ -1003,13 +984,9 @@ ${Section} Uninstall SECUNINSTALL
+ 
+   Delete "$INSTDIR\lib\pic14\*.lib"
+ 
+-  Delete "$INSTDIR\non-free\lib\pic14\*.lib"
+-
+   Delete "$INSTDIR\lib\pic16\*.o"
+   Delete "$INSTDIR\lib\pic16\*.lib"
+ 
+-  Delete "$INSTDIR\non-free\lib\pic16\*.lib"
+-
+   Delete "$INSTDIR\lib\hc08\*.lib"
+ 
+   Delete "$INSTDIR\lib\s08\*.lib"
+@@ -1059,9 +1036,7 @@ ${Section} Uninstall SECUNINSTALL
+   Delete "$INSTDIR\include\pic14\*.h"
+   Delete "$INSTDIR\include\pic14\*.txt"
+   Delete "$INSTDIR\include\pic14\*.inc"
+-  Delete "$INSTDIR\non-free\include\pic14\*.h"
+   Delete "$INSTDIR\include\pic16\*.h"
+-  Delete "$INSTDIR\non-free\include\pic16\*.h"
+   Delete "$INSTDIR\include\pic16\*.txt"
+   Delete "$INSTDIR\include\mcs51\*.h"
+   Delete "$INSTDIR\include\hc08\*.h"
+@@ -1119,9 +1094,7 @@ ${Section} Uninstall SECUNINSTALL
+   Delete "$INSTDIR\uninstall.exe"
+ 
+   RMDir /r "$INSTDIR\lib\src\pic14"
+-  RMDir /r "$INSTDIR\non-free\lib\src\pic14"
+   RMDir /r "$INSTDIR\lib\src\pic16"
+-  RMDir /r "$INSTDIR\non-free\lib\src\pic16"
+   RMDir "$INSTDIR\lib\src\small"
+   RMDir "$INSTDIR\lib\src\medium"
+   RMDir "$INSTDIR\lib\src\large"
+@@ -1138,12 +1111,9 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\lib\src\s08"
+   RMDir "$INSTDIR\lib\src\stm8"
+   RMDir "$INSTDIR\lib\src"
+-  RMDir "$INSTDIR\non-free\lib\src"
+ 
+   RMDir "$INSTDIR\lib\pic14"
+-  RMDir "$INSTDIR\non-free\lib\pic14"
+   RMDir "$INSTDIR\lib\pic16"
+-  RMDir "$INSTDIR\non-free\lib\pic16"
+   RMDir "$INSTDIR\lib\z80"
+   RMDir "$INSTDIR\lib\z180"
+   RMDir "$INSTDIR\lib\r2k"
+@@ -1160,16 +1130,13 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\lib\s08"
+   RMDir "$INSTDIR\lib\stm8"
+   RMDir "$INSTDIR\lib"
+-  RMDir "$INSTDIR\non-free\lib"
+ 
+   RMDir "$INSTDIR\include\asm\z80"
+   RMDir "$INSTDIR\include\asm\z180"
+   RMDir "$INSTDIR\include\asm\r2k"
+   RMDir "$INSTDIR\include\asm\r3ka"
+   RMDir "$INSTDIR\include\asm\pic16"
+-  RMDir "$INSTDIR\non-free\include\asm\pic16"
+   RMDir "$INSTDIR\include\asm\pic14"
+-  RMDir "$INSTDIR\non-free\include\asm\pic14"
+   RMDir "$INSTDIR\include\asm\mcs51"
+   RMDir "$INSTDIR\include\asm\gbz80"
+   RMDir "$INSTDIR\include\asm\ds390"
+@@ -1178,17 +1145,12 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\include\asm"
+   RMDir "$INSTDIR\include\z180"
+   RMDir "$INSTDIR\include\pic14"
+-  RMDir "$INSTDIR\non-free\include\pic14"
+   RMDir "$INSTDIR\include\pic16"
+-  RMDir "$INSTDIR\non-free\include\pic16"
+   RMDir "$INSTDIR\include\mcs51"
+   RMDir "$INSTDIR\include\hc08"
+   RMDir "$INSTDIR\include\ds400"
+   RMDir "$INSTDIR\include\ds390"
+   RMDir "$INSTDIR\include"
+-  RMDir "$INSTDIR\non-free\include"
+-
+-  RMDir "$INSTDIR\non-free"
+ 
+ !ifdef FULL_DOC
+   RMDir /r "$INSTDIR\doc"
+diff --git a/support/scripts/sdcc_cygwin_mingw32 b/support/scripts/sdcc_cygwin_mingw32
+index 5575663..2588d4f 100755
+--- a/support/scripts/sdcc_cygwin_mingw32
++++ b/support/scripts/sdcc_cygwin_mingw32
+@@ -6,9 +6,7 @@
+ --datarootdir="/sdcc" \
+ docdir="\${datarootdir}/doc" \
+ include_dir_suffix="include" \
+-non_free_include_dir_suffix="non-free/include" \
+ lib_dir_suffix="lib" \
+-non_free_lib_dir_suffix="non-free/lib" \
+ sdccconf_h_dir_separator="\\\\" \
+ CC="gcc -mno-cygwin" \
+ CXX="g++ -mno-cygwin"
+diff --git a/support/scripts/sdcc_mingw32 b/support/scripts/sdcc_mingw32
+index 96e3280..050761e 100755
+--- a/support/scripts/sdcc_mingw32
++++ b/support/scripts/sdcc_mingw32
+@@ -19,9 +19,7 @@ export SDCCCONFIGUREFLAGS=" \
+ --datarootdir=/sdcc \
+ docdir=\${datarootdir}/doc \
+ include_dir_suffix=include \
+-non_free_include_dir_suffix=non-free/include \
+ lib_dir_suffix=lib \
+-non_free_lib_dir_suffix=non-free/lib \
+ sdccconf_h_dir_separator=\\\\ \
+ --disable-device-lib \
+ --host=i586-mingw32msvc --build=unknown-unknown-linux-gnu"
diff --git a/gnu/packages/patches/tomb-fix-errors-on-open.patch b/gnu/packages/patches/tomb-fix-errors-on-open.patch
deleted file mode 100644
index 5f41c9ee8f..0000000000
--- a/gnu/packages/patches/tomb-fix-errors-on-open.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Description: Avoid error messages when opening a new tomb
- Make sure control file exists and has user ownership before user writes to it.
-Author: Sven Geuer <debmaint@g-e-u-e-r.de>
-Bug: https://github.com/dyne/Tomb/issues/369
-Last-Update: 2019-11-04
---- a/tomb
-+++ b/tomb
-@@ -2197,14 +2197,15 @@
- # {{{ Open
- 
- _update_control_file() {
--	# replaces a control file with new contents and gives it user ownership
-+	# make sure a control file exists, gives it user ownership
-+	# and replaces it with new contents
- 	# stdin = contents
- 	# $1 = path to control file
- 	# $2 = contents
- 	[[ "$2" = "" ]] && return 1
- 	_sudo touch "$1"
--	print "$2" > "$1"
- 	_sudo chown ${_UID}:${_GID} "$1"
-+	print "$2" > "$1"
- 	_verbose "updated control file $1 = $2"
- }
- 
diff --git a/gnu/packages/patches/transmission-honor-localedir.patch b/gnu/packages/patches/transmission-honor-localedir.patch
new file mode 100644
index 0000000000..70c66bfb2b
--- /dev/null
+++ b/gnu/packages/patches/transmission-honor-localedir.patch
@@ -0,0 +1,34 @@
+This patch modifies Transmission so it honors the "localedir" option
+passed to its configure script, allowing GTK-specific localization
+data to be placed in the package's "gui" output.
+
+Without this patch, localization of transmission-gtk can break as the
+application will expect to find this data in the package's default
+output (as a result of the call to bindtextdomain in gtk/main.c).
+
+diff --git a/configure b/configure
+index a29e24f..3ae8ef4 100755
+--- a/configure
++++ b/configure
+@@ -21305,7 +21305,7 @@ $as_echo "$LINGUAS" >&6; }
+    sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ 	< $srcdir/po/POTFILES.in > po/POTFILES
+ 
+-    transmissionlocaledir='${prefix}/${DATADIRNAME}/locale'
++    transmissionlocaledir='${localedir}'
+ 
+ fi
+ 
+diff --git a/configure.ac b/configure.ac
+index 57d3cae..ab62093 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -563,7 +563,7 @@ if test "x$enable_nls" = "xyes" ; then
+     AC_SUBST(GETTEXT_PACKAGE)
+     AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
+     AM_GLIB_GNU_GETTEXT
+-    transmissionlocaledir='${prefix}/${DATADIRNAME}/locale'
++    transmissionlocaledir='${localedir}'
+     AC_SUBST(transmissionlocaledir)
+ fi
+ AC_SUBST(INTLLIBS)
diff --git a/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch b/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
index 29dec4f5e9..d6c1987718 100644
--- a/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
+++ b/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
@@ -32,9 +32,9 @@ Index: u-boot/configs/sifive_fu540_defconfig
 ===================================================================
 --- u-boot.orig/configs/sifive_fu540_defconfig
 +++ u-boot/configs/sifive_fu540_defconfig
-@@ -12,3 +12,5 @@ CONFIG_DISPLAY_BOARDINFO=y
- CONFIG_DEFAULT_DEVICE_TREE="hifive-unleashed-a00"
- CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+@@ -27,3 +27,5 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
+ CONFIG_SPL_CLK=y
  CONFIG_DM_MTD=y
+ CONFIG_DM_RESET=y
 +CONFIG_USE_PREBOOT=y
 +CONFIG_PREBOOT="setenv fdt_addr ${fdtcontroladdr}; fdt addr ${fdtcontroladdr};"
diff --git a/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch b/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch
new file mode 100644
index 0000000000..5ce219ccc7
--- /dev/null
+++ b/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch
@@ -0,0 +1,28 @@
+Look for extensions in $CHROMIUM_EXTENSION_DIRECTORY instead of
+/usr/share/chromium/extensions.
+
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -4,6 +4,7 @@
+ 
+ #include "chrome/common/chrome_paths.h"
+ 
++#include "base/environment.h"
+ #include "base/files/file_util.h"
+ #include "base/logging.h"
+ #include "base/native_library.h"
+@@ -511,7 +512,13 @@
+ #endif
+ #if defined(OS_LINUX) || defined(OS_CHROMEOS)
+     case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+-      cur = base::FilePath(kFilepathSinglePrefExtensions);
++      std::unique_ptr<base::Environment> environment(base::Environment::Create());
++      std::string extension_dir;
++      if (environment->GetVar("CHROMIUM_EXTENSION_DIRECTORY", &extension_dir)) {
++        cur = base::FilePath(extension_dir);
++      } else {
++        cur = base::FilePath(kFilepathSinglePrefExtensions);
++      }
+       break;
+     }
+ #endif
diff --git a/gnu/packages/patches/ungoogled-chromium-system-nspr.patch b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
index 6fbc0a56a7..988296b143 100644
--- a/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
+++ b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
@@ -17,8 +17,8 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
 --- a/base/time/time.cc
 +++ b/base/time/time.cc
 @@ -14,7 +14,7 @@
- #include "base/macros.h"
- #include "base/no_destructor.h"
+ #include "base/optional.h"
+ #include "base/strings/string_util.h"
  #include "base/strings/stringprintf.h"
 -#include "base/third_party/nspr/prtime.h"
 +#include <nspr/prtime.h>
@@ -27,7 +27,7 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
  
 --- a/base/BUILD.gn
 +++ b/base/BUILD.gn
-@@ -107,6 +107,9 @@ config("base_flags") {
+@@ -102,6 +102,9 @@
        "-Wglobal-constructors",
      ]
    }
@@ -37,7 +37,7 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
  }
  
  config("base_implementation") {
-@@ -712,8 +715,6 @@ jumbo_component("base") {
+@@ -720,8 +723,6 @@
      "third_party/cityhash_v103/src/city_v103.h",
      "third_party/icu/icu_utf.cc",
      "third_party/icu/icu_utf.h",
@@ -48,19 +48,19 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
      "threading/hang_watcher.cc",
 --- a/tools/gn/build/gen.py
 +++ b/tools/gn/build/gen.py
-@@ -339,6 +339,9 @@ def WriteGNNinja(path, platform, host, o
+@@ -380,6 +380,9 @@
        if not options.no_static_libstdcpp:
          ldflags.append('-static-libstdc++')
  
 +      # Additional system libraries that are used.
 +      libs.append('-lnspr4')
 +
-       # This is needed by libc++.
-       if not platform.is_mingw():
-         libs.append('-ldl')
+       if platform.is_mingw() or platform.is_msys():
+         cflags.remove('-std=c++17')
+         cflags.extend([
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -103,6 +103,9 @@
+@@ -110,6 +110,9 @@
      "//build/win:default_exe_manifest",
      "//third_party/icu",
    ]
@@ -72,7 +72,7 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
  # This isn't strictly necessary since we can just add the deps to "platform",
 --- a/third_party/crashpad/crashpad/handler/BUILD.gn
 +++ b/third_party/crashpad/crashpad/handler/BUILD.gn
-@@ -140,6 +140,9 @@
+@@ -144,6 +144,9 @@
        "../third_party/mini_chromium:base",
        "../tools:tool_support",
      ]
@@ -104,7 +104,7 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
 +    "-lnspr4",
 +  ]
    if (is_ios) {
-     libs = [ "UIKit.framework" ]
+     frameworks = [ "UIKit.framework" ]
    }
 --- a/components/schema_org/BUILD.gn
 +++ b/components/schema_org/BUILD.gn
diff --git a/gnu/packages/patches/xpra-4.0.4-norequests.patch b/gnu/packages/patches/xpra-4.0.4-norequests.patch
deleted file mode 100644
index e545be7f1d..0000000000
--- a/gnu/packages/patches/xpra-4.0.4-norequests.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Remove python-requests dependency, r27626 upstream.
-
---- a/xpra/net/websockets/common.py	(revision 27625)
-+++ b/xpra/net/websockets/common.py	(revision 27626)
-@@ -7,7 +7,6 @@
- import uuid
- from hashlib import sha1
- from base64 import b64encode
--from requests.structures import CaseInsensitiveDict
- 
- from xpra.os_util import strtobytes, bytestostr, monotonic_time
- from xpra.log import Logger
-@@ -77,7 +76,7 @@
-     for line in lines:
-         parts = line.split(b": ", 1)
-         if len(parts)==2:
--            headers[parts[0]] = parts[1]
-+            headers[parts[0].lower()] = parts[1]
-     return headers
- 
- def verify_response_headers(headers, key):
-@@ -84,14 +83,13 @@
-     log("verify_response_headers(%s)", headers)
-     if not headers:
-         raise Exception("no http headers found in response")
--    headers = CaseInsensitiveDict(headers)
--    upgrade = headers.get(b"Upgrade", b"")
-+    upgrade = headers.get(b"upgrade", b"")
-     if upgrade!=b"websocket":
-         raise Exception("invalid http upgrade: '%s'" % upgrade)
--    protocol = headers.get(b"Sec-WebSocket-Protocol", b"")
-+    protocol = headers.get(b"sec-websocket-protocol", b"")
-     if protocol!=b"binary":
-         raise Exception("invalid websocket protocol: '%s'" % protocol)
--    accept_key = headers.get(b"Sec-WebSocket-Accept", b"")
-+    accept_key = headers.get(b"sec-websocket-accept", b"")
-     if not accept_key:
-         raise Exception("websocket accept key is missing")
-     expected_key = make_websocket_accept_hash(key)
diff --git a/gnu/packages/patches/yggdrasil-extra-config.patch b/gnu/packages/patches/yggdrasil-extra-config.patch
new file mode 100644
index 0000000000..c21ca29a84
--- /dev/null
+++ b/gnu/packages/patches/yggdrasil-extra-config.patch
@@ -0,0 +1,86 @@
+diff --git a/cmd/yggdrasil/main.go b/cmd/yggdrasil/main.go
+index 813e950..08d35cc 100644
+--- a/cmd/yggdrasil/main.go
++++ b/cmd/yggdrasil/main.go
+@@ -40,11 +40,12 @@ type node struct {
+ 	admin     module.Module // admin.AdminSocket
+ }
+ 
+-func readConfig(useconf *bool, useconffile *string, normaliseconf *bool) *config.NodeConfig {
++func readConfig(useconf *bool, useconffile *string, extraconffile *string, normaliseconf *bool) *config.NodeConfig {
+ 	// Use a configuration file. If -useconf, the configuration will be read
+ 	// from stdin. If -useconffile, the configuration will be read from the
+ 	// filesystem.
+ 	var conf []byte
++	var extraconf []byte
+ 	var err error
+ 	if *useconffile != "" {
+ 		// Read the file from the filesystem
+@@ -56,6 +57,21 @@ func readConfig(useconf *bool, useconffile *string, normaliseconf *bool) *config
+ 	if err != nil {
+ 		panic(err)
+ 	}
++	if *extraconffile != "" {
++		extraconf, err = ioutil.ReadFile(*extraconffile);
++	}
++	if err != nil {
++		panic(err)
++	}
++	// Generate a new configuration - this gives us a set of sane defaults -
++	// then parse the configuration we loaded above on top of it. The effect
++	// of this is that any configuration item that is missing from the provided
++	// configuration will use a sane default.
++	cfg := config.GenerateConfig()
++	var confs [2][]byte
++	confs[0]=conf
++	confs[1]=extraconf
++	for _, conf := range confs { if len(conf)>0 {
+ 	// If there's a byte order mark - which Windows 10 is now incredibly fond of
+ 	// throwing everywhere when it's converting things into UTF-16 for the hell
+ 	// of it - remove it and decode back down into UTF-8. This is necessary
+@@ -69,11 +85,6 @@ func readConfig(useconf *bool, useconffile *string, normaliseconf *bool) *config
+ 			panic(err)
+ 		}
+ 	}
+-	// Generate a new configuration - this gives us a set of sane defaults -
+-	// then parse the configuration we loaded above on top of it. The effect
+-	// of this is that any configuration item that is missing from the provided
+-	// configuration will use a sane default.
+-	cfg := config.GenerateConfig()
+ 	var dat map[string]interface{}
+ 	if err := hjson.Unmarshal(conf, &dat); err != nil {
+ 		panic(err)
+@@ -112,6 +123,7 @@ func readConfig(useconf *bool, useconffile *string, normaliseconf *bool) *config
+ 	if err = mapstructure.Decode(dat, &cfg); err != nil {
+ 		panic(err)
+ 	}
++	}}
+ 	return cfg
+ }
+ 
+@@ -164,6 +176,7 @@ func main() {
+ 	genconf := flag.Bool("genconf", false, "print a new config to stdout")
+ 	useconf := flag.Bool("useconf", false, "read HJSON/JSON config from stdin")
+ 	useconffile := flag.String("useconffile", "", "read HJSON/JSON config from specified file path")
++	extraconffile := flag.String("extraconffile", "", "extra (usually private) HJSON/JSON config from specified file path")
+ 	normaliseconf := flag.Bool("normaliseconf", false, "use in combination with either -useconf or -useconffile, outputs your configuration normalised")
+ 	confjson := flag.Bool("json", false, "print configuration from -genconf or -normaliseconf as JSON instead of HJSON")
+ 	autoconf := flag.Bool("autoconf", false, "automatic mode (dynamic IP, peer with IPv6 neighbors)")
+@@ -187,7 +200,7 @@ func main() {
+ 		cfg = config.GenerateConfig()
+ 	case *useconffile != "" || *useconf:
+ 		// Read the configuration from either stdin or from the filesystem
+-		cfg = readConfig(useconf, useconffile, normaliseconf)
++		cfg = readConfig(useconf, useconffile, extraconffile, normaliseconf)
+ 		// If the -normaliseconf option was specified then remarshal the above
+ 		// configuration and print it back to stdout. This lets the user update
+ 		// their configuration file with newly mapped names (like above) or to
+@@ -332,7 +345,7 @@ func main() {
+ 			goto exit
+ 		case _ = <-r:
+ 			if *useconffile != "" {
+-				cfg = readConfig(useconf, useconffile, normaliseconf)
++				cfg = readConfig(useconf, useconffile, extraconffile, normaliseconf)
+ 				logger.Infoln("Reloading configuration from", *useconffile)
+ 				n.core.UpdateConfig(cfg)
+ 				n.tuntap.UpdateConfig(cfg)
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 12dd472c68..da0f13a01e 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -468,3 +468,57 @@ patches, and displays the patches along with comments and state information.
 Users can login allowing them to change the state of patches.")
     (home-page "http://jk.ozlabs.org/projects/patchwork/")
     (license gpl2+)))
+
+(define-public pwclient
+  (package
+    (name "pwclient")
+    (version "1.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/getpatchwork/pwclient")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1xckwvcqklzpyh3xs4k2zm40ifp0q5fdkj2vmgb8vhfvl1ivs6jv"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-requirements
+           (lambda _
+             (substitute* "test-requirements.txt"
+               ;; The pytest requirement is unnecessarily strict
+               (("pytest>=3.0,<5.0;")
+                "pytest>=3.0,<6.0;"))
+             #t))
+         (add-before 'build 'set-PBR_VERSION
+           (lambda _
+             (setenv "PBR_VERSION"
+                     ,version)
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "pytest"))
+             #t))
+         (add-after 'install 'install-man-page
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "man/pwclient.1"
+                           (string-append
+                            (assoc-ref outputs "out")
+                            "/share/man/man1"))
+             #t)))))
+    (native-inputs
+     `(("python-pbr" ,python-pbr)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-mock" ,python-mock)))
+    (home-page
+     "https://github.com/getpatchwork/pwclient")
+    (synopsis "Command-line client for the Patchwork patch tracking tool")
+    (description
+     "pwclient is a VCS-agnostic tool for interacting with Patchwork, the
+web-based patch tracking system.")
+    (license gpl2+)))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index c9cce98e7f..879bc7f93f 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +46,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages audio)
@@ -54,6 +56,7 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages djvu)
   #:use-module (gnu packages fontutils)
@@ -68,7 +71,6 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages javascript)
   #:use-module (gnu packages lesstif)
   #:use-module (gnu packages libffi)
@@ -89,6 +91,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -191,9 +194,7 @@ please install the @code{flyer-composer-gui} package.")))
 
              ;; To build poppler-glib (as needed by Evince), we need Cairo and
              ;; GLib.  But of course, that Cairo must not depend on Poppler.
-             ("cairo" ,(package (inherit cairo)
-                         (inputs (alist-delete "poppler"
-                                               (package-inputs cairo)))))))
+             ("cairo" ,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
@@ -221,17 +222,17 @@ please install the @code{flyer-composer-gui} package.")))
 (define-public poppler-data
   (package
     (name "poppler-data")
-    (version "0.4.9")
+    (version "0.4.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://poppler.freedesktop.org/poppler-data"
                                   "-" version ".tar.gz"))
               (sha256
                (base32
-                "04i0wgdkn5lhda8cyxd1ll4a2p41pwqrwd47n9mdpl7cx5ypx70z"))))
+                "0c3vjs3p7rjc4yfacnhd865r27czmzwcr4j2z4jldi68dvvcwbvf"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ; no test suite
+     '(#:tests? #f                      ; no test suite
        #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
@@ -501,7 +502,7 @@ using the DjVuLibre library.")
 (define-public zathura-pdf-mupdf
   (package
     (name "zathura-pdf-mupdf")
-    (version "0.3.5")
+    (version "0.3.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -509,7 +510,7 @@ using the DjVuLibre library.")
                               "/download/zathura-pdf-mupdf-" version ".tar.xz"))
               (sha256
                (base32
-                "1pjwsb7zwclxsvz229fl7y2saf1pv3ifwv3ay8viqxgrp9x3z9hq"))))
+                "1r3v37k9fl2rxipvacgxr36llywvy7n20a25h3ajlyk70697sa66"))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs
      `(("jbig2dec" ,jbig2dec)
@@ -528,6 +529,12 @@ using the DjVuLibre library.")
                                "-Dlink-external=true")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'remove-libmupdfthird.a-requirement
+           (lambda _
+             ;; Ignore a missing (apparently superfluous) static library.
+             (substitute* "meson.build"
+               ((".*mupdfthird.*") ""))
+             #t))
          (add-before 'configure 'add-mujs-to-dependencies
            (lambda _
              ;; Add mujs to the 'build_dependencies'.
@@ -686,30 +693,35 @@ extracting content or merging files.")
 (define-public mupdf
   (package
     (name "mupdf")
-    (version "1.16.1")
+    (version "1.18.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://mupdf.com/downloads/archive/"
-                            "mupdf-" version "-source.tar.xz"))
-        (sha256
-         (base32
-          "1npmy92lkj41nnc14b4fpq7z62pminy94zsdbrczj22jpn283rvg"))
-        (modules '((guix build utils)))
-        (snippet
-         ;; We keep lcms2 since it is different than our lcms.
-         '(begin
-            (for-each
-              (lambda (dir)
-                (delete-file-recursively (string-append "thirdparty/" dir)))
-              '("freeglut" "freetype" "harfbuzz" "jbig2dec"
-                "libjpeg" "mujs" "openjpeg" "zlib"))
-                #t))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://mupdf.com/downloads/archive/"
+                           "mupdf-" version "-source.tar.xz"))
+       (sha256
+        (base32 "16m5sksil22sshxy70xkslsb2qhvcqb1d95i9savnhds1xn4ybar"))
+       (patches (search-patches "mupdf-fix-linkage.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled software.
+           (let* ((keep (list "lcms2")) ; different from our lcms2 package
+                  (from "thirdparty")
+                  (kept (string-append from "~temp")))
+             (mkdir-p kept)
+             (for-each (lambda (file) (rename-file (string-append from "/" file)
+                                              (string-append kept "/" file)))
+                       keep)
+             (delete-file-recursively from)
+             (rename-file kept from))
+           #t))))
     (build-system gnu-build-system)
     (inputs
       `(("curl" ,curl)
         ("freeglut" ,freeglut)
         ("freetype" ,freetype)
+        ("gumbo-parser" ,gumbo-parser)
         ("harfbuzz" ,harfbuzz)
         ("jbig2dec" ,jbig2dec)
         ("libjpeg" ,libjpeg-turbo)
@@ -722,14 +734,19 @@ extracting content or merging files.")
     (native-inputs
       `(("pkg-config" ,pkg-config)))
     (arguments
-      '(#:tests? #f ; no check target
-        #:make-flags (list "CC=gcc"
+      `(#:tests? #f                     ; no check target
+        #:make-flags (list "verbose=yes"
+                           (string-append "CC=" ,(cc-for-target))
                            "XCFLAGS=-fpic"
                            "USE_SYSTEM_LIBS=yes"
                            "USE_SYSTEM_MUJS=yes"
+                           "shared=yes"
+                           ;; Even with the linkage patch we must fix RUNPATH.
+                           (string-append "LDFLAGS=-Wl,-rpath="
+                                          (assoc-ref %outputs "out") "/lib")
                            (string-append "prefix=" (assoc-ref %outputs "out")))
         #:phases (modify-phases %standard-phases
-                  (delete 'configure))))
+                   (delete 'configure)))) ; no configure script
     (home-page "https://mupdf.com")
     (synopsis "Lightweight PDF viewer and toolkit")
     (description
@@ -792,6 +809,53 @@ program capable of converting PDF into other formats.")
    (license (list license:asl2.0 license:clarified-artistic))
    (home-page "http://qpdf.sourceforge.net/")))
 
+(define-public qpdfview
+  (package
+    (name "qpdfview")
+    (version "0.4.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://launchpad.net/qpdfview/"
+                           "trunk/" version "/+download/"
+                           "qpdfview-" version ".tar.gz"))
+       (sha256
+        (base32 "0v1rl126hvblajnph2hkansgi0s8vjdc5yxrm4y3faa0lxzjwr6c"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cups" ,cups)
+       ("djvulibre" ,djvulibre)
+       ("libspectre" ,libspectre)
+       ("poppler-qt5" ,poppler-qt5)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)))
+    (arguments
+     `(#:imported-modules ((guix build qt-build-system)
+                           (guix build cmake-build-system)
+                           ,@%gnu-build-system-modules)
+       #:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  ((guix build qt-build-system) #:prefix qt:))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (substitute* "qpdfview.pri"
+               (("/usr") (assoc-ref %outputs "out")))
+             (invoke "qmake" "qpdfview.pro")))
+         ;; Otherwise, the user interface will not display any icons.
+         (add-after 'install 'qt-wrap
+           (assoc-ref qt:%standard-phases 'qt-wrap)))))
+    (home-page "https://launchpad.net/qpdfview")
+    (synopsis "Tabbed document viewer")
+    (description "@command{qpdfview} is a document viewer for PDF, PS and DJVU
+files.  It uses the Qt toolkit and features persistent per-file settings,
+configurable toolbars and shortcuts, continuous and multi‐page layouts,
+SyncTeX support, and rudimentary support for annotations and forms.")
+    (license license:gpl2+)))
+
 (define-public xournal
   (package
     (name "xournal")
@@ -823,7 +887,7 @@ using a stylus.")
 (define-public xournalpp
   (package
     (name "xournalpp")
-    (version "1.0.18")
+    (version "1.0.19")
     (source
      (origin
        (method git-fetch)
@@ -832,7 +896,7 @@ using a stylus.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0a9ygbmd4dwgck3k8wsrm2grynqa0adb12wwspzmzvpisbadffjy"))))
+        (base32 "05nx4cmrka6hwdn7r91yy4h46qpa9k7iy9dkgaq3hrkh9z3fxlkq"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags (list "-DENABLE_CPPUNIT=ON") ;enable tests
@@ -1047,7 +1111,6 @@ the PDF pages.")
               ("libudev" ,eudev)
               ("libwebp" ,libwebp)
               ("libdrm" ,libdrm)
-              ("imagemagick" ,imagemagick)
               ("giflib" ,giflib)
               ("glib" ,glib)
               ("cairo-xcb" ,cairo-xcb)
@@ -1265,7 +1328,7 @@ multiple files.")
 (define-public pdfpc
   (package
     (name "pdfpc")
-    (version "4.4.0")
+    (version "4.4.1")
     (source
      (origin
        (method git-fetch)
@@ -1274,7 +1337,7 @@ multiple files.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0vh2r32akvasdrghkaq7ard24r2qncp34jfiyshi3zxabm9bhfaa"))))
+        (base32 "11n925c5jj3yfwnqkgxzqrmsrpqh8ls1g4idmqqzpsanpam1xvna"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))          ; no test target
     (inputs
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index ad84d63785..d49ca005ba 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -269,15 +269,14 @@ more.")
 (define-public perl-algorithm-c3
   (package
     (name "perl-algorithm-c3")
-    (version "0.10")
+    (version "0.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Algorithm-C3-" version ".tar.gz"))
        (sha256
-        (base32
-         "01hlcaxndls86bl92rkd3fvf9pfa3inxqaimv88bxs95803kmkss"))))
+        (base32 "02ck52cf0yyk57354rd1rp5l0kbfwi1pvg2lh3jadvjxfrkq9x5a"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Algorithm-C3")
     (synopsis "Module for merging hierarchies using the C3 algorithm")
@@ -1267,14 +1266,14 @@ different getters and setters.")
 (define-public perl-class-c3
   (package
     (name "perl-class-c3")
-    (version "0.34")
+    (version "0.35")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Class-C3-" version ".tar.gz"))
        (sha256
-        (base32 "1dcibc31v5jwmi6hsdzi7c5ag1sb4wp3kxkibc889qrdj7jm12sd"))))
+        (base32 "0gp3czp6y0jxx4448kz37f7gdxq4vw514bvc0l98rk4glvqkq1c4"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-algorithm-c3" ,perl-algorithm-c3)))
@@ -1693,15 +1692,14 @@ one.")
 (define-public perl-clone-pp
   (package
     (name "perl-clone-pp")
-    (version "1.07")
+    (version "1.08")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/Clone-PP-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "15dkhqvih6rx9dnngfwwljcm9s8afb0nbyl2vdvhd8frnw4y31dz"))))
+        (base32 "0y7m25fksiavzg4xj4cm9zkz8rmnk4iqy7lm01m4nmyqlna3082p"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Clone-PP")
     (synopsis "Recursively copy Perl datatypes")
@@ -5779,14 +5777,14 @@ one: logging, exceptions, and translations.")
 (define-public perl-libintl-perl
   (package
     (name "perl-libintl-perl")
-    (version "1.31")
+    (version "1.32")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/G/GU/GUIDO/"
                            "libintl-perl-" version ".tar.gz"))
        (sha256
-        (base32 "1afandrl44mq9c32r57xr489gkfswdgc97h8x86k98dz1byv3l6a"))))
+        (base32 "19gbbh9w3rl805mv6mg1q80fsrg610h098qhf7ycnkjnyac84440"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -5899,15 +5897,14 @@ intersections, unions, unique elements, complements and many more.")
 (define-public perl-list-moreutils
   (package
     (name "perl-list-moreutils")
-    (version "0.428")
+    (version "0.430")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "List-MoreUtils-" version ".tar.gz"))
        (sha256
-        (base32
-         "1hkc8xkd27yzfkgaglzn77j4qjmilyva4gaz3pc64vpism2hjgki"))))
+        (base32 "09v5cipjf634a1176wy2wicibzz51lry0d0yim9rnbfl5j2ggcb3"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -5934,15 +5931,14 @@ functionality on lists which is not going to go into List::Util.")
 (define-public perl-list-moreutils-xs
   (package
     (name "perl-list-moreutils-xs")
-    (version "0.428")
+    (version "0.430")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/List-MoreUtils-XS-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0bfndmnkqaaf3gffprak143bzplxd69c368jxgr7rzlx88hyd7wx"))))
+        (base32 "0hmjkhmk1qlzbg8skq7g1zral07k1x0fk4w2fpcfr7hpgkaldkp8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-config-autoconf" ,perl-config-autoconf)
@@ -7280,15 +7276,14 @@ building is done in @code{MooX::ConfigFromFile::Role}---using
 (define-public perl-moox-file-configdir
   (package
     (name "perl-moox-file-configdir")
-    (version "0.007")
+    (version "0.008")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "MooX-File-ConfigDir-" version ".tar.gz"))
        (sha256
-        (base32
-         "074v150wrbddhy1n0qc8s80zrb71l3c4is968cnr06ac5l9kmshz"))))
+        (base32 "1b033injzk9d8clgip67ps5j5bpkrnag28q89ddwhrgqx12i3m7q"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-file-configdir" ,perl-file-configdir)
@@ -7304,17 +7299,16 @@ installing configuration files or for finding any piece of settings.")
 (define-public perl-moox-handlesvia
   (package
     (name "perl-moox-handlesvia")
-    (version "0.001008")
+    (version "0.001009")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://cpan/authors/id/M/MA/MATTP/MooX-HandlesVia-"
+             "mirror://cpan/authors/id/T/TO/TOBYINK/MooX-HandlesVia-"
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "137yrjn2jmw4cj0fjdajnkjgqr5arnpq72kbm6w66xskncinz55h"))))
+        (base32 "04kcyflg49rclxa1nm035c05jpyvhdacjyy1wklbgv4li3im6qvi"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-moox-types-mooselike"
@@ -9837,7 +9831,7 @@ generally slower on larger files.")
 (define-public perl-text-format
   (package
     (name "perl-text-format")
-    (version "0.61")
+    (version "0.62")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9845,7 +9839,7 @@ generally slower on larger files.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0axfyiml3zwawwd127z8rl2lm53z6dlsflzmp80m3j0myn7kp2mv"))))
+                "0104z7jjv46kqh77rnx8kvmsbr5dy0s56xm01dckq4ly65br0hkx"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index dbe18a025a..5ba60502da 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -316,7 +316,7 @@ MTP, and much more.")
 (define-public perl-image-exiftool
   (package
     (name "perl-image-exiftool")
-    (version "11.85")
+    (version "12.00")
     (source
      (origin
        (method url-fetch)
@@ -328,7 +328,7 @@ MTP, and much more.")
                             "Image-ExifTool-" version ".tar.gz")))
        (sha256
         (base32
-         "15zqm0ly2b3paqg0ym44ib2mvh6k18a9q5rvdirwipqa127al2lb"))))
+         "0nl5djf6hs6brnp7qnqvj3xwhj1qnjwcv35ih4yqp2mm9b4jqyfh"))))
     (build-system perl-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 9e34811969..5a56b59548 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -60,7 +60,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.4.11")
+    (version "7.4.13")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -68,7 +68,7 @@
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "1knnw9b5hkxmisxclw384ic6bcihihhii51q0fyva8cwkdd6fcax"))
+                "1x402vsg3zq8mbar2fwln85vmvdvmrxm8q4ma8333hms78z31bdf"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
@@ -218,6 +218,9 @@
                          ;; count of a sub-directory to increase compared to
                          ;; its parent.
                          "ext/standard/tests/file/lstat_stat_variation8.phpt"
+                         ;; This tests whether microseconds ‘differ enough’ and
+                         ;; fails inconsistently on ‘fast’ machines.
+                         "ext/date/tests/bug73837.phpt"
 
                          ;; XXX: These gd tests fails.  Likely because our version
                          ;; is different from the (patched) bundled one.
@@ -312,10 +315,10 @@
                          "ext/standard/tests/file/bug43008.phpt"
                          ;; Table data not created in sqlite(?).
                          "ext/pdo_sqlite/tests/bug_42589.phpt"
-
-                         ;; This tests whether microseconds ‘differ enough’ and
-                         ;; fails inconsistently on ‘fast’ machines.
-                         "ext/date/tests/bug73837.phpt"))
+                         ;; Expects an Array with 3 preg_matches; gets 0.
+                         "ext/pcre/tests/bug79846.phpt"
+                         ;; Expects an empty Array; gets one with " " in it.
+                         "ext/pcre/tests/bug80118.phpt"))
 
              ;; Skip tests requiring network access.
              (setenv "SKIP_ONLINE_TESTS" "1")
diff --git a/gnu/packages/piet.scm b/gnu/packages/piet.scm
index 5282290456..a09c05d990 100644
--- a/gnu/packages/piet.scm
+++ b/gnu/packages/piet.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,11 +20,14 @@
 (define-module (gnu packages piet)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages gd)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages tcl))
 
 (define-public npiet
@@ -55,16 +59,119 @@
     (native-inputs `(("groff" ,groff)))
     (synopsis "Piet interpreter")
     (description
-     "Npiet is an interpreter for the piet programming language.  Instead of
-text, piet programs are pictures.  Commands are determined based on changes in
+     "Npiet is an interpreter for the Piet programming language.  Instead of
+text, Piet programs are pictures.  Commands are determined based on changes in
 color.
 
 This package includes:
 @enumerate
-@item npiet, a piet interpreter with debugging capabilities
-@item npiet-foogol, a program that builds a piet program from foogol, an
-algol-like language
-@item npietedit, an editor for the piet programming language
-@end enumerate")
+@item @command{npiet}, a Piet interpreter with debugging capabilities
+@item @command{npiet-foogol}, a program that builds a Piet program from Foogol,
+an Algol-like language
+@item @command{npietedit}, an editor for Piet programs.
+@end enumerate\n")
     (home-page "https://www.bertnase.de/npiet/")
     (license license:gpl2+)))
+
+(define-public piet-toolchain
+  (let ((commit "f002ff6a924a6bbace5eef94f3be06f425e7f590")
+        (revision "0"))
+    (package
+      (name "piet-toolchain")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sl236/Piet")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0xwbhwizfbn080fmrgavaz3b939brycmlar3m5px9avl2b68c816"))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             ;; Remove a bundled fork of Marc Majcher's Piet interpreter.
+             (delete-file-recursively "interpreter")
+             #t))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (srfi srfi-26))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)          ; no configure script
+           (delete 'build)              ; nothing to build
+           (delete 'check)              ; run our own tests below
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (doc (string-append out "/share/doc/"
+                                          ,name "-" ,version)))
+                 (for-each (lambda (script)
+                             (install-file script bin)
+                             (wrap-program (string-append bin "/" script)
+                               `("PERL5LIB" ":" = (,(getenv "PERL5LIB")))))
+                           (list "piet-assembler"
+                                 "piet-compiler"))
+
+                 ;; Fix an odd mode.
+                 (chmod "compiler-samples/test-binary-ops.script" #o644)
+                 (for-each (lambda (file)    ; INSTALL-FILE is not recursive
+                             (copy-recursively file
+                                               (string-append doc "/" file)))
+                           (list "assembler-samples"
+                                 "compiler-samples"
+                                 "README.md")) ; includes the licence grant
+                 #t)))
+           (add-after 'install 'check
+             (lambda* (#:key outputs tests? #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (when tests?
+                   (unsetenv "PERL5LIB") ; test the wrapping
+                   ;; Compile all scripts assemble all Piets.
+                   (for-each (lambda (file)
+                               (system (string-append bin "/piet-compiler "
+                                                      file ">"
+                                                      file ".piet")))
+                             (find-files "." "\\.script$"))
+                   (for-each (lambda (file)
+                               (system (string-append bin "/piet-assembler "
+                                                      file "|pnmtopng>"
+                                                      file ".png")))
+                             (find-files "." "\\.piet$"))
+
+                   ;; Don't run the interactive one.
+                   (delete-file "assembler-samples/quest.piet.png")
+                   (for-each (cut invoke "npiet" <>)
+                             (find-files "." "\\.png$"))
+                   #t)))))))
+      (native-inputs
+       ;; For our tests.
+       `(("netpbm" ,netpbm)
+         ("npiet" ,npiet)))
+      (inputs
+       `(("perl" ,perl)
+         ("perl-parse-recdescent" ,perl-parse-recdescent)))
+      (home-page "https://www.toothycat.net/wiki/wiki.pl?MoonShadow/Piet")
+      (synopsis "Piet compiler and assembler")
+      (description
+       "This package provides a compiler and assembler that target the Piet
+graphical programming language.
+
+@command{piet-assembler} converts Piet assembler instructions (e.g.,
+@code{push}, @code{add}, @code{switch}, @code{outn}) and directives into an
+executable @code{netpbm} image of the corresponding Piet program.
+
+@command{piet-compiler} compiles a C-like high-level language into assembly
+source understood by @command{piet-assembler}.  It supports common arithmetic
+and boolean logic operators (though not bitwise manipulation), flow control
+(@code{if}, @code{for}, @code{while}), recursive functions, in-line assembler,
+and input/output intrinsics.  The only supported data type is the integer.
+
+The language is documented only by the compiler's Perl source code and the
+included samples.")
+      (license license:cc-by-sa4.0))))
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 0efc253718..f23b56728a 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -208,14 +208,14 @@ colors, styles, options and details.")
 (define-public asymptote
   (package
     (name "asymptote")
-    (version "2.67")
+    (version "2.68")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/asymptote/"
                            version "/asymptote-" version ".src.tgz"))
        (sha256
-        (base32 "16rdwxal27fikzfqsm2sb8ji78whpxl98rdyyp0ky2qlh55mf7la"))))
+        (base32 "1ch2bc28v0v76x9sbbn7xswvqi88plam9y4966j0kj2dn5fmms71"))))
     (build-system gnu-build-system)
     ;; Note: The 'asy' binary retains a reference to docdir for use with its
     ;; "help" command in interactive mode, so adding a "doc" output is not
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index b247cf21e1..a3f9bef63c 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -40,7 +40,6 @@
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gv)
-  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -72,8 +71,7 @@
     (build-system gnu-build-system)
     (inputs
      `(("psutils" ,psutils)
-       ("gv" ,gv)
-       ("imagemagick" ,imagemagick)))
+       ("gv" ,gv)))
     (native-inputs
      `(("gperf" ,gperf)
        ("groff" ,groff)
@@ -272,14 +270,14 @@ seen in a terminal.")
 (define-public highlight
   (package
     (name "highlight")
-    (version "3.58")
+    (version "3.59")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.andre-simon.de/zip/highlight-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "1y25vc3nysdih4y9z6yqn1k3i6lgkbyqkmdaib2xyfpqw4djb06z"))))
+        (base32 "18j9q9w9l71zxaaf8klcl4f5rqcmqnz9632azabv8scfw2l6r4l5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm
index 324b089f4b..9e0fe2a829 100644
--- a/gnu/packages/prolog.scm
+++ b/gnu/packages/prolog.scm
@@ -86,7 +86,7 @@ manner.  It also features an interactive interpreter.")
 (define-public swi-prolog
   (package
     (name "swi-prolog")
-    (version "8.3.9")
+    (version "8.3.10")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -96,7 +96,7 @@ manner.  It also features an interactive interpreter.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ixb8pc5s7q8q0njs8is1clpvik6jhhdcwnys7m9rpwdzgi10sjz"))))
+                "15q40qpxz472lp190zbk0lyap2xgaxzib55l0c3qwgf9haz46j1p"))))
     (build-system cmake-build-system)
     (arguments
      `(#:parallel-build? #t
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 4e748e1f1d..a414bc6bbb 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -82,7 +83,7 @@ data in motion, or as a file format for data at rest.")
 (define-public protobuf
   (package
     (name "protobuf")
-    (version "3.12.3")
+    (version "3.14.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/google/protobuf/releases/"
@@ -90,7 +91,7 @@ data in motion, or as a file format for data at rest.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0s29dj8l9j6jk04im3ivcji1x9jm42fwjmwcmli0smz0m337xyaf"))))
+                "0nan2wkkwkcx3qyx0cf5vfzjcjhr5qgh4jfx6v2lwpf5q03mmv2h"))))
     (build-system gnu-build-system)
     (inputs `(("zlib" ,zlib)))
     (outputs (list "out"
@@ -276,7 +277,7 @@ mechanism for serializing structured data.")
     (home-page "https://pypi.org/project/pure-protobuf/")
     (synopsis "Protobuf implementation using dataclasses")
     (description
-     "@code{python-pure-protobuf} allows to take advantage of the standard
+     "@code{python-pure-protobuf} takes advantage of the standard
 dataclasses module to define message types.  Protocol buffers are a
 language-neutral, platform-neutral extensible mechanism for serializing
 structured data.")
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 498f495584..e3d2da9b59 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -28,6 +28,7 @@
 (define-module (gnu packages python-check)
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages openstack)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages web)
@@ -82,6 +83,39 @@ This package provides seamless integration with coverage.py (and thus pytest,
 nosetests, etc...) in Python projects.")
     (license license:expat)))
 
+(define-public python-junit-xml
+  ;; XXX: There are no tags or PyPI releases, so take the latest commit
+  ;; and use the version defined in setup.py.
+  (let ((version "1.9")
+        (commit "4bd08a272f059998cedf9b7779f944d49eba13a6")
+        (revision "0"))
+    (package
+      (name "python-junit-xml")
+      (version (git-version version revision commit))
+      (home-page "https://github.com/kyrus/python-junit-xml")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference (url home-page) (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0b8kbjhk3j10rk0vcniy695m3h43yip6y93h1bd6jjh0cp7s09c7"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (replace 'check
+                      (lambda _
+                        (invoke "pytest" "-vv"))))))
+      (native-inputs
+       `(("python-pytest" ,python-pytest)))
+      (propagated-inputs
+       `(("python-six" ,python-six)))
+      (synopsis "Create JUnit XML test results")
+      (description
+       "This package provides a Python module for creating JUnit XML test
+result documents that can be read by tools such as Jenkins or Bamboo.")
+      (license license:expat))))
+
 (define-public python-vcrpy
   (package
     (name "python-vcrpy")
@@ -436,6 +470,40 @@ in Pytest.")
 of the project to ensure it renders properly.")
     (license license:expat)))
 
+(define-public python-re-assert
+  (package
+    (name "python-re-assert")
+    (version "1.1.0")
+    (source
+     (origin
+       ;; There are no tests in the PyPI tarball.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/asottile/re-assert")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1rssq4wpqmx1c17hjfx5l3sn3zmnlz9jffddiqrs4f6h7m6cadai"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "-vv"))))))
+    (native-inputs
+     `(("python-covdefaults" ,python-covdefaults)
+       ("python-coverage" ,python-coverage)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-regex" ,python-regex)))
+    (home-page "https://github.com/asottile/re-assert")
+    (synopsis "Show where your regex match assertion failed")
+    (description
+     "@code{re-assert} provides a helper class to make assertions of regexes
+simpler.")
+    (license license:expat)))
+
 (define-public python-pytest-trio
   (package
     (name "python-pytest-trio")
@@ -868,7 +936,7 @@ variables in the @file{pytest.ini} file.")
      `(#:tests? #f))                  ;the mini test suite fails
     (home-page "https://github.com/farizrahman4u/pyux")
     (synopsis "Utility to check API integrity in Python libraries")
-    (description "The pyux utility allows to detect API changes in Python
+    (description "The pyux utility detects API changes in Python
 libraries.")
     (license license:expat)))
 
@@ -1044,3 +1112,36 @@ any Python VM with basically no runtime overhead.")
     (description "Robber is a Python assertion library for test-driven and
 behavior-driven development (TDD and BDD).")
     (license license:expat)))
+
+(define-public python-stestr
+  (package
+    (name "python-stestr")
+    (version "3.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "stestr" version))
+       (sha256
+        (base32
+         "0adhqp9c9338wlvlq776k57k04lyxp38bv591afdm9gjsn2qn1zm"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))                    ;to avoid circular dependencies
+    (native-inputs
+     `(("python-pbr" ,python-pbr)))
+    (propagated-inputs
+     `(("python-cliff" ,python-cliff)
+       ("python-fixtures" ,python-fixtures)
+       ("python-future" ,python-future)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-subunit" ,python-subunit)
+       ("python-testtools" ,python-testtools)
+       ("python-voluptuous" ,python-voluptuous)))
+    (home-page "https://stestr.readthedocs.io/en/latest/")
+    (synopsis "Parallel Python test runner")
+    (description "This package provides the @command{stestr} command, a
+parallel Python test runner built around @code{subunit}.  It is designed to
+execute @code{unittest} test suites using multiple processes to split up
+execution of a test suite.  It will also store a history of all test runs to
+help in debugging failures and optimizing the scheduler to improve speed.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm
index 730b247414..6b2da5f925 100644
--- a/gnu/packages/python-compression.scm
+++ b/gnu/packages/python-compression.scm
@@ -136,14 +136,14 @@ the LZ4 frame format.")
 (define-public python-brotli
   (package
     (name "python-brotli")
-    (version "1.0.7")
+    (version "1.0.9")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "Brotli" version ".zip"))
         (sha256
          (base32
-          "19x5dqxckb62n37mpnczp21rfxqvgpm0ki5ds8ac65zx8hbxqf05"))))
+          "0f4433s4wv9masc303kkb1s0a09x81xwr8pdvj0kyxzdl05826sd"))))
     (build-system python-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 228dd594b1..6f3dbbf9f2 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -74,7 +74,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/python-otr/pure-python-otr.git")
+         (url "https://github.com/python-otr/pure-python-otr")
          (commit version)))
        (file-name
         (git-file-name name version))
@@ -476,13 +476,13 @@ risk.")
 (define-public python-certifi
   (package
     (name "python-certifi")
-    (version "2020.4.5.1")
+    (version "2020.11.8")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "certifi" version))
               (sha256
                (base32
-                "06b5gfs7wmmipln8f3z928d2mmx2j4b3x7pnqmj6cvmyfh8v7z2i"))))
+                "1x4w18gm71dbwys5g2mbcnbw27b3dvphj5d56icg5ys45h4yypgh"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f))          ;no tests
     (home-page "https://certifi.io/")
@@ -994,26 +994,34 @@ protocol (Javascript Object Signing and Encryption).")
 (define-public python-pycryptodome
   (package
     (name "python-pycryptodome")
-    (version "3.7.3")
+    (version "3.9.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pycryptodome" version))
        (sha256
         (base32
-         "0dh6ky5ngxayyn5f6n7gdamjl49g3khz6pdx9sdnag1zwi8248hs"))))
+         "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li"))))
     (build-system python-build-system)
     (home-page "https://www.pycryptodome.org")
-    (synopsis "Cryptographic library for Python")
-    (description "This package provides a cryptographic library for Python.
+    (synopsis "Low-level cryptographic Python library")
+    (description
+     "PyCryptodome is a self-contained Python package of low-level
+cryptographic primitives.  It's not a wrapper to a separate C library like
+OpenSSL.  To the largest possible extent, algorithms are implemented in pure
+Python.  Only the pieces that are extremely critical to performance (e.g.,
+block ciphers) are implemented as C extensions.
+
+You are expected to have a solid understanding of cryptography and security
+engineering to successfully use these primitives.  You must also be able to
+recognize that some are obsolete (e.g., TDES) or even insecure (RC4).
 
-It brings the following enhancements with respect to the last official version
-of PyCrypto:
+It provides many enhancements over the last release of PyCrypto (2.6.1):
 
 @itemize
 @item Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
 @item Accelerated AES on Intel platforms via AES-NI
-@item First class support for PyPy
+@item First-class support for PyPy
 @item Elliptic curves cryptography (NIST P-256 curve only)
 @item Better and more compact API (nonce and iv attributes for ciphers,
 automatic generation of random nonces and IVs, simplified CTR cipher mode, and
@@ -1027,13 +1035,63 @@ more)
 @item Random numbers get sourced directly from the OS (and not from a CSPRNG
 in userspace)
 @item Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
-@item Major clean ups and simplification of the code base
-@end itemize\n")
-    (license license:bsd-2)))
+@item Major clean-ups and simplification of the code base
+@end itemize
+
+This package provides drop-in compatibility with PyCrypto.  It is one of two
+PyCryptodome variants, the other being python-pycryptodomex.")
+    (license (list license:bsd-2
+                   license:public-domain)))) ; code inherited from PyCrypto
 
 (define-public python2-pycryptodome
   (package-with-python2 python-pycryptodome))
 
+(define-public python-pycryptodomex
+  (package (inherit python-pycryptodome)
+    (name "python-pycryptodomex")
+    (version (package-version python-pycryptodome))
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pycryptodomex" version))
+       (sha256
+        (base32 "0lbx4qk3xmwqiidhmkj8qa7bh2lf8bwzg0xjpsh2w5zqjrc7qnvv"))))
+    (description
+     "PyCryptodome is a self-contained Python package of low-level
+cryptographic primitives.  It's not a wrapper to a separate C library like
+OpenSSL.  To the largest possible extent, algorithms are implemented in pure
+Python.  Only the pieces that are extremely critical to performance (e.g.,
+block ciphers) are implemented as C extensions.
+
+You are expected to have a solid understanding of cryptography and security
+engineering to successfully use these primitives.  You must also be able to
+recognize that some are obsolete (e.g., TDES) or even insecure (RC4).
+
+It provides many enhancements over the last release of PyCrypto (2.6.1):
+
+@itemize
+@item Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)
+@item Accelerated AES on Intel platforms via AES-NI
+@item First-class support for PyPy
+@item Elliptic curves cryptography (NIST P-256 curve only)
+@item Better and more compact API (nonce and iv attributes for ciphers,
+automatic generation of random nonces and IVs, simplified CTR cipher mode, and
+more)
+@item SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms
+@item Salsa20 and ChaCha20 stream ciphers
+@item scrypt and HKDF
+@item Deterministic (EC)DSA
+@item Password-protected PKCS#8 key containers
+@item Shamir’s Secret Sharing scheme
+@item Random numbers get sourced directly from the OS (and not from a CSPRNG
+in userspace)
+@item Cleaner RSA and DSA key generation (largely based on FIPS 186-4)
+@item Major clean-ups and simplification of the code base
+@end itemize
+
+PyCryptodomex is the stand-alone version of PyCryptodome that no longer
+provides drop-in compatibility with PyCrypto.")))
+
 (define-public python-m2crypto
   (package
     (name "python-m2crypto")
@@ -1069,7 +1127,7 @@ through the Engine interface.")
 (define-public python-pykeepass
   (package
     (name "python-pykeepass")
-    (version "3.2.0")
+    (version "3.2.1")
     (source
      (origin
        (method git-fetch)
@@ -1079,7 +1137,7 @@ through the Engine interface.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1wxbfpy7467mlnfsvmh685fhfnq4fki9y7yc9cylp30r5n3hisaj"))))
+        (base32 "1symxf4ahylynihnp9z4z3lh2vy65ipvg8s4hjrnn936hcaaxghk"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1103,7 +1161,7 @@ through the Engine interface.")
        ("python-dateutil" ,python-dateutil)
        ("python-future" ,python-future)
        ("python-lxml" ,python-lxml)
-       ("python-pycryptodome" ,python-pycryptodome)))
+       ("python-pycryptodomex" ,python-pycryptodomex)))
     (home-page "https://github.com/libkeepass/pykeepass")
     (synopsis "Python library to interact with keepass databases")
     (description
@@ -1189,13 +1247,13 @@ been constructed to maintain extensive documentation on how to use
 (define-public python-pyotp
   (package
     (name "python-pyotp")
-    (version "2.4.0")
+    (version "2.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyotp" version))
        (sha256
-        (base32 "0a1dx07y785xyl70h0vj6vssg13qfx11w04d0gz8h48qffsymv01"))))
+        (base32 "0jsqfmx9i7j8z81r4zazv76xzy1fcq8v9s2r4kvx7ajfndq3z2h3"))))
     (build-system python-build-system)
     (home-page "https://github.com/pyauth/pyotp")
     (synopsis "Python One Time Password Library")
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 101c8fb640..99903ef247 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -439,6 +439,32 @@ doing practical, real world data analysis in Python.")
 written in C.")
     (license license:bsd-2)))
 
+(define-public python-baycomp
+  (package
+    (name "python-baycomp")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "baycomp" version))
+       (sha256
+        (base32 "1c1354a7b3g8slychjgyjxqdm8z40z9kviyl9n4g9kfpdg0p4d64"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)
+       ("python-scipy" ,python-scipy)))
+    (home-page "https://github.com/janezd/baycomp")
+    (synopsis "Library for comparison of Bayesian classifiers")
+    (description
+     "Baycomp is a library for Bayesian comparison of classifiers.  Functions
+in the library compare two classifiers on one or on multiple data sets.  They
+compute three probabilities: the probability that the first classifier has
+higher scores than the second, the probability that differences are within the
+region of practical equivalence (rope), or that the second classifier has
+higher scores.")
+    (license license:expat)))
+
 (define-public python-xarray
   (package
     (name "python-xarray")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index a0770df17d..f97e6a12e3 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2020 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu>
@@ -26,11 +26,11 @@
 ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
 ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
+;;; Copyright © 2019, 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
 ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
@@ -68,6 +68,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages django)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
@@ -76,6 +77,7 @@
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-compression)
   #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sphinx)
@@ -90,14 +92,13 @@
 (define-public python-aiohttp
   (package
     (name "python-aiohttp")
-    (version "3.6.3")
+    (version "3.7.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "aiohttp" version))
        (sha256
-        (base32 "0i9n7h8n06m2d8ryqyk4fv1si1m44ibq7blbfaxq46vx7jydg339"))
-       (patches (search-patches "python-aiohttp-3.6.2-no-warning-fail.patch"))))
+        (base32 "1i3p4yrfgrf1zpbgnywqmb33ps4k51wylcxykhf2cwky0spq26lw"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -110,33 +111,41 @@
                 "    @pytest.mark.xfail\n    async def test_feed_eof_no_err_brotli"))
              ;; make sure the timestamp of this file is > 1990, because a few
              ;; tests like test_static_file_if_modified_since_past_date depend on it
-             (invoke "touch" "-d" "2020-01-01" "tests/data.unknown_mime_type")
-
-             ;; FIXME: These tests are failing due to deprecation warnings
-             ;; in Python 3.8.  Remove this when updating to aiohttp >= 3.7.
-             ;; https://github.com/aio-libs/aiohttp/issues/4477
-             ;; https://github.com/aio-libs/aiohttp/issues/4525
-             (with-directory-excursion "tests"
-               (for-each delete-file '("test_client_session.py"
-                                       "test_multipart.py"
-                                       "test_web_middleware.py"
-                                       "test_web_protocol.py"
-                                       "test_web_urldispatcher.py")))
-             #t)))))
+             (let ((late-90s (* 60 60 24 365 30)))
+               (utime "tests/data.unknown_mime_type" late-90s late-90s))
+
+             ;; Disable test that attempts to access httpbin.org.
+             (substitute* "tests/test_formdata.py"
+               (("async def test_mark_formdata_as_processed.*" all)
+                (string-append "@pytest.mark.xfail\n" all)))
+
+             ;; Don't test the aiohttp pytest plugin to avoid a dependency loop.
+             (delete-file "tests/test_pytest_plugin.py")
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (setenv "PYTHONPATH"
+                     (string-append ".:" (getenv "PYTHONPATH")))
+             (if tests?
+                 (invoke "pytest" "-vv"
+                         ;; Disable loading the aiohttp coverage plugin
+                         ;; to avoid a circular dependency (code coverage
+                         ;; is not very interesting to us anyway).
+                         "-o" "addopts=''")
+                 (format #t "test suite not run~%")))))))
     (propagated-inputs
      `(("python-aiodns" ,python-aiodns)
        ("python-async-timeout" ,python-async-timeout)
-       ("python-attrs" ,python-attrs)
+       ("python-attrs" ,python-attrs)   ;note: remove for > 3.7
        ("python-chardet" ,python-chardet)
        ("python-idna-ssl" ,python-idna-ssl)
        ("python-multidict" ,python-multidict)
+       ("python-typing-extensions" ,python-typing-extensions)
        ("python-yarl" ,python-yarl)))
     (native-inputs
-     `(("python-pytest-runner" ,python-pytest-runner)
-       ("python-pytest-xdit" ,python-pytest-xdist)
-       ("python-pytest-timeout" ,python-pytest-timeout)
-       ("python-pytest-forked" ,python-pytest-forked)
+     `(("python-pytest" ,python-pytest)
        ("python-pytest-mock" ,python-pytest-mock)
+       ("python-re-assert" ,python-re-assert)
        ("gunicorn" ,gunicorn-bootstrap)
        ("python-freezegun" ,python-freezegun)
        ("python-async-generator" ,python-async-generator)))
@@ -276,6 +285,158 @@ WSGI.  This package includes libraries for implementing ASGI servers.")
     ;; looks like the user can choose a license.
     (license (list license:gpl3+ license:lgpl3+ license:expat))))
 
+(define-public python-aws-sam-translator
+  (package
+    (name "python-aws-sam-translator")
+    (version "1.30.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "aws-sam-translator" version))
+              (sha256
+               (base32
+                "0d9ppd94x2kw404m49ajswmmxgdngbs4p5ajyrdvnlivfzqbv7dx"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; XXX: Tests are not distributed with the PyPI archive, and would
+       ;; introduce a circular dependency on python-cfn-lint.
+       #:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'loosen-requirements
+                    (lambda _
+                      ;; The package needlessly specifies exact versions
+                      ;; of dependencies, when it works fine with others.
+                      (substitute* "requirements/base.txt"
+                        (("(.*)(~=[0-9\\.]+)" all package version)
+                         package))
+                      #t)))))
+    (propagated-inputs
+     `(("python-boto3" ,python-boto3)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/awslabs/serverless-application-model")
+    (synopsis "Transform AWS SAM templates into AWS CloudFormation templates")
+    (description
+     "AWS SAM Translator is a library that transform @dfn{Serverless Application
+Model} (SAM) templates into AWS CloudFormation templates.")
+    (license license:asl2.0)))
+
+(define-public python-aws-xray-sdk
+  (package
+    (name "python-aws-xray-sdk")
+    (version "2.6.0")
+    (home-page "https://github.com/aws/aws-xray-sdk-python")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "12fzr0ylpa1lx3xr1x2f1jx8iiyzcr6g57fb9jign0j0lxdlbzpv"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'disable-tests
+                    (lambda _
+                      (for-each delete-file
+                                '(;; These tests require packages not yet in Guix.
+                                  "tests/ext/aiobotocore/test_aiobotocore.py"
+                                  "tests/ext/aiohttp/test_middleware.py"
+                                  "tests/ext/pg8000/test_pg8000.py"
+                                  "tests/ext/psycopg2/test_psycopg2.py"
+                                  "tests/ext/pymysql/test_pymysql.py"
+                                  "tests/ext/pynamodb/test_pynamodb.py"
+                                  "tests/test_async_recorder.py"
+
+                                  ;; FIXME: Why is this failing?
+                                  "tests/test_patcher.py"
+
+                                  ;; TODO: How to configure Django for these tests.
+                                  "tests/ext/django/test_db.py"
+                                  "tests/ext/django/test_middleware.py"
+
+                                  ;; These tests want to access httpbin.org.
+                                  "tests/ext/requests/test_requests.py"
+                                  "tests/ext/httplib/test_httplib.py"
+                                  "tests/ext/aiohttp/test_client.py"))))
+                  (replace 'check
+                    (lambda _
+                      (setenv "PYTHONPATH"
+                              (string-append "./build/lib:.:"
+                                             (getenv "PYTHONPATH")))
+                      (invoke "pytest" "-vv" "tests"))))))
+    (native-inputs
+     `(;; These are required for the test suite.
+       ("python-bottle" ,python-bottle)
+       ("python-flask" ,python-flask)
+       ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)
+       ("python-pymysql" ,python-pymysql)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
+       ("python-requests" ,python-requests)
+       ("python-sqlalchemy" ,python-sqlalchemy)
+       ("python-webtest" ,python-webtest)))
+    (propagated-inputs
+     `(("python-aiohttp" ,python-aiohttp)
+       ("python-botocore" ,python-botocore)
+       ("python-future" ,python-future)
+       ("python-jsonpickle" ,python-jsonpickle)
+       ("python-urllib3" ,python-urllib3)
+       ("python-wrapt" ,python-wrapt)))
+    (synopsis "Profile applications on AWS X-Ray")
+    (description
+     "The AWS X-Ray SDK for Python enables Python developers to record and
+emit information from within their applications to the AWS X-Ray service.")
+    (license license:asl2.0)))
+
+(define-public python-cfn-lint
+  (package
+    (name "python-cfn-lint")
+    (version "0.41.0")
+    (home-page "https://github.com/aws-cloudformation/cfn-python-lint")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0nqs0fmj3hd7pnd9hkb4z57jvi2iv82hh6n3xxba6i6p8zgx75q4"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        ;; Remove test for the documentation update scripts
+                        ;; to avoid a dependency on 'git'.
+                        (delete-file
+                         "test/unit/module/maintenance/test_update_documentation.py")
+                        (setenv "PYTHONPATH"
+                                (string-append "./build/lib:"
+                                               (getenv "PYTHONPATH")))
+                        (setenv "PATH" (string-append out "/bin:"
+                                                      (getenv "PATH")))
+                        (invoke "python" "-m" "unittest" "discover"
+                                "-s" "test")))))))
+    (native-inputs
+     `(("python-pydot" ,python-pydot)
+       ("python-mock" ,python-mock)))
+    (propagated-inputs
+     `(("python-aws-sam-translator" ,python-aws-sam-translator)
+       ("python-jsonpatch" ,python-jsonpatch)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-junit-xml" ,python-junit-xml)
+       ("python-networkx" ,python-networkx)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-six" ,python-six)))
+    (synopsis "Validate CloudFormation templates")
+    (description
+     "This package lets you validate CloudFormation YAML/JSON templates against
+the CloudFormation spec and additional checks.  Includes checking valid values
+for resource properties and best practices.")
+    (license license:expat)))
+
 (define-public python-falcon
   (package
     (name "python-falcon")
@@ -429,14 +590,14 @@ other HTTP libraries.")
 (define-public httpie
   (package
     (name "httpie")
-    (version "2.2.0")
+    (version "2.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "httpie" version))
        (sha256
         (base32
-         "18058k0i3cc4ixvgzj882w693lf40283flvspbrvd876iq42ib1i"))))
+         "15ngl3yc186gkgqdx8iav9bpj8gxjpzz26y32z92jwyhj4cmfh6m"))))
     (build-system python-build-system)
     (arguments
      ;; The tests attempt to access external web servers, so we cannot run them.
@@ -444,27 +605,30 @@ other HTTP libraries.")
     (propagated-inputs
      `(("python-colorama" ,python-colorama)
        ("python-pygments" ,python-pygments)
-       ("python-requests" ,python-requests)))
-    (home-page "https://httpie.org/")
+       ("python-requests" ,python-requests)
+       ("python-requests-toolbelt" ,python-requests-toolbelt-0.9.1)))
+    (home-page "https://httpie.io")
     (synopsis "cURL-like tool for humans")
     (description
      "A command line HTTP client with an intuitive UI, JSON support,
 syntax highlighting, wget-like downloads, plugins, and more.  It consists of
 a single http command designed for painless debugging and interaction with
 HTTP servers, RESTful APIs, and web services.")
+    ;; This was fixed in 1.0.3.
+    (properties `((lint-hidden-cve . ("CVE-2019-10751"))))
     (license license:bsd-3)))
 
 (define-public python-html2text
   (package
     (name "python-html2text")
-    (version "2019.8.11")
+    (version "2020.1.16")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "html2text" version))
        (sha256
         (base32
-         "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm"))))
+         "1fvv4z6dblii2wk1x82981ag8yhxbim1v2ksgywxsndh2s7335p2"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -482,7 +646,94 @@ Swartz.")
     (license license:gpl3+)))
 
 (define-public python2-html2text
-  (package-with-python2 python-html2text))
+  (let ((base (package-with-python2 python-html2text)))
+    (package
+      (inherit base)
+      ;; This is the last version with support for Python 2.
+      (version "2019.8.11")
+      (source (origin
+                (method url-fetch)
+                (uri (pypi-uri "html2text" version))
+                (sha256
+                 (base32
+                  "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm")))))))
+
+(define-public python-jose
+  (package
+    (name "python-jose")
+    (version "3.2.0")
+    (home-page "http://github.com/mpdavis/python-jose")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1xmnf8whzv2gnkkdv0fqcn9qwmcc7y647p4kw9fi3lvcp9kch8vi"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (if tests?
+                 (invoke "pytest" "-vv")
+                 (format #t "test suite not run~%"))
+             #t)))))
+    (native-inputs
+     `(;; All native inputs are for tests.
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-rsa" ,python-rsa)
+       ("python-six" ,python-six)))
+    (synopsis "JOSE implementation in Python")
+    (description
+     "The @dfn{JavaScript Object Signing and Encryption} (JOSE) technologies
+- JSON Web Signature (JWS), JSON Web Encryption (JWE), JSON Web Key (JWK), and
+JSON Web Algorithms (JWA) - collectively can be used to encrypt and/or sign
+content using a variety of algorithms.")
+    (license license:expat)))
+
+(define-public python-jsonpickle
+  (package
+    (name "python-jsonpickle")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jsonpickle" version))
+              (sha256
+               (base32
+                "1fn86z468hamw8njh2grw2xdhsm7g48dyxs3lw0n10nn1g6vgm78"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (setenv "PYTHONPATH"
+                              (string-append "./build/lib:"
+                                             (getenv "PYTHONPATH")))
+                      (invoke "pytest" "-vv"
+                              ;; Prevent running the flake8 and black
+                              ;; pytest plugins, which only tests style
+                              ;; and frequently causes harmless failures.
+                              "-o" "addopts=''"))))))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-toml" ,python-toml)  ;XXX: for setuptools_scm[toml]
+       ;; For tests.
+       ("python-numpy" ,python-numpy)
+       ("python-pandas" ,python-pandas)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://jsonpickle.github.io/")
+    (synopsis "Serialize object graphs into JSON")
+    (description
+     "This package provides a Python library for serializing any arbitrary
+object graph to and from JSON.")
+    (license license:bsd-3)))
 
 (define-public python-mechanicalsoup
   (package
@@ -709,6 +960,80 @@ both of which are installed automatically if you install this library.")
 (define-public python2-flask-babel
   (package-with-python2 python-flask-babel))
 
+(define-public python-flask-cors
+  (package
+    (name "python-flask-cors")
+    (version "3.0.9")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Flask-Cors" version))
+              (sha256
+               (base32
+                "1f36hkaxc92zn12f88fkzwifdvlvsnmlp1dv3p5inpcc500c3kvb"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-flask" ,python-flask)
+       ("python-nose" ,python-nose)
+       ("python-packaging" ,python-packaging)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://flask-cors.readthedocs.io/en/latest/")
+    (synopsis "Handle Cross-Origin Resource Sharing with Flask")
+    (description
+     "This package provides a Flask extension for handling @acronym{CORS,Cross
+Origin Resource Sharing}, making cross-origin AJAX possible.")
+    (license license:expat)))
+
+(define-public python-flask-markdown
+  (package
+    (name "python-flask-markdown")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Flask-Markdown" version))
+       (sha256
+        (base32
+         "0l32ikv4f7va926jlq4f7gx0xid247bhlxl6bd9av5dk8ljz1hyq"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f))        ; Tests seem to be incompatible with latest python
+    (propagated-inputs
+     `(("python-markdown" ,python-markdown)
+       ("python-flask" ,python-flask)))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page "https://github.com/dcolish/flask-markdown")
+    (synopsis "Small extension to help with using Markdown in Flask")
+    (description
+     "Flask-Markdown supports several extensions for Markdown and integrates
+into Jinja2 by default.")
+    (license license:bsd-3)))
+
+(define-public python-flask-session
+  (package
+    (name "python-flask-session")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Flask-Session" version))
+       (sha256
+        (base32
+         "08s4msg8jzb8vgb9bd491zvrzhrdldxdw6vimb0kx5kgy2xy4s07"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; Tests require the various storage backends to be present
+    (propagated-inputs
+     `(("python-flask" ,python-flask)))
+    (home-page "https://github.com/fengsp/flask-session")
+    (synopsis "Adds server-side session support to your Flask application")
+    (description
+     "Flask-Session is an extension for Flask that adds support for
+Server-side sessions, with a variety of different backends for session
+storage.")
+    (license license:bsd-3)))
+
 (define-public python-html5lib
   (package
     (name "python-html5lib")
@@ -785,6 +1110,41 @@ C, yielding parse times that can be a thirtieth of the html5lib parse times.")
 (define-public python2-html5-parser
   (package-with-python2 python-html5-parser))
 
+(define-public python-minio
+  (package
+    (name "python-minio")
+    (version "6.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "minio" version))
+              (sha256
+               (base32
+                "1cxpa0m7mdvpdbc1g6wlihq6ja4g4paxkl6f3q84bbnx07zpbllp"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'disable-failing-tests
+                    (lambda _
+                      ;; This test requires network access.
+                      (delete-file "tests/unit/credentials_test.py")
+                      #t)))))
+    (native-inputs
+     `(("python-faker" ,python-faker)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-certifi" ,python-certifi)
+       ("python-configparser" ,python-configparser)
+       ("python-dateutil" ,python-dateutil)
+       ("python-pytz" ,python-pytz)
+       ("python-urllib3" ,python-urllib3)))
+    (home-page "https://github.com/minio/minio-py")
+    (synopsis "Programmatically access Amazon S3 from Python")
+    (description
+     "This package provides a Python library for interacting with any
+Amazon S3 compatible object storage server.")
+    (license license:asl2.0)))
+
 (define-public python-pycurl
   (package
     (name "python-pycurl")
@@ -955,19 +1315,22 @@ options.")
   (package
     (inherit python-cssutils)
     (name "python-css-parser")
-    (version "1.0.4")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "css-parser" version ".tar.gz"))
        (sha256
-        (base32
-         "0i4xfykiffxzr4f6y0m2ggqvx1rzam6pw6krlr5k6ldf29akbay7"))))
+        (base32 "0bmg4kiiir6pj9x3sd12x4dz2c1xpp2bn5nn60fxnbk2lnl4im2f"))))
     (home-page "https://github.com/ebook-utils/css-parser")
     (synopsis "Fork of cssutils modified for parsing ebooks")
     (description
-     "Css-parser is a fork of cssutils 1.0.2, updated and modified for parsing
-ebooks, due to cssutils not receiving updates as of 1.0.2.")
+      "Css-parser is a Python package for parsing and building CSS
+Cascading Style Sheets.  Currently it provides a DOM only and no rendering
+options.
+
+It's a fork of cssutils 1.0.2, updated and modified for parsing ebooks, due to
+cssutils not receiving updates as of 1.0.2.")
     (license license:lgpl3+)))
 
 (define-public python2-css-parser
@@ -1007,6 +1370,49 @@ another XPath engine to find the matching elements in an XML or HTML document.")
 (define-public python2-cssselect
   (package-with-python2 python-cssselect))
 
+(define-public python-databricks-cli
+  (package
+    (name "python-databricks-cli")
+    (version "0.14.1")
+    (home-page "https://github.com/databricks/databricks-cli")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "03w19rzh72jll9phai23wp0c2mlv39qsrv50mhckziy39z60yxh8"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (setenv "PYTHONPATH"
+                              (string-append "./build/lib:"
+                                             (getenv "PYTHONPATH")))
+                      (invoke "pytest" "tests" "-vv"
+                              ;; XXX: This fails with newer Pytest
+                              ;; (upstream uses Pytest 3..).
+                              "-k" "not test_get_request_with_list"))))))
+    (native-inputs
+     `(;; For tests.
+       ("python-decorator" ,python-decorator)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-requests-mock" ,python-requests-mock)))
+    (propagated-inputs
+     `(("python-click" ,python-click)
+       ("python-configparser" ,python-configparser)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)
+       ("python-tabulate" ,python-tabulate)))
+    (synopsis "Command line interface for Databricks")
+    (description
+     "The Databricks Command Line Interface is a tool which provides an easy
+to use interface to the Databricks platform.  The CLI is built on top of the
+Databricks REST APIs.")
+    (license license:asl2.0)))
+
 (define-public python-openid-cla
   (package
     (name "python-openid-cla")
@@ -1157,6 +1563,37 @@ WebSockets (over HTTP/1 and HTTP/2), ASGI/2, and ASGI/3 specifications.  It can
 utilise asyncio, uvloop, or trio worker types.")
     (license license:expat)))
 
+(define-public python-querystring-parser
+  (package
+    (name "python-querystring-parser")
+    (version "1.2.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "querystring_parser" version))
+              (sha256
+               (base32
+                "0qlar8a0wa003hm2z6wcpb625r6vjj0a70rsni9h8lz0zwfcwkv4"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      ;; XXX FIXME: This test is broken with Python 3.7:
+                      ;; https://github.com/bernii/querystring-parser/issues/35
+                      (substitute* "querystring_parser/tests.py"
+                        (("self\\.assertEqual\\(self\\.knownValuesNormalized, result\\)")
+                         "True"))
+                      (invoke "python" "querystring_parser/tests.py"))))))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://github.com/bernii/querystring-parser")
+    (synopsis "QueryString parser that correctly handles nested dictionaries")
+    (description
+     "This package provides a query string parser for Python and Django
+projects that correctly creates nested dictionaries from sent form/querystring
+data.")
+    (license license:expat)))
+
 (define-public python-tornado
   (package
     (name "python-tornado")
@@ -2277,15 +2714,16 @@ supports url redirection and retries, and also gzip and deflate decoding.")
 
 (define-public awscli
   (package
+    ;; Note: updating awscli typically requires updating botocore as well.
     (name "awscli")
-    (version "1.18.6")
+    (version "1.18.183")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri name version))
        (sha256
         (base32
-         "0p479mfs9r0m82a217pap8156ijwvhv6r3kqa4k267gd05wgvygm"))))
+         "0n1pmdl33r1v8qnrcg08ihvri9zm4fvsp14605vwmlkxvs8nb7s5"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: The 'pypi' release does not contain tests.
@@ -2730,6 +3168,19 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
 (define-public python2-cachecontrol
   (package-with-python2 python-cachecontrol))
 
+(define-public python-cachecontrol-0.11
+  (package
+    (inherit python-cachecontrol)
+    (name "python-cachecontrol")
+    (version "0.11.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "CacheControl" version))
+        (sha256
+         (base32
+          "07jsfhlbcwgqg6ayz8nznzaqg5rmxqblbzxz1qvg5wc44pcjjy4g"))))))
+
 (define-public python-betamax
   (package
     (name "python-betamax")
@@ -2783,13 +3234,13 @@ Betamax.")
 (define-public python-s3transfer
   (package
     (name "python-s3transfer")
-    (version "0.2.0")
+    (version "0.3.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "s3transfer" version))
               (sha256
                (base32
-                "08fhj73b1ai52hrs2q3nggshq3pswn1gq8ch3m009cb2v2vmqggj"))))
+                "1nzp5kwmy9669334shcz9ipg89jgpdqhrmbkgdg18r7wmvi3f6lj"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -2892,21 +3343,30 @@ pretty printer and a tree visitor.")
     (name "python-flask-basicauth")
     (version "0.2.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "Flask-BasicAuth" version))
-        (sha256
-          (base32
-            "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Flask-BasicAuth" version))
+       (sha256
+        (base32
+         "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'fix-imports
+                    (lambda _
+                      (substitute* '("docs/index.rst"
+                                     "docs/conf.py"
+                                     "flask_basicauth.py"
+                                     "test_basicauth.py")
+                        (("flask\\.ext\\.basicauth")
+                         "flask_basicauth"))
+                      #t)))))
     (propagated-inputs
      `(("python-flask" ,python-flask)))
-    (home-page
-      "https://github.com/jpvanhal/flask-basicauth")
-    (synopsis
-      "HTTP basic access authentication for Flask")
+    (home-page "https://github.com/jpvanhal/flask-basicauth")
+    (synopsis "HTTP basic access authentication for Flask")
     (description
-      "This package provides HTTP basic access authentication for Flask.")
+     "This package provides HTTP basic access authentication for Flask.")
     (license license:bsd-3)))
 
 (define-public python-flask-htpasswd
@@ -3517,16 +3977,15 @@ addon modules.")
 (define-public python-bottle
   (package
     (name "python-bottle")
-    (version "0.12.18")
+    (version "0.12.19")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "bottle" version))
       (sha256
-        (base32
-          "17pn43kzr7m6czjbm4nda7kzs4ap9mmb30qfbhifyzas2i5vf688"))))
+        (base32 "0b6s50vc4iad97b6bb3xnyrgajb3nj6n6jbr5p54a4vapky3zmx9"))))
     (build-system python-build-system)
-    (home-page "http://bottlepy.org/")
+    (home-page "https://bottlepy.org/")
     (synopsis "WSGI framework for small web-applications.")
     (description "@code{python-bottle} is a WSGI framework for small web-applications.")
     (license license:expat)))
@@ -5137,14 +5596,13 @@ Encoding for HTTP.")
 (define-public python-cloudscraper
   (package
     (name "python-cloudscraper")
-    (version "1.2.46")
+    (version "1.2.48")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cloudscraper" version))
        (sha256
-        (base32
-         "1br4p648yassywsd7whz1c7s10rwdysnd7wdqfjq9bksqfxrac3r"))
+        (base32 "0qjxzb0z5bprvmdhx42ayqhlhi2h49d9dwc0vvycj817s71f2sxv"))
        (modules '((guix build utils)))
        (snippet
         '(with-directory-excursion "cloudscraper"
@@ -5155,6 +5613,10 @@ Encoding for HTTP.")
                        "captcha/deathbycaptcha.py"
                        "interpreters/js2py.py"
                        "interpreters/v8.py"))
+           (substitute* "__init__.py"
+             ;; Perhaps it's a joke, but don't promote proprietary software.
+             (("([Th]is feature is not available) in the .*'" _ prefix)
+              (string-append prefix ".'")))
            #t))))
     (build-system python-build-system)
     (propagated-inputs
@@ -5169,3 +5631,30 @@ Encoding for HTTP.")
      "This module acts as a webbrowser solving Cloudflare's Javascript
 challenges.")
     (license license:expat)))
+
+(define-public python-imap-tools
+  (package
+    (name "python-imap-tools")
+    (version "0.29.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "imap_tools" version))
+        (sha256
+          (base32
+            "0x122jwpc74wwyw2rsv2fvh6p12y31019ndfr9717jzjkj2d3lhb"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f))          ; tests require internet access
+    (home-page "https://github.com/ikvk/imap_tools")
+    (synopsis "Work with email and mailbox by IMAP")
+    (description
+      "This Python library provides tools to deal with email and mailboxes
+over IMAP:
+
+@itemize
+@item Parsed email message attributes
+@item Query builder for searching emails
+@item Work with emails in folders (copy, delete, flag, move, seen)
+@item Work with mailbox folders (list, set, get, create, exists, rename, delete, status)
+@end itemize")
+    (license license:asl2.0)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index f8f0a6552d..f4cba62777 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -56,6 +56,7 @@
 ;;; Copyright © 2018, 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
+;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2019 Sam <smbaines8@gmail.com>
 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
@@ -87,6 +88,11 @@
 ;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
 ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
 ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2020 Bonface Munyoki Kilyungi <bonfacemunyoki@gmail.com>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
+;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2019 Kristian Trandem <kristian@devup.no>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -118,6 +124,8 @@
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dbm)
+  #:use-module (gnu packages djvu)
+  #:use-module (gnu packages docker)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
@@ -136,7 +144,6 @@
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
@@ -161,6 +168,7 @@
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages rdf)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages search)
@@ -176,6 +184,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages base)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -946,9 +955,6 @@ to users of that module.")
     ;; by the Expat license.
     (license (list license:isc license:expat))))
 
-(define-public python2-netcdf4
-  (package-with-python2 python-netcdf4))
-
 (define-public python-license-expression
   (package
     (name "python-license-expression")
@@ -1783,6 +1789,32 @@ human-friendly syntax.")
 (define-public python2-schedule
   (package-with-python2 python-schedule))
 
+(define-public python-scour
+  (package
+    (name "python-scour")
+    (version "038.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/scour-project/scour")
+         (commit
+          (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0rgiypb9ig8x4rl3hfzpy7kwnx1q3064nvlrv4fk0dnp84girn0v"))))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (build-system python-build-system)
+    (home-page "https://github.com/scour-project/scour")
+    (synopsis "Scour is an SVG optimizer/cleaner written in Python")
+    (description "The goal of Scour is to output a file that renderes
+identically at a fraction of the size by removing a lot of redundant
+information created by most SVG editors.  Optimization options are typically
+lossless but can be tweaked for more aggressive cleaning.")
+    (license license:asl2.0)))
+
 (define-public python-mechanize
   (package
     (name "python-mechanize")
@@ -1808,6 +1840,30 @@ after Andy Lester’s Perl module WWW::Mechanize.")
 (define-public python2-mechanize
   (package-with-python2 python-mechanize))
 
+(define-public python-simpleaudio
+  (package
+    (name "python-simpleaudio")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "simpleaudio" version))
+       (sha256
+        (base32
+         "07glihg0fpca0gvbbvqs9q815w8xhflzdvg72yvlsm23j9j8h739"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (inputs
+      `(("alsa-lib" ,alsa-lib)))
+    (home-page
+     "https://github.com/hamiltron/py-simple-audio")
+    (synopsis "Simple, asynchronous audio playback for Python 3")
+    (description
+     "The @code{simplaudio} package provides cross-platform, dependency-free
+audio playback capability for Python 3 on OSX, Windows, and Linux.")
+    (license license:expat))) ; MIT license
+
 (define-public python-simplejson
   (package
     (name "python-simplejson")
@@ -3398,8 +3454,11 @@ structure for Python.")
     (synopsis "Python Documentation Utilities")
     (description
      "Docutils is a modular system for processing documentation into useful
-formats, such as HTML, XML, and LaTeX.  For input Docutils supports
-reStructuredText.")
+formats, such as HTML, XML, and LaTeX.  It uses @dfn{reStructuredText}, an
+easy to use markup language, for input.
+
+This package provides tools for converting @file{.rst} files to other formats
+via commands such as @command{rst2man}, as well as supporting Python code.")
     ;; Most of the source code is public domain, but some source files are
     ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
     (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
@@ -3648,7 +3707,7 @@ ecosystem, but can naturally be used also by other projects.")
 (define-public python-robotframework
   (package
     (name "python-robotframework")
-    (version "3.1.2")
+    (version "3.2.2")
     ;; There are no tests in the PyPI archive.
     (source
      (origin
@@ -3658,9 +3717,9 @@ ecosystem, but can naturally be used also by other projects.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "16gnxy0qinh8fhs0qvhff5z2xh49c3cqgm0d7bfjw120df6x7fym"))
+        (base32 "0if0h3myb9m3hgmn1phrhq8pfp89kfqsaq32vmfdjkyjdj7y59ds"))
        (patches (search-patches
-                 "python-robotframework-honor-source-date-epoch.patch"))))
+                 "python-robotframework-source-date-epoch.patch"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -3675,12 +3734,23 @@ ecosystem, but can naturally be used also by other projects.")
                                           (string-append doc "/libraries"))
                         #t)))
                   (replace 'check
-                    (lambda _
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      ;; Some tests require timezone data.  Otherwise, they
+                      ;; look up /etc/localtime, which doesn't exist, and fail
+                      ;; with:
+                      ;;
+                      ;; OverflowError: mktime argument out of range
+                      (setenv "TZDIR"
+                              (string-append (assoc-ref inputs "tzdata")
+                                             "/share/zoneinfo"))
+                      (setenv "TZ" "Europe/Paris")
+
                       (invoke "python" "utest/run.py"))))))
     (native-inputs
      `(("python-invoke" ,python-invoke)
        ("python-rellu" ,python-rellu)
-       ("python:tk" ,python "tk")))     ;used when building the HTML doc
+       ("python:tk" ,python "tk")             ;used when building the HTML doc
+       ("tzdata" ,tzdata-for-tests)))
     (outputs '("out" "doc"))
     (home-page "https://robotframework.org")
     (synopsis "Generic automation framework")
@@ -3694,11 +3764,12 @@ process automation (RPA).")
   ;; to the 0.9 stable release available from PyPI.  The tests are not
   ;; included in the PyPI archive, so we fetch the sources from the upstream
   ;; Git repo.
-  (let ((commit "e851879bab1f63e4e53b34a4dc8a67ed95102830")
-        (revision "1"))
+  (let ((commit "b0619ac58a8b1be125f9c98856a664594614570f")
+        (revision "0"))
     (package
       (name "python-robotframework-lint")
-      (version (git-version "0.9.0" revision commit))
+      (version (git-version "1.1"      ;version taken from 'rflint/version.py'
+                            revision commit))
       (source
        (origin
          (method git-fetch)
@@ -3708,7 +3779,7 @@ process automation (RPA).")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1p6fknqg5sb9qz5857ji4a877657vgfjm5v3zn45994parx6ml1m"))))
+           "180npmvzqync25b2scs878gv8q4y17dsinxyjcc10bw22msfap6b"))))
       (build-system python-build-system)
       (arguments
        `(#:phases
@@ -3810,14 +3881,13 @@ outside the standard library.")
 (define-public python-scp
   (package
     (name "python-scp")
-    (version "0.13.2")
+    (version "0.13.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "scp" version))
        (sha256
-        (base32
-         "1crlpw9lnn58fs1c1rmh7s7s9y5gkgpgjsqlvg9qa51kq1knx7gg"))))
+        (base32 "1m2v09m407p097cy3xy5rxicqfzrqjwf8v5rd4qhfqkk7lllimwb"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f))                     ;tests require an SSH server
@@ -3859,6 +3929,30 @@ augment the changelog, but it can be used for other documents, too.")
 (define-public python2-rst.linker
   (package-with-python2 python-rst.linker))
 
+(define-public python-sshpubkeys
+  (package
+    (name "python-sshpubkeys")
+    (version "3.1.0")
+    (home-page "https://github.com/ojarva/python-sshpubkeys")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-ecdsa" ,python-ecdsa)))
+    (synopsis "OpenSSH public key parser")
+    (description
+     "This package provides a library for parsing and validating OpenSSH
+public key files.")
+    (license license:bsd-3)))
+
 (define-public python-feedgenerator
   (package
     (name "python-feedgenerator")
@@ -3917,19 +4011,19 @@ Language (TOML) configuration files.")
 (define-public python-jsonrpc-server
   (package
     (name "python-jsonrpc-server")
-    (version "0.3.4")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-jsonrpc-server" version))
        (sha256
         (base32
-         "0dzya99nbi4mw7q85vmyw1wfgbx5dpmysnvm0bwx5m4xbi4zafy7"))))
+         "1585ybn3djvx5r5zbxkzlhz2wb1d47y4wrfwaxdyq0gi87jl7ib2"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-mock" ,python-mock)
        ("python-pytest" ,python-pytest)
-       ("python-ujson" ,python-ujson-1)))
+       ("python-ujson" ,python-ujson)))
     (home-page
      "https://github.com/palantir/python-jsonrpc-server")
     (synopsis "JSON RPC 2.0 server library")
@@ -4000,28 +4094,39 @@ Server (PLS).")
 (define-public python-language-server
   (package
     (name "python-language-server")
-    (version "0.34.1")
+    (version "0.36.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-language-server" version))
        (sha256
         (base32
-         "0gfjjlj7yg2nf8wkbrshwaljkwlqja4n7s1x949f495anmkg8vxr"))))
+         "0ljzc50z5v08is8fis1fg2dk9sb6275jlvzxb6nij0w6ys772pf8"))))
     (build-system python-build-system)
     (propagated-inputs
-     `(("python-pluggy" ,python-pluggy)
-       ("python-jsonrpc-server" ,python-jsonrpc-server)
-       ("python-jedi" ,python-jedi)
-       ("python-yapf" ,python-yapf)
-       ("python-pyflakes" ,python-pyflakes)
+     `(("python-autopep8" ,python-autopep8)
+       ("python-configparser" ,python-configparser)
        ("python-pydocstyle" ,python-pydocstyle)
+       ("python-future" ,python-future)
+       ("python-jedi" ,python-jedi)
+       ("python-jsonrpc-server" ,python-jsonrpc-server)
+       ("python-pluggy" ,python-pluggy)
        ("python-pycodestyle" ,python-pycodestyle)
-       ("python-mccabe" ,python-mccabe)
+       ("python-pyflakes" ,python-pyflakes)
        ("python-rope" ,python-rope)
-       ("python-autopep8" ,python-autopep8)
-       ("python-flake8" ,python-flake8)
-       ("python-pylint" ,python-pylint)))
+       ("python-ujson" ,python-ujson)
+       ("python-yapf" ,python-yapf)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-flaky" ,python-flaky)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-mock" ,python-mock)
+       ("python-numpy" ,python-numpy)
+       ("python-pandas" ,python-pandas)
+       ("python-pylint" ,python-pylint)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-versioneer" ,python-versioneer)))
     (home-page "https://github.com/palantir/python-language-server")
     (synopsis "Python implementation of the Language Server Protocol")
     (description
@@ -4053,14 +4158,14 @@ matching of file paths.")
 (define-public python-black
   (package
     (name "python-black")
-    (version "19.10b0")
+    (version "20.8b1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "black" version))
        (sha256
         (base32
-         "0f8mr0yzj78q1dx7v6ggbgfir2wv0n5z2shfbbvfdq7910xbgvf2"))))
+         "1spv6sldp3mcxr740dh3ywp25lly9s8qlvs946fin44rl1x5a0hw"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -4078,7 +4183,11 @@ matching of file paths.")
                                                   "")))))
              #t))
          (add-after 'unpack 'disable-broken-tests
-           (lambda _
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             ;; Make installed package available for running the tests
+             (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
+                                           ":" (getenv "PATH")))
+
              ;; These tests are supposed to be skipped when the blackd
              ;; dependencies are missing, but this doesn't quite work.
              (substitute* "tests/test_black.py"
@@ -4092,15 +4201,21 @@ matching of file paths.")
              (substitute* "tests/test_black.py"
                (("( *)def test_self" match indent)
                 (string-append indent "@unittest.skip(\"guix\")\n" match)))
+
+             (substitute* "tests/test_black.py"
+               (("( *)def test_python38" match indent)
+                (string-append indent "@unittest.skip(\"guix\")\n" match)))
              #t)))))
     (propagated-inputs
      `(("python-click" ,python-click)
        ("python-attrs" ,python-attrs)
        ("python-appdirs" ,python-appdirs)
        ("python-pathspec" ,python-pathspec)
+       ("python-mypy-extensions" ,python-mypy-extensions)
        ("python-regex" ,python-regex)
        ("python-toml" ,python-toml)
-       ("python-typed-ast" ,python-typed-ast)))
+       ("python-typed-ast" ,python-typed-ast)
+       ("python-typing-extensions" ,python-typing-extensions)))
     (native-inputs
      `(("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://github.com/ambv/black")
@@ -4916,7 +5031,6 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
        ("python-cairocffi" ,python-cairocffi)))
     (inputs
      `(("libpng" ,libpng)
-       ("imagemagick" ,imagemagick)
        ("freetype" ,freetype)
        ("cairo" ,cairo)
        ("glib" ,glib)
@@ -4991,6 +5105,9 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
                ;; has not effect.
                (setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
                (setenv "HOME" (getcwd))
+               ;; Fix rounding errors when using the x87 FPU.
+               (when (string-prefix? "i686" ,(%current-system))
+                 (setenv "CFLAGS" "-ffloat-store"))
                (call-with-output-file "setup.cfg"
                  (lambda (port)
                    (format port "[directories]~%
@@ -5550,14 +5667,14 @@ the OleFileIO module from PIL, the Python Image Library.")
 (define-public python-pillow
   (package
     (name "python-pillow")
-    (version "6.2.1")
+    (version "8.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pillow" version))
        (sha256
         (base32
-         "1c8wkzc58f5wdh006jvmwdk3wxld1xgagcbdvj7iv17qi0m9fkmz"))))
+         "17pv0flaqqfld9m4lz8ayxyqb11gbbmr7w04mw4ar79cn3lwdi8i"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pytest" ,python-pytest)))
@@ -5597,12 +5714,24 @@ efficient internal representation, and fairly powerful image processing
 capabilities.  The core image library is designed for fast access to data
 stored in a few basic pixel formats.  It should provide a solid foundation for
 a general image processing tool.")
+    (properties `((python2-variant . ,(delay python2-pillow))))
     (license (license:x11-style
               "http://www.pythonware.com/products/pil/license.htm"
               "The PIL Software License"))))
 
 (define-public python2-pillow
-  (package-with-python2 python-pillow))
+  (package-with-python2
+   (package
+     (inherit (strip-python2-variant python-pillow))
+     ;; Version 6 is the last series with Python 2 support.
+     (version "6.2.2")
+     (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "Pillow" version))
+        (sha256
+         (base32
+          "0l5rv8jkdrb5q846v60v03mcq64yrhklidjkgwv6s1pda71g17yv")))))))
 
 (define-public python-pillow-2.9
   (package
@@ -5776,6 +5905,28 @@ a front-end for C compilers or analysis tools.")
 (define-public python2-pycparser
   (package-with-python2 python-pycparser))
 
+(define-public python-xlsxwriter
+  (package
+    (name "python-xlsxwriter")
+    (version "1.3.7")
+    (source
+     (origin
+       ;; There are no tests in the PyPI tarball.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jmcnamara/XlsxWriter")
+             (commit (string-append "RELEASE_" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qg40r2mwrqfmhaxnary1cfgi0dwwazp5qga7c9p2cdji2v0x5rm"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/jmcnamara/XlsxWriter")
+    (synopsis "Python module for creating Excel XLSX files")
+    (description
+     "XlsxWriter is a Python module that can be used to write text, numbers,
+formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
+    (license license:bsd-2)))
+
 (define-public python-pywavelets
   (package
     (name "python-pywavelets")
@@ -8062,27 +8213,6 @@ PEP 8.")
 (define-public python2-pyflakes
   (package-with-python2 python-pyflakes))
 
-;; Flake8 2.6 requires an older version of pyflakes.
-;; This should be removed ASAP.
-(define-public python-pyflakes-1.2
-  (package (inherit python-pyflakes)
-    (version "1.2.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pyflakes" version))
-       (sha256
-        (base32
-         "17hkw8yd44cr8fz13phy4aih3r5j2p7ild4zlvqdh2c8dmiinjif"))))
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         ;; This one test fails.
-         (replace 'check
-           (lambda _ (invoke "pytest" "-vv" "-k" "not test_f_string"))))))
-    (native-inputs
-     `(("python-pytest" ,python-pytest)))))
-
 (define-public python-mccabe
   (package
     (name "python-mccabe")
@@ -8108,39 +8238,6 @@ complexity of Python source code.")
 (define-public python2-mccabe
   (package-with-python2 python-mccabe))
 
-(define-public python-mccabe-0.2.1
-  (package (inherit python-mccabe)
-    (version "0.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "mccabe" version))
-        (sha256
-          (base32
-            "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
-
-(define-public python2-mccabe-0.2.1
-  (package-with-python2 python-mccabe-0.2.1))
-
-;; Flake8 2.4.1 requires an older version of pep8.
-;; This should be removed ASAP.
-(define-public python-pep8-1.5.7
-  (package (inherit python-pep8)
-    (version "1.5.7")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pep8" version))
-       (sha256
-        (base32
-         "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
-    (arguments
-     ;; XXX Tests not compatible with Python 3.5.
-     '(#:tests? #f))))
-
-(define-public python2-pep8-1.5.7
-  (package-with-python2 python-pep8-1.5.7))
-
 (define-public python-flake8
   (package
     (name "python-flake8")
@@ -8187,40 +8284,6 @@ complexity of Python source code.")
          ("python2-typing" ,python2-typing)
           ,@(package-propagated-inputs base))))))
 
-;; python-hacking requires flake8 <2.7.0.
-(define-public python-flake8-2.6
-  (package
-    (inherit python-flake8)
-    (version "2.6.2")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "flake8" version))
-              (sha256
-               (base32
-                "0y57hzal0j84dh9i1g1g6dc4aywvrnhy2fjmmbglpv5ajihxh713"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-later-pycodestyles
-           (lambda __
-             (substitute* '("flake8.egg-info/requires.txt"
-                            "setup.py")
-               (("pycodestyle >= 2.0, < 2.1")
-                "pycodestyle >= 2.0"))
-             #t))
-         (delete 'check)
-         (add-after 'install 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (invoke "pytest" "-v")
-             #t)))))
-    (propagated-inputs
-     `(("python-pep8" ,python-pep8)
-       ("python-pycodestyle" ,python-pycodestyle)
-       ("python-entrypoints" ,python-entrypoints)
-       ("python-pyflakes" ,python-pyflakes-1.2)
-       ("python-mccabe" ,python-mccabe)))))
-
 (define-public python-flake8-bugbear
   (package
     (name "python-flake8-bugbear")
@@ -8648,6 +8711,26 @@ should be stored on various operating systems.")
 (define-public python2-appdirs
   (package-with-python2 python-appdirs))
 
+(define-public python-gorilla
+  (package
+    (name "python-gorilla")
+    (version "0.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "gorilla" version))
+              (sha256
+               (base32
+                "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/christophercrouzet/gorilla")
+    (synopsis "Convenient monkey patching with Python")
+    (description
+     "Gorilla is a Python library that provides a convenient approach to
+monkey patching.  Monkey patching is the process of modifying module and
+class attributes at runtime with the purpose of replacing or extending
+third-party code.")
+    (license license:expat)))
+
 (define-public python-llfuse
   (package
     (name "python-llfuse")
@@ -8844,6 +8927,32 @@ Supported netlink families and protocols include:
 (define-public python2-wrapt
   (package-with-python2 python-wrapt))
 
+(define-public python-commonmark
+  (package
+    (name "python-commonmark")
+    (version "0.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "commonmark" version))
+       (sha256
+        (base32 "0q7d39lm8kcingpmykk5r959hrwwj6v2icyw3mihczxyb749sbs5"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python" "setup.py" "test"))))))
+    (home-page "https://github.com/readthedocs/commonmark.py")
+    (synopsis "Python parser for the CommonMark Markdown spec")
+    (description
+     "This module is a pure Python port of jgm's @code{commonmark.js}, a
+Markdown parser and renderer for the CommonMark specification, using only
+native modules.")
+    (license license:bsd-3)))
+
 (define-public python-xlrd
   (package
     (name "python-xlrd")
@@ -10820,14 +10929,13 @@ for the module to work under Python 3.3.")
 (define-public python-colorama
   (package
    (name "python-colorama")
-   (version "0.4.3")
+   (version "0.4.4")
    (source
     (origin
      (method url-fetch)
      (uri (pypi-uri "colorama" version))
      (sha256
-      (base32
-       "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9"))))
+      (base32 "16w62sm95hmh55rqxn4zwdz0bkh3fqm1qnz9cwi3s510iasb4har"))))
    (build-system python-build-system)
    (synopsis "Colored terminal text rendering for Python")
    (description "Colorama is a Python library for rendering colored terminal
@@ -10838,6 +10946,73 @@ text.")
 (define-public python2-colorama
   (package-with-python2 python-colorama))
 
+(define-public python-moto
+  (package
+    (name "python-moto")
+    ;; XXX: Use a pre-release for compatibility with latest botocore & friends.
+    (version "1.3.16.dev134")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "moto" version))
+              (sha256
+               (base32
+                "1pix0c7zszjwzfy88n1rpih9vkdm25nqcvz93z850xvgwb4v81bd"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-hardcoded-executable-names
+                    (lambda _
+                      (substitute* "moto/batch/models.py"
+                        (("/bin/sh")
+                         (which "sh")))
+                      (substitute* (find-files "tests" "\\.py$")
+                        (("#!/bin/bash")
+                         (string-append "#!" (which "bash"))))
+                      #t))
+                  (replace 'check
+                    (lambda _
+                      (setenv "PYTHONPATH" (string-append "./build/lib:"
+                                                          (getenv "PYTHONPATH")))
+                      (invoke "pytest" "-vv" "-m" "not network"
+                              ;; These tests require Docker.
+                              "-k" "not test_terminate_job \
+and not test_invoke_function_from_sqs_exception"))))))
+    (native-inputs
+     `(("python-flask" ,python-flask)
+       ("python-flask-cors" ,python-flask-cors)
+       ("python-freezegun" ,python-freezegun)
+       ("python-parameterized" ,python-parameterized)
+       ("python-pytest" ,python-pytest)
+       ("python-sure" ,python-sure)))
+    (propagated-inputs
+     `(("python-aws-xray-sdk" ,python-aws-xray-sdk)
+       ("python-boto" ,python-boto)
+       ("python-boto3" ,python-boto3)
+       ("python-botocore" ,python-botocore)
+       ("python-cfn-lint" ,python-cfn-lint)
+       ("python-cryptography" ,python-cryptography)
+       ("python-dateutil" ,python-dateutil)
+       ("python-docker" ,python-docker)
+       ("python-idna" ,python-idna)
+       ("python-jinja2" ,python-jinja2)
+       ("python-jose" ,python-jose)
+       ("python-jsondiff" ,python-jsondiff)
+       ("python-mock" ,python-mock)
+       ("python-pytz" ,python-pytz)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-requests" ,python-requests)
+       ("python-responses" ,python-responses)
+       ("python-six" ,python-six)
+       ("python-sshpubkeys" ,python-sshpubkeys)
+       ("python-werkzeug" ,python-werkzeug)
+       ("python-xmltodict" ,python-xmltodict)))
+    (home-page "https://github.com/spulec/moto")
+    (synopsis "Mock out the boto library")
+    (description
+     "@code{moto} is a library designed to easily mock out the
+@code{boto} library.")
+    (license license:asl2.0)))
+
 (define-public python-rsa
   (package
    (name "python-rsa")
@@ -10993,32 +11168,55 @@ document.")
 manipulation library.")
     (license license:expat)))
 
+(define-public python-boto
+  (package
+    (name "python-boto")
+    (version "2.49.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "boto" version))
+              (sha256
+               (base32
+                "0njy09c4wjx7ipxhwi6vv404nflyiasl78vwwxxpclnql903n3ga"))))
+    (build-system python-build-system)
+    (arguments
+     ;; XXX: This package is unmaintained and has problems with newer versions
+     ;; of Python 3 as well as test libraries.  'python-moto' still uses a
+     ;; subset of this library, so keep it around for now, but disable tests.
+     '(#:tests? #f))
+    (propagated-inputs
+     `(("python-paramiko" ,python-paramiko)
+       ("python-requests" ,python-requests)))
+    (home-page "https://github.com/boto/boto")
+    (synopsis "Python interfaces for Amazon Web Services")
+    (description
+     "This package provides various facilities for interacting with Amazon
+Web Services through Python.
+
+This software is unmaintained, and new projects should use @code{boto3} instead.")
+    (license license:expat)))
+
 (define-public python-botocore
+  ;; Note: When updating botocore, also make sure that boto3 and awscli
+  ;; are compatible.
   (package
     (name "python-botocore")
-    (version "1.15.26")
+    (version "1.19.22")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "botocore" version))
        (sha256
         (base32
-         "1a87pbwkk5vlwz92hy1wizfnpiwn11bhaicr6bmji1i5ybwdhnr8"))))
+         "0iim86x7c6hqmvd61ygz6x6x9glnsfbnyzv2y67qjdcdx8jpkmw7"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Many tests are failing.
      '(#:tests? #f))
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)
-       ("python-docutils" ,python-docutils)
-       ("python-jmespath" ,python-jmespath)))
-    (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-nose" ,python-nose)
-       ("behave" ,behave)
-       ("python-tox" ,python-tox)
-       ("python-urllib3" ,python-urllib3)
-       ("python-wheel" ,python-wheel)))
+       ("python-jmespath" ,python-jmespath)
+       ("python-urllib3" ,python-urllib3)))
     (home-page "https://github.com/boto/botocore")
     (synopsis "Low-level interface to AWS")
     (description "Botocore is a Python library that provides a low-level
@@ -11028,6 +11226,40 @@ interface to the Amazon Web Services (AWS) API.")
 (define-public python2-botocore
   (package-with-python2 python-botocore))
 
+(define-public python-boto3
+  (package
+    (name "python-boto3")
+    (version "1.16.22")
+    (home-page "https://github.com/boto/boto3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0h20hgl4yfl58g75qhb6ibrdmzn47md3srgar7hask14cjmfhfy3"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-network-tests
+           ;; Deleting integration tests because they are trying to connect to AWS.
+	   (lambda _
+	     (delete-file-recursively "tests/integration")
+	     #t)))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-mock" ,python-mock)))
+    (propagated-inputs
+     `(("python-botocore" ,python-botocore)
+       ("python-jmespath" ,python-jmespath)
+       ("python-s3transfer" ,python-s3transfer)))
+    (synopsis "AWS SDK for Python")
+    (description
+     "Boto3 is a Python library for writing programs that interact with
+@acronym{AWS,Amazon Web Services}.")
+    (license license:asl2.0)))
+
 (define-public python-pyfiglet
   (package
     (name "python-pyfiglet")
@@ -14635,22 +14867,20 @@ converting text with ANSI color codes to HTML or LaTeX.")
 (define-public python-ddt
   (package
     (name "python-ddt")
-    (version "1.1.3")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ddt" version))
        (sha256
         (base32
-         "1lw17420iimhghkgzgax85nn8d1an2d6k2cfvb7j5kwn2dqlr1vk"))))
+         "1niqpzc26sxdbyi46r07n4pma5fjx6crww2539vpfmsf0w6yg585"))))
     (build-system python-build-system)
     (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-nose" ,python-nose)))
+     `(("python-pytest" ,python-pytest)))
     (propagated-inputs
-     `(("python-six" ,python-six)
-       ("python-pyyaml" ,python-pyyaml)))
-    (home-page "https://github.com/txels/ddt")
+     `(("python-pyyaml" ,python-pyyaml)))
+    (home-page "https://github.com/datadriventests/ddt")
     (synopsis "Data-Driven Tests")
     (description
      "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by
@@ -14658,9 +14888,6 @@ running it with different test data, and make it appear as multiple test
 cases.")
     (license license:expat)))
 
-(define-public python2-ddt
-  (package-with-python2 python-ddt))
-
 (define-public python-pycountry
   (package
     (name "python-pycountry")
@@ -14801,13 +15028,13 @@ projects.")
   (package
     (name "python-invoke")
     (home-page "https://www.pyinvoke.org/")
-    (version "1.3.0")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "invoke" version))
               (sha256
                (base32
-                "1nn7gad0rvy492acpyhkrp01zsk86acf34qhsvq4xmm6x39788n5"))))
+                "0pg1lpl4583z83i12262v72y1a4cxdcxi7vqhl8dpqv9wszj6gyy"))))
     (build-system python-build-system)
     (arguments
      ;; XXX: Requires many dependencies that are not yet in Guix.
@@ -15188,14 +15415,14 @@ builds partial trees by inspecting living objects.")
 (define-public python-isbnlib
   (package
     (name "python-isbnlib")
-    (version "3.10.3")
+    (version "3.10.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "isbnlib" version))
        (sha256
         (base32
-         "07qhykv0x60d5rsx5pj6s4q15ri4znczscll3xmpf6gyclac1592"))))
+         "0iin0x2xqwyphyyzd0mzrq5v5xm7b6dlbb294k4dywra5qvbrgzm"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f))  ; No test
     (home-page "https://github.com/xlcnd/isbnlib")
@@ -15292,13 +15519,13 @@ in other versions.")
 (define-public python-mamba
   (package
     (name "python-mamba")
-    (version "0.11.1")
+    (version "0.11.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "mamba" version))
               (sha256
                (base32
-                "1jxy3bva94ac02a0wjsms79rp5104zmalxh8rhqqg6mw95cp6xpr"))))
+                "15m4dpnpv9m60pdaygvwgi43fwqaivs3qxfxhspwrp47sbgwdkvm"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f))  ; No test
     (propagated-inputs
@@ -15954,7 +16181,7 @@ by path in a JSON document (see RFC 6901).")
         (base32
          "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr"))))
     (build-system python-build-system)
-    (native-inputs
+    (propagated-inputs
      `(("python-jsonpointer" ,python-jsonpointer)))
     (home-page "https://github.com/stefankoegl/python-json-patch")
     (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
@@ -16091,6 +16318,125 @@ and integration into other projects.")
       (propagated-inputs
        `(("python2-selectors2" ,python2-selectors2))))))
 
+(define-public python-bagit
+  (package
+    (name "python-bagit")
+    (version "1.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "bagit" version))
+        (sha256
+         (base32
+          "1m6y04qmig0b5hzb35lnaw3d2yfydb7alyr1579yblvgs3da6j7j"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-coverage" ,python-coverage)
+       ("python-mock" ,python-mock)))
+    (home-page "https://libraryofcongress.github.io/bagit-python/")
+    (synopsis "Create and validate BagIt packages")
+    (description "Bagit is a Python library and command line utility for working
+with BagIt style packages.  BagIt is a minimalist packaging format for digital
+preservation.")
+    (license license:cc0)))
+
+(define-public python-prov
+  (package
+    (name "python-prov")
+    (version "2.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "prov" version))
+        (sha256
+         (base32
+          "1vi2fj31vygfcqrkimdmk52q2ldw08g9fn4v4zlgdfgcjlhqyhxn"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-lxml" ,python-lxml)
+       ("python-networkx" ,python-networkx)
+       ("python-rdflib" ,python-rdflib)))
+    (native-inputs
+     `(("graphviz" ,graphviz)
+       ("python-pydot" ,python-pydot)))
+    (home-page "https://github.com/trungdong/prov")
+    (synopsis
+     "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)")
+    (description
+     "This package provides a library for W3C Provenance Data Model supporting
+PROV-O (RDF), PROV-XML, PROV-JSON import/export.")
+    (license license:expat)))
+
+(define-public python-arcp
+  (package
+    (name "python-arcp")
+    (version "0.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "arcp" version))
+        (sha256
+         (base32
+          "1p8mfyjssa6pbn5dp6pyzv9yy6kwm2rz5jn2kjbq5vy9f9wsq5sw"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "http://arcp.readthedocs.io/")
+    (synopsis
+     "Archive and Package URI parser and generator")
+    (description
+     "@acronym{arcp, Archive and Package} provides functions for creating
+@code{arcp_} URIs, which can be used for identifying or parsing hypermedia files
+packaged in an archive or package, like a ZIP file.  arcp URIs can be used to
+consume or reference hypermedia resources bundled inside a file archive or an
+application package, as well as to resolve URIs for archive resources within a
+programmatic framework.  This URI scheme provides mechanisms to generate a
+unique base URI to represent the root of the archive, so that relative URI
+references in a bundled resource can be resolved within the archive without
+having to extract the archive content on the local file system.  An arcp URI can
+be used for purposes of isolation (e.g. when consuming multiple archives),
+security constraints (avoiding \"climb out\" from the archive), or for
+externally identiyfing sub-resources referenced by hypermedia formats.")
+    (license license:asl2.0)))
+
+(define-public python-shellescape
+  (package
+    (name "python-shellescape")
+    (version "3.8.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/chrissimpkins/shellescape")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0wzccxk139qx1lb2g70f5b2yh9zq15nr2mgvqdbfabg5zm0vf1qw"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "python" "tests/test_shellescape.py"))
+             #t)))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/chrissimpkins/shellescape")
+    (synopsis
+     "Shell escape a string to safely use it as a token in a shell command")
+    (description
+     "The shellescape Python module defines the @code{shellescape.quote()}
+function that returns a shell-escaped version of a Python string.  This is a
+backport of the @code{shlex.quote()} function from Python 3.8 that makes it
+accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.")
+    (license license:expat)))
+
 (define-public python-validators
   (package
     (name "python-validators")
@@ -16179,14 +16525,14 @@ address is valid and really exists.")
 (define-public python-marshmallow
   (package
     (name "python-marshmallow")
-    (version "3.0.0b14")
+    (version "3.9.1")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "marshmallow" version))
       (sha256
        (base32
-        "1digk3f5cfk7wmlka65mc7bzsd96pbsgcsvp6pimd5b4ff9zb5p3"))))
+        "0kizhh3mnhpa08wfnsv1gagy22bpxzxszgbiylkhpz1d8qvwrykk"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)
@@ -16201,40 +16547,45 @@ Python datatypes.")
 complex datatypes to and from native Python datatypes.")
     (license license:expat)))
 
-(define-public python2-marshmallow
-  (package-with-python2 python-marshmallow))
-
 (define-public python-apispec
   (package
     (name "python-apispec")
-    (version "0.25.3")
+    (version "4.0.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "apispec" version))
       (sha256
         (base32
-          "0kxa8723zbisx10363yh4mmmn4higxrspymbjfz5zq8f644zagm9"))))
+          "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'disable-prance-tests
+                    (lambda _
+                      ;; Disable validation tests since they require the
+                      ;; optional 'prance' library which is not yet in Guix.
+                      (substitute* "tests/test_ext_marshmallow_openapi.py"
+                        (("def test_openapi_tools_validate.*" all)
+                         (string-append "@pytest.mark.xfail\n" all)))))
+                  (replace 'check
+                    (lambda _
+                      (setenv "PYTHONPATH"
+                              (string-append "./build/lib:"
+                                             (getenv "PYTHONPATH")))
+                      (invoke "pytest" "-vv"))))))
     (propagated-inputs
      `(("python-pyyaml" ,python-pyyaml)))
     (native-inputs
      `(("python-pytest" ,python-pytest)
-       ("python-flask" ,python-flask)
-       ("python-marshmallow" ,python-marshmallow)
-       ("python-tornado" ,python-tornado)
-       ("python-bottle" ,python-bottle)
-       ("python-mock" ,python-mock)))
+       ("python-marshmallow" ,python-marshmallow)))
     (home-page "https://github.com/marshmallow-code/apispec")
-    (synopsis "Swagger 2.0 API specification generator")
+    (synopsis "Swagger/OpenAPI specification generator")
     (description "@code{python-apispec} is a pluggable API specification
-generator. Currently supports the OpenAPI specification (f.k.a.
-Swagger 2.0).")
+generator.  It currently supports the OpenAPI specification, formerly known
+as Swagger.")
     (license license:expat)))
 
-(define-public python2-apispec
-  (package-with-python2 python-apispec))
-
 (define-public python-flasgger
   (package
     (name "python-flasgger")
@@ -16282,9 +16633,6 @@ Swagger 2.0).")
 from your Flask project.  It is a fork of Flask-Swagger.")
     (license license:expat)))
 
-(define-public python2-flasgger
-  (package-with-python2 python-flasgger))
-
 (define-public python-swagger-spec-validator
   (package
     (name "python-swagger-spec-validator")
@@ -16614,6 +16962,44 @@ ignoring formatting changes.")
 (define-public python2-pydiff
   (package-with-python2 python-pydiff))
 
+(define-public python-pydub
+  (package
+    (name "python-pydub")
+    (version "0.24.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pydub" version))
+       (sha256
+        (base32
+         "0sfwfq7yjv4bl3yqbmizszscafvwf4zr40hzbsy7rclvzyznh333"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-ffmpeg-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((ffmpeg (assoc-ref inputs "ffmpeg")))
+               (substitute* '("pydub/utils.py")
+                 (("return \"ffmpeg\"")
+                  (string-append "return \"" ffmpeg "/bin/ffmpeg\""))
+                 (("return \"ffplay\"")
+                  (string-append "return \"" ffmpeg "/bin/ffplay\""))
+                 (("return \"ffprobe\"")
+                  (string-append "return \"" ffmpeg "/bin/ffprobe\""))
+                 (("warn\\(\"Couldn't find ff") "# warn\\(\"Couldn't find ff"))
+               #t))))))
+    (home-page "https://pydub.com")
+    (inputs
+     `(("ffmpeg" ,ffmpeg)))
+    (propagated-inputs
+     `(("python-scipy" ,python-scipy)))
+    (synopsis "Manipulate audio with a high level interface in Python")
+    (description
+     "@code{pydub} makes it easy to manipulate audio in Python.  It relies on
+@code{ffmpeg} to open various audio formats.")
+    (license license:expat))) ; MIT license
+
 (define-public python-tqdm
   (package
     (name "python-tqdm")
@@ -17079,14 +17465,14 @@ such as figshare or Zenodo.")
         (base32
          "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (delete-file "setup.cfg")
+                      (invoke "py.test"))))))
     (native-inputs
-     `(("python-appdirs" ,python-appdirs)
-       ("python-distlib" ,python-distlib)
-       ("python-importlib-metadata" ,python-importlib-metadata)
-       ("python-filelock" ,python-filelock)
-       ("python-six" ,python-six)
-       ("python-tox" ,python-tox)
-       ("python-virtualenv" ,python-virtualenv)))
+     `(("python-pytest" ,python-pytest)))
     (home-page "https://github.com/k-bx/python-semver")
     (synopsis "Python helper for Semantic Versioning")
     (description "This package provides a Python library for
@@ -17348,6 +17734,47 @@ style guide, even if the original code didn't violate the style guide.")
 (define-public python2-yapf
   (package-with-python2 python-yapf))
 
+(define-public python-yq
+  (package
+    (name "python-yq")
+    (version "2.11.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "yq" version))
+       (sha256
+        (base32
+         "1q4rky0a6n4izmq7slb91a54g8swry1xrbfqxwc8lkd3hhvlxxkl"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "yq/__init__.py"
+               (("Popen\\(\\[\"jq")
+                (string-append
+                 "Popen([\""
+                 (assoc-ref inputs "jq")
+                 "/bin/jq")))
+             #t)))))
+    (inputs
+     `(("python-argcomplete" ,python-argcomplete)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-xmltodict" ,python-xmltodict)
+       ("jq" ,jq)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-flake8" ,python-flake8)
+       ("python-wheel" ,python-wheel)))
+    (home-page "https://github.com/kislyuk/yq")
+    (synopsis "Command-line YAML/XML processor")
+    (description
+     "This package provides @command{yq} and @command{xq} for processing YAML
+and XML respectively.  The processing is done through @{jq}, @command{jq}
+filters can be used to process the data as it passes through.")
+    (license license:asl2.0)))
+
 (define-public python-gyp
   (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f")
         (revision "0"))
@@ -18084,6 +18511,109 @@ gevent-powered application.")
 (define-public python2-gipc
   (package-with-python2 python-gipc))
 
+(define-public python-beautifultable
+  (package
+    (name "python-beautifultable")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "beautifultable" version))
+       (sha256
+        (base32
+         "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-wcwidth" ,python-wcwidth)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-setup.py
+           (lambda _
+             (substitute* "setup.py"
+               (("setup\\(")
+                "setup(\n    test_suite=\"test\",")))))))
+    (home-page "https://github.com/pri22296/beautifultable")
+    (synopsis "Print ASCII tables for terminals")
+    (description "@code{python-beautifultable} provides a class for easily
+printing tabular data in a visually appealing ASCII format to a terminal.
+
+Features include, but are not limited to:
+@itemize
+@item Full customization of the look and feel of the table
+@item Row and column accessors.
+@item Full support for colors using ANSI sequences or any library.
+@item Plenty of predefined styles and option to create custom ones.
+@item Support for Unicode characters.
+@item Supports streaming table when data is slow to retrieve.
+@end itemize")
+    (license license:expat)))
+
+(define-public python-globber
+  (package
+    (name "python-globber")
+    (version "0.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/asharov/globber")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/asharov/globber")
+    (synopsis "Library for string matching with glob patterns")
+    (description
+     "Globber is a Python library for matching file names against glob patterns.
+In contrast to other glob-matching libraries, it matches arbitrary strings and
+doesn't require the matched names to be existing files.  In addition, it
+supports the globstar @code{**} operator to match an arbitrary number of
+path components.")
+    (license license:asl2.0)))
+
+(define-public python-git-hammer
+  (package
+    (name "python-git-hammer")
+    (version "0.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/asharov/git-hammer")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-setup.py
+           (lambda _
+             (substitute* "setup.py"
+               (("setup\\(")
+                "setup(\n    test_suite=\"test\",")))))))
+    (propagated-inputs
+     `(("python-beautifultable" ,python-beautifultable)
+       ("python-dateutil" ,python-dateutil)
+       ("python-gitpython" ,python-gitpython)
+       ("python-globber" ,python-globber)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-sqlalchemy" ,python-sqlalchemy)
+       ("python-sqlalchemy-utils"
+        ,python-sqlalchemy-utils)))
+    (home-page "https://github.com/asharov/git-hammer")
+    (synopsis "Provide statistics for git repositories")
+    (description
+     "Git Hammer is a statistics tool for projects in git repositories.
+Its major feature is tracking the number of lines authored by each person for every
+commit, but it also includes some other useful statistics.")
+    (license license:asl2.0)))
+
 (define-public python-fusepy
   (package
     (name "python-fusepy")
@@ -18543,79 +19073,37 @@ validation testing and application logic.")
 (define-public python-numba
   (package
     (name "python-numba")
-    (version "0.46.0")
+    (version "0.51.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "numba" version))
        (sha256
         (base32
-         "1vnfzcq6fcnkmdms6114d49awvvj5181fl7z1wlha27qc2paxjy2"))))
+         "0s0777m8kq4l96i88zj78np7283v1n4878qfc1gvzb8l45bmkg8n"))))
     (build-system python-build-system)
     (arguments
-     `(#:modules ((guix build utils)
-                  (guix build python-build-system)
-                  (ice-9 ftw)
-                  (srfi srfi-1)
-                  (srfi srfi-26))
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'disable-proprietary-features
            (lambda _
              (setenv "NUMBA_DISABLE_HSA" "1")
              (setenv "NUMBA_DISABLE_CUDA" "1")
              #t))
-         (add-after 'unpack 'remove-failing-tests
-           (lambda _
-             ;; FIXME: These tests fail for unknown reasons:
-             ;; test_non_writable_pycache, test_non_creatable_pycache, and
-             ;; test_frozen (all in numba.tests.test_dispatcher.TestCache).
-             (substitute* "numba/tests/test_dispatcher.py"
-               (("def test(_non_writable_pycache)" _ m)
-                (string-append "def guix_skip" m))
-               (("def test(_non_creatable_pycache)" _ m)
-                (string-append "def guix_skip" m))
-               (("def test(_frozen)" _ m)
-                (string-append "def guix_skip" m)))
-
-             ;; These tests fail because we don't run the tests from the build
-             ;; directory: test_setup_py_distutils, test_setup_py_setuptools
-             ;; They are in numba.tests.test_pycc.TestDistutilsSupport.
-             (substitute* "numba/tests/test_pycc.py"
-               (("def test(_setup_py_distutils|_setup_py_setuptools)" _ m)
-                (string-append "def guix_skip" m)))
-
-             ;; These tests fail because our version of Python does not have
-             ;; a recognizable front-end for the Numba distribution to use
-             ;; to check against.
-             (substitute* "numba/tests/test_entrypoints.py"
-               (("def test(_init_entrypoint)" _ m)
-                (string-append "def guix_skip" m)))
-             (substitute* "numba/tests/test_jitclasses.py"
-               (("def test(_jitclass_longlabel_not_truncated)" _ m)
-                (string-append "def guix_skip" m)))
-             #t))
          (replace 'check
-           (lambda _
-             (let ((cwd (getcwd)))
-               (setenv "PYTHONPATH"
-                       (string-append cwd "/build/"
-                                      (find (cut string-prefix? "lib" <>)
-                                            (scandir (string-append cwd "/build")))
-                                      ":"
-                                      (getenv "PYTHONPATH")))
-               ;; Something is wrong with the PYTHONPATH when running the
-               ;; tests from the build directory, as it complains about not being
-               ;; able to import certain modules.
-               (with-directory-excursion "/tmp"
-                 (invoke "python3" "-m" "numba.runtests" "-v" "-m")))
-             #t)))))
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             ;; Something is wrong with the PYTHONPATH when running the
+             ;; tests from the build directory, as it complains about not being
+             ;; able to import certain modules.
+             (with-directory-excursion "/tmp"
+               (setenv "HOME" (getcwd))
+               (invoke "python3" "-m" "numba.runtests" "-v" "-m")))))))
     (propagated-inputs
      `(("python-llvmlite" ,python-llvmlite)
        ("python-numpy" ,python-numpy)
        ("python-singledispatch" ,python-singledispatch)))
-    ;; Needed for tests.
-    (inputs
+    (native-inputs                      ;for tests
      `(("python-jinja2" ,python-jinja2)
        ("python-pygments" ,python-pygments)))
     (home-page "https://numba.pydata.org")
@@ -20131,14 +20619,14 @@ register custom encoders and decoders.")
 (define-public python-ujson
   (package
     (name "python-ujson")
-    (version "2.0.3")
+    (version "4.0.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "ujson" version))
         (sha256
          (base32
-          "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx"))
+          "1lr9lbm76y3ah1463jggwg2hjcb709mpns5f752wxxbgnd0n5kr6"))
         (modules '((guix build utils)))
         (snippet
          '(begin (delete-file-recursively "deps") #t))))
@@ -20172,28 +20660,6 @@ register custom encoders and decoders.")
 bindings for Python 3.")
     (license license:bsd-3)))
 
-(define-public python-ujson-1
-  (package
-    (inherit python-ujson)
-    (version "1.35")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "ujson" version))
-       (sha256
-        (base32
-         "11jz5wi7mbgqcsz52iqhpyykiaasila4lq8cmc2d54bfa3jp6q7n"))))
-    (arguments
-     '(#:phases %standard-phases))
-    (native-inputs '())
-    (home-page "http://www.esn.me")
-    (description
-     "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with
-bindings for Python 2.5+ and 3.")))
-
-(define-public python2-ujson-1
-  (package-with-python2 python-ujson-1))
-
 (define-public python-iocapture
   ;; The latest release is more than a year older than this commit.
   (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c")
@@ -21289,13 +21755,13 @@ information for your operating system.")
 (define-public python-canonicaljson
   (package
     (name "python-canonicaljson")
-    (version "1.1.4")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "canonicaljson" version))
        (sha256
-        (base32 "09cpacc8yvcc74i63pdmlfaahh77dnvbyw9zf29wml2zzwqfbg25"))))
+        (base32 "0c86g0vvzdcg3nrcsqnbzlfhpprc2i894p8i14hska56yl27d6w9"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)
@@ -21717,13 +22183,13 @@ dictionaries.")
 (define-public pyzo
   (package
     (name "pyzo")
-    (version "4.10.2")
+    (version "4.11.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyzo" version))
        (sha256
-        (base32 "1zplxcb78qy8qibifmnsx5i9gnlfmw9n6nr4yflsabpxw57mx4m1"))))
+        (base32 "1jk5f79lj09vnsdk9h01w21p9h49z2hhf8xhkx8471pjbg9vrlzr"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -21733,8 +22199,8 @@ dictionaries.")
              ;; Tests fail with "Permission denied: '/homeless-shelter'".
              (setenv "HOME" "/tmp")
              #t)))
-       ;; Tests fail with "Uncaught Python exception: invalid literal for
-       ;; int() with base 10: 'test'".
+       ;; Tests fail with "Uncaught Python exception: python: undefined
+       ;; symbol: objc_getClass".
        #:tests? #f))
     (propagated-inputs
      `(("python-pyqt" ,python-pyqt)))
@@ -21886,7 +22352,7 @@ allows you, from Python code, to “fix” invalid (X)HTML markup.")
     (build-system python-build-system)
     (home-page "https://github.com/mattgiles/mujson")
     (synopsis "Use the fastest JSON functions available at import time")
-    (description "This packages selects the fastest JSON functions available
+    (description "This package selects the fastest JSON functions available
 at import time.")
     (license license:expat)))
 
@@ -22223,8 +22689,6 @@ It adds a simple and readable way to print stuff during development.")
         (base32
          "1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8"))))
     (build-system python-build-system)
-    (inputs
-     `(("tzdata" ,tzdata)))
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)
        ("python-pytz" ,python-pytz)
@@ -22233,7 +22697,8 @@ It adds a simple and readable way to print stuff during development.")
        ("python-tzlocal" ,python-tzlocal)))
     (native-inputs
      `(("python-mock" ,python-mock)
-       ("python-parameterized" ,python-parameterized)))
+       ("python-parameterized" ,python-parameterized)
+       ("tzdata" ,tzdata-for-tests)))
     (arguments
      `(;; TODO: Of 23320 tests, 6 fail and 53 error.
        #:tests? #f
@@ -22414,6 +22879,41 @@ a Python library to convert RELAX NG schemata in Compact syntax (rnc) to
 equivalent schemata in the XML-based default RELAX NG syntax.")
     (license license:expat)))
 
+(define-public python-telethon
+  (package
+    (name "python-telethon")
+    (version "1.17.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/LonamiWebs/Telethon")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "py.test" "-v"))
+             #t)))))
+    (propagated-inputs
+     `(("python-rsa" ,python-rsa)
+       ("python-pyaes" ,python-pyaes)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-asyncio" ,python-pytest-asyncio)
+       ("python-pytest-trio" ,python-pytest-trio)))
+    (home-page "https://docs.telethon.dev")
+    (synopsis "Full-featured Telegram client library for Python 3")
+    (description "This library is designed to make it easy to write Python
+programs that can interact with Telegram.")
+    (license license:expat)))
+
 (define-public python-citeproc-py
   (package
     (name "python-citeproc-py")
@@ -22495,3 +22995,124 @@ NestedText is both simple and natural.  Only a small number of concepts and rule
 be kept in mind when creating it.  It is easily created, modified, or viewed with
 a text editor and easily understood and used by both programmers and non-programmers.")
     (license license:expat))) ; MIT license
+
+(define-public python-parallel
+  (package
+    (name "python-parallel")
+    (version "1.6.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://www.parallelpython.com/downloads/pp/pp-"
+             version ".zip"))
+       (sha256
+        (base32
+         "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7"))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f))  ; No test suite.
+    (home-page "https://www.parallelpython.com")
+    (synopsis "Parallel and distributed programming for Python")
+    (description "Parallel Python module (PP) provides an easy and efficient
+way to create parallel-enabled applications for SMP computers and clusters.
+PP module features cross-platform portability and dynamic load balancing.
+Thus applications written with PP will parallelize efficiently even on
+heterogeneous and multi-platform clusters (including clusters running other
+applications with variable CPU loads).")
+    (license license:bsd-3)))
+
+(define-public python2-parallel
+  (package-with-python2 python-parallel))
+
+(define-public python-djvulibre
+  (package
+    (name "python-djvulibre")
+    (version "0.8.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-djvulibre" version))
+       (sha256
+        (base32 "1c0lvpg7j2525cv52s3q5sg7hfnakkb8rmghg0jc02gshsxmrj4f"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("ghostscript" ,ghostscript)
+       ("pkg-config" ,pkg-config)
+       ("python-nose" ,python-nose)))
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("python-cython" ,python-cython)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             ;; Unit tests try to load the 'dllpath.py' and fail, because it
+             ;; doesn't make sense on GNU/Linux.
+             (delete-file "djvu/dllpath.py")
+             #t)))))
+    (synopsis "Python bindings for DjVuLibre")
+    (description "This is a set of Python bindings for the DjVuLibre library.")
+    (home-page "https://jwilk.net/software/python-djvulibre")
+    (license license:gpl2)))
+
+(define-public python2-djvulibre
+  (package-with-python2 python-djvulibre))
+
+(define-public python-versioneer
+  (package
+    (name "python-versioneer")
+    (version "0.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "versioneer" version))
+       (sha256
+        (base32
+         "1bmg8y78am371rd9b4clf11b8g1h7xvq8q58z03jvgdwpsdx7zm4"))))
+    (build-system python-build-system)
+    (home-page
+     "https://github.com/python-versioneer/python-versioneer")
+    (synopsis
+     "Version-string management for VCS-controlled trees")
+    (description
+     "@code{versioneer} is a tool for managing a recorded version number in
+distutils-based python projects.  The goal is to remove the tedious and
+error-prone \"update the embedded version string\" step from your release
+process.")
+    (license license:public-domain)))
+
+(define-public python2-gamera
+  (package
+    (name "python2-gamera")
+    (version "3.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://gamera.informatik.hsnr.de/download/"
+                           "gamera-" version ".tar.gz"))
+       (sha256
+        (base32 "1g4y1kxk1hmxfsiz682hbxvwryqilnb21ci509m559yp7hcliiyy"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled libraries.
+           (for-each delete-file-recursively
+                     '("src/libpng-1.2.5"
+                       "src/libtiff"
+                       "src/zlib-1.2.8"))))))
+    (build-system python-build-system)
+    (inputs
+     `(("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("python2-wxpython" ,python2-wxpython)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:python ,python-2))
+    (synopsis "Framework for building document analysis applications")
+    (description
+     "Gamera is a toolkit for building document image recognition systems.")
+    (home-page "https://gamera.informatik.hsnr.de/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 62494bea20..1c183f925b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -396,7 +396,39 @@ data types.")
                 " --exclude test_mmap"
                 ;; test_socket may hang and eventually run out of memory
                 ;; on some systems: <https://bugs.python.org/issue34587>.
-                " test_socket")))
+                " test_socket"
+                ,@(if (hurd-target?)
+                      '(" test_posix"      ;multiple errors
+                        " test_time"
+                        " test_pty"
+                        " test_shutil"
+                        " test_tempfile"   ;chflags: invalid argument:
+                                           ;  tbv14c9t/dir0/dir0/dir0/test0.txt
+                        " test_asyncio"    ;runs over 10min
+                        " test_os"         ;stty: 'standard input':
+                                           ;  Inappropriate ioctl for device
+                        " test_openpty"    ;No such file or directory
+                        " test_selectors"  ;assertEqual(NUM_FDS // 2, len(fds))
+                                           ;  32752 != 4
+                        " test_compileall" ;multiple errors
+                        " test_poll"       ;list index out of range
+                        " test_subprocess" ;runs over 10min
+                        " test_asyncore"   ;multiple errors
+                        " test_threadsignals"
+                        " test_eintr"      ;Process return code is -14
+                        " test_io"         ;multiple errors
+                        " test_logging"
+                        " test_signal"
+                        " test_threading"  ;runs over 10min
+                        " test_flags"      ;ERROR
+                        " test_bidirectional_pty"
+                        " test_create_unix_connection"
+                        " test_unix_sock_client_ops"
+                        " test_open_unix_connection"
+                        " test_open_unix_connection_error"
+                        " test_read_pty_output"
+                        " test_write_pty")
+                      '()))))
        ((#:phases phases)
        `(modify-phases ,phases
           ,@(if (hurd-system?)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index aabbdc308f..2e621e758c 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1566,7 +1566,7 @@ message.")))
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/manisandro/qtspell.git")
+             (url "https://github.com/manisandro/qtspell")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index a8f57b6c17..70a9762379 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -159,14 +159,14 @@ this package.  E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
 (define-public chirp
   (package
     (name "chirp")
-    (version "20201014")
+    (version "20201121")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
                            version "/chirp-daily-" version ".tar.gz"))
        (sha256
-        (base32 "16x3ix2n7a9l7lln2pri1xfmhyfvvzxb0nr3h33iajqimbwckxj0"))))
+        (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
     (build-system python-build-system)
     (inputs
      `(("python2-libxml2" ,python2-libxml2)
@@ -538,7 +538,7 @@ to the fix block above.
 (define-public gqrx
   (package
     (name "gqrx")
-    (version "2.12.1")
+    (version "2.13.5")
     (source
      (origin
        (method git-fetch)
@@ -547,7 +547,7 @@ to the fix block above.
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00alf3q6y313xpx6p7v43vqsphd2x4am4q362lw21bcy9wc4jidw"))))
+        (base32 "168wjad5g0ka555hwsciwbj7fqx1c89q59hq1yxj8aiyp5kfcahx"))))
     (build-system qt-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -567,7 +567,7 @@ to the fix block above.
        ("qtsvg" ,qtsvg)
        ("volk" ,volk)))
     (arguments
-     `(#:tests? #f)) ; No tests
+     `(#:tests? #f))                    ; no tests
     (synopsis "Software defined radio receiver")
     (description "Gqrx is a software defined radio (SDR) receiver implemented
 using GNU Radio and the Qt GUI toolkit.")
@@ -577,14 +577,14 @@ using GNU Radio and the Qt GUI toolkit.")
 (define-public fldigi
   (package
     (name "fldigi")
-    (version "4.1.14")
+    (version "4.1.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.w1hkj.com/files/fldigi/fldigi-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0hr6xbv01xf7z4r2jxxhn8xjdmca2198q4m9glh4877dllvfq6xj"))))
+        (base32 "1dfkvhs0ri5kbyskk730ik8ix5z138qys26b31p6kixd8jjkw3k4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -613,14 +613,14 @@ hardware.")
 (define-public flrig
   (package
     (name "flrig")
-    (version "1.3.51")
+    (version "1.3.52")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.w1hkj.com/files/flrig/flrig-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0aq4x0ai9q08ypfhzfj2inc4z3q39zq1l6h9as1kil9yn4zbay61"))))
+        (base32 "18c154080vl25cy4l5amh96abm6kzm7mzld9h58pabc28yqq8zl8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1015,7 +1015,7 @@ gain and standing wave ratio.")
 (define-public dump1090
   (package
     (name "dump1090")
-    (version "3.8.1")
+    (version "4.0")
     (source
      (origin
        (method git-fetch)
@@ -1024,7 +1024,7 @@ gain and standing wave ratio.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0xg8rzrxqklx1m9ncxsd96dlkbjcsxfi2mrb859v50f07xysdyd8"))))
+        (base32 "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1052,7 +1052,7 @@ gain and standing wave ratio.")
 It can be used to decode the ADS-B signals that planes emit to indicate
 their position, altitude, speed, etc.")
     (home-page "https://github.com/flightaware/dump1090")
-    (license license:bsd-3)))
+    (license license:gpl2+)))
 
 (define-public rtl-433
   (package
diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
new file mode 100644
index 0000000000..cdea392fc7
--- /dev/null
+++ b/gnu/packages/raspberry-pi.scm
@@ -0,0 +1,237 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages raspberry-pi)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages commencement)
+  #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages embedded)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:use-module (guix monads)
+  #:use-module (guix utils)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-2)
+  #:use-module (srfi srfi-26)
+  #:use-module (ice-9 match))
+
+(define-public bcm2835
+  (package
+    (name "bcm2835")
+    (version "1.64")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.airspayce.com/mikem/bcm2835/bcm2835-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "06s81540iz4vsh0cm6jwah2x0hih79v42pfa4pgr8kcbv56158h6"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f))    ; Would need to be root
+    ;; doc/html docs would not be installed anyway.
+    ;(native-inputs
+    ; `(("doxygen", doxygen)))
+    (synopsis "C library for Broadcom BCM 2835 as used in Raspberry Pi")
+    (description "This package provides a C library for Broadcom BCM 2835 as
+used in the Raspberry Pi")
+    (home-page "http://www.airspayce.com/mikem/bcm2835/")
+    (supported-systems '("armhf-linux" "aarch64-linux"))
+    (license license:gpl3)))
+
+(define raspi-gpio
+  (let ((commit "6d0769ac04760b6e9f33b4aa1f11c682237bf368")
+        (revision "1"))
+    (package
+      (name "raspi-gpio")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/RPi-Distro/raspi-gpio")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1fia1ma586hwhpda0jz86j6i55andq0wncbhzhzvhf7yc773cpi4"))))
+      (build-system gnu-build-system)
+      (synopsis "State dumper for BCM270x GPIOs")
+      (description "Tool to help debug / hack at the BCM283x GPIO. You can dump
+  the state of a GPIO or (all GPIOs). You can change a GPIO mode and pulls (and
+  level if set as an output).  Beware this tool writes directly to the BCM283x
+  GPIO reisters, ignoring anything else that may be using them (like Linux
+  drivers).")
+      (home-page "https://github.com/RPi-Distro/raspi-gpio")
+      (supported-systems '("armhf-linux" "aarch64-linux"))
+      (license license:bsd-3))))
+
+(define %rpi-open-firmware-version "0.1")
+(define %rpi-open-firmware-origin
+  (origin
+   (method git-fetch)
+   (uri (git-reference
+         (url "https://github.com/librerpi/rpi-open-firmware")
+         (commit "6be45466e0be437a1b0b3512a86f3d9627217006")))
+   (file-name "rpi-open-firmware-checkout")
+   (sha256
+    (base32 "1wyxvv62i3rjicg4hd94pzbgpadinnrgs27sk39md706mm0qixbh"))))
+
+(define-public raspi-arm-chainloader
+  (package
+    (name "raspi-arm-chainloader")
+    (version %rpi-open-firmware-version)
+    (source %rpi-open-firmware-origin)
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                   ; No tests exist
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'setenv
+           (lambda _
+             (setenv "CC" "arm-none-eabi-gcc")
+             (setenv "CXX" "arm-none-eabi-g++")
+             (setenv "AS" "arm-none-eabi-as")
+             (setenv "OBJCOPY" "arm-none-eabi-objcopy")
+             (setenv "BAREMETAL" "1")
+             #t))
+         (add-after 'setenv 'build-tlsf
+           (lambda _
+             (with-directory-excursion "tlsf"
+               ;; Note: Adding "-I../common -I../notc/include".
+               (invoke "make"
+                       "CFLAGS=-mtune=arm1176jzf-s -march=armv6zk -mfpu=vfp -mfloat-abi=softfp -I../common -I../notc/include"))))
+         (add-after 'build-tlsf 'build-common
+           (lambda _
+             (with-directory-excursion "common"
+               (invoke "make"
+                       ;; Note: Adding "-I.. -I../notc/include".
+                       "ARMCFLAGS=-mtune=arm1176jzf-s -march=armv6zk -marm -I.. -I../notc/include"))))
+         (add-after 'build-common 'build-notc
+           (lambda _
+             (with-directory-excursion "notc"
+               (invoke "make"))))
+         (add-after 'build-notc 'chdir
+           (lambda _
+             (chdir "arm_chainloader")
+             (substitute* "Makefile"
+              (("-I[.][.]/")
+               "-I../common -I../common/include -I../notc/include -I../")
+              (("-ltlsf")
+               "-L../common -L../notc -L../tlsf -ltlsf"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (libexec (string-append out "/libexec")))
+               (mkdir-p libexec)
+               (install-file "build/arm_chainloader.elf" libexec)
+               (install-file "build/arm_chainloader.map" libexec)
+               (install-file "build/arm_chainloader.bin" libexec)
+               #t))))))
+    (native-inputs
+     `(("binutils" ,(cross-binutils "arm-none-eabi"))
+       ("gcc" ,gcc-arm-none-eabi-6)))
+    (inputs
+     `())
+    (synopsis "Raspberry Pi ARM bootloader")
+    (description "This package provides a bootloader for the ARM part of a
+Raspberry Pi.  Note: It does not work on Raspberry Pi 1.")
+    (home-page "https://github.com/librerpi/rpi-open-firmware/")
+    (license license:gpl2+)))
+
+(define-public raspi-arm64-chainloader
+  (package
+    (inherit raspi-arm-chainloader)
+    (name "raspi-arm64-chainloader")
+    ;; These native-inputs especially don't contain a libc.
+    (native-inputs
+     `(("bash" ,bash)
+       ("binutils" ,binutils)
+       ("coreutils" ,coreutils)
+       ("file" ,file)
+       ("ld-wrapper" ,ld-wrapper)
+       ("make" ,gnu-make)
+       ("gcc" ,gcc-6)
+       ("locales" ,glibc-utf8-locales)))
+    (inputs
+     `())
+    (arguments
+     `(#:implicit-inputs? #f
+       ,@(substitute-keyword-arguments (package-arguments raspi-arm-chainloader)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (replace 'setenv
+               (lambda _
+                 (setenv "AS" "as") ; TODO: as-for-target
+                 (setenv "OBJCOPY" "objcopy")
+                 (setenv "CC" ,(cc-for-target))
+                 (setenv "CXX" ,(cc-for-target))
+                 (setenv "BAREMETAL" "1")
+                 #t))
+             (add-after 'setenv 'build-tlsf
+               (lambda _
+                 (with-directory-excursion "tlsf"
+                   (invoke "make"
+                           "CFLAGS=-I../common -I../notc/include"))))
+             (replace 'build-common
+               (lambda _
+                 (with-directory-excursion "common"
+                   ;; Autodetection uses the CC filename for detecting the architecture.
+                   ;; Since we are not using a cross-compiler, we side-step that.
+                   (invoke "make"
+                           "CFLAGS=-Ilib -I. -Iinclude -ffunction-sections -Wall -g -nostdlib -nostartfiles -ffreestanding -DBAREMETAL"))))
+             (replace 'build-notc
+               (lambda _
+                 (with-directory-excursion "notc"
+                   ;; Autodetection uses the CC filename for detecting the architecture.
+                   ;; Since we are not using a cross-compiler, we side-step that.
+                   (invoke "make"
+                           "CFLAGS=-Iinclude -g"))))
+             (replace 'chdir
+               (lambda _
+                 (chdir "arm64")
+                 (substitute* "Makefile"
+                  (("CFLAGS =")
+                   "CFLAGS = -I../common -I../common/include -I../notc/include -I.. -DBAREMETAL")
+                  (("-lcommon")
+                   "-L../common -L../notc -lcommon"))
+                 #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (libexec (string-append out "/libexec")))
+               (mkdir-p libexec)
+               (install-file "arm64.elf" libexec)
+               (install-file "arm64.map" libexec)
+               (install-file "arm64.bin" libexec)
+               #t))))))))
+    (supported-systems '("aarch64-linux"))))
diff --git a/gnu/packages/rdesktop.scm b/gnu/packages/rdesktop.scm
index 0fc63e8675..30523deefe 100644
--- a/gnu/packages/rdesktop.scm
+++ b/gnu/packages/rdesktop.scm
@@ -87,7 +87,7 @@ to remotely control a user's Windows desktop.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "git://github.com/FreeRDP/FreeRDP.git")
+             (url "git://github.com/FreeRDP/FreeRDP")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/re2c.scm b/gnu/packages/re2c.scm
index 427195fd5f..3b329617c7 100644
--- a/gnu/packages/re2c.scm
+++ b/gnu/packages/re2c.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru>
+;;; Copyright © 2017, 2020 Sergei Trofimovich <slyfox@inbox.ru>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -26,7 +26,7 @@
 (define-public re2c
   (package
     (name "re2c")
-    (version "1.2.1")
+    (version "2.0.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/skvadrik/" name
@@ -34,7 +34,7 @@
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "05xq0571mkgr20v827jm63nhsirr8arghg4fszzswrmrnl3dfk0s"))))
+               "0y22fiyv2pqmq8asb2p5hzcf7ibjdrz7nl16rlpzy8damaw1xg5j"))))
     (build-system gnu-build-system)
     (home-page "https://re2c.org/")
     (synopsis "Lexer generator for C/C++")
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index cb7a08e207..d37663bf5b 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,7 +31,7 @@
 (define-public re2
    (package
      (name "re2")
-     (version "2020-07-06")
+     (version "2020-11-01")
      (home-page "https://github.com/google/re2")
      (source (origin
                (method git-fetch)
@@ -38,7 +39,7 @@
                (file-name (git-file-name name version))
                (sha256
                 (base32
-                 "12a9r9y7ry3hq0qf4znl9j7pn9mb5k6xp1f8nrk1sagfj1a504mq"))))
+                 "0ii51fpp6fn51x4qyd99sy4r122s8ayh4x1srwhhijxlh8mzla5k"))))
      (build-system gnu-build-system)
      (arguments
       `(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm
index e26170942b..cffa703fe0 100644
--- a/gnu/packages/rpc.scm
+++ b/gnu/packages/rpc.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,12 +39,13 @@
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages regex)
   #:use-module (gnu packages tls))
 
 (define-public grpc
   (package
     (name "grpc")
-    (version "1.27.3")
+    (version "1.33.2")
     (outputs '("out" "static"))
     (source (origin
               (method git-fetch)
@@ -53,7 +55,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0czmbwnafc7jnrrq2fnac2av83vs2q7q0wy4k11w9zbpld7j5h6d"))))
+                "09xd9pkyp10gh051kf8kwxn4myw42zv8kngr9z8wpm6mjy0j4ylw"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; no test target
@@ -63,6 +65,7 @@
              "-DgRPC_CARES_PROVIDER=package"
              "-DgRPC_SSL_PROVIDER=package"
              "-DgRPC_PROTOBUF_PROVIDER=package"
+             "-DgRPC_RE2_PROVIDER=package"
              (string-append "-DCMAKE_INSTALL_PREFIX="
                             (assoc-ref %outputs "out"))
              "-DCMAKE_INSTALL_LIBDIR=lib"
@@ -102,9 +105,11 @@
      `(("abseil-cpp" ,abseil-cpp)
        ("c-ares" ,c-ares/cmake)
        ("openssl" ,openssl)
+       ("re2" ,re2)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("protobuf" ,protobuf)
+     `(("pkg-config" ,pkg-config)
+       ("protobuf" ,protobuf)
        ("python" ,python-wrapper)))
     (home-page "https://grpc.io")
     (synopsis "High performance universal RPC framework")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 42d4faa234..06a90dda55 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -147,16 +147,16 @@ a focus on simplicity and productivity.")
 (define-public ruby-2.7
   (package
     (inherit ruby-2.6)
-    (version "2.7.1")
+    (version "2.7.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
+       (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
                            (version-major+minor version)
                            "/ruby-" version ".tar.gz"))
        (sha256
         (base32
-         "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l"))
+         "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
        (modules '((guix build utils)))
        (snippet `(begin
                    ;; Remove bundled libffi
@@ -1343,7 +1343,7 @@ Prawn module.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/prawnpdf/prawn-templates.git")
+             (url "https://github.com/prawnpdf/prawn-templates")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1405,7 +1405,7 @@ loader for the file type associated with a filename extension, and it augments
      (origin
        (method git-fetch)               ;no test suite in distributed gem
        (uri (git-reference
-             (url "https://github.com/cjheath/treetop.git")
+             (url "https://github.com/cjheath/treetop")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1458,7 +1458,7 @@ for performance optimizations in Ruby code.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/searls/gimme.git")
+               (url "https://github.com/searls/gimme")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1519,7 +1519,7 @@ only what they care about.")
      (origin
        (method git-fetch)               ;no test suite in distributed gem
        (uri (git-reference
-             (url "https://github.com/testdouble/standard.git")
+             (url "https://github.com/testdouble/standard")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1557,17 +1557,16 @@ to save time in the following ways:
 (define-public ruby-chunky-png
   (package
     (name "ruby-chunky-png")
-    (version "1.3.12")
+    (version "1.3.14")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wvanbergen/chunky_png.git")
+             (url "https://github.com/wvanbergen/chunky_png")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0hn8ap7iib47qkqdp0awmxgma11z0lmk1ca3lp7c97ykhv7ij1zs"))))
+        (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
     (build-system ruby-build-system)
     (arguments
      `(#:test-target "spec"
@@ -1606,7 +1605,12 @@ pixel, depending on the hardware).
 Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
 integer math and a highly optimized saving routine.
 @item Interoperability with RMagick.
-@end itemize")
+@end itemize
+
+ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
+loading a specifically crafted PNG file.  This is hard to fix in pure Ruby.
+Deal with untrusted images in a separate process, e.g., by using @code{fork}
+or a background processing library.")
     (home-page "https://github.com/wvanbergen/chunky_png/wiki")
     (license license:expat)))
 
@@ -1668,7 +1672,7 @@ web pages.")
        (origin
          (method git-fetch)      ;no test suite in the distributed gem
          (uri (git-reference
-               (url "https://github.com/asciidoctor/asciidoctor-pdf.git")
+               (url "https://github.com/asciidoctor/asciidoctor-pdf")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2374,7 +2378,9 @@ extensions.")
     (arguments
      '(#:tests? #f ; test suite hangs for unknown reason
        #:gem-flags
-       (list "--"
+       (list "--no-document"            ; TODO: Re-enable when documentation
+                                        ; generation works
+             "--"
              (string-append "--with-xml2-include="
                             (assoc-ref %build-inputs "libxml2")
                             "/include/libxml2" ))))
@@ -3805,6 +3811,10 @@ as a base class when writing classes that depend upon
         (base32
          "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
     (build-system ruby-build-system)
+    (arguments
+     ;; The test suite fails (see:
+     ;; https://github.com/cldwalker/bond/issues/46).
+     `(#:tests? #f))
     (native-inputs
      `(("ruby-bacon" ,ruby-bacon)
        ("ruby-bacon-bits" ,ruby-bacon-bits)
@@ -4476,6 +4486,29 @@ reporter.")
     (home-page "https://blowmage.com/minitest-rg/")
     (license license:expat)))
 
+(define-public ruby-minitest-global-expectations
+  (package
+    (name "ruby-minitest-global-expectations")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "minitest-global_expectations"
+                          version))
+       (sha256
+        (base32
+         "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-minitest" ,ruby-minitest)))
+    (synopsis "Adjust minitest behaviour for calling expectation methods")
+    (description
+     "Minitest-global_expectations allows continued use of expectation methods
+on all objects.  Calling expectation methods on all objects was deprecated in
+minitest 5.12, and is planned to be removed from minitest 6.")
+    (home-page "https://github.com/jeremyevans/minitest-global_expectations")
+    (license license:expat)))
+
 (define-public ruby-minitest-hooks
   (package
     (name "ruby-minitest-hooks")
@@ -6749,7 +6782,7 @@ inspired by the Sinatra microframework style of specifying actions:
      (origin
        (method git-fetch)               ;no test suite in distributed gem
        (uri (git-reference
-             (url "https://github.com/rubocop-hq/rubocop-ast.git")
+             (url "https://github.com/rubocop-hq/rubocop-ast")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6793,7 +6826,7 @@ by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
      (origin
        (method git-fetch)               ;no tests in distributed gem
        (uri (git-reference
-             (url "https://github.com/ruby/rexml.git")
+             (url "https://github.com/ruby/rexml")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6844,7 +6877,7 @@ better performance than @code{Regexp} and @code{String} methods from the
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/janosch-x/range_compressor.git")
+              (url "https://github.com/janosch-x/range_compressor")
               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -6877,7 +6910,7 @@ following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
      (origin
        (method git-fetch)
        (uri (git-reference              ;no test suite in distributed gem
-             (url "https://github.com/jaynetics/regexp_property_values.git")
+             (url "https://github.com/jaynetics/regexp_property_values")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6908,7 +6941,7 @@ they match.")
      (origin
        (method git-fetch)               ;bin/test missing from gem
        (uri (git-reference
-             (url "https://github.com/ammar/regexp_parser.git")
+             (url "https://github.com/ammar/regexp_parser")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6981,7 +7014,7 @@ run.")
      (origin
        (method git-fetch)               ;no tests in distributed gem
        (uri (git-reference
-             (url "https://github.com/rubocop-hq/rubocop.git")
+             (url "https://github.com/rubocop-hq/rubocop")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10461,7 +10494,7 @@ custom checks.  This gem provides a set of additional checks.")
     (source (origin
               (method git-fetch)        ;no test in distributed gem archive
               (uri (git-reference
-                    (url "https://github.com/yob/pdf-reader.git")
+                    (url "https://github.com/yob/pdf-reader")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -10501,7 +10534,7 @@ access to the contents of a PDF file with a high degree of flexibility.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/prawnpdf/pdf-inspector.git")
+                      (url "https://github.com/prawnpdf/pdf-inspector")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -10564,7 +10597,7 @@ functionality from Prawn.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/prawnpdf/prawn.git")
+                      (url "https://github.com/prawnpdf/prawn")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index fabb4e0380..33f1806880 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -75,11 +75,6 @@
        (("rust-datetime" ,rust-datetime-0.4))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'configure 'dont-vendor-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t))
          ;; Ignoring failing tests.
          ;; Reported in https://github.com/ogham/exa/issues/318
          (add-before 'check 'disable-failing-tests
@@ -90,6 +85,7 @@
 
              (substitute* "src/options/view.rs"
                (("test!\\(across:.*") "")
+               (("test!\\(cr:.*") "")
                (("test!\\(empty:.*") "")
                (("test!\\(gracross:.*") "")
                (("test!\\(grid:.*") "")
@@ -393,18 +389,12 @@ gitignore rules.")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-regex" ,rust-regex-1)
         ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-tempfile" ,rust-tempfile-3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'unvendor-libraries-from-crates
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
      `(("libgit2" ,libgit2)
        ("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)
        ("zlib" ,zlib)))
     (home-page "https://tokei.rs")
     (synopsis "Count code, quickly")
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 76a9c01866..55981da463 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,8 @@
   #:use-module (gnu packages cups)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages docbook)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages linux)
@@ -175,69 +178,77 @@ external dependencies.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.12.7")
+    (version "4.13.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.samba.org/pub/samba/stable/"
                            "samba-" version ".tar.gz"))
        (sha256
-        (base32 "1lkgih0vrarf5zy6chspkwarqdylzwr63nxr3qjkpazrs86nlm9h"))
+        (base32 "1d7j79c8aggwiv90y2q1yz63d9p5n4paq0fsbdvqpn05d8wn8r17"))
        (patches (search-patches "samba-fix-fcntl-hint-detection.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
-           ;; TODO: also remove the bundled ‘third_party/popt’.
+           ;; XXX: Some bundled libraries (e.g, popt, cmocka) are used from
+           ;; the system, but their bundled sources must be kept as they
+           ;; include the WAF scripts used for detecting them.
            (delete-file-recursively "third_party/pyiso8601")
            #t))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:make-flags '("TEST_OPTIONS=--quick") ;some tests are very long
+       #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'locate-docbook-stylesheets
+         (add-before 'configure 'setup-docbook-stylesheets
            (lambda* (#:key inputs #:allow-other-keys)
-             ;; XXX for some reason XML_CATALOG_FILES is not respected.
-             (substitute* '("buildtools/wafsamba/samba_conftests.py"
-                            "buildtools/wafsamba/wafsamba.py"
-                            "docs-xml/xslt/man.xsl")
-               (("http://docbook.sourceforge.net/release/xsl/current/")
-                (string-append (assoc-ref inputs "docbook-xsl")
-                               "/xml/xsl/docbook-xsl-"
-                               ,(package-version docbook-xsl) "/")))
+             ;; Append Samba's own DTDs to XML_CATALOG_FILES
+             ;; (c.f. docs-xml/build/README).
+             (copy-file "docs-xml/build/catalog.xml.in"
+                        "docs-xml/build/catalog.xml")
+             (substitute* "docs-xml/build/catalog.xml"
+               (("/@abs_top_srcdir@")
+                (string-append (getcwd) "/docs-xml")))
+             ;; Honor XML_CATALOG_FILES.
+             (substitute* "buildtools/wafsamba/wafsamba.py"
+               (("XML_CATALOG_FILES=\"\\$\\{SAMBA_CATALOGS\\}" all)
+                (string-append all " $XML_CATALOG_FILES")))
              #t))
          (replace 'configure
-           ;; samba uses a custom configuration script that runs waf.
+           ;; Samba uses a custom configuration script that runs WAF.
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out    (assoc-ref outputs "out"))
                     (libdir (string-append out "/lib")))
                (invoke "./configure"
+                       "--enable-selftest"
                        "--enable-fhs"
-                       ;; XXX: heimdal not packaged.
-                       "--bundled-libraries=com_err"
                        (string-append "--prefix=" out)
                        "--sysconfdir=/etc"
+                       "--localstatedir=/var"
                        ;; Install public and private libraries into
                        ;; a single directory to avoid RPATH issues.
                        (string-append "--libdir=" libdir)
                        (string-append "--with-privatelibdir=" libdir)))))
-         (add-before 'install 'disable-etc-samba-directory-creation
+         (add-before 'install 'disable-etc,var-samba-directories-setup
            (lambda _
              (substitute* "dynconfig/wscript"
-               (("bld\\.INSTALL_DIR\\(\"\\$\\{CONFIGDIR\\}\"\\)")
-                ""))
+               (("bld\\.INSTALL_DIR.*") ""))
              #t)))
-       ;; XXX: The test infrastructure attempts to set password with
-       ;; smbpasswd, which fails with "smbpasswd -L can only be used by root."
-       ;; So disable tests until there's a workaround.
+       ;; FIXME: The test suite seemingly hangs after failing to provision the
+       ;; test environment.
        #:tests? #f))
-    (inputs                                   ; TODO: Add missing dependencies
+    (inputs
      `(("acl" ,acl)
+       ("cmocka" ,cmocka)
        ("cups" ,cups)
-       ;; ("gamin" ,gamin)
+       ("gamin" ,gamin)
+       ("dbus", dbus)
        ("gpgme" ,gpgme)
        ("gnutls" ,gnutls)
+       ("heimdal" ,heimdal)
        ("jansson" ,jansson)
        ("libarchive" ,libarchive)
+       ("libtirpc" ,libtirpc)
        ("linux-pam" ,linux-pam)
        ("lmdb" ,lmdb)
        ("openldap" ,openldap)
@@ -256,11 +267,11 @@ external dependencies.")
        ("pkg-config" ,pkg-config)
        ("python-iso8601" ,python-iso8601)
        ("rpcsvc-proto" ,rpcsvc-proto)   ; for 'rpcgen'
-
        ;; For generating man pages.
        ("docbook-xml" ,docbook-xml-4.2)
        ("docbook-xsl" ,docbook-xsl)
-       ("xsltproc" ,libxslt)))
+       ("xsltproc" ,libxslt)
+       ("libxml2", libxml2)))           ;for XML_CATALOG_FILES
     (home-page "https://www.samba.org/")
     (synopsis
      "The standard Windows interoperability suite of programs for GNU and Unix")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index f787b5e0f8..b647b9ee2e 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -398,7 +398,7 @@ implementation techniques and as an expository tool.")
 (define-public racket
   (package
     (name "racket")
-    (version "7.8") ;; Note: Remember to also update racket-minimal!
+    (version "7.9")            ; note: remember to also update racket-minimal!
     (source (origin
               (method url-fetch)
               (uri (list (string-append "http://mirror.racket-lang.org/installers/"
@@ -408,7 +408,7 @@ implementation techniques and as an expository tool.")
                           version "/racket-" version "-src.tgz")))
               (sha256
                (base32
-                "19z3dayybcra277s4gk2mppalwawd93f2b16xyrb6d7rbbfz7j9j"))
+                "0gmp2ahmfd97nn9bwpfx9lznjmjkd042slnrrbdmyh59cqh98y2m"))
               (patches (search-patches
                         "racket-store-checksum-override.patch"))))
     (build-system gnu-build-system)
@@ -540,7 +540,7 @@ of libraries.")
                           version "/racket-minimal-" version "-src.tgz")))
               (sha256
                (base32
-                "0bbglf9vfacpm2hn3lskhvc8cpg6z088fbnzpqsn17z8qdk8yvb3"))
+                "0yc5zkpq1bavj64h67pllw6mfjhmdp65fgdpyqcaan3syy6b5cia"))
               (patches (search-patches
                         "racket-store-checksum-override.patch"))))
     (synopsis "Racket without bundled packages such as Dr. Racket")
@@ -815,14 +815,14 @@ linked with a SCM executable.")
 (define-public tinyscheme
   (package
     (name "tinyscheme")
-    (version "1.41")
+    (version "1.42")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/" name "/" name "/"
                                   name "-" version "/" name "-" version ".zip"))
               (sha256
                (base32
-                "0yqma4jrjgj95f3hf30h542x97n8ah234n19yklbqq0phfsa08wf"))))
+                "0rik3qnxqd8wjlazx8rw996pfzkjjg60v6hcbpcqzi7rgml8q4n8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm
index 6519ce7a7f..f699824a05 100644
--- a/gnu/packages/scribus.scm
+++ b/gnu/packages/scribus.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,16 +49,14 @@
 (define-public scribus
   (package
     (name "scribus")
-    (version "1.5.5")
+    (version "1.5.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/scribus/scribus-devel/"
                            version "/scribus-" version ".tar.xz"))
-       (patches (search-patches "scribus-1.5.5-poppler-0.86-build-fix.patch"))
        (sha256
-        (base32
-         "0w9zzsiaq3f7vpxybk01c9z2b4qqg67mzpyfb2gjchz8dhdb423r"))))
+        (base32 "1axp8ffnx3nh6k4s5mfa9gbx8d0yql2azgcampg41ylwafapc9fl"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ;no test target
@@ -99,7 +98,7 @@
        ("openssl" ,openssl)
        ("podofo" ,podofo)
        ("poppler" ,poppler)
-       ("python" ,python-2)             ;need Python library
+       ("python" ,python)               ; need Python library
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("zlib" ,zlib)))
diff --git a/gnu/packages/sdcc.scm b/gnu/packages/sdcc.scm
index 6d05470101..aad2cf9e62 100644
--- a/gnu/packages/sdcc.scm
+++ b/gnu/packages/sdcc.scm
@@ -18,6 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages sdcc)
+  #:use-module (gnu packages)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages flex)
@@ -39,7 +40,14 @@
                     "/" version "/sdcc-src-" version ".tar.bz2"))
               (sha256
                (base32
-                "13llvx0j3v5qa7qd4fh7nix4j3alpd3ccprxvx163c4q8q4lfkc5"))))
+                "13llvx0j3v5qa7qd4fh7nix4j3alpd3ccprxvx163c4q8q4lfkc5"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Remove non-free source files
+                  (delete-file-recursively "device/non-free")
+                  #t))
+              (patches (search-patches "sdcc-disable-non-free-code.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 96e23518ec..06e5620cd3 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2020 Raphaël Mélotte <raphael.melotte@mind.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@
   #:use-module (gnu packages dns)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
@@ -102,7 +104,7 @@ readers and is needed to communicate with such devices through the
 (define-public eid-mw
   (package
     (name "eid-mw")
-    (version "4.4.27")
+    (version "5.0.8")
     (source
      (origin
        (method git-fetch)
@@ -111,13 +113,15 @@ readers and is needed to communicate with such devices through the
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "17lw8iwp7h5cs3db80sysr84ffi333cf2vrhncs9l6hy6glfl2v1"))))
+        (base32 "1ckini00iz9w96n9hpkx6w2ivpfkd4yyxyhnmsl9n0k8x4j6jg5a"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
+       ("autoconf-archive" ,autoconf-archive)
        ("automake" ,automake)
        ("gettext" ,gettext-minimal)
        ("libtool" ,libtool)
+       ("libassuan" ,libassuan)
        ("pkg-config" ,pkg-config)
        ("perl" ,perl)))
     (inputs
@@ -132,14 +136,29 @@ readers and is needed to communicate with such devices through the
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
+         (replace 'bootstrap
            (lambda _
              ;; configure.ac relies on ‘git --describe’ to get the version.
              ;; Patch it to just return the real version number directly.
              (substitute* "scripts/build-aux/genver.sh"
                (("/bin/sh") (which "sh"))
                (("^(GITDESC=).*" _ match) (string-append match ,version "\n")))
-             (invoke "sh" "./bootstrap.sh"))))))
+             (invoke "sh" "./bootstrap.sh")))
+         (add-after 'unpack 'make-reproducible
+           (lambda _
+             (substitute* "scripts/mac/create-vers.sh"
+               (("NOW=.*")
+                "NOW=1970-01-01\n"))
+             #t))
+         ;; Remove failing test that was removed upstream after version 5.0.8.
+         ;; See: https://github.com/Fedict/eid-mw/commit/3d1187b1b61118b9ae97607903d3d2fc0bad7518
+         (add-before 'check 'remove-failing-test
+           (lambda _
+             (substitute* "tests/unit/Makefile.am"
+               (("sign_state ordering cardcom_common")
+                "sign_state ordering #cardcom_common"))
+             #t))
+         )))
     (synopsis "Belgian eID Middleware")
     (description "The Belgian eID Middleware is required to authenticate with
 online services using the Belgian electronic identity card.")
@@ -256,7 +275,7 @@ website for more information about Yubico and the YubiKey.")
 (define-public opensc
   (package
     (name "opensc")
-    (version "0.20.0")
+    (version "0.21.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -264,7 +283,7 @@ website for more information about Yubico and the YubiKey.")
                     version "/opensc-" version ".tar.gz"))
               (sha256
                (base32
-                "0qs8pabkrpj1z52bkdsk59s2z6q5m0hfh9d5j1f68qs4lksb9x5v"))))
+                "0pijycjwpll9zn83dazgsh8n9ywq0z1ragjsd1sqv3abrcfvpyrb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 9e400eb27e..5b3ae21e0d 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -513,13 +513,13 @@ ksh, and tcsh.")
 (define-public xonsh
   (package
     (name "xonsh")
-    (version "0.9.23")
+    (version "0.9.24")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "xonsh" version))
         (sha256
-          (base32 "165lx37kibsm56srg9rj7s950b0p7g4g8qhs2iikbcyinp303g35"))
+          (base32 "00nwbagsl8qrs7m40lb0yi5dhvippj387bpnjg6w7r9cvfbj2h7m"))
         (modules '((guix build utils)))
         (snippet
          `(begin
@@ -814,14 +814,14 @@ Shell (pdksh).")
 (define-public oil
   (package
     (name "oil")
-    (version "0.8.2")
+    (version "0.8.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.oilshell.org/download/oil-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1m49darrs38x60zqi3sy1mh4a47qvwcyf7djrkzqwzwxsczxybgr"))))
+        (base32 "02pw7x76jzfmk8fqs1k0pz7vwnkal458p93j4if0w0hg36xyx1j2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:strip-binaries? #f             ; strip breaks the binary
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index b1db32a3dc..181a640475 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -278,7 +278,7 @@ below the current cursor position, scrolling the screen if necessary.")
 (define-public hstr
   (package
     (name "hstr")
-    (version "2.2")
+    (version "2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -287,7 +287,7 @@ below the current cursor position, scrolling the screen if necessary.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "07fkilqlkpygvf9kvxyvl58g3lfq0bwwdp3wczy4hk8qlbhmgihn"))))
+                "1chmfdi1dwg3sarzd01nqa82g65q7wdr6hrnj96l75vikwsg986y"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index a95160c1c1..45efd5c472 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -684,17 +684,13 @@ user interface to the FEniCS core components and external libraries.")
              (with-directory-excursion "test"
                ;; Note: The test test_snes_set_from_options() in the file
                ;; unit/nls/test_PETScSNES_solver.py fails and is ignored.
-               (and (invoke "py.test" "unit" "--ignore"
-                            "unit/nls/test_PETScSNES_solver.py")
-                    (invoke "mpirun" "-np" "3" "python" "-B" "-m"
-                            "pytest" "unit" "--ignore"
-                            "unit/nls/test_PETScSNES_solver.py")))
-             (with-directory-excursion "demo"
-               ;; Check demos.
-               (invoke "python" "generate-demo-files.py")
-               (and (invoke "python" "-m" "pytest" "-v" "test.py")
-                    (invoke "python" "-m" "pytest" "-v" "test.py"
-                            "--mpiexec=mpiexec" "--num-proc=3")))
+               ;; Limit the number of jobs to 3 as 500 MiB of memory is used
+               ;; per process.
+               (invoke "mpirun" "-np" (number->string
+                                       (min 3 (parallel-job-count)))
+                       "python" "-B" "-m"
+                       "pytest" "unit" "--ignore"
+                       "unit/nls/test_PETScSNES_solver.py"))
              #t))
          (add-after 'install 'install-demo-files
            (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index 0e259d71f3..1fd7d91eb9 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -295,7 +295,7 @@ systems and other constrained environments, but they work everywhere.")))
 (define-public s6-linux-init
   (package
    (name "s6-linux-init")
-   (version "1.0.4.2")
+   (version "1.0.5.1")
    (source
     (origin
      (method url-fetch)
@@ -303,7 +303,7 @@ systems and other constrained environments, but they work everywhere.")))
            "https://skarnet.org/software/s6-linux-init/s6-linux-init-"
            version ".tar.gz"))
      (sha256
-      (base32 "0rp4k78555r38ir57a8w9qlxss4x487jqmhpn40ankpidwjs04gm"))))
+      (base32 "1gkbjldf4f7i3vmv251f9hw7ma09nh8zkwjmqi2gplpkf7z3i34p"))))
     (build-system gnu-build-system)
     (inputs
      `(("execline" ,execline)
@@ -312,6 +312,7 @@ systems and other constrained environments, but they work everywhere.")))
     (arguments
      '(#:configure-flags
        (list
+        "--disable-static"
         (string-append "--with-lib="
                        (assoc-ref %build-inputs "skalibs")
                        "/lib/skalibs")
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index 6bfed916de..e5d764ae28 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -20,6 +20,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix licenses)
+  #:use-module ((guix utils) #:select (version-major+minor))
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages guile-xyz)
@@ -32,30 +33,35 @@
 (define-public skribilo
   (package
     (name "skribilo")
-    (version "0.9.4")
+    (version "0.9.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/skribilo/skribilo-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "06ywnfjfa9sxrzdszb5sryzg266380g519cm64kq62sskzl7zmnf"))))
+               "02dzy2imqgfmwda4d1r51205si4c0r4fp2gf22sb0kv3qhhnm0h0"))))
     (build-system gnu-build-system)
     (arguments
      ;; Make the modules available under the usual location.
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'pre-configure
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Make sure the 'skribilo' command gets to see
              ;; Guile-Reader, even if Guile-Reader is not in the search
              ;; path.
-             (let ((reader (assoc-ref inputs "guile-reader")))
+             (let ((reader (assoc-ref inputs "guile-reader"))
+                   (effective ,(version-major+minor
+                                (package-version
+                                 (car (assoc-ref (package-inputs this-package)
+                                                 "guile"))))))
                (substitute* "src/skribilo.in"
                  (("^exec (.*) -c" _ things)
                   (string-append "exec " things
-                                 " -L " reader "/share/guile/site/2.2"
-                                 " -C " reader "/lib/guile/2.2/site-ccache"
+                                 " -L " reader "/share/guile/site/" effective
+                                 " -C " reader
+                                 "/lib/guile/" effective "/site-ccache"
                                  " -c"))))
              #t)))
 
@@ -63,7 +69,7 @@
 
     (native-inputs `(("pkg-config" ,pkg-config)))
 
-    (inputs `(("guile" ,guile-2.2)
+    (inputs `(("guile" ,guile-3.0)
               ("imagemagick" ,imagemagick)
               ("ghostscript" ,ghostscript)        ; for 'convert'
               ("ploticus" ,ploticus)
@@ -71,8 +77,8 @@
 
     ;; The 'skribilo' command needs them, and for people using Skribilo as a
     ;; library, these inputs are needed as well.
-    (propagated-inputs `(("guile-reader" ,guile2.2-reader)
-                         ("guile-lib" ,guile2.2-lib)))
+    (propagated-inputs `(("guile-reader" ,guile-reader)
+                         ("guile-lib" ,guile-lib)))
 
     (home-page "https://www.nongnu.org/skribilo/")
     (synopsis "Document production tool written in Guile Scheme")
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 5ba9594135..993abfa437 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -48,14 +48,14 @@
 (define-public python-sphinx
   (package
     (name "python-sphinx")
-    (version "3.1.2")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Sphinx" version))
        (sha256
         (base32
-         "1zd8l4dh0v4p8m7s51xr001k09cq2023dd0953ygw7xa76dypnmr"))))
+         "1s70hxhddzf656kmj01lws4cbywgsinbg8750r9ilf7s2sdns79j"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -511,14 +511,14 @@ and several other projects.")
 (define-public python-breathe
   (package
     (name "python-breathe")
-    (version "4.13.1")
+    (version "4.22.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "breathe" version))
        (sha256
         (base32
-         "1aw749n2ry27434qd7gr99dvsrs3x3chyi9aywmhjj1g4m2j6xf6"))))
+         "0snk538xv60z4vfhl3f7v5g658za7257hddkg07cknkn33k6cjvf"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-docutils" ,python-docutils)
@@ -533,14 +533,13 @@ to be able to read and render the Doxygen xml output.")
 (define-public python-sphinx-intl
   (package
     (name "python-sphinx-intl")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "sphinx-intl" version))
        (sha256
-        (base32
-         "0zbf1bh23b3kza8bnjykmv2k21xmmr4gamhi3lnicnr6ypnrphr5"))))
+        (base32 "1d1q0sanjp4nkfvhsxi75zf3xjyyi8nzxvl3v7l0jy9ld70nwnmj"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-sphinx" ,python-sphinx)
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index 8156da5dcd..445c846422 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -367,6 +367,7 @@ share smart cards from client system to local or remote virtual machines.")
     (build-system gnu-build-system)
     (inputs
       `(("gtk+" ,gtk+)
+        ("gtk-vnc" ,gtk-vnc)
         ("libcap" ,libcap)
         ("libxml2" ,libxml2)
         ("spice-gtk" ,spice-gtk)))
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index ca99235a01..7b363e6d2d 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -189,7 +189,8 @@ a server that supports the SSH-2 protocol.")
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
                                  "openssh-" version ".tar.gz"))
-             (patches (search-patches "openssh-hurd.patch"))
+             (patches (search-patches "openssh-hurd.patch"
+                                      "openssh-fix-ssh-copy-id.patch"))
              (sha256
               (base32
                "091b3pxdlj47scxx6kkf4agkx8c8sdacdxx8m1dw1cby80pd40as"))))
@@ -487,40 +488,10 @@ of user keystrokes.  It's a replacement for SSH that's more robust and
 responsive, especially over Wi-Fi, cellular, and long-distance links.")
     (license license:gpl3+)))
 
-(define-public et
-  (package
-    (name "et")
-    (version "3.1.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/MisterTea/EternalTCP")
-             (commit (string-append "et-v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1m5caxckn2ihwp9s2pbyh5amxlpwr7yc54q8s0kb10fr52w2vfnm"))))
-    (build-system cmake-build-system)
-    (arguments `(#:tests? #f))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs `(("glog" ,glog)
-              ("gflags" ,gflags)
-              ("libsodium" ,libsodium)
-              ("protobuf" ,protobuf)))
-    (synopsis "Remote shell that automatically reconnects")
-    (description
-     "Eternal Terminal (ET) is a remote shell that automatically reconnects
-without interrupting the session.  Unlike SSH sessions, ET sessions will
-survive even network outages and IP changes.  ET uses a custom protocol over
-TCP, not the SSH protocol.")
-    (home-page "https://eternalterminal.dev/")
-    (license license:asl2.0)))
-
 (define-public dropbear
   (package
     (name "dropbear")
-    (version "2020.80")
+    (version "2020.81")
     (source
      (origin
        (method url-fetch)
@@ -528,7 +499,7 @@ TCP, not the SSH protocol.")
              "https://matt.ucc.asn.au/dropbear/releases/"
              "dropbear-" version ".tar.bz2"))
        (sha256
-        (base32 "0jbrbpdzyv11x5rkljdimzq9p6a7da5siw9k405ibnpjj4dr89yr"))))
+        (base32 "0fy5ma4cfc2pk25mcccc67b2mf1rnb2c06ilb7ddnxbpnc85s8s8"))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f))  ; there is no "make check" or anything similar
     ;; TODO: Investigate unbundling libtommath and libtomcrypt or at least
@@ -793,6 +764,45 @@ dynamically loadable modules for extended functionality such as new remote
 shell services and remote host selection.")
     (license license:gpl2+)))
 
+(define-public python-asyncssh
+  (package
+    (name "python-asyncssh")
+    (version "2.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "asyncssh" version))
+       (sha256
+        (base32
+         "0pi6npmsgx7l9r1qrfvg8mxx3i23ipff492xz4yhrw13f56a7ga4"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-gssapi" ,python-gssapi)
+       ("python-bcrypt" ,python-bcrypt)))
+    (native-inputs
+     `(("openssh" ,openssh)
+       ("openssl" ,openssl)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-tests
+           (lambda* _
+             (substitute* "tests/test_agent.py"
+               ;; TODO Test fails for unknown reason
+               (("(.+)async def test_confirm" all indent)
+                (string-append indent "@unittest.skip('disabled by guix')\n"
+                               indent "async def test_confirm")))
+             #t)))))
+    (home-page "https://asyncssh.readthedocs.io/")
+    (synopsis "Asynchronous SSHv2 client and server library for Python")
+    (description
+     "AsyncSSH is a Python package which provides an asynchronous client and
+server implementation of the SSHv2 protocol on top of the Python 3.6+ asyncio
+framework.")
+    (license license:epl2.0)))
+
 (define-public clustershell
   (package
     (name "clustershell")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 71ff921c62..314a11e429 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -184,7 +184,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
 (define r-with-tests
   (package
     (name "r-with-tests")
-    (version "4.0.2")
+    (version "4.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -192,7 +192,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0xdy3dy2bzdiba8z94hjykyra8si8a5q15s0bri7c26scjrymg6k"))))
+                "03cypg2qf7v9mq9mr9alz9w5y9m5kdgwbc97bp26pyymg253m609"))))
     (build-system gnu-build-system)
     (arguments
      `(#:disallowed-references (,tzdata-for-tests)
@@ -269,6 +269,15 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
                (substitute* "tools/help2man.pl"
                  (("my \\$date = strftime \"%B %Y\", localtime" line)
                   (string-append line " 1"))))
+
+             ;; The "References" section of this file when converted to
+             ;; package.rds is sometimes stored with a newline, sometimes with
+             ;; a space.  We avoid this problem by adding characters to break
+             ;; up the series of line break and spaces that is suspected to be
+             ;; the culprit.
+             (substitute* "src/library/methods/DESCRIPTION.in"
+               (("  ``Software")
+                "  -- ``Software"))
              #t))
          (add-before 'build 'set-locales
            (lambda _
@@ -533,14 +542,14 @@ for reading and writing some dBase files.")
 (define-public r-kernsmooth
   (package
     (name "r-kernsmooth")
-    (version "2.23-17")
+    (version "2.23-18")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "KernSmooth" version))
        (sha256
         (base32
-         "11g6b0q67vasxag6v9m4px33qqxpmnx47c73yv1dninv2pz76g9b"))))
+         "14640ddvxmczd5xjg1xsd51gll2glfg946vks8wmac6jb8680d43"))))
     (properties `((upstream-name . "KernSmooth")))
     (build-system r-build-system)
     (native-inputs
@@ -599,13 +608,13 @@ and operations on them using LAPACK and SuiteSparse.")
 (define-public r-nlme
   (package
     (name "r-nlme")
-    (version "3.1-149")
+    (version "3.1-150")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nlme" version))
        (sha256
-        (base32 "16n39v36hdp5vy3s3xqgs6ai0vgzx6j2py7ghpljdahndbqn6qn9"))))
+        (base32 "18qmbzrmrham8hbdlzsca7w46c5iqighx1ymzggll5s86c4s7kvr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -815,13 +824,13 @@ effects of different types of color-blindness.")
 (define-public r-digest
   (package
     (name "r-digest")
-    (version "0.6.25")
+    (version "0.6.27")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "digest" version))
        (sha256
-        (base32 "1r9dkq0kxkps54gkmgcdngsd068p054va2vhnqhs5jmwp2vsvk0m"))))
+        (base32 "0gr503pinailfglpfbzxprqw7w1jla8jr9nl856a4zch498zg1gl"))))
     (build-system r-build-system)
     ;; Vignettes require r-knitr, which requires r-digest, so we have to
     ;; disable them and the tests.
@@ -863,13 +872,13 @@ non-estimable cases correctly.")
 (define-public r-labeling
   (package
     (name "r-labeling")
-    (version "0.3")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "labeling" version))
        (sha256
-        (base32 "13sk7zrrrzry6ky1bp8mmnzcl9jhvkig8j4id9nny7z993mnk00d"))))
+        (base32 "0rfikd9gy70b8qz87q9axcwv8nmn9mbxfdwypxi0sghpfs9df8p0"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/labeling")
     (synopsis "Axis labeling algorithms")
@@ -1600,13 +1609,13 @@ flexible and easy to set up.")
 (define-public r-r6
   (package
     (name "r-r6")
-    (version "2.4.1")
+    (version "2.5.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "R6" version))
               (sha256
                (base32
-                "0gma5z41mx02ka9h96xdyf3p6i1rx0izczrzj26c4mbnh9jgvc16"))))
+                "00ifi2kwa7kn67xf0z1w6jfdicjczygbyi5mhfw2qlzc4sbazhdf"))))
     (build-system r-build-system)
     (home-page "https://github.com/wch/R6/")
     (synopsis "Classes with reference semantics in R")
@@ -1622,13 +1631,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.4.7")
+    (version "0.4.8")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "0f4rhnhyhgrv874l0yzm80ij6vcqdykfd7bzmnqs0wbgyhkxk8vq"))))
+                "0z8hnwbzpwal66svwp04csjm49vdb9rmwzvn8hyqn93qy6pd9015"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1640,14 +1649,14 @@ like tidy evaluation.")
 (define-public r-tibble
   (package
     (name "r-tibble")
-    (version "3.0.3")
+    (version "3.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tibble" version))
        (sha256
         (base32
-         "0f4yi87w6509lnaz1lhk9s8nm3bzx21ij3273s0zx7vpbp0qlxxz"))))
+         "189yyl27mnswk1z51xw6gj3lyxgy6m332jq8xyvwskff57w2w692"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cli" ,r-cli)
@@ -1765,14 +1774,14 @@ transformations.")
 (define-public r-formula
   (package
     (name "r-formula")
-    (version "1.2-3")
+    (version "1.2-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Formula" version))
        (sha256
         (base32
-         "0wiqh8rr9d5ciy80wj8f5fnmiiw0ywanvvnhkwd622dx42dk848l"))))
+         "1bsw282i5m8rlirbhz7hqvf25zbxschk7yrp152whbzdnmry6w6b"))))
     (properties `((upstream-name . "Formula")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/Formula")
@@ -1826,13 +1835,13 @@ times.")
 (define-public r-data-table
   (package
     (name "r-data-table")
-    (version "1.13.0")
+    (version "1.13.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "data.table" version))
               (sha256
                (base32
-                "0wihpg1syjxzsij2fmhwh30vvf2cghw2b2qi79w36qwil2s8w2gn"))))
+                "011qsjfybvlpy2sjn9b6hfkcgwx2xrnpxlaqq3y3baps8n1lgnr7"))))
     (build-system r-build-system)
     (inputs
      `(("zlib" ,zlib)))
@@ -1986,18 +1995,19 @@ chain.")
 (define-public r-ade4
   (package
     (name "r-ade4")
-    (version "1.7-15")
+    (version "1.7-16")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "ade4" version))
         (sha256
           (base32
-            "1xpxznlqm8wb4d5z2dcrl0wi3jjciq2hr5rcx2b5aaipiiyzm1ij"))))
+            "142m70im8yd4q01q7z02y3ia0f66yh4ikdznv0ps6c7yyigs5mwv"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
        ("r-pixmap" ,r-pixmap)
+       ("r-progress" ,r-progress)
        ("r-sp" ,r-sp)))
     (home-page "http://pbil.univ-lyon1.fr/ADE-4")
     (synopsis "Multivariate data analysis and graphical display")
@@ -2603,13 +2613,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.900.3.0")
+    (version "0.10.1.0.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "0x8jm6cvfvp1kyckwwqxyy5hfkr8na28fih3k0lhi55wry3ml30q"))))
+                "0m0f4viw3r6zfk85b7v7h5dqydhdkjdacpl0bqxkmcndlzq8jnsb"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2695,13 +2705,13 @@ certain criterion, e.g., it contains a certain regular file.")
 (define-public r-rmarkdown
   (package
     (name "r-rmarkdown")
-    (version "2.4")
+    (version "2.5")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "rmarkdown" version))
         (sha256
-          (base32 "1y2156w1abik8df8vl376ilv8s1jg8i0x2w4n4dwrnm3xxgp5kf0"))))
+          (base32 "0vmd1kykd4p1nwqbvra34sld5brac0wxb1zmav4wxj05shy67bd5"))))
     (properties `((upstream-name . "rmarkdown")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2709,7 +2719,6 @@ certain criterion, e.g., it contains a certain regular file.")
        ("r-htmltools" ,r-htmltools)
        ("r-jsonlite" ,r-jsonlite)
        ("r-knitr" ,r-knitr)
-       ("r-mime" ,r-mime)
        ("r-stringr" ,r-stringr)
        ("r-tinytex" ,r-tinytex)
        ("r-xfun" ,r-xfun)
@@ -3007,14 +3016,14 @@ statements.")
 (define-public r-segmented
   (package
     (name "r-segmented")
-    (version "1.2-0")
+    (version "1.3-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "segmented" version))
        (sha256
         (base32
-         "0r83p36l6m5sy4lxfjbfajn4gcqb0wv9zh7arny02s6c7fb4756y"))))
+         "1a9nnlf8j8j4ik34z19x187s8ki7pv1aayr344jrpn3h6m8fk3x5"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/segmented")
     (synopsis "Regression models with breakpoints estimation")
@@ -3071,14 +3080,14 @@ standard R subsetting and Kronecker products.")
 (define-public r-iterators
   (package
     (name "r-iterators")
-    (version "1.0.12")
+    (version "1.0.13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "iterators" version))
        (sha256
         (base32
-         "0jwzxaa3jm1xzgfv5pn0xqkk7rhm0xwvgn85w7xaw8xx1vb33gwn"))))
+         "190i1y2493v5c9z8978rb3idlwsjymy67k1assa9znljqbj313kp"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/iterators")
     (synopsis "Iterator construct for R")
@@ -3091,14 +3100,14 @@ data.")
 (define-public r-foreach
   (package
     (name "r-foreach")
-    (version "1.5.0")
+    (version "1.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "foreach" version))
        (sha256
         (base32
-         "0584nv49x8d8m1cak5drb54sxs3y594gd521kjsdwk4c849sgy8s"))))
+         "1qb83b1jvpmk8d6kfibkm5q2hiki0x5gipy758mwa62n56gdcnpv"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-codetools" ,r-codetools)
@@ -3121,14 +3130,14 @@ parallel.")
 (define-public r-doparallel
   (package
     (name "r-doparallel")
-    (version "1.0.15")
+    (version "1.0.16")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doParallel" version))
        (sha256
         (base32
-         "0vnqbha3gig3awbfvsfx3ni5jir398md1n7xmsb8jihnjsk7xbbi"))))
+         "1cjf0mxrxgls5pl7aj22fv9j488craib1wkc9np4f3gkckwjdfzi"))))
     (properties `((upstream-name . "doParallel")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3144,14 +3153,14 @@ using the parallel package.")
 (define-public r-domc
   (package
     (name "r-domc")
-    (version "1.3.6")
+    (version "1.3.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doMC" version))
        (sha256
         (base32
-         "1cn9gxavhvjswip8pwvkpi7q6wpzdllcsdjabga8akf55nggqxr9"))))
+         "0kdmfhp5m1wisjbfyl9d040jrmjmhcgjb0vdi536g2i9vixb5yny"))))
     (properties `((upstream-name . "doMC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3167,13 +3176,13 @@ using the multicore functionality of the parallel package.")
 (define-public r-dt
   (package
     (name "r-dt")
-    (version "0.15")
+    (version "0.16")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "DT" version))
               (sha256
                (base32
-                "1wc2aiqkn01i571h29847yaq7vb624bkf44axp4ygpn0r85hdq7k"))))
+                "0in4d34nxb4pk2jygj0a21cqf0k0m4dhm4rjv68bnkp5kmmz6kbk"))))
     (properties
      `((upstream-name . "DT")))
     (build-system r-build-system)
@@ -3275,23 +3284,20 @@ path-wise fashion.")
 (define-public r-pkgmaker
   (package
     (name "r-pkgmaker")
-    (version "0.31.1")
+    (version "0.32.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pkgmaker" version))
        (sha256
         (base32
-         "0r0ga20dy25v9y5gjbds4y6kaa5a7qknh503qdkzllcpzbibh0hp"))))
+         "14ggsd24n5g5rvn0wl4w90ipxzmywqikh28llj89q6kpxwnv4iff"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
-       ("r-bibtex" ,r-bibtex)
        ("r-codetools" ,r-codetools)
        ("r-digest" ,r-digest)
-       ("r-magrittr" ,r-magrittr)
        ("r-registry" ,r-registry)
-       ("r-stringi" ,r-stringi)
        ("r-stringr" ,r-stringr)
        ("r-withr" ,r-withr)
        ("r-xtable" ,r-xtable)))
@@ -3373,14 +3379,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
 (define-public r-e1071
   (package
     (name "r-e1071")
-    (version "1.7-3")
+    (version "1.7-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "e1071" version))
        (sha256
         (base32
-         "0pf2pjb590z0jikgv1037xcp7dq06mg3dzmyffjw6gk7dd9blbdv"))))
+         "02935xcscjhb0jmnvh44hxlpjcgladrcr0gpz1jxq07m0qdqgaz6"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)))
@@ -4275,22 +4281,24 @@ mechanism.")
 (define-public r-ztable
   (package
     (name "r-ztable")
-    (version "0.2.0")
+    (version "0.2.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ztable" version))
               (sha256
                (base32
-                "0g7khk5ifsdh9p31wlwh2l5mn1hzxzpv6qcn1wh34vsfjdmijjwy"))))
+                "0wxcdb7yp2r6w5iznz1k49npp5sn4jiybfcj30s3198hkcnv0r8y"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-flextable" ,r-flextable)
        ("r-magrittr" ,r-magrittr)
-       ("r-moonbook" ,r-moonbook)
        ("r-officer" ,r-officer)
        ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-rstudioapi" ,r-rstudioapi)
        ("r-scales" ,r-scales)
        ("r-stringr" ,r-stringr)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://cran.r-project.org/web/packages/ztable")
     (synopsis "Zebra-striped tables in LaTeX and HTML formats for R")
     (description
@@ -4411,13 +4419,13 @@ Wall Street Journal, among others.  This package also provides
 (define-public r-statmod
   (package
     (name "r-statmod")
-    (version "1.4.34")
+    (version "1.4.35")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "statmod" version))
               (sha256
                (base32
-                "0yklg64aw5y8kfq5piafnrj1v3jv563iwzzl75g3kllrw23c508s"))))
+                "1zpqnfslq5gi6hvqjqnsn5kf2m986s1yb6kvyjd881n3h67l4pny"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/statmod")
     (native-inputs
@@ -4666,14 +4674,14 @@ to change in the future.")
 (define-public r-flexmix
   (package
     (name "r-flexmix")
-    (version "2.3-15")
+    (version "2.3-17")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flexmix" version))
        (sha256
         (base32
-         "0hrz2axp2c9548b1r0bmrl57219nn030qndb83a8garkzq5lqi5s"))))
+         "0jangf89174p0idh9afbicfiln2sz8jxc3bjc6n0j9036dw9n09n"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)
@@ -4943,13 +4951,13 @@ groupings.")
 (define-public r-vgam
   (package
     (name "r-vgam")
-    (version "1.1-3")
+    (version "1.1-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "VGAM" version))
        (sha256
-        (base32 "1hwlrdx3nhdp83pvy1h23i16vbbhi4kizdhr58c8nvg7kqdzb7qc"))))
+        (base32 "1iwrpyhz3khgw904zxz3pn7d61zvkd5m22gimzk57f8jjplxh1zm"))))
     (properties `((upstream-name . "VGAM")))
     (build-system r-build-system)
     (native-inputs
@@ -5080,13 +5088,13 @@ using modular prediction and response module classes.")
 (define-public r-quantreg
   (package
     (name "r-quantreg")
-    (version "5.73")
+    (version "5.75")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantreg" version))
        (sha256
-        (base32 "0mjwwj3c7cfnprlh90ld0f1lll0mrqbx8mpnbfr7bvzg8h6072y4"))))
+        (base32 "05mb1qmwah5sdgg2z7m36lqkh479phvb1cx4sjnv1ykvmi9alxv5"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -5136,14 +5144,14 @@ algorithms.")
 (define-public r-lme4
   (package
     (name "r-lme4")
-    (version "1.1-23")
+    (version "1.1-25")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lme4" version))
        (sha256
         (base32
-         "0qh29kqli0l3naylgb6jha6jllx4nwryr3hv9yk37blgyyql5mcr"))))
+         "0vvjac7hnn5lfbyl92zi8qxyc8kkjcwsg94z0p2s2q311in4gnp4"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-boot" ,r-boot)
diff --git a/gnu/packages/stb.scm b/gnu/packages/stb.scm
index 9cb2ae10b6..094ece536d 100644
--- a/gnu/packages/stb.scm
+++ b/gnu/packages/stb.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,8 +27,8 @@
 (define stb
   ;; stb is a collection of libraries developed within the same repository.
   ;; When updating this, remember to change versions below as appropriate.
-  (let ((commit "2c2908f50515dcd939f24be261c3ccbcd277bb49")
-        (revision "1"))
+  (let ((commit "b42009b3b9d4ca35bc703f5310eedc74f584be58")
+        (revision "2"))
     (package
       (name "stb")
       (home-page "https://github.com/nothings/stb")
@@ -39,7 +40,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1z753rscqc4clp0rd57bw68i60kz694y1z52bwv6slzmkgds1cki"))
+                  "1gmcjhmj62mfdscrsg2hv4j4j9v447y8zj3rbrm7mqn94cx73z1i"))
                 (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -92,23 +93,29 @@ the C programming language.")
 ;; converted to macros as outlined in <https://bugs.gnu.org/32155>.
 (define-public stb-image
   (make-stb-header-package
-   "stb-image" "2.22"
+   "stb-image" "2.26"
    "stb-image is a small and self-contained library for image loading or
 decoding from file or memory.  A variety of formats are supported."))
 
 (define-public stb-image-write
   (make-stb-header-package
-   "stb-image-write" "1.13"
+   "stb-image-write" "1.15"
    "stb-image-write is a small library for writing image files to the
 C@tie{}@code{stdio} interface."))
 
+(define-public stb-rect-pack
+  (make-stb-header-package
+   "stb-rect-pack" "1.00"
+   "stb-rect-pack is a small rectangle packing library useful for, e.g., packing
+rectangular textures into an atlas.  It does not do rotation."))
+
 (define-public stb-sprintf
   (make-stb-header-package
-   "stb-sprintf" "1.06"
+   "stb-sprintf" "1.09"
    "stb-sprintf implements fast @code{sprintf}, @code{snprintf} for C/C++."))
 
 (define-public stb-truetype
   (make-stb-header-package
-   "stb-truetype" "1.22"
+   "stb-truetype" "1.24"
    "stb-truetype is a library for parsing, decoding, and rasterizing
 characters from TrueType fonts."))
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 9b41bb240b..88350ac81b 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -55,14 +55,14 @@
 (define-public ceph
   (package
     (name "ceph")
-    (version "14.2.11")
+    (version "14.2.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.ceph.com/tarballs/ceph-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "02mbinm8rk16cwm0x4winmd4488xznkzkyzycxkwlib26yd2xsnz"))
+                "1rq4pp7j8x0f4csspd9csllz6h3phiqfh5vlvsqsj60agyhidinc"))
               (patches
                (search-patches "ceph-disable-cpu-optimizations.patch"))
               (modules '((guix build utils)))
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 434e236054..7e479a0d39 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -195,7 +195,7 @@ Protocol.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/syncthing/syncthing-gtk.git")
+                    (url "https://github.com/syncthing/syncthing-gtk")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 6ee1b2c250..48e30abfc3 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -515,14 +515,14 @@ address of one of the participants.")
 (define-public mumble
   (package
     (name "mumble")
-    (version "1.3.2")
+    (version "1.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://mumble.info/snapshot/stable/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1q91vp3bp7xn67g9kgp1pfgxjj1hks3w60vdxcfm3373wy5db5lz"))
+                "101gw1334zmqsbjrba5dq1v4p2nxcs37g2yrzvkcra6s9ri4fw3j"))
               (modules '((guix build utils)))
               (snippet
                `(begin
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index e596c1b81f..f6ad90024b 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -16,10 +16,11 @@
 ;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1044,7 +1045,7 @@ comfortably in a pager or editor.
 (define-public eternalterminal
   (package
     (name "eternalterminal")
-    (version "6.0.7")
+    (version "6.0.13")
     (source
       (origin
         (method git-fetch)
@@ -1053,7 +1054,7 @@ comfortably in a pager or editor.
                (commit (string-append "et-v" version))))
         (file-name (git-file-name name version))
        (sha256
-        (base32 "03pdspggqxkmz95qb96pig5x0xw18hy9a7ivszydr32ry6kxxx1h"))))
+        (base32 "0sb1hypg2276y8c2a5vivrkcxp70swddvhnd9h273if3kv6j879r"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags '("-DBUILD_TEST=ON")
@@ -1081,6 +1082,9 @@ while also supporting native scrolling and @command{tmux} control mode
 (@code{tmux -CC}).")
     (license license:asl2.0)))
 
+(define-public et
+  (deprecated-package "et" eternalterminal))
+
 (define-public wterm
   (package
     (name "wterm")
@@ -1220,18 +1224,52 @@ made by suckless.")
         ("rust-winapi" ,rust-winapi-0.3))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'configure 'patch-glutin-libgl-path
+         (add-after 'configure 'add-absolute-library-references
            (lambda* (#:key inputs cargo-inputs vendor-dir #:allow-other-keys)
              (let* ((glutin-name ,(package-name rust-glutin-0.22))
                     (glutin-version ,(package-version rust-glutin-0.22))
-                    (src-api
-                      (string-append
-                        glutin-name "-" glutin-version ".tar.gz/src/api/"))
+                    (glutin-api (string-append glutin-name "-" glutin-version
+                                               ".tar.gz/src/api/"))
+                    (smithay-client-toolkit-name
+                     ,(package-name rust-smithay-client-toolkit-0.6))
+                    (smithay-client-toolkit-version
+                     ,(package-version rust-smithay-client-toolkit-0.6))
+                    (smithay-client-toolkit-src
+                     (string-append smithay-client-toolkit-name "-"
+                                    smithay-client-toolkit-version ".tar.gz/src"))
+                    (wayland-sys-name ,(package-name rust-wayland-sys-0.23))
+                    (wayland-sys-version ,(package-version rust-wayland-sys-0.23))
+                    (wayland-sys-src (string-append wayland-sys-name "-"
+                                                    wayland-sys-version
+                                                    ".tar.gz/src"))
+                    (libxkbcommon (assoc-ref inputs "libxkbcommon"))
+                    (libwayland (assoc-ref inputs "wayland"))
                     (mesa (assoc-ref inputs "mesa")))
-              (substitute* (string-append vendor-dir "/" src-api "glx/mod.rs")
+              (substitute* (string-append vendor-dir "/" glutin-api "glx/mod.rs")
                 (("libGL.so") (string-append mesa "/lib/libGL.so")))
-              (substitute* (string-append vendor-dir "/" src-api "egl/mod.rs")
+              (substitute* (string-append vendor-dir "/" glutin-api "egl/mod.rs")
                 (("libEGL.so") (string-append mesa "/lib/libEGL.so")))
+              (substitute* (string-append vendor-dir "/"
+                                          smithay-client-toolkit-src
+                                          "/keyboard/ffi.rs")
+                (("libxkbcommon\\.so")
+                 (string-append libxkbcommon "/lib/libxkbcommon.so")))
+              (substitute* (string-append vendor-dir "/" wayland-sys-src
+                                          "/server.rs")
+                (("libwayland-server\\.so")
+                 (string-append libwayland "/lib/libwayland-server.so")))
+              (substitute* (string-append vendor-dir "/" wayland-sys-src
+                                          "/cursor.rs")
+                (("libwayland-cursor\\.so")
+                 (string-append libwayland "/lib/libwayland-cursor.so")))
+              (substitute* (string-append vendor-dir "/" wayland-sys-src
+                                          "/egl.rs")
+                (("libwayland-egl\\.so")
+                 (string-append libwayland "/lib/libwayland-egl.so")))
+              (substitute* (string-append vendor-dir "/" wayland-sys-src
+                                          "/client.rs")
+                (("libwayland-client\\.so")
+                 (string-append libwayland "/lib/libwayland-client.so")))
               #t)))
          (add-after 'configure 'remove-alacritty-vendor
            (lambda* (#:key vendor-dir #:allow-other-keys)
@@ -1251,15 +1289,8 @@ made by suckless.")
                     (man   (string-append share "/man/man1"))
                     (alacritty-bin "target/release/alacritty"))
 
-               ;; Install and wrap the binary.
+               ;; Install the executable.
                (install-file alacritty-bin bin)
-               (wrap-program (string-append bin "/alacritty")
-                 ;; Both libraries are dlopen()d by cargo dependencies above
-                 ;; when running Alacritty on pure Wayland.
-                 ;; XXX Find out how to patch these at the source.
-                 `("LD_LIBRARY_PATH" ":" prefix
-                   (,(string-append (assoc-ref inputs "libxkbcommon") "/lib:"
-                                    (assoc-ref inputs "wayland") "/lib"))))
 
                ;; Install man pages.
                (mkdir-p man)
@@ -1312,6 +1343,12 @@ made by suckless.")
        ("ncurses" ,ncurses)
        ("pkg-config" ,pkg-config)
        ("python3" ,python)))
+    (native-search-paths
+     ;; FIXME: This should only be located in 'ncurses'.  Nonetheless it is
+     ;; provided for usability reasons.  See <https://bugs.gnu.org/22138>.
+     (list (search-path-specification
+            (variable "TERMINFO_DIRS")
+            (files '("share/terminfo")))))
     (home-page "https://github.com/alacritty/alacritty")
     (synopsis "GPU-accelerated terminal emulator")
     (description
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 2623c256d5..db574b4e20 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -5349,6 +5349,65 @@ alternative version of the Kurier fonts.  The difference lies in the absence
 of ink traps which typify the Kurier font.")
     (license license:gfl1.0)))
 
+(define-public texlive-libertine
+  (package
+    (inherit (simple-texlive-package
+              "texlive-libertine"
+              (list "/doc/fonts/libertine/"
+
+                    "/fonts/enc/dvips/libertine/"
+                    "/fonts/map/dvips/libertine/"
+                    "/fonts/opentype/public/libertine/"
+                    "/fonts/tfm/public/libertine/"
+                    "/fonts/type1/public/libertine/"
+                    "/fonts/vf/public/libertine/"
+
+                    "/tex/latex/libertine/")
+              (base32
+               "1v2vimpfi0b08sd79dadrck7wkpa0bphiakwyvhjc3ygq9k5bp8k")
+              #:trivial? #t))
+    (home-page "https://www.ctan.org/pkg/libertine")
+    (synopsis "Use Linux Libertine and Biolinum fonts with LaTeX")
+    (description
+     "The package provides the Libertine and Biolinum fonts in both Type 1 and
+OTF styles, together with support macros for their use.  Monospaced and
+display fonts, and the \"keyboard\" set are also included, in OTF style, only.
+The @code{mweights} package is used to manage the selection of font weights.
+The package supersedes both the @code{libertineotf} and the
+@code{libertine-legacy} packages.")
+    (license (list license:gpl2+        ; with font exception
+                   license:silofl1.1
+                   license:lppl))))
+
+(define-public texlive-dejavu
+  (package
+    (inherit (simple-texlive-package
+              "texlive-dejavu"
+              (list "/doc/fonts/dejavu/"
+
+                    "/fonts/enc/dvips/dejavu/"
+                    "/fonts/map/dvips/dejavu/"
+
+                    "/fonts/afm/public/dejavu/"
+                    "/fonts/tfm/public/dejavu/"
+                    "/fonts/truetype/public/dejavu/"
+                    "/fonts/type1/public/dejavu/"
+                    "/fonts/vf/public/dejavu/"
+
+                    "/tex/latex/dejavu/")
+              (base32
+               "0y4qf5jl0xncah9nkcaalmy69wwq02n3j895zp71n2p0nfi24aka")
+              #:trivial? #t))
+    (home-page "https://www.ctan.org/pkg/libertine")
+    (synopsis "LaTeX support for the DejaVu fonts")
+    (description
+     "The package contains LaTeX support for the DejaVu fonts, which are
+derived from the Vera fonts but contain more characters and styles.  The fonts
+are included in the original TrueType format, and in converted Type 1 format.
+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
   (package
     (name "texlive-latex-titlesec")
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index ed88c8de1c..e7579ad56d 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -756,14 +756,14 @@ editors.")
 (define-public texmacs
   (package
     (name "texmacs")
-    (version "1.99.13")
+    (version "1.99.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/"
                            "source/TeXmacs-" version "-src.tar.gz"))
        (sha256
-        (base32 "1d590yyanh2ar88pd0ns4mf616bq1lq4cwg93m863anhir5irb82"))))
+        (base32 "118sk75k0k9pkyfyx000n2ypab8vm1lz5zxkkdmsi5nwyr3rp56s"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -773,7 +773,8 @@ editors.")
        ("guile" ,guile-1.8)
        ("perl" ,perl)
        ("python" ,python-wrapper)
-       ("qt" ,qtbase)))
+       ("qt" ,qtbase)
+       ("qtsvg" ,qtsvg)))
     (arguments
      `(#:tests? #f                      ; no check target
        #:phases
@@ -848,14 +849,14 @@ and multiple fonts.")
 (define-public geany
   (package
     (name "geany")
-    (version "1.36")
+    (version "1.37")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.geany.org/"
                            "geany-" version ".tar.bz2"))
        (sha256
-        (base32 "0gnm17cr4rf3pmkf0axz4a0fxwnvp55ji0q0lzy88yqbshyxv14i"))))
+        (base32 "0l9xds0qghxv21ymifdc9spvp9mpvpnxn9scf1b9qxivha22brfx"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 7cbbe5f61d..34da04d0d8 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -52,6 +52,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages java)
   #:use-module (gnu packages ncurses)
@@ -1125,14 +1126,13 @@ such as ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8, UTF-16 or UTF-32.")
 (define-public python-pandocfilters
   (package
     (name "python-pandocfilters")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pandocfilters" version))
        (sha256
-        (base32
-         "1a8d9b7s48gmq9zj0pmbyv2sivn5i7m6mybgpkk4jm5vd7hp1pdk"))))
+        (base32 "1sq675dg4barb5949xxz4d5gk2ly524hi1p1xgwb3d1l0nsznqxw"))))
     (build-system python-build-system)
     (home-page "https://github.com/jgm/pandocfilters")
     (synopsis "Python module for writing Pandoc filters")
@@ -1174,3 +1174,35 @@ This package provides Python bindings.")
     (description "@command{aha} (Ansi Html Adapter) converts ANSI escape sequences
 of a Unix terminal to HTML code.")
     (license (list license:lgpl2.0+ license:mpl1.1))))
+
+(define-public go-github-com-errata-ai-vale
+  (package
+    (name "go-github-com-errata-ai-vale")
+    (version "2.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/errata-ai/vale")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "0d07fwha2220m8j24h527xl0gnl3svvyaywflgk5292d6g49ach2"))
+       (file-name (git-file-name name version))))
+    (build-system go-build-system)
+    (native-inputs
+     `(("github.com/sp13/afero" ,go-github-com-spf13-afero)
+       ("github.com/urfave/cli" ,go-github-com-urfave-cli)
+       ("github.com/olekukonko/tablewriter" ,go-github-com-olekukonko-tablewriter)
+       ("github.com/mitchellh/mapstructure" ,go-github-com-mitchellh-mapstructure)))
+    (arguments
+     `(#:import-path "github.com/errata-ai/vale"
+       #:install-source? #f))
+    (home-page "https://github.com/errata-ai/vale")
+    (synopsis "Fully customizable syntax-aware linter that focuses on your style")
+    (description
+     "Vale is a fully extensible linter that focuses on your own writing style
+by making use of rules in individual YAML files.  It is syntax-aware on markup
+languages such as HTML, Markdown, Asciidoc, and reStructuredText.  The community
+around it also has a list of style guides implemented with Vale in
+@url{https://github.com/errata-ai/styles, their styles repo}.")
+    (license license:expat)))
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index e396412e47..d9ea0e12c2 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -140,13 +140,13 @@ saving time.  Almost all of the Olson timezones are supported.")
 (define-public python-pendulum
   (package
     (name "python-pendulum")
-    (version "2.1.1")
+    (version "2.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pendulum" version))
        (sha256
-        (base32 "1w4an6ki3l1pc36m2f2xiglaw5czmj9b4imbigln9z6mlnkkjxyr"))))
+        (base32 "01zjc245w08j0xryrgrq9vng59q1cl5ry0hcpw5rj774pyhhqsmh"))))
     (build-system python-build-system)
     ;; XXX: The PyPI distribution lacks tests, and the upstream repository
     ;; lacks a setup.py!
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9cb5ac9b85..8d85a7831d 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -337,25 +337,33 @@ required structures.")
       #:disallowed-references ,(list (canonical-package perl))
       #:phases
       (modify-phases %standard-phases
-	,@(if (%current-target-system)
-	      '((add-before
-		    'configure 'set-cross-compile
-		  (lambda* (#:key target outputs #:allow-other-keys)
-		    (setenv "CROSS_COMPILE" (string-append target "-"))
-		    (setenv "CONFIGURE_TARGET_ARCH"
-			    (cond
-			     ((string-prefix? "i586" target)
-			      "hurd-x86")
-			     ((string-prefix? "i686" target)
-			      "linux-x86")
-			     ((string-prefix? "x86_64" target)
-			      "linux-x86_64")
-			     ((string-prefix? "arm" target)
-			      "linux-armv4")
-			     ((string-prefix? "aarch64" target)
-			      "linux-aarch64")))
-		    #t)))
-	      '())
+       ,@(if (%current-target-system)
+           '((add-before
+               'configure 'set-cross-compile
+               (lambda* (#:key target outputs #:allow-other-keys)
+                 (setenv "CROSS_COMPILE" (string-append target "-"))
+                 (setenv "CONFIGURE_TARGET_ARCH"
+                         (cond
+                           ((string-prefix? "i586" target)
+                            "hurd-x86")
+                           ((string-prefix? "i686" target)
+                            "linux-x86")
+                           ((string-prefix? "x86_64" target)
+                            "linux-x86_64")
+                           ((string-prefix? "mips64el" target)
+                            "linux-mips64")
+                           ((string-prefix? "arm" target)
+                            "linux-armv4")
+                           ((string-prefix? "aarch64" target)
+                            "linux-aarch64")
+                           ((string-prefix? "powerpc64le" target)
+                            "linux-ppc64le")
+                           ((string-prefix? "powerpc64" target)
+                            "linux-ppc64")
+                           ((string-prefix? "powerpc" target)
+                            "linux-ppc")))
+                 #t)))
+           '())
         (replace 'configure
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
@@ -366,8 +374,8 @@ required structures.")
                  (string-append (assoc-ref %build-inputs "coreutils")
                                 "/bin/env")))
               (invoke ,@(if (%current-target-system)
-			    '("./Configure")
-			    '("./config"))
+                          '("./Configure")
+                          '("./config"))
                       "shared"       ;build shared libraries
                       "--libdir=lib"
 
@@ -379,9 +387,9 @@ required structures.")
 
                       (string-append "--prefix=" out)
                       (string-append "-Wl,-rpath," lib)
-		      ,@(if (%current-target-system)
-			    '((getenv "CONFIGURE_TARGET_ARCH"))
-			    '())))))
+                      ,@(if (%current-target-system)
+                          '((getenv "CONFIGURE_TARGET_ARCH"))
+                          '())))))
         (add-after 'install 'move-static-libraries
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Move static libraries to the "static" output.
@@ -571,13 +579,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "1.3.0")
+    (version "1.8.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "03fjmg0fgfy7xfn3i8rzn9i0i4amajmijkash84qb8mlphgrxpn0"))))
+                "0b80qmlchf8f071nrrh4ihq64cwicn9rshs34snp73952iyhd3dd"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -628,7 +636,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri "certbot" version))
               (sha256
                (base32
-                "1n5i0k6kwmd6wvivshfl3k4djwcpwx390c39xmr2hhrgpk5r285w"))))
+                "1r2k54d2k2smn4c3lpd0z6gdzfqk4654kwbh1p8wqhv5mwbcads8"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index 910b3dd781..95a31f80fd 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -43,7 +43,7 @@
 (define-public tmux
   (package
     (name "tmux")
-    (version "3.1b")
+    (version "3.1c")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -51,7 +51,7 @@
                     version "/tmux-" version ".tar.gz"))
              (sha256
               (base32
-               "1fbd93hzaz64h7j0h9nsll29avbq1ikqa438wrgsf1dga0fkagyr"))))
+               "11l3r337ly2wxwdrgjg19bdxkbqpagqaykrdj2hk7vvv8hh753wi"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -145,7 +145,7 @@ windows.")
 (define-public python-libtmux
   (package
     (name "python-libtmux")
-    (version "0.8.3")
+    (version "0.8.5")
     (source
      (origin
        (method git-fetch)
@@ -155,7 +155,7 @@ windows.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "18dqqd3jmgq3jb1l3xpgywlh4x82mzjxch61gwnlhfaqx5mzvjph"))))
+        (base32 "1vrd99kl2gsk49mvbp6k7l1k7r96vf1fczsqclb62yd4hdpp7zaa"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("procps" ,procps)))             ;tests need top
@@ -171,6 +171,8 @@ windows.")
              (setenv "PYTHONPATH"
                      (string-append (getcwd) "/build/lib:"
                                     (getenv "PYTHONPATH")))
+             ;; Fix <https://github.com/tmux-python/libtmux/issues/265>.
+             (setenv "LANG" "en_US.utf8")
              ;; Skip tests that I suspect fail because of a change
              ;; in behavior in tmux 3 from tmux 2
              ;; https://github.com/tmux-python/libtmux/issues/281
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 9bde4a4c23..f5f5fe7374 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -54,14 +54,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.4.5")
+    (version "0.4.4.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "09lr6l98qmc69pzsi8r02z86v969dbfwjrwphfm3npknzq5a0p54"))))
+               "1p0zpqmbskygx0wmiijhprg8r45n2wqbbjl7kv4gbb83b0alq5az"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index fe61bc8fce..29de995665 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017 André <eu@euandre.org>
+;;; Copyright © 2017, 2020 EuAndreh <eu@euandre.org>
 ;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
@@ -74,6 +74,7 @@
   #:use-module (gnu packages ed)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages golang)
@@ -93,6 +94,7 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
@@ -159,14 +161,14 @@ as well as the classic centralized workflow.")
 (define-public git
   (package
    (name "git")
-   (version "2.28.0")
+   (version "2.29.2")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "17a311vzimqn1glc9d7x82rhb1mb81m5rr4g8xji8idaafid39fz"))))
+              "1h87yv117ypnc0yi86941089c14n91gixk8b6shj2y35prp47z7j"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -183,7 +185,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "1dvwq0py8a2ywmgc5pzdlsj3608s7r9wyba292728fcs3yj7ynk6"))))
+            "14npkg9rnp2yclsx5p622qpm6byzfy5k5wb209vkmm5r60m4mm72"))))
       ;; For subtree documentation.
       ("asciidoc" ,asciidoc-py3)
       ("docbook-xsl" ,docbook-xsl)
@@ -390,6 +392,16 @@ as well as the classic centralized workflow.")
               (install-file "contrib/subtree/git-subtree.1"
                             (string-append subtree "/share/man/man1"))
               #t)))
+         (add-after 'install 'restore-sample-hooks-shebang
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (dir (string-append out "/share/git-core/templates/hooks")))
+               (for-each (lambda (file)
+                           (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.
@@ -518,11 +530,6 @@ everything from small to very large projects with speed and efficiency.")
            (delete 'install-man-pages)
            (delete 'install-subtree)
            (delete 'install-credential-netrc)
-           (add-before 'check 'delete-svn-test
-             (lambda _
-               ;; This test cannot run since we are not building 'git-svn'.
-               (delete-file "t/t9020-remote-svn.sh")
-               #t))
            (add-after 'install 'remove-unusable-perl-commands
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((out     (assoc-ref outputs "out"))
@@ -1446,7 +1453,7 @@ control to Git repositories.")
 (define-public pre-commit
   (package
     (name "pre-commit")
-    (version "2.7.1")
+    (version "2.8.1")
     (source
      (origin
        ;; No tests in the PyPI tarball.
@@ -1456,7 +1463,7 @@ control to Git repositories.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0n7qby5a4yz3s02nqcp5js6jg9wrd0x7msblxwb1883ds4b2b71a"))))
+        (base32 "0b3ks6viccq3n4p8i8zgfd40vp1k5nkhmmlz7p4nxcdizw8zxgn8"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1497,6 +1504,12 @@ control to Git repositories.")
                       " and not test_additional_rust_lib_dependencies_installed"
                       " and not test_local_rust_additional_dependencies"
                       " and not test_rust_hook"
+                      ;; Disable dotnet tests.
+                      " and not test_dotnet_hook"
+                      ;; Disable nodejs tests.
+                      " and not test_unhealthy_if_system_node_goes_missing"
+                      " and not test_installs_without_links_outside_env"
+                      " and not test_healthy_system_node"
                       ;; Disable python2 test.
                       " and not test_switch_language_versions_doesnt_clobber"
                       ;; These tests try to open a network socket.
@@ -1539,8 +1552,10 @@ control to Git repositories.")
                #t))))))
     (native-inputs
      `(("git" ,git-minimal)
-       ("python-pytest" ,python-pytest)))
-    (inputs
+       ("python-pytest" ,python-pytest)
+       ("python-re-assert" ,python-re-assert)))
+    ;; Propagate because pre-commit is also used as a module.
+    (propagated-inputs
      `(("python-cfgv" ,python-cfgv)
        ("python-identify" ,python-identify)
        ("python-nodeenv" ,python-nodeenv)
@@ -1799,26 +1814,17 @@ projects, from individuals to large-scale enterprise operations.")
 (define-public rcs
   (package
     (name "rcs")
-    (version "5.9.4")
+    (version "5.10.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/rcs/rcs-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86"))
-             (patches (search-patches "rcs-5.9.4-noreturn.patch"))))
+               "1if5pa4iip2p70gljm54nggfdnsfjxa4cqz8fpj07lvsijary39s"))
+             (patches (search-patches "rcs-5.10.0-no-stdin.patch"))))
     (build-system gnu-build-system)
     (native-inputs `(("ed" ,ed)))
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'check 'disable-t810
-                    ;; See https://savannah.gnu.org/bugs/index.php?52288
-                    ;; Back-porting the fix is non-trivial, so disable for now.
-                    (lambda _
-                      (substitute* "tests/Makefile"
-                        ((" t810 \\\\\n") ""))
-                     #t)))))
     (home-page "https://www.gnu.org/software/rcs/")
     (synopsis "Per-file local revision control system")
     (description
@@ -2306,6 +2312,49 @@ collections efficiently.  Mirrors decide to clone and update repositories
 based on a manifest file published by servers.")
     (license license:gpl3+)))
 
+(define-public b4
+  (package
+    (name "b4")
+    (version "0.5.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.kernel.org/pub/scm/utils/b4/b4.git")
+             (commit (string-append "v" version))))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32 "1w11fiyspyncz2m7njrjfylgzch4azi7560ngd8i733wvjjhg3mj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f                      ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-manpages
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((man (string-append (assoc-ref outputs "out")
+                                       "/man/man5/")))
+               (mkdir-p man)
+               (for-each (lambda (file) (install-file file man))
+                         (find-files "man" "\\.[1-8]$")))
+             #t)))))
+    (inputs
+     `(("python-requests" ,python-requests)))
+    (home-page "https://git.kernel.org/pub/scm/utils/b4/b4.git")
+    (synopsis "Tool for working with patches in public-inbox archives")
+    (description
+     "The @code{b4} command is designed to make it easier to participate in
+patch-based workflows for projects that have public-inbox archives.
+
+Features include:
+@itemize
+@item downloading a thread's mbox given a message ID
+@item processing an mbox so that is ready to be fed to @code{git-am}
+@item creating templated replies for processed patches and pull requests
+@item submitting cryptographic attestation for patches.
+@end itemize")
+    (license license:gpl2+)))
+
 (define-public git-annex-remote-rclone
   (package
     (name "git-annex-remote-rclone")
@@ -2670,6 +2719,40 @@ videos, datasets, and graphics with text pointers inside Git, while storing the
 file contents on a remote server.")
     (license license:expat)))
 
+(define-public git-open
+  (package
+    (name "git-open")
+    (version "2.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/paulirish/git-open")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11n46bngvca5wbdbfcxzjhjbfdbad7sgf7h9gf956cb1q8swsdm0"))))
+    (build-system trivial-build-system)
+    (propagated-inputs
+     `(("xdg-utils" ,xdg-utils)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (out    (assoc-ref %outputs "out")))
+           (mkdir-p (string-append out "/bin"))
+           (copy-file (string-append source "/git-open")
+                      (string-append out "/bin/git-open"))
+           #t))))
+    (home-page "https://github.com/paulirish/git-open")
+    (synopsis "Open a Git repository's homepage from the command-line")
+    (description
+     "@code{git open} opens the repository's website from the command-line,
+guessing the URL pattern from the @code{origin} remote.")
+    (license license:expat)))
+
 (define-public tla
   (package
     (name "gnu-arch")
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index bd5367d439..ef504e4ca0 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -44,6 +44,8 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -243,7 +245,7 @@
        ("faac" ,faac)
        ("ffmpeg" ,ffmpeg)
        ("freetype" ,freetype)
-       ("imagemagick" ,imagemagick)
+       ("imagemagick" ,imagemagick-next)
        ("lame" ,lame)
        ("liba52" ,liba52)
        ("libdv" ,libdv)
@@ -284,7 +286,7 @@ video and audio streams from a DVD.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/OpenVisualCloud/SVT-HEVC.git")
+         (url "https://github.com/OpenVisualCloud/SVT-HEVC")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -312,7 +314,7 @@ efficiency.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/Intel-Media-SDK/MediaSDK.git")
+         (url "https://github.com/Intel-Media-SDK/MediaSDK")
          (commit (string-append "intel-" name "-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -488,7 +490,7 @@ and mmsh protocols.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/farindk/libvideogfx.git")
+         (url "https://github.com/farindk/libvideogfx")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -526,17 +528,17 @@ applications by providing high-level classes for commonly required tasks.")
 (define-public libde265
   (package
     (name "libde265")
-    (version "1.0.7")
+    (version "1.0.8")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/strukturag/libde265.git")
+         (url "https://github.com/strukturag/libde265")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0x7g9771457z49qvzpk4iswfhq018i0mzsflv9gg8if5hjqhfdp0"))))
+        (base32 "1dzflqbk248lz5ws0ni5acmf32b3rmnq5gsfaz7691qqjxkl1zml"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -573,7 +575,7 @@ other software.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/libts/tslib.git")
+         (url "https://github.com/libts/tslib")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -826,8 +828,8 @@ shared library and encoder and decoder command-line executables.")
 (define-public libx264
   ;; There are no tags in the repository, so we take the version number from
   ;; the X264_BUILD variable defined in x264.h.
-  (let ((version "159")
-        (commit "1771b556ee45207f8711744ccbd5d42a3949b14c")
+  (let ((version "161")
+        (commit "4c2aafd864dd201832ec2be0fef4484925146650")
         (revision "0"))
     (package
       (name "libx264")
@@ -840,7 +842,7 @@ shared library and encoder and decoder command-line executables.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0kmi78gs5101d4df33il5bmjbns54nvdjsyn44xiw60lwsg11vwz"))))
+                  "1i6v9h3xx9pi0zmlj3anwwjxqa63sbhy9crrif8dphipwfn9hyg5"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("pkg-config" ,pkg-config)
@@ -881,14 +883,14 @@ H.264 (MPEG-4 AVC) video streams.")
 (define-public mkvtoolnix
   (package
     (name "mkvtoolnix")
-    (version "50.0.0")
+    (version "51.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://mkvtoolnix.download/sources/"
                            "mkvtoolnix-" version ".tar.xz"))
        (sha256
-        (base32 "09485qfbdirr9g536shglzdm271yipb1669r3dm3hxp46k0x59aq"))
+        (base32 "0w2crz6wnfw18m9m4zrij1yplcq5drzhz8n58w9kp51wl48a0yn1"))
        (modules '((guix build utils)))
        (snippet '(begin
                    ;; Delete bundled libraries.
@@ -1005,7 +1007,7 @@ H.264 (MPEG-4 AVC) video streams.")
 (define-public straw-viewer
   (package
     (name "straw-viewer")
-    (version "0.0.7")
+    (version "0.1.1")
     (source
      (origin
        (method git-fetch)
@@ -1014,7 +1016,7 @@ H.264 (MPEG-4 AVC) video streams.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11ywip9ck2rgyj8s1pyr6za3si0bnx8rl2f3cv84xgcq36ac3rv4"))))
+        (base32 "0idp1ayqghi5bg83v9qmvzz9wj05flwrp1fxb4kqa6vwxmprvhyk"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -1189,7 +1191,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
 (define-public libass
   (package
     (name "libass")
-    (version "0.14.0")
+    (version "0.15.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1197,8 +1199,10 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
                     version "/libass-" version ".tar.xz"))
               (sha256
                (base32
-                "18iqznl4mabhj9ywfsz4kwvbsplcv1jjxq50nxssvbj8my1267w8"))))
+                "0cz8v6kh3f2j5rdjrra2z0h715fa16vjm7kambvqx9hak86262cz"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("nasm" ,nasm)))
@@ -1206,8 +1210,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
      `(("freetype" ,freetype)
        ("fribidi" ,fribidi)
        ("fontconfig" ,fontconfig)
-       ("harfbuzz" ,harfbuzz)
-       ("enca" ,enca)))
+       ("harfbuzz" ,harfbuzz)))
     (home-page "https://github.com/libass/libass")
     (synopsis "Subtitle rendering library for the ASS/SSA format")
     (description "libass is a subtitle rendering library for the
@@ -1226,6 +1229,8 @@ ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.")
                (base32
                 "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs
      `(("freeglut" ,freeglut)
@@ -1467,7 +1472,6 @@ operate properly.")
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo)
-       ("python" ,python-2) ; scripts use interpreter python2
        ("speex" ,speex)
        ("yasm" ,yasm)))
     (arguments
@@ -1635,11 +1639,19 @@ audio/video codec library.")
                "1j7mdk9szrljgv4sdx69bm1pnbb3cldbdxbkr42jbdi9zn11gl7g"))))
     (arguments
      (substitute-keyword-arguments (package-arguments ffmpeg)
+       ((#:modules modules %gnu-build-system-modules)
+        `((srfi srfi-1)
+          ,@modules))
        ((#:configure-flags flags)
-        `(delete "--enable-libdav1d" (delete "--enable-libaom" (delete "--enable-librav1e"
-                  ,flags))))))
-    (inputs (alist-delete "dav1d" (alist-delete "libaom" (alist-delete "rav1e"
-                           (package-inputs ffmpeg)))))))
+        `(fold delete
+               ,flags
+               '("--enable-libdav1d"
+                 "--enable-libaom"
+                 "--enable-librav1e"
+                 "--enable-libsrt")))))
+    (inputs (fold alist-delete
+                  (package-inputs ffmpeg)
+                  '("dav1d" "libaom" "rav1e" "srt")))))
 
 (define-public ffmpeg-2.8
   (package
@@ -1993,7 +2005,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public mpv
   (package
     (name "mpv")
-    (version "0.32.0")
+    (version "0.33.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2002,7 +2014,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0kmy1q0hp87vq4rpv7py04x8bpg1wmlzaibavmkf713jqp6qy596"))))
+                "06cmycd2gb826kf2zv470w6nhzyk9sdhjydsdiinbgb902lzcpfy"))))
     (build-system waf-build-system)
     (native-inputs
      `(("perl" ,perl) ; for zsh completion file
@@ -2177,15 +2189,14 @@ To load this plugin, specify the following option when starting mpv:
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2020.09.20")
+    (version "2020.11.26")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
-                                  "releases/download/" version "/youtube-dl-"
-                                  version ".tar.gz"))
+              (uri (string-append "https://youtube-dl.org/downloads/latest/"
+                                  "youtube-dl-" version ".tar.gz"))
               (sha256
                (base32
-                "1pkw3hnkddk1kqv0in152q1k4jjgbmf2xvc9j3r5nd38z6f7j6mc"))))
+                "0zvgb1b5kzd2y97rvynxf7qvz3narllf1m26xsph1zll1zb6q47v"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -2337,7 +2348,7 @@ other site that youtube-dl supports.")
 (define-public you-get
   (package
     (name "you-get")
-    (version "0.4.1456")
+    (version "0.4.1488")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2346,7 +2357,7 @@ other site that youtube-dl supports.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0n6h5qkhjwsxy8rf6n4i8hd8dah38hbvchh9272c53gydgp9lp29"))))
+                "10dx1gka92m42f8ah1mzylbd71apzrphfa48r5ci7g1j8ysdcs7q"))))
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)))             ; for multi-part and >=1080p videos
@@ -2471,7 +2482,8 @@ Both command-line and GTK2 interface are available.")
                 "1zxfnw1xbghcj7b3zz5djndv6gwssxda19cz1lrlqrkg8577r7kd"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--disable-bdjava-jar")
+     `(#:configure-flags '("--disable-bdjava-jar"
+                           "--disable-static")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'refer-to-libxml2-in-.pc-file
@@ -2642,7 +2654,7 @@ for use with HTML5 video.")
 (define-public avidemux
   (package
     (name "avidemux")
-    (version "2.7.4")
+    (version "2.7.6")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -2650,7 +2662,7 @@ for use with HTML5 video.")
                    "avidemux_" version ".tar.gz"))
              (sha256
               (base32
-               "1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x"))
+               "1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s"))
              (patches (search-patches "avidemux-install-to-lib.patch"))))
     (build-system cmake-build-system)
     (native-inputs
@@ -2668,6 +2680,7 @@ for use with HTML5 video.")
        ("glu" ,glu)
        ("jack" ,jack-1)
        ("lame" ,lame)
+       ("libaom" ,libaom)
        ("libva" ,libva)
        ("libvdpau" ,libvdpau)
        ("libvorbis" ,libvorbis)
@@ -2682,7 +2695,7 @@ for use with HTML5 video.")
        #:phases
        ;; Make sure files inside the included ffmpeg tarball are
        ;; patch-shebanged.
-       (let ((ffmpeg "ffmpeg-4.1.4"))
+       (let ((ffmpeg "ffmpeg-4.2.3"))
          (modify-phases %standard-phases
            (add-before 'patch-source-shebangs 'unpack-ffmpeg
              (lambda _
@@ -2980,11 +2993,40 @@ tools, XML authoring components, and an extensible plug-in based API.")
                (base32
                 "1bkqlrizx0j2rd6ybam2x17bjrpwzl4v4szmnzm3cmixis3w3npr"))))
     (build-system gnu-build-system)
+    ;; Separate graphical tools in order to save almost 1 GiB on the closure
+    ;; for the common case.
+    (outputs '("out" "gui"))
     (arguments
      '(#:configure-flags
-       (list (string-append "--with-udevdir="
+       (list "--disable-static"
+             (string-append "--with-udevdir="
                             (assoc-ref %outputs "out")
-                            "/lib/udev"))))
+                            "/lib/udev"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'split
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gui (assoc-ref outputs "gui")))
+               (mkdir-p (string-append gui "/bin"))
+               (mkdir-p (string-append gui "/share/man/man1"))
+               (mkdir-p (string-append gui "/share/applications"))
+               (for-each
+                (lambda (prog)
+                  (for-each
+                   (lambda (file)
+                     (rename-file (string-append out file)
+                                  (string-append gui file)))
+                   (list
+                    (string-append "/bin/" prog)
+                    (string-append "/share/man/man1/" prog ".1")
+                    (string-append "/share/applications/" prog ".desktop"))))
+                '("qv4l2" "qvidcap"))
+               (copy-recursively (string-append out "/share/icons")
+                                 (string-append gui "/share/icons"))
+               (delete-file-recursively (string-append out "/share/icons"))
+               (rmdir (string-append out "/share/applications"))
+               #t))))))
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)))
@@ -3714,10 +3756,51 @@ information and other metadata about audio or video files.  It supports the
 many codecs and formats supported by libmediainfo.")
     (license license:bsd-2)))
 
+(define-public atomicparsley
+  (package
+    (name "atomicparsley")
+    (version "20200701.154658.b0d6223")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/wez/atomicparsley")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1kym2l5y34nmbrrlkfmxsf1cwrvch64kb34jp0hpa0b89idbhwqh"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;; no tests included
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-cmake-version
+           (lambda* _
+             (substitute* "CMakeLists.txt"
+               ;; At the time of writing, Guix has CMake at 3.16, but
+               ;; AtomicParsley uses 3.17.  This brings the required CMake
+               ;; version down to what Guix can afford.
+               (("VERSION 3.17") "VERSION 3.16"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (install-file "AtomicParsley" bin))
+             #t)))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (synopsis "Metadata editor for MPEG-4 files")
+    (description "AtomicParsley is a lightweight command line program for
+reading, parsing and setting metadata into MPEG-4 files, in particular,
+iTunes-style metadata.")
+    (home-page "https://github.com/wez/atomicparsley")
+    (license license:gpl2+)))
+
 (define-public livemedia-utils
   (package
     (name "livemedia-utils")
-    (version "2019.05.29")
+    (version "2020.11.19")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3725,11 +3808,12 @@ many codecs and formats supported by libmediainfo.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my"))))
+                "16w6yxdbmjdhvffnrb752dn4llf3l0wb00dgdkyia0vqsv2qqyn7"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:make-flags (list "CC=gcc"
+     `(#:tests? #f                      ; no tests
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          (string-append "CXX=" ,(cxx-for-target))
                           (string-append "LDFLAGS=-Wl,-rpath="
                                          (assoc-ref %outputs "out") "/lib")
                           (string-append "PREFIX="
@@ -3744,6 +3828,8 @@ many codecs and formats supported by libmediainfo.")
                     (lambda _
                       (invoke "./genMakefiles"
                               "linux-with-shared-libraries"))))))
+    (inputs
+     `(("openssl" ,openssl)))
     (home-page "http://www.live555.com/liveMedia/")
     (synopsis "Set of C++ libraries for multimedia streaming")
     (description "This code forms a set of C++ libraries for multimedia
@@ -4293,15 +4379,17 @@ transitions, and effects and then export your film to many common formats.")
 (define-public dav1d
   (package
     (name "dav1d")
-    (version "0.7.1")
+    (version "0.8.0")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://downloads.videolan.org/pub/videolan"
-                            "/dav1d/" version "/dav1d-" version ".tar.xz"))
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://code.videolan.org/videolan/dav1d.git")
+               (commit version)))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "1hnkfcg57bv5rib6cnj39dy1jx0q7zi5fb2fz52hf2y0bv8bad1k"))))
+          "0mjn87xjdqv0q1gj4s4f6fdmsj504mhk4qmqiyrhq2rs7yqj4csv"))))
     (build-system meson-build-system)
     (native-inputs `(("nasm" ,nasm)))
     (home-page "https://code.videolan.org/videolan/dav1d")
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 05136981ea..cda1e144ec 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -70,7 +70,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.2.1852")
+    (version "8.2.2017")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -79,18 +79,13 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "0nvcvvig5fc45smf4kh71jqyqafffgxzaizwqknk0h9vzl4k4h57"))))
+               "0ad0c4wv8zf28wns06k82c19rs63ilsphnglajhgw5j2a1aqplyn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-after 'patch-source-shebangs 'fix-installman
-           (lambda _
-             (substitute* "src/installman.sh"
-               ((" /bin/sh") (which "sh")))
-             #t))
          (add-after 'configure 'patch-absolute-paths
            (lambda _
              (substitute* "runtime/tools/mve.awk"
@@ -115,7 +110,7 @@
              ;; Make sure the TERM environment variable is set for the tests
              (setenv "TERM" "xterm")
              #t))
-         (add-before 'check 'skip-failing-tests
+         (add-before 'check 'skip-or-fix-failing-tests
            (lambda _
              ;; This test assumes that PID 1 is run as root and that the user
              ;; running the test suite does not have permission to kill(1, 0)
@@ -126,16 +121,36 @@
              (substitute* "src/testdir/test_swap.vim"
                (("if !IsRoot\\(\\)") "if 0"))
 
-             ;; These tests check how the terminal looks after executing some
-             ;; actions.  The path of the bash binary is shown, which results in
-             ;; a difference being detected.  Patching the expected result is
-             ;; non-trivial due to the special format used, so skip the test.
-             (substitute* "src/testdir/test_terminal.vim"
-               ((".*Test_terminal_postponed_scrollback.*" line)
-                (string-append line "return\n")))
+             ;; These tests compares output against a golden ‘…/|b|i|n|/|s|h…’
+             ;; literal.  We need to match that and substitute a similarly
+             ;; ‘spliced’ path to ‘sh’ in the store, truncated to the last
+             ;; 44 (spliced: 88) or so characters.
+             ;; Two of the tests we simply skip instead of patching the screen dump.
              (substitute* "src/testdir/test_popupwin.vim"
-               ((".*Test_popup_drag_termwin.*" line)
-                (string-append line "return\n")))
+               ((".*Test_popupwin_term_0[1|2].*") ""))
+             ;; We replace the external program call (!) with a scroll-back (<)
+             ;; symbol and blindly fix some other differences based on error output.
+             (let ((splice (lambda (s separator)
+                               (string-join (map string (string->list s))
+                                            separator))))
+               (substitute* "src/testdir/dumps/Test_terminal_from_cmd.dump"
+                 (((splice "/bin/sh" "\\|"))
+                  (splice (string-take-right (which "sh") 44) "|"))
+                 (("^\\|!") "|<")
+                 (("@37") ""))
+               (substitute* '("src/testdir/dumps/Test_terminal_scrollback_1.dump"
+                              "src/testdir/dumps/Test_terminal_scrollback_2.dump")
+                 (((splice "/bin/sh" "\\|"))
+                  (splice (string-take-right (which "sh") 61) "|"))
+                 (("^\\|!") "|<")
+                 ((" @55") " @1"))
+               (substitute* '("src/testdir/dumps/Test_terminal_scrollback_3.dump"
+                              "src/testdir/dumps/Test_popupwin_term_03.dump"
+                              "src/testdir/dumps/Test_popupwin_term_04.dump")
+                 (((splice "/bin/sh" "\\|"))
+                  (splice (string-take-right (which "sh") 62) "|"))
+                 (("^\\|!") "|<")
+                 (("\\]\\| @56") "]| @1")))
              #t)))))
     (inputs
      `(("gawk" ,gawk)
@@ -805,7 +820,7 @@ through its msgpack-rpc API.")
 (define-public vim-guix-vim
   (package
     (name "vim-guix-vim")
-    (version "0.1")
+    (version "0.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -814,7 +829,7 @@ through its msgpack-rpc API.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1f8h8m96fqh3f9hy87spgh9kdqzyxl11n9s3rywvyq5xhn489bnk"))))
+                "10bfy0dgwizxr56b4272b7sqajpr6lnz332pzx055dis2zzjap8z"))))
     (build-system copy-build-system)
     (arguments
      '(#:install-plan
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index ac062dfa15..466e9d1ac5 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -86,6 +87,7 @@
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -177,6 +179,13 @@
                                               '("include")
                                               input-directories)
                #t)))
+         (add-after 'unpack 'extend-test-time-outs
+           (lambda _
+             ;; These tests can time out on heavily-loaded and/or slow storage.
+             (substitute* (cons* "tests/qemu-iotests/common.qemu"
+                                 (find-files "tests/qemu-iotests" "^[0-9]+$"))
+               (("QEMU_COMM_TIMEOUT=[0-9]+" match)
+                (string-append match "9")))))
          (add-after 'unpack 'disable-unusable-tests
            (lambda _
              (substitute* "tests/Makefile.include"
@@ -1286,14 +1295,14 @@ domains, their live performance and resource utilization statistics.")
 (define-public criu
   (package
     (name "criu")
-    (version "3.14")
+    (version "3.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.openvz.org/criu/criu-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1jrr3v99g18gc0hriz0avq6ccdvyya0j6wwz888sdsc4icc30gzn"))))
+                "09d0j24x0cyc7wkgi7cnxqgfjk7kbdlm79zxpj8d356sa3rw2z24"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -1374,7 +1383,8 @@ domains, their live performance and resource utilization statistics.")
        ("libcap" ,libcap)
        ("libnet" ,libnet)
        ("libnl" ,libnl)
-       ("libbsd" ,libbsd)))
+       ("libbsd" ,libbsd)
+       ("nftables" ,nftables)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("perl" ,perl)
@@ -1606,7 +1616,8 @@ Open Container Initiative (OCI) image layout and its tagged images.")
                 "1v7k3ki10i6082r7zswblyirx6zck674y6bw3plssw4p1l2611rd"))))
     (build-system go-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("go-github-com-go-md2man" ,go-github-com-go-md2man)))
     (inputs
      `(("btrfs-progs" ,btrfs-progs)
        ("eudev" ,eudev)
@@ -1625,13 +1636,18 @@ Open Container Initiative (OCI) image layout and its tagged images.")
          (replace 'build
            (lambda* (#:key import-path #:allow-other-keys)
              (with-directory-excursion (string-append "src/" import-path)
-               ;; TODO: build manpages with 'go-md2man'.
                (invoke "make" "bin/skopeo"))))
+         (add-after 'build 'build-docs
+           (lambda* (#:key import-path #:allow-other-keys)
+             (with-directory-excursion (string-append "src/" import-path)
+               (invoke "make" "docs"))))
          (replace 'install
            (lambda* (#:key import-path outputs #:allow-other-keys)
              (with-directory-excursion (string-append "src/" import-path)
                (let ((out (assoc-ref outputs "out")))
-                 (invoke "make" "install-binary" "install-completions"
+                 (install-file "default-policy.json"
+                               (string-append out "/etc/containers"))
+                 (invoke "make" "install-binary" "install-completions" "install-docs"
                          (string-append "PREFIX=" out)))))))))
     (home-page "https://github.com/containers/skopeo")
     (synopsis "Interact with container images and container image registries")
@@ -1764,7 +1780,7 @@ DOS or Microsoft Windows.")
 (define-public xen
   (package
     (name "xen")
-    (version "4.13.0")
+    (version "4.14.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1773,7 +1789,7 @@ DOS or Microsoft Windows.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0py50n995gv909i0d1lfdcj9wcp5g1d5z6m2291jqqlfyany138g"))))
+                "1s06zhzmkm7wylrxhas5v0sg2ackmmyw01gvv67r9idml55i0dh5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1887,13 +1903,14 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
                                          new-search-path ":")))
                     (setenv env-name new-env-value)))
                 environment-variable-names))
-             (setenv "CROSS_CPATH" (getenv "CPATH"))
+             (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
+             (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
              (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
              (filter-environment! cross?
-              '("CROSS_CPATH"
+              '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
                 "CROSS_LIBRARY_PATH"))
              (filter-environment! (lambda (e) (not (cross? e)))
-              '("CPATH"
+              '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                 "LIBRARY_PATH"))
              ;; Guix tries to be helpful and automatically adds
              ;; mini-os-git-checkout/include to the include path,
@@ -1902,7 +1919,7 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
                                     (not
                                      (string-contains e
                                       "mini-os-git-checkout")))
-              '("CPATH"
+              '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                 "LIBRARY_PATH"))
             (setenv "EFI_VENDOR" "guix")
              #t))
@@ -2032,3 +2049,48 @@ administrators and developers in managing the database.")
 libosinfo library.  It provides information about guest operating systems for
 use with virtualization provisioning tools")
     (license license:lgpl2.0+)))
+
+(define-public python-transient
+  (package
+    (name "python-transient")
+    (version "0.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "transient" version))
+       (sha256
+        (base32
+         "1pcyw8j2l354qa6c8gr58xd7fmxcx1svnfyr2rj5nh04ircx3x7l"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; Requires behave
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'fix-dependencies
+                    (lambda _
+                      (substitute* "setup.py"
+                        (("==")
+                         ">="))
+                      #t)))))
+    (propagated-inputs
+     `(("python-beautifultable" ,python-beautifultable)
+       ("python-click" ,python-click)
+       ("python-importlib-resources"
+        ,python-importlib-resources)
+       ("python-lark-parser" ,python-lark-parser)
+       ("python-marshmallow" ,python-marshmallow)
+       ("python-progressbar2" ,python-progressbar2)
+       ("python-requests" ,python-requests)
+       ("python-toml" ,python-toml)))
+    (native-inputs
+     `(("python-black" ,python-black)
+       ("python-mypy" ,python-mypy)
+       ("python-pyhamcrest" ,python-pyhamcrest)
+       ("python-twine" ,python-twine)))
+    (home-page
+     "https://github.com/ALSchwalm/transient")
+    (synopsis
+     "QEMU Wrapper written in Python")
+    (description
+     "@code{transient} is a wrapper for QEMU allowing the creation of virtual
+machines with shared folder, ssh, and disk creation support.")
+    (license license:expat)))
diff --git a/gnu/packages/visidata.scm b/gnu/packages/visidata.scm
index 68ea401362..6ba2939b4f 100644
--- a/gnu/packages/visidata.scm
+++ b/gnu/packages/visidata.scm
@@ -17,13 +17,13 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages visidata)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages python-science)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages time)
   #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
+  #:use-module (guix build utils)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages))
@@ -31,34 +31,34 @@
 (define-public visidata
   (package
     (name "visidata")
-    (version "1.5.2")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "visidata" version))
        (sha256
         (base32
-         "10adfyn4gkisvciqawgh2lakkhhnjjxiyp7mzbgcwkq1b3sigpf1"))))
+         "1p4x9fz59ablyjvp18y50zdsapavhzx7w5hk2v8rsar5ill8947v"))))
     (build-system python-build-system)
-    ;; Tests disabled because they are not packaged with the source tarball.
-    ;; Upstream suggests tests will be packaged with tarball around 2.0 release.
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests? (invoke "pytest"))
+             #t)))))
     (inputs
-     `(("python-dateutil" ,python-dateutil)
-       ("python-fonttools" ,python-fonttools)
-       ("python-h5py" ,python-h5py)
-       ("python-lxml" ,python-lxml)
-       ("python-openpyxl" ,python-openpyxl)
-       ("python-pandas" ,python-pandas)
-       ("python-psycopg2" ,python-psycopg2)
-       ("python-pyyaml" ,python-pyyaml)
-       ("python-requests" ,python-requests)
-       ("python-xlrd" ,python-xlrd)))
+     `(("dateutil" ,python-dateutil)
+       ("requests" ,python-requests)
+       ("lxml" ,python-lxml)
+       ("openpyxl" ,python-openpyxl)
+       ("xlrd" ,python-xlrd)))
+    (native-inputs
+     `(("pytest" ,python-pytest)))
     (synopsis "Terminal spreadsheet multitool for discovering and arranging data")
     (description
      "VisiData is an interactive multitool for tabular data.  It combines the
 clarity of a spreadsheet, the efficiency of the terminal, and the power of
 Python, into a lightweight utility which can handle millions of rows.")
     (home-page "https://www.visidata.org/")
-    (license (list license:gpl3
-                   license:expat)))) ;; visidata/vdtui.py
+    (license license:gpl3)))
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 67f099d19e..2d6fbf2c98 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018, 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;; Copyright © 2019, 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
@@ -131,10 +131,10 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
    (home-page "https://www.unix-ag.uni-kl.de/~massar/vpnc/")))
 
 (define-public vpnc-scripts
-  (let ((commit "1000e0f6dd7d6bff163169a46359211c1fc3a6d2"))
+  (let ((commit "3885f8bbc4ae03fd6da0ada6de12f7223a59595c"))
     (package
       (name "vpnc-scripts")
-      (version (string-append "20190116." (string-take commit 7)))
+      (version (string-append "20200925." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri
@@ -144,7 +144,7 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1g41yarz2bl0f73kbjqnywr485ghanbp7nmspklfb0n07yp0z6ak"))))
+                  "1pmi4n58q81pmn9arvfixhvv6vkkf3rpwac3hwnwyl882q5q0ccx"))))
       (build-system gnu-build-system)
       (inputs `(("guile" ,guile-3.0) ; for the wrapper scripts
                 ("coreutils" ,coreutils)
@@ -505,7 +505,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
 (define-public wireguard-linux-compat
   (package
     (name "wireguard-linux-compat")
-    (version "1.0.20200623")
+    (version "1.0.20201112")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.zx2c4.com/wireguard-linux-compat/"
@@ -513,12 +513,13 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
                                   ".tar.xz"))
               (sha256
                (base32
-                "0iclixsqfckaz6kz6a4lhzdary3xhfy1d0pz0pgrwy8m8mr3f28k"))))
+                "1qcpg1rcmy4h529a0spjm50qgxjgjy20j29fpbrqsv5xq3qfgsl9"))))
     (build-system linux-module-build-system)
     (outputs '("out"
                "kernel-patch"))
     (arguments
-     `(#:tests? #f ; No test suite
+     `(#:linux ,linux-libre-5.4         ; mustn't have WG built-in
+       #:tests? #f                      ; no test suite
        #:modules ((guix build linux-module-build-system)
                   (guix build utils)
                   (ice-9 popen)
@@ -538,7 +539,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
                (call-with-output-file "wireguard.patch"
                  (lambda (port)
                    (format port "~a" str))))
-               #t))
+             #t))
          (add-after 'install 'install-patch
            (lambda* (#:key outputs #:allow-other-keys)
              (install-file "wireguard.patch"
@@ -634,7 +635,7 @@ public keys and can roam across IP addresses.")
 (define-public xl2tpd
   (package
     (name "xl2tpd")
-    (version "1.3.15")
+    (version "1.3.16")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -643,7 +644,7 @@ public keys and can roam across IP addresses.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ppwza8nwm1av1vldw40gin9wrjrs4l9si50jad414js3k8ycaag"))))
+                "0is5ccrvijz0pfm45pfrlbb9y8231yz3c4zqs8mkgakl9rxajy6l"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list (string-append "PREFIX=" %output)
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 3ea4f7f867..7fe890502e 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
@@ -60,6 +62,7 @@
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages lisp-xyz)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages markup)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -341,6 +344,129 @@ access.")
     (properties `((lint-hidden-cve . ("CVE-2016-9179"))))
     (license license:gpl2)))
 
+(define-public kristall
+  ;; Fixes to the build system applied after the latest tag
+  ;; Use tagged release when updating
+  (let ((commit "204b08a9303e75cd8d4c252b0554935062766f86")
+        (revision "1"))
+    (package
+      (name "kristall")
+      (version (string-append "0.3-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/MasterQ32/kristall")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1mymq0dh6r0829x74j0jkw8hw46amqwbznlf1b4ra6w77h9yz3lj"))
+         (modules '((srfi srfi-1)
+                    (ice-9 ftw)
+                    (guix build utils)))
+         (snippet
+          '(let ((preserved-lib-files '("luis-l-gist")))
+             (with-directory-excursion "lib"
+               (for-each
+                (lambda (directory)
+                  (simple-format #t "deleting: ~A\n" directory)
+                  (delete-file-recursively directory))
+                (lset-difference string=?
+                                 (scandir ".")
+                                 (cons* "." ".." preserved-lib-files))))
+             ;; Contains executable of 7z and pscp
+             (delete-file-recursively "ci/tools")
+             ;; Remove bundled fonts
+             (delete-file-recursively "src/fonts")
+             #t))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build qt-utils)
+                    (guix build utils))
+         #:imported-modules (,@%gnu-build-system-modules
+                             (guix build qt-utils))
+         #:make-flags
+         (list (string-append "PREFIX=" %output))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)          ; no ./configure script
+           (delete 'check)              ; no check target
+           (add-before 'build 'set-program-version
+             (lambda _
+               ;; configure.ac relies on ‘git --describe’ to get the version.
+               ;; Patch it to just return the real version number directly.
+               (substitute* "src/kristall.pro"
+                 (("(KRISTALL_VERSION=).*" _ match)
+                  (string-append match ,version "\n")))
+               #t))
+           (add-before 'build 'dont-use-bundled-cmark
+             (lambda _
+               (substitute* "src/kristall.pro"
+                 (("(^include\\(.*cmark.*)" _ match)
+                  (string-append
+                   "LIBS += -I" (assoc-ref %build-inputs "cmark") " -lcmark")))
+               #t))
+           (add-before 'build 'dont-use-bundled-breeze-stylesheet
+             (lambda _
+               (substitute* "src/kristall.pro"
+                 (("../lib/BreezeStyleSheets/breeze.qrc")
+                  (string-append
+                   (assoc-ref %build-inputs "breeze-stylesheet") "/breeze.qrc")))
+               #t))
+           (add-before 'build 'dont-use-bundled-fonts
+             (lambda _
+               (substitute* "src/kristall.pro"
+                 ((".*fonts.qrc.*") ""))
+               (substitute* "src/main.cpp"
+                 (("/fonts/OpenMoji-Color")
+                  (string-append
+                   (assoc-ref %build-inputs "font-openmoji")
+                   "/share/fonts/truetype/OpenMoji-Color"))
+                 (("/fonts/NotoColorEmoji")
+                  (string-append
+                   (assoc-ref %build-inputs "font-google-noto")
+                   "/share/fonts/truetype/NotoColorEmoji")))
+               #t))
+           (add-after 'install 'wrap-program
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-qt-program out "kristall"))
+               #t)))))
+      (native-inputs
+       `(("breeze-stylesheet"
+          ,(let ((commit "2d595a956f8a5f493aa51139a470b768a6d82cce")
+                 (revision "0"))
+             (origin
+               (method git-fetch)
+               (uri
+                (git-reference
+                 (url "https://github.com/Alexhuszagh/BreezeStyleSheets")
+                 (commit "2d595a956f8a5f493aa51139a470b768a6d82cce")))
+               (file-name (git-file-name "breeze-stylesheet"
+                                         (git-version "0" revision commit)))
+               (sha256
+                (base32
+                 "1kvkxkisi3czldnb43ig60l55pi4a3m2a4ixp7krhpf9fc5wp294")))))))
+      (inputs
+       `(("cmark" ,cmark)
+         ("font-google-noto" ,font-google-noto)
+         ("font-openmoji" ,font-openmoji)
+         ("openssl" ,openssl)
+         ("qtbase" ,qtbase)
+         ("qtmultimedia" ,qtmultimedia)
+         ("qtsvg" ,qtsvg)))
+      (home-page "https://kristall.random-projects.net")
+      (synopsis "Small-internet graphical client")
+      (description "Graphical small-internet client with with many features
+including multi-protocol support (gemini, HTTP, HTTPS, gopher, finger),
+bookmarks, TSL certificates management, outline generation and a tabbed
+interface.")
+      (license (list license:gpl3+
+                     ;; for breeze-stylesheet
+                     license:expat)))))
+
 (define-public qutebrowser
   (package
     (name "qutebrowser")
@@ -412,7 +538,7 @@ access.")
                                       (assoc-ref inputs "qtwebengine")
                                       "/lib/qt5/libexec/QtWebEngineProcess")))
                (wrap-program bin
-                 `("QTWEBENGINEPROCESS_PATH" ":" prefix (,qt-process-path)))
+                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
                #t))))))
     (home-page "https://qutebrowser.org/")
     (synopsis "Minimal, keyboard-focused, vim-like web browser")
@@ -461,7 +587,7 @@ driven and does not detract you from your daily work.")
     (name "nyxt")
     ;; Package the pre-release because latest stable 1.5.0 does not build
     ;; anymore.
-    (version "2-pre-release-2")
+    (version "2-pre-release-4")
     (source
      (origin
        (method git-fetch)
@@ -472,7 +598,7 @@ driven and does not detract you from your daily work.")
              (commit version)))
        (sha256
         (base32
-         "0wqq8ppn0n7js3pxzzb36h0lf3r3gqhs2hi8h85c3n8a54hnbp8q"))
+         "00865plmvgl1nj009a4w9bcb5mf0zgqjx7w6slacyqgidjzad6qm"))
        (file-name (git-file-name "nyxt" version))))
     (build-system gnu-build-system)
     (arguments
@@ -482,27 +608,20 @@ driven and does not detract you from your daily work.")
        #:strip-binaries? #f             ; Stripping breaks SBCL binaries.
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-version ; Version is guessed from .git which Guix does not have.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((version (format #f "~a" ,version))
-                   (file "source/global.lisp"))
-               (chmod file #o666)
-               (let ((port (open-file file "a")))
-                 (format port "(setf +version+ ~s)" version)
-                 (close-port port)))
-             #t))
-         (add-before 'build 'make-desktop-version-number
-           (lambda _
-             (with-output-to-file "version"
-               (lambda _
-                 (format #t "~a" ,version)
-                 #t))))
-
          (delete 'configure)
          (add-before 'build 'fix-common-lisp-cache-folder
            (lambda _
              (setenv "HOME" "/tmp")
              #t))
+         (add-before 'build 'set-version
+           (lambda _
+             (setenv "NYXT_VERSION" ,version)
+             #t))
+         (add-before 'check 'configure-tests
+           (lambda _
+             (setenv "NYXT_TESTS_NO_NETWORK" "1")
+             (setenv "NYXT_TESTS_ERROR_ON_FAIL" "1")
+             #t))
          (add-after 'install 'wrap-program
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((bin (string-append (assoc-ref outputs "out") "/bin/nyxt"))
@@ -515,7 +634,8 @@ driven and does not detract you from your daily work.")
                            ":"))
                     (gi-path (string-join
                               (map (lambda (lib)
-                                     (string-append (assoc-ref inputs lib) "/lib/girepository-1.0"))
+                                     (string-append (assoc-ref inputs lib)
+                                                    "/lib/girepository-1.0"))
                                    libs)
                               ":"))
                     (xdg-path (string-join
@@ -536,6 +656,7 @@ driven and does not detract you from your daily work.")
     (inputs
      `(("alexandria" ,sbcl-alexandria)
        ("bordeaux-threads" ,sbcl-bordeaux-threads)
+       ("cl-chanl" ,sbcl-chanl)
        ("cl-containers" ,sbcl-cl-containers)
        ("cl-css" ,sbcl-cl-css)
        ("cl-json" ,sbcl-cl-json)
@@ -551,7 +672,6 @@ driven and does not detract you from your daily work.")
        ("iolib" ,sbcl-iolib)
        ("local-time" ,sbcl-local-time)
        ("log4cl" ,sbcl-log4cl)
-       ("lparallel" ,sbcl-lparallel)
        ("mk-string-metrics" ,sbcl-mk-string-metrics)
        ("moptilities" ,sbcl-moptilities)
        ("osicat" ,sbcl-osicat)
@@ -567,6 +687,7 @@ driven and does not detract you from your daily work.")
        ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames)
        ("trivial-types" ,sbcl-trivial-types)
        ("unix-opts" ,sbcl-unix-opts)
+       ("usocket" ,sbcl-usocket)
        ;; WebKitGTK deps
        ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
        ("cl-webkit" ,sbcl-cl-webkit)
@@ -588,7 +709,7 @@ key-bindings and is fully configurable and extensible in Common Lisp.")
 (define-public bombadillo
   (package
     (name "bombadillo")
-    (version "2.2.0")
+    (version "2.3.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -596,7 +717,7 @@ key-bindings and is fully configurable and extensible in Common Lisp.")
                     (commit version)))
               (sha256
                (base32
-                "1m52b1wk48gkqmjy8l0x3jaksrx2v8w6w59lhr7zaw2i0n4f5k0z"))
+                "0n0gza9qfx1hxigicyvf6wg1ccc2irvh17yhzpw9gx75ls5ybrjn"))
               (file-name (git-file-name name version))))
     (build-system go-build-system)
     (arguments
@@ -615,7 +736,6 @@ key-bindings and is fully configurable and extensible in Common Lisp.")
                              (pixdir (string-append sharedir "/pixmaps")))
                         (with-directory-excursion builddir
                           (install-file "bombadillo.desktop" appdir)
-                          (install-file "LICENSE" docdir)
                           (install-file "bombadillo.1" mandir)
                           (install-file "bombadillo-icon.png" pixdir)
                           #t)))))))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5ca9cf19d0..e072f56eed 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -46,6 +46,7 @@
 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -128,6 +129,8 @@
   #:use-module (gnu packages lisp-xyz)
   #:use-module (gnu packages lsof)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages mail)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages markup)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
@@ -232,14 +235,14 @@ Interface} specification.")
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
     ;; Consider updating the nginx-documentation package together with this one.
-    (version "1.19.3")
+    (version "1.19.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1w4dkq7bl5gyix3x0ap3d9lndh7zyvc3mscl693d4ybql57vgrci"))))
+                "173rv8gacd9bakb0r9jmkr4pqgjw9mzpdh3f7x2d8ln4ssplc2jw"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -322,9 +325,9 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.")
 
 (define-public nginx-documentation
   ;; This documentation should be relevant for the current nginx package.
-  (let ((version "1.19.3")
-        (revision 2603)
-        (changeset "94ebfbcd68bb"))
+  (let ((version "1.19.5")
+        (revision 2622)
+        (changeset "64bbb9163a14"))
     (package
       (name "nginx-documentation")
       (version (simple-format #f "~A-~A-~A" version revision changeset))
@@ -336,7 +339,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.")
                (file-name (string-append name "-" version))
                (sha256
                 (base32
-                 "1yryharm4dkjnj424r7sy0rc28h8ypfyj8as255a42gmllkwl2pg"))))
+                 "085f3c00mqsaq95hp1bv9y0b517jv4zzs2q0j1c9m8nvh7k09zaa"))))
       (build-system gnu-build-system)
       (arguments
        '(#:tests? #f                    ; no test suite
@@ -565,7 +568,7 @@ documentation.")
   (package
     (inherit nginx)
     (name "nginx-lua-module")
-    (version "0.10.15")
+    (version "0.10.16")
     (source
      (origin
        (method git-fetch)
@@ -574,8 +577,7 @@ documentation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name "lua-nginx-module" version))
        (sha256
-        (base32
-         "1j216isp0546hycklbr5wi8mlga5hq170hk7f2sm16sfavlkh5gz"))))
+        (base32 "0nwcbqm1visg1dkxav7qa16w0d0n8cgqn4881xiqn88xfkxj0dyg"))))
     (build-system gnu-build-system)
     (inputs
      `(("nginx-sources" ,(package-source nginx-socket-cloexec))
@@ -1422,7 +1424,7 @@ used to validate and fix HTML data.")
 (define-public esbuild
   (package
     (name "esbuild")
-    (version "0.7.14")
+    (version "0.8.15")
     (source
      (origin
        (method git-fetch)
@@ -1431,8 +1433,7 @@ used to validate and fix HTML data.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1y5hqymv2r8r29f8vh8kgncj3wlkg4fzi0zlc7mgyss872ajkc7i"))
+        (base32 "1b8ibxx1imh7jaspi3b36kpmijc06viv49ms7fml20yc0br2qbwj"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -1447,15 +1448,15 @@ used to validate and fix HTML data.")
        (modify-phases %standard-phases
          (replace 'check
            (lambda* (#:key tests? unpack-path #:allow-other-keys)
-             (if tests?
+             (when tests?
                (with-directory-excursion (string-append "src/" unpack-path)
                  (invoke "make" "test-go")))
              #t)))))
     (inputs
-     `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
+     `(("golang.org/x/sys" ,go-golang-org-x-sys)))
     (native-inputs
-     `(("go-github-com-kylelemons-godebug" ,go-github-com-kylelemons-godebug)))
-    (home-page "https://github.com/evanw/esbuild")
+     `(("github.com/kylelemons/godebug" ,go-github-com-kylelemons-godebug)))
+    (home-page "https://esbuild.github.io/")
     (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
     (description
      "The esbuild tool provides a unified bundler, transpiler and
@@ -3790,15 +3791,14 @@ exists it is used instead.")
 (define-public perl-lwp-protocol-https
   (package
     (name "perl-lwp-protocol-https")
-    (version "6.07")
+    (version "6.09")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
                            "LWP-Protocol-https-" version ".tar.gz"))
        (sha256
-        (base32
-         "1rxrpwylfw1afah0nk96kgkwjbl2p1a7lwx50iipg8c4rx3cjb2j"))))
+        (base32 "14pm785cgyrnppks6ccasb2vkqifh0a8fz36nmnhc2v926jy3kqn"))))
     (build-system perl-build-system)
     (native-inputs
      ;; For tests.
@@ -4424,14 +4424,14 @@ RFC 6570.")
               (uri (string-append
                     "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-"
                     version".tar.gz"))
-              (patches (search-patches "perl-www-curl-remove-symbol.patch"))
+              (patches (search-patches "perl-www-curl-fix-struct-void.patch"
+                                       "perl-www-curl-remove-symbol.patch"))
               (sha256
                (base32
                 "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj"))))
     (build-system perl-build-system)
     (arguments
      '(#:tests? #f                          ;XXX: tests require network access
-
        #:phases (modify-phases %standard-phases
                    (add-before 'configure 'set-search-path
                      (lambda _
@@ -5632,14 +5632,14 @@ on the fly.")
 (define-public hitch
   (package
     (name "hitch")
-    (version "1.6.0")
+    (version "1.7.0")
     (home-page "https://hitch-tls.org/")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "source/hitch-" version ".tar.gz"))
               (sha256
                (base32
-                "01n70yf8hx42jb801jv5q1xhrpqxyjnqhd98hjf81lvxpd5fnisf"))))
+                "1i75giwyr66ip8xsvk3gg5xdbxnmcabgxz8dqi06c58mw7qzhzn9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -5772,13 +5772,13 @@ deployments.")
   (package
     (name "varnish")
     (home-page "https://varnish-cache.org/")
-    (version "6.4.0")
+    (version "6.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
               (sha256
                (base32
-                "1hkn98vbxk7rc1sd08367qn6rcv8wkxgwbmm1x46y50vi0nvldpn"))))
+                "1dfdswri6lkfk6kml3szvffm91y49pajgqy1k5y26llqixl4r5hi"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
@@ -5846,18 +5846,25 @@ configuration language.")
   (package
     (name "varnish-modules")
     (home-page "https://github.com/varnish/varnish-modules")
-    (version "0.16.0")
+    (version "0.17.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/varnish/varnish-modules"
-                                  "/releases/download/varnish-modules-" version
-                                  "/varnish-modules-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ph5bplsip4rycql1c2hgbvmrwbgcrgv2ldgfp7saxxbsv5cpcds"))))
+                "0zg8y2sgkygdani70zp9rbx278431fmssj26d47c5qsiw939i519"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+
+       ;; For bootstrapping.
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+
+       ;; For generating manuals.
+       ("rst2man" ,python-docutils)))
     (inputs
      `(("python" ,python)
        ("varnish" ,varnish)))
@@ -7691,3 +7698,40 @@ solution for any project's interface needs:
 @item Easily integrated and extensible with Python or Lua scripting.
 @end itemize\n")
     (license license:expat)))
+
+(define-public gmnisrv
+  (let ((commit "d484ba0ab0020866535a44be5948c9482b8f2b8d")
+        (revision "1"))
+    (package
+      (name "gmnisrv")
+      (version (git-version "0" revision commit))
+      (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "11phipixsxx1jgm42agp76p5s68l0zj65kgb41vzaymgwcq79ivn"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'set-variables
+             (lambda _
+               (setenv "CC" "gcc")
+               #t))
+           (delete 'check))))
+      (inputs
+       `(("openssl" ,openssl)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("scdoc" ,scdoc)))
+      (propagated-inputs
+       `(("mailcap" ,mailcap)))
+      (synopsis "Simple Gemini protocol server")
+      (description "gmnisrv is a simple Gemini protocol server written in C.")
+      (license (list license:gpl3+
+                     license:bsd-3))))) ;; for ini.c and ini.h
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 7958375bed..89a3b4c18b 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
@@ -224,14 +224,14 @@ acceleration in mind, leveraging common 3D graphics APIs for best performance.")
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.30.1")
+    (version "2.30.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   "webkitgtk-" version ".tar.xz"))
               (sha256
                (base32
-                "1cfnsl5kvwrbclmp7v9q9ynrz702i9ncb6xmx6972dxpmpyrvi8p"))
+                "0zsy3say94d9bhaan0l6mfr59z03a5x4kngyy8b2i20n77q19skd"))
               (patches (search-patches "webkitgtk-share-store.patch"
                                        "webkitgtk-bind-all-fonts.patch"))))
     (build-system cmake-build-system)
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index c38936d55a..0d93af0dc9 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -76,7 +76,7 @@
 (define-public wine
   (package
     (name "wine")
-    (version "5.12")
+    (version "5.21")
     (source
      (origin
        (method url-fetch)
@@ -88,7 +88,7 @@
               (string-append "https://dl.winehq.org/wine/source/" dir
                              "wine-" version ".tar.xz")))
        (sha256
-        (base32 "0bl4ii4h1w4z8kb6dpdc1pgwk0wrhm61c2q2nzpcckkrqra75wc7"))))
+        (base32 "0h185lfpid6cw1sz8rmkpky2l11izpb0w8j0cq6ww6yi94jmq6js"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
@@ -171,21 +171,22 @@
                     (let* ((out (assoc-ref outputs "out"))
                            (icd (string-append out "/share/vulkan/icd.d")))
                       (mkdir-p icd)
-                      (copy-file (string-append (assoc-ref inputs "mesa")
-                                 "/share/vulkan/icd.d/radeon_icd.i686.json")
+                      (copy-file (string-append
+                                  (assoc-ref inputs "mesa")
+                                  "/share/vulkan/icd.d/radeon_icd.i686.json")
                                  (string-append icd "/radeon_icd.i686.json"))
-                      (copy-file (string-append (assoc-ref inputs "mesa")
-                                 "/share/vulkan/icd.d/intel_icd.i686.json")
+                      (copy-file (string-append
+                                  (assoc-ref inputs "mesa")
+                                  "/share/vulkan/icd.d/intel_icd.i686.json")
                                  (string-append icd "/intel_icd.i686.json"))
                       (wrap-program (string-append out "/bin/wine-preloader")
-                                    `("VK_ICD_FILENAMES" ":" =
-                                      (,(string-append icd
-                                        "/radeon_icd.i686.json" ":"
-                                        icd "/intel_icd.i686.json"))))
+                        `("VK_ICD_FILENAMES" ":" =
+                          (,(string-append icd
+                                           "/radeon_icd.i686.json" ":"
+                                           icd "/intel_icd.i686.json"))))
                       #t)))))
              (_
-              `())
-             )
+              `()))
          (add-after 'configure 'patch-dlopen-paths
            ;; Hardcode dlopened sonames to absolute paths.
            (lambda _
@@ -227,34 +228,35 @@ integrate Windows applications into your desktop.")
          ;; when installing to x86_64-linux so both are available.
          ;; TODO: Add more JSON files as they become available in Mesa.
          ,@(match (%current-system)
-           ((or "x86_64-linux")
-             `((add-after 'copy-wine32-binaries 'wrap-executable
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out")))
-                   (wrap-program (string-append out "/bin/wine-preloader")
-                                 `("VK_ICD_FILENAMES" ":" =
-                                   (,(string-append (assoc-ref inputs "mesa")
-                                     "/share/vulkan/icd.d/radeon_icd.x86_64.json" ":"
-                                     (assoc-ref inputs "mesa")
-                                     "/share/vulkan/icd.d/intel_icd.x86_64.json" ":"
-                                     (assoc-ref inputs "wine")
-                                     "/share/vulkan/icd.d/radeon_icd.i686.json" ":"
-                                     (assoc-ref inputs "wine")
-                                     "/share/vulkan/icd.d/intel_icd.i686.json"))))
-                   (wrap-program (string-append out "/bin/wine64-preloader")
-                                 `("VK_ICD_FILENAMES" ":" =
-                                   (,(string-append (assoc-ref inputs "mesa")
-                                     "/share/vulkan/icd.d/radeon_icd.x86_64.json"
-                                     ":" (assoc-ref inputs "mesa")
-                                     "/share/vulkan/icd.d/intel_icd.x86_64.json"
-                                     ":" (assoc-ref inputs "wine")
-                                     "/share/vulkan/icd.d/radeon_icd.i686.json"
-                                     ":" (assoc-ref inputs "wine")
-                                     "/share/vulkan/icd.d/intel_icd.i686.json"))))
-                   #t)))))
-           (_
-            `())
-           )
+             ((or "x86_64-linux")
+              `((add-after 'copy-wine32-binaries 'wrap-executable
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (let* ((out (assoc-ref outputs "out")))
+                      (wrap-program (string-append out "/bin/wine-preloader")
+                        `("VK_ICD_FILENAMES" ":" =
+                          (,(string-append
+                             (assoc-ref inputs "mesa")
+                             "/share/vulkan/icd.d/radeon_icd.x86_64.json" ":"
+                             (assoc-ref inputs "mesa")
+                             "/share/vulkan/icd.d/intel_icd.x86_64.json" ":"
+                             (assoc-ref inputs "wine")
+                             "/share/vulkan/icd.d/radeon_icd.i686.json" ":"
+                             (assoc-ref inputs "wine")
+                             "/share/vulkan/icd.d/intel_icd.i686.json"))))
+                      (wrap-program (string-append out "/bin/wine64-preloader")
+                        `("VK_ICD_FILENAMES" ":" =
+                          (,(string-append
+                             (assoc-ref inputs "mesa")
+                             "/share/vulkan/icd.d/radeon_icd.x86_64.json"
+                             ":" (assoc-ref inputs "mesa")
+                             "/share/vulkan/icd.d/intel_icd.x86_64.json"
+                             ":" (assoc-ref inputs "wine")
+                             "/share/vulkan/icd.d/radeon_icd.i686.json"
+                             ":" (assoc-ref inputs "wine")
+                             "/share/vulkan/icd.d/intel_icd.i686.json"))))
+                      #t)))))
+             (_
+              `()))
          (add-after 'install 'copy-wine32-binaries
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((wine32 (assoc-ref %build-inputs "wine"))
@@ -267,6 +269,13 @@ integrate Windows applications into your desktop.")
                (copy-file (string-append wine32 "/bin/.wine-preloader-real")
                           (string-append out "/bin/wine-preloader"))
                #t)))
+         (add-after 'install 'copy-wine32-libraries
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((wine32 (assoc-ref %build-inputs "wine"))
+                    (out (assoc-ref %outputs "out")))
+               (copy-recursively (string-append wine32 "/lib/wine32")
+                                 (string-append out "/lib/wine32"))
+               #t)))
          (add-after 'compress-documentation 'copy-wine32-manpage
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((wine32 (assoc-ref %build-inputs "wine"))
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 2fafee29a0..7e2605ca9b 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
-;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
@@ -36,6 +36,7 @@
 ;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com>
 ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
 ;;; Copyright © 2020 EuAndreh <eu@euandre.org>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -71,6 +72,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools) ;for meson-0.55
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
@@ -272,14 +274,14 @@ commands would.")
 (define-public i3-wm
   (package
     (name "i3-wm")
-    (version "4.18.2")
+    (version "4.18.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://i3wm.org/downloads/i3-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "030jym6b8b07yf4y6pb806hg8k77zsprv569gy0r72rh5zb1g1mj"))))
+                "03dijnwv2n8ak9jq59fhq0rc80m5wjc9d54fslqaivnnz81pkbjk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -342,7 +344,7 @@ many programming languages.")
 (define-public i3-gaps
   (package (inherit i3-wm)
            (name "i3-gaps")
-           (version "4.18.2")
+           (version "4.18.3")
            (source (origin
                      (method url-fetch)
                      (uri (string-append
@@ -350,7 +352,7 @@ many programming languages.")
                            version "/i3-" version ".tar.bz2"))
                      (sha256
                       (base32
-                       "0lz08wf4b0yprzqsmymn94kiyg885dcwmh0p64v2rnf52s165g2g"))))
+                       "1hcakwyz78lgp8mhqv7pw86jlb3m415pfql1q19rkijnhm3fn3ci"))))
            (home-page "https://github.com/Airblader/i3")
            (synopsis "Tiling window manager with gaps")
            (description "i3-gaps is a fork of i3wm, a tiling window manager
@@ -610,7 +612,7 @@ Features include:
                                         "/bin/gawk")))
 
                (substitute* "lock"
-                 (("$(which wmctrl)") wmctrl)
+                 (("\\$\\(command -V wmctrl\\)") wmctrl)
                  (("convert") mconvert)
                  (("shot=\\(import") (string-append "shot=\(" mimport))
                  (("awk -F") (string-append awk " -F"))
@@ -629,7 +631,7 @@ Features include:
                             (string-append bin "/i3lock-fancy"))
                (copy-recursively "icons" icons)
                #t))))))
-    (native-inputs
+    (inputs
      `(("imagemagick" ,imagemagick)
        ("wmctrl" ,wmctrl)
        ("gawk" ,gawk)))
@@ -1341,7 +1343,7 @@ functionality to display information about the most commonly used services.")
 (define-public wlroots
   (package
     (name "wlroots")
-    (version "0.10.1")
+    (version "0.12.0")
     (source
      (origin
        (method git-fetch)
@@ -1350,32 +1352,35 @@ functionality to display information about the most commonly used services.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0j2lh9vc92zhn44rjbia5aw3y1rpgfng1x1h17lcvj5m4i6vj0pc"))))
+        (base32 "01j38lmgs2c6fq68v8b75pkilia2wsgzgp46ivfbi9hhx47kgcfn"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dlogind-provider=elogind")
+       #:meson ,meson-0.55
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'hardcode-paths
            (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "xwayland/xwayland.c"
+             (substitute* "xwayland/server.c"
                (("Xwayland") (string-append (assoc-ref inputs
                                                        "xorg-server-xwayland")
                                             "/bin/Xwayland")))
              #t)))))
-    (inputs `(("elogind" ,elogind)
-              ("eudev" ,eudev)
-              ("libinput" ,libinput)
-              ("libxkbcommon" ,libxkbcommon)
-              ("mesa" ,mesa)
-              ("pixman" ,pixman)
-              ("wayland" ,wayland)
-              ("xorg-server-xwayland" ,xorg-server-xwayland)))
-    (native-inputs `(("ffmpeg" ,ffmpeg)
-                     ("libcap" ,libcap)
-                     ("libpng" ,libpng)
-                     ("pkg-config" ,pkg-config)
-                     ("wayland-protocols" ,wayland-protocols)))
+    (propagated-inputs
+     `(;; As required by wlroots.pc.
+       ("elogind" ,elogind)
+       ("eudev" ,eudev)
+       ("libinput" ,libinput)
+       ("libxkbcommon" ,libxkbcommon)
+       ("mesa" ,mesa)
+       ("pixman" ,pixman)
+       ("wayland" ,wayland)
+       ("xcb-util-errors" ,xcb-util-errors)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xorg-server-xwayland" ,xorg-server-xwayland)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("wayland-protocols" ,wayland-protocols)))
     (home-page "https://github.com/swaywm/wlroots")
     (synopsis "Pluggable, composable, unopinionated modules for building a
 Wayland compositor")
@@ -1386,9 +1391,7 @@ modules for building a Wayland compositor.")
 (define-public sway
   (package
     (name "sway")
-    ;; XXX When updating, check whether grim-revert-output-rotation.patch can
-    ;; be dropped from the grim package.
-    (version "1.4")
+    (version "1.5.1")
     (source
      (origin
        (method git-fetch)
@@ -1397,7 +1400,7 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11qf89y3q92g696a6f4d23qb44gqixg6qxq740vwv2jw59ms34ja"))))
+        (base32 "1xsa3h8zhf29p0mi90baxpr76jkd9pd1gr97ky8cnjbcs4isj9j0"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -1426,21 +1429,21 @@ modules for building a Wayland compositor.")
               ("swaybg" ,swaybg)
               ("wayland" ,wayland)
               ("wlroots" ,wlroots)))
-    (native-inputs `(("libcap" ,libcap)
-                     ("linux-pam" ,linux-pam)
-                     ("mesa" ,mesa)
-                     ("pkg-config" ,pkg-config)
-                     ("scdoc" ,scdoc)
-                     ("wayland-protocols" ,wayland-protocols)))
+    (native-inputs
+     `(("linux-pam" ,linux-pam)
+       ("mesa" ,mesa)
+       ("pkg-config" ,pkg-config)
+       ("scdoc" ,scdoc)
+       ("wayland-protocols" ,wayland-protocols)))
     (home-page "https://github.com/swaywm/sway")
     (synopsis "Wayland compositor compatible with i3")
     (description "Sway is a i3-compatible Wayland compositor.")
-    (license license:expat)))       ; MIT license
+    (license license:expat)))
 
 (define-public swayidle
   (package
     (name "swayidle")
-    (version "1.5")
+    (version "1.6")
     (source
      (origin
        (method git-fetch)
@@ -1449,7 +1452,7 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
+        (base32 "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dlogind-provider=elogind")))
@@ -1466,7 +1469,7 @@ modules for building a Wayland compositor.")
 (define-public swaylock
   (package
     (name "swaylock")
-    (version "1.4")
+    (version "1.5")
     (source
      (origin
        (method git-fetch)
@@ -1475,7 +1478,7 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
+        (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
     (build-system meson-build-system)
     (inputs `(("cairo" ,cairo)
               ("gdk-pixbuf" ,gdk-pixbuf)
@@ -1557,7 +1560,7 @@ Wlroots based compositors.")
 (define-public mako
   (package
     (name "mako")
-    (version "1.4")
+    (version "1.4.1")
     (source
      (origin
        (method git-fetch)
@@ -1566,7 +1569,7 @@ Wlroots based compositors.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"))))
+        (base32 "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"))))
     (build-system meson-build-system)
     (inputs `(("cairo" ,cairo)
               ("elogind" ,elogind)
@@ -1717,7 +1720,8 @@ productive, customizable lisp based systems.")
     (name "stumpish")
     (inputs
      `(("bash" ,bash)
-       ("rlwrap" ,rlwrap)))
+       ("rlwrap" ,rlwrap)
+       ("xprop" ,xprop)))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
@@ -1729,6 +1733,8 @@ productive, customizable lisp based systems.")
          (substitute* "stumpish"
            (("rlwrap") (string-append (assoc-ref %build-inputs "rlwrap")
                                       "/bin/rlwrap"))
+           (("xprop") (string-append (assoc-ref %build-inputs "xprop")
+                                      "/bin/xprop"))
            (("/bin/sh") (string-append (assoc-ref %build-inputs "bash")
                                        "/bin/bash")))
          (install-file "stumpish" (string-append %output "/bin")))))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index be8d0234f9..b433ea4996 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -41,6 +41,7 @@
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;; Copyright © 2020 James Smith <jsubuntuxp@disroot.org>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -110,6 +111,38 @@
 
 ;; packages outside the x.org system proper
 
+(define-public xtitle
+  (package
+    (name "xtitle")
+    (version "0.4.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/baskerville/xtitle")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0f5070k2bwarghl1vq886pl52xck1x5p7x3qhlfchsc2y3dcqms9"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (arguments
+     `(#:tests? #f                      ;no test suite
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          (string-append "PREFIX=" %output))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
+    (home-page "https://github.com/baskerville/xtitle")
+    (synopsis "Output X window titles")
+    (description
+     "If arguments are given, @code{xtitle} outputs the title of each
+specified window, otherwise it outputs the title of the active window.  With
+@emph{snoop} mode on, it continuously monitors the specified windows and
+outputs when titles change.")
+    (license license:unlicense)))
+
 (define-public arandr
   (package
     (name "arandr")
@@ -843,7 +876,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
 (define-public xlockmore
   (package
     (name "xlockmore")
-    (version "5.62")
+    (version "5.66")
     (source (origin
              (method url-fetch)
              (uri (list (string-append "http://sillycycle.com/xlock/"
@@ -854,7 +887,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
                                        "xlockmore-" version ".tar.xz")))
              (sha256
               (base32
-               "0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi"))))
+               "0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list (string-append "--enable-appdefaultdir="
@@ -1089,7 +1122,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "1.5")
+    (version "1.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1097,7 +1130,7 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "0yyl6vzpfd7dq8a8k9dn8r494542ci4r1i0pillg1p4f7jvryd3b"))))
+                "1a5ffxyhl6crspybcfsx5ribgrgkzwfl5w9y32slxbgjwczb473h"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -1458,7 +1491,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
 (define-public rofi
   (package
     (name "rofi")
-    (version "1.6.0")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/DaveDavenport/rofi/"
@@ -1466,7 +1499,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
                                   version "/rofi-" version ".tar.xz"))
               (sha256
                (base32
-                "0566b499lbpfb1gk4p17iw78ywmk9l2jww1kqjbdanrl22hai1y4"))))
+                "12p9z8bl1gg8k024m4a6zfz7gf1zbyffardh98raqgabn6knwk22"))))
     (build-system gnu-build-system)
     (inputs
      `(("pango" ,pango)
@@ -2495,7 +2528,7 @@ using @command{dmenu}.")
 (define-public wofi
   (package
     (name "wofi")
-    (version "1.1.2")
+    (version "1.2.3")
     (source (origin
               (method hg-fetch)
               (uri (hg-reference
@@ -2504,7 +2537,7 @@ using @command{dmenu}.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "086j5wshawjbwdmmmldivfagc2rr7g5a2gk11l0snqqslm294xsn"))))
+                "0glpb2gf5n78s01z3rn614ak8ibxhfr824gy6xlljbxclgds264i"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t))
@@ -2550,3 +2583,35 @@ such as sway, similar to @command{rofi}.")
      "@command{dex}, @dfn{DesktopEntry Execution}, is a program to generate
 and execute @file{.desktop} files of the Application type.")
     (license license:gpl3+)))
+
+(define-public sx
+  (package
+    (name "sx")
+    (version "2.1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Earnestly/sx")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0p24ghp1ygvyc2hv81byhxax7491yhcc5priq5ldv07nzl7akagc"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; no tests
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "PREFIX=" out)))
+       #:phases
+       (modify-phases %standard-phases
+         ;; no configure script
+         (delete 'configure))))
+    (propagated-inputs
+     `(("xauth" ,xauth)))
+    (home-page "https://github.com/Earnestly/sx")
+    (synopsis "Start an xorg server")
+    (description
+     "@command{sx} is a simple alternative to both @command{xinit} and
+@command{startx} for starting an Xorg server.")
+    (license license:x11)))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 2b9c13e6c9..fbe06a1c76 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Florian Paul Schmidt <mista.tapas@gmx.net>
-;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2020 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
@@ -64,6 +64,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix gexp)
   #:use-module ((guix licenses) #:hide (freetype))
   #:use-module (guix packages)
@@ -121,7 +122,7 @@ Xfce Desktop Environment.")
 (define-public xfconf
   (package
     (name "xfconf")
-    (version "4.14.3")
+    (version "4.14.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -129,7 +130,7 @@ Xfce Desktop Environment.")
                                   "xfconf-" version ".tar.bz2"))
               (sha256
                (base32
-                "00hcb96bw5ylfs9ppblchj8zv9026m3dlf7lnmgiq5f6xyh5542q"))))
+                "0wszp93z64112jq5wm4133s64in2ndvnzbgsbn8dh7p5xhp64dyc"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -202,6 +203,41 @@ storage system.")
 to share commonly used Xfce widgets among the Xfce applications.")
     (license lgpl2.0+)))
 
+(define-public elementary-xfce-icon-theme
+  (package
+    (name "elementary-xfce-icon-theme")
+    (version "0.15.1")
+    (source (origin
+              (method git-fetch)
+              (uri
+               (git-reference
+                (url "https://github.com/shimmerproject/elementary-xfce")
+                (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rl15kh9c7qxw4pvwmw44fb4v3vwh6zin4wpx55bnvm5j76y6p3f"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; no check target
+       #:make-flags '("CC=gcc")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t)))))
+    (native-inputs
+     `(("gtk+" ,gtk+)
+       ("optipng" ,optipng)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://shimmerproject.org/")
+    (synopsis "Elementary icons extended and maintained for Xfce")
+    (description "This is a fork of the upstream elementary project.  This icon
+theme is supposed to keep everything working for Xfce, but gets updates from
+upstream occasionally.")
+    (license gpl2+)))
+
 (define-public exo
   (package
     (name "exo")
@@ -662,7 +698,7 @@ like appearance, display, keyboard and mouse settings.")
 (define-public thunar
   (package
     (name "thunar")
-    (version "1.8.15")
+    (version "1.8.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -670,7 +706,7 @@ like appearance, display, keyboard and mouse settings.")
                                   "thunar-" version ".tar.bz2"))
               (sha256
                (base32
-                "14vw4yaf9fff24zmj4dp8r8hf8mb19hl4w4l0jc8c4qzy865c93n"))))
+                "0k1w2zwa8z6sc8vi3frva74npks79x79n7q9p7ibwk7irfqkh4r2"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -755,7 +791,7 @@ on the screen.")
 (define-public xfdesktop
   (package
     (name "xfdesktop")
-    (version "4.14.2")
+    (version "4.14.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -763,7 +799,7 @@ on the screen.")
                                   "xfdesktop-" version ".tar.bz2"))
               (sha256
                (base32
-                "0x1yx9sd5aanrlr1qnbwd2nsmcg09g4132k0kyb7z47a3x3381d3"))
+                "14sp5a4n21prwmh2l5mjq5fjaq7r2pbjxddfx4wzaix8867x1mq6"))
               (modules '((guix build utils)))
               (snippet
                #~(begin
@@ -787,6 +823,7 @@ on the screen.")
                                           "/tmp/final.jpg")
                                   (copy-file "/tmp/final.jpg" image))
                                 '(;; "backgrounds/xfce-blue.jpg"
+                                  "backgrounds/xfce-stripes.png"
                                   "backgrounds/xfce-teal.jpg"))
                       #t)))
 
@@ -898,7 +935,7 @@ system resources, while still being visually appealing and user friendly.")
 (define-public xfce4-power-manager
   (package
     (name "xfce4-power-manager")
-    (version "1.7.0")
+    (version "1.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -906,7 +943,7 @@ system resources, while still being visually appealing and user friendly.")
                                   "xfce4-power-manager-" version ".tar.bz2"))
               (sha256
                (base32
-                "0jqjwy341dxyijjm9k77a12iih6b5r3f4cmpr2lppa7mf37qqdj5"))))
+                "1ki088iyr266cfyq9bmmhhd27wrsrmbhsblyf4yqby03hlvqif3k"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -1034,7 +1071,7 @@ several different time zones.")
 (define-public xfce4-notifyd
   (package
     (name "xfce4-notifyd")
-    (version "0.6.1")
+    (version "0.6.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/apps/"
@@ -1042,7 +1079,7 @@ several different time zones.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1d49l2vdz4hb2c14ai5p81wz7vikh9g3ffz0gmm2kgw9kjcp8llv"))))
+                "0ib5s7kjbr9sy8nh89nfcc4w6qplacnk4s92iycijy2wcv389aqr"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)
@@ -1176,7 +1213,7 @@ A plugin for the Xfce panel is also available.")
 (define-public xfce4-screensaver
   (package
     (name "xfce4-screensaver")
-    (version "0.1.10")
+    (version "0.1.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/apps/"
@@ -1186,7 +1223,7 @@ A plugin for the Xfce panel is also available.")
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0mqxbyq9np6jzky8y35dlxxmk78q2w0jvwg9kh7a4ib7vmw1qvsq"))))
+                "0xxcvvcch8bqd35ksq8l88a46xnidp59iq4ssyygki0a2vd20h41"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1986,7 +2023,7 @@ lan interface (signal state, signal quality, network name (SSID)).")
 (define-public xfce4-weather-plugin
   (package
    (name "xfce4-weather-plugin")
-   (version "0.10.1")
+   (version "0.10.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/panel-plugins/"
@@ -1995,7 +2032,7 @@ lan interface (signal state, signal quality, network name (SSID)).")
                                   "/xfce4-weather-plugin-" version ".tar.bz2"))
               (sha256
                (base32
-                "12bs2rfmmy021087i10vxibdbbvd5vld0vk3h5hymhpz7rgszcmg"))))
+                "1ik2qvmwylsz5vyz4np2y0mmd37s89xkayxi97490c4mj85pj5wh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index f0e591bb5f..e9328b8696 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
 ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -84,7 +85,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/hughsie/libxmlb.git")
+         (url "https://github.com/hughsie/libxmlb")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -224,7 +225,7 @@ project (but it is usable outside of the Gnome platform).")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/libxmlplusplus/libxmlplusplus.git")
+                   (url "https://github.com/libxmlplusplus/libxmlplusplus")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -284,7 +285,7 @@ It uses libxml2 to access the XML files.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/libxmlplusplus/libxmlplusplus.git")
+                   (url "https://github.com/libxmlplusplus/libxmlplusplus")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -997,14 +998,14 @@ the form of functions.")
 (define-public pugixml
   (package
     (name "pugixml")
-    (version "1.10")
+    (version "1.11")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "https://github.com/zeux/pugixml/releases/download/v"
                           version "/pugixml-" version ".tar.gz"))
       (sha256
-       (base32 "02l7nllhydggf7s64d2x84kckbmwag4lsn28sc82953hnkxrkwsm"))))
+       (base32 "0b5apqiisq8yk51x0cwks4h2m0zd2zgjdy0w80qp9h5rccz3v496"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
@@ -1086,14 +1087,14 @@ XSL-T processor.  It also performs any necessary post-processing.")
 (define-public xmlsec
   (package
     (name "xmlsec")
-    (version "1.2.30")
+    (version "1.2.31")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.aleksey.com/xmlsec/download/"
                                   "xmlsec1-" version ".tar.gz"))
               (sha256
                (base32
-                "1j5bf7ni45jghyrbf7a14wx2pvfara557zyry7g7h8840c5kd11d"))))
+                "09hbbaz2d9hw645q27apkjs1mdr6vd85x5z3c9hzgr1iri9bq44v"))))
     (build-system gnu-build-system)
     (propagated-inputs                  ; according to xmlsec1.pc
      `(("libxml2" ,libxml2)
@@ -1266,7 +1267,15 @@ C++ programming language.")
            (substitute* "Makefile"
              (("^examples/schema1\\\\") "\\")
              (("^examples/valid1\\\\") "\\"))
-           #t)))))
+           #t))
+       (add-after 'install 'symlink-xmlstarlet
+         (lambda* (#:key outputs #:allow-other-keys)
+           ;; Other distros usually either rename or symlink the `xml' binary
+           ;; as `xmlstarlet', let's do it as well for compatibility.
+           (let* ((out (assoc-ref outputs "out"))
+                  (bin (string-append out "/bin")))
+             (symlink "xml" (string-append bin "/xmlstarlet"))
+             #t))))))
    (inputs
     `(("libxslt" ,libxslt)
       ("libxml2" ,libxml2)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e1523c25eb..ccf5235f74 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -3012,8 +3012,8 @@ X server.")
 
 
 (define-public xf86-video-intel
-  (let ((commit "5ca3ac1a90af177eb111a965e9b4dd8a27cc58fc")
-        (revision "16"))
+  (let ((commit "ad5540f6ecaec287c70259f0181e613561b716f6")
+        (revision "17"))
     (package
       (name "xf86-video-intel")
       (version (git-version "2.99.917" revision commit))
@@ -3026,7 +3026,7 @@ X server.")
                (commit commit)))
          (sha256
           (base32
-           "1y1v6cp3r3isq3bc7mypkvypwjygi205k06slmidx2q3sz4h4mjc"))
+           "09jdg5wrq708wc83027337qvdjb96827h7sjwjfl5ffiynfpwl95"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (inputs `(("mesa" ,mesa)
@@ -6072,17 +6072,17 @@ to answer a question.  Xmessage can also exit after a specified time.")
 (define-public xterm
   (package
     (name "xterm")
-    (version "361")
-    (source (origin
-              (method url-fetch)
-              (uri (list
-                    (string-append "http://invisible-mirror.net/archives/xterm/"
-                                   "xterm-" version ".tgz")
-                    (string-append "ftp://ftp.invisible-island.net/xterm/"
-                                   "xterm-" version ".tgz")))
-              (sha256
-               (base32
-                "0gv27akkfb796aww1snq3c2sxmi8vajgfxk83g60awp4slh0yqc5"))))
+    (version "362")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (list
+             (string-append "https://invisible-mirror.net/archives/xterm/"
+                            "xterm-" version ".tgz")
+             (string-append "ftp://ftp.invisible-island.net/xterm/"
+                            "xterm-" version ".tgz")))
+       (sha256
+        (base32 "18mch57f5sypgfdbvna22ailcfpnixw0fc5wkf2j3w58dwigwkqx"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts"
@@ -6266,16 +6266,15 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "4.0.4")
+    (version "4.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.xpra.org/src/xpra-"
                            version ".tar.xz"))
        (sha256
-        (base32 "10alqdfmgml9ixdi1nyd9xlw8a5q0j8m2sv4g9p83pd6z1a0rpv2"))
-       (patches (search-patches "xpra-4.0.1-systemd-run.patch"
-                                "xpra-4.0.4-norequests.patch"))))
+        (base32 "11ml66z8vbc0fa567kkmp2j20l5l60aflnkrz5ay8arw3w92nmnz"))
+       (patches (search-patches "xpra-4.0.1-systemd-run.patch"))))
     (build-system python-build-system)
     ;; see also http://xpra.org/trac/wiki/Dependencies
     (inputs `(
diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm
index 2718232e27..6169815520 100644
--- a/gnu/packages/zile.scm
+++ b/gnu/packages/zile.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -42,14 +42,14 @@
 (define-public zile
   (package
     (name "zile")
-    (version "2.4.14")
+    (version "2.4.15")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/zile/zile-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0x3byaddms8l3g7igx6njycqsq98wgapysdb5c7lhcnajlkp8y3s"))))
+               "0ph3wd0cz3ysdyka6ds2w5l5b89mb5l79kwkfyk7phvq9yih1hrr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm
index 37f2efa479..627b941871 100644
--- a/gnu/services/audio.scm
+++ b/gnu/services/audio.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,8 @@
   #:use-module (guix gexp)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
+  #:use-module (gnu system shadow)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages mpd)
   #:use-module (guix records)
   #:use-module (ice-9 match)
@@ -135,19 +138,19 @@ audio_output {
 (define (mpd-shepherd-service config)
   (shepherd-service
    (documentation "Run the MPD (Music Player Daemon)")
+   (requirement '(user-processes))
    (provision '(mpd))
    (start #~(make-forkexec-constructor
              (list #$(file-append mpd "/bin/mpd")
                    "--no-daemon"
                    #$(mpd-config->file config))
-             #:pid-file #$(mpd-file-name config "pid")
              #:environment-variables
              ;; Required to detect PulseAudio when run under a user account.
-             '(#$(string-append
-                   "XDG_RUNTIME_DIR=/run/user/"
-                   (number->string
+             (list (string-append
+                    "XDG_RUNTIME_DIR=/run/user/"
+                    (number->string
                      (passwd:uid
-                       (getpwnam (mpd-configuration-user config))))))
+                      (getpwnam #$(mpd-configuration-user config))))))
              #:log-file #$(mpd-file-name config "log")))
    (stop  #~(make-kill-destructor))))
 
@@ -158,10 +161,26 @@ audio_output {
         (define %user
           (getpw #$(mpd-configuration-user config)))
 
-        (let ((directory #$(mpd-file-name config "")))
+        (let ((directory #$(mpd-file-name config ".mpd")))
           (mkdir-p directory)
           (chown directory (passwd:uid %user) (passwd:gid %user))))))
 
+
+(define %mpd-accounts
+  ;; Default account and group for MPD.
+  (list (user-group (name "mpd") (system? #t))
+        (user-account
+         (name "mpd")
+         (group "mpd")
+         (system? #t)
+         (comment "Music Player Daemon (MPD) user")
+
+         ;; Note: /var/run/mpd hosts one sub-directory per user, of which
+         ;; /var/run/mpd/mpd corresponds to the "mpd" user.
+         (home-directory "/var/run/mpd/mpd")
+
+         (shell (file-append shadow "/sbin/nologin")))))
+
 (define mpd-service-type
   (service-type
    (name 'mpd)
@@ -169,6 +188,8 @@ audio_output {
    (extensions
     (list (service-extension shepherd-root-service-type
                              (compose list mpd-shepherd-service))
+          (service-extension account-service-type
+                             (const %mpd-accounts))
           (service-extension activation-service-type
                              mpd-service-activation)))
    (default-value (mpd-configuration))))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 04bc991356..3fc4d5f885 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2016, 2020 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -62,7 +62,8 @@
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
   #:use-module (ice-9 format)
-  #:re-export (user-processes-service-type)       ;backwards compatibility
+  #:re-export (user-processes-service-type        ;backwards compatibility
+               %default-substitute-urls)
   #:export (fstab-service-type
             root-file-system-service
             file-system-service-type
@@ -106,6 +107,12 @@
             agetty-service-type
 
             mingetty-configuration
+            mingetty-configuration-tty
+            mingetty-configuration-auto-login
+            mingetty-configuration-login-program
+            mingetty-configuration-login-pause?
+            mingetty-configuration-clear-on-logout?
+            mingetty-configuration-mingetty
             mingetty-configuration?
             mingetty-service
             mingetty-service-type
@@ -291,7 +298,8 @@ FILE-SYSTEM."
 (define (mapped-device->shepherd-service-name md)
   "Return the symbol that denotes the shepherd service of MD, a <mapped-device>."
   (symbol-append 'device-mapping-
-                 (string->symbol (mapped-device-target md))))
+                 (string->symbol (string-join
+                                  (mapped-device-targets md) "-"))))
 
 (define dependency->shepherd-service-name
   (match-lambda
@@ -1024,20 +1032,22 @@ the tty to run, among other things."
 (define-record-type* <mingetty-configuration>
   mingetty-configuration make-mingetty-configuration
   mingetty-configuration?
-  (mingetty       mingetty-configuration-mingetty ;<package>
-                  (default mingetty))
-  (tty            mingetty-configuration-tty)     ;string
-  (auto-login     mingetty-auto-login             ;string | #f
-                  (default #f))
-  (login-program  mingetty-login-program          ;gexp
-                  (default #f))
-  (login-pause?   mingetty-login-pause?           ;Boolean
-                  (default #f)))
+  (mingetty         mingetty-configuration-mingetty ;<package>
+                    (default mingetty))
+  (tty              mingetty-configuration-tty)     ;string
+  (auto-login       mingetty-auto-login             ;string | #f
+                    (default #f))
+  (login-program    mingetty-login-program          ;gexp
+                    (default #f))
+  (login-pause?     mingetty-login-pause?           ;Boolean
+                    (default #f))
+  (clear-on-logout? mingetty-clear-on-logout?       ;Boolean
+                    (default #t)))
 
 (define mingetty-shepherd-service
   (match-lambda
     (($ <mingetty-configuration> mingetty tty auto-login login-program
-                                 login-pause?)
+                                 login-pause? clear-on-logout?)
      (list
       (shepherd-service
        (documentation "Run mingetty on an tty.")
@@ -1050,7 +1060,6 @@ the tty to run, among other things."
 
        (start  #~(make-forkexec-constructor
                   (list #$(file-append mingetty "/sbin/mingetty")
-                        "--noclear"
 
                         ;; Avoiding 'vhangup' allows us to avoid 'setfont'
                         ;; errors down the path where various ioctls get
@@ -1058,6 +1067,9 @@ the tty to run, among other things."
                         ;; in Linux.
                         "--nohangup" #$tty
 
+                        #$@(if clear-on-logout?
+                               #~()
+                               #~("--noclear"))
                         #$@(if auto-login
                                #~("--autologin" #$auto-login)
                                #~())
@@ -1476,10 +1488,18 @@ archive' public keys, with GUIX."
     #~(begin
         (use-modules (guix build utils))
 
-        (unless (file-exists? "/etc/guix/acl")
-          (mkdir-p "/etc/guix")
-          (copy-file #+default-acl "/etc/guix/acl")
-          (chmod "/etc/guix/acl" #o600)))))
+        ;; If the ACL already exists, move it out of the way.  Create a backup
+        ;; if it's a regular file: it's likely that the user manually updated
+        ;; it with 'guix archive --authorize'.
+        (if (file-exists? "/etc/guix/acl")
+            (if (and (symbolic-link? "/etc/guix/acl")
+                     (store-file-name? (readlink "/etc/guix/acl")))
+                (delete-file "/etc/guix/acl")
+                (rename-file "/etc/guix/acl" "/etc/guix/acl.bak"))
+            (mkdir-p "/etc/guix"))
+
+        ;; Installed the declared ACL.
+        (symlink #+default-acl "/etc/guix/acl"))))
 
 (define %default-authorized-guix-keys
   ;; List of authorized substitute keys.
@@ -1562,8 +1582,10 @@ proxy of 'guix-daemon'...~%")
                       (ice-9 match)
                       (gnu build shepherd)))
            (start
-            (with-imported-modules (source-module-closure
-                                    '((gnu build shepherd)))
+            (with-imported-modules `(((guix config) => ,(make-config.scm))
+                                     ,@(source-module-closure
+                                        '((gnu build shepherd))
+                                        #:select? not-config?))
               #~(lambda args
                   (define proxy
                     ;; HTTP/HTTPS proxy.  The 'http_proxy' variable is set by
@@ -1732,6 +1754,8 @@ proxy of 'guix-daemon'...~%")
                (default "nar"))
   (cache       guix-publish-configuration-cache   ;#f | string
                (default #f))
+  (cache-bypass-threshold guix-publish-configuration-cache-bypass-threshold
+                          (default (* 10 (expt 2 20)))) ;integer
   (workers     guix-publish-configuration-workers ;#f | integer
                (default #f))
   (ttl         guix-publish-configuration-ttl     ;#f | integer
@@ -1766,7 +1790,7 @@ raise a deprecation warning if the 'compression-level' field was used."
                    lst))))
 
   (match-record config <guix-publish-configuration>
-    (guix port host nar-path cache workers ttl)
+    (guix port host nar-path cache workers ttl cache-bypass-threshold)
     (list (shepherd-service
            (provision '(guix-publish))
            (requirement '(guix-daemon))
@@ -1788,7 +1812,11 @@ raise a deprecation warning if the 'compression-level' field was used."
                                                     "s"))
                                   #~())
                            #$@(if cache
-                                  #~((string-append "--cache=" #$cache))
+                                  #~((string-append "--cache=" #$cache)
+                                     #$(string-append
+                                        "--cache-bypass-threshold="
+                                        (number->string
+                                         cache-bypass-threshold)))
                                   #~()))
 
                      ;; Make sure we run in a UTF-8 locale so we can produce
@@ -2096,22 +2124,52 @@ instance."
    'swap
    (lambda (device)
      (define requirement
-       (if (string-prefix? "/dev/mapper/" device)
+       (if (and (string? device)
+                (string-prefix? "/dev/mapper/" device))
            (list (symbol-append 'device-mapping-
                                 (string->symbol (basename device))))
            '()))
 
-     (shepherd-service
-      (provision (list (symbol-append 'swap- (string->symbol device))))
-      (requirement `(udev ,@requirement))
-      (documentation "Enable the given swap device.")
-      (start #~(lambda ()
-                 (restart-on-EINTR (swapon #$device))
-                 #t))
-      (stop #~(lambda _
-                (restart-on-EINTR (swapoff #$device))
-                #f))
-      (respawn? #f)))))
+     (define (device-lookup device)
+       ;; The generic 'find-partition' procedures could return a partition
+       ;; that's not swap space, but that's unlikely.
+       (cond ((uuid? device)
+              #~(find-partition-by-uuid #$(uuid-bytevector device)))
+             ((file-system-label? device)
+              #~(find-partition-by-label
+                 #$(file-system-label->string device)))
+             (else
+              device)))
+
+     (define service-name
+       (symbol-append 'swap-
+                      (string->symbol
+                       (cond ((uuid? device)
+                              (string-take (uuid->string device) 6))
+                             ((file-system-label? device)
+                              (file-system-label->string device))
+                             (else
+                              device)))))
+
+     (with-imported-modules (source-module-closure '((gnu build file-systems)))
+       (shepherd-service
+        (provision (list service-name))
+        (requirement `(udev ,@requirement))
+        (documentation "Enable the given swap device.")
+        (modules `((gnu build file-systems)
+                   ,@%default-modules))
+        (start #~(lambda ()
+                   (let ((device #$(device-lookup device)))
+                     (and device
+                          (begin
+                            (restart-on-EINTR (swapon device))
+                            #t)))))
+        (stop #~(lambda _
+                  (let ((device #$(device-lookup device)))
+                    (when device
+                      (restart-on-EINTR (swapoff device)))
+                    #f)))
+        (respawn? #f))))))
 
 (define (swap-service device)
   "Return a service that uses @var{device} as a swap device."
diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm
index 16d6f76c1a..e8957c6859 100644
--- a/gnu/services/cups.scm
+++ b/gnu/services/cups.scm
@@ -482,7 +482,8 @@ programs.")
    (package cups)
    "The CUPS package.")
   (extensions
-   (package-list (list cups-filters))
+   (package-list (list cups-filters epson-inkjet-printer-escpr
+                       foomatic-filters hplip-minimal splix))
    "Drivers and other extensions to the CUPS package.")
   (files-configuration
    (files-configuration (files-configuration))
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index 2bddf70f71..60b31e0373 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (gnu packages databases)
   #:use-module (guix build-system trivial)
   #:use-module (guix build union)
+  #:use-module (guix deprecation)
   #:use-module (guix modules)
   #:use-module (guix packages)
   #:use-module (guix records)
@@ -146,8 +148,7 @@ host	all	all	::1/128 	md5"))
 (define-record-type* <postgresql-configuration>
   postgresql-configuration make-postgresql-configuration
   postgresql-configuration?
-  (postgresql         postgresql-configuration-postgresql ;<package>
-                      (default postgresql))
+  (postgresql         postgresql-configuration-postgresql) ;<package>
   (port               postgresql-configuration-port
                       (default 5432))
   (locale             postgresql-configuration-locale
@@ -278,15 +279,15 @@ host	all	all	::1/128 	md5"))
                        (service-extension account-service-type
                                           (const %postgresql-accounts))
                        (service-extension profile-service-type
-                                          (compose list postgresql-configuration-postgresql))))
-                (default-value (postgresql-configuration))))
-
-(define* (postgresql-service #:key (postgresql postgresql)
-                             (port 5432)
-                             (locale "en_US.utf8")
-                             (config-file (postgresql-config-file))
-                             (data-directory "/var/lib/postgresql/data")
-                             (extension-packages '()))
+                                          (compose list postgresql-configuration-postgresql))))))
+
+(define-deprecated (postgresql-service #:key (postgresql postgresql)
+                                       (port 5432)
+                                       (locale "en_US.utf8")
+                                       (config-file (postgresql-config-file))
+                                       (data-directory "/var/lib/postgresql/data")
+                                       (extension-packages '()))
+  postgresql-service-type
   "Return a service that runs @var{postgresql}, the PostgreSQL database server.
 
 The PostgreSQL daemon loads its runtime configuration from @var{config-file}
@@ -465,8 +466,11 @@ storage:
   mysql-configuration make-mysql-configuration
   mysql-configuration?
   (mysql mysql-configuration-mysql (default mariadb))
+  (bind-address mysql-configuration-bind-address (default "127.0.0.1"))
   (port mysql-configuration-port (default 3306))
-  (extra-content mysql-configuration-extra-content (default "")))
+  (socket mysql-configuration-socket (default "/run/mysqld/mysqld.sock"))
+  (extra-content mysql-configuration-extra-content (default ""))
+  (auto-upgrade? mysql-configuration-auto-upgrade? (default #t)))
 
 (define %mysql-accounts
   (list (user-group
@@ -481,10 +485,11 @@ storage:
 
 (define mysql-configuration-file
   (match-lambda
-    (($ <mysql-configuration> mysql port extra-content)
+    (($ <mysql-configuration> mysql bind-address port socket extra-content)
      (mixed-text-file "my.cnf" "[mysqld]
 datadir=/var/lib/mysql
-socket=/run/mysqld/mysqld.sock
+socket=" socket "
+bind-address=" bind-address "
 port=" (number->string port) "
 " extra-content "
 "))))
@@ -556,6 +561,52 @@ FLUSH PRIVILEGES;
                      #:user "mysql" #:group "mysql")))
          (stop #~(make-kill-destructor)))))
 
+(define (mysql-upgrade-wrapper mysql socket-file)
+  ;; The MySQL socket and PID file may appear before the server is ready to
+  ;; accept connections.  Ensure the socket is responsive before attempting
+  ;; to run the upgrade script.
+  (program-file
+   "mysql-upgrade-wrapper"
+   #~(begin
+       (let ((mysql-upgrade #$(file-append mysql "/bin/mysql_upgrade"))
+             (timeout 10))
+         (begin
+           (let loop ((i 0))
+             (catch 'system-error
+               (lambda ()
+                 (let ((sock (socket PF_UNIX SOCK_STREAM 0)))
+                   (connect sock AF_UNIX #$socket-file)
+                   (close-port sock)
+                   ;; The socket is ready!
+                   (execl mysql-upgrade mysql-upgrade
+                          (string-append "--socket=" #$socket-file))))
+                 (lambda args
+                   (if (< i timeout)
+                       (begin
+                         (sleep 1)
+                         (loop (+ 1 i)))
+                       ;; No luck, give up.
+                       (throw 'timeout-error
+                              "MySQL server did not appear in time!"))))))))))
+
+(define (mysql-upgrade-shepherd-service config)
+  (list (shepherd-service
+         (provision '(mysql-upgrade))
+         (requirement '(mysql))
+         (one-shot? #t)
+         (documentation "Upgrade MySQL database schemas.")
+         (start (let ((mysql (mysql-configuration-mysql config))
+                      (socket (mysql-configuration-socket config)))
+                  #~(make-forkexec-constructor
+                     (list #$(mysql-upgrade-wrapper mysql socket))
+                     #:user "mysql" #:group "mysql"))))))
+
+(define (mysql-shepherd-services config)
+  (if (mysql-configuration-auto-upgrade? config)
+      (append (mysql-shepherd-service config)
+              (mysql-upgrade-shepherd-service config))
+      (mysql-shepherd-service config)))
+
 (define mysql-service-type
   (service-type
    (name 'mysql)
@@ -565,15 +616,11 @@ FLUSH PRIVILEGES;
           (service-extension activation-service-type
                              %mysql-activation)
           (service-extension shepherd-root-service-type
-                             mysql-shepherd-service)))
+                             mysql-shepherd-services)))
    (default-value (mysql-configuration))))
 
-(define* (mysql-service #:key (config (mysql-configuration)))
-  "Return a service that runs @command{mysqld}, the MySQL or MariaDB
-database server.
-
-The optional @var{config} argument specifies the configuration for
-@command{mysqld}, which should be a @code{<mysql-configuration>} object."
+(define-deprecated (mysql-service #:key (config (mysql-configuration)))
+  mysql-service-type
   (service mysql-service-type config))
 
 
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 3a3fd8fd1b..265cf9f35f 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -53,6 +54,7 @@
   #:use-module (gnu packages suckless)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages lxqt)
   #:use-module (gnu packages mate)
   #:use-module (gnu packages nfs)
   #:use-module (gnu packages enlightenment)
@@ -127,6 +129,10 @@
             mate-desktop-service
             mate-desktop-service-type
 
+            lxqt-desktop-configuration
+            lxqt-desktop-configuration?
+            lxqt-desktop-service-type
+
             xfce-desktop-configuration
             xfce-desktop-configuration?
             xfce-desktop-service
@@ -1009,6 +1015,36 @@ system as root from within a user session, after the user has authenticated
 with the administrator's password."
   (service xfce-desktop-service-type config))
 
++
+;;;
+;;; Lxqt desktop service.
+;;;
+
+(define-record-type* <lxqt-desktop-configuration> lxqt-desktop-configuration
+  make-lxqt-desktop-configuration
+  lxqt-desktop-configuration?
+  (lxqt lxqt-package
+        (default lxqt)))
+
+(define (lxqt-polkit-settings config)
+  "Return the list of LXQt dependencies that provide polkit actions and
+rules."
+  (let ((lxqt (lxqt-package config)))
+    (map (lambda (name)
+           ((package-direct-input-selector name) lxqt))
+         '("lxqt-admin"))))
+
+(define lxqt-desktop-service-type
+  (service-type
+   (name 'lxqt-desktop)
+   (extensions
+    (list (service-extension polkit-service-type
+                             lxqt-polkit-settings)
+          (service-extension profile-service-type
+                             (compose list lxqt-package))))
+   (default-value (lxqt-desktop-configuration))
+   (description "Run LXQt desktop environment.")))
+
 
 ;;;
 ;;; X11 socket directory service
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index 572880561c..b339eb0619 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -700,7 +700,7 @@ cache.size = 100 * MB
        (documentation "Run the Knot Resolver daemon.")
        (start #~(make-forkexec-constructor
                  '(#$(file-append package "/sbin/kresd")
-                   "-c" #$kresd-config-file "-f" "1"
+                   "-c" #$kresd-config-file "-n"
                    "/var/cache/knot-resolver")))
        (stop #~(make-kill-destructor)))
       (shepherd-service
diff --git a/gnu/services/ganeti.scm b/gnu/services/ganeti.scm
index d87db5b9ac..0a34ea6a5e 100644
--- a/gnu/services/ganeti.scm
+++ b/gnu/services/ganeti.scm
@@ -430,7 +430,7 @@ appropriate requests to this daemon.")))
                 (description
                  "@command{ganeti-luxid} is a daemon used to answer queries
 related to the configuration and the current live state of a Ganeti cluster.
-Additionally, it is the authorative daemon for the Ganeti job queue.  Jobs can
+Additionally, it is the authoritative daemon for the Ganeti job queue.  Jobs can
 be submitted via this daemon and it schedules and starts them.")))
 
 (define-record-type* <ganeti-rapi-configuration>
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index a47c4bd941..88d23f746a 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -188,8 +188,11 @@
                           ;; libraries, but it means that the Guile libraries
                           ;; needed for the Guix Build Coordinator don't need
                           ;; to be individually specified here.
-                          (map second (package-inputs
-                                       guix-build-coordinator-package)))
+                          (append
+                           (map second (package-inputs
+                                        guix-build-coordinator-package))
+                           (map second (package-propagated-inputs
+                                        guix-build-coordinator-package))))
      #~(begin
          (use-modules (srfi srfi-1)
                       (ice-9 match)
@@ -200,16 +203,21 @@
                       (guix-build-coordinator build-allocator)
                       (guix-build-coordinator coordinator))
 
+         (setvbuf (current-output-port) 'line)
+         (setvbuf (current-error-port) 'line)
+
+         (simple-format #t "starting the guix-build-coordinator:\n  ~A\n"
+                        (current-filename))
          (let* ((metrics-registry (make-metrics-registry
                                    #:namespace
-                                   "guixbuildcoordinator_"))
+                                   "guixbuildcoordinator"))
                 (datastore (database-uri->datastore
                             #$database-uri-string
                             #:metrics-registry metrics-registry))
                 (hooks
                  (list #$@(map (match-lambda
                                  ((name . hook-gexp)
-                                  #~(cons name #$hook-gexp)))
+                                  #~(cons '#$name #$hook-gexp)))
                                hooks)))
                 (hooks-with-defaults
                  `(,@hooks
@@ -265,7 +273,8 @@
                 #:environment-variables
                 `(,(string-append
                     "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
-                  "LC_ALL=en_US.utf8")
+                  "LC_ALL=en_US.utf8"
+                  "PATH=/run/current-system/profile/bin") ; for hooks
                 #:log-file "/var/log/guix-build-coordinator/coordinator.log"))
       (stop #~(make-kill-destructor))))))
 
@@ -345,16 +354,17 @@
                       #$@(if non-derivation-substitute-urls
                              #~(#$(string-append
                                    "--non-derivation-substitute-urls="
-                                   (string-join derivation-substitute-urls " ")))
+                                   (string-join non-derivation-substitute-urls " ")))
                              #~())
                       #$@(map (lambda (system)
                                 (string-append "--system=" system))
                               (or systems '())))
                 #:user #$user
-                #:pid-file "/var/run/guix-build-coordinator-agent/pid"
                 #:environment-variables
                 `(,(string-append
                     "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
+                  ;; XDG_CACHE_HOME is used by Guix when caching narinfo files
+                  "XDG_CACHE_HOME=/var/cache/guix-build-coordinator-agent"
                   "LC_ALL=en_US.utf8")
                 #:log-file "/var/log/guix-build-coordinator/agent.log"))
       (stop #~(make-kill-destructor))))))
@@ -363,11 +373,13 @@
   #~(begin
       (use-modules (guix build utils))
 
+      (define %user (getpw "guix-build-coordinator-agent"))
+
       (mkdir-p "/var/log/guix-build-coordinator")
 
-      ;; Allow writing the PID file
-      (mkdir-p "/var/run/guix-build-coordinator-agent")
-      (chown "/var/run/guix-build-coordinator-agent"
+      ;; Create a cache directory for storing narinfo files if downloaded
+      (mkdir-p "/var/cache/guix-build-coordinator-agent")
+      (chown "/var/cache/guix-build-coordinator-agent"
              (passwd:uid %user)
              (passwd:gid %user))))
 
diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm
index 511f4fb2fe..da3d736ba6 100644
--- a/gnu/services/monitoring.scm
+++ b/gnu/services/monitoring.scm
@@ -279,11 +279,11 @@ configuration file."))
 
 (define (zabbix-server-activation config)
   "Return the activation gexp for CONFIG."
-  (with-imported-modules '((guix build utils)
-                           (ice-9 rdelim))
+  (with-imported-modules '((guix build utils))
     #~(begin
         (use-modules (guix build utils)
                      (ice-9 rdelim))
+
         (let ((user (getpw #$(zabbix-server-configuration-user config))))
           (for-each (lambda (file)
                       (let ((directory (dirname file)))
@@ -393,8 +393,7 @@ configuration file."))
 
 (define (zabbix-agent-activation config)
   "Return the activation gexp for CONFIG."
-  (with-imported-modules '((guix build utils)
-                           (ice-9 rdelim))
+  (with-imported-modules '((guix build utils))
     #~(begin
         (use-modules (guix build utils)
                      (ice-9 rdelim))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 64f54e787f..9ec0f6a9ca 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -61,7 +61,9 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-43)
   #:use-module (ice-9 match)
+  #:use-module (json)
   #:re-export (static-networking-service
                static-networking-service-type)
   #:export (%facebook-host-aliases
@@ -180,7 +182,17 @@
             pagekite-configuration-kitesecret
             pagekite-configuration-frontend
             pagekite-configuration-kites
-            pagekite-configuration-extra-file))
+            pagekite-configuration-extra-file
+
+            yggdrasil-service-type
+            yggdrasil-configuration
+            yggdrasil-configuration?
+            yggdrasil-configuration-autoconf?
+            yggdrasil-configuration-config-file
+            yggdrasil-configuration-log-level
+            yggdrasil-configuration-log-to
+            yggdrasil-configuration-json-config
+            yggdrasil-configuration-package))
 
 ;;; Commentary:
 ;;;
@@ -1750,4 +1762,107 @@ table inet filter {
     "Run @url{https://pagekite.net/,PageKite}, a tunneling solution to make
 local servers publicly accessible on the web, even behind NATs and firewalls.")))
 
+
+;;;
+;;; Yggdrasil
+;;;
+
+(define-record-type* <yggdrasil-configuration>
+  yggdrasil-configuration
+  make-yggdrasil-configuration
+  yggdrasil-configuration?
+  (package yggdrasil-configuration-package
+           (default yggdrasil))
+  (json-config yggdrasil-configuration-json-config
+               (default '()))
+  (config-file yggdrasil-config-file
+               (default "/etc/yggdrasil-private.conf"))
+  (autoconf? yggdrasil-configuration-autoconf?
+             (default #f))
+  (log-level yggdrasil-configuration-log-level
+             (default 'info))
+  (log-to yggdrasil-configuration-log-to
+          (default 'stdout)))
+
+(define (yggdrasil-configuration-file config)
+  (define (scm->yggdrasil-json x)
+    (define key-value?
+      dotted-list?)
+    (define (param->camel str)
+      (string-concatenate
+       (map
+	string-capitalize
+	(string-split str (cut eqv? <> #\-)))))
+    (cond
+     ((key-value? x)
+      (let ((k (car x))
+	    (v (cdr x)))
+	(cons
+	 (if (symbol? k)
+	     (param->camel (symbol->string k))
+	     k)
+	 v)))
+     ((list? x) (map scm->yggdrasil-json x))
+     ((vector? x) (vector-map scm->yggdrasil-json x))
+     (else x)))
+  (computed-file
+   "yggdrasil.conf"
+   #~(call-with-output-file #$output
+       (lambda (port)
+         ;; it's HJSON, so comments are a-okay
+         (display "# Generated by yggdrasil-service\n" port)
+         (display #$(scm->json-string
+                     (scm->yggdrasil-json
+                      (yggdrasil-configuration-json-config config)))
+                  port)))))
+
+(define (yggdrasil-shepherd-service config)
+  "Return a <shepherd-service> for yggdrasil with CONFIG."
+  (define yggdrasil-command
+    #~(append
+       (list (string-append
+              #$(yggdrasil-configuration-package config)
+              "/bin/yggdrasil")
+             "-useconffile"
+             #$(yggdrasil-configuration-file config))
+       (if #$(yggdrasil-configuration-autoconf? config)
+           '("-autoconf")
+           '())
+       (let ((extraconf #$(yggdrasil-config-file config)))
+         (if extraconf
+             (list "-extraconffile" extraconf)
+             '()))
+       (list "-loglevel"
+             #$(symbol->string
+		(yggdrasil-configuration-log-level config))
+             "-logto"
+             #$(symbol->string
+		(yggdrasil-configuration-log-to config)))))
+  (list (shepherd-service
+         (documentation "Connect to the Yggdrasil mesh network")
+         (provision '(yggdrasil))
+         (requirement '(networking))
+         (start #~(make-forkexec-constructor
+                   #$yggdrasil-command
+                   #:log-file "/var/log/yggdrasil.log"
+                   #:group "yggdrasil"))
+         (stop #~(make-kill-destructor)))))
+
+(define %yggdrasil-accounts
+  (list (user-group (name "yggdrasil") (system? #t))))
+
+(define yggdrasil-service-type
+  (service-type
+   (name 'yggdrasil)
+   (description
+    "Connect to the Yggdrasil mesh network.
+See yggdrasil -genconf for config options.")
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             yggdrasil-shepherd-service)
+          (service-extension account-service-type
+                             (const %yggdrasil-accounts))
+          (service-extension profile-service-type
+                             (compose list yggdrasil-configuration-package))))))
+
 ;;; networking.scm ends here
diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm
index 59f8b16985..694ad736dc 100644
--- a/gnu/services/sddm.scm
+++ b/gnu/services/sddm.scm
@@ -169,7 +169,7 @@ Relogin="              (if (sddm-configuration-relogin? config)
 
   (list (shepherd-service
          (documentation "SDDM display manager.")
-         (requirement '(user-processes))
+         (requirement '(user-processes elogind))
          (provision '(xorg-server display-manager))
          (start #~(make-forkexec-constructor #$sddm-command))
          (stop #~(make-kill-destructor)))))
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index e14ceca231..1faeb350df 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -224,16 +224,21 @@ which is not provided by any service")
 
   (for-each assert-satisfied-requirements services))
 
+(define %store-characters
+  ;; Valid store characters; see 'checkStoreName' in the daemon.
+  (string->char-set
+   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-._?="))
+
 (define (shepherd-service-file-name service)
   "Return the file name where the initialization code for SERVICE is to be
 stored."
   (let ((provisions (string-join (map symbol->string
                                       (shepherd-service-provision service)))))
     (string-append "shepherd-"
-                   (string-map (match-lambda
-                                 (#\/ #\-)
-                                 (#\  #\-)
-                                 (chr chr))
+                   (string-map (lambda (chr)
+                                 (if (char-set-contains? %store-characters chr)
+                                     chr
+                                     #\-))
                                provisions)
                    ".scm")))
 
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index edd0b644f5..eaf0bbde43 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -875,7 +875,16 @@ that will be listening to receive secret keys on port 1004, TCP."
                          (permit-root-login #t)
                          (allow-empty-passwords? #t)
                          (password-authentication? #t)))
-               %base-services/hurd))))
+
+               ;; By default, the secret service introduces a pre-initialized
+               ;; /etc/guix/acl file in the childhurd.  Thus, clear
+               ;; 'authorize-key?' so that it's not overridden at activation
+               ;; time.
+               (modify-services %base-services/hurd
+                 (guix-service-type config =>
+                                    (guix-configuration
+                                     (inherit config)
+                                     (authorize-key? #f))))))))
 
 (define-record-type* <hurd-vm-configuration>
   hurd-vm-configuration make-hurd-vm-configuration
diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm
index 658d5c3e88..70f2617c7e 100644
--- a/gnu/services/vpn.scm
+++ b/gnu/services/vpn.scm
@@ -273,16 +273,16 @@ servers.")
     "The device type used to represent the VPN connection.")
 
    (ca
-    (string "/etc/openvpn/ca.crt")
+    (maybe-string "/etc/openvpn/ca.crt")
     "The certificate authority to check connections against.")
 
    (cert
-    (string "/etc/openvpn/client.crt")
+    (maybe-string "/etc/openvpn/client.crt")
     "The certificate of the machine the daemon is running on. It should be signed
 by the authority given in @code{ca}.")
 
    (key
-    (string "/etc/openvpn/client.key")
+    (maybe-string "/etc/openvpn/client.key")
     "The key of the machine the daemon is running on. It must be the key whose
 certificate is @code{cert}.")
 
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index a74c6c54b4..855f4e649b 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -255,7 +256,14 @@
             mumi-configuration-sender
             mumi-configuration-smtp
 
-            mumi-service-type))
+            mumi-service-type
+
+            gmnisrv-configuration
+            gmnisrv-configuration?
+            gmnisrv-configuration-package
+            gmnisrv-configuration-config-file
+
+            gmnisrv-service-type))
 
 ;;; Commentary:
 ;;;
@@ -667,6 +675,12 @@ of index files."
                                            '#$lua-package-cpath)
                                       ";"))
                "")
+           (if server-names-hash-bucket-size
+               (string-append
+                 "    server_names_hash_bucket_size "
+                 (number->string server-names-hash-bucket-size)
+                 ";\n")
+               "")
            (if server-names-hash-bucket-max-size
                (string-append
                 "    server_names_hash_bucket_max_size "
@@ -1134,7 +1148,7 @@ a webserver.")
                  #:user "hpcguix-web"
                  #:group "hpcguix-web"
                  #:environment-variables
-                 (list "XDG_CACHE_HOME=/var/cache"
+                 (list "XDG_CACHE_HOME=/var/cache/guix/web"
                        "SSL_CERT_DIR=/etc/ssl/certs")
                  #:log-file #$%hpcguix-web-log-file))
        (stop #~(make-kill-destructor))))))
@@ -1798,3 +1812,75 @@ WSGIPassAuthorization On
     "Run Mumi, a Web interface to the Debbugs bug-tracking server.")
    (default-value
      (mumi-configuration))))
+
+(define %default-gmnisrv-config-file
+  (plain-file "gmnisrv.ini" "
+listen=0.0.0.0:1965 [::]:1965
+
+[:tls]
+store=/var/lib/gemini/certs
+
+organization=gmnisrv on Guix user
+
+[localhost]
+root=/srv/gemini
+"))
+
+(define-record-type* <gmnisrv-configuration>
+  gmnisrv-configuration make-gmnisrv-configuration
+  gmnisrv-configuration?
+  (package     gmnisrv-configuration-package
+               (default gmnisrv))
+  (config-file gmnisrv-configuration-config-file
+               (default %default-gmnisrv-config-file)))
+
+(define gmnisrv-shepherd-service
+  (match-lambda
+    (($ <gmnisrv-configuration> package config-file)
+     (list (shepherd-service
+            (provision '(gmnisrv))
+            (requirement '(networking))
+            (documentation "Run the gmnisrv Gemini server.")
+            (start (let ((gmnisrv (file-append package "/bin/gmnisrv")))
+                     #~(make-forkexec-constructor
+                        (list #$gmnisrv "-C" #$config-file)
+                        #:user "gmnisrv" #:group "gmnisrv"
+                        #:log-file "/var/log/gmnisrv.log")))
+            (stop #~(make-kill-destructor)))))))
+
+(define %gmnisrv-accounts
+  (list (user-group (name "gmnisrv") (system? #t))
+        (user-account
+         (name "gmnisrv")
+         (group "gmnisrv")
+         (system? #t)
+         (comment "gmnisrv Gemini server")
+         (home-directory "/var/empty")
+         (shell (file-append shadow "/sbin/nologin")))))
+
+(define %gmnisrv-activation
+  (with-imported-modules '((guix build utils))
+    #~(begin
+        (use-modules (guix build utils))
+
+        (mkdir-p "/var/lib/gemini/certs")
+        (let* ((pw  (getpwnam "gmnisrv"))
+               (uid (passwd:uid pw))
+               (gid (passwd:gid pw)))
+          (chown "/var/lib/gemini" uid gid)
+          (chown "/var/lib/gemini/certs" uid gid)))))
+
+(define gmnisrv-service-type
+  (service-type
+   (name 'guix)
+   (extensions
+    (list (service-extension activation-service-type
+                             (const %gmnisrv-activation))
+          (service-extension account-service-type
+                             (const %gmnisrv-accounts))
+          (service-extension shepherd-root-service-type
+                             gmnisrv-shepherd-service)))
+   (description
+    "Run the gmnisrv Gemini server.")
+   (default-value
+     (gmnisrv-configuration))))
diff --git a/gnu/system.scm b/gnu/system.scm
index a3122eaa65..fcf3310fa3 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -148,6 +148,7 @@
             boot-parameters-bootloader-name
             boot-parameters-bootloader-menu-entries
             boot-parameters-store-device
+            boot-parameters-store-directory-prefix
             boot-parameters-store-mount-point
             boot-parameters-locale
             boot-parameters-kernel
@@ -289,16 +290,21 @@ directly by the user."
   ;; Because we will use the 'store-device' to create the GRUB search command,
   ;; the 'store-device' has slightly different semantics than 'root-device'.
   ;; The 'store-device' can be a file system uuid, a file system label, or #f,
-  ;; but it cannot be a device path such as "/dev/sda3", since GRUB would not
-  ;; understand that.  The 'root-device', on the other hand, corresponds
+  ;; but it cannot be a device file name such as "/dev/sda3", since GRUB would
+  ;; not understand that.  The 'root-device', on the other hand, corresponds
   ;; exactly to the device field of the <file-system> object representing the
-  ;; OS's root file system, so it might be a device path like "/dev/sda3".
+  ;; OS's root file system, so it might be a device file name like
+  ;; "/dev/sda3".  The 'store-directory-prefix' field contains #f or the store
+  ;; file name inside the 'store-device' as it is seen by GRUB, e.g. it would
+  ;; contain "/storefs" if the store is located in that subvolume of a btrfs
+  ;; partition.
   (root-device      boot-parameters-root-device)
   (bootloader-name  boot-parameters-bootloader-name)
   (bootloader-menu-entries                        ;list of <menu-entry>
    boot-parameters-bootloader-menu-entries)
   (store-device     boot-parameters-store-device)
   (store-mount-point boot-parameters-store-mount-point)
+  (store-directory-prefix boot-parameters-store-directory-prefix)
   (locale           boot-parameters-locale)
   (kernel           boot-parameters-kernel)
   (kernel-arguments boot-parameters-kernel-arguments)
@@ -394,6 +400,17 @@ file system labels."
           (_                                      ;the old format
            root-device))))
 
+      (store-directory-prefix
+       (match (assq 'store rest)
+         (('store . store-data)
+          (match (assq 'directory-prefix store-data)
+            (('directory-prefix prefix) prefix)
+            ;; No directory-prefix found.
+            (_ #f)))
+         (_
+          ;; No store found, old format.
+          #f)))
+
       (store-mount-point
        (match (assq 'store rest)
          (('store ('device _) ('mount-point mount-point) _ ...)
@@ -458,9 +475,9 @@ marked as 'needed-for-boot'."
     (let ((device (file-system-device fs)))
       (if (string? device)                        ;title is 'device
           (filter (lambda (md)
-                    (string=? (string-append "/dev/mapper/"
-                                             (mapped-device-target md))
-                              device))
+                    (any (cut string=? device <>)
+                         (map (cut string-append "/dev/mapper" <>)
+                              (mapped-device-targets md))))
                   (operating-system-mapped-devices os))
           '())))
 
@@ -480,11 +497,12 @@ marked as 'needed-for-boot'."
 
 (define (mapped-device-users device file-systems)
   "Return the subset of FILE-SYSTEMS that use DEVICE."
-  (let ((target (string-append "/dev/mapper/" (mapped-device-target device))))
+  (let ((targets (map (cut string-append "/dev/mapper/" <>)
+                      (mapped-device-targets device))))
     (filter (lambda (fs)
               (or (member device (file-system-dependencies fs))
                   (and (string? (file-system-device fs))
-                       (string=? (file-system-device fs) target))))
+                       (any (cut string=? (file-system-device fs) <>) targets))))
             file-systems)))
 
 (define (operating-system-user-mapped-devices os)
@@ -1294,6 +1312,7 @@ such as '--root' and '--load' to <boot-parameters>."
   (let* ((initrd          (and (not (operating-system-hurd os))
                                (operating-system-initrd-file os)))
          (store           (operating-system-store-file-system os))
+         (file-systems    (operating-system-file-systems os))
          (locale          (operating-system-locale os))
          (bootloader      (bootloader-configuration-bootloader
                            (operating-system-bootloader os)))
@@ -1315,6 +1334,7 @@ such as '--root' and '--load' to <boot-parameters>."
       (bootloader-configuration-menu-entries (operating-system-bootloader os)))
      (locale locale)
      (store-device (ensure-not-/dev (file-system-device store)))
+     (store-directory-prefix (btrfs-store-subvolume-file-name file-systems))
      (store-mount-point (file-system-mount-point store)))))
 
 (define (device->sexp device)
@@ -1371,7 +1391,9 @@ being stored into the \"parameters\" file)."
                       (device
                        #$(device->sexp (boot-parameters-store-device params)))
                       (mount-point #$(boot-parameters-store-mount-point
-                                      params))))
+                                      params))
+                      (directory-prefix
+                       #$(boot-parameters-store-directory-prefix params))))
                   #:set-load-path? #f)))
 
 (define-gexp-compiler (operating-system-compiler (os <operating-system>)
diff --git a/gnu/system/examples/yggdrasil.tmpl b/gnu/system/examples/yggdrasil.tmpl
new file mode 100644
index 0000000000..be80bf4de9
--- /dev/null
+++ b/gnu/system/examples/yggdrasil.tmpl
@@ -0,0 +1,60 @@
+;; This is an operating system configuration template
+;; for a "bare bones" setup, with no X11 display server.
+
+(use-modules (gnu))
+(use-service-modules networking ssh)
+(use-package-modules admin curl networking screen)
+
+(operating-system
+  (host-name "ruby-guard-5545")
+  (timezone "Europe/Budapest")
+  (locale "en_US.utf8")
+
+  ;; Boot in "legacy" BIOS mode, assuming /dev/sdX is the
+  ;; target hard disk, and "my-root" is the label of the target
+  ;; root file system.
+  (bootloader (bootloader-configuration
+                (bootloader grub-bootloader)
+                (target "/dev/sdX")))
+  (file-systems (cons (file-system
+                        (device (file-system-label "my-root"))
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+  (users (cons (user-account
+                (name "alice")
+                (comment "Bob's sister")
+                (group "users")
+                ;; adding her to the yggdrasil group means she can use
+                ;; yggdrasilctl to modify the configuration
+                (supplementary-groups '("wheel" "yggdrasil")))
+               %base-user-accounts))
+
+  ;; Globally-installed packages.
+  (packages (cons* screen curl %base-packages))
+
+  ;; Add services to the baseline: a DHCP client and
+  ;; an SSH server.
+  ;; If you add an /etc/yggdrasil-private.conf, you can log in to ssh
+  ;; using your Yggdrasil IPv6 address from another machine running Yggdrasil.
+  ;; Alternatively, the client can sit behind a router that has Yggdrasil.
+  ;; That file is specifically _not_ handled by Guix, because we don't want its
+  ;; contents to sit in the world-readable /gnu/store.
+  (services
+   (append
+    (list
+     (service dhcp-client-service-type)
+     (service yggdrasil-service-type
+              (yggdrasil-configuration
+               (log-to 'stdout)
+               (log-level 'debug)
+               (autoconf? #f)
+               (json-config
+                ;; choose a few from
+                ;; https://github.com/yggdrasil-network/public-peers
+                '((peers . #("tcp://1.2.3.4:1337"))))
+               (config-file #f)))
+     (service openssh-service-type
+              (openssh-configuration
+               (port-number 2222))))
+    %base-services)))
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index bc6610b14c..4972d9067b 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -66,6 +66,7 @@
 
             efi-disk-image
             iso9660-image
+            arm32-disk-image
             arm64-disk-image
 
             image-with-os
@@ -73,6 +74,7 @@
             qcow2-image-type
             iso-image-type
             uncompressed-iso-image-type
+            arm32-image-type
             arm64-image-type
 
             image-with-label
@@ -126,10 +128,10 @@
            (label "GUIX_IMAGE")
            (flags '(boot)))))))
 
-(define arm64-disk-image
+(define arm32-disk-image
   (image
    (format 'disk-image)
-   (target "aarch64-linux-gnu")
+   (target "arm-linux-gnueabihf")
    (partitions
     (list (partition
            (inherit root-partition)
@@ -138,6 +140,11 @@
    ;; fails.
    (volatile-root? #f)))
 
+(define arm64-disk-image
+  (image
+   (inherit arm32-disk-image)
+   (target "aarch64-linux-gnu")))
+
 
 ;;;
 ;;; Images types.
@@ -179,9 +186,14 @@ set to the given OS."
                   (compression? #f))
                  <>))))
 
+(define arm32-image-type
+  (image-type
+   (name 'arm32-raw)
+   (constructor (cut image-with-os arm32-disk-image <>))))
+
 (define arm64-image-type
   (image-type
-   (name 'arm)
+   (name 'arm64-raw)
    (constructor (cut image-with-os arm64-disk-image <>))))
 
 
@@ -342,6 +354,9 @@ used in the image."
                                        #$output
                                        image-root)))))
         (computed-file "partition.img" image-builder
+                       ;; Allow offloading so that this I/O-intensive process
+                       ;; doesn't run on the build farm's head node.
+                       #:local-build? #f
                        #:options `(#:references-graphs ,inputs))))
 
     (define (partition->config partition)
@@ -399,6 +414,7 @@ image ~a {
                 out-image))
              (convert-disk-image out-image '#$format #$output)))))
     (computed-file name builder
+                   #:local-build? #f              ;too I/O-intensive
                    #:options `(#:substitutable? ,substitutable?))))
 
 
@@ -476,6 +492,9 @@ used in the image. "
                                  #:volume-id #$root-label
                                  #:volume-uuid #$root-uuid)))))
     (computed-file name builder
+                   ;; Allow offloading so that this I/O-intensive process
+                   ;; doesn't run on the build farm's head node.
+                   #:local-build? #f
                    #:options `(#:references-graphs ,inputs
                                #:substitutable? ,substitutable?))))
 
@@ -557,7 +576,9 @@ it can be used for bootloading."
          (file-systems-to-keep
           (srfi-1:remove
            (lambda (fs)
-             (string=? (file-system-mount-point fs) "/"))
+             (let ((mount-point (file-system-mount-point fs)))
+               (or (string=? mount-point "/")
+                   (string=? mount-point "/boot/efi"))))
            (operating-system-file-systems base-os)))
          (format (image-format image))
          (os
diff --git a/gnu/system/images/pinebook-pro.scm b/gnu/system/images/pinebook-pro.scm
new file mode 100644
index 0000000000..b038e262cb
--- /dev/null
+++ b/gnu/system/images/pinebook-pro.scm
@@ -0,0 +1,66 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system images pinebook-pro)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader u-boot)
+  #:use-module (gnu image)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu services)
+  #:use-module (gnu services base)
+  #:use-module (gnu system)
+  #:use-module (gnu system file-systems)
+  #:use-module (gnu system image)
+  #:use-module (srfi srfi-26)
+  #:export (pinebook-pro-barebones-os
+            pinebook-pro-image-type
+            pinebook-pro-barebones-raw-image))
+
+(define pinebook-pro-barebones-os
+  (operating-system
+    (host-name "viso")
+    (timezone "Europe/Paris")
+    (locale "en_US.utf8")
+    (bootloader (bootloader-configuration
+                 (bootloader u-boot-pinebook-pro-rk3399-bootloader)
+                 (target "/dev/vda")))
+    (initrd-modules '())
+    (kernel linux-libre-arm64-generic)
+    (file-systems (cons (file-system
+                          (device (file-system-label "my-root"))
+                          (mount-point "/")
+                          (type "ext4"))
+                        %base-file-systems))
+    (services (cons (service agetty-service-type
+                             (agetty-configuration
+                              (extra-options '("-L")) ; no carrier detect
+                              (baud-rate "115200")
+                              (term "vt100")
+                              (tty "ttyS0")))
+                    %base-services))))
+
+(define pinebook-pro-image-type
+  (image-type
+   (name 'pinebook-pro-raw)
+   (constructor (cut image-with-os arm64-disk-image <>))))
+
+(define pinebook-pro-barebones-raw-image
+  (image
+   (inherit
+    (os->image pinebook-pro-barebones-os #:type pinebook-pro-image-type))
+   (name 'pinebook-pro-barebones-raw-image)))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index b8a30c0abc..85e493fecb 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -195,11 +195,11 @@ upon error."
   (define device-mapping-commands
     ;; List of gexps to open the mapped devices.
     (map (lambda (md)
-           (let* ((source (mapped-device-source md))
-                  (target (mapped-device-target md))
-                  (type   (mapped-device-type md))
-                  (open   (mapped-device-kind-open type)))
-             (open source target)))
+           (let* ((source  (mapped-device-source md))
+                  (targets (mapped-device-targets md))
+                  (type    (mapped-device-type md))
+                  (open    (mapped-device-kind-open type)))
+             (open source targets)))
          mapped-devices))
 
   (define kodir
@@ -217,6 +217,7 @@ upon error."
                       (gnu system file-systems)
                       ((guix build utils) #:hide (delete))
                       (guix build bournish)   ;add the 'bournish' meta-command
+                      (srfi srfi-1)           ;for lvm-device-mapping
                       (srfi srfi-26)
 
                       ;; FIXME: The following modules are for
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index 31c50c4e40..559c27bb28 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -28,6 +28,7 @@
                           formatted-message
                           &fix-hint
                           &error-location))
+  #:use-module (guix deprecation)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
   #:use-module (gnu system uuid)
@@ -35,17 +36,19 @@
   #:autoload   (gnu build linux-modules)
                  (missing-modules)
   #:autoload   (gnu packages cryptsetup) (cryptsetup-static)
-  #:autoload   (gnu packages linux) (mdadm-static)
+  #:autoload   (gnu packages linux) (mdadm-static lvm2-static)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:use-module (ice-9 format)
-  #:export (mapped-device
+  #:export (%mapped-device
+            mapped-device
             mapped-device?
             mapped-device-source
             mapped-device-target
+            mapped-device-targets
             mapped-device-type
             mapped-device-location
 
@@ -61,7 +64,8 @@
             check-device-initrd-modules           ;XXX: needs a better place
 
             luks-device-mapping
-            raid-device-mapping))
+            raid-device-mapping
+            lvm-device-mapping))
 
 ;;; Commentary:
 ;;;
@@ -70,15 +74,36 @@
 ;;;
 ;;; Code:
 
-(define-record-type* <mapped-device> mapped-device
+(define-record-type* <mapped-device> %mapped-device
   make-mapped-device
   mapped-device?
   (source    mapped-device-source)                ;string | list of strings
-  (target    mapped-device-target)                ;string
+  (targets   mapped-device-targets)               ;list of strings
   (type      mapped-device-type)                  ;<mapped-device-kind>
   (location  mapped-device-location
              (default (current-source-location)) (innate)))
 
+(define-syntax mapped-device-compatibility-helper
+  (syntax-rules (target)
+    ((_ () (fields ...))
+     (%mapped-device fields ...))
+    ((_ ((target exp) rest ...) (others ...))
+     (%mapped-device others ...
+                      (targets (list exp))
+                      rest ...))
+    ((_ (field rest ...) (others ...))
+     (mapped-device-compatibility-helper (rest ...)
+                                         (others ... field)))))
+
+(define-syntax-rule (mapped-device fields ...)
+  "Build an <mapped-device> record, automatically converting 'target' field
+specifications to 'targets'."
+  (mapped-device-compatibility-helper (fields ...) ()))
+
+(define-deprecated (mapped-device-target md)
+  mapped-device-targets
+  (car (mapped-device-targets md)))
+
 (define-record-type* <mapped-device-type> mapped-device-kind
   make-mapped-device-kind
   mapped-device-kind?
@@ -97,14 +122,14 @@
   (shepherd-service-type
    'device-mapping
    (match-lambda
-     (($ <mapped-device> source target
+     (($ <mapped-device> source targets
                          ($ <mapped-device-type> open close))
       (shepherd-service
-       (provision (list (symbol-append 'device-mapping- (string->symbol target))))
+       (provision (list (symbol-append 'device-mapping- (string->symbol (string-join targets "-")))))
        (requirement '(udev))
        (documentation "Map a device node using Linux's device mapper.")
-       (start #~(lambda () #$(open source target)))
-       (stop #~(lambda _ (not #$(close source target))))
+       (start #~(lambda () #$(open source targets)))
+       (stop #~(lambda _ (not #$(close source targets))))
        (respawn? #f))))))
 
 (define (device-mapping-service mapped-device)
@@ -162,48 +187,52 @@ option of @command{guix system}.\n")
 ;;; Common device mappings.
 ;;;
 
-(define (open-luks-device source target)
+(define (open-luks-device source targets)
   "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
 'cryptsetup'."
   (with-imported-modules (source-module-closure
                           '((gnu build file-systems)))
-    #~(let ((source #$(if (uuid? source)
-                          (uuid-bytevector source)
-                          source)))
-        ;; XXX: 'use-modules' should be at the top level.
-        (use-modules (rnrs bytevectors)           ;bytevector?
-                     ((gnu build file-systems)
-                      #:select (find-partition-by-luks-uuid)))
-
-        ;; Use 'cryptsetup-static', not 'cryptsetup', to avoid pulling the
-        ;; whole world inside the initrd (for when we're in an initrd).
-        (zero? (system* #$(file-append cryptsetup-static "/sbin/cryptsetup")
-                        "open" "--type" "luks"
-
-                        ;; Note: We cannot use the "UUID=source" syntax here
-                        ;; because 'cryptsetup' implements it by searching the
-                        ;; udev-populated /dev/disk/by-id directory but udev may
-                        ;; be unavailable at the time we run this.
-                        (if (bytevector? source)
-                            (or (let loop ((tries-left 10))
-                                  (and (positive? tries-left)
-                                       (or (find-partition-by-luks-uuid source)
-                                           ;; If the underlying partition is
-                                           ;; not found, try again after
-                                           ;; waiting a second, up to ten
-                                           ;; times.  FIXME: This should be
-                                           ;; dealt with in a more robust way.
-                                           (begin (sleep 1)
-                                                  (loop (- tries-left 1))))))
-                                (error "LUKS partition not found" source))
-                            source)
-
-                        #$target)))))
-
-(define (close-luks-device source target)
+    (match targets
+      ((target)
+       #~(let ((source #$(if (uuid? source)
+                             (uuid-bytevector source)
+                             source)))
+           ;; XXX: 'use-modules' should be at the top level.
+           (use-modules (rnrs bytevectors) ;bytevector?
+                        ((gnu build file-systems)
+                         #:select (find-partition-by-luks-uuid)))
+
+           ;; Use 'cryptsetup-static', not 'cryptsetup', to avoid pulling the
+           ;; whole world inside the initrd (for when we're in an initrd).
+           (zero? (system* #$(file-append cryptsetup-static "/sbin/cryptsetup")
+                           "open" "--type" "luks"
+
+                           ;; Note: We cannot use the "UUID=source" syntax here
+                           ;; because 'cryptsetup' implements it by searching the
+                           ;; udev-populated /dev/disk/by-id directory but udev may
+                           ;; be unavailable at the time we run this.
+                           (if (bytevector? source)
+                               (or (let loop ((tries-left 10))
+                                     (and (positive? tries-left)
+                                          (or (find-partition-by-luks-uuid source)
+                                              ;; If the underlying partition is
+                                              ;; not found, try again after
+                                              ;; waiting a second, up to ten
+                                              ;; times.  FIXME: This should be
+                                              ;; dealt with in a more robust way.
+                                              (begin (sleep 1)
+                                                     (loop (- tries-left 1))))))
+                                   (error "LUKS partition not found" source))
+                               source)
+
+                           #$target)))))))
+
+(define (close-luks-device source targets)
   "Return a gexp that closes TARGET, a LUKS device."
-  #~(zero? (system* #$(file-append cryptsetup-static "/sbin/cryptsetup")
-                    "close" #$target)))
+  (match targets
+    ((target)
+     #~(zero? (system* #$(file-append cryptsetup-static "/sbin/cryptsetup")
+                       "close" #$target)))))
 
 (define* (check-luks-device md #:key
                             needed-for-boot?
@@ -235,36 +264,40 @@ option of @command{guix system}.\n")
    (close close-luks-device)
    (check check-luks-device)))
 
-(define (open-raid-device sources target)
+(define (open-raid-device sources targets)
   "Return a gexp that assembles SOURCES (a list of devices) to the RAID device
 TARGET (e.g., \"/dev/md0\"), using 'mdadm'."
-  #~(let ((sources '#$sources)
-
-          ;; XXX: We're not at the top level here.  We could use a
-          ;; non-top-level 'use-modules' form but that doesn't work when the
-          ;; code is eval'd, like the Shepherd does.
-          (every   (@ (srfi srfi-1) every))
-          (format  (@ (ice-9 format) format)))
-      (let loop ((attempts 0))
-        (unless (every file-exists? sources)
-          (when (> attempts 20)
-            (error "RAID devices did not show up; bailing out"
-                   sources))
-
-          (format #t "waiting for RAID source devices~{ ~a~}...~%"
-                  sources)
-          (sleep 1)
-          (loop (+ 1 attempts))))
-
-      ;; Use 'mdadm-static' rather than 'mdadm' to avoid pulling its whole
-      ;; closure (80 MiB) in the initrd when a RAID device is needed for boot.
-      (zero? (apply system* #$(file-append mdadm-static "/sbin/mdadm")
-                    "--assemble" #$target sources))))
-
-(define (close-raid-device sources target)
+  (match targets
+    ((target)
+     #~(let ((sources '#$sources)
+
+             ;; XXX: We're not at the top level here.  We could use a
+             ;; non-top-level 'use-modules' form but that doesn't work when the
+             ;; code is eval'd, like the Shepherd does.
+             (every   (@ (srfi srfi-1) every))
+             (format  (@ (ice-9 format) format)))
+         (let loop ((attempts 0))
+           (unless (every file-exists? sources)
+             (when (> attempts 20)
+               (error "RAID devices did not show up; bailing out"
+                      sources))
+
+             (format #t "waiting for RAID source devices~{ ~a~}...~%"
+                     sources)
+             (sleep 1)
+             (loop (+ 1 attempts))))
+
+         ;; Use 'mdadm-static' rather than 'mdadm' to avoid pulling its whole
+         ;; closure (80 MiB) in the initrd when a RAID device is needed for boot.
+         (zero? (apply system* #$(file-append mdadm-static "/sbin/mdadm")
+                       "--assemble" #$target sources))))))
+
+(define (close-raid-device sources targets)
   "Return a gexp that stops the RAID device TARGET."
-  #~(zero? (system* #$(file-append mdadm-static "/sbin/mdadm")
-                    "--stop" #$target)))
+  (match targets
+    ((target)
+     #~(zero? (system* #$(file-append mdadm-static "/sbin/mdadm")
+                       "--stop" #$target)))))
 
 (define raid-device-mapping
   ;; The type of RAID mapped devices.
@@ -272,4 +305,24 @@ TARGET (e.g., \"/dev/md0\"), using 'mdadm'."
    (open open-raid-device)
    (close close-raid-device)))
 
+(define (open-lvm-device source targets)
+  #~(and
+     (zero? (system* #$(file-append lvm2-static "/sbin/lvm")
+                     "vgchange" "--activate" "ay" #$source))
+     ; /dev/mapper nodes are usually created by udev, but udev may be unavailable at the time we run this. So we create them here.
+     (zero? (system* #$(file-append lvm2-static "/sbin/lvm")
+                     "vgscan" "--mknodes"))
+     (every file-exists? (map (lambda (file) (string-append "/dev/mapper/" file))
+                              '#$targets))))
+
+
+(define (close-lvm-device source targets)
+  #~(zero? (system* #$(file-append lvm2-static "/sbin/lvm")
+                    "vgchange" "--activate" "n" #$source)))
+
+(define lvm-device-mapping
+  (mapped-device-kind
+   (open open-lvm-device)
+   (close close-lvm-device)))
+
 ;;; mapped-devices.scm ends here
diff --git a/gnu/system/uuid.scm b/gnu/system/uuid.scm
index c8352f4933..f4c4be6e2b 100644
--- a/gnu/system/uuid.scm
+++ b/gnu/system/uuid.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
-;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,6 +42,7 @@
             string->ext2-uuid
             string->ext3-uuid
             string->ext4-uuid
+            string->bcachefs-uuid
             string->btrfs-uuid
             string->fat-uuid
             string->jfs-uuid
@@ -236,6 +237,7 @@ ISO9660 UUID representation."
 (define string->ext2-uuid string->dce-uuid)
 (define string->ext3-uuid string->dce-uuid)
 (define string->ext4-uuid string->dce-uuid)
+(define string->bcachefs-uuid string->dce-uuid)
 (define string->btrfs-uuid string->dce-uuid)
 (define string->jfs-uuid string->dce-uuid)
 
@@ -251,14 +253,14 @@ ISO9660 UUID representation."
 
 (define %uuid-parsers
   (vhashq
-   ('dce 'ext2 'ext3 'ext4 'btrfs 'jfs 'luks => string->dce-uuid)
+   ('dce 'ext2 'ext3 'ext4 'bcachefs 'btrfs 'jfs 'luks => string->dce-uuid)
    ('fat32 'fat16 'fat => string->fat-uuid)
    ('ntfs => string->ntfs-uuid)
    ('iso9660 => string->iso9660-uuid)))
 
 (define %uuid-printers
   (vhashq
-   ('dce 'ext2 'ext3 'ext4 'btrfs 'jfs 'luks => dce-uuid->string)
+   ('dce 'ext2 'ext3 'ext4 'bcachefs 'btrfs 'jfs 'luks => dce-uuid->string)
    ('iso9660 => iso9660-uuid->string)
    ('fat32 'fat16 'fat => fat-uuid->string)
    ('ntfs => ntfs-uuid->string)))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 3a5204e11b..93a79b12d6 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -77,7 +77,6 @@
 
             system-qemu-image/shared-store
             system-qemu-image/shared-store-script
-            system-disk-image-in-vm
             system-docker-image
 
             virtual-machine
@@ -224,6 +223,12 @@ substitutable."
               (use-modules (guix build utils)
                            (gnu build vm))
 
+              ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded
+              ;; by 'estimated-partition-size' below.
+              (setenv "GUIX_LOCPATH"
+                      #+(file-append glibc-utf8-locales "/lib/locale"))
+              (setlocale LC_ALL "en_US.utf8")
+
               (let* ((native-inputs
                       '#+(list qemu (canonical-package coreutils)))
                      (linux   (string-append
@@ -557,77 +562,6 @@ the operating system."
 ;;; VM and disk images.
 ;;;
 
-(define* (system-disk-image-in-vm os
-                                  #:key
-                                  (name "disk-image")
-                                  (file-system-type "ext4")
-                                  (disk-image-size (* 900 (expt 2 20)))
-                                  (volatile? #t)
-                                  (substitutable? #t))
-  "Return the derivation of a disk image of DISK-IMAGE-SIZE bytes of the
-system described by OS.  Said image can be copied on a USB stick as is.  When
-VOLATILE? is true, the root file system is made volatile; this is useful
-to USB sticks meant to be read-only.
-
-SUBSTITUTABLE? determines whether the returned derivation should be marked as
-substitutable."
-  (define root-label
-    "Guix_image")
-
-  (define (root-uuid os)
-    ;; UUID of the root file system, computed in a deterministic fashion.
-    ;; This is what we use to locate the root file system so it has to be
-    ;; different from the user's own file system UUIDs.
-    (operating-system-uuid os 'dce))
-
-  (define file-systems-to-keep
-    (remove (lambda (fs)
-              (string=? (file-system-mount-point fs) "/"))
-            (operating-system-file-systems os)))
-
-  (let* ((os (operating-system (inherit os)
-               ;; Since this is meant to be used on real hardware, don't
-               ;; install QEMU networking or anything like that.  Assume USB
-               ;; mass storage devices (usb-storage.ko) are available.
-               (initrd (lambda (file-systems . rest)
-                         (apply (operating-system-initrd os)
-                                file-systems
-                                #:volatile-root? volatile?
-                                rest)))
-
-               (bootloader (operating-system-bootloader os))
-
-               ;; Force our own root file system.  (We need a "/" file system
-               ;; to call 'root-uuid'.)
-               (file-systems (cons (file-system
-                                     (mount-point "/")
-                                     (device "/dev/placeholder")
-                                     (type file-system-type))
-                                   file-systems-to-keep))))
-         (uuid (root-uuid os))
-         (os (operating-system
-               (inherit os)
-               (file-systems (cons (file-system
-                                     (mount-point "/")
-                                     (device uuid)
-                                     (type file-system-type))
-                                   file-systems-to-keep))))
-        (bootcfg (operating-system-bootcfg os)))
-    (qemu-image #:name name
-                #:os os
-                #:bootcfg-drv bootcfg
-                #:bootloader (bootloader-configuration-bootloader
-                              (operating-system-bootloader os))
-                #:disk-image-size disk-image-size
-                #:disk-image-format "raw"
-                #:file-system-type file-system-type
-                #:file-system-label root-label
-                #:file-system-uuid uuid
-                #:copy-inputs? #t
-                #:inputs `(("system" ,os)
-                           ("bootcfg" ,bootcfg))
-                #:substitutable? substitutable?)))
-
 (define* (system-qemu-image os
                             #:key
                             (file-system-type "ext4")
@@ -641,7 +575,10 @@ of the GNU system as described by OS."
               (let ((target (file-system-mount-point fs))
                     (source (file-system-device fs)))
                 (or (string=? target "/")
-                    (string-prefix? "/dev/" source))))
+                    (and (string? source)
+                         (string-prefix? "/dev/" source))
+                    (uuid? source)
+                    (file-system-label? source))))
             (operating-system-file-systems os)))
 
   (define root-uuid
@@ -652,7 +589,14 @@ of the GNU system as described by OS."
                                'dce)))
 
 
-  (let* ((os (operating-system (inherit os)
+  (let* ((os (operating-system
+               (inherit os)
+
+               ;; As in 'virtualized-operating-system', use BIOS-style GRUB.
+               (bootloader (bootloader-configuration
+                            (bootloader grub-bootloader)
+                            (target "/dev/vda")))
+
                ;; Assume we have an initrd with the whole QEMU shebang.
 
                ;; Force our own root file system.  Refer to it by UUID so that
diff --git a/gnu/tests/audio.scm b/gnu/tests/audio.scm
index 8eadaf02e1..7bf7d4ef14 100644
--- a/gnu/tests/audio.scm
+++ b/gnu/tests/audio.scm
@@ -28,9 +28,7 @@
 
 (define %mpd-os
   (simple-operating-system
-   (service mpd-service-type
-            (mpd-configuration
-             (user "root")))))
+   (service mpd-service-type)))
 
 (define (run-mpd-test)
   "Run tests in %mpd-os, which has mpd running."
@@ -62,9 +60,14 @@
                 (start-service 'mpd))
              marionette))
 
-          (test-assert "mpc connect"
+          (test-assert "mpd listening"
+            ;; Wait until mpd is actually listening before spawning 'mpc'.
+            (wait-for-tcp-port 6600 marionette))
+
+          (test-equal "mpc connect"
+            0
             (marionette-eval
-             '(zero? (system #$(file-append mpd-mpc "/bin/mpc")))
+             '(system* #$(file-append mpd-mpc "/bin/mpc"))
              marionette))
 
           (test-end)
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 482310cc12..e5f9b87b1d 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -880,7 +880,7 @@ non-ASCII names from /tmp.")
           (test-equal "avahi-browse"
             0
             (marionette-eval
-             '(system* "avahi-browse" "-avt")
+             '(system* "/run/current-system/profile/bin/avahi-browse" "-avt")
              marionette))
 
           (test-assert "getaddrinfo .local"
diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm
index e0544bbcd2..31d5ae4c6a 100644
--- a/gnu/tests/databases.scm
+++ b/gnu/tests/databases.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -215,7 +216,9 @@
 
 (define %postgresql-os
   (simple-operating-system
-   (service postgresql-service-type)))
+   (service postgresql-service-type
+            (postgresql-configuration
+             (postgresql postgresql-10)))))
 
 (define (run-postgresql-test)
   "Run tests in %POSTGRESQL-OS."
@@ -269,7 +272,7 @@
 
 (define %mysql-os
   (simple-operating-system
-   (mysql-service)))
+   (service mysql-service-type)))
 
 (define* (run-mysql-test)
   "Run tests in %MYSQL-OS."
@@ -309,6 +312,48 @@
                      ((pid) (number? pid))))))
              marionette))
 
+          (test-assert "mysql_upgrade completed"
+            (wait-for-file "/var/lib/mysql/mysql_upgrade_info" marionette))
+
+          (test-eq "create database"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append mariadb "/bin/mysql")
+                         "-e" "CREATE DATABASE guix;"))
+             marionette))
+
+          (test-eq "create table"
+            0
+            (marionette-eval
+             '(begin
+                (system*
+                 #$(file-append mariadb "/bin/mysql") "guix"
+                 "-e" "CREATE TABLE facts (id INT, data VARCHAR(12));"))
+             marionette))
+
+          (test-eq "insert data"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append mariadb "/bin/mysql") "guix"
+                         "-e" "INSERT INTO facts VALUES (1, 'awesome')"))
+             marionette))
+
+          (test-equal "retrieve data"
+            "awesome\n"
+            (marionette-eval
+             '(begin
+                (use-modules (ice-9 popen))
+                (let* ((port (open-pipe*
+                              OPEN_READ
+                              #$(file-append mariadb "/bin/mysql") "guix"
+                              "-NB" "-e" "SELECT data FROM facts WHERE id=1;"))
+                       (output (get-string-all port)))
+                  (close-pipe port)
+                  output))
+             marionette))
+
           (test-end)
           (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
 
diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm
index ea6c9a33fe..c70c3ddb9e 100644
--- a/gnu/tests/docker.scm
+++ b/gnu/tests/docker.scm
@@ -27,8 +27,9 @@
   #:use-module (gnu services networking)
   #:use-module (gnu services docker)
   #:use-module (gnu services desktop)
-  #:use-module (gnu packages docker)
+  #:use-module ((gnu packages base) #:select (glibc))
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages docker)
   #:use-module (guix gexp)
   #:use-module (guix grafts)
   #:use-module (guix monads)
@@ -206,7 +207,7 @@ inside %DOCKER-OS."
      ;; load' must be able to store the whole image into memory, hence the
      ;; huge memory requirements.  We should avoid the volatile-root setup
      ;; instead.
-     (memory-size 3500)
+     (memory-size 4000)
      (port-forwardings '())))
 
   (define test
@@ -298,5 +299,9 @@ inside %DOCKER-OS."
    (description "Run a system image as produced by @command{guix system
 docker-image} inside Docker.")
    (value (with-monad %store-monad
-            (>>= (system-docker-image (simple-operating-system))
+            (>>= (system-docker-image (operating-system
+                                        (inherit (simple-operating-system))
+                                        ;; Use locales for a single libc to
+                                        ;; reduce space requirements.
+                                        (locale-libcs (list glibc))))
                  run-docker-system-test)))))
diff --git a/gnu/tests/guix.scm b/gnu/tests/guix.scm
index 20b67d55d3..af7d8f0b21 100644
--- a/gnu/tests/guix.scm
+++ b/gnu/tests/guix.scm
@@ -156,6 +156,7 @@
    (service dhcp-client-service-type)
    (service postgresql-service-type
             (postgresql-configuration
+             (postgresql postgresql-10)
              (config-file
               (postgresql-config-file
                (hba-file
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 86bd93966b..71caa3a493 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -67,6 +67,7 @@
             %test-btrfs-root-on-subvolume-os
             %test-jfs-root-os
             %test-f2fs-root-os
+            %test-lvm-separate-home-os
 
             %test-gui-installed-os
             %test-gui-installed-os-encrypted
@@ -798,6 +799,92 @@ build (current-guix) and then store a couple of full system images.")
 
 
 ;;;
+;;; Separate /home on LVM
+;;;
+
+;; Since LVM support in guix currently doesn't allow root-on-LVM we use /home on LVM
+(define-os-with-source (%lvm-separate-home-os %lvm-separate-home-os-source)
+  (use-modules (gnu) (gnu tests))
+
+  (operating-system
+    (host-name "separate-home-on-lvm")
+    (timezone "Europe/Paris")
+    (locale "en_US.utf8")
+
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
+    (kernel-arguments '("console=ttyS0"))
+
+    (mapped-devices (list (mapped-device
+                           (source "vg0")
+                           (target "vg0-home")
+                           (type lvm-device-mapping))))
+    (file-systems (cons* (file-system
+                           (device (file-system-label "root-fs"))
+                           (mount-point "/")
+                           (type "ext4"))
+                         (file-system
+                           (device "/dev/mapper/vg0-home")
+                           (mount-point "/home")
+                           (type "ext4")
+                           (dependencies mapped-devices))
+                        %base-file-systems))
+    (users %base-user-accounts)
+    (services (cons (service marionette-service-type
+                             (marionette-configuration
+                              (imported-modules '((gnu services herd)
+                                                  (guix combinators)))))
+                    %base-services))))
+
+(define %lvm-separate-home-installation-script
+  "\
+. /etc/profile
+set -e -x
+guix --version
+
+export GUIX_BUILD_OPTIONS=--no-grafts
+parted --script /dev/vdb mklabel gpt \\
+  mkpart primary ext2 1M 3M \\
+  mkpart primary ext2 3M 1.6G \\
+  mkpart primary 1.6G 3.2G \\
+  set 1 boot on \\
+  set 1 bios_grub on
+pvcreate /dev/vdb3
+vgcreate vg0 /dev/vdb3
+lvcreate -L 1.6G -n home vg0
+vgchange -ay
+mkfs.ext4 -L root-fs /dev/vdb2
+mkfs.ext4 /dev/mapper/vg0-home
+mount /dev/vdb2 /mnt
+mkdir /mnt/home
+mount /dev/mapper/vg0-home /mnt/home
+df -h /mnt /mnt/home
+herd start cow-store /mnt
+mkdir /mnt/etc
+cp /etc/target-config.scm /mnt/etc/config.scm
+guix system init /mnt/etc/config.scm /mnt --no-substitutes
+sync
+reboot\n")
+
+(define %test-lvm-separate-home-os
+  (system-test
+   (name "lvm-separate-home-os")
+   (description
+    "Test functionality of an OS installed with a LVM /home partition")
+   (value
+    (mlet* %store-monad ((image   (run-install %lvm-separate-home-os
+                                               %lvm-separate-home-os-source
+                                               #:script
+                                               %lvm-separate-home-installation-script
+                                               #:packages (list lvm2-static)
+                                               #:target-size (* 3200 MiB)))
+                         (command (qemu-command/writable-image image)))
+      (run-basic-test %lvm-separate-home-os
+                      `(,@command) "lvm-separate-home-os")))))
+
+
+;;;
 ;;; Btrfs root file system.
 ;;;
 
@@ -1211,6 +1298,16 @@ build (current-guix) and then store a couple of full system images.")
                         #$marionette)
       (screenshot "installer-run.ppm")
 
+      (unless #$encrypted?
+        ;; At this point, user partitions are formatted and the installer is
+        ;; waiting for us to start the final step: generating the
+        ;; configuration file, etc.  Set a fixed UUID on the swap partition
+        ;; that matches what 'installation-target-os-for-gui-tests' expects.
+        (marionette-eval* '(invoke #$(file-append util-linux "/sbin/swaplabel")
+                                   "-U" "11111111-2222-3333-4444-123456789abc"
+                                   "/dev/vda2")
+                          #$marionette))
+
       (marionette-eval* '(conclude-installation installer-socket)
                         #$marionette)
 
@@ -1257,8 +1354,12 @@ build (current-guix) and then store a couple of full system images.")
                            '("wheel" "audio" "video"))))
                    %base-user-accounts))
     ;; The installer does not create a swap device in guided mode with
-    ;; encryption support.
-    (swap-devices (if encrypted? '() '("/dev/vda2")))
+    ;; encryption support.  The installer produces a UUID for the partition;
+    ;; this "UUID" is explicitly set in 'gui-test-program' to the value shown
+    ;; below.
+    (swap-devices (if encrypted?
+                      '()
+                      (list (uuid "11111111-2222-3333-4444-123456789abc"))))
     (services (cons (service dhcp-client-service-type)
                     (operating-system-user-services %minimal-os-on-vda)))))
 
diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm
index a50fb1dbca..eb8952b33a 100644
--- a/gnu/tests/mail.scm
+++ b/gnu/tests/mail.scm
@@ -205,8 +205,7 @@ acl_check_data:
      (port-forwardings '((1025 . 25)))))
 
   (define test
-    (with-imported-modules '((gnu build marionette)
-                             (ice-9 ftw))
+    (with-imported-modules '((gnu build marionette))
       #~(begin
           (use-modules (rnrs base)
                        (srfi srfi-64)
diff --git a/gnu/tests/monitoring.scm b/gnu/tests/monitoring.scm
index d20b8ac59e..7371b02fe1 100644
--- a/gnu/tests/monitoring.scm
+++ b/gnu/tests/monitoring.scm
@@ -307,7 +307,9 @@ zabbix||{}
   (let ((base-os
          (simple-operating-system
           (service dhcp-client-service-type)
-          (postgresql-service)
+          (service postgresql-service-type
+                   (postgresql-configuration
+                    (postgresql postgresql-10)))
           (service zabbix-front-end-service-type
                    (zabbix-front-end-configuration
                     (db-password "zabbix")))
diff --git a/gnu/tests/nfs.scm b/gnu/tests/nfs.scm
index da729ddcc9..5d04af38fb 100644
--- a/gnu/tests/nfs.scm
+++ b/gnu/tests/nfs.scm
@@ -404,7 +404,7 @@ directories can be mounted.")
           (test-end)
           (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
 
-  (gexp->derivation "nfs-server-test" test))
+  (gexp->derivation "nfs-root-fs-test" test))
 
 (define %test-nfs-root-fs
   (system-test
diff --git a/gnu/tests/reconfigure.scm b/gnu/tests/reconfigure.scm
index 928a210a94..52beeef447 100644
--- a/gnu/tests/reconfigure.scm
+++ b/gnu/tests/reconfigure.scm
@@ -260,7 +260,9 @@ bootloader's configuration file."
      ;; test suite, the bootloader installer script is omitted. 'grub-install'
      ;; would attempt to write directly to the virtual disk if the
      ;; installation script were run.
-     (test (install-bootloader-program #f #f bootcfg bootcfg-file #f "/")))))
+     (test
+      (install-bootloader-program #f #f #f bootcfg bootcfg-file #f "/")))))
+
 
 (define %test-switch-to-system
   (system-test
diff --git a/gnu/tests/version-control.scm b/gnu/tests/version-control.scm
index 230aa9edf9..d3cf19c913 100644
--- a/gnu/tests/version-control.scm
+++ b/gnu/tests/version-control.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;;
@@ -285,6 +285,10 @@ HTTP-PORT."
              '(file-exists? "/srv/git/test")
              marionette))
 
+          (test-assert "fcgiwrap listens"
+            ;; Wait for fcgiwrap to be ready before cloning.
+            (wait-for-tcp-port 9000 marionette))
+
           ;; Make sure we can clone the repo from the host.
           (test-equal "clone"
             '#$README-contents
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 7513eab2e4..7f4518acd2 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -567,7 +567,9 @@ HTTP-PORT."
              (config
               (httpd-config-file
                (listen '("8080"))))))
-   (service postgresql-service-type)
+   (service postgresql-service-type
+            (postgresql-configuration
+             (postgresql postgresql-10)))
    (service patchwork-service-type
             (patchwork-configuration
              (patchwork patchwork)