summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--build-aux/test-env.in6
-rw-r--r--doc/guix.texi5
-rw-r--r--etc/news.scm86
-rw-r--r--gnu/local.mk6
-rw-r--r--gnu/packages.scm4
-rw-r--r--gnu/packages/admin.scm47
-rw-r--r--gnu/packages/antivirus.scm6
-rw-r--r--gnu/packages/aspell.scm18
-rw-r--r--gnu/packages/bioconductor.scm89
-rw-r--r--gnu/packages/bioinformatics.scm88
-rw-r--r--gnu/packages/commencement.scm119
-rw-r--r--gnu/packages/compression.scm16
-rw-r--r--gnu/packages/connman.scm15
-rw-r--r--gnu/packages/cran.scm27
-rw-r--r--gnu/packages/crypto.scm43
-rw-r--r--gnu/packages/databases.scm26
-rw-r--r--gnu/packages/debug.scm22
-rw-r--r--gnu/packages/diffoscope.scm16
-rw-r--r--gnu/packages/django.scm5
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm546
-rw-r--r--gnu/packages/enlightenment.scm14
-rw-r--r--gnu/packages/fabric-management.scm58
-rw-r--r--gnu/packages/fontutils.scm51
-rw-r--r--gnu/packages/game-development.scm4
-rw-r--r--gnu/packages/games.scm26
-rw-r--r--gnu/packages/gcc.scm4
-rw-r--r--gnu/packages/gnome.scm68
-rw-r--r--gnu/packages/graphics.scm7
-rw-r--r--gnu/packages/gtk.scm8
-rw-r--r--gnu/packages/hardware.scm4
-rw-r--r--gnu/packages/haskell-apps.scm4
-rw-r--r--gnu/packages/linux.scm89
-rw-r--r--gnu/packages/lisp.scm125
-rw-r--r--gnu/packages/mail.scm5
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/maths.scm27
-rw-r--r--gnu/packages/messaging.scm26
-rw-r--r--gnu/packages/mpi.scm4
-rw-r--r--gnu/packages/music.scm97
-rw-r--r--gnu/packages/networking.scm39
-rw-r--r--gnu/packages/openstack.scm9
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/password-utils.scm20
-rw-r--r--gnu/packages/patches/emacs-magit-log-format-author-margin.patch72
-rw-r--r--gnu/packages/patches/mumps-shared-libseq.patch42
-rw-r--r--gnu/packages/patches/mumps-shared-mumps.patch63
-rw-r--r--gnu/packages/patches/mumps-shared-pord.patch77
-rw-r--r--gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch16
-rw-r--r--gnu/packages/patches/ruby-concurrent-test-arm.patch36
-rw-r--r--gnu/packages/perl-check.scm5
-rw-r--r--gnu/packages/perl.scm58
-rw-r--r--gnu/packages/poedit.scm5
-rw-r--r--gnu/packages/python-web.scm44
-rw-r--r--gnu/packages/python-xyz.scm190
-rw-r--r--gnu/packages/ruby.scm53
-rw-r--r--gnu/packages/terminals.scm5
-rw-r--r--gnu/packages/text-editors.scm4
-rw-r--r--gnu/packages/tor.scm25
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/vim.scm14
-rw-r--r--gnu/packages/virtualization.scm12
-rw-r--r--gnu/packages/vpn.scm6
-rw-r--r--gnu/packages/web.scm5
-rw-r--r--gnu/packages/wm.scm74
-rw-r--r--gnu/packages/xdisorg.scm6
-rw-r--r--gnu/packages/xorg.scm6
-rw-r--r--gnu/services/getmail.scm4
-rw-r--r--guix/build-system/asdf.scm13
-rw-r--r--guix/build-system/gnu.scm59
-rw-r--r--guix/gexp.scm2
-rw-r--r--guix/inferior.scm38
-rw-r--r--guix/lint.scm16
-rw-r--r--guix/profiles.scm3
-rw-r--r--guix/scripts/offload.scm22
-rw-r--r--guix/scripts/pull.scm2
-rw-r--r--guix/ssh.scm10
-rw-r--r--guix/store.scm12
-rw-r--r--nix/libstore/gc.cc7
-rw-r--r--nix/libstore/local-store.cc17
-rw-r--r--nix/libstore/local-store.hh2
-rw-r--r--nix/libstore/store-api.hh4
-rw-r--r--nix/nix-daemon/nix-daemon.cc24
-rw-r--r--tests/containers.scm1
-rw-r--r--tests/guix-daemon.sh21
-rw-r--r--tests/store.scm13
86 files changed, 2198 insertions, 787 deletions
diff --git a/build-aux/test-env.in b/build-aux/test-env.in
index b1470bb953..59ab58cc94 100644
--- a/build-aux/test-env.in
+++ b/build-aux/test-env.in
@@ -50,10 +50,8 @@ then
     # it or its parent directories.  See <http://bugs.gnu.org/17935>.
     NIX_STORE_DIR="`cd "@GUIX_TEST_ROOT@/store"; pwd -P`"
 
-    NIX_LOCALSTATE_DIR="@GUIX_TEST_ROOT@/var"
     GUIX_LOG_DIRECTORY="@GUIX_TEST_ROOT@/var/log/guix"
     GUIX_DATABASE_DIRECTORY="@GUIX_TEST_ROOT@/db"
-    NIX_ROOT_FINDER="@abs_top_builddir@/nix/scripts/list-runtime-roots"
 
     # Choose a PID-dependent name to allow for parallel builds.  Note
     # that the directory name must be chosen so that the socket's file
@@ -97,8 +95,8 @@ then
     NIXPKGS="@NIXPKGS@"
 
     export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR		\
-	NIX_LOCALSTATE_DIR GUIX_LOG_DIRECTORY GUIX_STATE_DIRECTORY GUIX_DATABASE_DIRECTORY	\
-	NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL		\
+	GUIX_LOG_DIRECTORY GUIX_STATE_DIRECTORY GUIX_DATABASE_DIRECTORY	\
+	GUIX_BINARY_SUBSTITUTE_URL				\
         GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES			\
         GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME NIXPKGS
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 6703c2756c..6eccbb971f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5662,9 +5662,6 @@ The URL to the home-page of the package, as a string.
 The list of systems supported by the package, as strings of the form
 @code{architecture-kernel}, for example @code{"x86_64-linux"}.
 
