summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/build.scm7
-rw-r--r--doc/htmlxref.cnf45
-rw-r--r--gnu/installer/newt/final.scm8
-rw-r--r--gnu/installer/newt/page.scm78
-rw-r--r--gnu/local.mk5
-rw-r--r--gnu/packages/audio.scm21
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/check.scm13
-rw-r--r--gnu/packages/chez.scm13
-rw-r--r--gnu/packages/cmake.scm14
-rw-r--r--gnu/packages/crates-io.scm109
-rw-r--r--gnu/packages/crypto.scm29
-rw-r--r--gnu/packages/databases.scm12
-rw-r--r--gnu/packages/disk.scm2
-rw-r--r--gnu/packages/emacs-xyz.scm33
-rw-r--r--gnu/packages/entr.scm10
-rw-r--r--gnu/packages/freedesktop.scm29
-rw-r--r--gnu/packages/games.scm40
-rw-r--r--gnu/packages/geo.scm125
-rw-r--r--gnu/packages/gnome.scm457
-rw-r--r--gnu/packages/graphviz.scm4
-rw-r--r--gnu/packages/gstreamer.scm11
-rw-r--r--gnu/packages/gtk.scm10
-rw-r--r--gnu/packages/guile-xyz.scm58
-rw-r--r--gnu/packages/guile.scm29
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/linux.scm30
-rw-r--r--gnu/packages/lisp-xyz.scm45
-rw-r--r--gnu/packages/maths.scm10
-rw-r--r--gnu/packages/messaging.scm7
-rw-r--r--gnu/packages/mpi.scm3
-rw-r--r--gnu/packages/music.scm7
-rw-r--r--gnu/packages/patches/audacity-build-with-system-portaudio.patch16
-rw-r--r--gnu/packages/patches/jsoncpp-fix-inverted-case.patch22
-rw-r--r--gnu/packages/patches/spice-fix-test-armhf.patch19
-rw-r--r--gnu/packages/patches/wavpack-CVE-2018-6767.patch119
-rw-r--r--gnu/packages/patches/wavpack-CVE-2018-7253.patch29
-rw-r--r--gnu/packages/patches/wavpack-CVE-2018-7254.patch62
-rw-r--r--gnu/packages/popt.scm9
-rw-r--r--gnu/packages/python-crypto.scm101
-rw-r--r--gnu/packages/python-xyz.scm73
-rw-r--r--gnu/packages/qt.scm4
-rw-r--r--gnu/packages/rsync.scm4
-rw-r--r--gnu/packages/serialization.scm1
-rw-r--r--gnu/packages/spice.scm1
-rw-r--r--gnu/packages/version-control.scm8
-rw-r--r--gnu/services/databases.scm2
-rw-r--r--gnu/system.scm1
-rw-r--r--guix/build/asdf-build-system.scm9
-rw-r--r--guix/deprecation.scm8
-rw-r--r--guix/lint.scm1
-rw-r--r--nix/libstore/gc.cc18
-rw-r--r--nix/libutil/util.cc10
-rw-r--r--nix/libutil/util.hh6
54 files changed, 1231 insertions, 564 deletions
diff --git a/doc/build.scm b/doc/build.scm
index e171b539e6..8d5b58962a 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -410,6 +410,11 @@ makeinfo OPTIONS."
           (setvbuf (current-output-port) 'line)
           (setvbuf (current-error-port) 'line)
 
+          ;; 'makeinfo' looks for "htmlxref.cnf" in the current directory, so
+          ;; copy it right here.
+          (copy-file (string-append #$manual-source "/htmlxref.cnf")
+                     "htmlxref.cnf")
+
           (for-each (lambda (language)
                       (let* ((texi (language->texi-file-name language))
                              (opts `("--html"
diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf
index 8daa4a5c19..960f0f08fe 100644
--- a/doc/htmlxref.cnf
+++ b/doc/htmlxref.cnf
@@ -1,9 +1,9 @@
 # htmlxref.cnf - reference file for free Texinfo manuals on the web.
 # Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
 
-htmlxrefversion=2019-05-04.20; # UTC
+htmlxrefversion=2020-01-11.22; # UTC
 
-# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019 Free Software Foundation, Inc.
+# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019, 2020 Free Software Foundation, Inc.
 # 
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
@@ -68,12 +68,12 @@ autogen		node	${GS}/autoconf/manual/html_node/
 automake	mono	${GS}/automake/manual/automake.html
 automake	node	${GS}/automake/manual/html_node/
 
-avl		node	http://www.stanford.edu/~blp/avl/libavl.html/
+avl		node	http://adtinfo.org/libavl.html/
 
 bash		mono	${GS}/bash/manual/bash.html
 bash		node	${GS}/bash/manual/html_node/
 
-BINUTILS = http://sourceware.org/binutils/docs
+BINUTILS = https://sourceware.org/binutils/docs
 binutils	node	${BINUTILS}/binutils/
  as		node	${BINUTILS}/as/
  bfd		node	${BINUTILS}/bfd/
@@ -110,13 +110,15 @@ cpio		node	${GS}/cpio/manual/html_node/
 
 cssc		node	${GS}/cssc/manual/
 
-#cvs cannot be handled here; see http://ximbiot.com/cvs/manual.
+CVS = ${GS}/trans-coord/manual
+cvs            mono    ${CVS}/cvs/cvs.html
+cvs            node    ${CVS}/cvs/html_node/
 
 ddd		mono	${GS}/ddd/manual/html_mono/ddd.html
 
 ddrescue	mono	${GS}/ddrescue/manual/ddrescue_manual.html
 
-DICO = http://puszcza.gnu.org.ua/software/dico/manual
+DICO = https://puszcza.gnu.org.ua/software/dico/manual
 dico		mono	${DICO}/dico.html
 dico		chapter	${DICO}/html_chapter/
 dico		section	${DICO}/html_section/
@@ -167,6 +169,9 @@ emacs		node	${EMACS}/html_node/emacs/
  eshell		mono	${EMACS}/html_mono/eshell.html
  eshell		node	${EMACS}/html_node/eshell/
  #
+ eww		mono	${EMACS}/html_mono/eww.html
+ eww		node	${EMACS}/html_node/eww/
+ #
  flymake	mono	${EMACS}/html_mono/flymake.html
  flymake	node	${EMACS}/html_node/flymake/
  #
@@ -234,8 +239,7 @@ find		node	${GS}/findutils/manual/html_node/find_html
 findutils	mono	${GS}/findutils/manual/html_mono/find.html
 findutils	node	${GS}/findutils/manual/html_node/find_html
 
-FLEX = http://flex.sourceforge.net
-flex		node	${FLEX}/manual/
+flex		node	https://westes.github.io/flex/manual/
 
 gama		mono	${GS}/gama/manual/gama.html
 gama		node	${GS}/gama/manual/html_node/
@@ -249,7 +253,7 @@ gawk		node	${GAWK}/html_node/
 gcal		mono	${GS}/gcal/manual/gcal.html
 gcal		node	${GS}/gcal/manual/html_node/
 
-GCC = http://gcc.gnu.org/onlinedocs
+GCC = https://gcc.gnu.org/onlinedocs
 gcc		node	${GCC}/gcc/
  cpp		node	${GCC}/cpp/
  gcj		node	${GCC}/gcj/
@@ -265,7 +269,7 @@ gcc		node	${GCC}/gcc/
  gnat-style	node	${GCC}/gnat-style/
  libiberty	node	${GCC}/libiberty/
 
-GDB = http://sourceware.org/gdb/current/onlinedocs
+GDB = https://sourceware.org/gdb/current/onlinedocs
 gdb		node	${GDB}/gdb/
  stabs		node	${GDB}/stabs/
 
@@ -282,13 +286,13 @@ geiser		chapter	http://geiser.nongnu.org/
 gettext		mono	${GS}/gettext/manual/gettext.html
 gettext		node	${GS}/gettext/manual/html_node/
 
-gforth		node	http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
+gforth		node	https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
 
 global		mono	${GS}/global/manual/global.html
 
 gmediaserver	node	${GS}/gmediaserver/manual/
 
-gmp		node	http://www.gmplib.org/manual/
+gmp		node	https://www.gmplib.org/manual/
 
 gnu-arch	node	${GS}/gnu-arch/tutorial/
 
@@ -311,7 +315,7 @@ gnun		node	${GNUN}/gnun/html_node/
  web-trans	mono	${GNUN}/web-trans/web-trans.html
  web-trans	node	${GNUN}/web-trans/html_node/
 
-GNUPG = http://www.gnupg.org/documentation/manuals
+GNUPG = https://www.gnupg.org/documentation/manuals
 gnupg		node	${GNUPG}/gnupg/
  dirmngr	node	${GNUPG}/dirmngr/
  gcrypt		node	${GNUPG}/gcrypt/
@@ -399,6 +403,10 @@ guix.es		mono	${GS}/guix/manual/es/guix.html
 guix.es		node	${GS}/guix/manual/es/html_node/
 guix.fr		mono	${GS}/guix/manual/fr/guix.html
 guix.fr		node	${GS}/guix/manual/fr/html_node/
+guix.ru		mono	${GS}/guix/manual/ru/guix.html
+guix.ru		node	${GS}/guix/manual/ru/html_node/
+guix.zh_CN	mono	${GS}/guix/manual/zh-cn/guix.html
+guix.zh_CN	node	${GS}/guix/manual/zh-cn/html_node/
 guix		mono	${GS}/guix/manual/en/guix.html
 guix		node	${GS}/guix/manual/en/html_node/
 
@@ -499,6 +507,9 @@ METAEXCHANGE = http://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
  iwf_mh		node	${METAEXCHANGE}/iwf_mh.html
  scantest	node	${METAEXCHANGE}/scantest.html
 
+mes		mono	${GS}/mes/manual/mes.html
+mes		node	${GS}/mes/manual/html_node/
+
 MIT_SCHEME = ${GS}/mit-scheme/documentation
  mit-scheme-ref	  node	${MIT_SCHEME}/mit-scheme-ref/
  mit-scheme-user  node	${MIT_SCHEME}/mit-scheme-user/
@@ -515,9 +526,9 @@ mpfr		mono	http://www.mpfr.org/mpfr-current/mpfr.html
 
 mtools		mono	${GS}/mtools/manual/mtools.html
 
-myserver	node	http://www.myserverproject.net/documentation/
+myserver	mono	http://www.myserverproject.net/doc.php
 
-nano		mono	http://www.nano-editor.org/dist/latest/nano.html
+nano		mono	https://www.nano-editor.org/dist/latest/nano.html
 
 nettle		chapter	http://www.lysator.liu.se/~nisse/nettle/nettle.html
 
@@ -550,7 +561,7 @@ pspp		node	${GS}/pspp/manual/html_node/
 pyconfigure	mono	${GS}/pyconfigure/manual/pyconfigure.html
 pyconfigure	node	${GS}/pyconfigure/manual/html_node/
 
-R = http://cran.r-project.org/doc/manuals
+R = https://cran.r-project.org/doc/manuals
  R-intro	mono	${R}/R-intro.html
  R-lang		mono	${R}/R-lang.html
  R-exts		mono	${R}/R-exts.html
@@ -656,7 +667,7 @@ xboard		node	${GS}/xboard/manual/html_node/
 # emacs-page
 # Free TeX-related Texinfo manuals on tug.org.
 
-T = http://tug.org/texinfohtml
+T = https://tug.org/texinfohtml
 
 dvipng		mono	${T}/dvipng.html
 dvips		mono	${T}/dvips.html
diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm
index e375282613..061bcd3f78 100644
--- a/gnu/installer/newt/final.scm
+++ b/gnu/installer/newt/final.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,7 +36,7 @@
       (string-drop file (string-length prefix))
       file))
 
-(define (run-config-display-page)
+(define* (run-config-display-page #:key locale)
   (let ((width (%configuration-file-width))
         (height (nearest-exact-integer
                  (/ (screen-rows) 2))))
@@ -50,6 +50,8 @@ This will take a few minutes.")
                          (strip-prefix (%installer-configuration-file)))
      #:title (G_ "Configuration file")
      #:file (%installer-configuration-file)
+     #:edit-button? #t
+     #:editor-locale locale
      #:info-textbox-width width
      #:file-textbox-width width
      #:file-textbox-height height
@@ -95,7 +97,7 @@ last step, or restart the installer.")))
           (with-mounted-partitions
            user-partitions
            (configuration->file configuration)
-           (run-config-display-page)
+           (run-config-display-page #:locale locale)
            (run-install-shell locale #:users users))))
     (if install-ok?
         (run-install-success-page)
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm
index 630efde9cc..bff5fae4e6 100644
--- a/gnu/installer/newt/page.scm
+++ b/gnu/installer/newt/page.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -541,6 +541,17 @@ ITEMS when 'Ok' is pressed."
         (lambda ()
           (destroy-form-and-pop form))))))
 
+(define* (edit-file file #:key locale)
+  "Spawn an editor for FILE."
+  (clear-screen)
+  (newt-suspend)
+  ;; Use Nano because it syntax-highlights Scheme by default.
+  ;; TODO: Add a menu to choose an editor?
+  (run-shell-command (string-append "/run/current-system/profile/bin/nano "
+                                    file)
+                     #:locale locale)
+  (newt-resume))
+
 (define* (run-file-textbox-page #:key
                                 info-text
                                 title
@@ -549,6 +560,8 @@ ITEMS when 'Ok' is pressed."
                                 (file-textbox-width 50)
                                 (file-textbox-height 30)
                                 (exit-button? #t)
+                                (edit-button? #f)
+                                (editor-locale #f)
                                 (ok-button-callback-procedure
                                  (const #t))
                                 (exit-button-callback-procedure
@@ -557,7 +570,6 @@ ITEMS when 'Ok' is pressed."
           (make-reflowed-textbox -1 -1 info-text
                                  info-textbox-width
                                  #:flags FLAG-BORDER))
-         (file-text (read-all file))
          (file-textbox
           (make-textbox -1 -1
                         file-textbox-width
@@ -565,6 +577,8 @@ ITEMS when 'Ok' is pressed."
                         (logior FLAG-SCROLL FLAG-BORDER)))
          (ok-button (make-button -1 -1 (G_ "OK")))
          (exit-button (make-button -1 -1 (G_ "Exit")))
+         (edit-button (and edit-button?
+                           (make-button -1 -1 (G_ "Edit"))))
          (grid (vertically-stacked-grid
                 GRID-ELEMENT-COMPONENT info-textbox
                 GRID-ELEMENT-COMPONENT file-textbox
@@ -572,32 +586,42 @@ ITEMS when 'Ok' is pressed."
                 (apply
                  horizontal-stacked-grid
                  GRID-ELEMENT-COMPONENT ok-button
-                 `(,@(if exit-button?
+                 `(,@(if edit-button?
+                         (list GRID-ELEMENT-COMPONENT edit-button)
+                         '())
+                   ,@(if exit-button?
                          (list GRID-ELEMENT-COMPONENT exit-button)
                          '())))))
          (form (make-form)))
 
-    (set-textbox-text file-textbox
-                      (receive (_w _h text)
-                          (reflow-text file-text
-                                       file-textbox-width
-                                       0 0)
-                        text))
-    (add-form-to-grid grid form #t)
-    (make-wrapped-grid-window grid title)
-
-    (receive (exit-reason argument)
-        (run-form form)
-      (dynamic-wind
-        (const #t)
-        (lambda ()
-          (case exit-reason
-            ((exit-component)
-             (cond
-              ((components=? argument ok-button)
-               (ok-button-callback-procedure))
-              ((and exit-button?
-                    (components=? argument exit-button))
-               (exit-button-callback-procedure))))))
-        (lambda ()
-          (destroy-form-and-pop form))))))
+    (let loop ()
+      (set-textbox-text file-textbox
+                        (receive (_w _h text)
+                            (reflow-text (read-all file)
+                                         file-textbox-width
+                                         0 0)
+                          text))
+
+      (add-form-to-grid grid form #t)
+      (make-wrapped-grid-window grid title)
+
+      (receive (exit-reason argument)
+          (run-form form)
+        (dynamic-wind
+          (const #t)
+          (lambda ()
+            (case exit-reason
+              ((exit-component)
+               (cond
+                ((components=? argument ok-button)
+                 (ok-button-callback-procedure))
+                ((and exit-button?
+                      (components=? argument exit-button))
+                 (exit-button-callback-procedure))
+                ((and edit-button?
+                      (components=? argument edit-button))
+                 (edit-file file))))))
+          (lambda ()
+            (if (components=? argument edit-button)
+                (loop)
+                (destroy-form-and-pop form))))))))
diff --git a/gnu/local.mk b/gnu/local.mk
index 4677c42979..62ea29cdbb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1030,6 +1030,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/jbig2dec-ignore-testtest.patch		\
   %D%/packages/patches/jfsutils-add-sysmacros.patch		\
   %D%/packages/patches/jfsutils-include-systypes.patch		\
+  %D%/packages/patches/jsoncpp-fix-inverted-case.patch		\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
   %D%/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch	\
   %D%/packages/patches/libvirt-create-machine-cgroup.patch	\
@@ -1381,6 +1382,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch	\
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
   %D%/packages/patches/soundconverter-remove-gconf-dependency.patch	\
+  %D%/packages/patches/spice-fix-test-armhf.patch		\
   %D%/packages/patches/steghide-fixes.patch			\
   %D%/packages/patches/supercollider-boost-1.70-build-fix.patch	\
   %D%/packages/patches/superlu-dist-awpm-grid.patch		\
@@ -1455,9 +1457,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/vsearch-unbundle-cityhash.patch		\
   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
-  %D%/packages/patches/wavpack-CVE-2018-6767.patch		\
-  %D%/packages/patches/wavpack-CVE-2018-7253.patch		\
-  %D%/packages/patches/wavpack-CVE-2018-7254.patch		\
   %D%/packages/patches/weasyprint-library-paths.patch		\
   %D%/packages/patches/webkitgtk-icu-65.patch			\
   %D%/packages/patches/websocketpp-fix-for-boost-1.70.patch	\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index cf06732e18..2b0e68fdc4 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -332,7 +332,7 @@ engineers, musicians, soundtrack editors and composers.")
 (define-public audacity
   (package
     (name "audacity")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
      (origin
        (method git-fetch)
@@ -342,7 +342,7 @@ engineers, musicians, soundtrack editors and composers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08w96124vv8k4myd4vifq73ningq6404x889wvg2sk016kc4dfv1"))
+         "0707fsnrl4vjalsi21w4blwgz024qhd0w8rdd5j5vpxf5lyk2rbk"))
        (patches (search-patches "audacity-build-with-system-portaudio.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -351,7 +351,7 @@ engineers, musicians, soundtrack editors and composers.")
            (for-each
             (lambda (dir)
               (delete-file-recursively (string-append "lib-src/" dir)))
-            '("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
+            '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
               "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
               "portaudio-v19" "portmidi" "soundtouch" "twolame"
               ;; FIXME: these libraries have not been packaged yet:
@@ -451,7 +451,8 @@ engineers, musicians, soundtrack editors and composers.")
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("src/NoteTrack.cpp"
                             "src/AudioIO.cpp"
-                            "src/AudioIO.h")
+                            "src/AudioIO.h"
+                            "src/AudioIOBase.cpp")
                (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
                (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
              (substitute* "src/prefs/MidiIOPrefs.cpp"
@@ -2574,6 +2575,7 @@ Suil currently supports every combination of Gtk, Qt, and X11.")
        ("flac" ,flac)
        ("jack" ,jack-1)
        ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
        ("speex" ,speex)
        ("ncurses" ,ncurses)
        ("freepats" ,freepats)))
@@ -2673,18 +2675,17 @@ stretching and pitch scaling of audio.  This package contains the library.")
 (define-public wavpack
   (package
     (name "wavpack")
-    (version "5.1.0")
+    (version "5.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.wavpack.com/"
-                                  name "-" version ".tar.bz2"))
-              (patches (search-patches "wavpack-CVE-2018-6767.patch"
-                                       "wavpack-CVE-2018-7253.patch"
-                                       "wavpack-CVE-2018-7254.patch"))
+                                  "wavpack-" version ".tar.xz"))
               (sha256
                (base32
-                "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
+                "1qvpvfx30kvrkw7y1g6r8xj109wszg1z0qmkfm17wf3flb7v3rbp"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
     (home-page "http://www.wavpack.com/")
     (synopsis "Hybrid lossless audio codec")
     (description
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index f47260121b..18be845eec 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -76,7 +76,7 @@
 (define-public nss-certs
   (package
     (name "nss-certs")
-    (version "3.46.1")
+    (version "3.48")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -87,7 +87,7 @@
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "0l9ns44rlkp1bpblplspfbqmyhb8rhvc89y56kqh725rgpny1xrv"))))
+                "1b7qs1q7jqhw9dvkdznanzhc5dyq4bwx0biywszy3qx4hqm8571z"))))
     (build-system gnu-build-system)
     (outputs '("out"))
     (native-inputs
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index dd0d266c8e..d12b1c8ea5 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -99,6 +99,19 @@ faults or other signals.  The output from unit tests can be used within
 source code editors and IDEs.")
     (license license:lgpl2.1+)))
 
+;; Some packages require this older version.  Removed once no longer needed.
+(define-public check-0.12
+  (package/inherit
+   check
+   (version "0.12.0")
+   (source (origin
+             (method url-fetch)
+             (uri (string-append "https://github.com/libcheck/check/releases"
+                                 "/download/" version "/check-" version ".tar.gz"))
+             (sha256
+              (base32
+               "0d22h8xshmbpl9hba9ch3xj8vb9ybm5akpsbbh7yj07fic4h2hj6"))))))
+
 (define-public cunit
   (package
     (name "cunit")
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 6f6b5a3948..3330f91dfc 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -73,17 +73,11 @@
              (commit (string-append "v" version))))
        (sha256
         (base32 "1hagrqdp649n2g0wq2a9gfnz7mjcjakkw7ziplbj3db412bb7kx5"))
-       (file-name (git-file-name name version))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Fix compilation with glibc >= 2.26, which removed xlocale.h.
-        '(begin
-           (substitute* "c/expeditor.c"
-             (("xlocale\\.h") "locale.h"))
-           #t))))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
+       ("libuuid" ,util-linux)
        ("libx11" ,libx11)
        ("xorg-rgb" ,xorg-rgb)
        ("nanopass" ,nanopass)
@@ -94,8 +88,7 @@
      `(("texlive" ,(texlive-union (list texlive-latex-oberdiek
                                         texlive-generic-epsf)))
        ("ghostscript" ,ghostscript)
-       ("netpbm" ,netpbm)
-       ("util-linux" ,util-linux)))
+       ("netpbm" ,netpbm)))
     (native-search-paths
      (list (search-path-specification
             (variable "CHEZSCHEMELIBDIRS")
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 556e98afc1..e24b6dea7d 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -31,6 +31,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module (guix deprecation)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system emacs)
   #:use-module (gnu packages)
@@ -163,7 +164,18 @@
     (native-search-paths
      (list (search-path-specification
             (variable "CMAKE_PREFIX_PATH")
-            (files '("")))))
+            (files '("")))
+           ;; "cmake-curl-certificates.patch" changes CMake to honor 'SSL_CERT_DIR'
+           ;; and 'SSL_CERT_FILE', hence these search path entries.
+           (search-path-specification
+            (variable "SSL_CERT_DIR")
+            (separator #f)              ;single entry
+            (files '("etc/ssl/certs")))
+           (search-path-specification
+            (variable "SSL_CERT_FILE")
+            (file-type 'regular)
+            (separator #f)              ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))))
     (home-page "https://cmake.org/")
     (synopsis "Cross-platform build system")
     (description
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1fe21fc7d0..201f500666 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -34,7 +34,7 @@
 (define-public rust-adler32-1.0
   (package
     (name "rust-adler32")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
       (origin
         (method url-fetch)
@@ -42,15 +42,18 @@
         (file-name
           (string-append name "-" version ".crate"))
         (sha256
-          (base32
-            "0p7fxlnks9l7p7rwfqi7aqgnk2bps5zc0rjiw00mdw19nnbjjlky"))))
+         (base32
+          "1hnan4fgmnidgn2k84hh2i67c3wp2c5iwd5hs61yi7gwwx1p6bjx"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.4))))
     (home-page "https://github.com/remram44/adler32-rs")
     (synopsis "Implementation of the Adler32 rolling hash algorithm")
     (description
      "This library is an implementation of the Adler32 rolling hash algorithm in
 the Rust programming language.")
-    (properties '((hidden? . #t)))
     (license (list license:bsd-3
                    license:zlib))))
 
@@ -183,12 +186,12 @@ text or blue underlined text, on ANSI terminals.")
          (base32
           "19g2sw2qa2ibnh4x7j1snk46593jgx6y7rnvva496ynq61af5z9l"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/sfackler/rust-antidote")
     (synopsis "Poison-free Mutex and RwLock types")
     (description
-    "These types expose identical APIs to the standard library @code{Mutex} and
+     "These types expose identical APIs to the standard library @code{Mutex} and
 @code{RwLock} except that they do not return @code{PoisonError}s.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -320,11 +323,15 @@ ArrayVec and ArrayString.")
          (base32
           "140sswp1bwqwc4zk80bxkbnfb3g936hgrb77g9g0k1zcld3wc0qq"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.3))))
     (home-page "https://github.com/softprops/atty")
-    (synopsis "A simple interface for querying atty")
+    (synopsis "Simple interface for querying atty")
     (description
      "This package provides a simple interface for querying atty.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-autocfg-0.1
@@ -340,13 +347,13 @@ ArrayVec and ArrayString.")
          (base32
           "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/cuviper/autocfg")
     (synopsis "Automatic cfg for Rust compiler features")
     (description "Rust library for build scripts to automatically configure
 code based on compiler support.  Code snippets are dynamically tested to see
 if the @code{rustc} will accept them, rather than hard-coding specific version
 support.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -392,7 +399,7 @@ trace (backtrace) at runtime in a Rust program.")
 (define-public rust-backtrace-sys-0.1
   (package
     (name "rust-backtrace-sys")
-    (version "0.1.31")
+    (version "0.1.32")
     (source
       (origin
         (method url-fetch)
@@ -400,13 +407,20 @@ trace (backtrace) at runtime in a Rust program.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0as2pk77br4br04daywhivpi1ixxb8y2c7f726kj849dxys31a42"))))
+          "14c406z8bdmms8a5l8cv79jfkz1mk10qk5p97izf4vai53qparax"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
+        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc-1.0))))
     (home-page "https://github.com/rust-lang/backtrace-rs")
     (synopsis "Bindings to the libbacktrace gcc library")
     (description
      "This package provides bindings to the libbacktrace gcc library.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -440,7 +454,7 @@ trace (backtrace) at runtime in a Rust program.")
 (define-public rust-base-x-0.2
   (package
     (name "rust-base-x")
-    (version "0.2.5")
+    (version "0.2.6")
     (source
       (origin
         (method url-fetch)
@@ -448,12 +462,17 @@ trace (backtrace) at runtime in a Rust program.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0hv4y5cdhv6bk0ghk2434clw8v4mmk5cc9lsh6qrpri92zlfmx3n"))))
+          "1hfy0wv7j5ynd73yk1vyr32pqa77rp15lkrc54f8ky9c6hcbc80v"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1)
+        ("rust-json" ,rust-json-0.11)
+        ("rust-rand" ,rust-rand-0.3))))
     (home-page "https://github.com/OrKoN/base-x-rs")
     (synopsis "Encode/decode any base")
     (description "This library provides for encoding and decoding any base.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-bencher-0.1
@@ -469,13 +488,13 @@ trace (backtrace) at runtime in a Rust program.")
          (base32
           "1x8p2xblgqssay8cdykp5pkfc0np0jk5bs5cx4f5av097aav9zbx"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/bluss/bencher/")
     (synopsis "Port of the libtest benchmark runner to Rust stable")
     (description "This package provides a port of the libtest (unstable Rust)
 benchmark runner to Rust stable releases.  Supports running benchmarks and
 filtering based on the name.  Benchmark execution works exactly the same way
 and no more (caveat: black_box is still missing!).")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -638,7 +657,7 @@ libraries.")
 (define-public rust-bitflags-1
   (package
     (name "rust-bitflags")
-    (version "1.1.0")
+    (version "1.2.1")
     (source
       (origin
         (method url-fetch)
@@ -646,13 +665,13 @@ libraries.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1zc1qb1hwsnl2d8rhzicsv9kqd5b2hwbrscrcfw5as4sfr35659x"))))
+          "14qnd5nq8p2almk79m4m8ydqhd413yaxsyjp5xd19g3mikzf47fg"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/bitflags/bitflags")
     (synopsis "Macro to generate structures which behave like bitflags")
     (description "This package provides a macro to generate structures which
 behave like a set of bitflags.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -1156,12 +1175,16 @@ archive to be linked into Rustcode.")
          (base32
           "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
+        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0))))
     (home-page "https://github.com/alexcrichton/cfg-if")
     (synopsis "Define an item depending on parameters")
     (description "This package provides a macro to ergonomically define an item
 depending on a large number of #[cfg] parameters.  Structured like an
 @code{if-else} chain, the first matching branch is the item that gets emitted.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -1331,11 +1354,14 @@ pitfalls in Rust.")
          (base32
           "0kxcg83jlihy0phnd2g8c2c303px3l2p3pkjz357ll6llnd5pz6x"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1))))
     (home-page "https://nuxi.nl/cloudabi/")
     (synopsis "Low level interface to CloudABI")
     (description
      "Low level interface to CloudABI.  Contains all syscalls and related types.")
-    (properties '((hidden? . #t)))
     (license license:bsd-2)))
 
 (define-public rust-cmake-0.1
@@ -1366,7 +1392,7 @@ CMAKE environmental variable is set.")
 (define-public rust-compiler-builtins-0.1
   (package
     (name "rust-compiler-builtins")
-    (version "0.1.19")
+    (version "0.1.23")
     (source
       (origin
         (method url-fetch)
@@ -1374,15 +1400,20 @@ CMAKE environmental variable is set.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1fpabpmg8paj4r5a37vmidh1jx1b7a6ilxm4s3xsxczx27ybjcjf"))))
+          "0m8rfikg08av2plyp32drjfsv7i10nf2kwzajjjkvl13yhj9s5fn"))))
     (build-system cargo-build-system)
-    (home-page "https://github.com/rust-lang-nursery/compiler-builtins")
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc-1.0))))
+    (home-page "https://github.com/rust-lang/compiler-builtins")
     (synopsis "Compiler intrinsics used by the Rust compiler")
     (description
      "This package provides compiler intrinsics used by the Rust compiler.  This
 package is primarily useful when building the @code{core} crate yourself and you
 need compiler-rt intrinsics.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -1486,7 +1517,7 @@ that logs panics to @code{console.error}.")
 (define-public rust-constant-time-eq-0.1
   (package
     (name "rust-constant-time-eq")
-    (version "0.1.4")
+    (version "0.1.5")
     (source
      (origin
        (method url-fetch)
@@ -1494,15 +1525,15 @@ that logs panics to @code{console.error}.")
        (file-name (string-append name "-" version ".crate"))
        (sha256
         (base32
-         "083icpr9xb72rrdxw3p4068dcspn6ai22jy7rhl2a8grfz448nlr"))))
+         "1g3vp04qzmk6cpzrd19yci6a95m7ap6wy7wkwgiy2pjklklrfl14"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/cesarb/constant_time_eq")
     (synopsis
      "Compares two equal-sized byte strings in constant time")
     (description
      "This package compares two equal-sized byte strings in constant time.
 It is inspired by the Linux kernel's @code{crypto_memneq}.")
-    (properties '((hidden? . #t)))
     (license license:cc0)))
 
 (define-public rust-core-arch-0.1
@@ -1544,11 +1575,11 @@ intrinsics.")
          (base32
           "0fzsw1j9g1x598yhwklg59l15hwzc0pyvs01w9fg2kin4598mjp7"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/servo/core-foundation-rs")
     (synopsis "Bindings to Core Foundation for OS X")
     (description
      "Bindings to Core Foundation for OS X.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -1986,18 +2017,18 @@ intrinsics.")
          (base32
           "15xd6afhsjl08285piwczrafmckpp8i29padj8v12xhahshprx7l"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/ia0/data-encoding")
     (synopsis "Efficient and customizable data-encoding functions")
     (description
      "This library provides encodings for many different common cases, including
 hexadecimal, base32, and base64.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-defmac-0.2
   (package
     (name "rust-defmac")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
       (origin
         (method url-fetch)
@@ -2005,12 +2036,12 @@ hexadecimal, base32, and base64.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "01ff3jdmcc5waffkwllndnx5hsn414r7x1rq4ib73n7awsyzxkxv"))))
+          "14cqfvc0f1pkd6gdhjxa2wv3iibqprc0n203ims8lvg96752ynfm"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/bluss/defmac")
     (synopsis "Macro to define lambda-like macros inline")
     (description "A macro to define lambda-like macros inline.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -2197,6 +2228,11 @@ hexadecimal, base32, and base64.")
          (base32
           "02vigc566z5i6n9wr2x8sch39qp4arn89xhhrh18fhpm3jfc0ygn"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.3))))
     (home-page "https://github.com/soc/dirs-rs")
     (synopsis "Abstractions for standard locations for various platforms")
     (description
@@ -2205,7 +2241,6 @@ platform-specific standard locations of directories for config, cache and other
 data on Linux, Windows, macOS and Redox by leveraging the mechanisms defined by
 the XDG base/user directory specifications on Linux, the Known Folder API on
 Windows, and the Standard Directory guidelines on macOS.")
-    (properties '((hidden? . #t)))
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-discard-1.0
@@ -2221,12 +2256,12 @@ Windows, and the Standard Directory guidelines on macOS.")
          (base32
           "1h67ni5bxvg95s91wgicily4ix7lcw7cq0a5gy9njrybaibhyb91"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/Pauan/rust-discard")
     (synopsis "Allow for intentionally leaking memory")
     (description "There are situations where you need to intentionally leak some
 memory but not other memory.  This package provides a discard trait which allows
 for intentionally leaking memory")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-doc-comment-0.3
@@ -2242,11 +2277,11 @@ for intentionally leaking memory")
          (base32
           "15rsqxgarfpb1yim9sbp9yfgj7p2dq6v51c6bq1a62paii9ylgcj"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/GuillaumeGomez/doc-comment")
     (synopsis "Macro to generate doc comments")
     (description "This package provides a way to generate doc comments
 from macros.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-docopt-1.1
@@ -2288,11 +2323,11 @@ from macros.")
          (base32
           "0phbm7i0dpn44gzi07683zxaicjap5064w62pidci4fhhciv8mza"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/dtolnay/dtoa")
     (synopsis "Fast functions for printing floating-point primitives")
     (description "This crate provides fast functions for printing
 floating-point primitives to an @code{io::Write}.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 2785f386fe..a0f675c1dc 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2018 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2018, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
@@ -1046,3 +1046,30 @@ minisign uses a slightly different format to store secret keys.  Minisign
 signatures include trusted comments in addition to untrusted comments.
 Trusted comments are signed, thus verified, before being displayed.")
     (license license:isc)))
+
+(define-public libolm
+  (package
+    (name "libolm")
+    (version "3.1.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.matrix.org/git/olm")
+                    (commit version)))
+              (sha256
+               (base32
+                "06s7rw4a9vn35wzz7chxn54mp0sjgbpv2bzz9lq0g4hnzw33cjbi"))
+              (file-name (git-file-name name version))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "ctest" "build/tests"))))))
+    (build-system cmake-build-system)
+    (synopsis "Implementation of the olm and megolm cryptographic ratchets")
+    (description "The libolm library implements the Double Ratchet
+cryptographic ratchet.  It is written in C and C++11, and exposed as a C
+API.")
+    (home-page "https://matrix.org/docs/projects/other/olm/")
+    (license license:asl2.0)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index ca15c77026..5d770f46e5 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -992,27 +992,27 @@ pictures, sounds, or video.")
   (package
     (inherit postgresql)
     (name "postgresql")
-    (version "11.5")
+    (version "11.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "106ikalvrilihlvhq7xj7snq98hgbgq6qsgjrd252wgw1c327pvz"))))))
+                "0w1iq488kpzfgfnlw4k32lz5by695mpnkq461jrgsr99z5zlz4j9"))))))
 
 (define-public postgresql-9.6
   (package
     (inherit postgresql)
     (name "postgresql")
-    (version "9.6.15")
+    (version "9.6.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "02hp69h2p02asfblkaahblzdz2zmawd2r11h6237y5j7yadgxn9w"))))))
+                "1rr2dgv4ams8r2lp13w85c77rkmzpb88fjlc28mvlw6zq2fblv2w"))))))
 
 (define-public python-pymysql
   (package
@@ -1858,14 +1858,14 @@ similar to BerkeleyDB, LevelDB, etc.")
 (define-public redis
   (package
     (name "redis")
-    (version "4.0.10")
+    (version "5.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://download.redis.io/releases/redis-"
                                   version".tar.gz"))
               (sha256
                (base32
-                "194cydhv3hf4v95ifvjvsqrs4jn3ffrkg5lvxj5d3y04lwsp9dhx"))))
+                "0ax8sf3vw0yadr41kzc04917scrg5wir1d94zmbz00b8pzm79nv1"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; tests related to master/slave and replication fail
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index d2e1afdbce..8a17e8ddbb 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -582,12 +582,12 @@ automatically finding out which program to use for what file type.")
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("util-linux" ,util-linux)
        ("swig" ,swig)
        ("python" ,python-3)))           ; used to generate the Python bindings
     (inputs
      `(("cryptsetup" ,cryptsetup)
        ("nss" ,nss)
+       ("libblkid" ,util-linux)
        ("lvm2" ,lvm2)                   ; for "-ldevmapper"
        ("glib" ,glib)
        ("gpgme" ,gpgme)))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 292a494a1d..b434139df8 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20419,8 +20419,8 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
   ;; This package has versions newer than indicated on MELPA.
   ;; Get the current version from `telega-version` in telega.el.
   ;; or by running M-x telega-version.
-  (let ((commit "9bfb637b2e71f5f293debd35abd627a064faf8ef")
-	(revision "2")
+  (let ((commit "4497a3c19d9806eb9edfe13d326d6d9cbb895f64")
+	(revision "3")
 	(version "0.5.4"))
     (package
       (name "emacs-telega")
@@ -20433,7 +20433,7 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                (commit commit)))
          (sha256
           (base32
-           "06v8i3862n5kf2lnxii8vp9g8cq5ql51kr8yxh7l1wccsidri67a"))
+           "1g0gbbgs8rbcip6kqjxdmnsjlq0ixgknb0qcda7siaha9gd7fjh2"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -21005,3 +21005,30 @@ pattern.  Searching starts with minimal 3 characters entered.
 pattern guessed from thing under current cursor position.
 @end itemize\n")
       (license license:gpl3+))))
+
+(define-public emacs-metal-mercury-mode
+  (let ((commit "99e2d8fb7177cae3bfa2dec2910fc28216d5f5a8")
+	(revision "1")
+	(version "0.0.0"))
+    (package
+      (name "emacs-metal-mercury-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ahungry/metal-mercury-mode.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "0iil5k3rgifz2vqwsy12rbv5rzyvidq4sgwazsb2hzys8xynmfn5"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)))
+      (synopsis "Major mode for editing Mercury files")
+      (description
+       "Major mode for editing Mercury files.  This is a rewrite of the original
+mercury-mode provided by Emacs as a wrapper around prolog-mode.")
+      (home-page "https://github.com/ahungry/metal-mercury-mode")
+      (license license:gpl3+))))
diff --git a/gnu/packages/entr.scm b/gnu/packages/entr.scm
index d0111452df..cacb5ab7f5 100644
--- a/gnu/packages/entr.scm
+++ b/gnu/packages/entr.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages entr)
+  #:use-module (gnu packages ncurses)
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -52,11 +54,13 @@
                (invoke "./configure"))))
          (add-before 'build 'remove-fhs-file-names
            (lambda _
-             ;; Use the tools available in $PATH.
              (substitute* "entr.c"
-               (("/bin/cat") "cat")
-               (("/usr/bin/clear") "clear"))
+               (("/bin/sh") (which "sh"))
+               (("/bin/cat") (which "cat"))
+               (("/usr/bin/clear") (which "clear")))
              #t)))))
+    ;; ncurses provides the `clear' binary
+    (inputs `(("ncurses" ,ncurses)))
     (home-page "http://entrproject.org/")
     (synopsis "Run arbitrary commands when files change")
     (description
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 7066685dee..ed221439b4 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +48,7 @@
   #:use-module (gnu packages acl)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -55,6 +57,7 @@
   #:use-module (gnu packages disk)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -107,12 +110,19 @@
        ("libxslt" ,libxslt)
        ("w3m" ,w3m)
        ("xmlto" ,xmlto)))
-    (propagated-inputs
-     `(("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
+    (inputs
+     `(("awk" ,gawk)
+       ("coreutils" ,coreutils)
+       ("grep" ,grep)
+       ("inetutils" ,inetutils) ; xdg-screensaver uses `hostname'
+       ("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
+       ("sed" ,sed)
        ("xprop" ,xprop) ; for Xfce detecting
        ("xset" ,xset))) ; for xdg-screensaver
     (arguments
      `(#:tests? #f   ; no check target
+       #:modules ((srfi srfi-26)
+                  ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-hardcoded-paths
@@ -144,6 +154,21 @@
                                  "/manpages/docbook.xsl man")))
                (setenv "STYLESHEET"
                        (string-append xsldoc "/html/docbook.xsl"))
+               #t)))
+         (add-after 'install 'wrap-executables
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion (string-append out "/bin")
+                 (let ((path-ext
+                        (map (cute string-append <> "/bin")
+                             (cons out
+                                   (map (cute assoc-ref inputs <>)
+                                        '("awk" "coreutils" "grep" "inetutils"
+                                          "perl-file-mimeinfo" "sed" "xprop"
+                                          "xset"))))))
+                   (for-each (cute wrap-program <>
+                                   `("PATH" ":" prefix ,path-ext))
+                             (find-files "."))))
                #t))))))
     (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
     (synopsis "Freedesktop.org scripts for desktop integration")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 9129a9eede..0d917d13aa 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -43,7 +43,7 @@
 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
+;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
 ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
@@ -739,6 +739,34 @@ automata.  The following features are available:
 @end enumerate")
     (license license:gpl2+)))
 
+(define-public julius
+  (package
+    (name "julius")
+    (version "1.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bvschaik/julius.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0kgyzfjii4dhpy2h05977alwdmxyxb4jxznnrhlgb21m0ybncmvp"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("sdl2" ,sdl2)
+       ("sdl2-mixer" ,sdl2-mixer)))
+    (home-page "https://github.com/bvschaik/julius")
+    (synopsis "Re-implementation of Caesar III game engine")
+    (description
+     "Engine for Caesar III, a city-building real-time strategy game.
+Julius includes some UI enhancements while preserving the logic (including
+bugs) of the original game, so that saved games are compatible.  This package
+does not include game data.")
+    (license (list license:agpl3
+                   license:expat        ; ext/dirent
+                   license:zlib))))     ; ext/tinyfiledialogs
+
 (define-public meandmyshadow
   (package
     (name "meandmyshadow")
@@ -3800,16 +3828,16 @@ a style similar to the original Super Mario games.")
 (define-public tintin++
   (package
     (name "tintin++")
-    (version "2.01.7")
+    (version "2.02.00")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
-                           (version-major+minor version)
+                           (string-drop-right version 1)
                            "/tintin-" version ".tar.gz"))
        (sha256
         (base32
-         "033n84pyxml3n3gd4dq0497n9w331bnrr1gppwipz9ashmq8jz7v"))))
+         "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
     (inputs
      `(("gnutls" ,gnutls)
        ("pcre" ,pcre)
@@ -3825,14 +3853,14 @@ a style similar to the original Super Mario games.")
              (chdir "src")
              #t)))))
     (build-system gnu-build-system)
-    (home-page "http://tintin.sourceforge.net/")
+    (home-page "https://tintin.mudhalla.net/")
     (synopsis "MUD client")
     (description
      "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
 Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
 options used by MUDs, as well as those required to login via telnet on
 Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
-    (license license:gpl2+)))
+    (license license:gpl3+)))
 
 (define-public laby
   (package
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 32cdc2b53a..e837cdfb32 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018, 2019 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -36,6 +36,7 @@
   #:use-module (guix build-system go)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system r)
   #:use-module (guix download)
@@ -1336,3 +1337,125 @@ MaxMind DB files.")
     (description "Provides an API for the GeoIP2 web services and databases.
 The API also works with MaxMind’s free GeoLite2 databases.")
     (license license:asl2.0)))
+
+(define-public routino
+  (package
+   (name "routino")
+   (version "3.3.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append "http://www.routino.org/download/routino-"
+                         version ".tgz"))
+     (sha256
+      (base32
+       "1ccx3s99j8syxc1gqkzsaqkmyf44l7h3adildnc5iq2md7bp8wab"))))
+   (build-system gnu-build-system)
+   (native-inputs
+    `(("perl" ,perl)))
+   (inputs
+    `(("bzip2" ,bzip2)
+      ("xz" ,xz)
+      ("zlib" ,zlib)))
+   (arguments
+    `(#:test-target "test"
+      #:phases
+      (modify-phases %standard-phases
+        (replace 'configure
+          (lambda* (#:key outputs #:allow-other-keys)
+            (substitute* "Makefile.conf"
+              (("prefix=/usr/local")
+               (string-append "prefix=" (assoc-ref outputs "out")))
+              (("LDFLAGS_LDSO=-Wl,-R\\.")
+               "LDFLAGS_LDSO=-Wl,-R$(libdir)")
+              (("#CFLAGS\\+=-DUSE_XZ")
+               "CFLAGS+=-DUSE_XZ")
+              (("#LDFLAGS\\+=-llzma")
+               "LDFLAGS+=-llzma"))
+            #t)))))
+   (synopsis "Routing application for OpenStreetMap data")
+   (description
+    "Routino is an application for finding a route between two points
+using the dataset of topographical information collected by
+@url{https://www.OpenStreetMap.org}.")
+   (home-page "https://www.routino.org/")
+   (license license:agpl3+)))
+
+(define-public qmapshack
+  (package
+    (name "qmapshack")
+    (version "1.14.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Maproom/qmapshack.git")
+             (commit (string-append "V_" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "07c2hrq9sn456w7l3gdr599rmjfv2k6mh159zza7p1py8r7ywksa"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("gdal" ,gdal)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("proj" ,proj)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtlocation" ,qtlocation)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebengine" ,qtwebengine)
+       ("quazip" ,quazip)
+       ("routino" ,routino)
+       ("sqlite" ,sqlite)                      ; See wrap phase
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-cmake-modules
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("find_package\\(Qt5PrintSupport        REQUIRED\\)" all)
+                (string-append all "\nfind_package(Qt5Positioning REQUIRED)")))
+             (substitute* "cmake/Modules/FindROUTINO.cmake"
+               (("/usr/local")
+                (assoc-ref inputs "routino")))
+             ;; The following fixes are included as patches in the sources
+             ;; of QMapShack, but they are not applied by default, for
+             ;; some reason...
+             (invoke "patch" "-p1" "-i" "FindPROJ4.patch")
+             (invoke "patch" "-p1" "-i" "FindQuaZip5.patch")
+             #t))
+         (add-after 'install 'wrap
+           ;; The program fails to run with the error:
+           ;;   undefined symbol: sqlite3_column_table_name16
+           ;; Forcing the program to use sqlite-with-column-metadata instead
+           ;; of sqlite using LD_LIBRARY_PATH solves the problem.
+           ;;
+           ;; The program also fails to find the QtWebEngineProcess program,
+           ;; so we set QTWEBENGINEPROCESS_PATH to help it.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+                   (qtwebengineprocess (string-append
+                                        (assoc-ref inputs "qtwebengine")
+                                        "/lib/qt5/libexec/QtWebEngineProcess"))
+                   (sqlite-lib (string-append (assoc-ref inputs "sqlite")
+                                              "/lib")))
+               (for-each (lambda (program)
+                           (wrap-program program
+                             `("LD_LIBRARY_PATH" ":" prefix (,sqlite-lib))
+                             `("QTWEBENGINEPROCESS_PATH" =
+                               (,qtwebengineprocess))))
+                         (find-files bin ".*")))
+             #t)))))
+    (synopsis "GPS mapping application")
+    (description
+     "QMapShack can be used to plan your next outdoor trip or to visualize and
+archive all the GPS recordings of your past trips.  It is the successor of the
+QLandkarte GT application.")
+    (home-page "https://github.com/Maproom/qmapshack/wiki")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 57c18997e4..ac566b8647 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
@@ -298,7 +298,7 @@ features to enable users to create their discs easily and quickly.")
 it easy to manage, install and generate color profiles
 in the GNOME desktop.")
    (home-page "https://gitlab.gnome.org/GNOME/gnome-color-manager")
-   (license license:gpl2)))
+   (license license:gpl2+)))
 
 (define-public gnome-online-miners
   (package
@@ -333,7 +333,132 @@ in the GNOME desktop.")
 go through your online content and index them locally in Tracker.
 It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
     (home-page "https://wiki.gnome.org/Projects/GnomeOnlineMiners")
-    (license license:gpl2)))
+    (license license:gpl2+)))
+
+(define-public gssdp
+  (package
+   (name "gssdp")
+   (version "1.2.2")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "195hi10vrsvh6i927mm6rm1ld5sxah3h5sr3bsjm90vb8lxrxfya"))))
+   (build-system meson-build-system)
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk-doc" ,gtk-doc)
+      ("pkg-config" ,pkg-config)
+      ("vala" ,vala)))
+   (inputs
+    `(("gtk+" ,gtk+)
+      ("libsoup" ,libsoup)))
+   (synopsis "GObject-based API over @acronym{SSDP, Simple Service Discovery
+Protocol} for GNOME")
+   (description "This package provides a library to handle resource discovery
+and announcement over @acronym{SSDP, Simple Service Discovery Protocol} and
+a debugging tool, @command{gssdp-device-sniffer}.")
+   (home-page "https://gitlab.gnome.org/GNOME/gssdp")
+   (license license:lgpl2.0+)))
+
+(define-public gupnp
+  (package
+   (name "gupnp")
+   (version "1.2.2")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "12cr3isww4zl0d4himpd2fhl2wmy3jh8sbxp4snp51sw7savv04s"))))
+   (build-system meson-build-system)
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk-doc" ,gtk-doc)
+      ("pkg-config" ,pkg-config)
+      ("vala" ,vala)))
+   (inputs
+    `(("gssdp" ,gssdp)
+      ("gtk+" ,gtk+)
+      ("libsoup" ,libsoup)))
+   (synopsis "PnP API for GNOME")
+   (description "This package provides GUPnP, an object-oriented framework
+for creating UPnP devices and control points, written in C using
+@code{GObject} and @code{libsoup}.")
+   (home-page "https://gitlab.gnome.org/GNOME/gupnp")
+   (license license:lgpl2.0+)))
+
+(define-public gupnp-dlna
+  (package
+   (name "gupnp-dlna")
+   (version "0.10.5")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "0spzd2saax7w776p5laixdam6d7smyynr9qszhbmq7f14y13cghj"))))
+   (build-system gnu-build-system)
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk-doc" ,gtk-doc)
+      ("libxml" ,libxml2)
+      ("pkg-config" ,pkg-config)
+      ("vala" ,vala)))
+   (inputs
+    `(("gstreamer" ,gstreamer)
+      ("gupnp" ,gupnp)))
+   (propagated-inputs
+    `(("gst-plugins-base" ,gst-plugins-base)
+      ("gst-plugins-good" ,gst-plugins-good)))
+   (synopsis "GUPnP DLNA for GNOME")
+   (description "This package provides a small utility library to
+support DLNA-related tasks such as media profile guessing, transcoding to a
+given profile, etc.  DLNA is a subset of UPnP A/V.")
+   (home-page "https://gitlab.gnome.org/GNOME/gupnp-dlna")
+   (license license:lgpl2.0+)))
+
+(define-public gupnp-av
+  (package
+   (name "gupnp-av")
+   (version "0.12.11")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "1p3grslwqm9bc8rmpn4l48d7v9s84nina4r9xbd932dbj8acz7b8"))))
+   (build-system gnu-build-system)
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk-doc" ,gtk-doc)
+      ("libxml" ,libxml2)
+      ("pkg-config" ,pkg-config)))
+   (inputs
+    `(("gtk+" ,gtk+)
+      ("gupnp" ,gupnp)))
+   (synopsis "GUPnP A/V for GNOME")
+   (description "This package provides a small library for handling
+and implementation of UPnP A/V profiles.")
+   (home-page "https://gitlab.gnome.org/GNOME/gupnp-av")
+   (license license:lgpl2.0+)))
 
 (define-public libmediaart
   (package
@@ -364,6 +489,99 @@ extraction, and lookup for applications on the desktop.")
     (home-page "https://gitlab.gnome.org/GNOME/libmediaart")
     (license license:lgpl2.1+)))
 
+(define-public gnome-initial-setup
+  (package
+   (name "gnome-initial-setup")
+   (version "3.32.1")
+   (source (origin
+            (method url-fetch)
+           (uri (string-append "mirror://gnome/sources/gnome-initial-setup/"
+                                (version-major+minor version)
+                                "/gnome-initial-setup-" version ".tar.xz"))
+            (sha256
+             (base32
+              "1gwhp7dalyc8zsb2pa66cmpdrj2d6drbq5p331sq6zp8ds10k9ry"))))
+   (build-system meson-build-system)
+   (arguments
+    '(#:configure-flags '(;; Enable camera support for user selfie.
+                          "-Dcheese=auto"
+                          "-Dsystemd=false")))
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk+:bin" ,gtk+ "bin")
+      ("pkg-config" ,pkg-config)))
+   (inputs
+    `(("accountsservice" ,accountsservice)
+      ;("adwaita-icon-theme" ,adwaita-icon-theme)
+      ("gdm" ,gdm)
+      ("geoclue" ,geoclue)
+      ("gnome-desktop" ,gnome-desktop)
+      ("gnome-getting-started-docs" ,gnome-getting-started-docs)
+      ("gnome-online-accounts" ,gnome-online-accounts)
+      ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
+      ("gstreamer" ,gstreamer)
+      ("ibus" ,ibus)
+      ("json-glib" ,json-glib)
+      ("krb5" ,mit-krb5)
+      ("libgweather" ,libgweather)
+      ("libsecret" ,libsecret)
+      ("network-manager" ,network-manager)
+      ("network-manager-applet" ,network-manager-applet)
+      ("packagekit" ,packagekit)
+      ("polkit" ,polkit)
+      ("pwquality" ,libpwquality)
+      ("rest" ,rest)
+      ("upower" ,upower)
+      ("webkitgtk" ,webkitgtk)))
+   (synopsis "Initial setup wizard for GNOME desktop")
+   (description "This package provides a set-up wizard when a
+user logs into GNOME for the first time.  It typically provides a
+tour of all gnome components and allows the user to set them up.")
+   (home-page "https://gitlab.gnome.org/GNOME/gnome-initial-setup")
+   (license license:gpl2)))
+
+(define-public gnome-user-share
+  (package
+   (name "gnome-user-share")
+   (version "3.33.1")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "0lf790pyamdyj7180ils8vizjl8brxcg7jsm1iavfp9ay4wa8mz7"))))
+   (build-system meson-build-system)
+   (arguments
+    `(#:glib-or-gtk? #t
+      #:configure-flags
+       `("-Dsystemd=false"
+         ;; Enable nautilus extension for file sharing.
+         "-Dnautilus_extension=true")))
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk+:bin" ,gtk+ "bin")
+      ("pkg-config" ,pkg-config)
+      ("yelp-tools" ,yelp-tools)))
+   (inputs
+    `(("glib" ,glib)
+      ("gnome-bluetooth" ,gnome-bluetooth)
+      ("gtk+" ,gtk+)
+      ("libcanberra" ,libcanberra)
+      ("libnotify" ,libnotify)
+      ("nautilus" ,nautilus)))      ; For nautilus extension.
+   (synopsis "File sharing for GNOME desktop")
+   (description "GNOME User Share is a small package that binds together
+various free software projects to bring easy to use user-level file
+sharing to the masses.")
+   (home-page "https://gitlab.gnome.org/GNOME/gnome-user-share")
+   (license license:gpl2+)))
+
 (define-public gnome-menus
   (package
     (name "gnome-menus")
@@ -385,7 +603,7 @@ extraction, and lookup for applications on the desktop.")
     (description "GNOME Menus contains the libgnome-menu library, the layout
 configuration files for the GNOME menu, as well as a simple menu editor.")
     (home-page "https://gitlab.gnome.org/GNOME/gnome-menus")
-    (license license:gpl2)))
+    (license license:lgpl2.0+)))
 
 (define-public deja-dup
   (package
@@ -1144,7 +1362,7 @@ forgotten when the session ends.")
                "05q6v9lssd21623mnj2p49clj9v9csw9kay7n4nklki025grbh1w"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     `(#:configure-flags '("--disable-nautilus")
+     `(#:configure-flags '("--disable-nautilus" "--enable-introspection")
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'skip-gtk-update-icon-cache
@@ -1188,6 +1406,7 @@ forgotten when the session ends.")
      `(("itstool" ,itstool)
        ("intltool" ,intltool)
        ("glib" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
        ("pkg-config" ,pkg-config)
        ("xmllint" ,libxml2)))
     (home-page
@@ -1813,77 +2032,76 @@ from forcing GEXP-PROMISE."
                   (lambda (crate)
                     (delete-file-recursively (string-append "vendor/" (car crate)))
                     (invoke "tar" "xvf" (cdr crate) "-C" "vendor"))
-                  '(
-;; aho-corasick 0.7
+                  '(;("aho-corasick" . #+(package-source rust-aho-corasick-0.7))
 ;; alga 0.9
-;; approx 0.3
-;; arrayvec 0.4
+                    ("approx" . #+(package-source rust-approx-0.3))
+                    ("arrayvec" . #+(package-source rust-arrayvec-0.4))
                     ("atty" . #+(package-source rust-atty-0.2))
                     ("autocfg" . #+(package-source rust-autocfg-0.1))
                     ("bitflags" . #+(package-source rust-bitflags-1))
 ;; block 0.1
-;; bstr 0.2
-;; byteorder 1.3
+                    ("bstr" . #+(package-source rust-bstr-0.2))
+                    ("byteorder" . #+(package-source rust-byteorder-1.3))
 ;; cairo-rs 0.7
 ;; cairo-sys-rs 0.9
-;; cast 0.2
+                    ("cast" . #+(package-source rust-cast-0.2))
                     ("cfg-if" . #+(package-source rust-cfg-if-0.1))
                     ("clap" . #+(package-source rust-clap-2))
-                    ;("cloudabi" . #+(package-source rust-cloudabi-0.0))
-;; criterion 0.2
-;; criterion-plot 0.3
-;; crossbeam-deque 0.7
-;; crossbeam-epoch 0.7
-;; crossbeam-queue 0.1
-;; crossbeam-utils 0.6
+                    ("cloudabi" . #+(package-source rust-cloudabi-0.0))
+                    ("criterion" . #+(package-source rust-criterion-0.2))
+                    ("criterion-plot" . #+(package-source rust-criterion-plot-0.3))
+                    ("crossbeam-deque" . #+(package-source rust-crossbeam-deque-0.7))
+                    ;("crossbeam-epoch" . #+(package-source rust-crossbeam-epoch-0.7))
+                    ("crossbeam-queue" . #+(package-source rust-crossbeam-queue-0.1))
+                    ("crossbeam-utils" . #+(package-source rust-crossbeam-utils-0.6))
 ;; cssparser 0.25
 ;; cssparser-macros 0.3
-;; csv 1.1
-;; csv-core 0.1
+                    ("csv" . #+(package-source rust-csv-1.1))
+                    ("csv-core" . #+(package-source rust-csv-core-0.1))
 ;; data-url 0.1
 ;; downcast-rs 1.0
                     ("dtoa" . #+(package-source rust-dtoa-0.4))
 ;; dtoa-short 0.3
-;; either 1.5
-;; encoding 0.2
-;; encoding-index-japanese 1.20141219.5
-;; encoding-index-korean 1.20141219.5
-;; encoding-index-simpchinese 1.20141219.5
-;; encoding-index-singlebyte 1.20141219.5
-;; encoding-index-tradchinese 1.20141219.5
-;; encoding_index_tests 0.1
+                    ("either" . #+(package-source rust-either-1.5))
+                    ("encoding" . #+(package-source rust-encoding-0.2))
+                    ("encoding-index-japanese" . #+(package-source rust-encoding-index-japanese-1.20141219))
+                    ("encoding-index-korean" . #+(package-source rust-encoding-index-korean-1.20141219))
+                    ("encoding-index-simpchinese" . #+(package-source rust-encoding-index-simpchinese-1.20141219))
+                    ("encoding-index-singlebyte" . #+(package-source rust-encoding-index-singlebyte-1.20141219))
+                    ("encoding-index-tradchinese" . #+(package-source rust-encoding-index-tradchinese-1.20141219))
+                    ("encoding_index_tests" . #+(package-source rust-encoding-index-tests-0.1))
 ;; float-cmp 0.5
 ;; fragile 0.3
-                    ;("fuchsia-cprng" . #+(package-source rust-fuchsia-cprng-0.1))
-;; futf 0.1
+                    ("fuchsia-cprng" . #+(package-source rust-fuchsia-cprng-0.1))
+                    ("futf" . #+(package-source rust-futf-0.1))
 ;; gdk-pixbuf 0.7
 ;; gdk-pixbuf-sys 0.9
-;; generic-array 0.12
+                    ("generic-array" . #+(package-source rust-generic-array-0.12))
 ;; gio 0.7
 ;; gio-sys 0.9
 ;; glib 0.8
 ;; glib-sys 0.9
 ;; gobject-sys 0.9
 ;; idna 0.2
-;; itertools 0.8
+                    ("itertools" . #+(package-source rust-itertools-0.8))
                     ("itoa" . #+(package-source rust-itoa-0.4))
-                    ;("language-tags" . #+(package-source rust-language-tags-0.2))
+                    ("language-tags" . #+(package-source rust-language-tags-0.2))
                     ("lazy_static" . #+(package-source rust-lazy-static-1.3))
                     ("libc" . #+(package-source rust-libc-0.2))
 ;; libm 0.1
 ;; locale_config 0.3
                     ("log" . #+(package-source rust-log-0.4))
-;; mac 0.1
+                    ("mac" . #+(package-source rust-mac-0.1))
 ;; malloc_buf 0.0
 ;; markup5ever 0.9
-                    ;("matches" . #+(package-source rust-matches-0.1))
+                    ("matches" . #+(package-source rust-matches-0.1))
 ;; matrixmultiply 0.2
-;; memchr 2.2
+                    ;("memchr" . #+(package-source rust-memchr-2.2))
 ;; memoffset 0.5
 ;; nalgebra 0.18
-;; new_debug_unreachable 1.0
+                    ("new_debug_unreachable" . #+(package-source rust-new-debug-unreachable-1.0))
                     ("nodrop" . #+(package-source rust-nodrop-0.1))
-;; num-complex 0.2
+                    ("num-complex" . #+(package-source rust-num-complex-0.2))
                     ("num-integer" . #+(package-source rust-num-integer-0.1))
 ;; num-rational 0.2
                     ("num-traits" . #+(package-source rust-num-traits-0.2))
@@ -1896,16 +2114,16 @@ from forcing GEXP-PROMISE."
 ;; pangocairo 0.8
 ;; pangocairo-sys 0.10
                     ("percent-encoding" . #+(package-source rust-percent-encoding-2.1))
-;; phf 0.7.24
-;; phf_codegen 0.7.24
-;; phf_generator 0.7.24
-;; phf_shared 0.7.24
-                    ;("pkg-config" . #+(package-source rust-pkg-config-0.3))
-;; precomputed-hash 0.1
+                    ("phf" . #+(package-source rust-phf-0.7))
+                    ("phf_codegen" . #+(package-source rust-phf-codegen-0.7))
+                    ("phf_generator" . #+(package-source rust-phf-generator-0.7))
+                    ("phf_shared" . #+(package-source rust-phf-shared-0.7))
+                    ("pkg-config" . #+(package-source rust-pkg-config-0.3))
+                    ("precomputed-hash" . #+(package-source rust-precomputed-hash-0.1))
                     ("proc-macro2" . #+(package-source rust-proc-macro2-1.0))
 ;; procedural-masquerade 0.1
                     ("quote" . #+(package-source rust-quote-1.0))
-                    ;("rand" . #+(package-source rust-rand-0.6))
+                    ("rand" . #+(package-source rust-rand-0.6))
                     ("rand_chacha" . #+(package-source rust-rand-chacha-0.1))
                     ("rand_core-0.3.1" . #+(package-source rust-rand-core-0.3))
                     ("rand_core" . #+(package-source rust-rand-core-0.4))
@@ -1916,45 +2134,45 @@ from forcing GEXP-PROMISE."
                     ("rand_pcg" . #+(package-source rust-rand-pcg-0.1))
                     ("rand_xorshift" . #+(package-source rust-rand-xorshift-0.1))
 ;; rand_xoshiro 0.1
-                    ;("rawpointer" . #+(package-source rust-rawpointer-0.1))
+;; rawpointer 0.2
 ;; rayon 1.2
 ;; rayon-core 1.6
 ;; rctree 0.3
                     ("rdrand" . #+(package-source rust-rdrand-0.4))
 ;; regex 1.3
-;; regex-automata 0.1
+                    ("regex-automata" . #+(package-source rust-regex-automata-0.1))
                     ;("regex-syntax" . #+(package-source rust-regex-syntax-0.6))
-;; rustc_version 0.2
+                    ("rustc_version" . #+(package-source rust-rustc-version-0.2))
                     ("ryu" . #+(package-source rust-ryu-1.0))
                     ("same-file" . #+(package-source rust-same-file-1.0))
                     ("scopeguard" . #+(package-source rust-scopeguard-1.0))
-;; semver 0.9
-                    ;("semver-parser" . #+(package-source rust-semver-parser-0.7))
+                    ("semver" . #+(package-source rust-semver-0.9))
+                    ("semver-parser" . #+(package-source rust-semver-parser-0.7))
                     ("serde" . #+(package-source rust-serde-1.0))
                     ("serde_derive" . #+(package-source rust-serde-derive-1.0))
                     ("serde_json" . #+(package-source rust-serde-json-1.0))
-;; siphasher 0.2
-;; smallvec 0.6
-;; string_cache 0.7
-;; string_cache_codegen 0.4
-;; string_cache_shared 0.3
+                    ("siphasher" . #+(package-source rust-siphasher-0.2))
+                    ("smallvec" . #+(package-source rust-smallvec-0.6))
+                    ("string_cache" . #+(package-source rust-string-cache-0.7))
+                    ;("string_cache_codegen" . #+(package-source rust-string-cache-codegen-0.4))
+                    ("string_cache_shared" . #+(package-source rust-string-cache-shared-0.3))
                     ("syn" . #+(package-source rust-syn-1.0))
-;; tendril 0.4
+                    ("tendril" . #+(package-source rust-tendril-0.4))
                     ("textwrap" . #+(package-source rust-textwrap-0.11))
-                    ;("thread_local" . #+(package-source rust-thread-local-0.3))
-;; tinytemplate 1.0
-                    ;("typenum" . #+(package-source rust-typenum-1.10))
-;; unicode-bidi 0.3
-;; unicode-normalization 0.1
+                    ("thread_local" . #+(package-source rust-thread-local-0.3))
+                    ("tinytemplate" . #+(package-source rust-tinytemplate-1.0))
+                    ("typenum" . #+(package-source rust-typenum-1.10))
+                    ("unicode-bidi" . #+(package-source rust-unicode-bidi-0.3))
+                    ("unicode-normalization" . #+(package-source rust-unicode-normalization-0.1))
                     ("unicode-width" . #+(package-source rust-unicode-width-0.1))
                     ("unicode-xid" . #+(package-source rust-unicode-xid-0.2))
 ;; url 2.1
-;; utf-8 0.7
+                    ("utf-8" . #+(package-source rust-utf-8-0.7))
                     ("walkdir" . #+(package-source rust-walkdir-2.2))
                     ("winapi" . #+(package-source rust-winapi-0.3))
-                    ;("winapi-i686-pc-windows-gnu" . #+(package-source rust-winapi-i686-pc-windows-gnu-0.4))
+                    ("winapi-i686-pc-windows-gnu" . #+(package-source rust-winapi-i686-pc-windows-gnu-0.4))
                     ("winapi-util" . #+(package-source rust-winapi-util-0.1))
-                    ;("winapi-x86_64-pc-windows-gnu" . #+(package-source rust-winapi-x86-64-pc-windows-gnu-0.4))
+                    ("winapi-x86_64-pc-windows-gnu" . #+(package-source rust-winapi-x86-64-pc-windows-gnu-0.4))
 ;; xml-rs 0.8
                     )))
               (format #t "Replacing vendored crates in the tarball and repacking ...~%")
@@ -4475,7 +4693,7 @@ for application developers.")
 (define-public grilo-plugins
   (package
     (name "grilo-plugins")
-    (version "0.3.3")
+    (version "0.3.10")
     (source
      (origin
        (method url-fetch)
@@ -4484,44 +4702,41 @@ for application developers.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "172vr1y98d2mzlmg5akjn4ibrcj3gh22cwnb3cv9rvvzhj3yhrpy"))))
-    (build-system gnu-build-system)
+         "0jldaixc4kzycn5v8ixkjld1n0z3dp0l1p3vchgdwpvdvc7kcfw0"))))
+    (build-system meson-build-system)
     (native-inputs
-     `(("glib:bin" ,glib "bin")     ; for glib-mkenums and glib-genmarshal
-       ("intltool" ,intltool)
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("gtk+:bin" ,gtk+ "bin")
        ("itstool" ,itstool)
        ("pkg-config" ,pkg-config)))
+    ;; TODO: ahavi, gstreamer
     (inputs
      `(("grilo" ,grilo)
-       ("glib" ,glib)
-       ("libxml2" ,libxml2)
-       ("sqlite" ,sqlite)
+       ;("gmime" ,gmime) ; unused
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gom" ,gom)
-       ;; XXX TODO: Add oauth
-       ;; XXX TODO: Add goa
-       ;; XXX TODO: Add gdata (e.g. needed for youtube plugin)
-       ;; XXX TODO: Add lua (needs help finding it)
+       ;("gssdp" ,gssdp) ; unused
+       ;("gupnp" ,gupnp) ; unused
+       ;("gupnp-av" ,gupnp-av) ; unused
        ("json-glib" ,json-glib)
        ("avahi" ,avahi)
-       ("gmime" ,gmime)
+       ("libgdata" ,libgdata)
+       ("libmediaart" ,libmediaart)
+       ;("librest" ,rest) ; unused
        ("libsoup" ,libsoup)
-       ("libarchive" ,libarchive)
-       ("totem-pl-parser" ,totem-pl-parser)))
+       ("totam-pl-parser" ,totem-pl-parser)
+       ("tracker" ,tracker))) ; unused because it's too old
     (arguments
-     `(#:make-flags (list (string-append "GRL_PLUGINS_DIR="
-                                         %output
-                                         "/lib/grilo-"
-                                         ,(version-major+minor version)))
-       ;; XXX FIXME: Try to get the test suite working.  It appears to require
-       ;; a working system dbus.  Inside the build container, all tests fail
-       ;; with: "assertion failed: (source)".  Outside of the build container,
-       ;; most tests succeed.
-       #:tests? #f))
+     `(#:glib-or-gtk? #t
+       ;;Disable lua-factory as it needs missing dependencies
+       #:configure-flags '("-Denable-lua-factory=no")))
     (home-page "https://live.gnome.org/Grilo")
     (synopsis "Plugins for the Grilo media discovery library")
     (description
      "Grilo is a framework focused on making media discovery and browsing easy
-for application developers.")
+for application developers.  This package provides plugins for common media
+discovery protocols.")
     (license license:lgpl2.1+)))
 
 (define-public totem
@@ -7389,6 +7604,68 @@ associations for GNOME.")
     (license license:gpl3+)
     (home-page #f)))
 
+(define-public libgovirt
+  (package
+   (name "libgovirt")
+   (version "0.3.6")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "19pb71pag3vsi83kbv8h08kimwym4hpw36kjl6a5ik5nk50mc8sg"))))
+   (build-system glib-or-gtk-build-system)
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+      ("gtk+:bin" ,gtk+ "bin")
+      ("pkg-config" ,pkg-config)))
+   (inputs
+    `(("glib-networking" ,glib-networking) ; GIO plugin--for the tests
+      ("librest" ,rest)))
+   (synopsis "GoVirt Library")
+   (description "GoVirt is a GObject wrapper for the oVirt REST API.")
+   (home-page "https://gitlab.gnome.org/GNOME/libgovirt")
+   (license license:gpl2+)))
+
+(define-public gnome-weather
+  (package
+   (name "gnome-weather")
+   (version "3.34.0")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnome/sources/" name "/"
+                                (version-major+minor version) "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "1g63xzs17i36if923b36k9fwbk0nqa5vz6zh1k6q2axrzhhpx1i4"))))
+   (build-system meson-build-system)
+   (native-inputs
+    `(("gettext" ,gettext-minimal)
+      ("glib:bin" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("gtk+:bin" ,gtk+ "bin")
+      ("pkg-config" ,pkg-config)))
+   (inputs
+    `( ;("adwaita-icon-theme" ,adwaita-icon-theme)
+      ("appstream-glib" ,appstream-glib)
+      ("geoclue" ,geoclue)
+      ("gdk-pixbuf" ,gdk-pixbuf)
+      ("gjs" ,gjs)
+      ("gnome-desktop" ,gnome-desktop)
+      ("libgweather" ,libgweather)))
+   (synopsis "Weather monitoring for GNOME desktop")
+   (description "GNOME Weather is a small application that allows you to
+monitor the current weather conditions for your city, or anywhere in the
+world.")
+   (home-page "https://wiki.gnome.org/Apps/Weather")
+   (license license:gpl2+)))
+
 (define-public gnome
   (package
     (name "gnome")
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 0d3b1e8339..6809623ce7 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -330,13 +330,13 @@ graphs in Graphviz's DOT language, written in pure Python.")
 (define-public dot2tex
   (package
     (name "dot2tex")
-    (version "2.9.0")
+    (version "2.11.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "dot2tex" version))
               (sha256
                (base32
-                "0jhdwp0wv2h0xb7j2s5xiv7i8yaqgfpwwqcyrjvaxkfwsynm8gkx"))))
+                "1kp77wiv7b5qib82i3y3sn9r49rym43aaqm5aw1bwnzfbbq2m6i9"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2))
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 323e3ccfee..63b4179bc6 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -168,7 +168,14 @@ This package provides the core library and elements.")
     (propagated-inputs
      `(("glib" ,glib)              ;required by gstreamer-sdp-1.0.pc
        ("gstreamer" ,gstreamer)    ;required by gstreamer-plugins-base-1.0.pc
-       ("orc" ,orc)))              ;required by gstreamer-audio-1.0.pc
+
+       ;; XXX: Do not enable Orc optimizations on ARM systems because
+       ;; it leads to two test failures.
+       ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/683
+       ,@(if (string-prefix? "arm" (or (%current-target-system)
+                                       (%current-system)))
+             '()
+             `(("orc" ,orc)))))         ;required by gstreamer-audio-1.0.pc
     (inputs
      `(("cdparanoia" ,cdparanoia)
        ("pango" ,pango)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 37dc923ab5..b136449f7e 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1360,6 +1360,16 @@ produces identical output on all those targets.")
      `(("gtk+" ,gtk+-2)))
     (propagated-inputs
      `(("perl-pango" ,perl-pango)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-broken-test
+           ;; See https://gitlab.gnome.org/GNOME/perl-gtk2/issues/3.
+           (lambda _
+             (substitute* "t/GdkPixbuf.t"
+               (("tests => 112") "tests => 111")
+               (("ok \\(defined \\$pixbuf, \"Don't crash on partial pixmap data\"\\);")
+                "# ok (defined $pixbuf, \"Don't crash on partial pixmap data\");")))))))
     (home-page "https://metacpan.org/release/Gtk2")
     (synopsis "Perl interface to the 2.x series of the Gimp Toolkit library")
     (description "Perl bindings to the 2.x series of the Gtk+ widget set.
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 80ff00b23b..dadbce8bab 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -643,6 +643,12 @@ using Guile's foreign function interface.")
      "Guile-colorized provides you with a colorized REPL for GNU Guile.")
     (license license:gpl3+)))
 
+(define-public guile3.0-colorized
+  (package
+    (inherit guile-colorized)
+    (name "guile3.0-colorized")
+    (native-inputs `(("guile" ,guile-next)))))
+
 (define-public guile-pfds
   (package
     (name "guile-pfds")
@@ -777,6 +783,12 @@ convenient nested tree operations.")
 messaging library.")
       (license license:gpl3+))))
 
+(define-public guile3.0-simple-zmq
+  (package
+    (inherit guile-simple-zmq)
+    (name "guile3.0-simple-zmq")
+    (native-inputs `(("guile" ,guile-next)))))
+
 (define-public jupyter-guile-kernel
   (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
         (revision "1"))
@@ -984,7 +996,20 @@ format.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
+                "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Allow builds with Guile 3.0.
+                  (substitute* "configure.ac"
+                    (("^GUILE_PKG.*")
+                     "GUILE_PKG([3.0 2.2 2.0])\n"))
+
+                  ;; Remove "guile.m4" since it contains an obsolete version
+                  ;; of 'GUILE_PKG' that doesn't work with development
+                  ;; versions such as 2.9.
+                  (delete-file "m4/guile.m4")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags
@@ -1004,6 +1029,13 @@ Scheme by using Guile’s foreign function interface.")
     (home-page "https://gitlab.com/mothacehe/guile-newt")
     (license license:gpl3+)))
 
+(define-public guile3.0-newt
+  (package
+    (inherit guile-newt)
+    (name "guile3.0-newt")
+    (inputs `(("guile" ,guile-next)
+              ,@(alist-delete "guile" (package-inputs guile-newt))))))
+
 (define-public guile-mastodon
   (package
     (name "guile-mastodon")
@@ -1045,7 +1077,20 @@ microblogging service.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "01qmv6xnbbq3wih0dl9bscvca2d7zx7bjiqf35y6dkaqsp8nvdxf"))))
+                "01qmv6xnbbq3wih0dl9bscvca2d7zx7bjiqf35y6dkaqsp8nvdxf"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Allow builds with Guile 3.0.
+                  (substitute* "configure.ac"
+                    (("^GUILE_PKG.*")
+                     "GUILE_PKG([3.0 2.2 2.0])\n"))
+
+                  ;; Remove "guile.m4" since it contains an obsolete version
+                  ;; of 'GUILE_PKG' that doesn't work with development
+                  ;; versions such as 2.9.
+                  (delete-file "m4/guile.m4")
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags
@@ -1067,6 +1112,15 @@ written in pure Scheme by using Guile's foreign function interface.")
     (home-page "https://gitlab.com/mothacehe/guile-parted")
     (license license:gpl3+)))
 
+(define-public guile3.0-parted
+  (package
+    (inherit guile-parted)
+    (name "guile3.0-parted")
+    (inputs `(("guile" ,guile-next)
+              ,@(alist-delete "guile" (package-inputs guile-parted))))
+    (propagated-inputs
+     `(("guile-bytestructures" ,guile3.0-bytestructures)))))
+
 (define-public guile-xosd
   (package
     (name "guile-xosd")
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 7b6009770d..803885ab7e 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
@@ -277,14 +277,14 @@ without requiring the source code to be rewritten.")
   (package
     (inherit guile-2.2)
     (name "guile-next")
-    (version "2.9.8")
+    (version "2.9.9")
     (source (origin
               (inherit (package-source guile-2.2))
               (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "09icv9ymdb7hchn34c32s7x8ycilqj74mirmi4b3bm5zp1izd32a"))))
+                "0s99zzdzj29fb42q5fwn7vqg9k7y9ppq9vkv4p39zr93z8694wdz"))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUILE_LOAD_PATH")
@@ -296,9 +296,9 @@ without requiring the source code to be rewritten.")
     (properties '((ftp-server . "alpha.gnu.org")
                   (upstream-name . "guile")))))
 
-(define (make-guile-readline guile)
+(define* (make-guile-readline guile #:optional (name "guile-readline"))
   (package
-    (name "guile-readline")
+    (name name)
     (version (package-version guile))
     (source (package-source guile))
     (build-system gnu-build-system)
@@ -355,6 +355,9 @@ GNU@tie{}Guile.  Use the @code{(ice-9 readline)} module and call its
 (define-public guile-readline
   (make-guile-readline guile-2.2))
 
+(define-public guile3.0-readline
+  (make-guile-readline guile-next "guile3.0-readline"))
+
 (define (guile-variant-package-name prefix)
   (lambda (name)
     "Return NAME with PREFIX instead of \"guile-\", when applicable."
@@ -449,9 +452,7 @@ specification.  These are the main features:
 ;; Deprecate the 'guile-json' alias to force the use 'guile-json-1' or
 ;; 'guile-json-3'.  In the future, we may reuse 'guile-json' as an alias for
 ;; 'guile-json-3'.
-(define-deprecated guile-json
-  guile-json-1
-  guile-json-1)
+(define-deprecated guile-json guile-json-1)
 (export guile-json)
 
 (define-public guile2.0-json
@@ -589,8 +590,16 @@ Guile's foreign function interface.")
                 "0q0habjiy3h9cigb7q1br9kz6z212dn2ab31f6dgd3rrmsfn5rvb"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags
-       '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+     `(#:make-flags '("GUILE_AUTO_COMPILE=0")     ;to prevent guild warnings
+
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'install-doc
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (package ,(package-full-name this-package "-"))
+                             (doc (string-append out "/share/doc/" package)))
+                        (install-file "README.md" doc)
+                        #t))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 1620cb1b2e..bb5c25014e 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -297,7 +297,7 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
     (license license:lgpl2.0+)))
 
 ;; kdevplatform was merged into kdevelop as of 5.2.x
-(define-deprecated kdevplatform kdevelop kdevelop)
+(define-deprecated kdevplatform kdevelop)
 
 (define-public krita
   (package
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 83736fcc1f..7e2d04e53e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -357,42 +357,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.4-version "5.4.10")
+(define-public linux-libre-5.4-version "5.4.11")
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1p9f0h9fl1xy13dag1x7j2ic8kdv0zsp42c8baxn7cz3llc04g7j")))
+        (hash (base32 "0b6pamnhyzf4n6sl8lxcnllrn41xmbldipfca23j1n71spjkdgb2")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.94")
+(define-public linux-libre-4.19-version "4.19.95")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0rvlz94mjl7ygpmhz0yn2whx9dq9fmy0w1472bj16hkwbaki0an6")))
+        (hash (base32 "1c2g5wcf4zgy5q51qrf0s4hf3pr1j8gi8gn27w8cafn1xqrcmvaa")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.163")
+(define-public linux-libre-4.14-version "4.14.164")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "0jdh54rqdsb3b908v2q4xjn8y45b7rdnwgab0s4qf5alznfcqagb")))
+        (hash (base32 "0jzbgpxlfy64q7zaqix87k8ci1fr9lkx1xr9m5zjniziydhi00x2")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.208")
+(define-public linux-libre-4.9-version "4.9.209")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0njjw1i8dilihn1hz62zra4b9y05fb3r2k2sqlkd0wfn86c1rbdp")))
+        (hash (base32 "1qarm90l1r4y68v5swhf81z6v6gspa8sw9jab3fxrz8mz6zdan02")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.208")
+(define-public linux-libre-4.4-version "4.4.209")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "03jj91z5dc0ybpjy9w6aanb3k53gcj7gsjc32h3ldf72hlmgz6aq")))
+        (hash (base32 "0m94795grq3sbj7jlmwc0ncq3vap9lf1z00sdiys17kjs3bcfbnh")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -927,7 +927,7 @@ and should be used with caution, especially on untested models.")
 (define-public vhba-module
   (package
     (name "vhba-module")
-    (version "20190831")
+    (version "20200106")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -935,7 +935,7 @@ and should be used with caution, especially on untested models.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "1ybbk6l06n0y11n5wnfmvdz0baizmq55l458ywimghdyz0n7g0ws"))))
+                "10rlvsfj0fw6n0qmwcnvhimqnsnhi7n55lyl7fq1pkwggf5218sr"))))
     (build-system linux-module-build-system)
     (arguments
      ;; TODO: No tests?
@@ -6030,10 +6030,10 @@ IP addresses and routes, and configure IPsec.")
            (lambda _
              (invoke "make" "install-dev"))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("util-linux" ,util-linux)))
+     `(("gettext" ,gettext-minimal)))
     (inputs
-     `(("python" ,python-wrapper)))
+     `(("libuuid" ,util-linux)
+       ("python" ,python-wrapper)))
     (home-page "https://xfs.wiki.kernel.org/")
     (synopsis "XFS file system tools")
     (description "This package provides commands to create and check XFS
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 54746de9f2..2a1babde79 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -3376,6 +3376,19 @@ client and server.")
      (build-system asdf-build-system/sbcl)
      (inputs
       `(("sbcl-lift" ,sbcl-lift)))
+     (arguments
+      `(#:phases
+        (modify-phases %standard-phases
+          (add-after 'check 'delete-test-results
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((test-results (string-append (assoc-ref outputs "out")
+                                                 "/share/common-lisp/"
+                                                 (%lisp-type) "-source"
+                                                 "/trivial-backtrace"
+                                                 "/test-results")))
+                (when (file-exists? test-results)
+                  (delete-file-recursively test-results)))
+              #t)))))
      (home-page "https://common-lisp.net/project/trivial-backtrace/")
      (synopsis "Portable simple API to work with backtraces in Common Lisp")
      (description
@@ -9155,3 +9168,35 @@ visualization.")
 
 (define-public cl-ana
   (sbcl-package->cl-source-package sbcl-cl-ana))
+
+(define-public sbcl-archive
+  (let ((commit "631271c091ed02994bec3980cb288a2cf32c7cdc")
+        (revision "1"))
+    (package
+      (name "sbcl-archive")
+      (version (git-version "0.9" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/sharplispers/archive.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0pvsc9fmybx7rxd0kmzq4shi6hszdpwdc1sfy7jwyfxf8n3hnv4p"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("cl-fad" ,sbcl-cl-fad)
+         ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+      (synopsis "Common Lisp library for tar and cpio archives")
+      (description
+       "This is a Common Lisp library to read and write disk-based file
+archives such as those generated by the tar and cpio programs on Unix.")
+      (home-page "https://github.com/sharplispers/archive")
+      (license license:bsd-3))))
+
+(define-public cl-archive
+  (sbcl-package->cl-source-package sbcl-archive))
+
+(define-public ecl-archive
+  (sbcl-package->ecl-package sbcl-archive))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 4ec1ad482f..cbb1112d9f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017, 2018, 2019 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;; Copyright © 2017, 2018, 2019, 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
@@ -1993,14 +1993,14 @@ scientific applications modeled by partial differential equations.")
 (define-public python-petsc4py
   (package
     (name "python-petsc4py")
-    (version "3.10.1")
+    (version "3.11.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "petsc4py" version))
         (sha256
           (base32
-            "094hcnran0r2z1wlvmjswsz3ski1m9kqrl5l0ax8jjhnk55x0flh"))))
+            "1rm1qj5wlkhxl39by9n78lh3gbmii31wsnb8j1rr5hvfr5xgbx2q"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -2163,14 +2163,14 @@ arising after the discretization of partial differential equations.")
 (define-public python-slepc4py
   (package
     (name "python-slepc4py")
-    (version "3.10.0")
+    (version "3.11.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "slepc4py" version))
         (sha256
           (base32
-            "0x049dyc8frgh79fvvavf4vlbqp4mgm61nsaivzdav4316vvlv1j"))))
+            "1ksp08kxf4wg408b9nn39z3qfhy643j22d4rfbl30vzxk2rxh4lq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 989c708ab8..323e32ae61 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -173,16 +173,17 @@ end-to-end encryption.")
 (define-public bitlbee
   (package
     (name "bitlbee")
-    (version "3.5.1")
+    (version "3.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "0sgsn0fv41rga46mih3fyv65cvfa6rvki8x92dn7bczbi7yxfdln"))))
+               (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
-                     ("check" ,check)))
+                     ;; Note: Change to 'check' for versions > 3.6.
+                     ("check" ,check-0.12)))
     (inputs `(("glib" ,glib)
               ("libotr" ,libotr)
               ("gnutls" ,gnutls)
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 55641d8fa1..00e0d12eab 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -159,8 +159,7 @@ bind processes, and much more.")
                   "-1"))
                #t))))))))
 
-(define-deprecated hwloc-2.0 'hwloc-2
-  hwloc-2)
+(define-deprecated hwloc-2.0 hwloc-2)
 
 (define-public hwloc
   ;; The latest stable series of hwloc.
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index be243d1c67..2583191f33 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2978,7 +2978,7 @@ for improved Amiga ProTracker 2/3 compatibility.")
 (define-public schismtracker
   (package
     (name "schismtracker")
-    (version "20190614")
+    (version "20190805")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2987,7 +2987,7 @@ for improved Amiga ProTracker 2/3 compatibility.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0cg0q5bkn8a06v03vmj69xyhi4xxpl729k4008q4hiakh9gy2x49"))
+                "0qqps20vvn3rgpg8174bjrrm38gqcci2z5z4c1r1vhbccclahgsd"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove use of __DATE__ and __TIME__ for reproducibility.
@@ -3838,7 +3838,8 @@ are a C compiler and glib.  Full API documentation and examples are included.")
        ("libsndfile1" ,libsndfile)
        ("libxft" ,libxft)
        ("freetype2" ,freetype)
-       ("fftw3f" ,fftwf)))
+       ("fftw3f" ,fftwf)
+       ("jack" ,jack-1)))
     (home-page "https://lmms.io/")
     (synopsis "Music composition tool")
     (description "LMMS is a digital audio workstation.  It includes tools for sequencing
diff --git a/gnu/packages/patches/audacity-build-with-system-portaudio.patch b/gnu/packages/patches/audacity-build-with-system-portaudio.patch
index 3b73a6c930..05325a1493 100644
--- a/gnu/packages/patches/audacity-build-with-system-portaudio.patch
+++ b/gnu/packages/patches/audacity-build-with-system-portaudio.patch
@@ -1,6 +1,8 @@
 Downloaded from here:
 https://sourceforge.net/p/audacity/mailman/message/36106562/
 
+Modified for use on later versions of audacity.
+
 >From 5f9482a191359f2c477763a36d2c865c5f186602 Mon Sep 17 00:00:00 2001
 From: Antonio Ospite <ao2@ao2.it>
 Date: Tue, 7 Nov 2017 13:06:33 +0100
@@ -31,16 +33,16 @@ over the code where it's used.
  1 file changed, 16 insertions(+), 1 deletion(-)
 
 diff --git a/src/AudioIO.cpp b/src/AudioIO.cpp
-index a78bd1cab..d5481838d 100644
+index 48715869c..bb4bf472c 100644
 --- a/src/AudioIO.cpp
 +++ b/src/AudioIO.cpp
-@@ -452,8 +452,23 @@ writing audio.
+@@ -480,9 +480,22 @@ time warp info and AudioIOListener and whether the playback is looped.
     #define ROUND(x) (int) ((x)+0.5)
     //#include <string.h>
-    #include "../lib-src/portmidi/pm_common/portmidi.h"
+ //   #include "../lib-src/portmidi/pm_common/portmidi.h"
 -   #include "../lib-src/portaudio-v19/src/common/pa_util.h"
     #include "NoteTrack.h"
-+
+ #endif
 +PaTime PaUtil_GetTime( void )
 +{
 +#ifdef HAVE_MACH_ABSOLUTE_TIME
@@ -55,10 +57,6 @@ index a78bd1cab..d5481838d 100644
 +    return (PaTime) tv.tv_usec * 1e-6 + tv.tv_sec;
 +#endif
 +}
-+
- #endif
  
  #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
--- 
-2.15.0
-
+    #define LOWER_BOUND 0.0
diff --git a/gnu/packages/patches/jsoncpp-fix-inverted-case.patch b/gnu/packages/patches/jsoncpp-fix-inverted-case.patch
new file mode 100644
index 0000000000..e4897de1b8
--- /dev/null
+++ b/gnu/packages/patches/jsoncpp-fix-inverted-case.patch
@@ -0,0 +1,22 @@
+This patch fixes a bug and related test failure on platforms where 'char'
+is unsigned.
+
+Taken from upstream:
+https://github.com/open-source-parsers/jsoncpp/commit/f11611c8785082ead760494cba06196f14a06dcb
+
+diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
+index 8e06cca2..56195dc1 100644
+--- a/src/lib_json/json_writer.cpp
++++ b/src/lib_json/json_writer.cpp
+@@ -178,8 +178,9 @@ static bool isAnyCharRequiredQuoting(char const* s, size_t n) {
+ 
+   char const* const end = s + n;
+   for (char const* cur = s; cur < end; ++cur) {
+-    if (*cur == '\\' || *cur == '\"' || *cur < ' ' ||
+-        static_cast<unsigned char>(*cur) < 0x80)
++    if (*cur == '\\' || *cur == '\"' ||
++        static_cast<unsigned char>(*cur) < ' ' ||
++        static_cast<unsigned char>(*cur) >= 0x80)
+       return true;
+   }
+   return false;
diff --git a/gnu/packages/patches/spice-fix-test-armhf.patch b/gnu/packages/patches/spice-fix-test-armhf.patch
new file mode 100644
index 0000000000..5c51bd6ede
--- /dev/null
+++ b/gnu/packages/patches/spice-fix-test-armhf.patch
@@ -0,0 +1,19 @@
+Fix test failure on armhf and ppc64el:
+https://gitlab.freedesktop.org/spice/spice-server/issues/31
+
+Taken from upstream:
+https://gitlab.freedesktop.org/spice/spice/commit/19f9f454e0777d851f26d14df0c7984267c57015
+
+diff --git a/server/tests/test-qxl-parsing.c b/server/tests/test-qxl-parsing.c
+index 60ca8f88c62441e02577ced21e4f60a08ad4171a..234bdabc9ce619d0799b5136f1d72357b0b2f490 100644
+--- a/server/tests/test-qxl-parsing.c
++++ b/server/tests/test-qxl-parsing.c
+@@ -96,7 +96,7 @@ static void test_memslot_invalid_slot_id(void)
+     RedMemSlotInfo mem_info;
+     init_meminfo(&mem_info);
+ 
+-    memslot_get_virt(&mem_info, 1 << mem_info.memslot_id_shift, 16, 0);
++    memslot_get_virt(&mem_info, UINT64_C(1) << mem_info.memslot_id_shift, 16, 0);
+ }
+ 
+ static void test_memslot_invalid_addresses(void)
diff --git a/gnu/packages/patches/wavpack-CVE-2018-6767.patch b/gnu/packages/patches/wavpack-CVE-2018-6767.patch
deleted file mode 100644
index f49a8f0fd6..0000000000
--- a/gnu/packages/patches/wavpack-CVE-2018-6767.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-Fix CVE-2018-6767:
-https://nvd.nist.gov/vuln/detail/CVE-2018-6767
-https://security-tracker.debian.org/tracker/CVE-2018-6767
-
-Patch copied from upstream source repository:
-https://github.com/dbry/WavPack/commit/d5bf76b5a88d044a1be1d5656698e3ba737167e5
-
-From d5bf76b5a88d044a1be1d5656698e3ba737167e5 Mon Sep 17 00:00:00 2001
-From: David Bryant <david@wavpack.com>
-Date: Sun, 4 Feb 2018 11:28:15 -0800
-Subject: [PATCH] issue #27, do not overwrite stack on corrupt RF64 file
-
----
- cli/riff.c | 39 ++++++++++++++++++++++++++++++++-------
- 1 file changed, 32 insertions(+), 7 deletions(-)
-
-diff --git a/cli/riff.c b/cli/riff.c
-index 8b1af45..de98c1e 100644
---- a/cli/riff.c
-+++ b/cli/riff.c
-@@ -42,6 +42,7 @@ typedef struct {
- 
- #pragma pack(pop)
- 
-+#define CS64ChunkFormat "4D"
- #define DS64ChunkFormat "DDDL"
- 
- #define WAVPACK_NO_ERROR    0
-@@ -101,13 +102,13 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
- 
-         if (!strncmp (chunk_header.ckID, "ds64", 4)) {
-             if (chunk_header.ckSize < sizeof (DS64Chunk) ||
--                !DoReadFile (infile, &ds64_chunk, chunk_header.ckSize, &bcount) ||
--                bcount != chunk_header.ckSize) {
-+                !DoReadFile (infile, &ds64_chunk, sizeof (DS64Chunk), &bcount) ||
-+                bcount != sizeof (DS64Chunk)) {
-                     error_line ("%s is not a valid .WAV file!", infilename);
-                     return WAVPACK_SOFT_ERROR;
-             }
-             else if (!(config->qmode & QMODE_NO_STORE_WRAPPER) &&
--                !WavpackAddWrapper (wpc, &ds64_chunk, chunk_header.ckSize)) {
-+                !WavpackAddWrapper (wpc, &ds64_chunk, sizeof (DS64Chunk))) {
-                     error_line ("%s", WavpackGetErrorMessage (wpc));
-                     return WAVPACK_SOFT_ERROR;
-             }
-@@ -315,10 +316,11 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
- 
- int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, int qmode)
- {
--    int do_rf64 = 0, write_junk = 1;
-+    int do_rf64 = 0, write_junk = 1, table_length = 0;
-     ChunkHeader ds64hdr, datahdr, fmthdr;
-     RiffChunkHeader riffhdr;
-     DS64Chunk ds64_chunk;
-+    CS64Chunk cs64_chunk;
-     JunkChunk junkchunk;
-     WaveHeader wavhdr;
-     uint32_t bcount;
-@@ -380,6 +382,7 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
-     strncpy (riffhdr.formType, "WAVE", sizeof (riffhdr.formType));
-     total_riff_bytes = sizeof (riffhdr) + wavhdrsize + sizeof (datahdr) + ((total_data_bytes + 1) & ~(int64_t)1);
-     if (do_rf64) total_riff_bytes += sizeof (ds64hdr) + sizeof (ds64_chunk);
-+    total_riff_bytes += table_length * sizeof (CS64Chunk);
-     if (write_junk) total_riff_bytes += sizeof (junkchunk);
-     strncpy (fmthdr.ckID, "fmt ", sizeof (fmthdr.ckID));
-     strncpy (datahdr.ckID, "data", sizeof (datahdr.ckID));
-@@ -394,11 +397,12 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
- 
-     if (do_rf64) {
-         strncpy (ds64hdr.ckID, "ds64", sizeof (ds64hdr.ckID));
--        ds64hdr.ckSize = sizeof (ds64_chunk);
-+        ds64hdr.ckSize = sizeof (ds64_chunk) + (table_length * sizeof (CS64Chunk));
-         CLEAR (ds64_chunk);
-         ds64_chunk.riffSize64 = total_riff_bytes;
-         ds64_chunk.dataSize64 = total_data_bytes;
-         ds64_chunk.sampleCount64 = total_samples;
-+        ds64_chunk.tableLength = table_length;
-         riffhdr.ckSize = (uint32_t) -1;
-         datahdr.ckSize = (uint32_t) -1;
-         WavpackNativeToLittleEndian (&ds64hdr, ChunkHeaderFormat);
-@@ -409,6 +413,14 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
-         datahdr.ckSize = (uint32_t) total_data_bytes;
-     }
- 
-+    // this "table" is just a dummy placeholder for testing (normally not written)
-+
-+    if (table_length) {
-+        strncpy (cs64_chunk.ckID, "dmmy", sizeof (cs64_chunk.ckID));
-+        cs64_chunk.chunkSize64 = 12345678;
-+        WavpackNativeToLittleEndian (&cs64_chunk, CS64ChunkFormat);
-+    }
-+
-     // write the RIFF chunks up to just before the data starts
- 
-     WavpackNativeToLittleEndian (&riffhdr, ChunkHeaderFormat);
-@@ -418,8 +430,21 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
- 
-     if (!DoWriteFile (outfile, &riffhdr, sizeof (riffhdr), &bcount) || bcount != sizeof (riffhdr) ||
-         (do_rf64 && (!DoWriteFile (outfile, &ds64hdr, sizeof (ds64hdr), &bcount) || bcount != sizeof (ds64hdr))) ||
--        (do_rf64 && (!DoWriteFile (outfile, &ds64_chunk, sizeof (ds64_chunk), &bcount) || bcount != sizeof (ds64_chunk))) ||
--        (write_junk && (!DoWriteFile (outfile, &junkchunk, sizeof (junkchunk), &bcount) || bcount != sizeof (junkchunk))) ||
-+        (do_rf64 && (!DoWriteFile (outfile, &ds64_chunk, sizeof (ds64_chunk), &bcount) || bcount != sizeof (ds64_chunk)))) {
-+            error_line ("can't write .WAV data, disk probably full!");
-+            return FALSE;
-+    }
-+
-+    // again, this is normally not written except for testing
-+
-+    while (table_length--)
-+        if (!DoWriteFile (outfile, &cs64_chunk, sizeof (cs64_chunk), &bcount) || bcount != sizeof (cs64_chunk)) {
-+            error_line ("can't write .WAV data, disk probably full!");
-+            return FALSE;
-+        }
-+
-+
-+    if ((write_junk && (!DoWriteFile (outfile, &junkchunk, sizeof (junkchunk), &bcount) || bcount != sizeof (junkchunk))) ||
-         !DoWriteFile (outfile, &fmthdr, sizeof (fmthdr), &bcount) || bcount != sizeof (fmthdr) ||
-         !DoWriteFile (outfile, &wavhdr, wavhdrsize, &bcount) || bcount != wavhdrsize ||
-         !DoWriteFile (outfile, &datahdr, sizeof (datahdr), &bcount) || bcount != sizeof (datahdr)) {
diff --git a/gnu/packages/patches/wavpack-CVE-2018-7253.patch b/gnu/packages/patches/wavpack-CVE-2018-7253.patch
deleted file mode 100644
index 651755afd0..0000000000
--- a/gnu/packages/patches/wavpack-CVE-2018-7253.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Fix CVE-2018-7253:
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7253
-
-Copied from upstream:
-https://github.com/dbry/WavPack/commit/36a24c7881427d2e1e4dc1cef58f19eee0d13aec
-
-diff --git a/cli/dsdiff.c b/cli/dsdiff.c
-index 410dc1c..c016df9 100644
---- a/cli/dsdiff.c
-+++ b/cli/dsdiff.c
-@@ -153,7 +153,17 @@ int ParseDsdiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa
-                 error_line ("dsdiff file version = 0x%08x", version);
-         }
-         else if (!strncmp (dff_chunk_header.ckID, "PROP", 4)) {
--            char *prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize);
-+            char *prop_chunk;
-+
-+            if (dff_chunk_header.ckDataSize < 4 || dff_chunk_header.ckDataSize > 1024) {
-+                error_line ("%s is not a valid .DFF file!", infilename);
-+                return WAVPACK_SOFT_ERROR;
-+            }
-+
-+            if (debug_logging_mode)
-+                error_line ("got PROP chunk of %d bytes total", (int) dff_chunk_header.ckDataSize);
-+
-+            prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize);
- 
-             if (!DoReadFile (infile, prop_chunk, (uint32_t) dff_chunk_header.ckDataSize, &bcount) ||
-                 bcount != dff_chunk_header.ckDataSize) {
diff --git a/gnu/packages/patches/wavpack-CVE-2018-7254.patch b/gnu/packages/patches/wavpack-CVE-2018-7254.patch
deleted file mode 100644
index 61db296ec8..0000000000
--- a/gnu/packages/patches/wavpack-CVE-2018-7254.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Fix CVE-2018-7254:
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7254
-
-Copied from upstream:
-https://github.com/dbry/WavPack/commit/8e3fe45a7bac31d9a3b558ae0079e2d92a04799e
-
-diff --git a/cli/caff.c b/cli/caff.c
-index ae57c4b..6248a71 100644
---- a/cli/caff.c
-+++ b/cli/caff.c
-@@ -89,8 +89,8 @@ typedef struct
- 
- #define CAFChannelDescriptionFormat "LLLLL"
- 
--static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21 };
--static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16 };
-+static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21,0 };
-+static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16,0 };
- 
- static struct {
-     uint32_t mChannelLayoutTag;     // Core Audio layout, 100 - 146 in high word, num channels in low word
-@@ -274,10 +274,19 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
-             }
-         }
-         else if (!strncmp (caf_chunk_header.mChunkType, "chan", 4)) {
--            CAFChannelLayout *caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize);
-+            CAFChannelLayout *caf_channel_layout;
- 
--            if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) ||
--                !DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) ||
-+            if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) || caf_chunk_header.mChunkSize > 1024) {
-+                error_line ("this .CAF file has an invalid 'chan' chunk!");
-+                return WAVPACK_SOFT_ERROR;
-+            }
-+
-+            if (debug_logging_mode)
-+                error_line ("'chan' chunk is %d bytes", (int) caf_chunk_header.mChunkSize);
-+
-+            caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize);
-+
-+            if (!DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) ||
-                 bcount != caf_chunk_header.mChunkSize) {
-                     error_line ("%s is not a valid .CAF file!", infilename);
-                     free (caf_channel_layout);
-@@ -495,8 +504,15 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
-         }
-         else {          // just copy unknown chunks to output file
- 
--            int bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize;
--            char *buff = malloc (bytes_to_copy);
-+            uint32_t bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize;
-+            char *buff;
-+
-+            if (caf_chunk_header.mChunkSize < 0 || caf_chunk_header.mChunkSize > 1048576) {
-+                error_line ("%s is not a valid .CAF file!", infilename);
-+                return WAVPACK_SOFT_ERROR;
-+            }
-+
-+            buff = malloc (bytes_to_copy);
- 
-             if (debug_logging_mode)
-                 error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes",
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 7f6a2e8e6a..6346c54f22 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -62,8 +62,13 @@ line syntax.")
     (version "1.16")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://rpm5.org/files/popt/popt-"
-                                 version ".tar.gz"))
+             ;; The rpm5.org domain does not resolve since 2019-06-13, so we
+             ;; borrow Debians infrastructure for the source download.
+             (uri (list (string-append "https://deb.debian.org/debian/pool/main"
+                                       "/p/popt/popt_" version ".orig.tar.gz")
+                        ;; Keep the old URL around in case it reappears.
+                        (string-append "http://rpm5.org/files/popt/popt-"
+                                       version ".tar.gz")))
              (sha256
               (base32
                "1j2c61nn2n351nhj4d25mnf3vpiddcykq005w2h6kw79dwlysa77"))))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 44a4eab50b..f35540686c 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -49,6 +49,7 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages time)
@@ -310,21 +311,39 @@ etc.).  The package is structured to make adding new modules easy.")
 (define-public python-keyring
   (package
     (name "python-keyring")
-    (version "8.7")
+    (version "21.0.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "keyring" version))
       (sha256
        (base32
-        "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
+        "1k0w3yh3fz0qp0cvkxdiinq9jzbrnc6bd88qpjz34x3cgcr94psz"))
+      (modules '((guix build utils)))
+      (snippet
+        ;; https://github.com/jaraco/keyring/issues/414
+       '(begin (substitute* "tests/test_packaging.py"
+                 (("ep, =") "(ep,) =")) #t))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Not clear why this test fails.
+             (delete-file "tests/test_packaging.py")
+             (substitute* "pytest.ini"
+               (("--black ") ""))
+             (invoke "pytest"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)
-       ("python-pytest-runner" ,python-pytest-runner)
+       ("python-pytest-checkdocs" ,python-pytest-checkdocs)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-flake8" ,python-pytest-flake8)
        ("python-setuptools-scm" ,python-setuptools-scm)))
     (propagated-inputs
-     `(("python-pycrypto" ,python-pycrypto)))
+     `(("python-importlib-metadata" ,python-importlib-metadata)
+       ("python-secretstorage" ,python-secretstorage)))
     (home-page "https://github.com/jaraco/keyring")
     (synopsis "Store and access your passwords safely")
     (description
@@ -332,10 +351,31 @@ etc.).  The package is structured to make adding new modules easy.")
 service from python.  It can be used in any application that needs safe
 password storage.")
     ;; "MIT" and PSF dual license
+    (properties `((python2-variant . ,(delay python2-keyring))))
     (license license:x11)))
 
 (define-public python2-keyring
-  (package-with-python2 python-keyring))
+  (let ((keyring (package-with-python2
+                   (strip-python2-variant python-keyring))))
+    (package
+      (inherit keyring)
+      (name "python2-keyring")
+      (version "8.7")
+      (source
+        (origin
+          (method url-fetch)
+          (uri (pypi-uri "keyring" version))
+          (sha256
+           (base32
+            "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
+      (arguments
+       `(#:python ,python-2))
+      (native-inputs
+       `(("python2-pytest" ,python2-pytest)
+         ("python2-pytest-runner" ,python2-pytest-runner)
+         ("python2-setuptools-scm" ,python2-setuptools-scm)))
+      (propagated-inputs
+       `(("python2-pycrypto" ,python2-pycrypto))))))
 
 (define-public python-certifi
   (package
@@ -1139,3 +1179,54 @@ storing and retrieving sensitive information in your programs.")
 package provides a tool to securely sign firmware images for booting by
 MCUboot.")
     (license license:expat)))
+
+(define-public python-secretstorage
+  (package
+    (name "python-secretstorage")
+    (version "3.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "SecretStorage" version))
+        (sha256
+         (base32
+          "1xmzr0j3066s220bss4nkgqbiwb5k4kkp2rkpqlqwjb5kfc8mnhm"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; Tests require a running dbus service.
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-jeepney" ,python-jeepney)))
+    (home-page "https://github.com/mitya57/secretstorage")
+    (synopsis "Python bindings to FreeDesktop.org Secret Service API")
+    (description
+     "@code{python-secretstorage} provides a way for securely storing passwords
+and other secrets.  It uses D-Bus Secret Service API that is supported by GNOME
+Keyring (since version 2.30) and KSecretsService.  SecretStorage supports most
+of the functions provided by Secret Service, including creating and deleting
+items and collections, editing items, locking and unlocking collections
+(asynchronous unlocking is also supported).")
+    (license license:bsd-3)))
+
+(define-public python-jeepney
+  (package
+    (name "python-jeepney")
+    (version "0.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "jeepney" version))
+        (sha256
+         (base32
+          "1fz9lb5fl831sijg2j0sbki698j2z6awbblas7mz3gp9jz2xi9hb"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-testpath" ,python-testpath)
+       ("python-tornado" ,python-tornado)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://gitlab.com/takluyver/jeepney")
+    (synopsis "Low-level, pure Python DBus protocol wrapper")
+    (description
+     "This is a low-level, pure Python DBus protocol client.  It has an
+I/O-free core, and integration modules for different event loops.")
+    (license license:expat)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index daa57888bb..7c52a2e506 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -8249,36 +8249,22 @@ be set via config files and/or environment variables.")
 provides utilities for common tasks involving decorators and context
 managers.  It also contains additional features that are not part of
 the standard library.")
+    (properties `((python2-variant . ,(delay python2-contextlib2))))
     (license license:psfl)))
 
 (define-public python2-contextlib2
-  (package
-    (name "python2-contextlib2")
-    (version "0.5.5")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "contextlib2" version))
-       (sha256
-        (base32
-         "0j6ad6lwwyc9kv71skj098v5l7x5biyj2hs4lc5x1kcixqcr97sh"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _ (invoke "python" "test_contextlib2.py" "-v"))))))
-    (native-inputs
-     `(("python2-unittest2" ,python2-unittest2)))
-    (home-page "http://contextlib2.readthedocs.org/")
-    (synopsis "Tools for decorators and context managers")
-    (description "This module is primarily a backport of the Python
-3.2 contextlib to earlier Python versions.  Like contextlib, it
-provides utilities for common tasks involving decorators and context
-managers.  It also contains additional features that are not part of
-the standard library.")
-    (license license:psfl)))
+  (let ((base (package-with-python2
+               (strip-python2-variant python-contextlib2))))
+    (package
+      (inherit base)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+           (replace 'check
+             (lambda _ (invoke "python" "test_contextlib2.py" "-v")))))))
+      (native-inputs
+       `(("python2-unittest2" ,python2-unittest2))))))
 
 (define-public python-texttable
   (package
@@ -10314,25 +10300,24 @@ are optionally backed by a C extension built on librdkafka.")
   (package-with-python2 python-pykafka))
 
 (define-public python-wcwidth
- (package
-  (name "python-wcwidth")
-  (version "0.1.7")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "wcwidth" version))
-      (sha256
-        (base32
-          "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
-  (build-system python-build-system)
-  (home-page "https://github.com/jquast/wcwidth")
-  (synopsis "Measure number of terminal column cells of wide-character codes")
-  (description "Wcwidth measures the number of terminal column cells of
+  (package
+    (name "python-wcwidth")
+    (version "0.1.8")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "wcwidth" version))
+              (sha256
+               (base32
+                "1a1pzds3xzfylm5mnc5f6c1p8kiig0daqjc9gygd9rc3cj53x2zj"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/jquast/wcwidth")
+    (synopsis "Measure number of terminal column cells of wide-character codes")
+    (description "Wcwidth measures the number of terminal column cells of
 wide-character codes.  It is useful for those implementing a terminal emulator,
 or programs that carefully produce output to be interpreted by one.  It is a
 Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
 specified in POSIX.1-2001 and POSIX.1-2008.")
-  (license license:expat)))
+    (license license:expat)))
 
 (define-public python2-wcwidth
   (package-with-python2 python-wcwidth))
@@ -13075,14 +13060,14 @@ several utilities, as well as an API for building localization tools.")
 (define-public python-packaging
   (package
     (name "python-packaging")
-    (version "19.2")
+    (version "20.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "packaging" version))
         (sha256
          (base32
-          "0izwlz9h0bw171a1chr311g2y7n657zjaf4mq4rgm8pp9lbj9f98"))))
+          "1y2ip3a4ykkpgnwgn85j6hkspcl0cg3mzms97f40mk57vwqq67gy"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index d35dfb6a0b..8fa9a91ef0 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
@@ -588,7 +588,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 
 
 ;; qt used to refer to the monolithic Qt 5.x package
-(define-deprecated qt qtbase qtbase)
+(define-deprecated qt qtbase)
 
 
 (define-public qtsvg
diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm
index fad995bc88..7be18cb8e3 100644
--- a/gnu/packages/rsync.scm
+++ b/gnu/packages/rsync.scm
@@ -41,7 +41,7 @@
    (version "3.1.3")
    (source (origin
             (method url-fetch)
-            (uri (string-append "http://rsync.samba.org/ftp/rsync/src/rsync-"
+            (uri (string-append "https://rsync.samba.org/ftp/rsync/src/rsync-"
                                 version ".tar.gz"))
             (sha256
              (base32
@@ -57,7 +57,7 @@ Its delta-transfer algorithm reduces the amount of data sent over the network
 by sending only the differences between the source files and the existing
 files in the destination.")
    (license license:gpl3+)
-   (home-page "http://rsync.samba.org/")))
+   (home-page "https://rsync.samba.org/")))
 
 (define-public librsync
   (package
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index cf80237f11..72cc70e3c4 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -290,6 +290,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
               (method git-fetch)
               (uri (git-reference (url home-page) (commit version)))
               (file-name (git-file-name name version))
+              (patches (search-patches "jsoncpp-fix-inverted-case.patch"))
               (sha256
                (base32
                 "037d1b1qdmn3rksmn1j71j26bv4hkjv7sn7da261k853xb5899sg"))))
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index edc6135fbd..a57e0151ca 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -197,6 +197,7 @@ which allows users to view a desktop computing environment.")
               (uri (string-append
                 "https://www.spice-space.org/download/releases/"
                 "spice-server/spice-" version ".tar.bz2"))
+              (patches (search-patches "spice-fix-test-armhf.patch"))
               (sha256
                (base32
                 "19r999py9v9c7md2bb8ysj809ag1hh6djl1ik8jcgx065s4b60xj"))))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index e3c4353b2e..7bf0bcd941 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 André <eu@euandre.org>
@@ -151,14 +151,14 @@ as well as the classic centralized workflow.")
    (name "git")
    ;; XXX When updating Git, check if the special 'git-source' input to cgit
    ;; needs to be updated as well.
-   (version "2.24.1")
+   (version "2.25.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0ql5z31vgl7b785gwrf00m129mg7zi9pa65n12ij3mpxx3f28gvj"))))
+              "1l58v42aazj0x9276gk8r9mwyl9pgp9w99aakz4xfhzv7wd2jq60"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -171,7 +171,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "1yzy5jikkv67ynp576j926kg8zdldh8j4b57l0ixcnjdcyr4lc17"))))
+            "1gf8b1k6i4dlwskwq7dd2vz9bzc3m1qnknj9daq2vp39vmxpg5nk"))))
       ;; For subtree documentation.
       ("asciidoc" ,asciidoc)
       ("docbook-xsl" ,docbook-xsl)
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index ec31489d48..a26eeb20cc 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -524,7 +524,7 @@ port=" (number->string port) "
                   (for-each
                    (lambda (sql)
                      (call-with-input-file
-                         (string-append #$mysql "/share/mysql/" sql)
+                         (string-append #$mysql:lib "/share/mysql/" sql)
                        (lambda (in) (dump-port in p))))
                    '("mysql_system_tables.sql"
                      "mysql_performance_tables.sql"
diff --git a/gnu/system.scm b/gnu/system.scm
index 7033671526..01baa248a2 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -574,7 +574,6 @@ of PROVENANCE-SERVICE-TYPE to its services."
          iw wireless-tools
 
          iproute
-         net-tools                        ; XXX: remove when Inetutils suffices
          man-db
          info-reader                     ;the standalone Info reader (no Perl)
 
diff --git a/guix/build/asdf-build-system.scm b/guix/build/asdf-build-system.scm
index 1be2b3c5f0..f3f4b49bcf 100644
--- a/guix/build/asdf-build-system.scm
+++ b/guix/build/asdf-build-system.scm
@@ -79,6 +79,15 @@ valid."
   (let ((source (getcwd))
         (target (source-directory out name))
         (system-path (string-append out %system-install-prefix)))
+    ;; SBCL keeps the modification time of the source file in the compiled
+    ;; file, and the source files might just have been patched by a custom
+    ;; phase. Therefore we reset the modification time of all the source
+    ;; files before compiling.
+    (for-each (lambda (file)
+                (let ((s (lstat file)))
+                  (unless (eq? (stat:type s) 'symlink)
+                    (utime file 0 0 0 0))))
+              (find-files source #:directories? #t))
     (copy-recursively source target #:keep-mtime? #t)
     (mkdir-p system-path)
     (for-each
diff --git a/guix/deprecation.scm b/guix/deprecation.scm
index 468b2e9b7b..04d4d4a337 100644
--- a/guix/deprecation.scm
+++ b/guix/deprecation.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,6 +44,7 @@
     "Define a deprecated variable or procedure, along these lines:
 
   (define-deprecated foo bar 42)
+  (define-deprecated old new)
   (define-deprecated (baz x y) qux (qux y x))
 
 This will write a deprecation warning to GUIX-WARNING-PORT."
@@ -73,7 +74,10 @@ This will write a deprecation warning to GUIX-WARNING-PORT."
                     #'(real args (... ...)))
                    (id
                     (identifier? #'id)
-                    #'real))))))))))
+                    #'real)))))))
+      ((_ variable alias)
+       (identifier? #'alias)
+       #'(define-deprecated variable alias alias)))))
 
 (define-syntax-rule (define-deprecated/alias deprecated replacement)
   "Define as an alias a deprecated variable, procedure, or macro, along
diff --git a/guix/lint.scm b/guix/lint.scm
index ed2f06bc64..d2f24c61f8 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -300,6 +300,7 @@ of a package, and INPUT-NAMES, a list of package specifications such as
             "gobject-introspection"
             "googletest-source"
             "groff"
+            "gtk-doc"
             "help2man"
             "intltool"
             "itstool"
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 29b75aa875..77d7fa2dc7 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -392,7 +392,14 @@ bool LocalStore::isActiveTempFile(const GCState & state,
 void LocalStore::deleteGarbage(GCState & state, const Path & path)
 {
     unsigned long long bytesFreed;
-    deletePath(path, bytesFreed);
+
+    /* When deduplication is on, store items always have at least two links:
+       the one at PATH, and one in /gnu/store/.links.  In that case, increase
+       bytesFreed when PATH has two or fewer links.  */
+    size_t linkThreshold =
+	(settings.autoOptimiseStore && isStorePath(path)) ? 2 : 1;
+
+    deletePath(path, bytesFreed, linkThreshold);
     state.results.bytesFreed += bytesFreed;
 }
 
@@ -419,13 +426,14 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path)
     }
 
     if (state.options.maxFreed != ULLONG_MAX) {
-	double fraction = state.results.bytesFreed + size
-	    / state.options.maxFreed;
+	auto freed = state.results.bytesFreed + state.bytesInvalidated;
+	double fraction = ((double) freed) / (double) state.options.maxFreed;
 	unsigned int percentage = (fraction > 1. ? 1. : fraction) * 100.;
 	printMsg(lvlInfo, format("[%1%%%] deleting '%2%'") % percentage % path);
     } else {
-	size_t total = (state.results.bytesFreed + size) / (1024 * 1024);
-	printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % total % path);
+	auto freed = state.results.bytesFreed + state.bytesInvalidated;
+	freed /=  1024ULL * 1024ULL;
+	printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % freed % path);
     }
 
     state.results.paths.insert(path);
diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc
index faba3789df..fb2dfad1f7 100644
--- a/nix/libutil/util.cc
+++ b/nix/libutil/util.cc
@@ -305,7 +305,7 @@ void writeLine(int fd, string s)
 }
 
 
-static void _deletePath(const Path & path, unsigned long long & bytesFreed)
+static void _deletePath(const Path & path, unsigned long long & bytesFreed, size_t linkThreshold)
 {
     checkInterrupt();
 
@@ -324,7 +324,7 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed)
     struct stat st = lstat(path);
 #endif
 
-    if (!S_ISDIR(st.st_mode) && st.st_nlink == 1)
+    if (!S_ISDIR(st.st_mode) && st.st_nlink <= linkThreshold)
 	bytesFreed += st.st_size;
 
     if (S_ISDIR(st.st_mode)) {
@@ -335,7 +335,7 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed)
         }
 
         for (auto & i : readDirectory(path))
-            _deletePath(path + "/" + i.name, bytesFreed);
+            _deletePath(path + "/" + i.name, bytesFreed, linkThreshold);
     }
 #undef st_mode
 #undef st_size
@@ -353,12 +353,12 @@ void deletePath(const Path & path)
 }
 
 
-void deletePath(const Path & path, unsigned long long & bytesFreed)
+void deletePath(const Path & path, unsigned long long & bytesFreed, size_t linkThreshold)
 {
     startNest(nest, lvlDebug,
         format("recursively deleting path `%1%'") % path);
     bytesFreed = 0;
-    _deletePath(path, bytesFreed);
+    _deletePath(path, bytesFreed, linkThreshold);
 }
 
 
diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh
index 6a6e07c478..9e3c14bdd4 100644
--- a/nix/libutil/util.hh
+++ b/nix/libutil/util.hh
@@ -94,10 +94,12 @@ void writeLine(int fd, string s);
 
 /* Delete a path; i.e., in the case of a directory, it is deleted
    recursively.  Don't use this at home, kids.  The second variant
-   returns the number of bytes and blocks freed. */
+   returns the number of bytes and blocks freed, and 'linkThreshold' denotes
+   the number of links under which a file is accounted for in 'bytesFreed'.  */
 void deletePath(const Path & path);
 
-void deletePath(const Path & path, unsigned long long & bytesFreed);
+void deletePath(const Path & path, unsigned long long & bytesFreed,
+    size_t linkThreshold = 1);
 
 /* Create a temporary directory. */
 Path createTempDir(const Path & tmpRoot = "", const Path & prefix = "nix",