summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--NEWS25
-rw-r--r--etc/snippets/text-mode/guix-commit-message-add-cl-package13
-rw-r--r--etc/snippets/text-mode/guix-commit-message-add-package2
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/algebra.scm3
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/backup.scm4
-rw-r--r--gnu/packages/bioinformatics.scm132
-rw-r--r--gnu/packages/bootloaders.scm17
-rw-r--r--gnu/packages/chromium.scm118
-rw-r--r--gnu/packages/djvu.scm40
-rw-r--r--gnu/packages/emacs-xyz.scm84
-rw-r--r--gnu/packages/fontutils.scm4
-rw-r--r--gnu/packages/game-development.scm49
-rw-r--r--gnu/packages/gpodder.scm5
-rw-r--r--gnu/packages/graphviz.scm23
-rw-r--r--gnu/packages/image.scm6
-rw-r--r--gnu/packages/javascript.scm35
-rw-r--r--gnu/packages/linux.scm36
-rw-r--r--gnu/packages/lsof.scm77
-rw-r--r--gnu/packages/ocaml.scm12
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/eigen-remove-openmp-error-counting.patch64
-rw-r--r--gnu/packages/patches/lsof-fatal-test-failures.patch58
-rw-r--r--gnu/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch68
-rw-r--r--gnu/packages/patches/python-pydot-regression-test.patch79
-rw-r--r--gnu/packages/patches/ungoogled-chromium-system-nspr.patch22
-rw-r--r--gnu/packages/python-web.scm13
-rw-r--r--gnu/packages/python-xyz.scm161
-rw-r--r--gnu/packages/rust-apps.scm1
-rw-r--r--gnu/packages/textutils.scm5
-rw-r--r--gnu/packages/virtualization.scm47
-rw-r--r--gnu/packages/webkit.scm6
-rw-r--r--guix/store.scm5
36 files changed, 1002 insertions, 234 deletions
diff --git a/NEWS b/NEWS
index 62b599c9c9..122c184f65 100644
--- a/NEWS
+++ b/NEWS
@@ -69,8 +69,19 @@ guix-build-coordinator-agent, guix-build-coordinator-queue-builds, hostapd,
 hurd-console, hurd-getty, hurd-vm, lxqt, rshiny, secret-service,
 simulated-wifi, udev-rules, unattended-upgrade, webssh, zram
 
-*** XXX new packages
-*** XXX package updates
+*** 1999 new packages
+*** 3652 package updates
+
+Noteworthy updates:
+bash 5.0.16, binutils 2.34, cups 2.3.3, emacs 27.1, enlightenment 0.24.2,
+gcc-toolchain 10.2.0, gdb 10.1, ghc 8.8.3, gimp 2.10.22, glibc 2.31,
+gnome 3.34.2, gnupg 2.2.23, go 1.14.10, guile 3.0.4,
+icecat 78.4.0-guix0-preview1, inkscape 1.0.1, julia 1.5.2,
+libreoffice 6.4.6.2, linux-libre 5.9.3, mate 1.24.1, ocaml 4.09.0,
+openjdk 14.0, perl 5.30.2, python2 2.7.17, python 3.8.2, racket 7.8,
+rust 1.46.0, r 4.0.3, sbcl 2.0.10, shepherd 0.8.1, xfce 4.14.2,
+xorg-server 1.20.8
+
 
 ** Programming interfaces
 *** New ‘maven-build-system’, for packages built with Maven