-@item @code{maintainers} (default: @code{'()})
-The list of maintainers of the package, as @code{maintainer} objects.
-
 @item @code{location} (default: source location of the @code{package} form)
 The source location of the package.  It is useful to override this when
 inheriting from another package, in which case this field is not
@@ -17417,7 +17414,7 @@ Defaults to @samp{#f}.
 
 @deftypevr {@code{getmail-options-configuration} parameter} non-negative-integer delete-after
 Getmail will delete messages this number of days after seeing them, if
-they have not been delivered.  This means messages will be left on the
+they have been delivered.  This means messages will be left on the
 server this number of days after delivering them.  A value of @samp{0}
 disabled this feature.
 
diff --git a/etc/news.scm b/etc/news.scm
index e19dec38dd..80f7ba522c 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -9,6 +9,92 @@
 (channel-news
  (version 0)
 
+ (entry (commit "81c580c8664bfeeb767e2c47ea343004e88223c7")
+        (title (en "Insecure @file{/var/guix/profiles/per-user} permissions (CVE-2019-18192)")
+               (de "Sicherheitslücke in @file{/var/guix/profiles/per-user}-Berechtigungen (CVE-2019-18192)")
+               (fr "Permissions laxistes pour @file{/var/guix/profiles/per-user} (CVE-2019-18192)")
+               (nl "Onveilige @file{/var/guix/profiles/per-user}-rechten (CVE-2019-18192)"))
+        (body
+         (en "The default user profile, @file{~/.guix-profile}, points to
+@file{/var/guix/profiles/per-user/$USER}.  Until now,
+@file{/var/guix/profiles/per-user} was world-writable, allowing the
+@command{guix} command to create the @code{$USER} sub-directory.
+
+On a multi-user system, this allowed a malicious user to create and populate
+that @code{$USER} sub-directory for another user that had not yet logged in.
+Since @code{/var/@dots{}/$USER} is in @code{$PATH}, the target user could end
+up running attacker-provided code.  See
+@uref{https://issues.guix.gnu.org/issue/37744} for more information.
+
+This is now fixed by letting @command{guix-daemon} create these directories on
+behalf of users and removing the world-writable permissions on
+@code{per-user}.  On multi-user systems, we recommend updating the daemon now.
+To do that, run @code{sudo guix pull} if you're on a foreign distro, or run
+@code{guix pull && sudo guix system reconfigure @dots{}} on Guix System.  In
+both cases, make sure to restart the service afterwards, with @code{herd} or
+@code{systemctl}.")
+         (de "Das voreingestellte Benutzerprofil, @file{~/.guix-profile},
+verweist auf @file{/var/guix/profiles/per-user/$USER}.  Bisher hatte jeder
+Benutzer Schreibzugriff auf @file{/var/guix/profiles/per-user}, wodurch der
+@command{guix}-Befehl berechtigt war, das Unterverzeichnis @code{$USER}
+anzulegen.
+
+Wenn mehrere Benutzer dasselbe System benutzen, kann ein böswilliger Benutzer
+so das Unterverzeichnis @code{$USER} und Dateien darin für einen anderen
+Benutzer anlegen, wenn sich dieser noch nie angemeldet hat.  Weil
+@code{/var/…/$USER} auch in @code{$PATH} aufgeführt ist, kann der betroffene
+Nutzer dazu gebracht werden, vom Angreifer vorgegebenen Code auszuführen.
+Siehe @uref{https://issues.guix.gnu.org/issue/37744} für weitere
+Informationen.
+
+Der Fehler wurde nun behoben, indem @command{guix-daemon} diese Verzeichnisse
+jetzt selbst anlegt statt das dem jeweiligen Benutzerkonto zu überlassen.  Der
+Schreibzugriff auf @code{per-user} wird den Benutzern entzogen.  Für Systeme
+mit mehreren Benutzern empfehlen wir, den Daemon jetzt zu aktualisieren.  Auf
+einer Fremddistribution führen Sie dazu @code{sudo guix pull} aus; auf einem
+Guix-System führen Sie @code{guix pull && sudo guix system reconfigure …}
+aus.  Achten Sie in beiden Fällen darauf, den Dienst mit @code{herd} oder
+@code{systemctl} neuzustarten.")
+         (fr "Le profil utilisateur par défaut, @file{~/.guix-profile},
+pointe vers @file{/var/guix/profiles/per-user/$USER}.  Jusqu'à
+maintenant, @file{/var/guix/profiles/per-user} était disponible en
+écriture pour tout le monde, ce qui permettait à la commande
+@command{guix} de créér le sous-répertoire @code{$USER}.
+
+Sur un système multi-utilisateur, cela permet à un utilisateur
+malveillant de créer et de remplir le sous-répertoire @code{USER} pour
+n'importe quel utilisateur qui ne s'est jamais connecté.  Comme
+@code{/var/@dots{}/$USER} fait partie de @code{$PATH}, l'utilisateur
+ciblé pouvait exécuter des programmes fournis par l'attaquant.  Voir
+@uref{https://issues.guix.gnu.org/issue/37744} pour plus de détails.
+
+Cela est maintenant corrigé en laissant à @command{guix-daemon} le soin
+de créer ces répertoire pour le compte des utilisateurs et en
+supprimant les permissions en écriture pour tout le monde sur
+@code{per-user}.  Nous te recommandons de mettre à jour le démon
+immédiatement.  Pour cela, lance @code{sudo guix pull} si tu es sur
+une distro externe ou @code{guix pull && sudo guix system reconfigure
+@dots{}} sur le système Guix.  Dans tous les cas, assure-toi ensuite de
+redémarrer le service avec @code{herd} ou @code{systemctl}.")
+         (nl "Het standaard gebruikersprofiel, @file{~/.guix-profile}, verwijst
+naar @file{/var/guix/profiles/per-user/$USER}.  Tot op heden kon om het even wie
+in @file{/var/guix/profiles/per-user} schrijven, wat het @command{guix}-commando
+toestond de @code{$USER} submap aan te maken.
+
+Op systemen met meerdere gebruikers kon hierdoor een kwaadaardige gebruiker een
+@code{$USER} submap met inhoud aanmaken voor een andere gebruiker die nog niet
+was ingelogd.  Omdat @code{/var/@dots{}/$USER} zich in @code{$PATH} bevindt,
+kon het doelwit zo code uitvoeren die door de aanvaller zelf werd aangeleverd.
+Zie @uref{https://issues.guix.gnu.org/issue/37744} voor meer informatie.
+
+Dit probleem is nu verholpen: schrijven door iedereen in @code{per-user} is niet
+meer toegestaan en @command{guix-daemon} maakt zelf submappen aan namens de
+gebruiker.  Op systemen met meerdere gebruikers raden we aan om
+@code{guix-daemon} nu bij te werken.  Op Guix System kan dit met
+@code{guix pull && sudo guix system reconfigure @dots{}}, op andere distributies
+met @code{sudo guix pull}.  Herstart vervolgens in beide gevallen
+@code{guix-daemon} met @code{herd} of @code{systemctl}.")))
+
  (entry (commit "5f3f70391809f8791c55c05bd1646bc58508fa2c")
         (title (en "GNU C Library upgraded")
                (de "GNU-C-Bibliothek aktualisiert")
diff --git a/gnu/local.mk b/gnu/local.mk
index 287ba10f7b..f3712d8920 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -794,6 +794,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
   %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
+  %D%/packages/patches/emacs-magit-log-format-author-margin.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
   %D%/packages/patches/emacs-undohist-ignored.patch	\
@@ -1132,6 +1133,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/mtools-mformat-uninitialized.patch	\
   %D%/packages/patches/mumble-1.2.19-abs.patch			\
   %D%/packages/patches/mumps-build-parallelism.patch		\
+  %D%/packages/patches/mumps-shared-libseq.patch		\
+  %D%/packages/patches/mumps-shared-mumps.patch			\
+  %D%/packages/patches/mumps-shared-pord.patch			\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/mutt-store-references.patch		\
@@ -1298,8 +1302,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/rtags-separate-rct.patch			\
   %D%/packages/patches/racket-store-checksum-override.patch	\
   %D%/packages/patches/ruby-rubygems-276-for-ruby24.patch	\
-  %D%/packages/patches/ruby-concurrent-ignore-broken-test.patch	\
-  %D%/packages/patches/ruby-concurrent-test-arm.patch		\
   %D%/packages/patches/ruby-rack-ignore-failing-test.patch      \
   %D%/packages/patches/ruby-safe-yaml-add-require-time.patch	\
   %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 6633631c1f..959777ff8f 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -228,9 +228,7 @@ package module."
                              #:outputs (package-outputs package)
                              #:location (package-location package)
                              #:supported?
-                             (->bool
-                              (member (%current-system)
-                                      (package-supported-systems package)))
+                             (->bool (supported-package? package))
                              #:deprecated?
                              (->bool
                               (package-superseded package))))
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3dc5f35af0..82f1bb4eb8 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -1128,7 +1128,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.27")
+    (version "1.8.28p1")
     (source (origin
               (method url-fetch)
               (uri
@@ -1138,7 +1138,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "1h1f7v9pv0rzp14cxzv8kaa8mdd717fbqv83l7c5dvvi8jwnisvv"))
+                "09xhx2k7j6wlqs9bl7snamd4k6lkyv9ycjwdspgbbqrimy25mfi3"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1839,13 +1839,13 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.8.1")
+    (version "2.8.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
-        (base32 "0ia4x17ywym3r1m96ar4h0wc2xlylhbjp6x4wzwkh4p2i0x1vmg1"))))
+        (base32 "11k94ifp42psivzx147xwbmq1ak7qnjdgkb6c1xz53nfapkh754f"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
@@ -1880,21 +1880,16 @@ import re
 sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
 ")))
              #t))
-         (add-after 'wrap 'fix-symlinks
+         (add-after 'install 'replace-symlinks
            (lambda* (#:key outputs #:allow-other-keys)
+             ;; Replace symlinks with duplicate copies of the ansible
+             ;; executable.
              (let ((out (assoc-ref outputs "out")))
                (for-each
                 (lambda (subprogram)
-                  ;; The symlinks point to the ansible wrapper script. Make
-                  ;; them point to the real executable (.ansible-real).
-                  (delete-file (string-append out "/bin/.ansible-" subprogram "-real"))
-                  (symlink (string-append out "/bin/.ansible-real")
-                           (string-append out "/bin/.ansible-" subprogram "-real"))
-                  ;; The wrapper scripts of the symlinks invoke the ansible
-                  ;; wrapper script. Fix them to invoke the correct executable.
-                  (substitute* (string-append out "/bin/ansible-" subprogram)
-                    (("/bin/ansible")
-                     (string-append "/bin/.ansible-" subprogram "-real"))))
+                  (delete-file (string-append out "/bin/ansible-" subprogram))
+                  (copy-file (string-append out "/bin/ansible")
+                             (string-append out "/bin/ansible-" subprogram)))
                 (list "config" "console" "doc" "galaxy"
                       "inventory" "playbook" "pull" "vault")))
              #t)))))
@@ -2611,22 +2606,24 @@ Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
                                           environment-variable-names)
                (for-each
                 (lambda (env-name)
-                  (let* ((env-value (getenv env-name))
-                         (search-path (search-path-as-string->list env-value))
-                         (new-search-path (filter filter-predicate
-                                                  search-path))
-                         (new-env-value (list->search-path-as-string
-                                         new-search-path ":")))
-                    (setenv env-name new-env-value)))
+                  (when (getenv env-name)
+                    (let* ((env-value (getenv env-name))
+                           (search-path (search-path-as-string->list env-value))
+                           (new-search-path (filter filter-predicate
+                                                    search-path))
+                           (new-env-value (list->search-path-as-string
+                                           new-search-path ":")))
+                      (setenv env-name new-env-value))))
                 environment-variable-names))
+             (setenv "CROSS_CPATH" (getenv "CPATH"))
              (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
              (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
              (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
              (filter-environment! cross?
-              '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
+              '("CROSS_CPATH" "CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
                 "CROSS_LIBRARY_PATH"))
              (filter-environment! (lambda (e) (not (cross? e)))
-              '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
+              '("CPATH" "C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
                 "LIBRARY_PATH"))
              #t))
          (replace 'build
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 5127ba1741..a723e8bebe 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -44,14 +44,14 @@
 (define-public clamav
   (package
     (name "clamav")
-    (version "0.101.2")
+    (version "0.102.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.clamav.net/downloads/production/"
                                   "clamav-" version ".tar.gz"))
               (sha256
                (base32
-                "0d3n4y8i5q594h4cjglmvpk4jd73r9ajpp1bvq5lr9zpdzgyn4ha"))
+                "1qdyj4r39266bmbsd2nwyspm20k9wh3c30awrg8c54y78s61izj8"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 4f6f1a1cca..9482e641cf 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -166,10 +166,10 @@ dictionaries, including personal ones.")
 
 (define-public aspell-dict-de
   (aspell-dictionary "de" "German"
-                     #:version "20030222-1"
+                     #:version "20161207-7-0"
                      #:sha256
                      (base32
-                      "01p92qj66cqb346gk7hjfynaap5sbcn85xz07kjfdq623ghr8v5s")))
+                      "0wamclvp66xfmv5wff96v6gdlnfv4y8lx3f8wvxyzm5imwgms4n2")))
 
 (define-public aspell-dict-da
   (aspell-dictionary "da" "Danish"
@@ -189,10 +189,10 @@ dictionaries, including personal ones.")
 
 (define-public aspell-dict-en
   (aspell-dictionary "en" "English"
-                     #:version "2018.04.16-0"
+                     #:version "2019.10.06-0"
                      #:sha256
                      (base32
-                      "0bxxdzkk9g27plg22y9qzsx9cfjw3aa29w5bmzs561qc9gkp247i")))
+                      "1zai9wrqwgb9z9vfgb22qhrvxvg73jg0ix44j1khm2f6m96lncr4")))
 
 (define-public aspell-dict-eo
   (aspell-dictionary "eo" "Esperanto"
@@ -291,19 +291,17 @@ dictionaries, including personal ones.")
 
 (define-public aspell-dict-pt-br
   (aspell-dictionary "pt_BR" "Brazilian Portuguese"
-                     #:version "20090702-0"
-                     #:prefix "aspell6-"
+                     #:version "20131030-12-0"
                      #:sha256
                      (base32
-                      "1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p")))
+                      "1xqlpk21s93c6blkdnpk7l62q9fxjvzdv2x86chl8p2x1gdrj3gb")))
 
 (define-public aspell-dict-pt-pt
   (aspell-dictionary "pt_PT" "Portuguese"
-                     #:version "20070510-0"
-                     #:prefix "aspell6-"
+                     #:version "20190329-1-0"
                      #:sha256
                      (base32
-                      "1mnr994cwlag6shy8865ky99lymysiln07mbldcncahg90dagdxq")))
+                      "0ld0d0ily4jqifjfsxfv4shbicz6ymm2gk56fq9gbzra1j4qnw75")))
 
 (define-public aspell-dict-ru
   (aspell-dictionary "ru" "Russian"
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 7b0405427c..2187572117 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -832,6 +833,36 @@ Disease Ontology.")
 using data from public repositories.")
     (license license:artistic2.0)))
 
+(define-public r-phastcons100way-ucsc-hg19
+  (package
+    (name "r-phastcons100way-ucsc-hg19")
+    (version "3.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "phastCons100way.UCSC.hg19"
+                              version 'annotation))
+       (sha256
+        (base32
+         "1jmc4k4zgkx5vr2plnidnd9bidlwlb0kr7mjg60cqjw7dq7jl1fa"))))
+    (properties
+     `((upstream-name . "phastCons100way.UCSC.hg19")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-bsgenome" ,r-bsgenome)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-genomicscores" ,r-genomicscores)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/phastCons100way.UCSC.hg19")
+    (synopsis "UCSC phastCons conservation scores for hg19")
+    (description
+     "This package provides UCSC phastCons conservation scores for the human
+genome (hg19) calculated from multiple alignments with other 99 vertebrate
+species.")
+    (license license:artistic2.0)))
+
 
 ;;; Experiment data
 
@@ -6048,3 +6079,61 @@ attributable to individual, tissue, time point, or technical variables.  The
 package includes dream differential expression analysis for repeated
 measures.")
     (license license:gpl2+)))
+
+(define-public r-htqpcr
+  (package
+    (name "r-htqpcr")
+    (version "1.38.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "HTqPCR" version))
+       (sha256
+        (base32
+         "09xgj797f0qsbm4jswxw7ijjwa4jxg06bfkq66xfhbvascyyrhg7"))))
+    (properties `((upstream-name . "HTqPCR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-biobase" ,r-biobase)
+       ("r-gplots" ,r-gplots)
+       ("r-limma" ,r-limma)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)))
+    (home-page "http://www.ebi.ac.uk/bertone/software")
+    (synopsis "Automated analysis of high-throughput qPCR data")
+    (description
+     "Analysis of Ct values from high throughput quantitative real-time
+PCR (qPCR) assays across multiple conditions or replicates.  The input data
+can be from spatially-defined formats such ABI TaqMan Low Density Arrays or
+OpenArray; LightCycler from Roche Applied Science; the CFX plates from Bio-Rad
+Laboratories; conventional 96- or 384-well plates; or microfluidic devices
+such as the Dynamic Arrays from Fluidigm Corporation.  HTqPCR handles data
+loading, quality assessment, normalization, visualization and parametric or
+non-parametric testing for statistical significance in Ct values between
+features (e.g.  genes, microRNAs).")
+    (license license:artistic2.0)))
+
+(define-public r-unifiedwmwqpcr
+  (package
+    (name "r-unifiedwmwqpcr")
+    (version "1.20.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "unifiedWMWqPCR" version))
+       (sha256
+        (base32
+         "10j70bp5y1x2prz2iagqmwf04y79yqinq08wz4ilh8wggb9f7l8a"))))
+    (properties
+     `((upstream-name . "unifiedWMWqPCR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-htqpcr" ,r-htqpcr)))
+    (home-page "https://bioconductor.org/packages/unifiedWMWqPCR")
+    (synopsis "Unified Wilcoxon-Mann Whitney Test for differential expression in qPCR data")
+    (description
+     "This packages implements the unified Wilcoxon-Mann-Whitney Test for qPCR
+data.  This modified test allows for testing differential expression in qPCR
+data.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index a8662dc238..1e8e357187 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -15261,3 +15261,91 @@ and/or unmapped/clipped reads to a separate FASTQ file. When marking
 duplicates, samblaster will require approximately 20MB of memory per 1M read
 pairs.")
     (license license:expat)))
+
+(define-public r-velocyto
+  (let ((commit "d7790346cb99f49ab9c2b23ba70dcf9d2c9fc350")
+        (revision "1"))
+    (package
+      (name "r-velocyto")
+      (version (git-version "0.6" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/velocyto-team/velocyto.R.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16wqf70j7rd7pay2q513iyz12i8n9vrpg1bisah4lddbcpx5dz1n"))))
+      (build-system r-build-system)
+      (inputs
+       `(("boost" ,boost)))
+      (propagated-inputs
+       `(("r-hdf5r" ,r-hdf5r)
+         ("r-mass" ,r-mass)
+         ("r-mgcv" ,r-mgcv)
+         ("r-pcamethods" ,r-pcamethods)
+         ("r-rcpp" ,r-rcpp)
+         ("r-rcpparmadillo" ,r-rcpparmadillo)
+         ;; Suggested packages
+         ("r-rtsne" ,r-rtsne)
+         ("r-cluster" ,r-cluster)
+         ("r-abind" ,r-abind)
+         ("r-h5" ,r-h5)
+         ("r-biocgenerics" ,r-biocgenerics)
+         ("r-genomicalignments" ,r-genomicalignments)
+         ("r-rsamtools" ,r-rsamtools)
+         ("r-edger" ,r-edger)
+         ("r-igraph" ,r-igraph)))
+      (home-page "http://velocyto.org")
+      (synopsis "RNA velocity estimation in R")
+      (description
+       "This package provides basic routines for estimation of gene-specific
+transcriptional derivatives and visualization of the resulting velocity
+patterns.")
+      (license license:gpl3))))
+
+(define-public methyldackel
+  (package
+    (name "methyldackel")
+    (version "0.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dpryan79/MethylDackel.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "10gh8k0ca92kywnrw5pkacq3g6r8s976s12k8jhp8g3g49q9a97g"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:make-flags
+       (list "CC=gcc"
+             (string-append "prefix="
+                            (assoc-ref %outputs "out") "/bin/"))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("install MethylDackel \\$\\(prefix\\)" match)
+                (string-append "install -d $(prefix); " match)))
+             #t)))))
+    (inputs
+     `(("htslib" ,htslib)
+       ("zlib" ,zlib)))
+    ;; Needed for tests
+    (native-inputs
+     `(("python" ,python-wrapper)))
+    (home-page "https://github.com/dpryan79/MethylDackel")
+    (synopsis "Universal methylation extractor for BS-seq experiments")
+    (description
+     "MethylDackel will process a coordinate-sorted and indexed BAM or CRAM
+file containing some form of BS-seq alignments and extract per-base
+methylation metrics from them.  MethylDackel requires an indexed fasta file
+containing the reference genome as well.")
+    ;; See https://github.com/dpryan79/MethylDackel/issues/85
+    (license license:expat)))
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index d113acaba8..54746151ce 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1798,15 +1798,16 @@ exec " gcc "/bin/" program
          ("bison" ,bison-boot0)
          ,@(%boot0-inputs))))))
 
+(define with-boot0
+  (package-with-explicit-inputs %boot0-inputs
+                                %bootstrap-guile))
+
 (define gnumach-headers-boot0
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs gnumach-headers
-                                 (%boot0-inputs)
-                                 (current-source-location)
-                                 #:guile %bootstrap-guile)))
+  (with-boot0 (package-with-bootstrap-guile gnumach-headers)))
 
 (define mig-boot0
-  (let* ((mig (package (inherit mig)
+  (let* ((mig (package
+                 (inherit (package-with-bootstrap-guile mig))
                  (native-inputs `(("bison" ,bison-boot0)
                                   ("flex" ,flex-boot0)))
                  (inputs `(("flex" ,flex-boot0)))
@@ -1814,42 +1815,32 @@ exec " gcc "/bin/" program
                   `(#:configure-flags
                     `(,(string-append "LDFLAGS=-Wl,-rpath="
                                       (assoc-ref %build-inputs "flex") "/lib/")))))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs mig (%boot0-inputs)
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+    (with-boot0 mig)))
 
 (define hurd-headers-boot0
   (let ((hurd-headers (package (inherit hurd-headers)
                         (native-inputs `(("mig" ,mig-boot0)))
                         (inputs '()))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs hurd-headers (%boot0-inputs)
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+    (with-boot0 (package-with-bootstrap-guile hurd-headers))))
 
 (define hurd-minimal-boot0
   (let ((hurd-minimal (package (inherit hurd-minimal)
                         (native-inputs `(("mig" ,mig-boot0)))
                         (inputs '()))))
-    (package-with-bootstrap-guile
-     (package-with-explicit-inputs hurd-minimal (%boot0-inputs)
-                                   (current-source-location)
-                                   #:guile %bootstrap-guile))))
+    (with-boot0 (package-with-bootstrap-guile hurd-minimal))))
 
 (define hurd-core-headers-boot0
   (mlambda ()
     "Return the Hurd and Mach headers as well as initial Hurd libraries for
 the bootstrap environment."
-    (package-with-bootstrap-guile
-     (package (inherit hurd-core-headers)
-              (arguments `(#:guile ,%bootstrap-guile
-                           ,@(package-arguments hurd-core-headers)))
-              (inputs
-               `(("gnumach-headers" ,gnumach-headers-boot0)
-                 ("hurd-headers" ,hurd-headers-boot0)
-                 ("hurd-minimal" ,hurd-minimal-boot0)
-                 ,@(%boot0-inputs)))))))
+    (package (inherit (package-with-bootstrap-guile hurd-core-headers))
+             (arguments `(#:guile ,%bootstrap-guile
+                          ,@(package-arguments hurd-core-headers)))
+             (inputs
+              `(("gnumach-headers" ,gnumach-headers-boot0)
+                ("hurd-headers" ,hurd-headers-boot0)
+                ("hurd-minimal" ,hurd-minimal-boot0)
+                ,@(%boot0-inputs))))))
 
 (define* (kernel-headers-boot0 #:optional (system (%current-system)))
   (match system
@@ -2365,14 +2356,14 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   `(("bash" ,bash-final)
     ,@(alist-delete "bash" (%boot3-inputs))))
 
+(define with-boot4
+  (package-with-explicit-inputs %boot4-inputs %bootstrap-guile))
+
 (define-public guile-final
   ;; This package must be public because other modules refer to it.  However,
   ;; mark it as hidden so that 'fold-packages' ignores it.
-  (package-with-bootstrap-guile
-   (package-with-explicit-inputs (hidden-package guile-2.2/fixed)
-                                 %boot4-inputs
-                                 (current-source-location)
-                                 #:guile %bootstrap-guile)))
+  (with-boot4 (hidden-package
+               (package-with-bootstrap-guile guile-2.2/fixed))))
 
 (define glibc-utf8-locales-final
   ;; Now that we have GUILE-FINAL, build the UTF-8 locales.  They are needed
@@ -2384,10 +2375,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     (inherit glibc-utf8-locales)
     (native-inputs
      `(("glibc" ,glibc-final)
-       ("gzip"
-        ,(package-with-explicit-inputs gzip %boot4-inputs
-                                       (current-source-location)
-                                       #:guile %bootstrap-guile))))))
+       ("gzip" ,(with-boot4 gzip))))))
 
 (define-public ld-wrapper
   ;; The final 'ld' wrapper, which uses the final Guile and Binutils.
@@ -2403,35 +2391,45 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   `(("locales" ,glibc-utf8-locales-final)
     ,@(%boot4-inputs)))
 
+(define with-boot5
+  (package-with-explicit-inputs %boot5-inputs))
+
 (define gnu-make-final
   ;; The final GNU Make, which uses the final Guile.
-  (package-with-explicit-inputs (package-with-bootstrap-guile gnu-make)
-                                (lambda _
-                                  `(("guile" ,guile-final)
-                                    ,@(%boot5-inputs)))
-                                (current-source-location)))
+  ;; FIXME: This is a mistake: we shouldn't be propagating GUILE-FINAL to
+  ;; PKG-CONFIG.
+  ;; TODO: Fix that on the next rebuild cycle.
+  (let ((pkg-config (package
+                      (inherit pkg-config)
+                      (inputs `(("guile" ,guile-final)
+                                ,@(%boot5-inputs)))
+                      (arguments
+                       `(#:implicit-inputs? #f
+                         ,@(package-arguments pkg-config))))))
+    (package
+      (inherit (package-with-bootstrap-guile gnu-make))
+      (inputs `(("guile" ,guile-final)
+                ,@(%boot5-inputs)))
+      (native-inputs `(("pkg-config" ,pkg-config)))
+      (arguments
+       `(#:implicit-inputs? #f
+         ,@(package-arguments gnu-make))))))
+
 
 (define coreutils-final
   ;; The final Coreutils.  Treat them specially because some packages, such as
   ;; Findutils, keep a reference to the Coreutils they were built with.
-  (package-with-explicit-inputs (package-with-bootstrap-guile coreutils)
-                                %boot5-inputs
-                                (current-source-location)
-
-                                ;; Use the final Guile, linked against the
-                                ;; final libc with working iconv, so that
-                                ;; 'substitute*' works well when touching
-                                ;; test files in Gettext.
-                                #:guile guile-final))
+  (with-boot5 (package-with-bootstrap-guile coreutils)
+              ;; Use the final Guile, linked against the
+              ;; final libc with working iconv, so that
+              ;; 'substitute*' works well when touching
+              ;; test files in Gettext.
+              ))
 
 (define grep-final
   ;; The final grep.  Gzip holds a reference to it (via zgrep), so it must be
   ;; built before gzip.
-  (let ((grep (package-with-explicit-inputs
-               (package-with-bootstrap-guile grep)
-               %boot5-inputs
-               (current-source-location)
-               #:guile guile-final)))
+  (let ((grep (with-boot5 (package-with-bootstrap-guile grep))))
     (package/inherit grep
                      (inputs (alist-delete "pcre" (package-inputs grep)))
                      (native-inputs `(("perl" ,perl-boot0))))))
@@ -2442,12 +2440,12 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     ("grep" ,grep-final)
     ,@(%boot5-inputs)))
 
+(define with-boot6
+  (package-with-explicit-inputs %boot6-inputs))
+
 (define sed-final
   ;; The final sed.
-  (let ((sed (package-with-explicit-inputs (package-with-bootstrap-guile sed)
-                                           %boot6-inputs
-                                           (current-source-location)
-                                           #:guile guile-final)))
+  (let ((sed (with-boot6 (package-with-bootstrap-guile sed))))
     (package/inherit sed (native-inputs `(("perl" ,perl-boot0))))))
 
 (define-public %final-inputs
@@ -2455,8 +2453,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
   ;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are
   ;; used for origins that have patches, thereby avoiding circular
   ;; dependencies.
-  (let ((finalize (compose (cut package-with-explicit-inputs <> %boot6-inputs
-                                (current-source-location))
+  (let ((finalize (compose with-boot6
                            package-with-bootstrap-guile)))
     `(,@(map (match-lambda
                ((name package)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index fc17fd3919..1dcd297e8d 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1898,13 +1898,17 @@ The specification of the Brotli Compressed Data Format is defined in RFC 7932.")
     (version "1.03")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://www.oberhumer.com/opensource/"
+             (uri (string-append "https://www.oberhumer.com/opensource/"
                                  name "/download/" name "-" version ".tar.gz"))
              (sha256
               (base32
                "0j036lkwsxvm15gr29n8wn07cqq79dswjs9k54939ms5zngjjrdq"))))
     (build-system gnu-build-system)
-    (home-page "http://www.oberhumer.com/opensource/ucl/")
+    (arguments
+     `(;; UCL 1.03 fails to build with newer C standards.
+       #:configure-flags '("CFLAGS=-std=gnu90"
+                           "--enable-shared" "--disable-static")))
+    (home-page "https://www.oberhumer.com/opensource/ucl/")
     (synopsis "Portable lossless data compression library")
     (description "UCL implements a number of compression algorithms that
 achieve an excellent compression ratio while allowing fast decompression.
@@ -1927,9 +1931,11 @@ decompression is a little bit slower.")
                "08anybdliqsbsl6x835iwzljahnm9i7v26icdjkcv33xmk6p5vw1"))
              (patches (search-patches "upx-fix-CVE-2017-15056.patch"))))
     (build-system gnu-build-system)
-    (native-inputs `(("perl" ,perl)
-                     ("ucl" ,ucl)))
-    (inputs `(("zlib" ,zlib)))
+    (native-inputs
+     `(("perl" ,perl)))
+    (inputs
+     `(("ucl" ,ucl)
+       ("zlib" ,zlib)))
     (arguments
      `(#:make-flags
        (list "all"
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index df5aa7bb6d..1185561bc4 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -56,11 +56,10 @@
     (arguments
      `(#:configure-flags
        (list "--enable-nmcompat"
-             "--enable-polkit"
+             "--enable-polkit" ; Polkit doesn't need to be present at build time.
              "--enable-openconnect"
              "--enable-openvpn"
              "--enable-vpnc"
-             "--enable-pptp"
              "--enable-l2tp"
              "--localstatedir=/var"
              (string-append
@@ -69,13 +68,12 @@
               "--with-dbusdatadir=" (assoc-ref %outputs "out") "/share"))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("python" ,python-2)))
+       ("python" ,python-wrapper)))
     (inputs
      `(("dbus" ,dbus)
        ("glib" ,glib)
        ("gnutls" ,gnutls)
        ("iptables" ,iptables)
-       ("polkit" ,polkit)        ;so connman can be used by unprivileged users
        ("readline" ,readline)
        ;; These inputs are needed for connman to include the interface to
        ;; these technologies so IF they are installed they can be used.
@@ -84,7 +82,8 @@
        ("openvpn" ,openvpn)
        ("ppp" ,ppp)
        ("vpnc" ,vpnc)
-       ("wpa-supplicant" ,wpa-supplicant)))
+       ("wpa-supplicant" ,wpa-supplicant)
+       ("xl2tpd" ,xl2tpd)))
     (home-page "https://01.org/connman")
     (synopsis "Connection management daemon")
     (description "Connman provides a daemon for managing Internet connections.
@@ -126,9 +125,9 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.")
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs
      `(("efl" ,efl)
-       ("python-2" ,python-2)
-       ("python2-dbus" ,python2-dbus)
-       ("python2-efl" ,python2-efl)))
+       ("python" ,python-wrapper)
+       ("python-dbus" ,python-dbus)
+       ("python-efl" ,python-efl)))
     (home-page "https://www.enlightenment.org")
     (synopsis "Connman User Interface written using the EFL")
     (description
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 88453c3faf..2088aef015 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1531,14 +1531,13 @@ processes.  Most of its code is based on the @code{psutil} Python package.")
 (define-public r-pkgbuild
   (package
     (name "r-pkgbuild")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pkgbuild" version))
        (sha256
-        (base32
-         "0y4i85axwajrk67h3w6fiqfm6wxmhn3dr240w5l2nvqg3ahpxc8q"))))
+        (base32 "0xnlz6ivhkbmncg9hfw5p69lm4rjy3wn5lyxmygxyf4rrfnnqwxx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
@@ -10886,21 +10885,20 @@ Differences with other sparse matrix packages are:
 (define-public r-fields
   (package
     (name "r-fields")
-    (version "9.8-6")
+    (version "9.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fields" version))
        (sha256
-        (base32
-         "07x95vk1idjfzi5ikn0ijal754mssdmgr1p4nswmx9w3i5ndcqaz"))))
+        (base32 "1qbqdqq76xgnlbc9z643zn4s8k493h1jmav2f465hfvp63306br6"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-maps" ,r-maps)
        ("r-spam" ,r-spam)))
     (native-inputs
      `(("gfortran" ,gfortran)))
-    (home-page "http://www.image.ucar.edu/fields")
+    (home-page "https://www.image.ucar.edu/fields")
     (synopsis "Tools for spatial data")
     (description
      "This is a package for curve, surface and function fitting with an
@@ -11129,14 +11127,13 @@ But it can also be used to do data analysis for small scale data sets.")
 (define-public r-cmprsk
   (package
     (name "r-cmprsk")
-    (version "2.2-8")
+    (version "2.2-9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cmprsk" version))
        (sha256
-        (base32
-         "1nacbzx950ygaqgnj0949skhwpzar5i3xlscd44jsimk2gsppx6z"))))
+        (base32 "0xhgfg5b4i9skkaxp7gzkafgg5bqs5q1rp4hpw2jjmykg2nifn99"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-survival" ,r-survival)))
@@ -11633,14 +11630,13 @@ identifying outliers.")
 (define-public r-bayesm
   (package
     (name "r-bayesm")
-    (version "3.1-3")
+    (version "3.1-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayesm" version))
        (sha256
-        (base32
-         "041ach2f2vrqzd5kz17v7wmkjz6z8cjjihpk4qvczm4cr9z85r2i"))))
+        (base32 "154glks7rsjkza0sfi1kj7wj727py9sl1ba6sswflwmwc9n226q6"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
@@ -15302,14 +15298,13 @@ function and interfaces to external frameworks.")
 (define-public r-covr
   (package
     (name "r-covr")
-    (version "3.3.1")
+    (version "3.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "covr" version))
        (sha256
-        (base32
-         "0fvd7v53w11x6kaw61hbml8n1j2ck9l2fv2wvqdsg689xic9rqcs"))))
+        (base32 "160w0m2d06kdd8dar57lpph39rxx55xwncbpl3b21l7j9drh1s5f"))))
     (properties `((upstream-name . "covr")))
     (build-system r-build-system)
     (propagated-inputs
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 9592d18011..a8f60f1665 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2018 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>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -210,6 +211,15 @@ OpenBSD tool of the same name.")
              (copy-recursively (assoc-ref inputs "googletest-source")
                                "vendor/github.com/google/googletest")
              #t))
+         (add-before 'configure 'patch-CMakeLists.txt
+           (lambda _
+             ;; Prevent CMake from adding libc on the system include path.
+             ;; Otherwise it will interfere with the libc used by GCC and
+             ;; ultimately cause #include_next errors.
+             (substitute* "CMakeLists.txt"
+               (("include_directories \\(SYSTEM \\$\\{Intl_INCLUDE_DIRS\\}\\)")
+                ""))
+             #t))
          (add-before 'check 'make-unittests
            (lambda _
              (invoke "make" "unittests"))))))
@@ -974,3 +984,36 @@ pre-shared keys out of band.  It is designed to handle large amounts of data
 quickly by using all your CPU cores and hardware acceleration.")
     (home-page "https://github.com/vstakhov/hpenc")
     (license license:bsd-3)))
+
+(define-public minisign
+  (package
+    (name "minisign")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://github.com/jedisct1/minisign/releases/download/"
+                       version "/minisign-" version ".tar.gz"))
+       (sha256
+        (base32
+         "10hhgwxf9rcdlr00shrkcyxndrc22dh5lj8k5z27xg3nc0jba3hk"))))
+    (build-system cmake-build-system)
+    (arguments
+     ; No test suite
+     `(#:tests? #f))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libsodium" ,libsodium)))
+    (home-page "https://jedisct1.github.io/minisign")
+    (synopsis "Tool to sign files and verify signatures")
+    (description
+     "Minisign is a dead simple tool to sign files and verify signatures.  It is
+portable, lightweight, and uses the highly secure Ed25519 public-key signature
+system.  Signature written by minisign can be verified using OpenBSD's
+signify tool: public key files and signature files are compatible.  However,
+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)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index ca2ca9bda0..f32728b902 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -377,14 +377,13 @@ the API, and provides features such as:
 (define-public python-pylibmc
   (package
     (name "python-pylibmc")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pylibmc" version))
        (sha256
-        (base32
-         "1n6nvvhl0g52gpzzwdj1my6049xljkfwyxxygnwda9smrbj7pyay"))))
+        (base32 "1sg7d9j0v6g3xg3finf4l1hb72c13vcyyi6rqrc9shbx903d93ca"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -400,10 +399,8 @@ the API, and provides features such as:
      `(("libmemcached" ,libmemcached)
        ("zlib" ,zlib)
        ("cyrus-sasl" ,cyrus-sasl)))
-    (home-page
-     "http://sendapatch.se/projects/pylibmc/")
-    (synopsis
-     "Python client for memcached")
+    (home-page "http://sendapatch.se/projects/pylibmc/")
+    (synopsis "Python client for memcached")
     (description
      "@code{pylibmc} is a client in Python for memcached.  It is a wrapper
 around TangentOrg’s libmemcached library, and can be used as a drop-in
@@ -1179,17 +1176,15 @@ for example from a shell script.")
 (define-public sqitch
   (package
     (name "sqitch")
-    (version "0.9999")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-"
-             version
-             ".tar.gz"))
+             "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-v"
+             version ".tar.gz"))
        (sha256
-        (base32
-         "1cvj8grs3bzc4g7dw1zc26g4biv1frav18sq0fkvi2kk0q1aigzm"))))
+        (base32 "0p4wraqiscvwmmsvfqfy65blgsilwpvd9zj4d2zvm2xdx70ncr7l"))))
     (build-system perl-build-system)
     (arguments
      '(#:phases
@@ -1233,7 +1228,6 @@ for example from a shell script.")
        ("perl-dbi" ,perl-dbi)
        ("perl-devel-stacktrace" ,perl-devel-stacktrace)
        ("perl-encode-locale" ,perl-encode-locale)
-       ("perl-file-homedir" ,perl-file-homedir)
        ("perl-hash-merge" ,perl-hash-merge)
        ("perl-ipc-run3" ,perl-ipc-run3)
        ("perl-ipc-system-simple" ,perl-ipc-system-simple)
@@ -3113,13 +3107,13 @@ NumPy, and other traditional Python scientific computing packages.")
 (define-public python-crate
   (package
     (name "python-crate")
-    (version "0.23.0")
+    (version "0.23.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "crate" version))
               (sha256
                (base32
-                "0s3s7yg4m2zflg9q96aibwb5hizsn10ql63fsj6h5z624qkavnlp"))))
+                "0ngmlvi320c5gsxab0s7qgq0ck4jdlcwvb6lbjhnfprafdp56vvx"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-urllib3" ,python-urllib3)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 82631deef6..3372fc89e1 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -264,21 +264,21 @@ down the road.")
       (license asl2.0))))
 
 (define-public stress-make
-  (let ((commit "506e6cfd98d165f22bee91c408b7c20117a682c4")
-        (revision "0"))                 ;No official source distribution
+  (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100")
+        (revision "1"))                 ;No official source distribution
     (package
       (name "stress-make")
-      (version (string-append "1.0-" revision "." (string-take commit 7)))
+      (version (git-version "1.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/losalamos/stress-make.git")
+               (url "https://github.com/lanl/stress-make.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
-           "1j330yqhc7plwin04qxbh8afpg5nfnw1xvnmh8rk6mmqg9w6ik70"))))
+           "1z1yiwnqyzv3v6152fnjbfh2lr8q8fi5xxfdclnr8l8sd4c1rasp"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -308,8 +308,12 @@ down the road.")
                             (which "sh"))))))
              (add-before 'configure 'repack-make
                (lambda _
-                 (invoke "tar" "cJf" "./make.tar.xz" ,make-dir)))))))
-      (home-page "https://github.com/losalamos/stress-make")
+                 (invoke "tar" "cJf" "./make.tar.xz" ,make-dir)))
+             (add-before 'build 'setup-go
+               ;; The Go cache is required starting in Go 1.12, and it needs
+               ;; to be writable.
+               (lambda _ (setenv "GOCACHE" "/tmp/go-cache") #t))))))
+      (home-page "https://github.com/lanl/stress-make")
       (synopsis "Expose race conditions in Makefiles")
       (description
        "Stress Make is a customized GNU Make that explicitly manages the order
@@ -320,7 +324,7 @@ Stress Make, then it is likely that the @code{Makefile} contains no race
 conditions.")
       ;; stress-make wrapper is under BSD-3-modifications-must-be-indicated,
       ;; and patched GNU Make is under its own license.
-      (license (list (non-copyleft "COPYING.md")
+      (license (list (non-copyleft "LICENSE.md")
                      (package-license gnu-make))))))
 
 (define-public zzuf
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 15d5a5787e..23acf0aeb8 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -67,7 +67,7 @@
   #:use-module (ice-9 match))
 
 (define-public diffoscope
-  (let ((version "125"))
+  (let ((version "126"))
     (package
       (name "diffoscope")
       (version version)
@@ -79,7 +79,7 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "02kwisp9j63w27hhcwpdhg66dgxzz61q4fcyfz8z4hwlz6r0gyqy"))))
+                  "0lmn2116g5l05nns8qd2kwsnnd144zrqhs53fsr88inzf0mkqwhj"))))
       (build-system python-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
@@ -90,18 +90,6 @@
                       (lambda _
                         (substitute* "setup.py"
                           (("'python-magic',") ""))))
-                    ;; Patch in support for known tools
-                    (add-after 'unpack 'add-known-tools
-                      (lambda _
-                        (substitute* "diffoscope/external_tools.py"
-                          (("'arch': 'enjarify'},")
-                           "'arch': 'enjarify', 'guix': 'enjarify'},"))
-                        (substitute* "diffoscope/external_tools.py"
-                          (("'arch': 'python-jsbeautifier'},")
-                           "'arch': 'python-jsbeautifier', 'guix': 'python-jsbeautifier'},"))
-                        (substitute* "diffoscope/external_tools.py"
-                          (("'arch': 'wabt'},")
-                           "'arch': 'wabt', 'guix': 'wabt'},"))))
                     ;; This test is broken because our `file` package has a
                     ;; bug in berkeley-db file type detection.
                     (add-after 'unpack 'remove-berkeley-test
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 8e43447921..a8e0277e95 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -1008,14 +1008,13 @@ forms using your favorite CSS framework, without writing template code.")
 (define-public python-django-override-storage
   (package
     (name "python-django-override-storage")
-    (version "0.1.4")
+    (version "0.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "django-override-storage" version))
        (sha256
-        (base32
-         "0sqz1mh0yn8b1bzz2gr2azfiynljigm5gkzavp5n17zd3j2jg57x"))))
+        (base32 "022arq94lxnlyykn8wvfnkykhi2dldnsn93pa2i41na551i0wpiv"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-django" ,python-django)))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 5167cf8379..b072a43e11 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -109,7 +109,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
 (define-public isc-bind
   (package
     (name "bind")
-    (version "9.14.6")
+    (version "9.14.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -117,7 +117,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
                     "/bind-" version ".tar.gz"))
               (sha256
                (base32
-                "1zpd47ckn5lf4qbscfkj7krngwn2gwsp961v5401h3lhxm0a0rw9"))))
+                "07998nx0yv3xy8c62b1ira9qygsgvpljwcgb47ypzxq8b57gb86f"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9c3596db28..3d2395ce4b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -54,6 +54,7 @@
 ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2019 Stephen Webber <montokapro@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -280,6 +281,11 @@ on stdout instead of using a socket as the Emacsclient does.")
                 (sha256
                  (base32
                   "16qx0404l05q1m6w7y5j8ck1z5nfmpinm00w0p2yh1hn5zzwy6dd"))
+                ;; FIXME: emacs-forge uses a function defined in this patch,
+                ;; which is newer than the current commit.
+                (patches
+                 (search-patches
+                  "emacs-magit-log-format-author-margin.patch"))
                 (modules '((guix build utils)))
                 (snippet
                  '(begin
@@ -565,8 +571,8 @@ deliver data to mobile and web apps.")
 
 (define-public emacs-ghub
   ;; We need a newer commit to avoid problems in emacs-forge.
-  (let ((commit "cf0b13aeba4df3798e49c205cac2d8fefd53a137")
-        (revision "1"))
+  (let ((commit "e19cd86ca4768a6d89285123933baa3f1460d696")
+        (revision "2"))
     (package
       (name "emacs-ghub")
       (version (git-version "3.2.0" revision commit))
@@ -578,7 +584,7 @@ deliver data to mobile and web apps.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0fzayvcysk80vv4q332axcjf80x6gsnpcbl0svmpb017ii6wxhid"))))
+                  "1d6f8sxlsl0fpkzwbpnaw77d1a5pkg63zfvf6a2fxir357lbdizx"))))
       (build-system emacs-build-system)
       (arguments
        `(#:phases
@@ -590,6 +596,7 @@ deliver data to mobile and web apps.")
        `(("texinfo" ,texinfo)))
       (propagated-inputs
        `(("dash" ,emacs-dash)
+         ("emacs-let-alist" ,emacs-let-alist)
          ("treepy" ,emacs-treepy)))
       (home-page "https://github.com/magit/ghub")
       (synopsis "Emacs client libraries for the APIs of various Git forges")
@@ -652,8 +659,8 @@ from within Emacs.")
     (license license:gpl3+)))
 
 (define-public emacs-unpackaged-el
-  (let ((commit "c0d58cf81e531b2b6fa1bd5dd612dc1b93d4d186")
-        (revision "2"))
+  (let ((commit "746801a677ada6cd6fa076e423aa0953779f3fad")
+        (revision "3"))
     (package
       (name "emacs-unpackaged-el")
       (version (git-version "0" revision commit))
@@ -666,7 +673,7 @@ from within Emacs.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0y3sgvd51l4pb3acps92bazfk49da6nim1f1hyxzy1ravg4kbw83"))))
+           "0jvb2ci0h0lj368qhbff3pzkxj3nhlligpbkjzi525k9rkjgm7l8"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -2339,6 +2346,34 @@ Stack Overflow, Super User, and other StackExchange sites.")
 files and directories.")
     (license license:gpl3+)))
 
+(define-public emacs-fringe-helper
+  (let ((commit "ef4a9c023bae18ec1ddd7265f1f2d6d2e775efdd")
+        (revision "1"))
+    (package
+      (name "emacs-fringe-helper")
+      (version (git-version "1.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nschum/fringe-helper.el.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0ra9rc53l1gvkqank8apasl3r7wz2yfjrcvmfk3wpxhh24ppxv9d"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:tests? #t
+         #:test-command '("emacs" "--batch"
+                          "-l" "tests.el"
+                          "-f" "ert-run-tests-batch-and-exit")))
+      (home-page "https://github.com/nschum/fringe-helper.el")
+      (synopsis "Helper functions for fringe bitmaps")
+      (description
+       "This package allows fringe bitmaps to be defined with a visual string
+representation.")
+      (license license:gpl2+))))
+
 (define-public emacs-git-gutter
   (package
     (name "emacs-git-gutter")
@@ -2365,6 +2400,79 @@ Git, Mercurial, Subversion and Bazaar are supported, and many parts of the
 display and behaviour is easily customisable.")
     (license license:gpl3+)))
 
+(define-public emacs-git-gutter-fringe
+  (let ((commit "16226caab44174301f1659f7bf8cc67a76153445")
+        (revision "1"))
+    (package
+      (name "emacs-git-gutter-fringe")
+      (version (git-version "0.23" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/syohex/git-gutter-fringe.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1y77gjl0yznamdj0f55d418zb75k22izisjg7ikvrfsl2yfqf3pm"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-git-gutter" ,emacs-git-gutter)
+         ("emacs-fringe-helper" ,emacs-fringe-helper)))
+      (home-page "https://github.com/syohex/git-gutter-fringe")
+      (synopsis "See and manage hunks of text in a version control system")
+      (description
+       "This package extends @code{git-gutter} to use the fringe area of a
+window.")
+      (license license:gpl3+))))
+
+(define-public emacs-git-link
+  (package
+    (name "emacs-git-link")
+    (version "0.7.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sshaw/git-link.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04xa6lp8wkjb6zs096bf4sz124grcjj15xv1h009bmn2j95rggj6"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("make" "test")))
+    (home-page "https://github.com/sshaw/git-link")
+    (synopsis "Create links for files and commits in GitHub/GitLab/etc. repos")
+    (description
+     "@code{git-link} returns the URL for the current buffer's file location
+at the current line number or active region.  @code{git-link-commit} returns
+the URL for a commit.  URLs are added to the kill ring.")
+    (license license:gpl3+)))
+
+(define-public emacs-apheleia
+  (package
+    (name "emacs-apheleia")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/raxod502/apheleia.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04pls7zahy4jfkikv6fvd9vfpm4glhyanmmkx79hgi9pwdv966rf"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/raxod502/apheleia")
+    (synopsis "Reformat buffer stably")
+    (description
+     "This package allows for a buffer to be reformatted without moving point,
+so that running a formatting tool like @code{Prettier} or @code{Black} upon
+saving won't move point back to the beginning of the buffer.")
+    (license license:gpl3+)))
+
 (define-public emacs-git-timemachine
   (package
     (name "emacs-git-timemachine")
@@ -3354,14 +3462,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.19")
+    (version "0.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "0cpby8f088cqb5mpd756a2mb706x763k15cg2xdmmsxl415k3yw4"))))
+                "03mmb1zvbqlsznl5agq8k3xrlcz310vnsa2zn0y8myanm4ra51zm"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -4835,29 +4943,33 @@ them easier to distinguish from other, less important buffers.")
     (license license:expat)))
 
 (define-public emacs-prescient
-  (package
-    (name "emacs-prescient")
-    (version "3.3")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/raxod502/prescient.el/")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1wqk1g8fjpcbpiz32k7arnisncd4n9zs84dn3qn9y8ggjzldqy91"))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-company" ,emacs-company)
-       ("emacs-ivy" ,emacs-ivy)))
-    (home-page "https://github.com/raxod502/prescient.el/")
-    (synopsis "Library that sorts and filters lists of candidates")
-    (description
-     "This package provides a library for sorting and filtering, as well as
+  ;; XXX: emacs-ivy introduced a commit that disables sorting for counsel-M-x
+  ;; by default, so we use a non-release version ahead by one commit
+  (let ((commit "95056580ed743da92b05aaf86f943ee05600c28d")
+        (revision "1"))
+    (package
+      (name "emacs-prescient")
+      (version (git-version "3.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/raxod502/prescient.el/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "06qxs8p66jr4gg9m1gd27v5may32f3n28la56cv4f4prinqyyfj7"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)
+         ("emacs-ivy" ,emacs-ivy)))
+      (home-page "https://github.com/raxod502/prescient.el/")
+      (synopsis "Library that sorts and filters lists of candidates")
+      (description
+       "This package provides a library for sorting and filtering, as well as
 extensions for @code{ivy-mode} and @code{company-mode} that make use of the
 library.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-smartparens
   (package
@@ -5026,15 +5138,14 @@ test tags.  It supports both interactive and non-interactive use.")
 (define-public emacs-load-relative
   (package
     (name "emacs-load-relative")
-    (version "1.3")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/load-relative-"
                            version ".el"))
        (sha256
-        (base32
-         "1hfxb2436jdsi9wfmsv47lkkpa5galjf5q81bqabbsv79rv59dps"))))
+        (base32 "1m37scr82lqqy954fchjxrmdh4lngrl4d1yzxhp3yfjhsydizhrj"))))
     (build-system emacs-build-system)
     (home-page "http://github.com/rocky/emacs-load-relative")
     (synopsis "Emacs Lisp relative file loading related functions")
@@ -5200,59 +5311,54 @@ automatically.")
     (license license:gpl3+)))
 
 (define-public emacs-ivy
-  ;; The latest release version introduced a new feature, swiper-isearch, that
-  ;; generally works well but had some noticeable bugs; this later commit
-  ;; includes fixes for several of them.
-  (let ((commit "79333e9edfee38ec3b367c33711a68bdf7783259")
-        (revision "2"))
-    (package
-      (name "emacs-ivy")
-      (version (git-version "0.12.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/abo-abo/swiper.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0dyclc51sprhmr5fi4lylhwsrn8v1jgyblwk9ly60jj84lj6278z"))))
-      (build-system emacs-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'install-doc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (info (string-append out "/share/info")))
-                 (with-directory-excursion "doc"
-                   (invoke "makeinfo" "ivy.texi")
-                   (install-file "ivy.info" info)
-                   #t))))
-           (add-before 'check 'make-dummy-git-directory
-             (lambda _
-               (mkdir-p ".git")))
-           (add-after 'check 'delete-dummy-git-directory
-             (lambda _
-               (delete-file-recursively ".git"))))
-         #:tests? #t
-         #:test-command '("make" "test")))
-      (propagated-inputs
-       `(("emacs-hydra" ,emacs-hydra)))
-      (native-inputs
-       `(("texinfo" ,texinfo)
-         ("emacs-wgrep" ,emacs-wgrep)))
-      (home-page "http://oremacs.com/swiper/")
-      (synopsis "Incremental vertical completion for Emacs")
-      (description
-       "This package provides @code{ivy-read} as an alternative to
+  (package
+    (name "emacs-ivy")
+    (version "0.13.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/swiper.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ghcwrg8a6r5q6fw2x8s08cwlmnz2d8qjhisnjwbnc2l4cgqpd9p"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (info (string-append out "/share/info")))
+               (with-directory-excursion "doc"
+                 (invoke "makeinfo" "ivy.texi")
+                 (install-file "ivy.info" info)
+                 #t))))
+         (add-before 'check 'make-dummy-git-directory
+           (lambda _
+             (mkdir-p ".git")))
+         (add-after 'check 'delete-dummy-git-directory
+           (lambda _
+             (delete-file-recursively ".git"))))
+       #:tests? #t
+       #:test-command '("make" "test")))
+    (propagated-inputs
+     `(("emacs-hydra" ,emacs-hydra)))
+    (native-inputs
+     `(("texinfo" ,texinfo)
+       ("emacs-wgrep" ,emacs-wgrep)))
+    (home-page "http://oremacs.com/swiper/")
+    (synopsis "Incremental vertical completion for Emacs")
+    (description
+     "This package provides @code{ivy-read} as an alternative to
 @code{completing-read} and similar functions.  No attempt is made to determine
 the best candidate.  Instead, the user can navigate candidates with
 @code{ivy-next-line} and @code{ivy-previous-line}.  The matching is done by
 splitting the input text by spaces and re-building it into a regular
 expression.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-ivy-pass
   (let ((commit "5b523de1151f2109fdd6a8114d0af12eef83d3c5")
@@ -5314,12 +5420,11 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
 (define-public emacs-ivy-rich
   ;; The latest release version has a small mistake that has since been fixed,
   ;; so we use a more recent commit.
-  (let ((commit "f6bfa293c6df0b43cc411876b665816ec3f03d08")
-        (version "0.1.4")
-        (revision "1"))
+  (let ((commit "7a667b135983a1f3ad33d6db8514638e2a3bdfb3")
+        (revision "2"))
     (package
       (name "emacs-ivy-rich")
-      (version (git-version version revision commit))
+      (version (git-version "0.1.4" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -5328,7 +5433,7 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1s8nwwb1z6lkc58g02pi8w99qms948k8d02lw8k8cq47dw87i219"))))
+          (base32 "1v5j6pak2j1wjw19y7rx9rhxif0bj2h47xyl2knfcl6fi4qiqm9y"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-ivy" ,emacs-ivy)))
@@ -5559,8 +5664,8 @@ state and will work even without lispy being enabled.")
       (license license:gpl3+))))
 
 (define-public emacs-lpy
-  (let ((commit "dfd9a0fc8f84674fc669eab2942cfa038d7dc590")
-        (revision "2"))
+  (let ((commit "43b401fe15f0f0d01edb189378b9498121e9f766")
+        (revision "3"))
     (package
       (name "emacs-lpy")
       (version (git-version "0.1.0" revision commit))
@@ -5572,7 +5677,7 @@ state and will work even without lispy being enabled.")
                (commit commit)))
          (sha256
           (base32
-           "15y1fvn1sjngpiqlq090hxqhmxp32f88rspfapwcisxa3hcg5r5a"))
+           "0xj1r7cn1rivaxhvawvmgx9fg3xilpfw4lkf2x2aqplr4s85ijas"))
          (file-name (git-file-name name version))))
       (propagated-inputs
        `(("emacs-zoutline" ,emacs-zoutline)
@@ -6943,8 +7048,8 @@ CIDER).")
 ;; There hasn't been a tag or release since 2016, so we take the latest
 ;; commit.
 (define-public emacs-sly
-  (let ((commit "29dccc0735283897a6dbd97e0b6828a45c2985e2")
-        (revision "2"))
+  (let ((commit "0a3b81770e46b93b9ffd8b9ac5254e0b88d1b13d")
+        (revision "3"))
     (package
       (name "emacs-sly")
       (version (git-version "1.0.0" revision commit))
@@ -6957,7 +7062,7 @@ CIDER).")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0d0skgyqn422130xn8lrdp04m5cjk3sl18w6lf2wrmrndc1crqxk"))))
+           "1q5ga4mxa0ffa4zb2y0zfwmgzjggx4fn1y4bl2x7ac6ynvb32zkj"))))
       (build-system emacs-build-system)
       (native-inputs
        `(("texinfo" ,texinfo)))
@@ -7051,8 +7156,8 @@ sly-quickload command that prompts the user for a package to install. ")
       (license license:gpl3+))))
 
 (define-public emacs-sly-asdf
-  (let ((commit "355739e42c91b9b2339f84453292b938b6d17b0d")
-        (revision "1"))
+  (let ((commit "4e323bc28da2f07fd799b6a31b94fd93848b5f3c")
+        (revision "2"))
     (package
       (name "emacs-sly-asdf")
       (version (git-version "0.1.0" revision commit))
@@ -7066,27 +7171,113 @@ sly-quickload command that prompts the user for a package to install. ")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1plkqh4dj35c3cf8ykan8fcvqmxcdqragh4j6xg0sls27mjjz1bq"))))
+           "16sc33jhc6ik4ilsyqc3cjpi6v0wdmwjlwrzjwd6yym11bscsmad"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-sly" ,emacs-sly)))
       (arguments
-       `(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'fix-autoload
-             ;; TODO: Reported upstream: https://github.com/mmgeorge/sly-asdf/pull/11
-             (lambda _
-               (substitute* "sly-asdf.el"
-                 (("\\(add-to-list 'sly-contribs 'sly-asdf 'append\\)")
-                  "(with-eval-after-load 'sly
- (add-to-list 'sly-contribs 'sly-asdf 'append))")))))))
+       '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)))
       (synopsis "ASDF contrib for SLY")
       (description
        "@command{sly-asdf} is an external contrib for SLY that provides
 additional support for working with ASDF projects.")
       (license license:gpl3+))))
 
+(define-public emacs-sly-named-readtables
+  (let ((commit "a5a42674ccffa97ccd5e4e9742beaf3ea719931f")
+        (revision "1"))
+    (package
+      (name "emacs-sly-named-readtables")
+      (version (git-version "0.1" revision commit))
+      (home-page "https://github.com/joaotavora/sly-named-readtables")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16asd119rzqrlclps2q6yrkis8jy5an5xgzzqvb7jdyq39zxg54q"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-sly" ,emacs-sly)))
+      (arguments
+       '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)))
+      (synopsis "Named-readtables support for SLY")
+      (description
+       "@command{sly-named-readtables} is an external contrib for SLY that
+enables different readtables to be active in different parts of the same
+file.")
+      (license license:gpl3+))))
+
+(define-public emacs-sly-macrostep
+  (let ((commit "be2d24545092d164be1a91031d8881afd29c9ec0")
+        (revision "1"))
+    (package
+      (name "emacs-sly-macrostep")
+      (version (git-version "0.1" revision commit))
+      (home-page "https://github.com/joaotavora/sly-macrostep")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0v8m3zkccpqd2l8m9340y672l2mm3mrry8422nva5kfvpcwdayqb"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-sly" ,emacs-sly)
+         ("emacs-macrostep" ,emacs-macrostep)))
+      (arguments
+       '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)
+         #:phases
+         ;; The package provides autoloads.
+         (modify-phases %standard-phases
+           (delete 'make-autoloads))))
+      (synopsis "Expand Common Lisp macros inside source files with SLY")
+      (description
+       "@command{sly-macrostep} is a SLY contrib for expanding CL macros right
+inside the source file.")
+      (license license:gpl3+))))
+
+(define-public emacs-sly-package-inferred
+  (let ((commit "800e71e2be631422277e2ec77e6d6f6ea20e95ef")
+        (revision "1"))
+    (package
+      (name "emacs-sly-package-inferred")
+      (version (git-version "0.1" revision commit))
+      (home-page "https://github.com/40ants/sly-package-inferred")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1216idyp034nkqddhw4p53jkhhdxa6xnjjmsvijpf4rxqnfqvapg"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-sly" ,emacs-sly)))
+      (arguments
+       '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include)
+         #:phases
+         ;; The package provides autoloads.
+         (modify-phases %standard-phases
+           (delete 'make-autoloads))))
+      (synopsis "Improved package inferred systems support for SLY")
+      (description
+       "@command{sly-package-inferred} is an external contrib for SLY that
+replaces its completion with a function which is better suited for systems
+using package inferred style.")
+      (license license:gpl3+))))
+
 (define-public emacs-lua-mode
   (let ((commit "95c64bb5634035630e8c59d10d4a1d1003265743")
         (revision "2"))
@@ -7158,8 +7349,8 @@ extensions.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-collection
-  (let ((commit "bf4200a57c81c2302a3bf5b2058d74c6f90a3e6c")
-        (revision "11"))
+  (let ((commit "38e916d5d56b391f1ad4c72ad3909491e86cda3c")
+        (revision "12"))
     (package
       (name "emacs-evil-collection")
       (version (git-version "0.0.3" revision commit))
@@ -7171,7 +7362,7 @@ extensions.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "01xw0m5gj14ly42y8ikvldpab5my28sylf6l9gvwd5cf909bd445"))))
+                  "00a1ya3c92ymhfj4ai1ygljnxa147d4cgi6jmvccngicphn99782"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)
@@ -8129,13 +8320,14 @@ been adapted to work with mu4e.")
     (name "emacs-yasnippet")
     (version "0.13.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/joaotavora/yasnippet/"
-                                  "archive/" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/joaotavora/yasnippet.git")
+                    (commit version)))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "12ls2x17agzbrj1xynjbmfa11igqxia4hj4fv6fpr66yci2r1plc"))
+                "0fkkplycrw8f8r30hjjxl1wm7p2irq2ipzzc1g7cc52abaal796p"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -8149,6 +8341,28 @@ been adapted to work with mu4e.")
                      "))\n"))
                   #t))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("emacs" "--batch"