@@ -144,7 +155,15 @@ simulated-wifi, udev-rules, unattended-upgrade, webssh, zram
     (<https://bugs.gnu.org/43744>)
 
 ** Native language support
-*** TODO populate
+*** Updated translations of the manual
+
+The manual is fully translated into French, German, and Spanish, and has
+preliminary translations into Chinese and Russian.
+
+*** Updated translations of messages
+
+This version of Guix is fully translated in French, German, and Spanish, and
+partially translated in 11 other languages.
 
 * Changes in 1.1.0 (since 1.0.1)
 ** Package management
diff --git a/etc/snippets/text-mode/guix-commit-message-add-cl-package b/etc/snippets/text-mode/guix-commit-message-add-cl-package
new file mode 100644
index 0000000000..b0f7ef65e3
--- /dev/null
+++ b/etc/snippets/text-mode/guix-commit-message-add-cl-package
@@ -0,0 +1,13 @@
+# -*- mode: snippet -*-
+# name: guix-commit-message-add-cl-package
+# key: addcl
+# condition: git-commit-mode
+# --
+gnu: Add ${1:`(with-temp-buffer
+                (magit-git-wash #'magit-diff-wash-diffs
+                  "diff" "--staged")
+                (beginning-of-buffer)
+                (when (search-forward "+(define-public " nil 'noerror)
+                  (thing-at-point 'sexp 'no-properties)))`}.
+
+* `(car (magit-staged-files))` (${1:$(replace-regexp-in-string (rx line-start "sbcl" (optional "-cl")) "cl" yas-text)}, ${1:$(replace-regexp-in-string "^sbcl" "ecl" yas-text)}, $1): New variables.
\ No newline at end of file
diff --git a/etc/snippets/text-mode/guix-commit-message-add-package b/etc/snippets/text-mode/guix-commit-message-add-package
index 0dff2cbcf5..e54a06de7e 100644
--- a/etc/snippets/text-mode/guix-commit-message-add-package
+++ b/etc/snippets/text-mode/guix-commit-message-add-package
@@ -7,7 +7,7 @@ gnu: Add ${1:`(with-temp-buffer
                 (magit-git-wash #'magit-diff-wash-diffs
                   "diff" "--staged")
                 (beginning-of-buffer)
-                (when (search-forward "(define-public " nil 'noerror)
+                (when (search-forward "+(define-public " nil 'noerror)
                   (thing-at-point 'sexp 'no-properties)))`}.
 
 * `(car (magit-staged-files))` ($1): New variable.
\ No newline at end of file
diff --git a/gnu/local.mk b/gnu/local.mk
index 49d7ea93b3..c095a5e86a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -934,6 +934,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		\
@@ -1312,6 +1313,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                    \
@@ -1389,6 +1391,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/nvi-db4.patch				\
   %D%/packages/patches/nyacc-binary-literals.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	\
@@ -1526,6 +1529,7 @@ 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/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-source-date-epoch.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 1ea6f975ff..20d5978e6d 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -443,7 +443,7 @@ graphs and can export its output to different formats.")
 (define-public facter
   (package
     (name "facter")
-    (version "4.0.44")
+    (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
-                "0cs4cr5xc3yvnln9k3gdhypnq6iw4zfrhqrhslvli11l9mwdbjwn"))))
+                "1pi93i1jfpmxxw22b5r4gyx5jzgrammlrjzhjr3q2bpn3kcas91j"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 1c485a3f07..5b391449a0 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1017,7 +1017,8 @@ Optional thin wrappers allow usage of the library from other languages.")
                (base32
                 "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,
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index df8b8efcf1..852b56e80f 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4086,14 +4086,14 @@ on the ALSA software PCM plugin.")
 (define-public snd
   (package
     (name "snd")
-    (version "20.8")
+    (version "20.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
                                   "snd-" version ".tar.gz"))
               (sha256
                (base32
-                "1hw81innyyiwiyb8jkpq9aj7idmcb41yvgd1blac997023h78sss"))))
+                "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 64058f1233..419ffc55e8 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -82,7 +82,7 @@
 (define-public duplicity
   (package
     (name "duplicity")
-    (version "0.8.15")
+    (version "0.8.17")
     (source
      (origin
       (method url-fetch)
@@ -91,7 +91,7 @@
                           "-series/" version "/+download/duplicity-"
                           version ".tar.gz"))
       (sha256
-       (base32 "1kg467mxg5a97v1rlv4shk32krgv8ys4nczq4b11av4bp1lgysdc"))))
+       (base32 "114rwkf9b3h4fcagrx013sb7krc4hafbwl9gawjph2wd9pkv2wx2"))))
     (build-system python-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)     ; for msgfmt
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 01c45fcc96..b051389ae2 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>
@@ -18,6 +18,7 @@
 ;;; 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.
 ;;;
@@ -102,6 +103,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 +114,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)
@@ -2579,6 +2583,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")
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 12bc39322f..2e9709982f 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -138,14 +138,15 @@
                     ;; 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 inputs #:allow-other-keys)