+                        "-l" "yasnippet-tests.el"
+                        "-f" "ert-run-tests-batch-and-exit")
+       ;; FIXME: one failing test
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'make-tests-writable
+           (lambda _
+             (make-file-writable "yasnippet-tests.el")
+             #t))
+         (add-before 'check 'delete-rebinding-test
+           (lambda _
+             (emacs-batch-edit-file "yasnippet-tests.el"
+               `(progn (progn (goto-char (point-min))
+                              (re-search-forward
+                               "ert-deftest test-rebindings")
+                              (beginning-of-line)
+                              (kill-sexp))
+                       (basic-save-buffer)))
+             #t)))))
     (home-page "https://github.com/joaotavora/yasnippet")
     (synopsis "Yet another snippet extension for Emacs")
     (description
@@ -10503,20 +10717,17 @@ let users kill or mark things easily.")
 (define-public emacs-csv-mode
   (package
     (name "emacs-csv-mode")
-    (version "1.7")
+    (version "1.9")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/csv-mode-"
+       (uri (string-append "https://elpa.gnu.org/packages/csv-mode-"
                            version ".el"))
        (sha256
-        (base32
-         "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6"))))
+        (base32 "0sdnyi9in904k49yy5imapypnmk75lv14k9c1yyjhjpalvvh6br1"))))
     (build-system emacs-build-system)
-    (home-page
-     "http://elpa.gnu.org/packages/csv-mode.html")
-    (synopsis
-     "Major mode for editing comma/char separated values")
+    (home-page "https://elpa.gnu.org/packages/csv-mode.html")
+    (synopsis "Major mode for editing comma/char separated values")
     (description
      "This Emacs package implements CSV mode, a major mode for editing records
 in a generalized CSV (character-separated values) format.")
@@ -12588,15 +12799,14 @@ for operating over the contents of Emacs buffers.")
 (define-public emacs-let-alist
   (package
     (name "emacs-let-alist")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://elpa.gnu.org/packages/let-alist-" version ".el"))
        (sha256
-        (base32
-         "0r7b9jni50la1m79kklml11syg8d2fmdlr83pv005sv1wh02jszw"))))
+        (base32 "0szj7vnjzz4zci5fvz7xqgcpi4pzdyyf4qi2s8xar2hi7v3yaawr"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/let-alist.html")
     (synopsis "Easily let-bind values of an assoc-list by their names")
@@ -13553,14 +13763,14 @@ It s customizable: it's easy to add or redefine what exactly consitutes a
 (define-public emacs-darkroom
   (package
     (name "emacs-darkroom")
-    (version "0.1")
+    (version "0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/darkroom-"
                                   version ".el"))
               (sha256
                (base32
-                "0fif8fm1h7x7g16949shfnaik5f5488clsvkf8bi5izpqp3vi6ak"))))
+                "1a528brhz4vckhp77n2c1phkyqdliykpj9kzk3f834f4rwnb5mp0"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/darkroom.html")
     (synopsis "Remove visual distractions and focus on writing")
@@ -16137,6 +16347,36 @@ correctly.")
 @end itemize\n")
     (license license:gpl3+)))
 
+(define-public emacs-helm-sly
+  (package
+    (name "emacs-helm-sly")
+    (version "0.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-helm/helm-sly")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0b2dx9nzh5233lkix3lz81c9cv626lk2hjpcjiikwvyp6y0q92ys"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-sly" ,emacs-sly)))
+    (home-page "https://github.com/emacs-helm/helm-sly")
+    (synopsis "Helm for SLY, a Common Lisp interaction mode for Emacs")
+    (description "Helm-SLY defines a few new commands:
+
+@itemize
+@item helm-sly-list-connections: Yet another Lisp connection list with Helm.
+@item: helm-sly-apropos: Yet another @command{apropos} with Helm.
+@item helm-sly-mini: Like @command{helm-sly-list-connections}, but include an
+extra source of Lisp-related buffers, like the events buffer or the scratch
+buffer.
+@end itemize\n")
+    (license license:gpl3+)))
+
 (define-public emacs-gtk-look
   (package
     (name "emacs-gtk-look")
@@ -17871,7 +18111,7 @@ url-encoded parameters, as well as web sockets.")
        ("emacs-web-server" ,emacs-web-server)))
     (arguments '(#:include '("\\.el$" "\\.html$")))
     (home-page "https://github.com/ancane/markdown-preview-mode")
-    (synopsis "Live web development in Emacs")
+    (synopsis "Preview Markdown files")
     (description "This package provides a minor mode for preview of Markdown
 files, and sends rendered Markdown to a web browser.")
     (license license:gpl3+)))
@@ -18333,7 +18573,7 @@ as:
 (define-public emacs-nhexl-mode
   (package
     (name "emacs-nhexl-mode")
-    (version "1.2")
+    (version "1.4")
     (source
      (origin
        (method url-fetch)
@@ -18341,10 +18581,9 @@ as:
              "https://elpa.gnu.org/packages/nhexl-mode-"
              version ".el"))
        (sha256
-        (base32
-         "031h22p564qdvr9khs05qcba06pmsk68cr7zyc7c04hfr3y3ziaf"))))
+        (base32 "1c2q4w6hkvc7z4026hiqdcsm2scd6q35x7b0dk80h8qicsbi14c8"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/nhexl-mode.html")
+    (home-page "https://elpa.gnu.org/packages/nhexl-mode.html")
     (synopsis "Minor mode to edit files via hex-dump format")
     (description
      "This package implements NHexl mode, a minor mode for editing files
@@ -19169,3 +19408,52 @@ Emacs that integrate with major modes like Org-mode.")
      "Elixir-Mode Provides font-locking, indentation and navigation support
  for the Elixir programming language.")
     (license license:gpl3+)))
+
+(define-public emacs-dimmer
+  (package
+    (name "emacs-dimmer")
+    (version "0.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gonewest818/dimmer.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jv9rrv15nb5hpwcaqlpjj932gyisrkwbv11czkg3v0bn7qn6yif"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/gonewest818/dimmer.el")
+    (synopsis "Visually highlights the selected buffer in Emacs")
+    (description "Dimmer provides a minor mode that indicates which buffer is
+currently active by dimming the faces in the other buffers.  It does this
+nondestructively, and computes the dimmed faces dynamically such that your
+overall color scheme is shown in a muted form without requiring you to define
+what is a \"dim\" version of every face.")
+    (license license:gpl3+)))
+
+(define-public emacs-minibuffer-line
+  (package
+    (name "emacs-minibuffer-line")
+    (version "0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/minibuffer-line-"
+             version
+             ".el"))
+       (sha256
+        (base32 "1ny4iirp26na5118wfgxlv6fxlrdclzdbd9m0lkrv51w0qw7spil"))))
+    (build-system emacs-build-system)
+    (home-page "https://elpa.gnu.org/packages/minibuffer-line.html")
+    (synopsis "Display status info in the minibuffer window")
+    (description
+     "This package lets you display various status information in the
+minibuffer window instead of the mode-line.  Of course, this is only displayed
+when the minibuffer window is not already used for other things (e.g. a
+minibuffer or an each area message).
+
+The contents and aspect is controlled by the @code{minibuffer-line-format}
+variable and the @code{minibuffer-line} face.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 1da6d2aea2..857a8ddd1b 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -25,6 +25,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
@@ -362,6 +363,19 @@ unload unused functionality, with support for touchscreen and suitable for
 embedded systems.")
     (license license:bsd-2)))
 
+(define-public enlightenment-wayland
+  (package
+    (inherit enlightenment)
+    (name "enlightenment-wayland")
+    (arguments
+     (substitute-keyword-arguments (package-arguments enlightenment)
+       ((#:configure-flags flags)
+        `(cons* "-Dwl=true" ,flags))))
+    (inputs
+     `(("wayland-protocols" ,wayland-protocols)
+       ("xorg-server-xwayland" ,xorg-server-xwayland)
+       ,@(package-inputs enlightenment)))))
+
 (define-public python-efl
   (package
     (name "python-efl")
diff --git a/gnu/packages/fabric-management.scm b/gnu/packages/fabric-management.scm
index 83520f1a74..56ff18f4c5 100644
--- a/gnu/packages/fabric-management.scm
+++ b/gnu/packages/fabric-management.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017 Dave Love <fx@gnu.org>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module (guix packages)
   #:use-module (guix licenses)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
@@ -175,3 +177,59 @@ interface to this library is not guaranteed to be stable.")
 testing InfiniBand networks.")
     (home-page "https://www.openfabrics.org/downloads/ibutils/")
     (license bsd-2)))
+
+(define-public ucx
+  (package
+    (name "ucx")
+    (version "1.6.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/openucx/ucx.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0x3clvy716i7va4m4adgx6ihjsfnzrkdizhxz5v52944dkglpc8n"))))
+    (build-system gnu-build-system)
+    (arguments
+     '( ;; These are some of the flags found in 'contrib/configure-release'.
+       #:configure-flags (list
+                          ;; XXX: Disable optimizations specific to the build
+                          ;; machine (AVX, etc.)  There's apparently no way to
+                          ;; have them picked up at load time.
+                          "--disable-optimizations"
+
+                          "--disable-logging"
+                          "--disable-debug"
+                          "--disable-assertions"
+                          "--disable-params-check"
+
+                          (string-append "--with-rdmacm="
+                                         (assoc-ref %build-inputs
+                                                    "rdma-core")))
+
+       ;; Be verbose so that compiler flags are displayed.
+       #:make-flags '("V=1")))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("numactl" ,numactl)
+       ("rdma-core" ,rdma-core)))
+    (synopsis "Optimized communication layer for message passing in HPC")
+    (description
+     "Unified Communication X (UCX) provides an optimized communication layer
+for message passing (MPI), portable global address space (PGAS) languages and
+run-time support libraries, as well as RPC and data-centric applications.
+
+UCX utilizes high-speed networks for inter-node communication, and shared
+memory mechanisms for efficient intra-node communication.")
+    (home-page "https://www.openucx.org/")
+    (license bsd-3)
+
+    ;; <ucm/bistro/bistro.h> lists only PowerPC64, AArch64, and x86_64 as
+    ;; supported.
+    (supported-systems '("x86_64-linux" "aarch64-linux"))))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index e355f7bb89..aba6f07537 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -46,6 +46,9 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages freedesktop)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -53,7 +56,8 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system python))
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system meson))
 
 (define-public freetype
   (package
@@ -725,3 +729,48 @@ maintain the Noto Fonts project.")
                    (license:non-copyleft
                     "file://sample_texts/attributions.txt"
                     "See sample_texts/attributions.txt in the distribution.")))))
+
+(define-public fontmanager
+  (package
+   (name "fontmanager")
+   (version "0.7.5")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/FontManager/font-manager")
+            (commit version)))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "16hma8rrkam6ngn5vbdaryn31vdixvii6920g9z928gylz9xkd3g"))))
+   (build-system meson-build-system)
+   (arguments
+    `(#:glib-or-gtk? #t
+      #:build-type "release"
+      #:configure-flags
+      (list (string-append "-Dc_link_args=-Wl,-rpath="
+                           (assoc-ref %outputs "out")
+                           "/lib/font-manager"))))
+   (native-inputs
+    `(("pkg-config" ,pkg-config)
+      ("vala" ,vala)
+      ("yelp-tools" ,yelp-tools)
+      ("gettext" ,gettext-minimal)
+      ("glib" ,glib "bin")
+      ("gobject-introspection" ,gobject-introspection)
+      ("desktop-file-utils" ,desktop-file-utils)))
+   (inputs
+    `(("json-glib" ,json-glib)
+      ("sqlite-with-column-metadata" ,sqlite-with-column-metadata)
+      ("fonconfig" ,fontconfig)
+      ("freetype" ,freetype)
+      ("gtk+" ,gtk+)))
+   (home-page "https://fontmanager.github.io/")
+   (synopsis "Simple font management for GTK+ desktop environments")
+   (description "Font Manager is intended to provide a way for users to
+easily manage desktop fonts, without having to resort to command-line
+tools or editing configuration files by hand.
+While designed primarily with the GNOME Desktop Environment in mind, it should
+work well with other GTK+ desktop environments.")
+   (license license:gpl3+)))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 7fc0122faa..eb92443e0d 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -445,7 +445,7 @@ support.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "1.2.4")
+    (version "1.2.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -454,7 +454,7 @@ support.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "04v738h298pvcwb70mwd1r2yj7578f6gkfzs0165j9fqy7avwm18"))))
+                "14v2zfka2y3h0r0biw1rl59585lji5074x958s4xnb352jm5h9b9"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 2ed505bbc4..a5b8ee9dd4 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
 ;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
@@ -5514,7 +5514,7 @@ elements to achieve a simple goal in the most complex way possible.")
 (define-public pioneer
   (package
     (name "pioneer")
-    (version "20180203")
+    (version "20190203")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5523,16 +5523,15 @@ elements to achieve a simple goal in the most complex way possible.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0hp2mf36kj2v93hka8m8lxw2qhmnjc62wjlpw7c7ix0r8xa01i6h"))))
-    (build-system gnu-build-system)
+                "1g34wvgyvz793dhm1k64kl82ib0cavkbg0f2p3fp05b457ycljff"))))
+    (build-system cmake-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("assimp" ,assimp)
        ("curl" ,curl)
        ("freetype" ,freetype)
+       ("glew" ,glew)
        ("glu" ,glu)
        ("libpng" ,libpng)
        ("libsigc++" ,libsigc++)
@@ -5542,16 +5541,9 @@ elements to achieve a simple goal in the most complex way possible.")
        ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
     (arguments
      `(#:tests? #f                      ;tests are broken
-       #:configure-flags (list "--with-external-liblua"
-                               (string-append "PIONEER_DATA_DIR="
-                                              %output "/share/games/pioneer"))
-       #:phases (modify-phases %standard-phases
-                  (add-before 'bootstrap 'fix-lua-check
-                    (lambda _
-                      (substitute* "configure.ac"
-                        (("lua5.2")
-                         (string-append "lua-" ,(version-major+minor
-                                                 (package-version lua-5.2))))))))))
+       #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
+                               (string-append "-DPIONEER_DATA_DIR="
+                                              %output "/share/games/pioneer"))))
     (home-page "http://pioneerspacesim.net")
     (synopsis "Game of lonely space adventure")
     (description
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 2bcf05e41b..bda6a2b48a 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -672,6 +672,10 @@ as the 'native-search-paths' field."
   (custom-gcc gcc-8 "gfortran" '("fortran")
               %generic-search-paths))
 
+(define-public gfortran-9
+  (custom-gcc gcc-9 "gfortran" '("fortran")
+              %generic-search-paths))
+
 (define-public gfortran
   ;; Note: Update this when GCC changes!  We cannot use
   ;; (custom-gcc gcc "fortran" …) because that would lead to a package object
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7f16b17499..f17bd941cd 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -41,6 +41,7 @@
 ;;; Copyright © 2019 Jonathan Frederickson <jonathan@terracrypt.net>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net>
+;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4995,15 +4996,15 @@ powerful general purpose text editor.")
 (define-public zenity
   (package
     (name "zenity")
-    (version "3.30.0")
+    (version "3.32.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/zenity/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "zenity-" version ".tar.xz"))
               (sha256
                (base32
-                "1wipnp46pd238z9ck5rsckbaw7yla6c936fswq5w94k4c6bgcplr"))))
+                "15fdh8xfdhnwcynyh4byx3mrjxbyprqnwxzi7qn3g5wwaqryg1p7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -5486,7 +5487,8 @@ services.")
 (define-public network-manager-openvpn
   (package
     (name "network-manager-openvpn")
-    (version "1.8.4")
+    ;; Updating?  Check whether network-manager-applet still needs libnm_gtk.
+    (version "1.8.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5495,7 +5497,7 @@ services.")
                     "/NetworkManager-openvpn-" version ".tar.xz"))
               (sha256
                (base32
-                "0gyrv46h9k17qym48qacq4zpxbap6hi17shn921824zm98m2bdvr"))))
+                "1vri49yff4lj13dnzkpq9nx3a4z1bmbrv807r151plj8m1mwhg5g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
@@ -5659,18 +5661,21 @@ Cisco's AnyConnect SSL VPN.")
 (define-public network-manager-applet
   (package
     (name "network-manager-applet")
-    (version "1.8.18")
+    (version "1.8.24")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/network-manager-applet/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "network-manager-applet-" version ".tar.xz"))
               (sha256
                (base32
-                "0y31g0lxr93370xi74hbpvcy9m81n5wdkdhq8xy2nqp0y4219p13"))))
+                "1gzvz4wfqfsfclqg56y954al8x6fmz71cnxlx1i4nqr7a25bp2qi"))))
     (build-system meson-build-system)
     (arguments
-     '(#:glib-or-gtk? #t))
+     '(#:configure-flags
+       ;; ‘Nobody should be using this’ but network-manager-openvpn 1.8.10 does.
+       (list "-Dlibnm_gtk=true")
+       #:glib-or-gtk? #t))
     (native-inputs
      `(("intltool" ,intltool)
        ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
@@ -7679,7 +7684,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
 (define-public gspell
   (package
     (name "gspell")
-    (version "1.8.1")
+    (version "1.8.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7687,7 +7692,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1rdv873ixhwr15jwgc2z6k6y0hj353fqnwsy7zkh0c30qwiiv6l1"))
+                "1miybm1z5cl91i25l7mfqlxhv7j8yy8rcgi0s1bgbb2vm71rb4dv"))
               (patches (search-patches "gspell-dash-test.patch"))))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -8395,3 +8400,40 @@ access library.  It only implements the core plumbing functions, not really the
 higher level porcelain stuff.")
     (home-page "https://wiki.gnome.org/Projects/Libgit2-glib")
     (license license:gpl2+)))
+
+(define-public gnome-mahjongg
+  (package
+    (name "gnome-mahjongg")
+    (version "3.35.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/GNOME/gnome-mahjongg.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "019a66a4m5w4kkb0sm6gxj0wi54n06zdxdlmyqw7h8kbakjizv7l"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t))
+    (native-inputs
+     `(("appstream-glib" ,appstream-glib)
+       ("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin") ;; For glib-compile-resources
+       ("gtk+" ,gtk+ "bin")     ;; For gtk-update-icon-cache
+       ("itstool" ,itstool)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (propagated-inputs
+     `(("dconf" ,dconf)))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("librsvg" ,librsvg)))
+    (synopsis "Mahjongg tile-matching game")
+    (description "GNOME Mahjongg is a game based on the classic Chinese
+tile-matching game Mahjong.  It features multiple board layouts, tile themes,
+and a high score table.")
+    (home-page "https://wiki.gnome.org/Apps/Mahjongg")
+    (license license:gpl2+)))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index c57d90f5ac..e453d9fa5b 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -1026,12 +1026,13 @@ requirements.")
 (define-public opensubdiv
   (package
     (name "opensubdiv")
-    (version "3_4_0")
+    (version "3.4.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/PixarAnimationStudios/OpenSubdiv")
-                     (commit (string-append "v" version))))
+                    (url "https://github.com/PixarAnimationStudios/OpenSubdiv")
+                    (commit (string-append "v" (string-join (string-split version #\.)
+                                                            "_")))))
               (file-name (git-file-name name version))
               (sha256
                (base32
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index d1e81a8efc..ec69424151 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1085,7 +1085,7 @@ toolkit.")
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "3.24.0")
+    (version "3.24.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1093,7 +1093,7 @@ toolkit.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "0hxaq4x9jqj8vvnv3sb6nwapz83v8lclbm887qqci0g50llcjpyg"))))
+               "1zfj89spr8ianib5y10wcw63ybdmyjy58a15vqs0m8jq4knl5znx"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("glib" ,glib "bin")        ;for 'glib-compile-resources'
@@ -1311,14 +1311,14 @@ produces identical output on all those targets.")
 (define-public perl-gtk2
   (package
     (name "perl-gtk2")
-    (version "1.24992")
+    (version "1.24993")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1044rj3wbfmgaif2jb0k28m2aczli6ai2n5yvn6pr7zjyw16kvd2"))))
+                "0ry9jfvfgdwzalxcvwsgr7plhk3agx7p40l0fqdf3vrf7ds47i29"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-extutils-depends" ,perl-extutils-depends)
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index a735ecb011..eb7471b681 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -38,14 +38,14 @@
 (define-public ddcutil
   (package
     (name "ddcutil")
-    (version "0.9.5")
+    (version "0.9.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.ddcutil.com/tarballs/"
                            "ddcutil-" version ".tar.gz"))
        (sha256
-        (base32 "18brwj54dkjylvpx7c6ksf7fzhdjffi60avyg7qbs8vw9awnsxqz"))))
+        (base32 "0lqc3fn5h7acfmbmyi8hpv2p6b4csfbx3lkhzy073s9x2zblrq3g"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index e09285d63a..13d228b856 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -245,7 +245,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "7.20190912")
+    (version "7.20191009")
     (source
      (origin
        (method url-fetch)
@@ -253,7 +253,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
         (base32
-         "1a3jvl5cx32v78s3015i10cx00jprm1391rpww4mzkk1vskzn9cv"))))
+         "10ycvjl9b3aa81zdz239ngjbbambfjrzds1a23wdlbjkn12nsg4g"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index fdd6ca661e..b0ffe5de07 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -183,37 +183,31 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
 
 (define deblob-scripts-5.3
   (linux-libre-deblob-scripts
-   "5.3.4"
+   "5.3.6"
    (base32 "15n09zq38d69y1wl28s3nasf3377qp2yil5b887zpqrm00dif7i4")
    (base32 "0nrimraf46nf6y1hwkg29fyl0a83wnj0mwq54ggxvffn9gk5h9pa")))
 
-(define deblob-scripts-5.2
-  (linux-libre-deblob-scripts
-   "5.2.19"
-   (base32 "076fwxlm6jq6z4vg1xq3kr474zz7qk71r90sf9dnfia3rw2pb4fa")
-   (base32 "1vghzpvlsvz5q8baxjza8jdryjmcx61g2pmnm6dd1k7glr6jy1a9")))
-
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
-   "4.19.77"
+   "4.19.79"
    (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy")
    (base32 "1fyacg28aym6virxyn7wk99qil2fjbks3iwm7p3hxy51pccn34za")))
 
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
-   "4.14.147"
+   "4.14.149"
    (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
    (base32 "0x9nd3hnyrm753cbgdqmy92mbnyw86w64g4hvyibnkpq5n7s3z9n")))
 
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
-   "4.9.195"
+   "4.9.196"
    (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
    (base32 "0is8gn4qdd7h5l6lacvhqdch26lmrbgxfm8ab7fx8n85ha7y358w")))
 
 (define deblob-scripts-4.4
   (linux-libre-deblob-scripts
-   "4.4.194"
+   "4.4.196"
    (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
    (base32 "12ac4g3ky8yma8sylmxvvysqvd4hnaqjiwmxrxb6wlxggfd7zkbx")))
 
@@ -357,50 +351,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.3-version "5.3.4")
+(define-public linux-libre-5.3-version "5.3.7")
 (define-public linux-libre-5.3-pristine-source
   (let ((version linux-libre-5.3-version)
-        (hash (base32 "0vi4bgcr921z5l6fbcrcgmhaji5gl2avpmp7njna6v0f7sxism0r")))
+        (hash (base32 "00j8sdrmmppqf38vl50a4zas5gy7yv37n43b61f8472k45773jf6")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.3)))
 
-(define-public linux-libre-5.2-version "5.2.19")
-(define-public linux-libre-5.2-pristine-source
-  (let ((version linux-libre-5.2-version)
-        (hash (base32 "12mi857lyd5vj8qhj2f505hqnwzsnd829hxd78n9kk88iv1f966y")))
-   (make-linux-libre-source version
-                            (%upstream-linux-source version hash)
-                            deblob-scripts-5.2)))
-
-(define-public linux-libre-4.19-version "4.19.77")
+(define-public linux-libre-4.19-version "4.19.80")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "1agksl35amjzc6g6d9zjwz6p5qir2cligb5c1d9s2bag9766jav1")))
+        (hash (base32 "1v776s6q5wxn8ci86dwa8s8y41b94g09fnpgvzysg2h89rvbmac0")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.147")
+(define-public linux-libre-4.14-version "4.14.150")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "04jvp05spszcxmkdsl21dylbcf76ns9bwxf1zlk4x7cxiil97mwg")))
+        (hash (base32 "1c2pxfvv31af0mzcqnbfjk8pc0wrhg4yhspl8a3ab2w5dfwa9ib5")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.195")
+(define-public linux-libre-4.9-version "4.9.197")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0s4xj8f1dpnz3fbrqmgwq02smhcrq1ni8hgn2bbfqvm15lm5dgjl")))
+        (hash (base32 "032as6g4xvqjarqhvx7mr14yhn6idak4g0ps1skmsl4dfav6hdam")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.194")
+(define-public linux-libre-4.4-version "4.4.197")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "0kvlp2v4nvkilaanhpgwf8dkyfj24msaw0m38rbc4y51y69yhqvz")))
+        (hash (base32 "0ypfl1q1bdbk81hk0bm8a0grqzz4z5rp7z7asa3191ji3r8q9x4w")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -439,12 +425,6 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                              %boot-logo-patch
                              %linux-libre-arm-export-__sync_icache_dcache-patch)))
 
-(define-public linux-libre-5.2-source
-  (source-with-patches linux-libre-5.2-pristine-source
-                       (list (search-patch "linux-libre-active-entropy.patch")
-                             %boot-logo-patch
-                             %linux-libre-arm-export-__sync_icache_dcache-patch)))
-
 (define-public linux-libre-4.19-source
   (source-with-patches linux-libre-4.19-pristine-source
                        (list %boot-logo-patch
@@ -539,10 +519,6 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
   (make-linux-libre-headers* linux-libre-5.3-version
                              linux-libre-5.3-source))
 
-(define-public linux-libre-headers-5.2
-  (make-linux-libre-headers* linux-libre-5.2-version
-                             linux-libre-5.2-source))
-
 (define-public linux-libre-headers-4.19
   (make-linux-libre-headers* linux-libre-4.19-version
                              linux-libre-4.19-source))
@@ -804,12 +780,6 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-source          linux-libre-5.3-source)
 (define-public linux-libre                 linux-libre-5.3)
 
-(define-public linux-libre-5.2
-  (make-linux-libre* linux-libre-5.2-version
-                     linux-libre-5.2-source
-                     '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
-                     #:configuration-file kernel-config))
-
 (define-public linux-libre-4.19
   (make-linux-libre* linux-libre-4.19-version
                      linux-libre-4.19-source
@@ -5854,7 +5824,7 @@ IP addresses and routes, and configure IPsec.")
 (define-public xfsprogs
   (package
     (name "xfsprogs")
-    (version "4.20.0")
+    (version "5.2.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5862,17 +5832,32 @@ IP addresses and routes, and configure IPsec.")
                     "xfsprogs-" version ".tar.gz"))
               (sha256
                (base32
-                "0ss0r6jlxxinf9fhpc0fgf7b89n9mzirpa85xxjmi1ix9l6cls6x"))))
+                "0q5xd4gb9g83h82mg68cx616ifzl8qkzzlgg5xna698117ph3wky"))))
     (build-system gnu-build-system)
+    (outputs (list "out" "python"))
     (arguments
-     `(#:tests? #f    ;kernel/user integration tests are in package "xfstests"
-       #:phases (modify-phases %standard-phases
-                  (add-after 'install 'install-headers
-                    (lambda _
-                      (invoke "make" "install-dev"))))))
+     `(#:tests? #f   ; kernel/user integration tests are in package "xfstests"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'separate-python-output
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out    (assoc-ref outputs "out"))
+                   (python (assoc-ref outputs "python")))
+               (for-each
+                (lambda (script)
+                  (mkdir-p (string-append python (dirname script)))
+                  (rename-file (string-append out script)
+                               (string-append python script)))
+                (list "/sbin/xfs_scrub_all"))
+               #t)))
+         (add-after 'install 'install-headers
+           (lambda _
+             (invoke "make" "install-dev"))))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("util-linux" ,util-linux)))
+    (inputs
+     `(("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.scm b/gnu/packages/lisp.scm
index 2bdebed04e..bb2a589578 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -1463,6 +1463,9 @@ multiple inspectors with independent history.")
 JavaScript (ECMAScript 3).  It has basic support for ECMAScript 5.")
       (license license:zlib))))
 
+(define-public cl-parse-js
+  (sbcl-package->cl-source-package sbcl-parse-js))
+
 (define-public sbcl-parse-number
   (package
     (name "sbcl-parse-number")
@@ -1486,6 +1489,9 @@ the string into one of the standard Common Lisp number types, if possible, or
 else @code{parse-number} signals an error of type @code{invalid-number}.")
     (license license:bsd-3)))
 
+(define-public cl-parse-number
+  (sbcl-package->cl-source-package sbcl-parse-number))
+
 (define-public sbcl-iterate
   (package
     (name "sbcl-iterate")
@@ -1515,6 +1521,9 @@ It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
 @end itemize\n")
     (license license:expat)))
 
+(define-public cl-iterate
+  (sbcl-package->cl-source-package sbcl-iterate))
+
 (define-public sbcl-cl-uglify-js
   ;; There have been many bug fixes since the 2010 release.
   (let ((commit "429c5e1d844e2f96b44db8fccc92d6e8e28afdd5")
@@ -1556,6 +1565,9 @@ compressor.  It works on data produced by @code{parse-js} to generate a
 @end itemize\n")
       (license license:zlib))))
 
+(define-public cl-uglify-js
+  (sbcl-package->cl-source-package sbcl-cl-uglify-js))
+
 (define-public uglify-js
   (package
     (inherit sbcl-cl-uglify-js)
@@ -3128,6 +3140,9 @@ package.")
        ("bordeaux-threads" ,sbcl-bordeaux-threads)
        ,@(package-native-inputs sbcl-cffi-bootstrap)))))
 
+(define-public cl-cffi
+  (sbcl-package->cl-source-package sbcl-cffi))
+
 (define-public sbcl-cl-sqlite
   (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
     (package
@@ -3169,6 +3184,9 @@ package.")
 relational database engine.")
       (license license:public-domain))))
 
+(define-public cl-sqlite
+  (sbcl-package->cl-source-package sbcl-cl-sqlite))
+
 (define-public sbcl-parenscript
   (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
     (package
@@ -3543,6 +3561,9 @@ is a library for creating graphical user interfaces.")
        ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
        #:tests? #f))))
 
+(define-public cl-cffi-gtk
+  (sbcl-package->cl-source-package sbcl-cl-cffi-gtk))
+
 (define-public sbcl-cl-webkit
   (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
     (package
@@ -3583,6 +3604,9 @@ browsing capabilities to an application, leveraging the full power of the
 WebKit browsing engine.")
       (license license:expat))))
 
+(define-public cl-webkit
+  (sbcl-package->cl-source-package sbcl-cl-webkit))
+
 (define-public sbcl-lparallel
   (package
     (name "sbcl-lparallel")
@@ -3992,7 +4016,7 @@ RFC 1321 by R. Rivest, published April 1992.")
   (sbcl-package->cl-source-package sbcl-md5))
 
 (define-public sbcl-cl+ssl
-  (let ((commit "b81c1135cf5700e870ce2573d5035d249e491788")
+  (let ((commit "141ae91416bc40f1618dc07e48429b84388aa599")
         (revision "1"))
     (package
       (name "sbcl-cl+ssl")
@@ -4005,7 +4029,7 @@ RFC 1321 by R. Rivest, published April 1992.")
                (commit commit)))
          (file-name (git-file-name "cl+ssl" version))
          (sha256
-          (base32 "1845i1pafmqb6cdlr53yaqy67kjrhkvbx6c37ca15cw70vhdr3z9"))))
+          (base32 "1s0hg1h9sf8q89v0yrxmzg5f5sng29rgx3n21r9h9yql8351myan"))))
       (build-system asdf-build-system/sbcl)
       (arguments
        '(#:phases
@@ -4022,7 +4046,9 @@ RFC 1321 by R. Rivest, published April 1992.")
          ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
          ("sbcl-flexi-streams" ,sbcl-flexi-streams)
          ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)
-         ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
+         ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)
+         ("sbcl-alexandria" ,sbcl-alexandria)
+         ("sbcl-trivial-features" ,sbcl-trivial-features)))
       (home-page "http://common-lisp.net/project/cl-plus-ssl/")
       (synopsis "Common Lisp bindings to OpenSSL")
       (description
@@ -5130,7 +5156,9 @@ performance and simplicity in mind.")
                    ((anchor all)
                     (string-append
                      anchor "\n"
-                     "(asdf:system-relative-pathname :trivial-mimes \"../../share/common-lisp/sbcl-source/trivial-mimes/mime.types\")")))))))))
+                     "(asdf:system-relative-pathname :trivial-mimes "
+                     "\"../../share/common-lisp/" (%lisp-type)
+                     "-source/trivial-mimes/mime.types\")")))))))))
       (native-inputs
        `(("stefil" ,sbcl-hu.dwim.stefil)))
       (inputs
@@ -5145,6 +5173,9 @@ mime-type of a file.")
 (define-public cl-trivial-mimes
   (sbcl-package->cl-source-package sbcl-trivial-mimes))
 
+(define-public ecl-trivial-mimes
+  (sbcl-package->ecl-package sbcl-trivial-mimes))
+
 (define-public sbcl-lack-middleware-static
   (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
         (revision "1"))
@@ -5942,6 +5973,9 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.")
                 "")))))))
     (synopsis "Common Lisp I/O library")))
 
+(define-public cl-iolib
+  (sbcl-package->cl-source-package sbcl-iolib))
+
 (define sbcl-iolib+multiplex
   (package
     (inherit sbcl-iolib)
@@ -5999,6 +6033,9 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.")
 floating point values to IEEE 754 binary representation.")
       (license license:bsd-3))))
 
+(define-public cl-ieee-floats
+  (sbcl-package->cl-source-package sbcl-ieee-floats))
+
 (define sbcl-closure-common
   (let ((commit "e3c5f5f454b72b01b89115e581c3c52a7e201e5c")
         (revision "1"))
@@ -6131,6 +6168,9 @@ offered, one SAX-like, the other similar to StAX.")
                  ((" *\\(\\(:compiled-file \"cxml--system\"\\)\\)")
                   ""))))))))))
 
+(define-public cl-cxml
+  (sbcl-package->cl-source-package sbcl-cxml))
+
 (define-public sbcl-cl-reexport
   (let ((commit "312f3661bbe187b5f28536cd7ec2956e91366c3b")
         (revision "1"))
@@ -6159,6 +6199,9 @@ offered, one SAX-like, the other similar to StAX.")
 cookie headers, cookie creation, cookie jar creation and more.")
       (license license:llgpl))))
 
+(define-public cl-reexport
+  (sbcl-package->cl-source-package sbcl-cl-reexport))
+
 (define-public sbcl-cl-cookie
   (let ((commit "cea55aed8b9ad25fafd13defbcb9fe8f41b29546")
         (revision "1"))
@@ -6194,6 +6237,9 @@ cookie headers, cookie creation, cookie jar creation and more.")
 cookie headers, cookie creation, cookie jar creation and more.")
       (license license:bsd-2))))
 
+(define-public cl-cookie
+  (sbcl-package->cl-source-package sbcl-cl-cookie))
+
 (define-public sbcl-dexador
   (let ((commit "a2714d126cc94bc7a9a6e1e3c08de455b3a66378")
         (revision "1"))
@@ -6236,7 +6282,6 @@ cookie headers, cookie creation, cookie jar creation and more.")
          ("clack" ,sbcl-clack)
          ("babel" ,sbcl-babel)
          ("alexandria" ,sbcl-alexandria)
-         ("quri" ,sbcl-quri)
          ("cl-ppcre" ,sbcl-cl-ppcre)
          ("local-time" ,sbcl-local-time)))
       (arguments
@@ -6251,6 +6296,20 @@ cookie headers, cookie creation, cookie jar creation and more.")
 neat APIs and connection-pooling.  It is meant to supersede Drakma.")
       (license license:expat))))
 
+(define-public cl-dexador
+  (package
+    (inherit (sbcl-package->cl-source-package sbcl-dexador))
+    (arguments
+     `(#:phases
+       ;; asdf-build-system/source has its own phases and does not inherit
+       ;; from asdf-build-system/sbcl phases.
+       (modify-phases %standard-phases/source
+         (add-after 'unpack 'fix-permissions
+           (lambda _ (make-file-writable "t/data/test.gz") #t)))))))
+
+(define-public ecl-dexador
+  (sbcl-package->ecl-package sbcl-dexador))
+
 (define-public sbcl-lisp-namespace
   (let ((commit "28107cafe34e4c1c67490fde60c7f92dc610b2e0")
         (revision "1"))
@@ -6284,6 +6343,9 @@ more — e.g., class namespace.
 This library offers macros to deal with symbols from any namespace.")
       (license license:llgpl))))
 
+(define-public cl-lisp-namespace
+  (sbcl-package->cl-source-package sbcl-lisp-namespace))
+
 (define-public sbcl-trivial-cltl2
   (let ((commit "8eec8407df833e8f27df8a388bc10913f16d9e83")
         (revision "1"))
@@ -6309,6 +6371,9 @@ Edition\" (@url{https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node102.html})
 and it exports symbols from implementation-specific packages.")
       (license license:llgpl))))
 
+(define-public cl-trivial-cltl2
+  (sbcl-package->cl-source-package sbcl-trivial-cltl2))
+
 (define-public sbcl-introspect-environment
   (let ((commit "fff42f8f8fd0d99db5ad6c5812e53de7d660020b")
         (revision "1"))
@@ -6350,6 +6415,9 @@ implementations have implementations of the functions that do as much as they
 can and/or provide reasonable defaults.")
       (license license:wtfpl2))))
 
+(define-public cl-introspect-environment
+  (sbcl-package->cl-source-package sbcl-introspect-environment))
+
 (define-public sbcl-type-i
   (let ((commit "dea233f45f94064105ec09f0767de338f67dcbe2")
         (revision "1"))
@@ -6382,6 +6450,9 @@ type the given predicate is trying to check.  This is different from inferring
 the return type of a function.")
       (license license:llgpl))))
 
+(define-public cl-type-i
+  (sbcl-package->cl-source-package sbcl-type-i))
+
 (define-public sbcl-optima
   (let ((commit "373b245b928c1a5cce91a6cb5bfe5dd77eb36195")
         (revision "1"))
@@ -6414,6 +6485,9 @@ the return type of a function.")
 optimizing techniques widely used in the functional programming world.")
       (license license:expat))))
 
+(define-public cl-optima
+  (sbcl-package->cl-source-package sbcl-optima))
+
 (define-public sbcl-fare-quasiquote
   (package
     (name "sbcl-fare-quasiquote")
@@ -6688,6 +6762,9 @@ This system contains the CFFI foreign slot access extension.")))
 with Optima, another pattern matching library for Common Lisp.  It is meant to
 be faster and more extensible than Optima.")))
 
+(define-public cl-trivia
+  (sbcl-package->cl-source-package sbcl-trivia))
+
 (define-public sbcl-mk-string-metrics
   (package
     (name "sbcl-mk-string-metrics")
@@ -6719,6 +6796,9 @@ various string metrics in Common Lisp:
 @end itemize\n")
     (license license:x11)))
 
+(define-public cl-mk-string-metrics
+  (sbcl-package->cl-source-package sbcl-mk-string-metrics))
+
 (define-public sbcl-cl-str
   (let ((commit "3d5ec86e3a0199e5973aacde951086dfd754b5e5"))
     (package
@@ -6754,6 +6834,9 @@ discoverable library instead of many; consistency and composability, where
 arrows.")
       (license license:expat))))
 
+(define-public cl-str
+  (sbcl-package->cl-source-package sbcl-cl-str))
+
 (define-public sbcl-cl-xmlspam
   (let ((commit "ea06abcca2a73a9779bcfb09081e56665f94e22a"))
     (package
@@ -7718,3 +7801,35 @@ supplement, not a competitor, to Alexandria.")
 
 (define-public cl-serapeum
   (sbcl-package->cl-source-package sbcl-serapeum))
+
+(define-public sbcl-arrows
+  (let ((commit "df7cf0067e0132d9697ac8b1a4f1b9c88d4f5382")
+        (revision "0"))
+    (package
+      (name "sbcl-arrows")
+      (version (git-version "0.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/Harleqin/arrows.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "042k9vkssrqx9nhp14wdzm942zgdxvp35mba0p2syz98i75im2yy"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
+      (synopsis "Clojure-like arrow macros for Common Lisp")
+      (description
+       "This library implements the @code{->} and @code{->>} macros from
+Clojure, as well as several expansions on the idea.")
+      (home-page "https://gitlab.com/Harleqin/arrows")
+      (license license:public-domain))))
+
+(define-public cl-arrows
+  (sbcl-package->cl-source-package sbcl-arrows))
+
+(define-public ecl-arrows
+  (sbcl-package->ecl-package sbcl-arrows))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a994e4d344..64e8b771fc 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1197,7 +1197,7 @@ delivery.")
 (define-public exim
   (package
     (name "exim")
-    (version "4.92.2")
+    (version "4.92.3")
     (source
      (origin
        (method url-fetch)
@@ -1206,7 +1206,8 @@ delivery.")
                   (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-"
                                  version ".tar.bz2")))
        (sha256
-        (base32 "1xnc5rdcg5mcrvjqp506a9frmcr89jwsh4c5vbks46awyz1rfzsm"))))
+        (base32
+         "0d0h0j9pl3yf089sc59ia60m3dqnkb3qh1qaz6vxfg2ja2mnm5i9"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 42e1918597..de2377a14e 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -162,7 +162,7 @@ the traditional flat-text whatis databases.")
 (define-public man-pages
   (package
     (name "man-pages")
-    (version "5.02")
+    (version "5.03")
     (source
      (origin
        (method url-fetch)
@@ -172,7 +172,7 @@ the traditional flat-text whatis databases.")
               (string-append "mirror://kernel.org/linux/docs/man-pages/Archive/"
                              "man-pages-" version ".tar.xz")))
        (sha256
-        (base32 "1s4pdz2pwf0kvhdwx2s6lqn3xxzi38yz5jfyq5ymdmswc9gaiyn2"))))
+        (base32 "082i9258rl9xxjgpxpz3v8jcwk96dsk704ki9h9lq7q8z7m3mqbz"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index bff334bad6..30d0717119 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2171,7 +2171,7 @@ bindings to almost all functions of SLEPc.")
 (define-public mumps
   (package
     (name "mumps")
-    (version "5.1.2")
+    (version "5.2.1")
     (source
      (origin
        (method url-fetch)
@@ -2179,8 +2179,11 @@ bindings to almost all functions of SLEPc.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "1s9asin08zqzmh08257sdghhivvy9vjif7c53fhaxaax2kd5qd7b"))
-       (patches (search-patches "mumps-build-parallelism.patch"))))
+         "0jklh54x4y3ik1zkw6db7766kakjm5910diyaghfxxf8vwsgr26r"))
+       (patches (search-patches "mumps-build-parallelism.patch"
+                                "mumps-shared-libseq.patch"
+                                "mumps-shared-mumps.patch"
+                                "mumps-shared-pord.patch"))))
     (build-system gnu-build-system)
     (inputs
      `(("fortran" ,gfortran)
@@ -2210,15 +2213,17 @@ CC           = gcc
 FC           = gfortran
 FL           = gfortran
 INCSEQ       = -I$(topdir)/libseq
-LIBSEQ       = -L$(topdir)/libseq -lmpiseq
+LIBSEQ       = $(topdir)/libseq/libmpiseq.a
 LIBSEQNEEDED = libseqneeded~;
 CC           = mpicc
 FC           = mpifort
 FL           = mpifort~]
 AR           = ar vr # rules require trailing space, ugh...
 RANLIB       = ranlib
-LIBBLAS      = -L~a -lopenblas~@[
-SCALAP       = -L~a -lscalapack~]
+BLASDIR      = ~a
+LIBBLAS      = -Wl,-rpath=$(BLASDIR) -Wl,-rpath='$$ORIGIN' -L$(BLASDIR) -lopenblas~@[
+SCALAPDIR    = ~a
+SCALAP       = -Wl,-rpath=$(SCALAPDIR) -Wl,-rpath='$$ORIGIN' -L$(SCALAPDIR) -lscalapack~]
 LIBOTHERS    = -pthread
 CDEFS        = -DAdd_
 PIC          = -fPIC
@@ -2229,18 +2234,18 @@ INCS         = $(INCSEQ)
 LIBS         = $(SCALAP) $(LIBSEQ)
 LPORDDIR     = $(topdir)/PORD/lib
 IPORD        = -I$(topdir)/PORD/include
-LPORD        = -L$(LPORDDIR) -lpord
+LPORD        = $(LPORDDIR)/libpord.a
 ORDERINGSF   = -Dpord~@[
 METISDIR     = ~a
 IMETIS       = -I$(METISDIR)/include
-LMETIS       = -L$(METISDIR)/lib -lmetis
+LMETIS       = -Wl,-rpath $(METISDIR)/lib -L$(METISDIR)/lib -lmetis
 ORDERINGSF  += -Dmetis~]~@[~:{
 SCOTCHDIR    = ~a
 ISCOTCH      = -I$(SCOTCHDIR)/include
-LSCOTCH      = -L$(SCOTCHDIR)/lib ~a-lesmumps -lscotch -lscotcherr
+LSCOTCH      = -Wl,-rpath $(SCOTCHDIR)/lib -L$(SCOTCHDIR)/lib ~a-lesmumps -lscotch -lscotcherr
 ORDERINGSF  += ~a~}~]
 ORDERINGSC   = $(ORDERINGSF)
-LORDERINGS   = $(LPORD) $(LMETIS) $(LSCOTCH)
+LORDERINGS   = $(LPORD) $(LMETIS) $(LSCOTCH) $(LIBSEQ)
 IORDERINGSF  = $(ISCOTCH)
 IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
                         (assoc-ref inputs "mpi")
@@ -2294,6 +2299,8 @@ IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
                (copy-recursively "include" (string-append out "/include"))
                (when (file-exists? "libseq/libmpiseq.a")
                  (install-file "libseq/libmpiseq.a" libdir))
+               (when (file-exists? "libseq/libmpiseq.so")
+                 (install-file "libseq/libmpiseq.so" libdir))
                #t))))))
     (home-page "http://mumps.enseeiht.fr")
     (synopsis "Multifrontal sparse direct solver")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index c69f76893a..741b3285e2 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1779,25 +1779,23 @@ QMatrixClient project.")
        ("qtdeclarative" ,qtdeclarative)
        ("qtmultimedia" ,qtmultimedia)
        ("qtquickcontrols" ,qtquickcontrols)
+       ("qtquickcontrols2" ,qtquickcontrols2)
        ("qtsvg" ,qtsvg)
        ("qttools" ,qttools)))
     (arguments
      `(#:tests? #f                      ; no tests
+       #:modules ((guix build cmake-build-system)
+                  (guix build qt-utils)
+                  (guix build utils))
+       #:imported-modules (,@%cmake-build-system-modules
+                           (guix build qt-utils))
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/quaternion")
-               `("QT_PLUGIN_PATH" ":" prefix
-                 (,(string-append (assoc-ref inputs "qtsvg")
-                                  "/lib/qt5/plugins")))
-               `("QML2_IMPORT_PATH" ":" prefix
-                 ,(map (lambda (label)
-                         (string-append (assoc-ref inputs label)
-                                        "/lib/qt5/qml"))
-                       '("qtdeclarative" "qtquickcontrols"))))
-             #t)))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-qt-program out "quaternion")
+               #t))))))
     (home-page "https://matrix.org/docs/projects/client/quaternion.html")
     (synopsis "Graphical client for the Matrix instant messaging protocol")
     (description "Quaternion is a Qt5 desktop client for the Matrix instant
@@ -1855,7 +1853,7 @@ messaging that aren’t available to clients that connect over XMPP.")
 (define-public telegram-purple
   (package
     (name "telegram-purple")
-    (version "1.4.1")
+    (version "1.4.2")
     (home-page "https://github.com/majn/telegram-purple")
     (source (origin
               (method git-fetch)
@@ -1865,7 +1863,7 @@ messaging that aren’t available to clients that connect over XMPP.")
                     (recursive? #t)))
               (sha256
                (base32
-                "0xlmqnlp2dqkgsq052d6dwgvqbwch2w0dnwpjslk5na4ih3lfr7k"))
+                "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 079ac34dbf..914f8e975e 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -185,6 +185,10 @@ bind processes, and much more.")
                   (member (%current-system) (package-supported-systems psm2)))
              `(("psm2" ,psm2))
              '())
+       ,@(if (and (not (%current-target-system))
+                  (member (%current-system) (package-supported-systems psm2)))
+             `(("ucx" ,ucx))
+             '())
        ("rdma-core" ,rdma-core)
        ("valgrind" ,valgrind)
        ("slurm" ,slurm)))              ;for PMI support (launching via "srun")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 66ff861dc3..040dfad506 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
 ;;; Copyright © 2019 raingloom <raingloom@protonmail.com>
+;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3402,8 +3403,9 @@ slow gear audio effect to produce volume swells."))))
 a simulation of an analog Wah pedal with switchless activation."))))
 
 (define-public rkrlv2
-  (let ((commit "d8c17d3c976107e5c012970276d7cf0aa059f15b")
-        (revision "1"))
+  ;; This commit corresponds to the beta_3 tag
+  (let ((commit "7edcb4e29a358623bfd57fa2c27e5da60adfcec3")
+        (revision "2"))
     (package
       (name "rkrlv2")
       (version (git-version "0" revision commit))
@@ -3414,7 +3416,7 @@ a simulation of an analog Wah pedal with switchless activation."))))
                       (commit commit)))
                 (sha256
                  (base32
-                  "035z068rlafb7ibgqf34ck2lm4fab8yzlx41qh061x2xi4hxkvp0"))
+                  "16i4ajrib7kb0abdcn4901g8a4lkwkp2fyqyms38dhqq84slyfjs"))
                 (file-name (git-file-name name version))))
       (build-system cmake-build-system)
       (arguments '(#:tests? #f)) ; there are no tests
@@ -4052,43 +4054,32 @@ notation and includes basic support for digital audio.")
     (license license:gpl2)))
 
 (define-public patchmatrix
-  ;; There have been no releases for more than a year.
-  (let ((commit "a0b0b1e791f4574d5abd059cfe1819c71e8b18d5")
-        (revision "1"))
-    (package
-      (name "patchmatrix")
-      (version (git-version "0.12.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
-                      (commit commit)))
-                (file-name (string-append "patchmatrix-" version "-checkout"))
-                (sha256
-                 (base32
-                  "0pph4ra7aci3rbpqvvr564pi16vxrk448bmvp8985cd9lbjlrp3m"))))
-      (build-system meson-build-system)
-      (arguments
-       '(#:tests? #f          ; no test target
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map make-file-writable
-                    (find-files (assoc-ref outputs "out") ".*\\.gz$"))
-               #t)))))
-      (inputs
-       `(("jack" ,jack-1)
-         ("lv2" ,lv2)
-         ("mesa" ,mesa)))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)))
-      (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
-      (synopsis "Simple JACK patch bay")
-      (description "PatchMatrix is a patch bay for the JACK audio connection
+  (package
+    (name "patchmatrix")
+    (version "0.16.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
+                    (commit version)))
+              (file-name (git-file-name "patchmatrix" version))
+              (sha256
+               (base32
+                "020vp7zzxxzzjfic57vkpg68dm8hi98ilr1bj88xjsv6i47xmjbn"))))
+    (build-system meson-build-system)
+    (arguments '(#:tests? #f))          ; no test target
+    (inputs
+     `(("jack" ,jack-1)
+       ("lv2" ,lv2)
+       ("mesa" ,mesa)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
+    (synopsis "Simple JACK patch bay")
+    (description "PatchMatrix is a patch bay for the JACK audio connection
 kit.  It provides a patch bay in flow matrix style for audio, MIDI, CV, and
 OSC connections.")
-      (license license:artistic2.0))))
+    (license license:artistic2.0)))
 
 (define-public sorcer
   (package
@@ -4677,3 +4668,33 @@ easier to perform.  Features include:
 sqlite.  It is constructed to be fast, light, and simultaneously tries to be
 complete without obstructing your daily work.")
     (license license:gpl3+)))
+
+(define-public playerctl
+  (package
+    (name "playerctl")
+    (version "2.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/altdesktop/playerctl.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
+    (inputs `(("python-pygobject" ,python-pygobject)))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Control MPRIS-supporting media player applications")
+    (description
+     "Playerctl is a command-line utility and library for controlling media
+players that implement the MPRIS D-Bus Interface Specification.  Playerctl
+makes it easy to bind player actions, such as play and pause, to media keys.
+You can also get metadata about the playing track such as the artist and title
+for integration into status line generators or other command-line tools.")
+    (home-page "https://github.com/altdesktop/playerctl")
+    (license license:lgpl3+)))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index c0597c7e45..d9134ff910 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -31,6 +31,7 @@
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2019 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2019 Tonton <tonton@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1077,7 +1078,7 @@ private (reserved).")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.20")
+  (version "1.21")
   (source
     (origin
       (method url-fetch)
@@ -1088,7 +1089,7 @@ private (reserved).")
         (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
                        version ".tar.gz")))
       (sha256
-       (base32 "06z09igd42s0kg2ps5k7vpypg77zswfryqzbyalbllvjd0mnknbz"))))
+       (base32 "0yknrsh0wqr9s43c0wf3dyzrsi2r7k0v75hay74gqkq850xy3vyx"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
@@ -2641,3 +2642,37 @@ Supplicant.  It optimizes resource utilization by not depending on any external
 libraries and instead utilizing features provided by the Linux kernel to the
 maximum extent possible.")
     (license license:lgpl2.1+)))