-                      (let ((freetype (assoc-ref (or native-inputs inputs) "freetype")))
-                        (setenv "BUILD_FREETYPE_LIBS"
-                                (string-append "-L" freetype
-                                               "/lib -lfreetype"))
-                        (setenv "BUILD_FREETYPE_CFLAGS"
-                                (string-append "-I" freetype
-                                               "/include/freetype2")))
+                    (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 _
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 3d6a1b03ec..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.198")
-(define %ungoogled-revision "b68e17f32e9eff56615a07b44e457835bb9460c6")
+(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,7 @@
                               (string-take %ungoogled-revision 7)))
     (sha256
      (base32
-      "0visyhz321ykrmbjndvx31yd8xlmha9gas0xbkavc2i45rpfahjq"))))
+      "1cka9h7znkmilz9ld4s8pw1jjq2p7br03g3agcnqrk591y5h141i"))))
 
 (define %guix-patches
   (list (local-file
@@ -363,8 +352,7 @@
           (for-each (lambda (patch)
                       (invoke "patch" "-p1" "--force" "--input"
                               patch "--no-backup-if-mismatch"))
-                    (append '#+%debian-patches '#+%arch-patches
-                            '#+%guix-patches))
+                    (append '#+%debian-patches '#+%guix-patches))
 
           (with-directory-excursion #+%ungoogled-origin
             (format #t "Ungooglifying...~%")
@@ -455,7 +443,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0i3s1il0x5yi3528gdsg3bhnyhs2x24zh7p1nd5apv3va9g85ax0"))
+                "0hgpg31gkksqgyvycsan7l7vjypc7cr6ikjfygf2zv7dhbmf9a19"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
@@ -469,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"
@@ -477,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"
@@ -512,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"
@@ -535,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"
@@ -790,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)
@@ -840,12 +838,14 @@
        ("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")
@@ -878,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/djvu.scm b/gnu/packages/djvu.scm
index 90db1a2d42..605a922768 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -26,6 +26,7 @@
   #: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)
@@ -41,7 +42,9 @@
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xorg))
 
 (define-public djvulibre
@@ -77,7 +80,7 @@ utilities.")
 (define-public djview
   (package
     (name "djview")
-    (version "4.11")
+    (version "4.12")
     (source
      (origin
        (method git-fetch)
@@ -85,7 +88,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
@@ -272,3 +275,36 @@ 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))
+    (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)))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 885487bf17..5f49c64bb7 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -3074,6 +3074,40 @@ 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")
@@ -6719,6 +6753,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")
@@ -6770,6 +6831,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")
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 870b6dd7b9..7409670a59 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -937,7 +937,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)
@@ -945,7 +945,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")))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 8c8ed19338..c57ea5a908 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -1764,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)))
@@ -1840,6 +1802,9 @@ 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")
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
index fc3a78bc7b..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)
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/image.scm b/gnu/packages/image.scm
index 5bc144f769..db0cb855bb 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -2128,16 +2128,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/javascript.scm b/gnu/packages/javascript.scm
index 669951f741..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)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index fd2c43aec8..7c07a6d008 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -352,7 +352,7 @@ 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.9-version "5.9.9")
+(define-public linux-libre-5.9-version "5.9.10")
 (define deblob-scripts-5.9
   (linux-libre-deblob-scripts
    linux-libre-5.9-version
@@ -360,7 +360,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "0yb04a4j2wq3mwvks3cj7kcm2pscmfs29lrz3falkxpbvjxbbgq2")))
 (define-public linux-libre-5.9-pristine-source
   (let ((version linux-libre-5.9-version)
-        (hash (base32 "1b8zysy0br131ydhc7ycxhh8d88r44xrmkf2q2lffy0jmy3d60m3")))
+        (hash (base32 "0c7hcqn1ld0axlipzpwmjr1jwizrhz5w6bdfbk9npbirx7rb54gm")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.9)))
@@ -368,7 +368,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
 ;; 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.78")
+(define-public linux-libre-5.4-version "5.4.79")
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
    linux-libre-5.4-version
@@ -376,12 +376,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
    (base32 "167zcfkw62pm6nv1xdvvhxw0ca724sywcywnv3z00189f8f8p3vg")))
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "0z8skj0w9jfrz9pfxaqfzqh82l13bz5lhza2wjsxk02cyhhnm226")))
+        (hash (base32 "09ffj66wlp27vx799lnixq4zdkin3y4pqaw4lx2a6rpz13xr3455")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.158")
+(define-public linux-libre-4.19-version "4.19.159")
 (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 "0p5pim9izcscnk1a1kdlxbvyvxnnq9lqr1kwl86kfskr7yqy8n6n")))
+        (hash (base32 "195hlvr9zsa2km80rk71na1gl0222r2mk76rsqx0cxpgg7dhpjv0")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.207")
+(define-public linux-libre-4.14-version "4.14.208")
 (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 "0a804hwh7cwbdd2gnr5n9i32b4s6gppd8iqihah4sn4q1nbm79vq")))
+        (hash (base32 "0vzn5kprjlgpgnjr1drjq97x9xbyfgigpgs42xsfw61h2qjy3b1q")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.244")
+(define-public linux-libre-4.9-version "4.9.245")
 (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 "02givxp0y04qma5nlqbpyxdcl7xdb41p3gw7kgj2rmwdanhzaylr")))
+        (hash (base32 "1vxsd3g96vbykrmfnj9qali0p868h678qzcqvf4yrhya47k6pnnb")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.244")
+(define-public linux-libre-4.4-version "4.4.245")
 (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 "0brdj6z7flchig80ja0dhzcrpl743lh74s4r4r6prbgkksif9ahp")))