+
+(define-public batctl
+  (package
+   (name "batctl")
+   (version "2019.3")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append "https://downloads.open-mesh.org/batman/releases/batman-adv-"
+                         version "/batctl-" version ".tar.gz"))
+     (sha256
+      (base32
+       "0307a01n72kg7vcm60mi8jna6bydiin2cr3ylrixra1596hkzn9b"))))
+   (inputs
+    `(("libnl" ,libnl)))
+   (native-inputs
+    `(("pkg-config" ,pkg-config)))
+   (build-system gnu-build-system)
+   (arguments
+    `(#:tests? #f
+      ;; Batctl only has a makefile. Thus we disable tests and
+      ;; configuration, passing in a few make-flags.
+      #:phases (modify-phases %standard-phases (delete 'configure))
+      #:make-flags
+      (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+            (string-append "PKG_CONFIG=" (assoc-ref %build-inputs "pkg-config")
+                           "/bin/pkg-config")
+            "CC=gcc")))
+   (home-page "https://www.open-mesh.org/projects/batman-adv/wiki/Wiki")
+   (synopsis "Management tool for the mesh networking BATMAN protocol")
+   (description "This package provides a control tool for the
+B.A.T.M.A.N. mesh networking routing protocol provided by the Linux kernel
+module @code{batman-adv}, for Layer 2.")
+   (license license:gpl2+)))
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 289b845ebc..c976d8aafb 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2019 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -853,17 +853,16 @@ permanence.")
 (define-public python-git-review
   (package
     (name "python-git-review")
-    (version "1.27.0")
+    (version "1.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "git-review" version))
        (sha256
-        (base32
-         "0xkllc8ql401sfqbjqf7i451mkgwgv0j4gysxdlyzqb27kfsyc3s"))))
+        (base32 "0nn17mfqvsa3ryjz53qjslmf60clc0vx2115kkj66h28p6vsnflf"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f ; tests require a running Gerrit server
+     '(#:tests? #f                     ; tests require a running Gerrit server
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-program
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 3b7d4b18dd..202fb36174 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -110,8 +110,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.0.1")
-        (commit "fc1fe722a05318ac05a71a0b127f231631e2843f")
-        (revision 7))
+        (commit "f63e49342bb8536d24b35ed57a2be978556f149e")
+        (revision 9))
     (package
       (name "guix")
 
@@ -127,7 +127,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0yx19hxvmkr6ar65ym87xd83n6hz02mr7ibwis7i8wah85ypfq26"))
+                  "18bxcbxcwxlgfgdapjyxg0d98c9g00ivjhhb2xyg42dbmbkh6nqy"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index ff13be24db..efca02ff68 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -21,7 +21,7 @@
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
-;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -183,23 +183,25 @@ algorithms AES or Twofish.")
 (define-public pwsafe
   (package
     (name "pwsafe")
-    (version "3.48.0")
-    (home-page "https://www.pwsafe.org/" )
+    (version "3.50.0")
+    (home-page "https://www.pwsafe.org/")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/pwsafe/pwsafe.git")
              (commit version)))
-       (sha256 (base32 "0hxv23yh76liggxbjn4m132z15sklra8ms341xgzl4n5vjx30ihi"))
-       (file-name (string-append name "-" version "-checkout"))))
+       (sha256
+        (base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs"))
+       (file-name (git-file-name name version))))
     (build-system cmake-build-system)
-    (native-inputs `(("gettext" ,gettext-minimal)
-                     ("perl" ,perl)
-                     ("zip" ,zip)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("gtest" ,googletest)
+       ("perl" ,perl)
+       ("zip" ,zip)))
     (inputs `(("curl" ,curl)
               ("file" ,file)
-              ("gtest" ,googletest)
               ("libuuid" ,util-linux)
               ("libxt" ,libxt)
               ("libxtst" ,libxtst)
diff --git a/gnu/packages/patches/emacs-magit-log-format-author-margin.patch b/gnu/packages/patches/emacs-magit-log-format-author-margin.patch
new file mode 100644
index 0000000000..fc52157a32
--- /dev/null
+++ b/gnu/packages/patches/emacs-magit-log-format-author-margin.patch
@@ -0,0 +1,72 @@
+From 94914ca4690c0cff12d600a0c8ba6bfb3fb38dc5 Mon Sep 17 00:00:00 2001
+From: Jonas Bernoulli <jonas@bernoul.li>
+Date: Tue, 25 Jun 2019 21:44:32 +0200
+Subject: [PATCH] magit-log-format-author-margin: New function
+
+Split it from `magit-log-format-margin'.
+---
+ lisp/magit-log.el | 48 +++++++++++++++++++++++++----------------------
+ 1 file changed, 26 insertions(+), 22 deletions(-)
+
+diff --git a/lisp/magit-log.el b/lisp/magit-log.el
+index c8e6ef63..c0a79b19 100644
+--- a/lisp/magit-log.el
++++ b/lisp/magit-log.el
+@@ -1374,28 +1374,32 @@ The shortstat style is experimental and rather slow."
+   (when-let ((option (magit-margin-option)))
+     (if magit-log-margin-show-shortstat
+         (magit-log-format-shortstat-margin rev)
+-      (pcase-let ((`(,_ ,style ,width ,details ,details-width)
+-                   (or magit-buffer-margin
+-                       (symbol-value option))))
+-        (magit-make-margin-overlay
+-         (concat (and details
+-                      (concat (propertize (truncate-string-to-width
+-                                           (or author "")
+-                                           details-width
+-                                           nil ?\s (make-string 1 magit-ellipsis))
+-                                          'face 'magit-log-author)
+-                              " "))
+-                 (propertize
+-                  (if (stringp style)
+-                      (format-time-string
+-                       style
+-                       (seconds-to-time (string-to-number date)))
+-                    (pcase-let* ((abbr (eq style 'age-abbreviated))
+-                                 (`(,cnt ,unit) (magit--age date abbr)))
+-                      (format (format (if abbr "%%2i%%-%ic" "%%2i %%-%is")
+-                                      (- width (if details (1+ details-width) 0)))
+-                              cnt unit)))
+-                  'face 'magit-log-date)))))))
++      (magit-log-format-author-margin author date))))
++
++(defun magit-log-format-author-margin (author date &optional previous-line)
++  (pcase-let ((`(,_ ,style ,width ,details ,details-width)
++               (or magit-buffer-margin
++                   (symbol-value option))))
++    (magit-make-margin-overlay
++     (concat (and details
++                  (concat (propertize (truncate-string-to-width
++                                       (or author "")
++                                       details-width
++                                       nil ?\s (make-string 1 magit-ellipsis))
++                                      'face 'magit-log-author)
++                          " "))
++             (propertize
++              (if (stringp style)
++                  (format-time-string
++                   style
++                   (seconds-to-time (string-to-number date)))
++                (pcase-let* ((abbr (eq style 'age-abbreviated))
++                             (`(,cnt ,unit) (magit--age date abbr)))
++                  (format (format (if abbr "%%2i%%-%ic" "%%2i %%-%is")
++                                  (- width (if details (1+ details-width) 0)))
++                          cnt unit)))
++              'face 'magit-log-date))
++     previous-line)))
+ 
+ (defun magit-log-format-shortstat-margin (rev)
+   (magit-make-margin-overlay
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/mumps-shared-libseq.patch b/gnu/packages/patches/mumps-shared-libseq.patch
new file mode 100644
index 0000000000..feafcf123b
--- /dev/null
+++ b/gnu/packages/patches/mumps-shared-libseq.patch
@@ -0,0 +1,42 @@
+Create a shared version of the sequential library, MUST BE LAST IN SERIES
+
+Index: mumps/libseq/Makefile
+===================================================================
+--- mumps.orig/libseq/Makefile
++++ mumps/libseq/Makefile
+@@ -8,15 +8,17 @@ all: libmpiseq
+ 
+ include ../Makefile.inc
+ 
+-libmpiseq: libmpiseq$(PLAT)$(LIBEXT)
++libmpiseq: libmpiseq$(PLAT).a libmpiseq$(PLAT).so
+ 
+-libmpiseq$(PLAT)$(LIBEXT): mpi.o mpic.o elapse.o
+-	$(AR)$@ mpi.o mpic.o elapse.o
++libmpiseq$(PLAT).a: mpi.o mpic.o elapse.o
++	$(AR) $@ mpi.o mpic.o elapse.o
+ 	$(RANLIB) $@
++libmpiseq$(PLAT).so: mpi.o mpic.o elapse.o
++	$(FC) -shared $^ -Wl,-soname,libmpiseq$(PLAT)-5.1.2.so -o libmpiseq$(PLAT)-5.1.2.so -Wl,-z,defs
+ .f.o:
+-	$(FC) $(OPTF)              -c $*.f $(OUTF)$*.o
++	$(FC) $(OPTF)              -fPIC -c $*.f $(OUTF)$*.o
+ .c.o:
+-	$(CC) $(OPTC) $(CDEFS) -I. -c $*.c $(OUTC)$*.o
++	$(CC) $(OPTC) $(CDEFS) -I. -fPIC -c $*.c $(OUTC)$*.o
+ 
+ clean:
+-	$(RM) *.o *$(LIBEXT)
++	$(RM) *.o *.a *.so
+Index: mumps/Makefile
+===================================================================
+--- mumps.orig/Makefile
++++ mumps/Makefile
+@@ -60,6 +60,7 @@ requiredobj: Makefile.inc $(LIBSEQNEEDED
+ 
+ libseqneeded:
+ 	(cd libseq; $(MAKE))
++	cp libseq/lib* $(libdir)
+ 
+ # Build the libpord.a library and copy it into $(topdir)/lib
+ $(libdir)/libpord$(PLAT).a:
diff --git a/gnu/packages/patches/mumps-shared-mumps.patch b/gnu/packages/patches/mumps-shared-mumps.patch
new file mode 100644
index 0000000000..9e2491f300
--- /dev/null
+++ b/gnu/packages/patches/mumps-shared-mumps.patch
@@ -0,0 +1,63 @@
+Create a shared version of the MUMPS library.
+
+Index: mumps/src/Makefile
+===================================================================
+--- mumps.orig/src/Makefile
++++ mumps/src/Makefile
+@@ -23,8 +23,10 @@ z:
+ 
+ include $(topdir)/Makefile.inc
+ 
+-mumps_lib:    $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \
+-              $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT)
++mumps_lib:    $(libdir)/libmumps_common$(PLAT).a \
++              $(libdir)/libmumps_common$(PLAT).so \
++              $(libdir)/lib$(ARITH)mumps$(PLAT).a \
++              $(libdir)/lib$(ARITH)mumps$(PLAT).so
+ 
+ OBJS_COMMON_MOD = \
+         lr_common.o \
+@@ -167,14 +169,22 @@ OBJS_OTHER = \
+         $(ARITH)tools.o\
+         $(ARITH)type3_root.o
+ 
+-$(libdir)/libmumps_common$(PLAT)$(LIBEXT):      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
+-	$(AR)$@ $?
++$(libdir)/libmumps_common$(PLAT).a:      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
++	$(AR) $@ $?
+ 	$(RANLIB) $@
+ 
+-$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT):    $(OBJS_MOD) $(OBJS_OTHER)
+-	$(AR)$@ $?
++$(libdir)/libmumps_common$(PLAT).so:      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
++	$(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.1.2.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.1.2.so -Wl,-z,defs
++	ln -s libmumps_common$(PLAT)-5.1.2.so $@
++
++$(libdir)/lib$(ARITH)mumps$(PLAT).a:    $(OBJS_MOD) $(OBJS_OTHER)
++	$(AR) $@ $?
+ 	$(RANLIB) $@
+ 
++$(libdir)/lib$(ARITH)mumps$(PLAT).so:    $(OBJS_MOD) $(OBJS_OTHER)
++	$(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.1.2.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.1.2.so -Wl,-z,defs
++	ln -s lib$(ARITH)mumps$(PLAT)-5.1.2.so $@
++
+ # Dependencies between modules:
+ $(ARITH)mumps_load.o:		$(ARITH)mumps_comm_buffer.o \
+ 				$(ARITH)mumps_struc_def.o \
+@@ -290,13 +300,13 @@ $(OBJS_OTHER):$(OBJS_COMMON_MOD) $(OBJS_
+ 
+ .SUFFIXES: .c .F .o
+ .F.o:
+-	$(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -c $*.F $(OUTF)$*.o
++	$(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -fPIC -c $*.F $(OUTF)$*.o
+ .c.o:
+-	$(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC)$*.o
++	$(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -fPIC -c $*.c $(OUTC)$*.o
+ 
+ $(ARITH)mumps_c.o:	mumps_c.c
+ 	$(CC) $(OPTC) $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \
+-	      $(IORDERINGSC) $(ORDERINGSC) -I../include -c mumps_c.c $(OUTC)$@
++	      $(IORDERINGSC) $(ORDERINGSC) -I../include -fPIC -c mumps_c.c $(OUTC)$@
+ 
+ 
+ clean:
diff --git a/gnu/packages/patches/mumps-shared-pord.patch b/gnu/packages/patches/mumps-shared-pord.patch
new file mode 100644
index 0000000000..48062d4f89
--- /dev/null
+++ b/gnu/packages/patches/mumps-shared-pord.patch
@@ -0,0 +1,77 @@
+Create static and shared versions of the PORD library.
+
+Index: mumps/PORD/lib/Makefile
+===================================================================
+--- mumps.orig/PORD/lib/Makefile
++++ mumps/PORD/lib/Makefile
+@@ -9,7 +9,7 @@
+ 
+ INCLUDES = -I../include
+ 
+-COPTIONS = $(INCLUDES) $(CFLAGS) $(OPTFLAGS)
++COPTIONS = $(INCLUDES) $(CFLAGS) $(OPTFLAGS) -fPIC
+ 
+ OBJS = graph.o gbipart.o gbisect.o ddcreate.o ddbisect.o nestdiss.o \
+        multisector.o gelim.o bucket.o tree.o \
+@@ -24,12 +24,16 @@ OBJS = graph.o gbipart.o gbisect.o ddcre
+ .c.o:
+ 	$(CC) $(COPTIONS) -c $*.c $(OUTC)$*.o
+ 
+-libpord$(LIBEXT):$(OBJS)
+-	$(AR)$@ $(OBJS)
++libpord$(PLAT).a:$(OBJS)
++	$(AR) $@ $(OBJS)
+ 	$(RANLIB) $@
+ 
++libpord$(PLAT).so: $(OBJS)
++	$(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-5.1.2.so -o libpord$(PLAT)-5.1.2.so -Wl,-z,defs
++	ln -s libpord$(PLAT)-5.1.2.so $@
++
+ clean:
+ 	rm -f *.o
+ 
+ realclean:
+-	rm -f *.o libpord.a
++	rm -f *.o libpord*.a *.so
+Index: mumps/Makefile
+===================================================================
+--- mumps.orig/Makefile
++++ mumps/Makefile
+@@ -54,7 +54,7 @@ dexamples:	d
+ multi_example:	s d c z
+ 	(cd examples ; $(MAKE) multi)
+ 
+-requiredobj: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT)$(LIBEXT)
++requiredobj: Makefile.inc $(LIBSEQNEEDED) $(libdir)/libpord$(PLAT).a $(libdir)/libpord$(PLAT).so
+ 
+ # dummy MPI library (sequential version)
+ 
+@@ -62,19 +62,25 @@ libseqneeded:
+ 	(cd libseq; $(MAKE))
+ 
+ # Build the libpord.a library and copy it into $(topdir)/lib
+-$(libdir)/libpord$(PLAT)$(LIBEXT):
++$(libdir)/libpord$(PLAT).a:
+ 	if [ "$(LPORDDIR)" != "" ] ; then \
+ 	  cd $(LPORDDIR); \
+ 	  $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \
+ 	fi;
+ 	if [ "$(LPORDDIR)" != "" ] ; then \
+-	  cp $(LPORDDIR)/libpord$(LIBEXT) $@; \
++	  cp $(LPORDDIR)/libpord$(PLAT).a $@; \
+ 	fi;
+ 
++$(libdir)/libpord$(PLAT).so:
++	if [ "$(LPORDDIR)" != "" ] ; then \
++	cd $(LPORDDIR); make CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" ARFUNCT= RANLIB="$(RANLIB)" libpord$(PLAT).so; fi;
++	if [ "$(LPORDDIR)" != "" ] ; then \
++	cp -a $(LPORDDIR)/libpord*.so lib/; fi;
++
+ clean:
+ 	(cd src; $(MAKE) clean)
+ 	(cd examples; $(MAKE) clean)
+-	(cd $(libdir); $(RM) *$(PLAT)$(LIBEXT))
++	(cd $(libdir); $(RM) *$(PLAT).a *$(PLAT).so)
+ 	(cd libseq; $(MAKE) clean)
+ 	if [ "$(LPORDDIR)" != "" ] ; then \
+ 	  cd $(LPORDDIR); $(MAKE) realclean; \
diff --git a/gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch b/gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch
deleted file mode 100644
index 4e801c3225..0000000000
--- a/gnu/packages/patches/ruby-concurrent-ignore-broken-test.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-This test appears to fail in GNU Guix and elsewhere.  It has been reported
-upstream at https://github.com/puma/puma/issues/995
-
-diff --git a/spec/concurrent/channel_spec.rb b/spec/concurrent/channel_spec.rb
-index d70fba8..4f29a8b 100644
---- a/spec/concurrent/channel_spec.rb
-+++ b/spec/concurrent/channel_spec.rb
-@@ -598,7 +598,7 @@ module Concurrent
-           }.to raise_error(ArgumentError)
-         end
- 
--        it 'loops until the block returns false' do
-+        xit 'loops until the block returns false' do
-           actual = 0
-           expected = 3
-           latch = Concurrent::CountDownLatch.new(expected)
diff --git a/gnu/packages/patches/ruby-concurrent-test-arm.patch b/gnu/packages/patches/ruby-concurrent-test-arm.patch
deleted file mode 100644
index 06d5657814..0000000000
--- a/gnu/packages/patches/ruby-concurrent-test-arm.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Work around two test suite failures on ARM:
-
-  https://github.com/ruby-concurrency/concurrent-ruby/issues/547
-
-The regexps here assume addresses like "0x1234" but on ARM (32-bit)
-we get something like "0x-7db1e810" (notice the dash).
-
-diff --git a/spec/concurrent/edge/promises_spec.rb b/spec/concurrent/edge/promises_spec.rb
-index 727210f..149f7cd 100644
---- a/spec/concurrent/edge/promises_spec.rb
-+++ b/spec/concurrent/edge/promises_spec.rb
-@@ -371,9 +371,9 @@ describe 'Concurrent::Promises' do
-       four  = three.delay.then(&:succ)
- 
-       # meaningful to_s and inspect defined for Future and Promise
--      expect(head.to_s).to match /<#Concurrent::Promises::Future:0x[\da-f]+ pending>/
-+      expect(head.to_s).to match /<#Concurrent::Promises::Future:0x-?[\da-f]+ pending>/
-       expect(head.inspect).to(
--          match(/<#Concurrent::Promises::Future:0x[\da-f]+ pending>/))
-+          match(/<#Concurrent::Promises::Future:0x-?[\da-f]+ pending>/))
- 
-       # evaluates only up to three, four is left unevaluated
-       expect(three.value!).to eq 3
-diff --git a/spec/concurrent/map_spec.rb b/spec/concurrent/map_spec.rb
-index c4050be..0a9095d 100644
---- a/spec/concurrent/map_spec.rb
-+++ b/spec/concurrent/map_spec.rb
-@@ -794,7 +794,7 @@ module Concurrent
-     end
- 
-     it '#inspect' do
--      regexp = /\A#<Concurrent::Map:0x[0-9a-f]+ entries=[0-9]+ default_proc=.*>\Z/i
-+      regexp = /\A#<Concurrent::Map:0x-?[0-9a-f]+ entries=[0-9]+ default_proc=.*>\Z/i
-       expect(Concurrent::Map.new.inspect).to match(regexp)
-       expect((Concurrent::Map.new {}).inspect).to match(regexp)
-       map = Concurrent::Map.new
diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm
index 5eac984423..2d2a24b6b0 100644
--- a/gnu/packages/perl-check.scm
+++ b/gnu/packages/perl-check.scm
@@ -1170,7 +1170,7 @@ reported, and the tests skipped.")
 (define-public perl-test-runvalgrind
   (package
     (name "perl-test-runvalgrind")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
@@ -1179,8 +1179,7 @@ reported, and the tests skipped.")
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "0cfndkn2k9pcx290wcblwmrwh1ybs0grxjlsrp8fbqqbmmjpb53h"))))
+        (base32 "175hlycrhgwrp7j4rwx5bk4fd6775242wjdqv107rvgsrszsi915"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 7d1235ed65..baa29af22e 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -652,14 +652,14 @@ easy to use abstraction of the file system or shared memory.")
 (define-public perl-cache-fastmmap
   (package
     (name "perl-cache-fastmmap")
-    (version "1.47")
+    (version "1.48")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RO/ROBM/"
                            "Cache-FastMmap-" version ".tar.gz"))
        (sha256
-        (base32 "0fdni3iyjfnx8ldgrz3h6z6yxbklrx76klcghg6xvmzd878yqlmi"))))
+        (base32 "118y5lxwa092zrii7mcwnqypff7424w1dpgfkg8zlnz7h2mmnd9c"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Cache-FastMmap")
     (synopsis "Shared memory interprocess cache via mmap")
@@ -935,18 +935,19 @@ sophisticated C3 method resolution order.")
 (define-public perl-class-c3-adopt-next
   (package
     (name "perl-class-c3-adopt-next")
-    (version "0.13")
+    (version "0.14")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Class-C3-Adopt-NEXT-" version ".tar.gz"))
        (sha256
-        (base32
-         "1rwgbx6dsy4rpas94p8wakzj7hrla1p15jnbm24kwhsv79gp91ld"))))
+        (base32 "1xsbydmiskpa1qbmnf6n39cb83nlb432xgkad9kfhxnvm8jn4rw5"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-test-exception" ,perl-test-exception)))
+     `(("perl-module-build" ,perl-module-build)
+       ("perl-module-build-tiny" ,perl-module-build-tiny)
+       ("perl-test-exception" ,perl-test-exception)))
     (propagated-inputs
      `(("perl-list-moreutils" ,perl-list-moreutils)
        ("perl-mro-compat" ,perl-mro-compat)))
@@ -1157,19 +1158,18 @@ write accessor methods for your objects that perform standard tasks.")
 (define-public perl-class-method-modifiers
   (package
     (name "perl-class-method-modifiers")
-    (version "2.12")
+    (version "2.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Class-Method-Modifiers-" version ".tar.gz"))
        (sha256
-        (base32
-         "1j3swa212wh14dq5r6zjarm2lzpx6mrdfplpjy65px8b09ri0k74"))))
+        (base32 "0qzx83mgd71hlc2m1kpw15dqsjzjq7b2cj3sdgg45a0q23vhfn5b"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
-       ("perl-test-requires" ,perl-test-requires)))
+       ("perl-test-needs" ,perl-test-needs)))
     (home-page "https://metacpan.org/release/Class-Method-Modifiers")
     (synopsis "Moose-like method modifiers")
     (description "Class::Method::Modifiers provides three modifiers:
@@ -2390,25 +2390,27 @@ to do this without writing reams of structural code.")
 (define-public perl-datetime-format-flexible
   (package
     (name "perl-datetime-format-flexible")
-    (version "0.28")
+    (version "0.32")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TH/THINC/"
                            "DateTime-Format-Flexible-" version ".tar.gz"))
        (sha256
-        (base32
-         "1g63zs0q2x40h29r7in50c55g6kxiw3m2faw2p6c4rg74sj2k2b5"))))
+        (base32 "1vnq3a8bwhidcv3z9cvcmfiq2qa84hikr993ffr19fw7nbzbk9sh"))))
     (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)
+       ("perl-test-nowarnings" ,perl-test-nowarnings)
+       ("perl-test-mocktime" ,perl-test-mocktime)))
     (propagated-inputs
      `(("perl-datetime" ,perl-datetime)
        ("perl-datetime-format-builder" ,perl-datetime-format-builder)
        ("perl-datetime-timezone" ,perl-datetime-timezone)
        ("perl-list-moreutils" ,perl-list-moreutils)
-       ("perl-module-pluggable" ,perl-module-pluggable)
-       ("perl-test-mocktime" ,perl-test-mocktime)))
+       ("perl-module-pluggable" ,perl-module-pluggable)))
     (home-page "https://metacpan.org/release/DateTime-Format-Flexible")
-    (synopsis "Parse data/time strings")
+    (synopsis "Parse date and time strings")
     (description "DateTime::Format::Flexible attempts to take any string you
 give it and parse it into a DateTime object.")
     (license (package-license perl))))
@@ -9395,15 +9397,14 @@ neither visible nor modifiable from Perl space).")
 (define-public perl-yaml
   (package
     (name "perl-yaml")
-    (version "1.27")
+    (version "1.29")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TI/TINITA/"
                            "YAML-" version ".tar.gz"))
        (sha256
-        (base32
-         "1yc2yqjyrcdlhp209f3a63f9xx6v5klisli25fv221yy43la34n9"))))
+        (base32 "0gl5ssvrdajlbc85cy6z873n9cwlssk5q8z97a31vyiikhw5fp4w"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-yaml" ,perl-test-yaml)))
@@ -9416,21 +9417,18 @@ on the YAML 1.0 specification.")
 (define-public perl-yaml-libyaml
   (package
     (name "perl-yaml-libyaml")
-    (version "0.78")
+    (version "0.80")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "mirror://cpan/authors/id/T/TI/TINITA/YAML-LibYAML-"
-             version
-             ".tar.gz"))
+             version ".tar.gz"))
        (sha256
-        (base32 "03plv3wfqqqf7g8mxr8f6wlki2af8w3rg9xcfii1z5l1f1iarxx1"))))
+        (base32 "1nhn4w52kpq757rxl052f61h36rdzsy416k740m3fy5ih7axhq4x"))))
     (build-system perl-build-system)
-    (home-page
-     "https://metacpan.org/release/YAML-LibYAML")
-    (synopsis
-     "Perl YAML Serialization using XS and libyaml")
+    (home-page "https://metacpan.org/release/YAML-LibYAML")
+    (synopsis "Perl YAML Serialization using XS and libyaml")
     (description
      "@code{YAML::XS} is a Perl XS binding to libyaml which offers Perl the
 best YAML support to date.")
@@ -9707,7 +9705,7 @@ File::Find replacement in Perl.")
 (define-public perl-file-find-object-rule
  (package
   (name "perl-file-find-object-rule")
-  (version "0.0309")
+  (version "0.0311")
   (source
     (origin
       (method url-fetch)
@@ -9716,7 +9714,7 @@ File::Find replacement in Perl.")
              version
              ".tar.gz"))
       (sha256
-        (base32 "1qr1rrp9gn0bpsixsrkan710sxc7bnhirh0anjsw2ihn4wdy3151"))))
+        (base32 "0gjzfd5fz7mhr5abafxr7qic7nwhk7y9iv17as6l880973j952h3"))))
   (build-system perl-build-system)
   (native-inputs
     `(("perl-module-build" ,perl-module-build)))
diff --git a/gnu/packages/poedit.scm b/gnu/packages/poedit.scm
index 0b21a9eea7..3487636a3d 100644
--- a/gnu/packages/poedit.scm
+++ b/gnu/packages/poedit.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,7 +38,7 @@
 (define-public poedit
   (package
     (name "poedit")
-    (version "2.2.1")
+    (version "2.2.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -46,7 +47,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fxzmry4b23l90j03jdyvd4jprdpy4xcnhw7xrmmfnlbh2abf9x7"))
+                "147jiiab4n0nbhzp1vw1jn8ykhy7qh6zf02654ppi0imdfvfnjss"))
              (modules '((guix build utils)))
              (snippet
               '(begin
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index ffef3319f7..752d120782 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -30,6 +30,7 @@
 ;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
 ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -303,6 +304,34 @@ other HTTP libraries.")
 (define-public python2-httplib2
   (package-with-python2 python-httplib2))
 
+(define-public httpie
+  (package
+    (name "httpie")
+    (version "1.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "httpie" version))
+       (sha256
+        (base32
+         "103fcigpxf4nqmrdqjnyz7d9n4n16906slwmmqqc0gkxv8hnw6vd"))))
+    (build-system python-build-system)
+    (arguments
+     ;; The tests attempt to access external web servers, so we cannot run them.
+     '(#:tests? #f))
+    (propagated-inputs
+     `(("python-colorama" ,python-colorama)
+       ("python-pygments" ,python-pygments)
+       ("python-requests" ,python-requests)))
+    (home-page "https://httpie.org/")
+    (synopsis "cURL-like tool for humans")
+    (description
+     "A command line HTTP client with an intuitive UI, JSON support,
+syntax highlighting, wget-like downloads, plugins, and more.  It consists of
+a single http command designed for painless debugging and interaction with
+HTTP servers, RESTful APIs, and web services.")
+    (license license:bsd-3)))
+
 (define-public python-html2text
   (package
     (name "python-html2text")
@@ -817,21 +846,18 @@ connection to each user.")
 (define-public python-tornado-http-auth
   (package
     (name "python-tornado-http-auth")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "tornado-http-auth" version))
        (sha256
-        (base32
-         "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
+        (base32 "0hyc5f0a09i5yb99pk4bxpg6w9ichbrb5cv7hc9hff7rxd8w0v0x"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-tornado" ,python-tornado)))
-    (home-page
-     "https://github.com/gvalkov/tornado-http-auth")
-    (synopsis
-     "Digest and basic authentication module for Tornado")
+    (home-page "https://github.com/gvalkov/tornado-http-auth")
+    (synopsis "Digest and basic authentication module for Tornado")
     (description
      "Provides support for adding authentication to services using the Tornado
 web framework, either via the basic or digest authentication schemes.")
@@ -2616,7 +2642,7 @@ for Flask programs that are using @code{python-alembic}.")
 (define-public python-genshi
   (package
     (name "python-genshi")
-    (version "0.7.1")
+    (version "0.7.2")
     (source
      (origin
        (method git-fetch)
@@ -2625,7 +2651,7 @@ for Flask programs that are using @code{python-alembic}.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01fx8fnpay5w048ppyjivg2dgfpp5rybn07y3pfsgj2knram3nhl"))))
+        (base32 "06rch30x10l105k5b6rahd839lkhmgrzn6691wbci0cb2fzps32w"))))
     (build-system python-build-system)
     (home-page "https://genshi.edgewall.org/")
     (synopsis "Toolkit for generation of output for the web")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index daef86b03f..cd7cea244c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -66,6 +66,7 @@
 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
+;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1571,6 +1572,27 @@ existing ones.")
                    ;; Tests don't work with python2.
                    #:tests? #f)))))
 
+(define-public python-poyo
+  (package
+    (name "python-poyo")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "poyo" version))
+       (sha256
+        (base32
+         "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/hackebrot/poyo")
+    (synopsis "Lightweight YAML Parser for Python")
+    (description
+     "This package provides a lightweight YAML Parser for Python.  It supports
+only a chosen subset of the YAML format that is required to parse cookiecutter
+user configuration files.  It does not have support for serializing into YAML
+and is not compatible with JSON.")
+    (license license:expat)))
+
 (define-public scons
   (package
     (name "scons")
@@ -2173,13 +2195,13 @@ cutting and pasting that code over and over.")
 (define-public python-unidecode
   (package
     (name "python-unidecode")
-    (version "1.1.0")
+    (version "1.1.1")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "Unidecode" version))
              (sha256
               (base32
-               "00pi0czzwvbf7djhkkjyvimj60wqdx0llbddzfnax650g9b8yscc"))))
+               "1s6cp2lv4m0f00hjckjz8p6m7d3n3v16jvg353llf5ia1iqsnsib"))))
     (build-system python-build-system)
     (home-page "https://pypi.python.org/pypi/Unidecode")
     (synopsis "ASCII transliterations of Unicode text")
@@ -2495,6 +2517,30 @@ written in pure Python.")
 (define-public python2-jinja2
   (package-with-python2 python-jinja2))
 
+(define-public python-jinja2-time
+  (package
+    (name "python-jinja2-time")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jinja2-time" version))
+       (sha256
+        (base32
+         "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-arrow" ,python-arrow)
+       ("python-jinja2" ,python-jinja2)))
+    (home-page
+     "https://github.com/hackebrot/jinja2-time")
+    (synopsis "Jinja2 Extension for Dates and Times")
+    (description
+     "This package provides an extension for the template engine Jinja2.  It
+adds a 'now' tag providing a convenient access to the arrow.now() API from
+templates.  A format string can be provided to control the output.")
+    (license license:expat)))
+
 (define-public python-pystache
   (package
     (name "python-pystache")
@@ -2714,7 +2760,7 @@ to deprecate classes, functions or methods.")
 (define-public python-pygithub
   (package
     (name "python-pygithub")
-    (version "1.43.7")
+    (version "1.43.8")
     (source
      ;; We fetch from the Git repo because there are no tests in the PyPI
      ;; archive.
@@ -2725,8 +2771,7 @@ to deprecate classes, functions or methods.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0ww92zz0ja9w6rw83vphmn8rwmcn6abg16j4q7zxjc0rrg2cfj9i"))))
+        (base32 "1625v558xga5mwhl9jqmibywy5qafmg1vqrirqz6zfq1la1d22mw"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -3075,44 +3120,39 @@ Language (TOML) configuration files.")
 Server (PLS).")
     (license license:expat)))
 
-;; XXX: We must use a non-release version since the latest release version
-;; requires python-jedi version < 0.15.
 (define-public python-language-server
-  (let ((commit "c3cab77a85b1de4af1aec1bafea6a7320d6baec5")
-        (revision "1"))
-    (package
-      (name "python-language-server")
-      (version (git-version "0.28.3" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/palantir/python-language-server.git")
-               (commit commit)))
-         (sha256
-          (base32
-           "1q0xdwgln09sh58j0ryygj92hfgdhwcs57zjvqihya23jr5v0bz4"))))
-      (build-system python-build-system)
-      (propagated-inputs
-       `(("python-pluggy" ,python-pluggy)
-         ("python-jsonrpc-server" ,python-jsonrpc-server)
-         ("python-jedi" ,python-jedi)
-         ("python-yapf" ,python-yapf)
-         ("python-pyflakes" ,python-pyflakes)
-         ("python-pydocstyle" ,python-pydocstyle)
-         ("python-pycodestyle" ,python-pycodestyle)
-         ("python-mccabe" ,python-mccabe)
-         ("python-rope" ,python-rope)
-         ("python-autopep8" ,python-autopep8)
-         ("python-pylint" ,python-pylint)))
-      (home-page "https://github.com/palantir/python-language-server")
-      (synopsis "Python implementation of the Language Server Protocol")
-      (description
-       "The Python Language Server (pyls) is an implementation of the Python 3
+  (package
+    (name "python-language-server")
+    (version "0.29.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-language-server" version))
+       (sha256
+        (base32
+         "1f8qlflh6j3s7qfmzhirpl8fgidl6f0qbakdmiml96wdxzvka0s3"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pluggy" ,python-pluggy)
+       ("python-jsonrpc-server" ,python-jsonrpc-server)
+       ("python-jedi" ,python-jedi)
+       ("python-yapf" ,python-yapf)
+       ("python-pyflakes" ,python-pyflakes)
+       ("python-pydocstyle" ,python-pydocstyle)
+       ("python-pycodestyle" ,python-pycodestyle)
+       ("python-mccabe" ,python-mccabe)
+       ("python-rope" ,python-rope)
+       ("python-autopep8" ,python-autopep8)
+       ("python-flake8" ,python-flake8)
+       ("python-pylint" ,python-pylint)))
+    (home-page "https://github.com/palantir/python-language-server")
+    (synopsis "Python implementation of the Language Server Protocol")
+    (description
+     "The Python Language Server (pyls) is an implementation of the Python 3
 language specification for the Language Server Protocol (LSP).  This tool is
 used in text editing environments to provide a complete and integrated
 feature-set for programming Python effectively.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public python-black
   (package
@@ -3892,7 +3932,7 @@ To address this and enable easy cycling over arbitrary @code{kwargs}, the
 (define-public python-colorspacious
   (package
     (name "python-colorspacious")
-    (version "1.1.0")
+    (version "1.1.2")
     (source
      (origin
        (method git-fetch)
@@ -3901,7 +3941,7 @@ To address this and enable easy cycling over arbitrary @code{kwargs}, the
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0g0lxqiscy5g5rq9421vv7abg0c90jzy0zmas2z3hya6k2dr5aid"))))
+        (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-numpy" ,python-numpy)))
@@ -9081,6 +9121,63 @@ server with very acceptable performance.")
 (define-public python2-waitress
   (package-with-python2 python-waitress))
 
+(define-public python-whichcraft
+  (package
+    (name "python-whichcraft")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "whichcraft" version))
+       (sha256
+        (base32
+         "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/pydanny/whichcraft")
+    (synopsis "Cross-platform cross-python shutil.which functionality")
+    (description
+     "This package provides a shim of the shutil.which function that's
+designed to work across multiple versions of Python.")
+    (license license:bsd-3)))
+
+(define-public python-cookiecutter
+  (package
+    (name "python-cookiecutter")
+    (version "1.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "cookiecutter" version))
+       (sha256
+        (base32
+         "0glsvaz8igi2wy1hsnhm9fkn6560vdvdixzvkq6dn20z3hpaa5hk"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-freezegun" ,python-freezegun)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-catchlog" ,python-pytest-catchlog)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-mock" ,python-pytest-mock)))
+    (propagated-inputs
+     `(("python-binaryornot" ,python-binaryornot)
+       ("python-click" ,python-click)
+       ("python-future" ,python-future)
+       ("python-jinja2" ,python-jinja2)
+       ("python-jinja2-time" ,python-jinja2-time)
+       ("python-poyo" ,python-poyo)
+       ("python-requests" ,python-requests)
+       ("python-whichcraft" ,python-whichcraft)))
+    (home-page "https://github.com/audreyr/cookiecutter")
+    (synopsis
+     "Command-line utility that creates projects from project templates")
+    (description
+     "This package provides a command-line utility that creates projects from
+project templates, e.g. creating a Python package project from a Python package
+project template.")
+    (license license:bsd-3)))
+
 (define-public python-pyquery
   (package
     (name "python-pyquery")
@@ -9962,14 +10059,13 @@ to occurrences in strings and comments.")
 (define-public python-py3status
   (package
     (name "python-py3status")
-    (version "3.16")
+    (version "3.21")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "py3status" version))
        (sha256
-        (base32
-         "1xrfph277bgjln3jbpzpgkhxad04fjvj7s3xfil42q1sxi4s3q3g"))))
+        (base32 "16z8zq83hxy48g6hh4xczbdz50qvxv9k1aahr4fqq7jis60cc262"))))
     (build-system python-build-system)
     (inputs
      `(("file" ,file)))
@@ -15065,16 +15161,16 @@ manager compatible with @code{asyncio}.")
 (define-public python-glob2
   (package
     (name "python-glob2")
-    (version "0.6")
+    (version "0.7")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/miracle2k/python-glob2.git")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1lm1xz3k3l0k1c5bcp9hlzmi3gp5j8dl1k3xhpiq5mnm0xq6n163"))))
+        (base32 "160nh2ay9lw2hi0rixpzb2k87r6ql56k0j2cm87lqz8xc8zbw919"))))
     (build-system python-build-system)
     (home-page "https://github.com/miracle2k/python-glob2/")
     (synopsis "Extended Version of the python buildin glob module")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 21fbd2ecd4..71d02eac52 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
@@ -7171,27 +7171,22 @@ call.")
 (define-public ruby-concurrent
   (package
     (name "ruby-concurrent")
-    (version "1.0.5")
+    (version "1.1.5")
     (source
      (origin
-       (method url-fetch)
+       (method git-fetch)
        ;; Download from GitHub because the rubygems version does not contain
        ;; Rakefile.
-       (uri (string-append
-             "https://github.com/ruby-concurrency/concurrent-ruby/archive/v"
-             version
-             ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (git-reference
+             (url "https://github.com/ruby-concurrency/concurrent-ruby")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny"))
-       ;; Exclude failing test reported at
-       ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534
-       (patches (search-patches "ruby-concurrent-ignore-broken-test.patch"
-                                "ruby-concurrent-test-arm.patch"))))
+         "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
     (build-system ruby-build-system)
     (arguments
-     `(#:test-target "spec"
+     `(#:test-target "ci"
        #:phases
        (modify-phases %standard-phases
          (add-before 'replace-git-ls-files 'remove-extra-gemspecs
@@ -7201,15 +7196,31 @@ call.")
              (delete-file "concurrent-ruby-edge.gemspec")
              (delete-file "concurrent-ruby-ext.gemspec")
              #t))
-         (add-before 'build 'replace-git-ls-files2
+         (replace 'replace-git-ls-files
            (lambda _
-             (substitute* "support/file_map.rb"
-               (("git ls-files") "find * |sort"))
+             ;; XXX: The default substitution made by this phase is not fully
+             ;; compatible with "git ls-files".  The latter produces file names
+             ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
+             ;; which gives "./lib/foo".  That difference in turn breaks the
+             ;; comparison against a glob pattern in this script.
+             (substitute* "concurrent-ruby.gemspec"
+               (("git ls-files") "find * -type f | sort"))
+             #t))
+         (add-before 'build 'remove-jar-from-gemspec
+           (lambda _
+             ;; The gemspec wants to include a JAR file that we do not build
+             ;; nor need.
+             (substitute* "concurrent-ruby.gemspec"
+               (("'lib/concurrent/concurrent_ruby.jar'")
+                ""))
+             #t))
+         (add-before 'build 'remove-rake_compiler_dock-dependency
+           (lambda _
+             ;; This library is only used when building for non-MRI targets.
+             (substitute* "Rakefile"
+               (("require 'rake_compiler_dock'")
+                ""))
              #t))
-         (add-before 'check 'rake-compile
-           ;; Fix the test error described at
-           ;; https://github.com/ruby-concurrency/concurrent-ruby/pull/408
-           (lambda _ (invoke "rake" "compile")))
          (add-before 'check 'remove-timecop-dependency
            ;; Remove timecop-dependent tests as having timecop as a depedency
            ;; causes circular depedencies.
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 98e964fa44..cd40ce3744 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -956,7 +956,7 @@ tmux.")
 (define-public kitty
   (package
     (name "kitty")
-    (version "0.14.5")
+    (version "0.14.6")
     (home-page "https://sw.kovidgoyal.net/kitty/")
     (source
      (origin
@@ -966,8 +966,7 @@ tmux.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0qx3wj4n3zgjcpd1vjjwdlz8d1vp8bkxihsg2khlla1izandgxxa"))
+        (base32 "1rb5ys9xsdhd2qa3kz5gqzz111c6b14za98va6hlglk69wqlmb51"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index e5dee2f4e5..e83bcad509 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -114,7 +114,7 @@ based command language.")
 (define-public kakoune
   (package
     (name "kakoune")
-    (version "2019.01.20")
+    (version "2019.07.01")
     (source
      (origin
        (method url-fetch)
@@ -122,7 +122,7 @@ based command language.")
                            "releases/download/v" version "/"
                            "kakoune-" version ".tar.bz2"))
        (sha256
-        (base32 "15drk7i17qdiqxqkjxhrxfclryj9qzb5ymxd20dwl05y4yi064cr"))))
+        (base32 "1lvgxnih4xfrkcmcc476qi9nz6dxcdbfxsinhykp3g80j14piycc"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 27090c14cf..a82654be0a 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -158,7 +158,7 @@ networks.")
 (define-public onionshare
   (package
     (name "onionshare")
-    (version "2.1")
+    (version "2.2")
     (source
       (origin
         (method git-fetch)
@@ -167,7 +167,7 @@ networks.")
               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "1lx21p12888qnbhsyin4lrnn4xizb39ldk77r71y53hn8mfxi54z"))))
+         (base32 "0m8ygxcyp3nfzzhxs2dfnpqwh1vx0aws44lszpnnczz4fks3a5j4"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -181,7 +181,7 @@ networks.")
                (substitute* "setup.py"
                  ;; For the nautilus plugin.
                  (("/usr/share/nautilus") "share/nautilus"))
-               (substitute* "install/onionshare.desktop"
+               (substitute* "install/org.onionshare.OnionShare.desktop"
                  (("/usr") out))
                #t)))
          (delete 'check)
@@ -196,6 +196,7 @@ networks.")
     (inputs
      `(("python-pycrypto" ,python-pycrypto)
        ("python-flask" ,python-flask)
+       ("python-flask-httpauth" ,python-flask-httpauth)
        ("python-nautilus" ,python-nautilus)
        ("python-sip" ,python-sip)
        ("python-stem" ,python-stem)
@@ -203,15 +204,15 @@ networks.")
        ("python-pyqt" ,python-pyqt)))
     (home-page "https://onionshare.org/")
     (synopsis "Securely and anonymously share files")
-    (description "OnionShare lets you securely and anonymously share files of
-any size.  It works by starting a web server, making it accessible as a Tor
-hidden service, and generating an unguessable URL to access and download the
-files.  It doesn't require setting up a server on the internet somewhere or
-using a third party filesharing service.  You host the file on your own computer
-and use a Tor hidden service to make it temporarily accessible over the
-internet.  The other user just needs to use Tor Browser to download the file
-from you.")
-    (license license:gpl3+)))
+    (description "OnionShare is a tool for securely and anonymously sending
+and receiving files using Tor onion services.  It works by starting a web
+server directly on your computer and making it accessible as an unguessable
+Tor web address that others can load in a Tor-enabled web browser to download
+files from you, or upload files to you.  It doesn't require setting up a
+separate server, using a third party file-sharing service, or even logging
+into an account.")
+    ;; Bundled, minified jquery is expat licensed.
+    (license (list license:gpl3+ license:expat))))
 
 (define-public nyx
   (package
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 76bb839bb1..e30a4cbcb6 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2638,14 +2638,14 @@ supported players in addition to this package.")
 (define-public handbrake
   (package
     (name "handbrake")
-    (version "1.2.0")
+    (version "1.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.handbrake.fr/releases/"
                                   version "/HandBrake-" version "-source.tar.bz2"))
               (sha256
                (base32
-                "03clkknaq3mz84p85cvr21gsy9b8vv2g4vvyfz44hz8la253jfqi"))
+                "0k2yaqy7zi06k8mkp9az2mn9dlgj3a1339vacakfh2nn2zsics6z"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove "contrib" and source not necessary for
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index b1f47bd010..63bd50390c 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -483,7 +483,7 @@ trouble using them, because you do not have to remember each snippet name.")
 (define-public vim-fugitive
   (package
     (name "vim-fugitive")
-    (version "3.0")
+    (version "3.1")
     (source
       (origin
         (method git-fetch)
@@ -493,7 +493,7 @@ trouble using them, because you do not have to remember each snippet name.")
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "0ghh8a9xysc3njqql1khhl2dkhymz93snpwqp2apm7pka6l893bc"))))
+          "0d9jhmidmy5c60iy9x47gqr675n5wp9wrzln83r8ima1fz7vvbgs"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
@@ -775,7 +775,15 @@ are detected, the user is notified.")))
                        (string-join (map lua-path-spec lua-inputs) ";"))
                (setenv "LUA_CPATH"
                        (string-join (map lua-cpath-spec lua-inputs) ";"))
-               #t))))))
+               #t)))
+         (add-after 'unpack 'prevent-embedding-gcc-store-path
+           (lambda _
+             ;; nvim remembers its build options, including the compiler with
+             ;; its complete path.  This adds gcc to the closure of nvim, which
+             ;; doubles its size.  We remove the refirence here.
+             (substitute* "cmake/GetCompileFlags.cmake"
+               (("\\$\\{CMAKE_C_COMPILER\\}") "/gnu/store/.../bin/gcc"))
+             #t)))))
     (inputs
      `(("libuv" ,libuv)
        ("msgpack" ,msgpack)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index fd442bde4b..a3504882a2 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -817,7 +817,17 @@ Machine Protocol.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "02bq46ndmzq9cihazzn7xq1x7q5nzm7iw4l9lqzihxcxp9famkhw"))))
+         "02bq46ndmzq9cihazzn7xq1x7q5nzm7iw4l9lqzihxcxp9famkhw"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Do not create binaries optimized for the CPU of the build machine,
+           ;; for reproducibility and compatibility.  TODO: in the next version
+           ;; of looking glass, this is exposed as a CMake configure option.
+           (substitute* "client/CMakeLists.txt"
+             (("-march=native")
+              ""))
+           #t))))
      (build-system cmake-build-system)
      (inputs `(("fontconfig" ,fontconfig)
                ("glu" ,glu)
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index bc875b1c99..67980f76c3 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -518,7 +518,7 @@ WireGuard support.")
 (define-public xl2tpd
   (package
     (name "xl2tpd")
-    (version "1.3.14")
+    (version "1.3.15")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -527,10 +527,10 @@ WireGuard support.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1c2ahxz2zmmxwmk951d2qhijgz67zhwa1hn0r59fgz0y14w22myi"))))
+                "0ppwza8nwm1av1vldw40gin9wrjrs4l9si50jad414js3k8ycaag"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list (string-append "DESTDIR=" %output)
+     `(#:make-flags (list (string-append "PREFIX=" %output)
                           "CC=gcc")
        #:phases (modify-phases %standard-phases
                   (delete 'configure))  ; no configure script
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 2fb0564003..3101f307cd 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -464,15 +464,14 @@ servers that may need it).")
 (define-public starman
   (package
     (name "starman")
-    (version "0.4014")
+    (version "0.4015")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
                            "Starman-" version ".tar.gz"))
        (sha256
-        (base32
-         "1sbb5rb3vs82rlh1fjkgkcmj5pj62b4y9si4ihh45sl9m8c2qxx5"))))
+        (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-libwww" ,perl-libwww)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 6cecc06130..7c573337d4 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
 ;;; Copyright © 2019 Ingo Ruhnke <grumbel@gmail.com>
+;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,57 +43,56 @@
 (define-module (gnu packages wm)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages linux)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
-  #:use-module (gnu packages haskell-check)
-  #:use-module (gnu packages haskell-web)
-  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
-  #:use-module (gnu packages bison)
-  #:use-module (gnu packages gawk)
   #:use-module (gnu packages base)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages pulseaudio)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages documentation)
-  #:use-module (gnu packages xml)
-  #:use-module (gnu packages m4)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages docbook)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages pcre)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages gtk)
-  #:use-module (gnu packages libevent)
-  #:use-module (gnu packages fribidi)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages web)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages lua)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages suckless)
-  #:use-module (gnu packages mpd)
-  #:use-module (gnu packages gl)
-  #:use-module (gnu packages video)
-  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages logging)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages man)
-  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages mpd)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pretty-print)
-  #:use-module (gnu packages logging)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages serialization)
-  #:use-module (guix download)
-  #:use-module (guix git-download))
+  #:use-module (gnu packages suckless)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
 
 (define-public bspwm
   (package
@@ -1194,15 +1194,14 @@ its size
 (define-public polybar
   (package
     (name "polybar")
-    (version "3.3.1")
+    (version "3.4.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/jaagr/polybar/releases/"
+       (uri (string-append "https://github.com/polybar/polybar/releases/"
                            "download/" version "/polybar-" version ".tar"))
        (sha256
-        (base32 "0758na059vpgnsrcdrxmh9wsahs80wnmizb9g7bmixlrkxr2m65h"))
-       (file-name (string-append name "-" version ".tar"))))
+        (base32 "06yd9ffak53qbhpw35xh422v2lhjh23zdbrh81cynwks5pr9i839"))))
     (build-system cmake-build-system)
     (arguments
      ;; Test is disabled because it requires downloading googletest from the
@@ -1212,6 +1211,7 @@ its size
      `(("alsa-lib" ,alsa-lib)
        ("cairo" ,cairo)
        ("i3-wm" ,i3-wm)
+       ("jsoncpp" ,jsoncpp)
        ("libmpdclient" ,libmpdclient)
        ("libnl" ,libnl)
        ("libxcb" ,libxcb)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 542cb3bb63..d4312f4635 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -962,7 +962,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "0.33")
+    (version "1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -970,8 +970,10 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "1wnv34y7m9l6avlvwqvfrnksfnsz1lbgb412dn6s7x1h3wvs7y4l"))))
+                "00lyv419ijyng6ak5vpw0swnn4qg6lbfh7zysf92wcvn6rcq7d4c"))))
     (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-static")))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index aad2ba848b..2692e4bd78 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -4393,14 +4393,14 @@ file.  This file can then be read by various other X utilities for
 redisplay, printing, editing, formatting, archiving, image processing,
 etc.  The target window is selected by clicking the pointer in the
 desired window.  The keyboard bell is rung once at the beginning of the
-dump and twice whenthe dump is completed.")
+dump and twice when the dump is completed.")
     (license license:x11)))
 
 
 (define-public xwininfo
   (package
     (name "xwininfo")
-    (version "1.1.4")
+    (version "1.1.5")
     (source
       (origin
         (method url-fetch)
@@ -4410,7 +4410,7 @@ dump and twice whenthe dump is completed.")
                ".tar.bz2"))
         (sha256
           (base32
-            "00avrpw4h5mr1klp41lv2j4dmq465v6l5kb5bhm4k5ml8sm9i543"))))
+            "03h8clirhw5ki1xxp18xbf5vynm7r0dwspsgfin6cxn4vx0m8h3s"))))
     (build-system gnu-build-system)
     (inputs
       `(("libx11" ,libx11)
diff --git a/gnu/services/getmail.scm b/gnu/services/getmail.scm
index b807bb3a5d..b3d86cb65c 100644
--- a/gnu/services/getmail.scm
+++ b/gnu/services/getmail.scm
@@ -176,8 +176,8 @@ server.")
   (delete-after
    (non-negative-integer 0)
    "Getmail will delete messages this number of days after seeing them, if
-they have not been delivered.  This means messages will be left on the server
-this number of days after delivering them.  A value of @samp{0} disabled this
+they have been delivered.  This means messages will be left on the server this
+number of days after delivering them.  A value of @samp{0} disabled this
 feature.")
   (delete-bigger-than
    (non-negative-integer 0)
diff --git a/guix/build-system/asdf.scm b/guix/build-system/asdf.scm
index af04084c86..f794bf006b 100644
--- a/guix/build-system/asdf.scm
+++ b/guix/build-system/asdf.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (ice-9 regex)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
+  #:use-module (gnu packages)
   #:export (%asdf-build-system-modules
             %asdf-build-modules
             asdf-build
@@ -160,13 +162,22 @@ set up using CL source package conventions."
   (define (has-from-build-system? pkg)
     (eq? from-build-system (package-build-system pkg)))
 
+  (define (find-input-package pkg)
+    (let* ((name (package-name pkg))
+           (new-name (transform-package-name name))
+           (pkgs (find-packages-by-name new-name)))
+      (if (null? pkgs) #f (list-ref pkgs 0))))
+
   (define transform
     (mlambda (pkg)
       (define rewrite
         (match-lambda
           ((name content . rest)
            (let* ((is-package? (package? content))
-                  (new-content (if is-package? (transform content) content)))
+                  (new-content (if is-package?
+                                   (or (find-input-package content)
+                                       (transform content))
+                                   content)))
              `(,name ,new-content ,@rest)))))
 
       ;; Special considerations for source packages: CL inputs become
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index c9140074b7..3cc89f8852 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,12 +57,16 @@
   '((guix build gnu-build-system)
     (guix build utils)))
 
-(define* (package-with-explicit-inputs p inputs
-                                       #:optional
-                                       (loc (current-source-location))
-                                       #:key (native-inputs '())
-                                       guile)
-  "Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and
+(define* (package-with-explicit-inputs/deprecated p inputs
+                                                  #:optional
+                                                  (loc (current-source-location))
+                                                  #:key (native-inputs '())
+                                                  guile)
+  "This variant is deprecated because it is inefficient: it memoizes only
+temporarily instead of memoizing across all transformations where INPUTS is
+the same.
+
+Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and
 NATIVE-INPUTS as explicit inputs instead of the implicit default, and return
 it.  INPUTS and NATIVE-INPUTS can be either input lists or thunks; in the
 latter case, they will be called in a context where the `%current-system' and
@@ -124,6 +128,47 @@ builder, or the distro's final Guile when GUILE is #f."
            ,@(map rewritten-input
                   (filtered (package-inputs p)))))))))
 
+(define* (package-with-explicit-inputs* inputs #:optional guile)
+  "Return a procedure that rewrites the given package and all its dependencies
+so that they use INPUTS (a thunk) instead of implicit inputs."
+  (define (duplicate-filter package-inputs)
+    (let ((names (match (inputs)
+                   (((name _ ...) ...)
+                    name))))
+      (fold alist-delete package-inputs names)))
+
+  (define (add-explicit-inputs p)
+    (if (and (eq? (package-build-system p) gnu-build-system)
+             (not (memq #:implicit-inputs? (package-arguments p))))
+        (package
+          (inherit p)
+          (inputs (append (inputs)
+                          (duplicate-filter (package-inputs p))))
+          (arguments
+           (ensure-keyword-arguments (package-arguments p)
+                                     `(#:implicit-inputs? #f
+                                       #:guile ,guile))))
+        p))
+
+  (define (cut? p)
+    (and (eq? (package-build-system p) gnu-build-system)
+         (memq #:implicit-inputs? (package-arguments p))))
+
+  (package-mapping add-explicit-inputs cut?))
+
+(define package-with-explicit-inputs
+  (case-lambda*
+   ((inputs #:optional guile)
+    (package-with-explicit-inputs* inputs guile))
+   ((p inputs #:optional (loc (current-source-location))
+       #:key (native-inputs '()) guile)
+    ;; deprecated
+    (package-with-explicit-inputs/deprecated p inputs
+                                             loc
+                                             #:native-inputs
+                                             native-inputs
+                                             #:guile guile))))
+
 (define (package-with-extra-configure-variable p variable value)
   "Return a version of P with VARIABLE=VALUE specified as an extra `configure'
 flag, recursively.  An example is LDFLAGS=-static.  If P already has configure
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 600750e846..7323277511 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1508,7 +1508,7 @@ are searched for in PATH.  Return #f when MODULES and EXTENSIONS are empty."
          (gexp (eval-when (expand load eval)
                  ;; Augment the load paths and delete duplicates.  Do that
                  ;; without loading (srfi srfi-1) or anything.
-                 (let ((extensions '((ungexp-native-splicing extensions)))
+                 (let ((extensions '((ungexp-splicing extensions)))
                        (prepend (lambda (items lst)
                                   ;; This is O(N²) but N is typically small.
                                   (let loop ((items items)
diff --git a/guix/inferior.scm b/guix/inferior.scm
index d6d2053ab8..b8e2f21f42 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -110,11 +110,11 @@
   (packages inferior-package-promise)            ;promise of inferior packages
   (table    inferior-package-table))             ;promise of vhash
 
-(define (inferior-pipe directory command)
+(define* (inferior-pipe directory command error-port)
   "Return an input/output pipe on the Guix instance in DIRECTORY.  This runs
 'DIRECTORY/COMMAND repl' if it exists, or falls back to some other method if
 it's an old Guix."
-  (let ((pipe (with-error-to-port (%make-void-port "w")
+  (let ((pipe (with-error-to-port error-port
                 (lambda ()
                   (open-pipe* OPEN_BOTH
                               (string-append directory "/" command)
@@ -125,19 +125,21 @@ it's an old Guix."
 
           ;; Older versions of Guix didn't have a 'guix repl' command, so
           ;; emulate it.
-          (open-pipe* OPEN_BOTH "guile"
-                      "-L" (string-append directory "/share/guile/site/"
-                                          (effective-version))
-                      "-C" (string-append directory "/share/guile/site/"
-                                          (effective-version))
-                      "-C" (string-append directory "/lib/guile/"
-                                          (effective-version) "/site-ccache")
-                      "-c"
-                      (object->string
-                       `(begin
-                          (primitive-load ,(search-path %load-path
-                                                        "guix/repl.scm"))
-                          ((@ (guix repl) machine-repl))))))
+          (with-error-to-port error-port
+            (lambda ()
+              (open-pipe* OPEN_BOTH "guile"
+                          "-L" (string-append directory "/share/guile/site/"
+                                              (effective-version))
+                          "-C" (string-append directory "/share/guile/site/"
+                                              (effective-version))
+                          "-C" (string-append directory "/lib/guile/"
+                                              (effective-version) "/site-ccache")
+                          "-c"
+                          (object->string
+                           `(begin
+                              (primitive-load ,(search-path %load-path
+                                                            "guix/repl.scm"))
+                              ((@ (guix repl) machine-repl))))))))
         pipe)))
 
 (define* (port->inferior pipe #:optional (close close-port))
@@ -161,11 +163,13 @@ inferior."
     (_
      #f)))
 
-(define* (open-inferior directory #:key (command "bin/guix"))
+(define* (open-inferior directory
+                        #:key (command "bin/guix")
+                        (error-port (%make-void-port "w")))
   "Open the inferior Guix in DIRECTORY, running 'DIRECTORY/COMMAND repl' or
 equivalent.  Return #f if the inferior could not be launched."
   (define pipe
-    (inferior-pipe directory command))
+    (inferior-pipe directory command error-port))
 
   (port->inferior pipe close-pipe))
 
diff --git a/guix/lint.scm b/guix/lint.scm
index 03a8e88225..6336cf4e3b 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -1319,11 +1319,17 @@ or a list thereof")
      (name        'github-url)
      (description "Suggest GitHub URLs")
      (check       check-github-url))
-   (lint-checker
-     (name        'cve)
-     (description "Check the Common Vulnerabilities and Exposures\
- (CVE) database")
-     (check       check-vulnerabilities))
+
+   ;; FIXME: Commented out as a consequence of the XML CVE feed retirement:
+   ;; <https://nvd.nist.gov/General/News/XML-Vulnerability-Feed-Retirement-Phase-3>.
+   ;; Reinstate it once the JSON feed is supported.
+
+ ;;   (lint-checker
+ ;;     (name        'cve)
+ ;;     (description "Check the Common Vulnerabilities and Exposures\
+ ;; (CVE) database")
+ ;;     (check       check-vulnerabilities))
+
    (lint-checker
      (name        'refresh)
      (description "Check the package for new upstream releases")
diff --git a/guix/profiles.scm b/guix/profiles.scm
index f5c863945c..cd3b21e390 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1732,7 +1732,8 @@ because the NUMBER is zero.)"
   (string-append %profile-directory "/guix-profile"))
 
 (define (ensure-profile-directory)
-  "Attempt to create /…/profiles/per-user/$USER if needed."
+  "Attempt to create /…/profiles/per-user/$USER if needed.  Nowadays this is
+taken care of by the daemon."
   (let ((s (stat %profile-directory #f)))
     (unless (and s (eq? 'directory (stat:type s)))
       (catch 'system-error
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index bb307cefd1..1384f6b41d 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -174,7 +174,7 @@ can interpret meaningfully."
 private key from '~a': ~a")
                                          file str))))))))
 
-(define (open-ssh-session machine)
+(define* (open-ssh-session machine #:optional (max-silent-time -1))
   "Open an SSH session for MACHINE and return it.  Throw an error on failure."
   (let ((private (private-key-from-file* (build-machine-private-key machine)))
         (public  (public-key-from-file
@@ -183,7 +183,7 @@ private key from '~a': ~a")
         (session (make-session #:user (build-machine-user machine)
                                #:host (build-machine-name machine)
                                #:port (build-machine-port machine)
-                               #:timeout 10       ;seconds
+                               #:timeout 10       ;initial timeout (seconds)
                                ;; #:log-verbosity 'protocol
                                #:identity (build-machine-private-key machine)
 
@@ -225,6 +225,10 @@ instead of '~a' of type '~a'~%")
            (leave (G_ "SSH public key authentication failed for '~a': ~a~%")
                   (build-machine-name machine) (get-error session))))
 
+       ;; From then on use MAX-SILENT-TIME as the absolute timeout when
+       ;; reading from or write to a channel for this session.
+       (session-set! session 'timeout max-silent-time)
+
        session)
       (x
        ;; Connection failed or timeout expired.
@@ -313,7 +317,7 @@ hook."
 INPUTS to MACHINE; if building DRV succeeds, retrieve all of OUTPUTS from
 MACHINE."
   (define session
-    (open-ssh-session machine))
+    (open-ssh-session machine max-silent-time))
 
   (define store
     (connect-to-remote-daemon session
@@ -472,7 +476,8 @@ slot (which must later be released with 'release-build-slot'), or #f and #f."
        ;; Return the best machine unless it's already overloaded.
        ;; Note: We call 'node-load' only as a last resort because it is
        ;; too costly to call it once for every machine.
-       (let* ((session (false-if-exception (open-ssh-session best)))
+       (let* ((session (false-if-exception (open-ssh-session best
+                                                             %short-timeout)))
               (node    (and session (remote-inferior session)))
               (load    (and node (normalized-load best (node-load node))))
               (space   (and node (node-free-disk-space node))))
@@ -573,6 +578,11 @@ If TIMEOUT is #f, simply evaluate EXP..."
 ;;; Installation tests.
 ;;;
 
+(define %short-timeout
+  ;; Timeout in seconds used on SSH connections where reads and writes
+  ;; shouldn't take long.
+  15)
+
 (define (assert-node-repl node name)
   "Bail out if NODE is not running Guile."
   (match (node-guile-version node)
@@ -658,7 +668,7 @@ machine."
           (length machines) machine-file)
     (let* ((names    (map build-machine-name machines))
            (sockets  (map build-machine-daemon-socket machines))
-           (sessions (map open-ssh-session machines))
+           (sessions (map (cut open-ssh-session <> %short-timeout) machines))
            (nodes    (map remote-inferior sessions)))
       (for-each assert-node-has-guix nodes names)
       (for-each assert-node-repl nodes names)
@@ -682,7 +692,7 @@ machine."
           (length machines) machine-file)
     (for-each (lambda (machine)
                 (define session
-                  (open-ssh-session machine))
+                  (open-ssh-session machine %short-timeout))
 
                 (match (remote-inferior session)
                   (#f
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 04970cf503..7876019eac 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -772,11 +772,11 @@ Use '~/.config/guix/channels.scm' instead."))
               (process-generation-change opts profile))
              (else
               (with-store store
-                (ensure-default-profile)
                 (with-status-verbosity (assoc-ref opts 'verbosity)
                   (parameterize ((%current-system (assoc-ref opts 'system))
                                  (%graft? (assoc-ref opts 'graft?)))
                     (set-build-options-from-command-line store opts)
+                    (ensure-default-profile)
                     (honor-x509-certificates store)
 
                     (let ((instances (latest-channel-instances store channels)))
diff --git a/guix/ssh.scm b/guix/ssh.scm
index b6b55bdfcb..5fd3c280e8 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -61,11 +61,16 @@
   "zlib@openssh.com,zlib")
 
 (define* (open-ssh-session host #:key user port identity
-                           (compression %compression))
+                           (compression %compression)
+                           (timeout 3600))
   "Open an SSH session for HOST and return it.  IDENTITY specifies the file
 name of a private key to use for authenticating with the host.  When USER,
 PORT, or IDENTITY are #f, use default values or whatever '~/.ssh/config'
-specifies; otherwise use them.  Throw an error on failure."
+specifies; otherwise use them.  Install TIMEOUT as the maximum time in seconds
+after which a read or write operation on a channel of the returned session is
+considered as failing.
+
+Throw an error on failure."
   (let ((session (make-session #:user user
                                #:identity identity
                                #:host host
@@ -86,6 +91,7 @@ specifies; otherwise use them.  Throw an error on failure."
        ;; Use public key authentication, via the SSH agent if it's available.
        (match (userauth-public-key/auto! session)
          ('success
+          (session-set! session 'timeout timeout)
           session)
          (x
           (disconnect! session)
diff --git a/guix/store.scm b/guix/store.scm
index d7c603898c..382aad29d9 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -748,6 +748,14 @@ encoding conversion errors."
            (cut string-append "http://" <>))
        '("ci.guix.gnu.org")))
 
+(define (current-user-name)
+  "Return the name of the calling user."
+  (catch #t
+    (lambda ()
+      (passwd:name (getpwuid (getuid))))
+    (lambda _
+      (getenv "USER"))))
+
 (define* (set-build-options server
                             #:key keep-failed? keep-going? fallback?
                             (verbosity 0)
@@ -759,6 +767,7 @@ encoding conversion errors."
                             (build-verbosity 0)
                             (log-type 0)
                             (print-build-trace #t)
+                            (user-name (current-user-name))
 
                             ;; When true, provide machine-readable "build
                             ;; traces" for use by (guix status).  Old clients
@@ -849,6 +858,9 @@ encoding conversion errors."
                            `(("build-repeat"
                               . ,(number->string (max 0 (1- rounds)))))
                            '())
+                     ,@(if user-name
+                           `(("user-name" . ,user-name))
+                           '())
                      ,@(if terminal-columns
                            `(("terminal-columns"
                               . ,(number->string terminal-columns)))
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index c466996668..fe152da015 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -620,10 +620,9 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
 
     foreach (Roots::iterator, i, rootMap) state.roots.insert(i->second);
 
-    /* Add additional roots returned by the program specified by the
-       NIX_ROOT_FINDER environment variable.  This is typically used
-       to add running programs to the set of roots (to prevent them
-       from being garbage collected). */
+    /* Add additional roots returned by 'guix gc --list-busy'.  This is
+       typically used to add running programs to the set of roots (to prevent
+       them from being garbage collected). */
     if (!options.ignoreLiveness)
         addAdditionalRoots(*this, state.roots);
 
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 3b08492c64..3793382361 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -88,8 +88,9 @@ LocalStore::LocalStore(bool reserveSpace)
 
         Path perUserDir = profilesDir + "/per-user";
         createDirs(perUserDir);
-        if (chmod(perUserDir.c_str(), 01777) == -1)
-            throw SysError(format("could not set permissions on '%1%' to 1777") % perUserDir);
+        if (chmod(perUserDir.c_str(), 0755) == -1)
+            throw SysError(format("could not set permissions on '%1%' to 755")
+                           % perUserDir);
 
         mode_t perm = 01775;
 
@@ -1642,4 +1643,16 @@ void LocalStore::vacuumDB()
 }
 
 
+void LocalStore::createUser(const std::string & userName, uid_t userId)
+{
+    auto dir = settings.nixStateDir + "/profiles/per-user/" + userName;
+
+    createDirs(dir);
+    if (chmod(dir.c_str(), 0755) == -1)
+	throw SysError(format("changing permissions of directory '%s'") % dir);
+    if (chown(dir.c_str(), userId, -1) == -1)
+	throw SysError(format("changing owner of directory '%s'") % dir);
+}
+
+
 }
diff --git a/nix/libstore/local-store.hh b/nix/libstore/local-store.hh
index 4113fafcb5..2e48cf03e6 100644
--- a/nix/libstore/local-store.hh
+++ b/nix/libstore/local-store.hh
@@ -180,6 +180,8 @@ public:
 
     void setSubstituterEnv();
 
+    void createUser(const std::string & userName, uid_t userId);
+
 private:
 
     Path schemaPath;
diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh
index 2d9dcbd573..7d2ad2270d 100644
--- a/nix/libstore/store-api.hh
+++ b/nix/libstore/store-api.hh
@@ -289,6 +289,10 @@ public:
     /* Check the integrity of the Nix store.  Returns true if errors
        remain. */
     virtual bool verifyStore(bool checkContents, bool repair) = 0;
+
+    /* Create a profile for the given user.  This is done by the daemon
+       because the 'profiles/per-user' directory is not writable by users.  */
+    virtual void createUser(const std::string & userName, uid_t userId) = 0;
 };
 
 
diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc
index 1163a249d1..3dd156ba77 100644
--- a/nix/nix-daemon/nix-daemon.cc
+++ b/nix/nix-daemon/nix-daemon.cc
@@ -613,6 +613,17 @@ static void performOp(bool trusted, unsigned int clientVersion,
                     || name == "build-repeat"
                     || name == "multiplexed-build-output")
                     settings.set(name, value);
+		else if (name == "user-name"
+                         && settings.clientUid == (uid_t) -1) {
+                    /* Create the user profile.  This is necessary if
+                       clientUid = -1, for instance because the client
+                       connected over TCP.  */
+                    struct passwd *pw = getpwnam(value.c_str());
+                    if (pw != NULL)
+                        store->createUser(value, pw->pw_uid);
+                    else
+                        printMsg(lvlInfo, format("user name %1% not found") % value);
+		}
                 else
                     settings.set(trusted ? name : "untrusted-" + name, value);
             }
@@ -731,7 +742,7 @@ static void performOp(bool trusted, unsigned int clientVersion,
 }
 
 
-static void processConnection(bool trusted)
+static void processConnection(bool trusted, uid_t userId)
 {
     canSendStderr = false;
     _writeToStderr = tunnelStderr;
@@ -778,6 +789,15 @@ static void processConnection(bool trusted)
         /* Open the store. */
         store = std::shared_ptr<StoreAPI>(new LocalStore(reserveSpace));
 
+	if (userId != (uid_t) -1) {
+            /* Create the user profile.  */
+            struct passwd *pw = getpwuid(userId);
+            if (pw != NULL && pw->pw_name != NULL)
+                store->createUser(pw->pw_name, userId);
+            else
+                printMsg(lvlInfo, format("user with UID %1% not found") % userId);
+	}
+
         stopWork();
         to.flush();
 
@@ -963,7 +983,7 @@ static void acceptConnection(int fdSocket)
                 /* Handle the connection. */
                 from.fd = remote;
                 to.fd = remote;
-                processConnection(trusted);
+                processConnection(trusted, clientUid);
 
                 exit(0);
             }, false, "unexpected build daemon error: ", true);
diff --git a/tests/containers.scm b/tests/containers.scm
index 01fbcbb45a..7b63e5c108 100644
--- a/tests/containers.scm
+++ b/tests/containers.scm
@@ -269,6 +269,7 @@
                       (lset= string=? (cons* "." ".." (map basename reqs))
                              (pk (call-with-input-file result read))))))))))
 
+(skip-if-unsupported)
 (test-assert "eval/container, non-empty load path"
   (call-with-temporary-directory
    (lambda (directory)
diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh
index 758f18cc36..b58500966b 100644
--- a/tests/guix-daemon.sh
+++ b/tests/guix-daemon.sh
@@ -94,6 +94,27 @@ done
 
 kill "$daemon_pid"
 
+# Make sure 'profiles/per-user' is created when connecting over TCP.
+
+orig_GUIX_STATE_DIRECTORY="$GUIX_STATE_DIRECTORY"
+GUIX_STATE_DIRECTORY="$GUIX_STATE_DIRECTORY-2"
+
+guix-daemon --disable-chroot --listen="localhost:9877" &
+daemon_pid=$!
+
+GUIX_DAEMON_SOCKET="guix://localhost:9877"
+export GUIX_DAEMON_SOCKET
+
+test ! -d "$GUIX_STATE_DIRECTORY/profiles/per-user"
+
+guix build guile-bootstrap -d
+
+test -d "$GUIX_STATE_DIRECTORY/profiles/per-user/$USER"
+
+kill "$daemon_pid"
+unset GUIX_DAEMON_SOCKET
+GUIX_STATE_DIRECTORY="$orig_GUIX_STATE_DIRECTORY"
+
 # Check the failed build cache.
 
 guix-daemon --no-substitutes --listen="$socket" --disable-chroot	\
diff --git a/tests/store.scm b/tests/store.scm
index 518750d26a..2b14a4af0a 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -18,6 +18,7 @@
 
 (define-module (test-store)
   #:use-module (guix tests)
+  #:use-module (guix config)
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (guix monads)
@@ -102,7 +103,17 @@
               "/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7/bin/guile")))
        (not (direct-store-path? (%store-prefix)))))
 
-(test-skip (if %store 0 13))
+(test-skip (if %store 0 15))
+
+(test-equal "profiles/per-user exists and is not writable"
+  #o755
+  (stat:perms (stat (string-append %state-directory "/profiles/per-user"))))
+
+(test-equal "profiles/per-user/$USER exists"
+  (list (getuid) #o755)
+  (let ((s (stat (string-append %state-directory "/profiles/per-user/"
+                                (passwd:name (getpwuid (getuid)))))))
+    (list (stat:uid s) (stat:perms s))))
 
 (test-equal "add-data-to-store"
   #vu8(1 2 3 4 5)