+        (hash (base32 "0g1cnis8496kp1ln922gxa7skfr096mdvv89la6676yw7dd4lhyi")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -4083,14 +4083,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
@@ -7600,13 +7600,13 @@ receiving.  It is dedicated to the PL011 UART of the Raspberry Pi.")
 (define-public ipset
   (package
     (name "ipset")
-    (version "7.7")
+    (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
-                "0ckc678l1431mb0q5ilfgy0ajjwi8n135c72h606imm43dc0v9a5"))))
+                "02mkp7vmsh609dcp02xi290sxmsgq2fsch3875dxkwfxkrl16p5p"))))
     (build-system gnu-build-system)
     (inputs
      `(("libmnl" ,libmnl)))
@@ -7614,7 +7614,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/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/ocaml.scm b/gnu/packages/ocaml.scm
index 706def4f43..369e819573 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -5797,16 +5797,18 @@ 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"))))
     (build-system dune-build-system)
     (arguments
-     `(;; NOTE: GC reclaims bigarrays packed into a custom structure
-       ;; regardless of their refcounts. Affects OCaml >= 4.10.x
-       ;; https://github.com/ocaml/ocaml/issues/9360
-       #:tests? #f
-       #:test-target "tests"))
+     `(#:test-target "tests"))
     (inputs
      `(("cairo" ,cairo)
        ("gtk+-2" ,gtk+-2)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 4a6881d475..6fd789ef53 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -130,8 +130,8 @@
   ;; 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.2.0rc2")
-        (commit "0d4b1afb6bfa4bdeade2cb6409ece9467d513e39")
+  (let ((version "1.2.0")
+        (commit "bd96e6d34e4e65dc37eaae7302033d0da287c1e2")
         (revision 1))
     (package
       (name "guix")
@@ -148,7 +148,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1d0pifzrr14f1n0fn21rlh0hzfjvfsavf9as1vcjga47bdjjvrpp"))
+                  "0j27yw6s89rni39dmjdz3i617ddr2yi5y5hj0i2a7sw8fn215hp4"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 2e56fe4c1e..be88829825 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -55,14 +55,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20201022")
+    (version "20201122")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "0qgh3947l854nvh2ylykbyzsflixd2zdi17vmwqm6azn9a32kzim"))))
+       (base32 "0c7zrb26xhbn48kvxs01qyj1vhwrpzkm11xxvi23njb6qi1bz82d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
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/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/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/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/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/python-web.scm b/gnu/packages/python-web.scm
index 2ccb41fe3a..16249680f2 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -3111,6 +3111,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")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2f270d1b3e..2d9f2f10cc 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>
@@ -123,6 +124,7 @@
   #: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)
@@ -166,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)
@@ -16264,6 +16267,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")
@@ -16352,14 +16474,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)
@@ -22872,3 +22994,38 @@ applications with variable CPU loads).")
 
 (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))
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 004f71ae8d..4b66429335 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -73,6 +73,7 @@
         ("rust-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.4))
        #:cargo-development-inputs
        (("rust-datetime" ,rust-datetime-0.4))
+       #:phases
        (modify-phases %standard-phases
          ;; Ignoring failing tests.
          ;; Reported in https://github.com/ogham/exa/issues/318
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 11613cb703..34da04d0d8 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -1126,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")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 09ee84e3ad..ed09f3dcd2 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)
@@ -2047,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.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "transient" version))
+       (sha256
+        (base32
+         "1740l50483fcq9748g69nkk28s2x69n4hh1l7n8f4s7p6lq1kqjy"))))
+    (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/webkit.scm b/gnu/packages/webkit.scm
index d72cbfeda3..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.2")
+    (version "2.30.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   "webkitgtk-" version ".tar.xz"))
               (sha256
                (base32
-                "0ak8slddg7gpk6m096xzkiqw9bfsrrizvqr815bw44665fyf0ry4"))
+                "0zsy3say94d9bhaan0l6mfr59z03a5x4kngyy8b2i20n77q19skd"))
               (patches (search-patches "webkitgtk-share-store.patch"
                                        "webkitgtk-bind-all-fonts.patch"))))
     (build-system cmake-build-system)
diff --git a/guix/store.scm b/guix/store.scm
index 11e2dae579..4da39971b5 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1399,8 +1399,9 @@ When a handler is installed with 'with-build-handler', it is called any time
                                          (status  1))))))))))))
 
 (define-operation (ensure-path (store-path path))
-  "Make PATH a temporary root for the duration of the current session.
-Return #t."
+  "Ensure that a path is valid.  If it is not valid, it may be made valid by
+running a substitute.  As a GC root is not created by the daemon, you may want
+to call ADD-TEMP-ROOT on that store path."
   boolean)
 
 (define-operation (add-temp-root (store-path path))