summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am3
-rw-r--r--build-aux/compile-all.scm59
-rw-r--r--doc/contributing.texi5
-rw-r--r--doc/guix.texi43
-rwxr-xr-xetc/guix-install.sh8
-rw-r--r--etc/substitutes/hydra.gnu.org.pub6
-rw-r--r--gnu/build/accounts.scm14
-rw-r--r--gnu/build/linux-container.scm16
-rw-r--r--gnu/local.mk12
-rw-r--r--gnu/packages.scm8
-rw-r--r--gnu/packages/admin.scm12
-rw-r--r--gnu/packages/algebra.scm47
-rw-r--r--gnu/packages/android.scm12
-rw-r--r--gnu/packages/apl.scm8
-rw-r--r--gnu/packages/astronomy.scm99
-rw-r--r--gnu/packages/bash.scm8
-rw-r--r--gnu/packages/bioconductor.scm32
-rw-r--r--gnu/packages/bioinformatics.scm44
-rw-r--r--gnu/packages/calcurse.scm4
-rw-r--r--gnu/packages/check.scm11
-rw-r--r--gnu/packages/chromium.scm5
-rw-r--r--gnu/packages/compression.scm40
-rw-r--r--gnu/packages/cran.scm85
-rw-r--r--gnu/packages/databases.scm22
-rw-r--r--gnu/packages/disk.scm13
-rw-r--r--gnu/packages/education.scm6
-rw-r--r--gnu/packages/emacs-xyz.scm541
-rw-r--r--gnu/packages/emulators.scm8
-rw-r--r--gnu/packages/enchant.scm5
-rw-r--r--gnu/packages/finance.scm4
-rw-r--r--gnu/packages/flashing-tools.scm4
-rw-r--r--gnu/packages/freedesktop.scm4
-rw-r--r--gnu/packages/game-development.scm34
-rw-r--r--gnu/packages/games.scm73
-rw-r--r--gnu/packages/genealogy.scm112
-rw-r--r--gnu/packages/geo.scm33
-rw-r--r--gnu/packages/gl.scm25
-rw-r--r--gnu/packages/gnome.scm15
-rw-r--r--gnu/packages/gnupg.scm18
-rw-r--r--gnu/packages/gnuzilla.scm4
-rw-r--r--gnu/packages/gstreamer.scm15
-rw-r--r--gnu/packages/gtk.scm37
-rw-r--r--gnu/packages/guile-xyz.scm66
-rw-r--r--gnu/packages/image.scm28
-rw-r--r--gnu/packages/java.scm44
-rw-r--r--gnu/packages/kde.scm51
-rw-r--r--gnu/packages/linux.scm20
-rw-r--r--gnu/packages/lisp.scm627
-rw-r--r--gnu/packages/llvm.scm71
-rw-r--r--gnu/packages/mail.scm8
-rw-r--r--gnu/packages/mastodon.scm6
-rw-r--r--gnu/packages/mate.scm11
-rw-r--r--gnu/packages/maths.scm10
-rw-r--r--gnu/packages/mc.scm4
-rw-r--r--gnu/packages/messaging.scm62
-rw-r--r--gnu/packages/mpi.scm4
-rw-r--r--gnu/packages/music.scm76
-rw-r--r--gnu/packages/package-management.scm12
-rw-r--r--gnu/packages/patches/emacs-zones-called-interactively.patch18
-rw-r--r--gnu/packages/patches/gstreamer-buffer-reset-offset.patch59
-rw-r--r--gnu/packages/patches/khmer-use-libraries.patch16
-rw-r--r--gnu/packages/patches/lcalc-default-parameters-1.patch26
-rw-r--r--gnu/packages/patches/lcalc-default-parameters-2.patch58
-rw-r--r--gnu/packages/patches/lcalc-lcommon-h.patch13
-rw-r--r--gnu/packages/patches/lcalc-using-namespace-std.patch43
-rw-r--r--gnu/packages/patches/leela-zero-gtest.patch40
-rw-r--r--gnu/packages/patches/lrcalc-includes.patch92
-rw-r--r--gnu/packages/patches/python-pyatspi-python-37.patch82
-rw-r--r--gnu/packages/pdf.scm4
-rw-r--r--gnu/packages/perl.scm88
-rw-r--r--gnu/packages/python-check.scm135
-rw-r--r--gnu/packages/python-compression.scm33
-rw-r--r--gnu/packages/python-crypto.scm5
-rw-r--r--gnu/packages/python-xyz.scm299
-rw-r--r--gnu/packages/rust.scm18
-rw-r--r--gnu/packages/sagemath.scm123
-rw-r--r--gnu/packages/sawfish.scm34
-rw-r--r--gnu/packages/statistics.scm41
-rw-r--r--gnu/packages/sync.scm18
-rw-r--r--gnu/packages/tcl.scm42
-rw-r--r--gnu/packages/text-editors.scm49
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/virtualization.scm48
-rw-r--r--gnu/packages/web.scm14
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/xdisorg.scm7
-rw-r--r--gnu/packages/xfce.scm4
-rw-r--r--gnu/packages/xorg.scm21
-rw-r--r--gnu/services/base.scm7
-rw-r--r--gnu/services/networking.scm18
-rw-r--r--gnu/system/install.scm4
-rw-r--r--gnu/system/linux-initrd.scm7
-rw-r--r--gnu/tests/base.scm4
-rw-r--r--gnu/tests/install.scm1
-rw-r--r--guix/build/compile.scm3
-rw-r--r--guix/build/download-nar.scm6
-rw-r--r--guix/build/syscalls.scm37
-rw-r--r--guix/derivations.scm277
-rw-r--r--guix/download.scm1
-rw-r--r--guix/progress.scm4
-rw-r--r--guix/scripts/build.scm11
-rw-r--r--guix/scripts/graph.scm3
-rw-r--r--guix/scripts/package.scm41
-rw-r--r--guix/scripts/publish.scm26
-rw-r--r--guix/scripts/system/search.scm44
-rw-r--r--guix/self.scm3
-rw-r--r--guix/ui.scm142
-rw-r--r--tests/derivations.scm80
-rw-r--r--tests/grafts.scm16
-rw-r--r--tests/guix-daemon.sh2
-rw-r--r--tests/packages.scm32
-rw-r--r--tests/syscalls.scm5
-rw-r--r--tests/ui.scm27
113 files changed, 3793 insertions, 1102 deletions
diff --git a/Makefile.am b/Makefile.am
index 80be73e4bf..8adf23c699 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -489,9 +489,8 @@ check-system: $(GOBJECTS)
 	   -e '(@@ (run-system-tests) run-system-tests)'	\
 	   $(top_srcdir)/build-aux/run-system-tests.scm
 
-# Public key used to sign substitutes from hydra.gnu.org & co.
+# Public keys used to sign substitutes.
 dist_pkgdata_DATA =				\
-  etc/substitutes/hydra.gnu.org.pub		\
   etc/substitutes/berlin.guixsd.org.pub		\
   etc/substitutes/ci.guix.gnu.org.pub		\
   etc/substitutes/ci.guix.info.pub
diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm
index 4259ea523c..e9f3e957d9 100644
--- a/build-aux/compile-all.scm
+++ b/build-aux/compile-all.scm
@@ -91,20 +91,45 @@ to 'make'."
 
 (match (command-line)
   ((_ . files)
-   (compile-files srcdir (getcwd)
-                  (filter file-needs-compilation? files)
-                  #:workers (parallel-job-count)
-                  #:host host
-                  #:report-load (lambda (file total completed)
-                                  (when file
-                                    (format #t "[~3d%] LOAD     ~a~%"
-                                            (% (+ 1 completed) (* 2 total))
-                                            file)
-                                    (force-output)))
-                  #:report-compilation (lambda (file total completed)
-                                         (when file
-                                           (format #t "[~3d%] GUILEC   ~a~%"
-                                                   (% (+ total completed 1)
-                                                      (* 2 total))
-                                                   (scm->go file))
-                                           (force-output))))))
+   (catch #t
+     (lambda ()
+       (compile-files srcdir (getcwd)
+                      (filter file-needs-compilation? files)
+                      #:workers (parallel-job-count)
+                      #:host host
+                      #:report-load (lambda (file total completed)
+                                      (when file
+                                        (format #t "[~3d%] LOAD     ~a~%"
+                                                (% (+ 1 completed) (* 2 total))
+                                                file)
+                                        (force-output)))
+                      #:report-compilation (lambda (file total completed)
+                                             (when file
+                                               (format #t "[~3d%] GUILEC   ~a~%"
+                                                       (% (+ total completed 1)
+                                                          (* 2 total))
+                                                       (scm->go file))
+                                               (force-output)))))
+     (lambda _
+       (primitive-exit 1))
+     (lambda args
+       ;; Try to report the error in an intelligible way.
+       (let* ((stack   (make-stack #t))
+              (frame   (if (> (stack-length stack) 1)
+                           (stack-ref stack 1)    ;skip the 'throw' frame
+                           (stack-ref stack 0)))
+              (ui      (false-if-exception
+                        (resolve-module '(guix ui))))
+              (report  (and ui
+                            (false-if-exception
+                             (module-ref ui 'report-load-error)))))
+         (if report
+             ;; In Guile <= 2.2.5, 'current-load-port' was not exported.
+             (let ((load-port ((module-ref (resolve-module '(ice-9 ports))
+                                           'current-load-port))))
+               (report (or (and=> load-port port-filename) "?.scm")
+                       args frame))
+             (begin
+               (print-exception (current-error-port) frame
+                                (car args) (cdr args))
+               (display-backtrace stack (current-error-port)))))))))
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 6770fae222..e00634eed4 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -281,8 +281,7 @@ Once your package builds correctly, please send us a patch
 (@pxref{Submitting Patches}).  Well, if you need help, we will be happy to
 help you too.  Once the patch is committed in the Guix repository, the
 new package automatically gets built on the supported platforms by
-@url{http://hydra.gnu.org/jobset/gnu/master, our continuous integration
-system}.
+@url{@value{SUBSTITUTE-SERVER}, our continuous integration system}.
 
 @cindex substituter
 Users can obtain the new package definition simply by running
@@ -893,7 +892,7 @@ changes).  This branch is intended to be merged in @code{master} every
 2.5 months or so.
 @end table
 
-All these branches are @uref{https://hydra.gnu.org/project/gnu,
+All these branches are @uref{@value{SUBSTITUTE-SERVER},
 tracked by our build farm} and merged into @code{master} once
 everything has been successfully built.  This allows us to fix issues
 before they hit users, and to reduce the window during which pre-built
diff --git a/doc/guix.texi b/doc/guix.texi
index 65c3b8a7f1..1794c6cd5a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2430,13 +2430,14 @@ The resulting file will be much smaller than 50 GB (typically less than
 Boot the USB installation image in an VM:
 
 @example
-qemu-system-x86_64 -m 1024 -smp 1 \
+qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \
   -net user -net nic,model=virtio -boot menu=on \
   -drive file=guix-system-install-@value{VERSION}.@var{system}.iso \
   -drive file=guixsd.img
 @end example
 
-The ordering of the drives matters.
+The ordering of the drives matters.  @code{-enable-kvm} is optional, but
+significantly improves performance, @pxref{Running Guix in a VM}.
 
 In the VM console, quickly press the @kbd{F12} key to enter the boot
 menu.  Then press the @kbd{2} key and the @kbd{RET} key to validate your
@@ -3133,7 +3134,6 @@ also result from derivation builds, can be available as substitutes.
 @node Official Substitute Server
 @subsection Official Substitute Server
 
-@cindex hydra
 @cindex build farm
 The @code{@value{SUBSTITUTE-SERVER}} server is a front-end to an official build farm
 that builds packages from Guix continuously for some
@@ -3185,12 +3185,6 @@ Then, you can run something like this:
 # guix archive --authorize < @var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub
 @end example
 
-@quotation Note
-Similarly, the @file{hydra.gnu.org.pub} file contains the public key
-of an independent build farm also run by the project, reachable at
-@indicateurl{https://mirror.hydra.gnu.org}.
-@end quotation
-
 Once this is in place, the output of a command like @code{guix build}
 should change from something like:
 
@@ -9610,7 +9604,7 @@ their store with others, who can then use it as a substitute server
 When @command{guix publish} runs, it spawns an HTTP server which allows
 anyone with network access to obtain substitutes from it.  This means
 that any machine running Guix can also act as if it were a build farm,
-since the HTTP interface is compatible with Hydra, the software behind
+since the HTTP interface is compatible with Cuirass, the software behind
 the @code{@value{SUBSTITUTE-SERVER}} build farm.
 
 For security, each substitute is signed, allowing recipients to check
@@ -12735,10 +12729,35 @@ NetworkManager will update @code{resolv.conf} to reflect the nameservers
 provided by currently active connections.
 
 @item dnsmasq
-NetworkManager will run @code{dnsmasq} as a local caching nameserver,
-using a "split DNS" configuration if you are connected to a VPN, and
+NetworkManager will run @code{dnsmasq} as a local caching nameserver, using a
+@dfn{conditional forwarding} configuration if you are connected to a VPN, and
 then update @code{resolv.conf} to point to the local nameserver.
 
+With this setting, you can share your network connection.  For example when
+you want to share your network connection to another laptop @i{via} an
+Ethernet cable, you can open @command{nm-connection-editor} and configure the
+Wired connection's method for IPv4 and IPv6 to be ``Shared to other computers''
+and reestablish the connection (or reboot).
+
+You can also set up a @dfn{host-to-guest connection} to QEMU VMs
+(@pxref{Installing Guix in a VM}).  With a host-to-guest connection, you can
+e.g.@: access a Web server running on the VM (@pxref{Web Services}) from a Web
+browser on your host system, or connect to the VM @i{via} SSH
+(@pxref{Networking Services, @code{openssh-service-type}}).  To set up a
+host-to-guest connection, run this command once:
+
+@example
+nmcli connection add type tun \
+ connection.interface-name tap0 \
+ tun.mode tap tun.owner $(id -u) \
+ ipv4.method shared \
+ ipv4.addresses 172.28.112.1/24
+@end example
+
+Then each time you launch your QEMU VM (@pxref{Running Guix in a VM}), pass
+@option{-nic tap,ifname=tap0,script=no,downscript=no} to
+@command{qemu-system-...}.
+
 @item none
 NetworkManager will not modify @code{resolv.conf}.
 @end table
diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index a0777c8bfe..604c683202 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -362,13 +362,11 @@ sys_enable_guix_daemon()
 }
 
 sys_authorize_build_farms()
-{ # authorize the public keys of the two build farms
+{ # authorize the public key of the build farm
     while true; do
-        read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn
+        read -p "Permit downloading pre-built package binaries from the project's build farm? (yes/no) " yn
         case $yn in
-            [Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/hydra.gnu.org.pub" &&
-                         _msg "${PAS}Authorized public key for hydra.gnu.org";
-                   guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.gnu.org.pub" &&
+            [Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.gnu.org.pub" &&
                        _msg "${PAS}Authorized public key for ci.guix.gnu.org";
                    break;;
             [Nn]*) _msg "${INF}Skipped authorizing build farm public keys"
diff --git a/etc/substitutes/hydra.gnu.org.pub b/etc/substitutes/hydra.gnu.org.pub
deleted file mode 100644
index 6db597ed4d..0000000000
--- a/etc/substitutes/hydra.gnu.org.pub
+++ /dev/null
@@ -1,6 +0,0 @@
- (public-key 
-  (rsa 
-   (n #00DB1634E3D9DFAC97AE4734DAE968CCB15EE4815C82BDC254883DBB49FE1EF32268E82D4BBE0E35298C481C9DA1551642FAFF05AEC1A60712F1BB4BE7D25D7EFF7A4F89704A5A9AC232870CB9F2476C3B538A0E990A8825DEB73081D317001FB8A188600F2FEF5F5F570E857F3EE4355077A3C3918ED72723A56BA55C466D400658974D7DAD1F6B7B63C192B9C2704D98BBFF1C3BD5B8EF11A8ADC83ACB8FD8E9F1E792FDAD262415D13F2DEE55F330908CFDA9C3C8C32B64F7DD088457D34F445E2E2C83C6D680549DC9B6E6573B89496567204ED285E67A279F2F667080BA941D80D015CE87B0FB6A91A99CECC7D91D2D210B00E4B6E611DA51DB008F1DFE3FCAC6B27393FA781D45F9A15FC7B8785A3E86BA6592B2916CA22CF1E40FC85F85CACA590461154F58F3580B16398908EF32076F411299C28727C94D88B6A618F84DD73AEBED8270BCB6690928CB1BF250C35E1F6BF3B1B30D05BA246ECE8F69D9065DE26F4B3E0D814D70A9C27CB5B7B050C9090590D3A9EF83374F2643E5446FBD39DDB124DBF6DFDAA6D18E2560AD0CBFA11C959C9B7316BF19963A191967054E9FD97DC14D71082B30B1C90A46E8996682474C3BCB51BA0882958897B6DD35E41B5174D0A6BCDE97B89043E95BD1B70DE61DA666893B417196A180005466BC3A742FDF04E89B04460E3E6BC72E7F1B5FEA5B3092FEE551A3C447C12E104E65#)
-   (e #010001#)
-   )
-  )
diff --git a/gnu/build/accounts.scm b/gnu/build/accounts.scm
index b90149565f..5094456ab1 100644
--- a/gnu/build/accounts.scm
+++ b/gnu/build/accounts.scm
@@ -19,7 +19,6 @@
 (define-module (gnu build accounts)
   #:use-module (guix records)
   #:use-module (guix combinators)
-  #:use-module ((guix build syscalls) #:select (fdatasync))
   #:use-module (gnu system accounts)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
@@ -231,14 +230,6 @@ each field."
   ;; grab this lock with 'with-file-lock' when they access the databases.
   "/etc/.pwd.lock")
 
-(define-syntax-rule (catch-ENOSYS exp)
-  (catch 'system-error
-    (lambda () exp)
-    (lambda args
-      (if (= ENOSYS (system-error-errno args))
-          #f
-          (apply throw args)))))
-
 (define (database-writer file mode entry->string)
   (lambda* (entries #:optional (file-or-port file))
     "Write ENTRIES to FILE-OR-PORT.  When FILE-OR-PORT is a file name, write
@@ -259,10 +250,7 @@ to it atomically and set the appropriate permissions."
               (chmod port mode)
               (write-entries port)
 
-              ;; XXX: When booting with the statically-linked Guile,
-              ;; 'fdatasync' is unavailable.
-              (catch-ENOSYS (fdatasync port))
-
+              (fsync port)
               (close-port port)
               (rename-file template file-or-port))
             (lambda ()
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 3d7b52f098..e86ac606c0 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -22,7 +22,6 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 rdelim)
   #:use-module (srfi srfi-98)
-  #:use-module (guix utils)
   #:use-module (guix build utils)
   #:use-module (guix build syscalls)
   #:use-module (gnu system file-systems)          ;<file-system>
@@ -279,6 +278,21 @@ that host UIDs (respectively GIDs) map to in the namespace."
               (_                                  ;unexpected termination
                #f)))))))))
 
+;; FIXME: This is copied from (guix utils), which we cannot use because it
+;; would pull (guix config) and all.
+(define (call-with-temporary-directory proc)
+  "Call PROC with a name of a temporary directory; close the directory and
+delete it when leaving the dynamic extent of this call."
+  (let* ((directory (or (getenv "TMPDIR") "/tmp"))
+         (template  (string-append directory "/guix-directory.XXXXXX"))
+         (tmp-dir   (mkdtemp! template)))
+    (dynamic-wind
+      (const #t)
+      (lambda ()
+        (proc tmp-dir))
+      (lambda ()
+        (false-if-exception (delete-file-recursively tmp-dir))))))
+
 (define* (call-with-container mounts thunk #:key (namespaces %namespaces)
                               (host-uids 1) (guest-uid 0) (guest-gid 0))
   "Run THUNK in a new container process and return its exit status.
diff --git a/gnu/local.mk b/gnu/local.mk
index 649d901bf3..0f4cb2a6e4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -20,6 +20,7 @@
 # Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
 # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 # Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+# Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 #
 # This file is part of GNU Guix.
 #
@@ -195,6 +196,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/gcc.scm				\
   %D%/packages/gd.scm				\
   %D%/packages/gdb.scm				\
+  %D%/packages/genealogy.scm			\
   %D%/packages/genimage.scm			\
   %D%/packages/geo.scm				\
   %D%/packages/gettext.scm			\
@@ -899,6 +901,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/guile-relocatable.patch			\
   %D%/packages/patches/guile-rsvg-pkgconfig.patch		\
   %D%/packages/patches/guile-emacs-fix-configure.patch		\
+  %D%/packages/patches/gstreamer-buffer-reset-offset.patch	\
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk2-theme-paths.patch			\
@@ -951,7 +954,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-xerces-xjavac_taskdef.patch	\
   %D%/packages/patches/jbig2dec-ignore-testtest.patch		\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
-  %D%/packages/patches/khmer-use-libraries.patch                \
   %D%/packages/patches/libziparchive-add-includes.patch		\
   %D%/packages/patches/localed-xorg-keyboard.patch		\
   %D%/packages/patches/kiki-level-selection-crash.patch		\
@@ -973,9 +975,14 @@ dist_patch_DATA =						\
   %D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch		\
   %D%/packages/patches/kodi-skip-test-449.patch		\
   %D%/packages/patches/laby-make-install.patch			\
+  %D%/packages/patches/lcalc-default-parameters-1.patch		\
+  %D%/packages/patches/lcalc-default-parameters-2.patch		\
+  %D%/packages/patches/lcalc-lcommon-h.patch    		\
+  %D%/packages/patches/lcalc-using-namespace-std.patch 		\
   %D%/packages/patches/lcms-CVE-2018-16435.patch		\
   %D%/packages/patches/ldc-bootstrap-disable-tests.patch	\
   %D%/packages/patches/ldc-disable-phobos-tests.patch		\
+  %D%/packages/patches/leela-zero-gtest.patch			\
   %D%/packages/patches/liba52-enable-pic.patch			\
   %D%/packages/patches/liba52-link-with-libm.patch		\
   %D%/packages/patches/liba52-set-soname.patch			\
@@ -1044,6 +1051,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch	\
   %D%/packages/patches/llvm-for-extempore.patch			\
   %D%/packages/patches/lm-sensors-hwmon-attrs.patch		\
+  %D%/packages/patches/lrcalc-includes.patch    		\
   %D%/packages/patches/lrzip-CVE-2017-8842.patch		\
   %D%/packages/patches/lua-CVE-2014-5461.patch                      \
   %D%/packages/patches/lua-pkgconfig.patch                      \
@@ -1214,6 +1222,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-mox3-python3.6-compat.patch	\
   %D%/packages/patches/python-testtools.patch			\
   %D%/packages/patches/python-paste-remove-timing-test.patch	\
+  %D%/packages/patches/python-pyatspi-python-37.patch	\
   %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch	\
   %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
@@ -1259,7 +1268,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
   %D%/packages/patches/rust-bootstrap-stage0-test.patch		\
   %D%/packages/patches/rust-coresimd-doctest.patch		\
-  %D%/packages/patches/rust-1.30-gdb-llvm.patch			\
   %D%/packages/patches/rust-reproducible-builds.patch		 \
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
   %D%/packages/patches/scalapack-blacs-mpi-deprecations.patch	\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 48390575ba..acb247e114 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -534,14 +534,18 @@ optionally contain a version number and an output name, as in these examples:
   guile@2.0.9:debug
 
 If SPEC does not specify a version number, return the preferred newest
-version; if SPEC does not specify an output, return OUTPUT."
+version; if SPEC does not specify an output, return OUTPUT.
+
+When OUTPUT is false and SPEC does not specify any output, return #f as the
+output."
   (let-values (((name version sub-drv)
                 (package-specification->name+version+output spec output)))
     (match (%find-package spec name version)
       (#f
        (values #f #f))
       (package
-       (if (member sub-drv (package-outputs package))
+       (if (or (and (not output) (not sub-drv))
+               (member sub-drv (package-outputs package)))
            (values package sub-drv)
            (leave (G_ "package `~a' lacks output `~a'~%")
                   (package-full-name package)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index c6ed4c6d4a..411be40f5b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2220,19 +2220,19 @@ a new command using the matched rule, and runs it.")
 (define-public di
   (package
     (name "di")
-    (version "4.47")
+    (version "4.47.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
        (sha256
-        (base32 "0zlapxlzjizwzwa8xwrwibhcbkh0wx7n74gvjpp6wlwq7cgiq0xm"))))
+        (base32 "1bdbl9k3gqf4h6g21difqc0w17pjid6r587y19wi37vx36aava7f"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; obscure test failures.
+     `(#:tests? #f                      ; obscure test failures
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
+         (delete 'configure)            ; no configure script
          (add-before 'build 'setup-environment
            (lambda* (#:key outputs #:allow-other-keys)
              (setenv "CC" "gcc")
@@ -2251,7 +2251,7 @@ produce uniform output across heterogeneous networks.")
 (define-public cbatticon
   (package
     (name "cbatticon")
-    (version "1.6.8")
+    (version "1.6.9")
     (source
      (origin
        (method git-fetch)
@@ -2259,7 +2259,7 @@ produce uniform output across heterogeneous networks.")
              (url "https://github.com/valr/cbatticon.git")
              (commit version)))
        (sha256
-        (base32 "16g26vin1693dbdr9qsnw36fdchx394lp79gvp7gcbw0w1ny9av6"))
+        (base32 "0kw09d678sd3m18fmi4380sl4a2m5lkfmq0kps16cdmq7z80rvaf"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 561347ad98..95189401f7 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1333,47 +1333,6 @@ multiplication algorithm.")
     (license license:gpl2+)
     (home-page "https://bitbucket.org/malb/m4ri/")))
 
-(define-public ratpoints
-  (package
-    (name "ratpoints")
-    (version "2.1.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://www.mathe2.uni-bayreuth.de/stoll/programs/"
-                    "ratpoints-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0zhad84sfds7izyksbqjmwpfw4rvyqk63yzdjd3ysd32zss5bgf4"))
-              (patches
-               ;; Taken from
-               ;; <https://git.sagemath.org/sage.git/plain/build/pkgs/ratpoints/patches/>
-               (search-patches "ratpoints-sturm_and_rp_private.patch"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:test-target "test"
-       #:make-flags
-       (list (string-append "INSTALL_DIR=" (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ;no configure script
-         (add-before 'install 'create-install-directories
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (mkdir-p out)
-               (with-directory-excursion out
-                 (for-each (lambda (d) (mkdir-p d))
-                           '("bin" "include" "lib"))))
-             #t)))))
-    (inputs
-     `(("gmp" ,gmp)))
-    (home-page "http://www.mathe2.uni-bayreuth.de/stoll/programs/")
-    (synopsis "Find rational points on hyperelliptic curves")
-    (description "Ratpoints tries to find all rational points within
-a given height bound on a hyperelliptic curve in a very efficient way,
-by using an optimized quadratic sieve algorithm.")
-    (license license:gpl2+)))
-
 (define-public symmetrica
   (package
     (name "symmetrica")
@@ -1400,7 +1359,7 @@ by using an optimized quadratic sieve algorithm.")
          (add-after 'unpack 'fix-makefile
            (lambda _
              (substitute* "makefile"
-               (("cc -c") "gcc -c"))
+               (("cc -c") "gcc -c -fPIC"))
              #t))
          (add-after 'fix-makefile 'turn-off-banner
            (lambda _
@@ -1503,7 +1462,8 @@ John Cremona to compute his elliptic curve database.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1c12d04jdyxkkav4ak8d1aqrv594gzihwhpxvc6p9js0ry1fahss"))))
+                "1c12d04jdyxkkav4ak8d1aqrv594gzihwhpxvc6p9js0ry1fahss"))
+              (patches (search-patches "lrcalc-includes.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -1547,6 +1507,7 @@ structure constants of Schubert polynomials.")
     (arguments
      `(#:configure-flags
        (list
+        "--enable-shared"
         (string-append "--with-gmp-include="
                        (assoc-ref %build-inputs "gmp") "/include")
         (string-append "--with-gmp-lib="
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 7d5de08be9..56d5edaa75 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -90,6 +91,17 @@ use their packages mostly unmodified in our Android NDK build system.")
 (define-public android-googletest
   (package (inherit googletest)
     (name "android-googletest")
+    (version "1.8.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/google/googletest.git")
+              (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0bjlljmbf8glnd9qjabx73w6pd7ibv43yiyngqvmvgxsabzr8399"))))
     (arguments
      `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
        #:phases
diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm
index 88150dc4d0..badec04333 100644
--- a/gnu/packages/apl.scm
+++ b/gnu/packages/apl.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,25 +25,27 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sqlite))
 
 (define-public apl
   (package
     (name "apl")
-    (version "1.7")
+    (version "1.8")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz"))
       (sha256
        (base32
-        "07xq8ddlmz8psvsmwr23gar108ri0lwmw0n6kpxcv8ypas1f5xlg"))))
+        "1jxvv2h3y1am1fw6r5sn3say1n0dj8shmscbybl0qhqdia2lqkql"))))
     (build-system gnu-build-system)
     (home-page "https://www.gnu.org/software/apl/")
     (inputs
      `(("gettext" ,gettext-minimal)
        ("lapack" ,lapack)
+       ("pcre" ,pcre2)
        ("sqlite" ,sqlite)
        ("readline" ,readline)))
     (arguments
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 9ddb9e1d52..81c7481e0b 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 by Amar Singh <nly@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,17 +23,27 @@
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages image)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages maths)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (srfi srfi-1))
 
 (define-public cfitsio
   (package
@@ -133,15 +144,15 @@ programs for the manipulation and analysis of astronomical data.")
 (define-public stellarium
   (package
     (name "stellarium")
-    (version "0.19.0")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/Stellarium/" name
-                                 "/releases/download/v" version
-                                 "/" name "-" version ".tar.gz"))
-             (sha256
-              (base32
-               "1mjjqcpgm5a1022x0mpqj3v6qkvpm9wqm1hqyg0mlypc5681va8a"))))
+    (version "0.19.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/Stellarium/stellarium"
+                           "/releases/download/v" version
+                           "/stellarium-" version ".tar.gz"))
+       (sha256
+        (base32 "0s7v5iyhah258k83kvy2a91a3mdf34r150lcar4mmdsrrcmas98g"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -151,9 +162,9 @@ programs for the manipulation and analysis of astronomical data.")
        ("qtserialport" ,qtserialport)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("gettext" ,gettext-minimal) ; xgettext is used at compile time
-       ("perl" ,perl) ; For pod2man
-       ("qtbase" ,qtbase) ; Qt MOC is needed at compile time
+     `(("gettext" ,gettext-minimal)     ; xgettext is used at compile time
+       ("perl" ,perl)                   ; For pod2man
+       ("qtbase" ,qtbase)               ; Qt MOC is needed at compile time
        ("qttools" ,qttools)))
     (arguments
      `(#:test-target "test"
@@ -176,3 +187,65 @@ programs for the manipulation and analysis of astronomical data.")
 can be used to control telescopes over a serial port for tracking celestial
 objects.")
     (license license:gpl2+)))
+
+(define-public celestia
+  (let ((commit "9dbdf29c4ac3d20afb2d9a80d3dff241ecf81dce"))
+    (package
+      (name "celestia")
+      (version (git-version "1.6.1" "815" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/celestiaproject/celestia")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "00xibg87l1arzifakgj7s828x9pszcgx7x7ij88a561ig49ryh78"))))
+      (build-system cmake-build-system)
+      (native-inputs
+       `(("perl" ,perl)
+         ("libgit2" ,libgit2)
+         ("pkg-config" ,pkg-config)
+         ("libtool" ,libtool)
+         ("gettext" ,gettext-minimal)))
+      (inputs
+       `(("glu" ,glu)
+         ("glew" ,glew)
+         ("libtheora" ,libtheora)
+         ("libjpeg" ,libjpeg)
+         ("libpng" ,libpng)
+         ;; maybe required?
+         ("mesa" ,mesa)
+         ;; optional: fmtlib, Eigen3;
+         ("fmt" ,fmt)
+         ("eigen" ,eigen)
+         ;; glut: for glut interface
+         ("freeglut" ,freeglut)))
+      (propagated-inputs
+       `(("lua" ,lua)))
+      (arguments
+       `(#:configure-flags '("-DENABLE_GLUT=ON" "-DENABLE_QT=OFF")
+         #:tests? #f))                            ;no tests
+      (home-page "https://celestia.space/")
+      (synopsis "Real-time 3D visualization of space")
+      (description
+       "This simulation program lets you explore our universe in three
+dimensions.  Celestia simulates many different types of celestial objects.
+From planets and moons to star clusters and galaxies, you can visit every
+object in the expandable database and view it from any point in space and
+time.  The position and movement of solar system objects is calculated
+accurately in real time at any rate desired.")
+      (license license:gpl2+))))
+
+(define-public celestia-gtk
+  (package
+    (inherit celestia)
+    (name "celestia-gtk")
+    (inputs
+     (append (alist-delete "freeglut" (package-inputs celestia))
+             `(("gtk2" ,gtk+-2)
+               ("gtkglext" ,gtkglext))))
+    (arguments
+     `(#:configure-flags '("-DENABLE_GTK=ON" "-DENABLE_QT=OFF")
+       #:tests? #f))))
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index fb4e3f4be3..ef93a11085 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -291,13 +292,16 @@ without modification.")
      `(#:phases (modify-phases %standard-phases
                   (add-after
                    'install 'remove-redundant-completions
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (lambda* (#:key
+                             inputs native-inputs
+                             outputs #:allow-other-keys)
                      ;; Util-linux comes with a bunch of completion files for
                      ;; its own commands which are more sophisticated and
                      ;; up-to-date than those of bash-completion.  Remove those
                      ;; from bash-completion.
                      (let* ((out         (assoc-ref outputs "out"))
-                            (util-linux  (assoc-ref inputs "util-linux"))
+                            (util-linux  (assoc-ref (or native-inputs inputs)
+                                                    "util-linux"))
                             (completions (string-append out
                                                         "/share/bash-completion"
                                                         "/completions"))
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index a1f7b2d2a8..29dac5b0f1 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -2915,14 +2915,14 @@ to multiple hypothesis correction.")
 (define-public r-dose
   (package
     (name "r-dose")
-    (version "3.10.1")
+    (version "3.10.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DOSE" version))
        (sha256
         (base32
-         "0ab7mgj42fg6608qkciyqivr1n8s8r5ibvp0z3jfclrnyx6cl0w1"))))
+         "06jm1mnfd92s84f21562vsmj6jfkravfqf4lcxx2lk7s4ll66znj"))))
     (properties `((upstream-name . "DOSE")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3406,14 +3406,14 @@ type and symbol colors.")
 (define-public r-genomicscores
   (package
     (name "r-genomicscores")
-    (version "1.8.0")
+    (version "1.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GenomicScores" version))
        (sha256
         (base32
-         "17bd61icfycc61b5dij1968h026w7vfd9miwdcbppak1j6s08idq"))))
+         "0xgv5h6hwr4p2p05z8vzhivy97gfirm4rj1ihb5c8fhgc5vp85dy"))))
     (properties `((upstream-name . "GenomicScores")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4745,3 +4745,27 @@ enhancers.  The annotatr package provides an easy way to summarize and
 visualize the intersection of genomic sites/regions with genomic
 annotations.")
     (license license:gpl3)))
+
+(define-public r-rsubread
+  (package
+    (name "r-rsubread")
+    (version "1.34.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "Rsubread" version))
+       (sha256
+        (base32
+         "1230p8nsakifmpsqfiaj8rpm7npa8ab903mfjmayfa71n6yzvcbs"))))
+    (properties `((upstream-name . "Rsubread")))
+    (build-system r-build-system)
+    (inputs `(("zlib" ,zlib)))
+    (home-page "https://bioconductor.org/packages/Rsubread/")
+    (synopsis "Subread sequence alignment and counting for R")
+    (description
+     "This package provides tools for alignment, quantification and analysis
+of second and third generation sequencing data.  It includes functionality for
+read mapping, read counting, SNP calling, structural variant detection and
+gene fusion discovery.  It can be applied to all major sequencing techologies
+and to both short and long sequence reads.")
+    (license license:gpl3)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index f1a73bca7e..8c140a1d24 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -4168,7 +4168,7 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
 (define-public khmer
   (package
     (name "khmer")
-    (version "2.1.2")
+    (version "3.0.0a3")
     (source
      (origin
        (method git-fetch)
@@ -4178,8 +4178,7 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "02x38d9jw2r58y8dmnj4hffy9wxv1yc1jwbvdbhby9dxndv94r9m"))
-       (patches (search-patches "khmer-use-libraries.patch"))
+         "01l4jczglkl7yfhgvzx8j0df7k54bk1r8sli9ll16i1mis0d8f37"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -4192,6 +4191,12 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
            ;; https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00977.html
            (delete-file-recursively "third-party/zlib")
            (delete-file-recursively "third-party/bzip2")
+           (delete-file-recursively "third-party/seqan")
+           (substitute* "setup.cfg"
+             (("# libraries = z,bz2")
+              "libraries = z,bz2")
+             (("include:third-party/zlib:third-party/bzip2")
+              "include:"))
            #t))))
     (build-system python-build-system)
     (arguments
@@ -4208,6 +4213,7 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
     (inputs
      `(("zlib" ,zlib)
        ("bzip2" ,bzip2)
+       ("seqan" ,seqan-1)
        ("python-screed" ,python-screed)
        ("python-bz2file" ,python-bz2file)))
     (home-page "https://khmer.readthedocs.org/")
@@ -6954,14 +6960,14 @@ ungapped alignment formats.")
 (define-public r-systempiper
   (package
     (name "r-systempiper")
-    (version "1.18.1")
+    (version "1.18.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "systemPipeR" version))
        (sha256
         (base32
-         "1k57zyzagd7g7wl38l3cn9csylykxcllbfvyq7dz8pvihgkn0ssi"))))
+         "18s5vpmw766pm64w7bwwfgpsv9yzhwclf0ya1rpqz8qslw7bbdjf"))))
     (properties `((upstream-name . "systemPipeR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7461,13 +7467,13 @@ names in their natural, rather than lexicographic, order.")
 (define-public r-edger
   (package
     (name "r-edger")
-    (version "3.26.4")
+    (version "3.26.5")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "edgeR" version))
               (sha256
                (base32
-                "013glavk6a1wpyq3q35k343bdp6rf27w30q59i4kf47rp3i37g15"))))
+                "0iba4krz30dx5b0s89n5cfkwn64867s7vmvvfqms9lbcr4kj439m"))))
     (properties `((upstream-name . "edgeR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7661,13 +7667,13 @@ annotation data packages using SQLite data storage.")
 (define-public r-biomart
   (package
     (name "r-biomart")
-    (version "2.40.0")
+    (version "2.40.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biomaRt" version))
               (sha256
                (base32
-                "1i457s91bn7n60bzw3zk4h64xgmawlrr6bq4z4cb7jlm04hdq8qm"))))
+                "1abl0c4qbhfqf9ixdp74183phm7s8rszrr5ldczm59b8vyng8rhx"))))
     (properties
      `((upstream-name . "biomaRt")))
     (build-system r-build-system)
@@ -7853,13 +7859,13 @@ samples.")
 (define-public r-genomicalignments
   (package
     (name "r-genomicalignments")
-    (version "1.20.0")
+    (version "1.20.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicAlignments" version))
               (sha256
                (base32
-                "13zw7bb1adgph9bf9b9y725nr0320b80y70p2yqf3bjb2klfxf55"))))
+                "0s3q97q4pgj5jwn4g95al44rahrwsncsf45v01v4071msx3xmjxq"))))
     (properties
      `((upstream-name . "GenomicAlignments")))
     (build-system r-build-system)
@@ -7933,13 +7939,13 @@ as well as query and modify the browser state, such as the current viewport.")
 (define-public r-genomicfeatures
   (package
     (name "r-genomicfeatures")
-    (version "1.36.1")
+    (version "1.36.3")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "02psq3jfgghdydwbydb1j792lvfg44l5npb44mx8d54ckr8658dd"))))
+                "0zkd57i5qjxsravv0gbyckc0wrnqzgxd61ibh3jmhmrccrr9ihn3"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -8556,13 +8562,13 @@ factors bound at the specific regions.")
 (define-public r-tximport
   (package
     (name "r-tximport")
-    (version "1.12.1")
+    (version "1.12.3")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "tximport" version))
               (sha256
                (base32
-                "1nq8v1sgkm2ssmvr2z3qw0zsk7zy0dzb95g1mfs8fkpjqh3nqq5s"))))
+                "070nx0blvvfhsnkbb5j899wy7dgalrh4xfcciir9l2xl67lna1zf"))))
     (build-system r-build-system)
     (home-page "https://bioconductor.org/packages/tximport")
     (synopsis "Import and summarize transcript-level estimates for gene-level analysis")
@@ -10687,14 +10693,14 @@ memory usage and processing time is minimized.")
 (define-public r-phangorn
   (package
     (name "r-phangorn")
-    (version "2.5.3")
+    (version "2.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "phangorn" version))
        (sha256
         (base32
-         "1bv86yfk5r015s7ij6v4zz7bagwrw9m13yfs5853drxb19d5h1m3"))))
+         "0ihkaykqjmf80d8wrk3saphxvnv58zma6pd13633bd3cwanc33f5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)
@@ -12742,7 +12748,7 @@ methylation and segmentation.")
 (define-public pigx-scrnaseq
   (package
     (name "pigx-scrnaseq")
-    (version "0.0.7")
+    (version "0.0.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_scrnaseq/"
@@ -12750,7 +12756,7 @@ methylation and segmentation.")
                                   "/pigx_scrnaseq-" version ".tar.gz"))
               (sha256
                (base32
-                "131zarirv16w8653m0d66jgjnwqfsxqc0hix0rypssz4d83bl51j"))))
+                "0zv0sc5amivxhb95vx2gfx6l9bh7n80fh7h47dalnwxxnfvnzai4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/calcurse.scm b/gnu/packages/calcurse.scm
index 559688470e..c28f1f5554 100644
--- a/gnu/packages/calcurse.scm
+++ b/gnu/packages/calcurse.scm
@@ -30,14 +30,14 @@
 (define-public calcurse
   (package
     (name "calcurse")
-    (version "4.4.0")
+    (version "4.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://calcurse.org/files/calcurse-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0vw2xi6a2lrhrb8n55zq9lv4mzxhby4xdf3hmi1vlfpyrpdwkjzd"))))
+        (base32 "1vjwcmp51h7dsvwn0qx93w9chp3wp970v7d9mjhk7jyamcbfywn3"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (native-inputs `(("tzdata" ,tzdata-for-tests)))
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 4bb608bd8f..36ecad03e2 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -478,22 +478,19 @@ test coverage and has a web user interface that will refresh automatically.")
     (home-page "https://github.com/smartystreets/goconvey")
     (license license:expat)))
 
-;; XXX When updating, check whether ZNC's GOOGLETEST-SOURCES can be
-;; switched back to simply using (PACKAGE-SOURCE ...).
 (define-public googletest
   (package
     (name "googletest")
-    (version "1.8.0")
+    (version "1.8.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/google/googletest.git")
-              (commit (string-append "release-" version))))
+             (url "https://github.com/google/googletest.git")
+             (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0bjlljmbf8glnd9qjabx73w6pd7ibv43yiyngqvmvgxsabzr8399"))))
+        (base32 "0270msj6n7mggh4xqqjp54kswbl7mkcc8px1p5dqdpmw5ngh9fzk"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index a1e40b9ba0..e357556956 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -755,6 +755,11 @@ from forcing GEXP-PROMISE."
        ("udev" ,eudev)
        ("valgrind" ,valgrind)
        ("vulkan-headers" ,vulkan-headers)))
+
+    ;; Building Chromium with a single core takes around 6 hours on an x86_64
+    ;; system.  Give some leeway for slower or busy machines.
+    (properties '((timeout . 64800)))   ;18 hours
+
     (home-page "https://github.com/Eloston/ungoogled-chromium")
     (description
      "Ungoogled-Chromium is the Chromium web browser, with some functionality
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 024025fe52..a6a2a04f6f 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,11 +56,13 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages file)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
   #:use-module (ice-9 match)
@@ -1886,3 +1889,40 @@ compressor.  UPX typically reduces the file size of programs and shared
 libraries by around 50%--70%, thus reducing disk space, network load times,
 download times, and other distribution and storage costs.")
     (license license:gpl2+)))
+
+(define-public quazip
+  (package
+    (name "quazip")
+    (version "0.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/stachenov/quazip.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1g473gnsbkvxpsv8lbsmhspn7jnq86b05zzgqh11r581v8ndvz5s"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))                    ;no test
+    (native-inputs
+     `(("doxygen" ,doxygen)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("zlib" ,zlib)))
+    (home-page "https://stachenov.github.io/quazip/index.html")
+    (synopsis "Qt/C++ wrapper for Minizip")
+    (description "QuaZIP is a simple C++ wrapper over Gilles Vollant's
+ZIP/UNZIP package that can be used to access ZIP archives.  It uses
+Trolltech's Qt toolkit.
+
+QuaZIP allows you to access files inside ZIP archives using QIODevice
+API, and that means that you can also use QTextStream, QDataStream or
+whatever you would like to use on your zipped files.
+
+QuaZIP provides complete abstraction of the ZIP/UNZIP API, for both
+reading from and writing to ZIP archives. ")
+    ;; Project is distributed under LGPL, but "quazip/z*" "quazip/unzip.*" are
+    ;; distributed under zlib terms.
+    (license (list license:lgpl2.1+ license:zlib))))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index e0f2b3bb87..e307d2d57c 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -97,15 +97,17 @@ the system clipboards.")
 (define-public r-ellipsis
   (package
     (name "r-ellipsis")
-    (version "0.1.0")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ellipsis" version))
        (sha256
         (base32
-         "0pw94qpg81xmsdsagpqxddv7m2cmdszmyyq99dk3caqqj01z7wg6"))))
+         "0hdk79q4wn5nq52p8qd65kqz81l0b8gfzsbzyvmfais0p24qclib"))))
     (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rlang" ,r-rlang)))
     (home-page "https://github.com/hadley/ellipsis")
     (synopsis "Tools for working with additional arguments")
     (description
@@ -1115,14 +1117,14 @@ and several other tools.")
 (define-public r-abbyyr
   (package
     (name "r-abbyyr")
-    (version "0.5.4")
+    (version "0.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "abbyyR" version))
        (sha256
         (base32
-         "1jh1c1ad6mgw7brdh2isnza1qpjlfxnqr7jl76yd93axyfl76xjx"))))
+         "1vldnd3dg89aj6a73nhirirqddbfdrnzhb5m3679i60sark8nk6r"))))
     (properties `((upstream-name . "abbyyR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3196,14 +3198,14 @@ simplifying cross-class interoperability.")
 (define-public r-performanceanalytics
   (package
     (name "r-performanceanalytics")
-    (version "1.5.2")
+    (version "1.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "PerformanceAnalytics" version))
        (sha256
         (base32
-         "01bgm57z079g6r505w3bj293zkbd49fwa8sg55z87vizwavipml6"))))
+         "0jhjldwyxwq7a47zmk5y1jjck7hvq92p8rlgjvdfy51hx2dmlqqd"))))
     (properties
      `((upstream-name . "PerformanceAnalytics")))
     (build-system r-build-system)
@@ -3617,14 +3619,14 @@ iVAT).")
 (define-public r-xfun
   (package
     (name "r-xfun")
-    (version "0.7")
+    (version "0.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xfun" version))
        (sha256
         (base32
-         "1gllyyjhkvswcwa15h1f3kb1l1drs2ifpxy4jjanmmhaj7wcmvy9"))))
+         "05jlbi5byqpw0fkhmmxqglnaxh9gwbcigx77kcpw1pkxnpwfry62"))))
     (build-system r-build-system)
     (home-page "https://github.com/yihui/xfun")
     (synopsis "Miscellaneous functions")
@@ -3761,14 +3763,14 @@ terminals.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.13")
+    (version "0.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "1bbphyrbk2rnyi0jhw4hj2w4l84kyhb0km901qd5qnnl0cy6dzvb"))))
+         "0aab7ybc6kkxxk3lzdmbla8zcpp6nmlahchc33miv28cmnqw363w"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-xfun" ,r-xfun)))
@@ -4009,14 +4011,14 @@ Fisher's method), and Sidak correction.")
 (define-public r-quantmod
   (package
     (name "r-quantmod")
-    (version "0.4-14")
+    (version "0.4-15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantmod" version))
        (sha256
         (base32
-         "1csljagnpkr1mmc18h70b64zbyj07kx972nip9dng39jfg7ilnyr"))))
+         "0lyzaf5ypk93v6zj9gdghy05cc7cxgn9yasv1apx5r6qsjcfgwky"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-curl" ,r-curl)
@@ -4418,17 +4420,18 @@ fit into memory.")
 (define-public r-cgdsr
   (package
     (name "r-cgdsr")
-    (version "1.2.10")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cgdsr" version))
        (sha256
         (base32
-         "1xyhw7mhmjichr1l6f9y1qvfj9wm87kfbm87ji7lcwf36gxh5g23"))))
+         "07yc819hkabpzzh0g0cbqza6bcfy67b2marrzz1lj97f9iba78ja"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-r-methodss3" ,r-r-methodss3)
+     `(("r-httr" ,r-httr)
+       ("r-r-methodss3" ,r-r-methodss3)
        ("r-r-oo" ,r-r-oo)))
     (home-page "https://github.com/cBioPortal/cgdsr")
     (synopsis "R-based API for accessing the MSKCC Cancer Genomics Data Server")
@@ -5385,14 +5388,14 @@ and adds the annotation to the plot.")
 (define-public r-ggpubr
   (package
     (name "r-ggpubr")
-    (version "0.2")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggpubr" version))
        (sha256
         (base32
-         "0rkpcjb1x7lvhj68aam5airbi534jqyiq12x5xk40a25iifhghq6"))))
+         "0a4dv6a752hwvc7l31xs7bgqhfzfdy94xp6wgwaxf5dxm46na7k1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cowplot" ,r-cowplot)
@@ -5719,14 +5722,14 @@ references and Rd files.")
 (define-public r-officer
   (package
     (name "r-officer")
-    (version "0.3.4")
+    (version "0.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "officer" version))
        (sha256
         (base32
-         "1m4b3mcn5j5q3nq0jp1nranh4rdb8vxcpabn6ryqk9m6709fvhjz"))))
+         "005kaxjhr40shpav2pg7s7gj8f49579r7rbgwlncbwv16nn0rbbg"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -5883,14 +5886,14 @@ parse and convert strings into cases like snake or camel among others.")
 (define-public r-prediction
   (package
     (name "r-prediction")
-    (version "0.3.6.2")
+    (version "0.3.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "prediction" version))
        (sha256
         (base32
-         "0kx7xbm2j6c8h6gk1iig4vfpg877psg16j74hl7zc2mv40sc6dy5"))))
+         "0awlq5lxfia6m2b91w73rksp93rbwv5gwqb36wbji4rgq41rzbrx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-data-table" ,r-data-table)))
@@ -5962,14 +5965,14 @@ vice versa), or to deal with multiple declared missing values.")
 (define-public r-sjmisc
   (package
     (name "r-sjmisc")
-    (version "2.8.0")
+    (version "2.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjmisc" version))
        (sha256
         (base32
-         "0pgavkygsj8fa591pmasx78b4gd32sf2pa067yqvi82xha7dj5k4"))))
+         "1a30n3cyd9h9ilaiai9ywy53f03nikafc47rvpws2c2vghc8mbn7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
@@ -6039,14 +6042,14 @@ functions.")
 (define-public r-flextable
   (package
     (name "r-flextable")
-    (version "0.5.4")
+    (version "0.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flextable" version))
        (sha256
         (base32
-         "0h6ylgz1mn61d2kh1bym8hfl3r7nf4z092lmjsaav3h1ki3avrnl"))))
+         "1q6x9mfk5gikqjbbra1dn8hs1rq5ws99jdjav3m113gx9f2j5yxh"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -6639,13 +6642,13 @@ and coverage methods to tune the choice of threshold.")
 (define-public r-ggstance
   (package
     (name "r-ggstance")
-    (version "0.3.1")
+    (version "0.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggstance" version))
        (sha256
-        (base32 "0v7f3xdaaridw6d4jvnsfwxmpjrasvx5vl555wsrn50aah17fkvh"))))
+        (base32 "078ih9s5b0xzf582qg0vjnxvg5qad5ms1v2vdd062ckahi8zz1r8"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -7694,14 +7697,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.3.5")
+    (version "1.3.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "0zyink60132f2a0491a94bf67hq8a0bwmw5wn19l0ms8iyiml9d2"))))
+         "0rgzjvmp3yqhwgfg96v17wi8gbafzbrmz134shj2jsf5bsmw6vbj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -7926,14 +7929,14 @@ differentiation.")
 (define-public r-bayestestr
   (package
     (name "r-bayestestr")
-    (version "0.2.0")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayestestR" version))
        (sha256
         (base32
-         "0729j4fdxkkvmh99nmny38dywidzgmipdjqbi2ljxygsn4jg7ysy"))))
+         "09r654lrhwwnshn5h2s2fbx3c8wigv3j4sva5hmfnkwjg8cclhd9"))))
     (properties `((upstream-name . "bayestestR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8209,14 +8212,14 @@ more information about packages, and where they were installed from.")
 (define-public r-remotes
   (package
     (name "r-remotes")
-    (version "2.0.4")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "remotes" version))
        (sha256
         (base32
-         "1jbn4kjimcr82zv5lnqxqa2487a96vn6jxf7wc6gnpxr6k06d61p"))))
+         "19v8dmnk9l4i9m64p7zgmj7y1vhnnwhi5kyn0k5d034zzkvchi49"))))
     (build-system r-build-system)
     (home-page "https://github.com/r-lib/remotes#readme")
     (synopsis "R package installation from remote repositories")
@@ -8722,14 +8725,14 @@ Bioconductor packages.")
 (define-public r-rgl
   (package
     (name "r-rgl")
-    (version "0.100.19")
+    (version "0.100.24")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgl" version))
        (sha256
         (base32
-         "09bhvx8aq104yzysfgd7wlnq4vrvmnd4jzgj0c32whjfal10fqsh"))))
+         "0nm3iyvhhmh0zlywkfmrq3vyh8z1l296xxfmcky0ifd2qnysfcqj"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -9555,14 +9558,14 @@ Touzet and Varre (2007).")
 (define-public r-rnifti
   (package
     (name "r-rnifti")
-    (version "0.10.0")
+    (version "0.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RNifti" version))
        (sha256
         (base32
-         "07sfzps4yg5zdhbxh6i4rbjvbjvvf2d8i9jcf64ywbmi557sw1zv"))))
+         "0zs8ffa6gpi9cygxk7xjin6k3vpvfgb540a506zlk50bf6kc5nlf"))))
     (properties `((upstream-name . "RNifti")))
     (build-system r-build-system)
     (propagated-inputs `(("r-rcpp" ,r-rcpp)))
@@ -10590,14 +10593,14 @@ for association and heterogeneity.")
 (define-public r-bootstrap
   (package
     (name "r-bootstrap")
-    (version "2017.2")
+    (version "2019.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bootstrap" version))
        (sha256
         (base32
-         "08lmsy7k8wsgv89yc904c6fidcymr1ma2ry4fl0p69p21v4iiwa4"))))
+         "1546jqhhw5h177ii8jkdikyd26rv6gwkav816np1zks4p7zgsljj"))))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
     (home-page "https://cran.r-project.org/web/packages/bootstrap")
@@ -11000,14 +11003,14 @@ the local machine to, say, distributed processing on a remote compute cluster.")
 (define-public r-future-apply
   (package
     (name "r-future-apply")
-    (version "1.2.0")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future.apply" version))
        (sha256
         (base32
-         "00ma43ma3byrf9vfqqn9g8sn18c71ryhk7lpza5h7817f1kibw1h"))))
+         "0wd3bh114zkvrqlpn8gqz4ix1igr9hr8x72h2g00a7mqkfjfqx33"))))
     (properties `((upstream-name . "future.apply")))
     (build-system r-build-system)
     (propagated-inputs
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index acffc56a27..561a3b3b12 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -35,6 +35,7 @@
 ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -272,14 +273,14 @@ mapping from string keys to string values.")
 (define-public memcached
   (package
     (name "memcached")
-    (version "1.5.14")
+    (version "1.5.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://memcached.org/files/memcached-" version ".tar.gz"))
        (sha256
-        (base32 "1agj198rm5kc64z8qxck65kdzvw30pdfxalygipnryw0lwlxynww"))))
+        (base32 "0nnccb697jhdn5gqrh3phibzs6xr4nf4ryv7nmyv5vf11n4jr8j5"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -846,6 +847,19 @@ TIMESTAMP.  It also supports storage of binary large objects, including
 pictures, sounds, or video.")
     (license (license:x11-style "file://COPYRIGHT"))))
 
+(define-public postgresql-11
+  (package
+    (inherit postgresql)
+    (name "postgresql")
+    (version "11.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://ftp.postgresql.org/pub/source/v"
+                                  version "/postgresql-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "12ycjlqncijgmd5z078ybwda8ilas96lc7nxxmdq140mzpgjv002"))))))
+
 (define-public postgresql-9.6
   (package
     (inherit postgresql)
@@ -2150,13 +2164,13 @@ etc., and an SQL engine for performing simple SQL queries.")
 (define-public python-lmdb
   (package
     (name "python-lmdb")
-    (version "0.94")
+    (version "0.95")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "lmdb" version))
               (sha256
                (base32
-                "1zh38gvkqw1jm5105if6rr7ccbgyxr7k2rm5ygb9ab3bq82pyaww"))
+                "0nx9f193gzl33r1lbqhb96h1igya7pz8wmahr8m9x5zgc05hal91"))
               (modules '((guix build utils)))
               (snippet
                ;; Delete bundled lmdb source files.
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 778529436b..06f4430b2d 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -439,15 +439,16 @@ a card with a smaller capacity than stated.")
 (define-public python-parted
   (package
     (name "python-parted")
-    (version "3.11.1")
+    (version "3.11.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/dcantrell/pyparted/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dcantrell/pyparted.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0r1nyjj40nacnfnv17x2mnsj6ga1qplyxyza82v2809dfhim2fwq"))))
+        (base32 "0r6916n3w4vldxrq30a3z2iagvxgly4vfmlidjm65vwqnyv17bvn"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 98aaad7e63..2bb61a744a 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -250,17 +250,17 @@ easy.")
 (define-public snap
   (package
     (name "snap")
-    (version "4.2.2.9")
+    (version "5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/jmoenig/Snap.git")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "07qyhh4f8gr1fqyvxa2i6lkzaaa0vl12yzllgp81rdil8z8bi976"))))
+         "0bh52n7nklaaq02qb56v7bvrslf047my6irl7g8h6xfjgw04yf20"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9bf101ab31..2a59ae522e 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -236,7 +236,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
 (define-public emacs-with-editor
   (package
     (name "emacs-with-editor")
-    (version "2.8.0")
+    (version "2.8.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -245,7 +245,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1bbzvxnjpxqyvi808isld025b3pcidn4r2xf8hnk9bmzcfdvdr6q"))))
+                "1z2h9casyw1b93ikq2mf9xixyvbl90zddf0s66lqfiyj2y376pq3"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -3151,7 +3151,7 @@ build jobs.")
 (define-public emacs-company
   (package
     (name "emacs-company")
-    (version "0.9.7")
+    (version "0.9.10")
     (source
      (origin
        (method git-fetch)
@@ -3160,7 +3160,7 @@ build jobs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1gpapjxs4l6fmmj22q0q1pyhj1yd9j5iqfqnjf1abskkj69lqkpj"))))
+        (base32 "0shmv48bq9l5xm60dwx9lqyq6b39y3d7qjxdlah7dpipv5vhra42"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -4180,7 +4180,7 @@ them easier to distinguish from other, less important buffers.")
 (define-public emacs-prescient
   (package
     (name "emacs-prescient")
-    (version "2.2.2")
+    (version "3.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4189,7 +4189,7 @@ them easier to distinguish from other, less important buffers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ncplx5p3cffyzg9ygzqqxj0vpvwrz9rp2n4z6c375a78fyydrk0"))))
+                "1cdjvlwlvxxazz7hlxgvdp0pznvj1gzqa2r6k4im0cpdrnnng6j6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-company" ,emacs-company)
@@ -4615,29 +4615,34 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
       (license license:gpl3+))))
 
 (define-public emacs-ivy-rich
-  (package
-    (name "emacs-ivy-rich")
-    (version "0.1.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/Yevgnen/ivy-rich.git")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0ayf3dwfhafcbqnckm65zy8nc1rv9ji939qfn53wbhxkrgqdicgz"))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-ivy" ,emacs-ivy)))
-    (home-page "https://github.com/Yevgnen/ivy-rich")
-    (synopsis "More friendly interface for @code{ivy}")
-    (description
-     "This package extends @code{ivy} by showing more information in the
+  ;; 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"))
+    (package
+      (name "emacs-ivy-rich")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Yevgnen/ivy-rich.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1s8nwwb1z6lkc58g02pi8w99qms948k8d02lw8k8cq47dw87i219"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-ivy" ,emacs-ivy)))
+      (home-page "https://github.com/Yevgnen/ivy-rich")
+      (synopsis "More friendly interface for @code{ivy}")
+      (description
+       "This package extends @code{ivy} by showing more information in the
 minibuffer for each candidate.  It adds columns showing buffer modes, file
 sizes, docstrings, etc.  If @code{emacs-all-the-icons} is installed, it can
 show icons as well.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-avy
   (package
@@ -5105,15 +5110,16 @@ strings, and code folding.")
 (define-public emacs-nodejs-repl
   (package
     (name "emacs-nodejs-repl")
-    (version "0.2.0")
+    (version "0.2.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/abicky/nodejs-repl.el"
-                                  "/archive/" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/abicky/nodejs-repl.el")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0hq2cqdq2668yf48g7qnkci90nhih1gnhacsgz355jnib56lhmkz"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "05ccv87rnw7fss3lib8m9sywjrj6n92fnd7mmhmjh27g2klqc83z"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/abicky/nodejs-repl.el")
     (synopsis "Node.js REPL inside Emacs")
@@ -5133,14 +5139,14 @@ features:
     (name "emacs-typescript-mode")
     (version "0.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/ananthakumaran/typescript.el"
-                    "/archive/v" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ananthakumaran/typescript.el")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gqjirm8scf0wysm7x97zdfbs4qa5nqdl64jfbkd18iskv5mg3rj"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "002f1xfhq43fjaqliwrgxspryfahpa82va5dw3p8kwil2xwvc6mh"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ananthakumaran/typescript.el")
     (synopsis "Emacs major mode for editing Typescript code")
@@ -5160,13 +5166,14 @@ indentation and filling of comments and C preprocessor fontification.")
     (name "emacs-tide")
     (version "3.2.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ananthakumaran/tide"
-                                  "/archive/v" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ananthakumaran/tide")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1c600myr2yqbkmy9lify38lz0zzjdqk1733db5n7vsay16vn6fzi"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "19kjq4kr2j853p5qp1s79zxmrfprli82lsnphbrlp9vbnib28xyd"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -5761,14 +5768,14 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
     (name "emacs-wgrep")
     (version "2.3.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mhayashi1120/Emacs-wgrep")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cssqbg03fjb6xwf7idv1l3jjsh9r5r232ryi11czqlxfiv658bj"))))
+                "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
     (synopsis "Edit a grep buffer and apply those changes to the files")
@@ -6760,7 +6767,7 @@ notifications.")
 (define-public emacs-alert
   (package
     (name "emacs-alert")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method git-fetch)
@@ -6769,7 +6776,7 @@ notifications.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1vpc3q40m6dcrslki4bg725j4kv6c6xfxwjjl1ilg7la49fwwf26"))))
+        (base32 "0lc0p5cl4hfrzw1z2ghb11k1lvljn5m08jw5fmgwgxv667kwh49r"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-gntp" ,emacs-gntp)
@@ -6783,8 +6790,8 @@ customizable by the user.")
     (license license:gpl2+)))
 
 (define-public emacs-zones
-  (let ((commit "353fc38a6544eb59887bee045e373406f1d038a5")
-        (revision "1"))
+  (let ((commit "3169815c323966ff8e252b44e3558d6d045243fe")
+        (revision "2"))
     (package
       (name "emacs-zones")
       (version (git-version "0" revision commit))
@@ -6797,7 +6804,7 @@ customizable by the user.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0gwnw2giii2a14nlh62xp45f47cw6ikqphhzpmcw6c7mn9x5z2ar"))
+           "039msns5596rz0my7fxpanpxwg1lkhpiibm9ppnlzaajx1hszbzl"))
          (patches
           (search-patches
            "emacs-zones-called-interactively.patch"))))
@@ -7589,15 +7596,17 @@ and cangjie.")
 (define-public emacs-posframe
   (package
     (name "emacs-posframe")
-    (version "0.4.2")
+    (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://elpa.gnu.org/packages/posframe-" version ".el"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/posframe")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1h8vvxvsg41vc1nnglqjs2q0k1yzfsn72skga9s76qa3zxmx6kds"))))
+         "1fhjxj7gi2pj5rdnmf0gddiwd8iifgjgjp01c01npz1gwwixyqh3"))))
     (build-system emacs-build-system)
     ;; emacs-minimal does not include the function font-info
     (arguments `(#:emacs ,emacs))
@@ -7878,6 +7887,37 @@ other operations.")
 on mouse-control.")
     (license license:gpl3+)))
 
+(define-public emacs-gnugo
+  (package
+    (name "emacs-gnugo")
+    (version "3.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/gnugo-"
+                           version ".tar"))
+       (sha256
+        (base32
+         "0xpjvs250gg71qwapdsb1hlc61gs0gpkjds01srf784fvyxx2gf1"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'configure-default-gnugo-xpms-variable
+                    (lambda _
+                      (substitute* "gnugo.el"
+                        (("defvar gnugo-xpms nil")
+                         "defvar gnugo-xpms #'gnugo-imgen-create-xpms"))
+                      #t)))))
+    (propagated-inputs
+     `(("emacs-ascii-art-to-unicode" ,emacs-ascii-art-to-unicode)
+       ("emacs-xpm" ,emacs-xpm)))
+    (home-page "https://elpa.gnu.org/packages/gnugo.html")
+    (synopsis "Emacs major mode for playing GNU Go")
+    (description "This package provides an Emacs based interface for GNU Go.
+It has a graphical mode where the board and stones are drawn using XPM images
+and supports the use of a mouse.")
+    (license license:gpl3+)))
+
 (define-public emacs-gnuplot
   (package
     (name "emacs-gnuplot")
@@ -7962,20 +8002,20 @@ pressed simultaneously or a single key quickly pressed twice.")
 (define-public emacs-evil-surround
   (package
     (name "emacs-evil-surround")
-    (version "1.0.0")
+    (version "1.0.4")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/timcharper/evil-surround.git")
-             (commit (string-append "v" version))))
+             (url "https://github.com/emacs-evil/evil-surround")
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1smv7sqhm1l2bi9fmispnlmjssidblwkmiiycj1n3ag54q27z031"))))
+        (base32 "1ajsi6xn8mliwzl24h6pp9rd91z7f20yvkphr9q7k6zpjrd7fb9q"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
-    (home-page "https://github.com/timcharper/evil-surround")
+    (home-page "https://github.com/emacs-evil/evil-surround")
     (synopsis "Easily modify surrounding parentheses and quotes")
     (description "@code{emacs-evil-surround} allows easy deletion, change and
 addition of surrounding pairs, such as parentheses and quotes, in evil mode.")
@@ -8636,13 +8676,13 @@ created by @code{git format-patch}, from @code{magit}, @code{dired} and
     (version "1.3.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/leathekd/erc-hl-nicks"
-                           "/archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/leathekd/erc-hl-nicks")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1a1r2kc3688g8c2ybkpwh88kgmnqhg3h3032g2yn4zr9m0n3vpkr"))))
+        (base32 "0c82rxpl5v7bbxirf1ksg06xv5xcddh8nkrpj7i6nvfarwdfnk4f"))))
     (build-system emacs-build-system)
     (synopsis "Nickname highlighting for Emacs ERC")
     (description "@code{erc-hl-nicks} highlights nicknames in ERC, an IRC
@@ -8792,27 +8832,20 @@ an elisp expression.")
 (define-public emacs-emojify
   (package
     (name "emacs-emojify")
-    (version "0.4")
+    (version "1.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/iqbalansari/emacs-emojify/"
-                           "releases/download/v" version "/emojify-"
-                           version ".tar"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/iqbalansari/emacs-emojify")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0k84v2d2bkiwcky9fi1yyprgkj46g7wh6pyl9gzmcd7sqv051d5n"))))
+         "1fqnj5x7ivjkm5y927dqqnm85q5hzczlb0hrfpjalrhasa6ijsrm"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-data
-           (lambda* (#:key  outputs #:allow-other-keys)
-             (copy-recursively "data"
-                               (string-append (assoc-ref outputs "out")
-                                              "/share/emacs/site-lisp/guix.d/"
-                                              "emojify-" ,version "/data"))
-             #t)))))
+     `(#:include (cons "^data/" %default-include)))
     (propagated-inputs
      `(("emacs-ht" ,emacs-ht)))
     (home-page "https://github.com/iqbalansari/emacs-emojify")
@@ -8823,6 +8856,36 @@ well as Github-style emojis like @code{:smile:}.  It provides a minor mode
 @code{emojify-mode} to enable the display of emojis in a buffer.")
     (license license:gpl3+)))
 
+(define-public emacs-make-it-so
+  (let ((commit "bc3b01d6b9ed6ff66ebbd524234f9d6df60dd4be")
+        (version "0.1.0")
+        (revision "1"))
+    (package
+      (name "emacs-make-it-so")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/abo-abo/make-it-so")
+               (commit commit)))
+         (sha256
+          (base32
+           "0833bzlscpnkvjnrg3g54yr246afbjwri8n5wxk8drnsq6acvd8z"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:include (cons "^recipes/" %default-include)))
+      (propagated-inputs
+       `(("emacs-ivy" ,emacs-ivy)))
+      (home-page "https://github.com/abo-abo/make-it-so")
+      (synopsis "Transform files with Makefile recipes")
+      (description "This package provides an interface for selecting from
+different conversion recipes, often including tools like @code{ffmpeg} or
+@code{convert}.  The conversion command need only be written once, and
+subsequent invocations can be readily customized.  Several recipes are
+included by default, and more can be readily added.")
+      (license license:gpl3+))))
+
 (define-public emacs-websocket
   (package
     (name "emacs-websocket")
@@ -9186,7 +9249,7 @@ Feautures:
 (define-public emacs-evil-matchit
   (package
     (name "emacs-evil-matchit")
-    (version "2.2.9")
+    (version "2.3.0")
     (source
      (origin
        (method git-fetch)
@@ -9195,7 +9258,7 @@ Feautures:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12if45pxfndy3d7r4gd3zx4d3jk4d64fdmwkhc3y5zhqq9h9iy4c"))))
+        (base32 "0y6q42hml7jgf060d83m7hf270h01858g5kxw12na9n4r4jjpdg1"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -9646,6 +9709,27 @@ matches\" in the mode line in various search modes.  This is an Emacs port of
 Anzu.zim.")
     (license license:gpl3+)))
 
+(define-public emacs-ascii-art-to-unicode
+  (package
+    (name "emacs-ascii-art-to-unicode")
+    (version "1.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/ascii-art-to-unicode-"
+                           version ".el"))
+       (sha256
+        (base32
+         "1w9h2lyriafxj71r79774gh822cz8mry3gdfzyj6ym6v9mvqypna"))))
+    (build-system emacs-build-system)
+    (home-page "https://elpa.gnu.org/packages/ascii-art-to-unicode.html")
+    (synopsis "ASCII to Unicode art converter for Emacs")
+    (description "This Emacs package provides the commands @command{aa2u} and
+@command{aa2u-rectangle}.  Both of these commands can be used to convert
+simple ASCII art line drawings to Unicode; the former works on the active
+region of the buffer, while the latter works on rectangular selections.")
+    (license license:gpl3+)))
+
 (define-public emacs-emmet-mode
   (package
     (name "emacs-emmet-mode")
@@ -9758,12 +9842,13 @@ and can be consulted and modified.")
     (version "0.03")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/syohex/emacs-evil-anzu"
-                           "/archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-evil-anzu")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "032hh2946z529cizqsg8pm6cpn5qdj8lfk3qskmx6xv3g2ra56ns"))))
+        (base32 "0lw7fg4gqwj30r0l6k2ni36sxqkf65zf0d0z3rxnpwbxlf8dlkrr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)
@@ -10106,29 +10191,153 @@ text-mode (i.e. Org-mode).")
       (license license:gpl3+))))
 
 (define-public emacs-outshine
-  (let ((commit "5f1a6b70231d2811c522e4e5e8c89ff461b311d6"))
+  (package
+    (name "emacs-outshine")
+    (version "3.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/alphapapa/outshine.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lh9f5dgdbwfyzxk6nsg1xwdjs8gc6p9mbyyhp6f8fnk3h0y88cg"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-outorg" ,emacs-outorg)))
+    (home-page "https://github.com/alphapapa/outshine")
+    (synopsis "Emacs outline with outshine")
+    (description "Outshine attempts to bring the look and feel of
+@code{org-mode} to an Emacs outside of the Org major-mode.  It is an extension
+of @code{outline-minor-mode} (@code{org-mode} itself derives from
+outline-mode), so there is no such thing like an outshine mode, only
+@code{outline-minor-mode} with outshine extensions loaded.")
+    (license license:gpl3+)))
+
+(define-public emacs-frecency
+  (let ((commit "31ef9ff4af1a4fed3dcc24ea74037feea8795c87")
+        (version "0.1-pre")
+        (revision "1"))
     (package
-      (name "emacs-outshine")
-      (version (git-version "2.0" "1" commit))
+      (name "emacs-frecency")
+      (version (git-version version revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/alphapapa/outshine.git")
+                      (url "https://github.com/alphapapa/frecency.el")
                       (commit commit)))
-                (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1l9v1dfhgg7il11ifbhvcvrg3acfjk9sdxlc3lja1k54d7dp60jv"))))
+                  "051aihjdg3x22svaxhwylpi8i6s2x9j8syvsj1jgilgjjdy15l6j"))
+                (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
-       `(("emacs-outorg" ,emacs-outorg)))
-      (home-page "https://github.com/alphapapa/outshine")
-      (synopsis "Emacs outline with outshine")
-      (description "Outshine attempts to bring the look and feel of
-@code{org-mode} to an Emacs outside of the Org major-mode.  It is an extension
-of @code{outline-minor-mode} (@code{org-mode} itself derives from
-outline-mode), so there is no such thing like an outshine mode, only
-@code{outline-minor-mode} with outshine extensions loaded.")
+       `(("emacs-a" ,emacs-a)
+         ("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/alphapapa/frecency.el")
+      (synopsis "Sort items by frequency and recency of access")
+      (description "This package provides a way of sorting items via
+a heuristic based on frequency and recency.")
+      (license license:gpl3+))))
+
+(define-public emacs-org-recent-headings
+  (package
+    (name "emacs-org-recent-headings")
+    (version "0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/alphapapa/org-recent-headings.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0gsrzmg3mssh9s28yjm9m866fnhm1pcligssz1q6brga6dm6f2yy"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-org" ,emacs-org)
+       ("emacs-dash" ,emacs-dash)
+       ("emacs-frecency" ,emacs-frecency)))
+    (home-page "https://github.com/alphapapa/org-recent-headings")
+    (synopsis "Navigate to recently used Org headings and lists")
+    (description "This package maintains a list of recently used Org headings,
+as well as functions for navigating between these headings.")
+    (license license:gpl3+)))
+
+(define-public emacs-org-super-agenda
+  (package
+   (name "emacs-org-super-agenda")
+   (version "1.1")
+   (source (origin
+            (method git-fetch)
+            (uri (git-reference
+                  (url "https://github.com/alphapapa/org-super-agenda")
+                  (commit version)))
+            (file-name (git-file-name name version))
+            (sha256
+             (base32
+              "0vzf91lsxnhwf52kvm8ycpf0wb9c8l91689vyhwgv4wz8q6cvjwp"))))
+   (build-system emacs-build-system)
+   (propagated-inputs
+    `(("emacs-org" ,emacs-org)
+      ("emacs-dash" ,emacs-dash)
+      ("emacs-ht" ,emacs-ht)
+      ("emacs-s" ,emacs-s)))
+   (home-page "https://github.com/alphapapa/org-super-agenda")
+   (synopsis "Supercharged Org agenda")
+   (description "This package allows items in the Org agenda to be grouped
+into sections while preserving the structure imposed by any timestamps.")
+   (license license:gpl3+)))
+
+(define-public emacs-org-make-toc
+  (package
+    (name "emacs-org-make-toc")
+    (version "0.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/alphapapa/org-make-toc")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0syhj8q4pv33xgl5qa6x27yhwqvfhffw5xqp819hj4qs1ddlc7j5"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-org" ,emacs-org)
+       ("emacs-dash" ,emacs-dash)
+       ("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/alphapapa/org-make-toc")
+    (synopsis "Maintain a table of contents for an Org file")
+    (description "This package facilitates the creation and maintenance of
+tables of contents.")
+    (license license:gpl3+)))
+
+(define-public emacs-org-ql
+  (let ((commit "0aec8ec60395197b2ef2b885c216cf84286efed9")
+        (version "0.1-pre")
+        (revision "1"))
+    (package
+      (name "emacs-org-ql")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alphapapa/org-ql")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0bj85hxhym7rvkaddcxybxdm7g7w439wij9f2w5ljz1hmvp55991"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)
+         ("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/alphapapa/org-ql")
+      (synopsis "Query language for Org buffers")
+      (description "This package provides a Lispy query language for Org
+files, allowing for actions to be performed based on search criteria.")
       (license license:gpl3+))))
 
 (define-public emacs-parsebib
@@ -11206,10 +11415,10 @@ You should really read org-ref.org in this package for details.")
 
 ;; This project is unmaintained.  Please use emacs-org-re-reveal instead.
 (define-public emacs-org-reveal
-  (let ((commit "1cdd088ec5fab631c564dca7f9f74fd3e9b7d4d4"))
+  (let ((commit "9210413202a360a559a51e8275faa42be68cf44b"))
     (package
       (name "emacs-org-reveal")
-      (version (git-version "0.1" "2" commit))
+      (version (git-version "0.1" "3" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -11218,7 +11427,7 @@ You should really read org-ref.org in this package for details.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1vjxjadq2i74p96y9jxnqj1yb86fsgxzmn7bjgnb88ay6nvc1l72"))))
+                  "1wlfk823d3vrn480m38j7ncaqm193lvh6y22b92fx4b3yhdbndza"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/yjwen/org-reveal")
       (synopsis "Org and Reveal.js powered HTML presentation tool")
@@ -11382,7 +11591,7 @@ downloading manager for Emacs.")
 (define-public emacs-helpful
   (package
     (name "emacs-helpful")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method git-fetch)
@@ -11391,10 +11600,14 @@ downloading manager for Emacs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1rqnx7672175288yqaslw0d9vw04j6psw7mys8j9zcp2i72hlvkn"))))
+        (base32 "1pzlx3galyryd3hd84hnd7r5s6yl9sdrfhy1s6dgz40glw41wmpr"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-elisp-refs" ,emacs-elisp-refs)))
+     `(("emacs-elisp-refs" ,emacs-elisp-refs)
+       ("emacs-dash" ,emacs-dash)
+       ("emacs-s" ,emacs-s)
+       ("emacs-f" ,emacs-f)
+       ("emacs-shut-up" ,emacs-shut-up)))
     (home-page "https://github.com/Wilfred/helpful")
     (synopsis "More contextual information in Emacs help")
     (description "@code{helpful} is an alternative to the built-in Emacs help
@@ -12780,10 +12993,30 @@ datastructures as needed, both for method parameters and return values, making
 using XML-RPC methods fairly transparent to the Lisp code.")
       (license license:gpl3+))))
 
+(define-public emacs-xpm
+  (package
+    (name "emacs-xpm")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/xpm-"
+                           version ".tar"))
+       (sha256
+        (base32
+         "075miyashh9cm3b0gk6ngld3rm8bfgnh4qxnhxmmvjgzf6a64grh"))))
+    (build-system emacs-build-system)
+    (home-page "https://elpa.gnu.org/packages/xpm.html")
+    (synopsis "XPM image editing mode for Emacs")
+    (description "This Emacs package makes editing XPM images easy (and maybe
+fun).  Editing is done directly on the (textual) image format, for maximal
+cohesion with the Emacs Way.")
+    (license license:gpl3+)))
+
 (define-public emacs-fish-completion
   (package
     (name "emacs-fish-completion")
-    (version "1.0")
+    (version "1.1")
     (source
      (origin
        (method url-fetch)
@@ -12793,7 +13026,7 @@ using XML-RPC methods fairly transparent to the Lisp code.")
              version))
        (sha256
         (base32
-         "1hpma1c5j50ja03ibr7h1xmyv7k8j3rbvqivad47kwqhlsgw0jk0"))))
+         "0bpvifv6c2a65nks6kvarw0hhm37fnyy74wikwf9qq1i20va0fpv"))))
     (build-system emacs-build-system)
     (inputs `(("fish" ,fish)))
     (arguments
@@ -13593,7 +13826,7 @@ buffers – other modes on the TODO list).
 (define-public emacs-magit-todos
   (package
     (name "emacs-magit-todos")
-    (version "1.1.7")
+    (version "1.2")
     (source
      (origin
        (method git-fetch)
@@ -13603,7 +13836,7 @@ buffers – other modes on the TODO list).
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0qagdxpik64n4rw9scy451ws5sw00v64ri9g2dcw7b66bx2c6c6w"))))
+         "17a18gszbypz82bj36xbfyykc4s9rz83vwmpxvlf65svhd51c0nh"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -14456,7 +14689,7 @@ to open SQLite databases.")
 (define-public emacs-nix-mode
   (package
     (name "emacs-nix-mode")
-    (version "1.2.2")
+    (version "1.4.1")
     (source
      (origin
        (method git-fetch)
@@ -14465,10 +14698,11 @@ to open SQLite databases.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1vz3s2jx14nzy53f04d821n4f2s22ys5h9s7af6cnpynkwawyhhq"))))
+        (base32 "04xpgg9nba5m1bl7ci5l456whcb8nfhsbvgxyx89bp0zqgr005q7"))))
     (build-system emacs-build-system)
     (inputs
      `(("emacs-company" ,emacs-company)
+       ("emacs-json-mode" ,emacs-json-mode)
        ("emacs-mmm-mode" ,emacs-mmm-mode)))
     (home-page "https://github.com/NixOS/nix-mode")
     (synopsis "Emacs major mode for editing Nix expressions")
@@ -14665,31 +14899,30 @@ recursively.  The results are cached for speed.")
     (license license:gpl3+)))
 
 (define-public emacs-orgit
-  (let ((commit "2456436a7e64d26bcf455b3890a586acaa3e7f93"))
-    (package
-      (name "emacs-orgit")
-      (version (git-version "1.5.1" "2" commit))
-      (home-page "https://github.com/magit/orgit")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url home-page)
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1i52dq2ynddb1irgigr5mdwfbfd3bvm1f29jnzd7nlc0nk186nvh"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-dash" ,emacs-dash)
-         ("emacs-magit" ,emacs-magit)))
-      (synopsis "Support for Org links to Magit buffers")
-      (description "This package defines several Org link types, which can be
+  (package
+    (name "emacs-orgit")
+    (version "1.5.3")
+    (home-page "https://github.com/magit/orgit")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ywavzki510rslsgfm0cnn3mlh644p61ha2nfb715xhkg7cd3j9g"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-magit" ,emacs-magit)))
+    (synopsis "Support for Org links to Magit buffers")
+    (description "This package defines several Org link types, which can be
 used to link to certain Magit buffers.  Use the command
 @command{org-store-link} while such a buffer is current to store a link.
 Later you can insert it into an Org buffer using the command
 @code{org-insert-link}.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-amx
   (package
@@ -15616,7 +15849,7 @@ previewed by scrolling up and down within a @code{dired} buffer.")
 (define-public emacs-counsel-etags
   (package
     (name "emacs-counsel-etags")
-    (version "1.8.3")
+    (version "1.8.4")
     (source
      (origin
        (method git-fetch)
@@ -15626,7 +15859,7 @@ previewed by scrolling up and down within a @code{dired} buffer.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1d8nlrbsyza6q7yqm9248bxxsf49qf6hchg3zwv0l11acn3w8np5"))))
+         "14my9jvxl26a5yn381h5pi5481y9d9gyk7wnxxd0s4sjc964c5h5"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-ivy" ,emacs-ivy)))
@@ -15636,6 +15869,32 @@ previewed by scrolling up and down within a @code{dired} buffer.")
 and searching through @code{Ctags} files.")
     (license license:gpl3+)))
 
+(define-public emacs-org-download
+  (let ((commit "ac72bf8fce3e855da60687027b6b8601cf1de480")
+        (version "0.1.0")
+        (revision "1"))
+    (package
+      (name "emacs-org-download")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/abo-abo/org-download")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0ax5wd44765wnwabkam1g2r62gq8crx2qq733s2mg1z72cfvwxqb"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-org" ,emacs-org)
+         ("emacs-async" ,emacs-async)))
+      (home-page "https://github.com/abo-abo/org-download")
+      (synopsis "Facilitate moving images")
+      (description "This package provides utilities for managing image files
+copied into @code{org-mode} buffers.")
+      (license license:gpl3+))))
+
 (define-public emacs-helm-dash
   (let ((commit "192b862185df661439a06de644791171e899348a")
         (version "1.3.0")
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 83a9a8bab6..8d0162a2d1 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -239,7 +239,7 @@ turbo speed, networked multiplayer, and graphical enhancements.")
 (define-public dosbox
   (package
     (name "dosbox")
-    (version "0.74-2")
+    (version "0.74-3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceforge.net/projects/dosbox"
@@ -248,7 +248,7 @@ turbo speed, networked multiplayer, and graphical enhancements.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1ksp1b5szi0vy4x55rm3j1y9wq5mlslpy8llpg87rpdyjlsk0xvh"))))
+                "02i648i50dwicv1vaql15rccv4g8h5blf5g6inv67lrfxpbkvlf0"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1191,7 +1191,7 @@ play them on systems for which they were never designed!")
 (define-public mame
   (package
     (name "mame")
-    (version "0.210")
+    (version "0.211")
     (source
      (origin
        (method git-fetch)
@@ -1201,7 +1201,7 @@ play them on systems for which they were never designed!")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08c62mc8aajzh44q36qvmrcq404hdzh3i8wwdfnvn0c4w8dbf486"))
+         "0gbxgncbzmmplijg0c1ibwsb87fbmfvs1kjflh002yyx8yvfw83z"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm
index 0392a709e2..ce148b47a5 100644
--- a/gnu/packages/enchant.scm
+++ b/gnu/packages/enchant.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,7 +33,7 @@
 (define-public enchant
   (package
     (name "enchant")
-    (version "2.2.3")
+    (version "2.2.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/AbiWord/enchant/releases"
@@ -40,7 +41,7 @@
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0v87p1ls0gym95qirijpclk650sjbkcjjl6ssk059zswcwaykn5b"))))
+                "1p6a3qmrh8bjzds6x7rg9da0ir44gg804jzkf634h39wsa4vdmpm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static"
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 5b95bcb704..cd5d3b7d9a 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -399,7 +399,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
   (package
     (inherit electrum)
     (name "electron-cash")
-    (version "4.0.1")
+    (version "4.0.7")
     (source
      (origin
        (method url-fetch)
@@ -410,7 +410,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
                            ".tar.gz"))
        (sha256
         (base32
-         "16fi03f23yb5r9s64x1a9wrxnvivlbawvrbq4d486yclzl1r7y48"))
+         "0xswmr68cm1c77lzisi3z812jzqczm9dfrshfhdq42zz5kaz4gnn"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index f0547a1a8a..a8d6cfd5aa 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -48,7 +48,7 @@
 (define-public flashrom
   (package
     (name "flashrom")
-    (version "1.0.1")
+    (version "1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -56,7 +56,7 @@
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0i6yrrl69hrqmwd7azj7x3j46m0qpvzmk3b5basym7mnlpfzhyfm"))))
+                "06afq680n9p34hi3vrkn12vd1pfyq2062db9qqbi4hi21k3skbdf"))))
     (build-system gnu-build-system)
     (inputs `(("dmidecode" ,dmidecode)
               ("pciutils" ,pciutils)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index b9527659db..4b37ffdf3c 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -631,7 +631,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
 (define-public weston
   (package
     (name "weston")
-    (version "6.0.0")
+    (version "6.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -639,7 +639,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
                     "weston-" version ".tar.xz"))
               (sha256
                (base32
-                "04p6hal5kalmdp5dxwh2h5qhkkb4dvbsk7l091zvvcq70slj6qsl"))))
+                "1d2m658ll8x7prlsfk71qgw89c7dz6y7d6nndfxwl49fmrd6sbxz"))))
     (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 63ccd20470..05a68b717a 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -153,15 +153,15 @@ is used in some video games and movies.")
 (define-public deutex
   (package
    (name "deutex")
-   (version "5.1.2")
+   (version "5.2.0")
    (source (origin
             (method url-fetch)
-            (uri (string-append "https://github.com/Doom-Utils/" name
+            (uri (string-append "https://github.com/Doom-Utils/deutex"
                                 "/releases/download/v" version "/"
-                                name "-" version ".tar.xz"))
+                                "deutex-" version ".tar.xz"))
             (sha256
              (base32
-              "1rj3w4xa0n4jixy4j7p6gbclylbgxvhdnji7xnkydrqii9rxnbp4"))))
+              "1d536d3i78k4ch8mjg7lqnamnyfpp2x5x7mzx5smqi9ad8lb6hqz"))))
    (build-system gnu-build-system)
    (native-inputs `(("asciidoc" ,asciidoc)))
    (home-page "https://github.com/Doom-Utils/deutex")
@@ -1511,3 +1511,29 @@ added.  The permanent goal is to create the open source Quake 3 distribution
 upon which people base their games, ports to new platforms, and other
 projects.")
       (license license:gpl2))))
+
+(define-public openvr
+  (package
+    (name "openvr")
+    (version "1.4.18")
+    (home-page "https://github.com/ValveSoftware/openvr/")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0m92634j6g0f2xybbzklm79cnq20vidbk1jc62pnz12aabwixvyh"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; No tests.
+     '(#:tests? #f
+       #:configure-flags (list "-DBUILD_SHARED=1")))
+    (synopsis "Virtual reality software development kit")
+    (description "OpenVR is an API and runtime that allows access to VR
+hardware from multiple vendors without requiring that applications have
+specific knowledge of the hardware they are targeting.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index bf3ab94e68..a5aaf56fb2 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -42,6 +42,7 @@
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -130,6 +131,7 @@
   #:use-module (gnu packages netpbm)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages ocaml)
+  #:use-module (gnu packages opencl)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
@@ -3547,7 +3549,7 @@ with the \"Stamp\" tool within Tux Paint.")
    (description "SuperTux is a free classic 2D jump'n run sidescroller game
 in a style similar to the original Super Mario games covered under
 the GNU GPL.")
-   (home-page "https://supertuxproject.org/")
+   (home-page "https://supertux.org/")
    (license license:gpl3+)))
 
 (define-public tintin++
@@ -7254,6 +7256,26 @@ the game avoids complex inventory management and character building, relying
 on items and player adaptability for character progression.")
     (license license:isc)))
 
+(define-public harmonist-tk
+  (package
+    (inherit harmonist)
+    (name "harmonist-tk")
+    (arguments
+      (append
+        (package-arguments harmonist)
+        `(#:phases
+          (modify-phases %standard-phases
+            (replace 'build
+              (lambda _
+                (invoke "go" "install" "-v" "-x" "--tags" "tk"
+                        "git.tuxfamily.org/harmonist/harmonist")))
+            (replace 'check
+              (lambda _
+                (invoke "go" "test" "--tags" "tk"
+                        "git.tuxfamily.org/harmonist/harmonist")))))))
+    (inputs
+     `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
+
 (define-public drascula
   (package
     (name "drascula")
@@ -7560,3 +7582,52 @@ remake of that series or any other game.")
     ;; released under both gpl2 and cc-by-sa3.0.  Bundled Gigi library is
     ;; released under lgpl2.1+.
     (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
+
+(define-public leela-zero
+  (package
+   (name "leela-zero")
+   (version "0.17")
+   (source
+    (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://github.com/leela-zero/leela-zero.git")
+           (commit (string-append "v" version))))
+     (file-name (git-file-name name version))
+     (sha256
+      (base32
+       "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
+     (patches (search-patches "leela-zero-gtest.patch"))))
+   (build-system cmake-build-system)
+   (native-inputs
+    `(("googletest" ,googletest)))
+   (inputs
+    `(("boost" ,boost)
+      ("ocl-icd" ,ocl-icd)
+      ("openblas" ,openblas)
+      ("opencl-headers" ,opencl-headers)
+      ("qtbase" ,qtbase)
+      ("zlib" ,zlib)))
+   (arguments
+    '(#:configure-flags '("-DUSE_BLAS=YES")
+      #:phases (modify-phases %standard-phases
+                 (add-before 'configure 'fix-tests
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let ((home (getcwd)))
+                       (setenv "HOME" home)
+                       (substitute* "src/tests/gtests.cpp"
+                         (("\\.\\./src/tests/0k\\.txt")
+                          (string-append home "/src/tests/0k.txt"))
+                         (("cfg_gtp_mode = true;")
+                          "cfg_gtp_mode = true; cfg_cpu_only = true;")))
+                     #t))
+                 (replace 'check
+                   (lambda _
+                     (invoke "./tests"))))))
+   (home-page "https://github.com/leela-zero/leela-zero")
+   (synopsis "Program playing the game of Go")
+   (description
+    "Leela-zero is a Go engine with no human-provided knowledge, modeled after
+the AlphaGo Zero paper.  The current best network weights file for the engine
+can be downloaded from @url{https://zero.sjeng.org/best-network}.")
+   (license license:gpl3+)))
diff --git a/gnu/packages/genealogy.scm b/gnu/packages/genealogy.scm
new file mode 100644
index 0000000000..2db3fdb918
--- /dev/null
+++ b/gnu/packages/genealogy.scm
@@ -0,0 +1,112 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages genealogy)
+  #:use-module (guix build-system python)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages geo)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages version-control))
+
+(define-public gramps
+  (package
+    (name "gramps")
+    (version "5.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gramps-project/gramps.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1jz1fbjj6byndvir7qxzhd2ryirrd5h2kwndxpp53xdc05z1i8g7"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("font-gnu-freefont-ttf" ,font-gnu-freefont-ttf)
+       ("geocode-glib" ,geocode-glib)
+       ("gexiv2" ,gexiv2)
+       ("ghostscript" ,ghostscript)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+" ,gtk+)
+       ("gtkspell3" ,gtkspell3)
+       ("graphviz" ,graphviz)
+       ("librsvg" ,librsvg)
+       ("osm-gps-map" ,osm-gps-map)
+       ("pango" ,pango)
+       ("python-bsddb3" ,python-bsddb3)
+       ("python-pillow" ,python-pillow)
+       ("python-pycairo" ,python-pycairo)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pyicu" ,python-pyicu)
+       ("rcs" ,rcs)
+       ("sqlite" ,sqlite)
+       ("xdg-utils" ,xdg-utils)))
+    (arguments
+     `(#:imported-modules ((guix build glib-or-gtk-build-system)
+                           ,@%python-build-system-modules)
+       #:modules ((ice-9 match)
+                  (guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-home-for-tests
+           (lambda _
+             (setenv "HOME" (getenv "TMPDIR"))
+             #t))
+         (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (paths (map (match-lambda
+                                 ((output . directory)
+                                  (let ((girepodir (string-append
+                                                    directory
+                                                    "/lib/girepository-1.0")))
+                                    (if (file-exists? girepodir)
+                                        girepodir
+                                        #f))))
+                               inputs)))
+               (wrap-program (string-append out "/bin/gramps")
+                 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
+             #t))
+         (add-after 'wrap 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (home-page "https://gramps-project.org")
+    (synopsis "Genealogical research software")
+    (description
+     "Gramps is a free software project and community striving to produce
+a genealogy program that is both intuitive for hobbyists and feature-complete
+for professional genealogists.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index ec5ace3519..4cccd97643 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -869,3 +869,36 @@ dropping features at lower levels.")
 OpenStreetMap project.  They can be used to convert, filter and update
 OpenStreetMap data files.")
     (license license:agpl3)))
+
+(define-public osm-gps-map
+  (package
+    (name "osm-gps-map")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/nzjrs/osm-gps-map/releases/download/"
+             version "/osm-gps-map-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11imsf4cz1dpxdjh178k2s29axmq86rkfg1pqmn7incyxmjzhbwg"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gnome-common" ,gnome-common)
+       ("gtk-doc" ,gtk-doc)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("glib" ,glib)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+" ,gtk+)
+       ("libsoup" ,libsoup)))
+    (home-page "https://nzjrs.github.io/osm-gps-map/")
+    (synopsis "GTK+ widget for displaying OpenStreetMap tiles")
+    (description
+     "This package provides a GTK+ widget (and Python bindings) that when
+given GPS coordinates,draws a GPS track, and points of interest on a moving
+map display.  Downloads map data from a number of websites, including
+@url{https://www.openstreetmap.org}.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index f0454a6fe3..cd82b17d15 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -414,6 +414,31 @@ device drivers allows Mesa to be used in many different environments ranging
 from software emulation to complete hardware acceleration for modern GPUs.")
     (license license:x11)))
 
+(define-public mesa-opencl
+  (package
+    (inherit mesa)
+    (name "mesa-opencl")
+    (arguments
+     (substitute-keyword-arguments (package-arguments mesa)
+       ((#:configure-flags flags)
+        `(cons "-Dgallium-opencl=standalone" ,flags))))
+    (inputs
+     `(("libclc" ,libclc)
+       ,@(package-inputs mesa)))
+    (native-inputs
+     `(("clang" ,clang)
+       ,@(package-native-inputs mesa)))))
+
+(define-public mesa-opencl-icd
+  (package
+    (inherit mesa-opencl)
+    (name "mesa-opencl-icd")
+    (arguments
+     (substitute-keyword-arguments (package-arguments mesa)
+       ((#:configure-flags flags)
+        `(cons "-Dgallium-opencl=icd"
+               ,(delete "-Dgallium-opencl=standalone" flags)))))))
+
 (define-public mesa-headers
   (package
     (inherit mesa)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index ad6b9203b9..2820be0022 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7397,8 +7397,21 @@ kill/reinice processes.")
                     "/pyatspi-" version ".tar.xz"))
               (sha256
                (base32
-                "0xdnix7gxzgf75xy9ris4dd6b05mqwicw190b98xqmypydyf95n6"))))
+                "0xdnix7gxzgf75xy9ris4dd6b05mqwicw190b98xqmypydyf95n6"))
+              ;; Patch from upstream, fixed in newer versions.
+              (patches (search-patches "python-pyatspi-python-37.patch"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-atk-load
+           (lambda _
+             (substitute* "pyatspi/__init__.py"
+               (("from gi.repository import Atspi")
+                "gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+from gi.repository import Atspi"))
+             #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index abd1d6f419..f84f8d73a0 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -369,15 +369,13 @@ libskba (working with X.509 certificates and CMS data).")
 (define-public gpgme
   (package
     (name "gpgme")
-    (version "1.13.0")
+    (version "1.13.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://gnupg/gpgme/gpgme-" version
-                          ".tar.bz2"))
+      (uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2"))
       (sha256
-       (base32
-        "0c6676g0yhfsmy32i1dgwh5cx0ja8vhcqf4k08zad177m53kxcnl"))))
+       (base32 "0imyjfryvvjdbai454p70zcr95m94j9xnzywrlilqdw2fqi0pqy4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gnupg" ,gnupg)))
@@ -661,17 +659,17 @@ PGP keysigning parties.")
 (define-public signing-party
   (package
     (name "signing-party")
-    (version "2.7")
-    (home-page "https://salsa.debian.org/debian/signing-party")
+    (version "2.10")
+    (home-page "https://salsa.debian.org/signing-party-team/signing-party")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url home-page)
-                    (commit (string-append "release-" version))))
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gx9017wag4bgc0h7kca9n3jwwdm7z77yv3viayhg62flbwkvbgb"))))
+                "0lq8nmwjmysry0n4jg6vb7bh0lagbyb9pa11ii3s41p1mhzchf2r"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf-wrapper)
@@ -683,7 +681,7 @@ PGP keysigning parties.")
               ("perl-net-idn-encode" ,perl-net-idn-encode)
               ("libmd" ,libmd)))
     (arguments
-     `(#:tests? #f
+     `(#:tests? #f ; no test suite
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index c2356f2a44..a874878fea 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -426,7 +426,7 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "60.7.0-guix2")
+(define %icecat-version "60.7.2-guix1")
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -448,7 +448,7 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "08x0nijh0ja5jza95a8y030ibk756bn7zlw3a3c4750yilfhqpqa"))))
+              "1hkaq8mavmn2wphfbrlq3v56jvmvfi2nyvrkjgr28rc01jkqx4ca"))))
 
          (upstream-icecat-base-version "60.7.0") ; maybe older than base-version
          (upstream-icecat-gnu-version "1")
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 2a818e078c..13c2c2fc27 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -110,6 +110,7 @@ arrays of data.")
       (uri (string-append
             "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-"
             version ".tar.xz"))
+      (patches (search-patches "gstreamer-buffer-reset-offset.patch"))
       (sha256
        (base32
         "003wy1p1in85p9sr5jsyhbnwqaiwz069flwkhyx7qhxy31qjz3hf"))))
@@ -119,19 +120,7 @@ arrays of data.")
      `(#:configure-flags
        (list (string-append "--with-html-dir="
                             (assoc-ref %outputs "doc")
-                            "/share/gtk-doc/html"))
-
-       ,@(if (not (target-64bit?))
-           ;; Skip test that fails on 32-bit systems:
-           ;; <https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/316>.
-           `(#:phases (modify-phases %standard-phases
-                        (add-before 'check 'disable-gstbufferpool-test
-                          (lambda _
-                            (substitute* "tests/check/Makefile"
-                              (("^[[:blank:]]+gst/gstbufferpool.*$")
-                               ""))
-                              #t))))
-           '())))
+                            "/share/gtk-doc/html"))))
     (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc.
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 820fd4b41d..2776bd31a3 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -68,6 +68,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -1687,12 +1688,12 @@ input.")
      (origin
        (method url-fetch)
        (uri (string-append "https://alpha.gnu.org/gnu/ssw/"
-                           name "-" version ".tar.gz"))
+                           "spread-sheet-widget-" version ".tar.gz"))
        (sha256
         (base32 "1h93yyh2by6yrmkwqg38nd5knids05k5nqzcihc1hdwgzg3c4b8y"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
+     `(("glib" ,glib "bin")             ; for glib-genmarshal, etc.
        ("pkg-config" ,pkg-config)))
     ;; In 'Requires' of spread-sheet-widget.pc.
     (propagated-inputs
@@ -1706,6 +1707,38 @@ viewing and manipulating 2 dimensional tabular data in a manner similar to many
 popular spread sheet programs.")
     (license license:gpl3+)))
 
+(define-public volumeicon
+  (package
+    (name "volumeicon")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://nullwise.com/files/volumeicon/volumeicon-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "182xl2w8syv6ky2h2bc9imc6ap8pzh0p7rp63hh8nw0xm38c3f14"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-notify")))       ; optional libnotify support
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)))
+    (home-page "http://nullwise.com/volumeicon.html")
+    (synopsis "System tray volume applet")
+    (description
+     "Volume Icon is a volume indicator and control applet for @acronym{the
+Advanced Linux Sound Architecture, ALSA}.  It sits in the system tray,
+independent of your desktop environment, and supports global key bindings.")
+    (license (list license:expat        ; src/{bind.c,keybinder.h}
+                   license:isc          ; src/alsa_volume_mapping.c
+                   license:gpl3))))     ; the rest & combined work
+
 (define-public yad
   (package
     (name "yad")
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index c02606f919..a8352380f7 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2123,7 +2123,14 @@ chunks can be expressions as well as simple tokens.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0z5nf377wh8yj6n3sx2ddn4bdx1qrqnw899dlqjhg0q69qzil522"))))
+                  "0z5nf377wh8yj6n3sx2ddn4bdx1qrqnw899dlqjhg0q69qzil522"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    ;; Install .go files in the right place.
+                    (substitute* "Makefile.am"
+                      (("/ccache") "/site-ccache"))
+                    #t))))
       (build-system gnu-build-system)
       (arguments
        `(#:phases
@@ -2163,8 +2170,8 @@ serializing continuations or delimited continuations.")
       (license license:lgpl2.0+))))
 
 (define-public python-on-guile
-  (let ((commit "058c596cd3886447da31171e1026d4d19f5f5313")
-        (revision "2"))
+  (let ((commit "00a51a23247f1edc4ae8eda72b30df5cd7d0015f")
+        (revision "3"))
     (package
       (name "python-on-guile")
       (version (git-version "0.1.0" revision commit))
@@ -2176,16 +2183,27 @@ serializing continuations or delimited continuations.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0ppyh5kkhsph5kc091p2b5a3alnj3wnlx8jr5xpyhrsj0vx9cqph"))))
+                  "03rpnqr08rqr3gay128g564rwk8w4jbj28ss6b46z1d4vjs4nk68"))))
       (build-system gnu-build-system)
       (arguments
        `(#:parallel-build? #f ; not supported
-         #:make-flags
-         '("GUILE_AUTO_COMPILE=0")        ; to prevent guild errors
+         #:make-flags '("GUILE_AUTO_COMPILE=0")   ;to prevent guild warnings
+
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'chdir
-             (lambda _ (chdir "modules") #t)))))
+             (lambda _ (chdir "modules") #t))
+           (add-after 'install 'wrap
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; Wrap the 'python' executable so it can find its
+               ;; dependencies.
+               (let ((out  (assoc-ref outputs "out")))
+                 (wrap-program (string-append out "/bin/python")
+                   `("GUILE_LOAD_PATH" ":" prefix
+                     (,(getenv "GUILE_LOAD_PATH")))
+                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                     (,(getenv "GUILE_LOAD_COMPILED_PATH"))))
+                 #t))))))
       (inputs
        `(("guile" ,guile-2.2)))
       (propagated-inputs
@@ -2384,3 +2402,37 @@ and minor modes, etc., and can also be used as a pure Guile library.  It
 comes with a simple counter example using GLUT and browser examples in C
 using gtk+-3 and webkitgtk.")
       (license license:gpl3+))))
+
+(define-public guile-jpeg
+  (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
+        (revision "0"))
+    (package
+      (name "guile-jpeg")
+      (version (git-version "0.0" revision commit))
+      (home-page "https://gitlab.com/wingo/guile-jpeg")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference (url home-page)
+                                    (commit commit)))
+                (sha256
+                 (base32
+                  "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
+                (file-name (git-file-name name version))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    ;; Install .go files in the right place.
+                    (substitute* "Makefile.am"
+                      (("/ccache") "/site-ccache"))
+                    #t))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)
+         ("guile" ,guile-2.2)))
+      (synopsis "JPEG file parsing library for Guile")
+      (description
+       "Guile-JPEG is a Scheme library to parse JPEG image files and to
+perform geometrical transforms on JPEG images.")
+      (license license:gpl3+))))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index f9709e2b19..ef477fa6f1 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1040,27 +1040,19 @@ channels.")
 (define-public exiv2
   (package
     (name "exiv2")
-    (version "0.26")
-    (source (origin
-             (method url-fetch)
-             (uri (list (string-append "https://www.exiv2.org/builds/exiv2-"
-                                       version "-trunk.tar.gz")
-                        (string-append "https://www.exiv2.org/exiv2-"
-                                       version ".tar.gz")
-                        (string-append "https://fossies.org/linux/misc/exiv2-"
-                                       version ".tar.gz")))
-             (patches (search-patches "exiv2-CVE-2017-14860.patch"
-                                      "exiv2-CVE-2017-14859-14862-14864.patch"))
-             (sha256
-              (base32
-               "1yza317qxd8yshvqnay164imm0ks7cvij8y8j86p1gqi1153qpn7"))))
-    (build-system gnu-build-system)
-    (arguments '(#:tests? #f))                    ; no `check' target
+    (version "0.27.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.exiv2.org/builds/exiv2-" version
+                           "-Source.tar.gz"))
+       (sha256
+        (base32 "109hbfk63dh14fz20ivq20gcclb9jj9jmh48w4lcn6zxh1ljh9gi"))))
+    (build-system cmake-build-system)
+    (arguments '(#:tests? #f))          ; no test suite
     (propagated-inputs
      `(("expat" ,expat)
        ("zlib" ,zlib)))
-    (native-inputs
-     `(("intltool" ,intltool)))
     (home-page "https://www.exiv2.org/")
     (synopsis "Library and command-line utility to manage image metadata")
     (description
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 2dad131c00..403c446a82 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2096,6 +2096,50 @@ new Date();"))
      "This package provides the Java development kit OpenJDK.")
     (license license:gpl2+)))
 
+(define-public openjdk12
+  (package
+    (inherit openjdk11)
+    (name "openjdk")
+    (version "12.33")
+    (source (origin
+              (method url-fetch)
+              (uri "http://hg.openjdk.java.net/jdk/jdk/archive/0276cba45aac.tar.bz2")
+              (file-name (string-append name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (for-each delete-file (find-files "." ".*.bin$"))
+                  (for-each delete-file (find-files "." ".*.exe$"))
+                  (for-each delete-file (find-files "." ".*.jar$"))
+                  #t))))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("cups" ,cups)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("giflib" ,giflib)
+       ("lcms" ,lcms)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxt" ,libxt)
+       ("libxtst" ,libxtst)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("openjdk11" ,openjdk11)
+       ("openjdk11:jdk" ,openjdk11 "jdk")
+       ("pkg-config" ,pkg-config)
+       ("unzip" ,unzip)
+       ("which" ,which)
+       ("zip" ,zip)))
+    (home-page "https://openjdk.java.net/projects/jdk/12")))
+
 (define-public icedtea icedtea-8)
 
 
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 2fce704901..31b3670079 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017, 2018 Mark Meyer <mark@ofosos.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -319,29 +320,21 @@ plugins, as well as code to create plugins, or complete applications.")
 (define-public krita
   (package
     (name "krita")
-    (version "4.1.7.101")
+    (version "4.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "mirror://kde/stable/krita/"
                     (version-prefix version 3)
-                    "/" name "-" version ".tar.gz"))
+                    "/krita-" version ".tar.gz"))
               (sha256
                (base32
-                "0pvghb17vj3y19wa1n1zfg3yl5206ir3y45znrgdgdw076m5pjav"))))
+                "1pzk5bqp3kh22djhvsvmsc7ybirs4hsnkpg1y9677m2gxwbqnnps"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
        #:configure-flags
-       (list "-DBUILD_TESTING=OFF" "-DKDE4_BUILD_TESTS=OFF"
-             (string-append "-DWITH_FFTW3="
-                            (assoc-ref %build-inputs "fftw"))
-             (string-append "-DWITH_GSL="
-                            (assoc-ref %build-inputs "gsl"))
-             (string-append "-DWITH_LibRaw="
-                            (assoc-ref %build-inputs "libraw"))
-             (string-append "-DWITH_TIFF="
-                            (assoc-ref %build-inputs "libtiff"))
+       (list "-DBUILD_TESTING=OFF"
              (string-append "-DCMAKE_CXX_FLAGS=-I"
                             (assoc-ref %build-inputs "ilmbase")
                             "/include/OpenEXR"))
@@ -366,14 +359,15 @@ plugins, as well as code to create plugins, or complete applications.")
        ("extra-cmake-modules" ,extra-cmake-modules)
        ("gettext-minimal" ,gettext-minimal)
        ("kitemmodels" ,kitemmodels)
+       ("pkg-config" ,pkg-config)
        ("qwt" ,qwt)
        ("vc" ,vc)))
     (inputs
-     `(("qtbase" ,qtbase)
-       ("qtdeclarative" ,qtdeclarative)
-       ("qtmultimedia" ,qtmultimedia)
-       ("qtx11extras" ,qtx11extras)
-       ("qtsvg" ,qtsvg)
+     `(("boost" ,boost)
+       ("exiv2" ,exiv2)
+       ("fftw" ,fftw)
+       ("gsl" ,gsl)
+       ("ilmbase" ,ilmbase)
        ("karchive" ,karchive)
        ("kcompletion" ,kcompletion)
        ("kconfig" ,kconfig)
@@ -387,23 +381,24 @@ plugins, as well as code to create plugins, or complete applications.")
        ("kwidgetsaddons" ,kwidgetsaddons)
        ("kwindowsystem" ,kwindowsystem)
        ("kxmlgui" ,kxmlgui)
-       ("boost" ,boost)
-       ("exiv2" ,exiv2)
        ("lcms" ,lcms)
-       ("libpng" ,libpng)
        ("libjpeg-turbo" ,libjpeg-turbo)
-       ("zlib" ,zlib)
+       ("libpng" ,libpng)
+       ("libraw" ,libraw-0.18)
+       ("libtiff" ,libtiff)
        ("libx11" ,libx11)
        ("libxcb" ,libxcb)
        ("libxi" ,libxi)
-       ("fftw" ,fftw)
-       ("gsl" ,gsl)
-       ("poppler-qt5" ,poppler-qt5)
-       ("libraw" ,libraw-0.18)
-       ("libtiff" ,libtiff)
+       ("openexr" ,openexr)
        ("perl" ,perl)
-       ("ilmbase" ,ilmbase)
-       ("openexr" ,openexr)))
+       ("poppler-qt5" ,poppler-qt5)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)
+       ("quazip" ,quazip)
+       ("zlib" ,zlib)))
     (home-page "https://krita.org")
     (synopsis "Digital painting application")
     (description
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 4f659e13f8..72b62faf42 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -430,8 +430,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 It has been modified to remove all non-free binary blobs.")
     (license license:gpl2)))
 
-(define %linux-libre-version "5.1.11")
-(define %linux-libre-hash "15hmqycsggqd9bwrf229b7f0pfznzs03kpzcwrd9j867pvgwyl8c")
+(define %linux-libre-version "5.1.15")
+(define %linux-libre-hash "1f0hhyjsm4bl7k7w88aifvhmqmjkvkvlpd2b69y7s6csr22fk6v4")
 
 (define %linux-libre-5.1-patches
   (list %boot-logo-patch
@@ -448,8 +448,8 @@ It has been modified to remove all non-free binary blobs.")
   (make-linux-libre-headers %linux-libre-version
                             %linux-libre-hash))
 
-(define %linux-libre-4.19-version "4.19.52")
-(define %linux-libre-4.19-hash "1wsrgrskmvipm7j4kzir93p9dp3iy49522163ghfxx71b1b2v4dg")
+(define %linux-libre-4.19-version "4.19.56")
+(define %linux-libre-4.19-hash "1zqiic55viy065lhnkmhn33sz3bbbr2ykbm5f92yzd8lpc9zl7yx")
 
 (define %linux-libre-4.19-patches
   (list %boot-logo-patch
@@ -466,8 +466,8 @@ It has been modified to remove all non-free binary blobs.")
   (make-linux-libre-headers %linux-libre-4.19-version
                             %linux-libre-4.19-hash))
 
-(define %linux-libre-4.14-version "4.14.127")
-(define %linux-libre-4.14-hash "0dkzgxfzzc6n3k2x8nzzx98c6y3fhsr695rm46ahvg7fdg3vgcmi")
+(define %linux-libre-4.14-version "4.14.131")
+(define %linux-libre-4.14-hash "1qcf4cg83zpjirkj8l09y07x4zzskypngampvfw7zyazynwwgs1i")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -480,14 +480,14 @@ It has been modified to remove all non-free binary blobs.")
                             %linux-libre-4.14-hash))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.182"
-                    "1615v8ywwdm204bimq2cf6qv0zas14yagpr8lk9a5zqxas4p4rns"
+  (make-linux-libre "4.9.184"
+                    "0q3ggndwf0rwsb3xv33zl9awkd1803h2l9b4g6d6ps3f2sjxwxwa"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.182"
-                    "0ggs5pyjr7a9mldskfbsybzxlb3lmfbhxg5q2qpzxnh1c8wcn53h"
+  (make-linux-libre "4.4.184"
+                    "05v295wk9fid17n5plkx6p9nwz6dvpcn2r7khwsq30sy3pg0vxv5"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config
                     #:extra-options
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index dfc58d469f..58813c2d84 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -47,6 +47,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages ed)
   #:use-module (gnu packages flex)
@@ -65,6 +66,8 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sqlite)
@@ -5369,3 +5372,627 @@ command line, to data scanning and extracting scripts, to full application
 development in a wide-range of areas.")
     (home-page "https://nongnu.org/txr/")
     (license license:bsd-2)))
+
+(define-public sbcl-clunit
+  (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
+        (revision "1"))
+    (package
+      (name "sbcl-clunit")
+      (version (git-version "0.2.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tgutu/clunit.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
+      (build-system asdf-build-system/sbcl)
+      (synopsis "CLUnit is a Common Lisp unit testing framework")
+      (description
+       "CLUnit is a Common Lisp unit testing framework.  It is designed
+to be easy to use so that you can quickly start testing.  CLUnit
+provides a rich set of features aimed at improving your unit testing
+experience.")
+      (home-page "http://tgutu.github.io/clunit/")
+      ;; MIT License
+      (license license:expat))))
+
+(define-public cl-clunit
+  (sbcl-package->cl-source-package sbcl-clunit))
+
+(define-public ecl-clunit
+  (sbcl-package->ecl-package sbcl-clunit))
+
+(define-public sbcl-py4cl
+  (let ((commit "4c8a2b0814fd311f978964f825ce012290f60136")
+        (revision "1"))
+    (package
+      (name "sbcl-py4cl")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/bendudson/py4cl.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "15mk7qdqjkj56gdnbyrdyz6r7m1h26ldvn6ch96pmvg5vmr1m45r"))
+         (modules '((guix build utils)))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("sbcl-clunit" ,sbcl-clunit)))
+      (inputs
+       `(("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
+      (propagated-inputs
+       ;; This package doesn't do anything without python available
+       `(("python" ,python)
+         ;; For multi-dimensional array support
+         ("python-numpy" ,python-numpy)))
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'replace-*base-directory*-var
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; In the ASD, the author makes an attempt to
+               ;; programatically determine the location of the
+               ;; source-code so lisp can call into "py4cl.py". We can
+               ;; hard-code this since we know where this file will
+               ;; reside.
+               (substitute* "src/callpython.lisp"
+                 (("py4cl/config:\\*base-directory\\*")
+                  (string-append
+                   "\""
+                   (assoc-ref outputs "out")
+                   "/share/common-lisp/sbcl-source/py4cl/"
+                   "\""))))))))
+      (synopsis "Call python from Common Lisp")
+      (description
+       "Py4CL is a bridge between Common Lisp and Python, which enables Common
+Lisp to interact with Python code.  It uses streams to communicate with a
+separate python process, the approach taken by cl4py.  This is different to
+the CFFI approach used by burgled-batteries, but has the same goal.")
+      (home-page "https://github.com/bendudson/py4cl")
+      ;; MIT License
+      (license license:expat))))
+
+(define-public cl-py4cl
+  (sbcl-package->cl-source-package sbcl-py4cl))
+
+(define-public ecl-py4cl
+  (sbcl-package->ecl-package sbcl-py4cl))
+
+(define-public sbcl-parse-declarations
+  (package
+    (name "sbcl-parse-declarations")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://beta.quicklisp.org/archive/parse-declarations/"
+             "2010-10-06/parse-declarations-20101006-darcs.tgz"))
+       (sha256
+        (base32
+         "0r85b0jfacd28kr65kw9c13dx4i6id1dpmby68zjy63mqbnyawrd"))))
+    (build-system asdf-build-system/sbcl)
+    (arguments
+     `(#:asd-file "parse-declarations-1.0.asd"
+       #:asd-system-name "parse-declarations-1.0"))
+    (home-page "https://common-lisp.net/project/parse-declarations/")
+    (synopsis "Parse, filter, and build declarations")
+    (description
+     "Parse-Declarations is a Common Lisp library to help writing
+macros which establish bindings.  To be semantically correct, such
+macros must take user declarations into account, as these may affect
+the bindings they establish.  Yet the ANSI standard of Common Lisp does
+not provide any operators to work with declarations in a convenient,
+high-level way.  This library provides such operators.")
+    ;; MIT License
+    (license license:expat)))
+
+(define-public cl-parse-declarations
+  (sbcl-package->cl-source-package sbcl-parse-declarations))
+
+(define-public ecl-parse-declarations
+  (sbcl-package->ecl-package sbcl-parse-declarations))
+
+(define-public sbcl-cl-quickcheck
+  (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-quickcheck")
+      (version (git-version "0.0.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mcandre/cl-quickcheck.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
+      (build-system asdf-build-system/sbcl)
+      (synopsis
+       "Common Lisp port of the QuickCheck unit test framework")
+      (description
+       "Common Lisp port of the QuickCheck unit test framework")
+      (home-page "https://github.com/mcandre/cl-quickcheck")
+      ;; MIT
+      (license license:expat))))
+
+(define-public cl-cl-quickcheck
+  (sbcl-package->cl-source-package sbcl-cl-quickcheck))
+
+(define-public ecl-cl-quickcheck
+  (sbcl-package->ecl-package sbcl-cl-quickcheck))
+
+(define-public sbcl-burgled-batteries3
+  (let ((commit "9c0f6667e1a71ddf77e21793a0bea524710fef6e")
+        (revision "1"))
+    (package
+      (name "sbcl-burgled-batteries3")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/snmsts/burgled-batteries3.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0b726kz2xxcg5l930gz035rsdvhxrzmp05iwfwympnb4z4ammicb"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       '(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'set-*cpython-include-dir*-var
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "grovel-include-dir.lisp"
+                 (("\\(defparameter \\*cpython-include-dir\\* \\(detect-python\\)\\)")
+                  (string-append
+                   "(defparameter *cpython-include-dir* \""
+                   (assoc-ref inputs "python")
+                   "/include/python3.7m"
+                   "\")")))
+               (substitute* "ffi-interface.lisp"
+                 (("\\*cpython-lib\\*")
+                  (format #f "'(\"~a/lib/libpython3.so\")"
+                          (assoc-ref inputs "python"))))
+               #t)))))
+      (native-inputs
+       `(("python" ,python)
+         ("sbcl-cl-fad" ,sbcl-cl-fad)
+         ("sbcl-lift" ,sbcl-lift)
+         ("sbcl-cl-quickcheck" ,sbcl-cl-quickcheck)))
+      (inputs
+       `(("sbcl-cffi" ,sbcl-cffi)
+         ("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
+         ("sbcl-alexandria" , sbcl-alexandria)
+         ("sbcl-parse-declarations-1.0" ,sbcl-parse-declarations)
+         ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
+      (synopsis "Bridge between Python and Lisp (FFI bindings, etc.)")
+      (description
+       "This package provides a shim between Python3 (specifically, the
+CPython implementation of Python) and Common Lisp.")
+      (home-page "https://github.com/snmsts/burgled-batteries3")
+      ;; MIT
+      (license license:expat))))
+
+(define-public cl-burgled-batteries3
+  (sbcl-package->cl-source-package sbcl-burgled-batteries3))
+
+(define-public ecl-burgled-batteries3
+  (sbcl-package->ecl-package sbcl-burgled-batteries3))
+
+(define-public sbcl-metabang-bind
+  (let ((commit "c93b7f7e1c18c954c2283efd6a7fdab36746ab5e")
+        (revision "1"))
+    (package
+      (name "sbcl-metabang-bind")
+      (version (git-version "0.8.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gwkkwg/metabang-bind.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0hd0kr91795v77akpbcyqiss9p0p7ypa9dznrllincnmgvsxlmf0"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("sbcl-lift" ,sbcl-lift)))
+      (synopsis "Macro that generalizes @code{multiple-value-bind} etc.")
+      (description
+       "Bind extends the idea of of let and destructing to provide a uniform
+syntax for all your accessor needs.  It combines @code{let},
+@code{destructuring-bind}, @code{with-slots}, @code{with-accessors}, structure
+editing, property or association-lists, and @code{multiple-value-bind} and a
+whole lot more into a single form.")
+      (home-page "https://common-lisp.net/project/metabang-bind/")
+      ;; MIT License
+      (license license:expat))))
+
+(define-public cl-metabang-bind
+  (sbcl-package->cl-source-package sbcl-metabang-bind))
+
+(define-public ecl-metabang-bind
+  (sbcl-package->ecl-package sbcl-metabang-bind))
+
+(define-public sbcl-fare-utils
+  (let ((commit "66e9c6f1499140bc00ccc22febf2aa528cbb5724")
+        (revision "1"))
+    (package
+      (name "sbcl-fare-utils")
+      (version (git-version "1.0.0.5" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url
+            "https://gitlab.common-lisp.net/frideau/fare-utils.git")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "01wsr1aap3jdzhn4hrqjbhsjx6qci9dbd3gh4gayv1p49rbg8aqr"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       `(#:test-asd-file "test/fare-utils-test.asd"))
+      (native-inputs
+       `(("sbcl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
+      (synopsis "Collection of utilities and data structures")
+      (description
+       "fare-utils is a small collection of utilities.  It contains a lot of
+basic everyday functions and macros.")
+      (home-page "https://gitlab.common-lisp.net/frideau/fare-utils")
+      ;; MIT License
+      (license license:expat))))
+
+(define-public cl-fare-utils
+  (sbcl-package->cl-source-package sbcl-fare-utils))
+
+(define-public ecl-fare-utils
+  (sbcl-package->ecl-package sbcl-fare-utils))
+
+(define-public sbcl-idna
+  (package
+    (name "sbcl-idna")
+    (build-system asdf-build-system/sbcl)
+    (version "0.2.2")
+    (home-page "https://github.com/antifuchs/idna")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "00nbr3mffxhlq14gg9d16pa6691s4qh35inyw76v906s77khm5a2"))))
+    (inputs
+     `(("split-sequence" ,sbcl-split-sequence)))
+    (synopsis "IDNA string encoding and decoding routines for Common Lisp")
+    (description "This Common Lisp library provides string encoding and
+decoding routines for IDNA, the International Domain Names in Applications.")
+    (license license:expat)))
+
+(define-public cl-idna
+  (sbcl-package->cl-source-package sbcl-idna))
+
+(define-public ecl-idna
+  (sbcl-package->ecl-package sbcl-idna))
+
+(define-public sbcl-swap-bytes
+  (package
+    (name "sbcl-swap-bytes")
+    (build-system asdf-build-system/sbcl)
+    (version "1.1")
+    (home-page "https://github.com/sionescu/swap-bytes")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1qysbv0jngdfkv53y874qjhcxc4qi8ixaqq6j8bzxh5z0931wv55"))))
+    (inputs
+     `(("trivial-features" ,sbcl-trivial-features)))
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (arguments
+     ;; TODO: Tests fail, why?
+     `(#:tests? #f))
+    (synopsis "Efficient endianness conversion for Common Lisp")
+    (description "This Common Lisp library provides optimized byte-swapping
+primitives.  The library can change endianness of unsigned integers of length
+1/2/4/8.  Very useful in implementing various network protocols and file
+formats.")
+    (license license:expat)))
+
+(define-public cl-swap-bytes
+  (sbcl-package->cl-source-package sbcl-swap-bytes))
+
+(define-public ecl-swap-bytes
+  (sbcl-package->ecl-package sbcl-swap-bytes))
+
+(define-public sbcl-iolib.asdf
+  ;; Latest release is from June 2017.
+  (let ((commit "81e20614c0d27f9605bf9766214e236fd31b99b4")
+        (revision "1"))
+    (package
+      (name "sbcl-iolib.asdf")
+      (build-system asdf-build-system/sbcl)
+      (version "0.8.3")
+      (home-page "https://github.com/sionescu/iolib")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1j81r0wm7nfbwl991f26s4npcy7kybzybd3m47rbxy31h0cfcmdm"))))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)))
+      (arguments
+       '(#:asd-file "iolib.asdf.asd"))
+      (synopsis "ASDF component classes for IOLib, a Common Lisp I/O library")
+      (description "IOlib is to be a better and more modern I/O library than
+the standard Common Lisp library.  It contains a socket library, a DNS
+resolver, an I/O multiplexer(which supports @code{select(2)}, @code{epoll(4)}
+and @code{kqueue(2)}), a pathname library and file-system utilities.")
+      (license license:expat))))
+
+(define-public sbcl-iolib.conf
+  (package
+    (inherit sbcl-iolib.asdf)
+    (name "sbcl-iolib.conf")
+    (inputs
+     `(("iolib.asdf" ,sbcl-iolib.asdf)))
+    (arguments
+     '(#:asd-file "iolib.conf.asd"))
+    (synopsis "Compile-time configuration for IOLib, a Common Lisp I/O library")))
+
+(define-public sbcl-iolib.common-lisp
+  (package
+    (inherit sbcl-iolib.asdf)
+    (name "sbcl-iolib.common-lisp")
+    (inputs
+     `(("iolib.asdf" ,sbcl-iolib.asdf)
+       ("iolib.conf" ,sbcl-iolib.conf)))
+    (arguments
+     '(#:asd-file "iolib.common-lisp.asd"))
+    (synopsis "Slightly modified Common Lisp for IOLib, a Common Lisp I/O library")))
+
+(define-public sbcl-iolib.base
+  (package
+    (inherit sbcl-iolib.asdf)
+    (name "sbcl-iolib.base")
+    (inputs
+     `(("iolib.asdf" ,sbcl-iolib.asdf)
+       ("iolib.conf" ,sbcl-iolib.conf)
+       ("iolib.common-lisp" ,sbcl-iolib.common-lisp)
+       ("split-sequence" ,sbcl-split-sequence)))
+    (arguments
+     '(#:asd-file "iolib.base.asd"))
+    (synopsis "Base package for IOLib, a Common Lisp I/O library")))
+
+(define-public sbcl-iolib.grovel
+  (package
+    (inherit sbcl-iolib.asdf)
+    (name "sbcl-iolib.grovel")
+    (inputs
+     `(("iolib.asdf" ,sbcl-iolib.asdf)
+       ("iolib.conf" ,sbcl-iolib.conf)
+       ("iolib.base", sbcl-iolib.base)
+       ("cffi", sbcl-cffi)))
+    (arguments
+     '(#:asd-file "iolib.grovel.asd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-header
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; This header is required by sbcl-iolib.
+             (install-file "src/grovel/grovel-common.h"
+                           (string-append (assoc-ref outputs "out")
+                                          "/lib/sbcl"))
+             #t)))))
+    (synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library")))
+
+(define-public sbcl-iolib
+  (package
+    (inherit sbcl-iolib.asdf)
+    (name "sbcl-iolib")
+    (inputs
+     `(("iolib.asdf" ,sbcl-iolib.asdf)
+       ("iolib.conf" ,sbcl-iolib.conf)
+       ("iolib.grovel" ,sbcl-iolib.grovel)
+       ("iolib.base", sbcl-iolib.base)
+       ("bordeaux-threads", sbcl-bordeaux-threads)
+       ("idna", sbcl-idna)
+       ("swap-bytes", sbcl-swap-bytes)
+       ("libfixposix", libfixposix)))
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (arguments
+     '(#:asd-file "iolib.asd"
+       #:asd-system-name "iolib"
+       #:test-asd-file "iolib.tests.asd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/syscalls/ffi-functions-unix.lisp"
+               (("\\(:default \"libfixposix\"\\)")
+                (string-append
+                 "(:default \""
+                 (assoc-ref inputs "libfixposix") "/lib/libfixposix\")")))
+             ;; Socket tests need Internet access, disable them.
+             (substitute* "iolib.tests.asd"
+               (("\\(:file \"sockets\" :depends-on \\(\"pkgdcl\" \"defsuites\"\\)\\)")
+                "")))))))
+    (synopsis "Common Lisp I/O library")))
+
+(define sbcl-iolib+multiplex
+  (package
+    (inherit sbcl-iolib)
+    (name "sbcl-iolib+multiplex")
+    (arguments
+     (substitute-keyword-arguments (package-arguments sbcl-iolib)
+       ((#:asd-system-name _) "iolib/multiplex")))))
+
+(define sbcl-iolib+syscalls
+  (package
+    (inherit sbcl-iolib)
+    (name "sbcl-iolib+syscalls")
+    (arguments
+     (substitute-keyword-arguments (package-arguments sbcl-iolib)
+       ((#:asd-system-name _) "iolib/syscalls")))))
+
+(define sbcl-iolib+streams
+  (package
+    (inherit sbcl-iolib)
+    (name "sbcl-iolib+streams")
+    (arguments
+     (substitute-keyword-arguments (package-arguments sbcl-iolib)
+       ((#:asd-system-name _) "iolib/streams")))))
+
+(define sbcl-iolib+sockets
+  (package
+    (inherit sbcl-iolib)
+    (name "sbcl-iolib+sockets")
+    (arguments
+     (substitute-keyword-arguments (package-arguments sbcl-iolib)
+       ((#:asd-system-name _) "iolib/sockets")))))
+
+(define-public sbcl-ieee-floats
+  (let ((commit "566b51a005e81ff618554b9b2f0b795d3b29398d")
+        (revision "1"))
+    (package
+      (name "sbcl-ieee-floats")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "20170924" revision commit))
+      (home-page "https://github.com/marijnh/ieee-floats/")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1xyj49j9x3lc84cv3dhbf9ja34ywjk1c46dklx425fxw9mkwm83m"))))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (synopsis "IEEE 754 binary representation for floats in Common Lisp")
+      (description "This is a Common Lisp library that allows to convert
+floating point values to IEEE 754 binary representation.")
+      (license license:bsd-3))))
+
+(define sbcl-closure-common
+  (let ((commit "e3c5f5f454b72b01b89115e581c3c52a7e201e5c")
+        (revision "1"))
+    (package
+      (name "sbcl-closure-common")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "20101006" revision commit))
+      (home-page "https://github.com/sharplispers/closure-common")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0k5r2qxn122pxi301ijir3nayi9sg4d7yiy276l36qmzwhp4mg5n"))))
+      (inputs
+       `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)
+         ("babel" ,sbcl-babel)))
+      (synopsis "Support Common Lisp library for CXML")
+      (description "Closure-common is an internal helper library.  The name
+Closure is a reference to the web browser it was originally written for.")
+      ;; TODO: License?
+      (license #f))))
+
+(define-public sbcl-cl-reexport
+  (let ((commit "312f3661bbe187b5f28536cd7ec2956e91366c3b")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-reexport")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "0.1" revision commit))
+      (home-page "https://github.com/takagi/cl-reexport")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1cwpn1m3wrl0fl9plznn7p464db646gnfc8zkyk97dyxski2aq0x"))))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)))
+      (arguments
+       ;; TODO: Tests fail because cl-test-more is missing, but I can't find it online.
+       `(#:tests? #f))
+      (synopsis "HTTP cookie manager for Common Lisp")
+      (description "cl-cookie is a Common Lisp library featuring parsing of
+cookie headers, cookie creation, cookie jar creation and more.")
+      (license license:llgpl))))
+
+(define-public sbcl-cl-cookie
+  (let ((commit "cea55aed8b9ad25fafd13defbcb9fe8f41b29546")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-cookie")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "0.9.10" revision commit))
+      (home-page "https://github.com/fukamachi/cl-cookie")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "090g7z75h98zvc1ldx0vh4jn4086dhjm2w30jcwkq553qmyxwl8h"))))
+      (inputs
+       `(("proc-parse" ,sbcl-proc-parse)
+         ("alexandria" ,sbcl-alexandria)
+         ("quri" ,sbcl-quri)
+         ("cl-ppcre" ,sbcl-cl-ppcre)
+         ("local-time" ,sbcl-local-time)))
+      (native-inputs
+       `(("prove-asdf" ,sbcl-prove-asdf)
+         ("prove" ,sbcl-prove)))
+      (arguments
+       ;; TODO: Tests fail because cl-cookie depends on cl-cookie-test.
+       `(#:tests? #f))
+      (synopsis "HTTP cookie manager for Common Lisp")
+      (description "cl-cookie is a Common Lisp library featuring parsing of
+cookie headers, cookie creation, cookie jar creation and more.")
+      (license license:bsd-2))))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 8cb05a6cad..0315740bcd 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -31,6 +31,7 @@
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
@@ -47,7 +48,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml))
 
-(define-public llvm
+(define-public llvm-8
   (package
     (name "llvm")
     (version "8.0.0")
@@ -98,6 +99,8 @@ languages is in development.  The compiler infrastructure includes mirror sets
 of programming tools as well as libraries with equivalent functionality.")
     (license license:ncsa)))
 
+(define-public llvm llvm-8)
+
 (define* (clang-runtime-from-llvm llvm hash
                                   #:optional (patches '()))
   (package
@@ -273,7 +276,7 @@ code analysis tools.")
                            version "/libcxx-" version ".src.tar.xz"))
        (sha256
         (base32
-         "1wdrxg365ig0kngx52pd0n820sncp24blb0zpalc579iidhh4002"))))
+         "1qlx3wlxrnc5cwc1fcfc2vhfsl7j4294hi8y5kxj8hy8wxsjd462"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("clang" ,clang)
@@ -285,6 +288,44 @@ code analysis tools.")
 use with Clang, targeting C++11, C++14 and above.")
     (license license:expat)))
 
+(define-public libclc
+  (package
+    (name "libclc")
+    (version (package-version llvm))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/llvm/llvm-project.git")
+             (commit (string-append "llvmorg-" version))))
+       (sha256
+        (base32
+         "052h16wjcnqginzp7ki4il2xmm25v9nyk0wcz7cg03gbryhl7aqa"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DLLVM_CLANG="
+                            (assoc-ref %build-inputs "clang")
+                            "/bin/clang")
+             (string-append "-DPYTHON="
+                            (assoc-ref %build-inputs "python")
+                            "/bin/python3"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "libclc") #t)))))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("python" ,python)))
+    (home-page "https://libclc.llvm.org")
+    (synopsis "Libraries for the OpenCL programming language")
+    (description
+     "This package provides an implementation of the OpenCL library
+requirements according to version 1.1 of the OpenCL specification.")
+    ;; Apache license 2.0 with LLVM exception
+    (license license:asl2.0)))
+
 (define-public libomp
   (package
     (name "libomp")
@@ -332,6 +373,28 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    "0svk1f70hvpwrjp6x5i9kqwrqwxnmcrw5s7f4cxyd100mdd12k08"
                    #:patches '("clang-7.0-libc-search-path.patch")))
 
+(define-public llvm-7
+  (package
+    (inherit llvm)
+    (version "7.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://llvm.org/releases/"
+                                  version "/llvm-" version ".src.tar.xz"))
+              (sha256
+               (base32
+                "16s196wqzdw4pmri15hadzqgdi926zln3an2viwyq0kini6zr3d3"))))))
+
+(define-public clang-runtime-7
+  (clang-runtime-from-llvm
+   llvm-7
+   "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq"))
+
+(define-public clang-7
+  (clang-from-llvm llvm-7 clang-runtime
+                   "067lwggnbg0w1dfrps790r5l6k8n5zwhlsw7zb6zvmfpwpfn4nx4"
+                   #:patches '("clang-7.0-libc-search-path.patch")))
+
 (define-public llvm-6
   (package
     (inherit llvm)
@@ -503,9 +566,9 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
     (inputs
      `(("llvm"
         ,(package
-           (inherit llvm)
+           (inherit llvm-7)
            (source (origin
-                     (inherit (package-source llvm))
+                     (inherit (package-source llvm-7))
                      (patches
                       (list
                        (origin
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index bf35d943ce..1694b7c6b1 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -351,14 +351,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.12.0")
+    (version "1.12.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "13zr2fpql33sdbsjsiaa952js5bvphc1x4lqsj36qyzdhj3l84na"))
+               "0311sip2q90aqaxn7h3cck1zl98b4vifqi8bp5fsizy4dr06bi81"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -1433,14 +1433,14 @@ hashing schemes plugin for @code{Dovecot}.")
 (define-public isync
   (package
     (name "isync")
-    (version "1.3.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/isync/isync/"
                            version "/isync-" version ".tar.gz"))
        (sha256 (base32
-                "173wd7x8y5sp94slzwlnb7zhgs32r57zl9xspl2rf4g3fqwmhpwd"))))
+                "1sphd30jplii58y2zmw365bckm6pszmapcy905zhjll1sm1ldjv8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("perl" ,perl)))
diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index 028745f681..cd12f5a7fd 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -42,6 +42,12 @@
      '(#:phases
        (modify-phases %standard-phases
          (delete 'check)
+         ;; see https://github.com/ihabunek/toot/issues/91
+         (add-after 'unpack 'dont-install-Makefile
+           (lambda _
+             (substitute* "setup.py"
+               (("data_files.*" all) ""))
+             #t))
          (add-after 'install 'check
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (add-installed-pythonpath inputs outputs)
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index c2a6aaf011..9e9fda0929 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;;
@@ -195,20 +195,19 @@ from Mint-X-F and Faenza-Fresh icon packs.")
 (define-public mate-themes
   (package
     (name "mate-themes")
-    (version "3.22.19")
+    (version "3.22.20")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://mate/themes/" (version-major+minor version)
                            "/mate-themes-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1ycb8b8r0s8d1h1477135mynr53s5781gdb2ap8xlvj2g58492wq"))))
+       (sha256
+        (base32 "0c3dhf8p9nc2maky4g9xr04iil9wwbdkmhpzynlc6lfg4ksqq2bx"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
-       ("gdk-pixbuf" ,gdk-pixbuf) ; gdk-pixbuf+svg isn't needed
+       ("gdk-pixbuf" ,gdk-pixbuf)       ; gdk-pixbuf+svg isn't needed
        ("gtk" ,gtk+-2)))
     (home-page "https://mate-desktop.org/")
     (synopsis
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c2c7a57d75..5b31596041 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -613,14 +613,14 @@ singular value problems.")
 (define-public gnuplot
   (package
     (name "gnuplot")
-    (version "5.2.6")
+    (version "5.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
                                   version "/gnuplot-"
                                   version ".tar.gz"))
        (sha256
-        (base32 "1vllgap08nhvdmc03idmkdnk9cfl2bp81hps50q1pqrr640qzp9m"))))
+        (base32 "1vglp4la40f5dpj0zdj63zprrkyjgzy068p35bz5dqxjyczm1zlp"))))
     (build-system gnu-build-system)
     (inputs `(("readline" ,readline)
               ("cairo" ,cairo)
@@ -3369,13 +3369,15 @@ packages.")
              ;; Use `sh', not `/bin/sh'.
              (substitute* (find-files "." "Makefile|configure|SpewMakeInc\\.c")
                (("/bin/sh")
-                "sh"))))
+                "sh"))
+             #t))
          ;; Fix /bin/sh in generated make files.
          (add-after 'configure 'fix-/bin/sh-in-generated-files
            (lambda _
              (substitute* (find-files "." "^[Mm]ake\\.inc.*")
                (("/bin/sh")
-                "sh"))))
+                "sh"))
+             #t))
          ;; ATLAS configure program does not accepts the default flags
          ;; passed by the 'gnu-build-system'.
          (replace 'configure
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index 3d6185ca78..76bf77d1c8 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -37,14 +37,14 @@
 (define-public mc
   (package
     (name "mc")
-    (version "4.8.22")
+    (version "4.8.23")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "http://ftp.midnight-commander.org/mc-"
                           version ".tar.xz"))
       (sha256
-       (base32 "060kh3dmk8fmmsibn1l815qjazzfxzbhgqggrhncz604pbbnhy7f"))))
+       (base32 "077z7phzq3m1sxyz7li77lyzv4rjmmh3wp2vy86pnc4387kpqzyx"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("perl" ,perl)))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 7d036ad473..503781a9eb 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -42,6 +42,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
@@ -490,56 +491,43 @@ compromised.")
 (define-public znc
   (package
     (name "znc")
-    (version "1.7.3")
+    (version "1.7.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://znc.in/releases/archive/znc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0g8i5hsl4kinpz1wp0a2zniidv3w2sd6awq8676fds516wcc6k0y"))))
-    ;; TODO: autotools support has been deprecated, and new features like i18n
-    ;; are only supported when building with cmake.
-    (build-system gnu-build-system)
+                "0wcvqkpin8w4i72alnn0nxnrc9ih543qs34hqpk9xmz6m0hjk8xi"))))
+    (build-system cmake-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags
+       (list "-DWANT_CYRUS=ON"
+             "-DWANT_I18N=ON"
+             "-DWANT_PERL=ON"
+             "-DWANT_PYTHON=ON")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'unpack-googletest
+           ;; Copy the googletest sources to where the CMake build expects them.
            (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir-p "googletest")
-             (copy-recursively (assoc-ref inputs "googletest-source")
-                               "googletest")
-             #t)))
-       #:configure-flags '("--enable-python"
-                           "--enable-perl"
-                           "--enable-cyrus"
-                           "--with-gmock=googletest/googlemock"
-                           "--with-gtest=googletest/googletest")
-       #:test-target "test"))
+             (let ((source (assoc-ref inputs "googletest-source"))
+                   (target "third_party/googletest"))
+               (mkdir-p target)
+               (copy-recursively source target)
+               #t))))))
     (native-inputs
-     `(("googletest-source"
-        ;; ZNC 1.7 needs a newer, unreleased googletest (a release is planned
-        ;; <https://github.com/google/googletest/issues/1583>, so don't update
-        ;; the public GOOGLETEST to an unstable version).  The commit is taken
-        ;; from ‘third_party/googletest’ in the ZNC git repository.
-        ,(let ((commit "9737e63c69e94ac5777caa0bc77c77d5206467f3"))
-           (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/google/googletest")
-                   (commit commit)))
-             (file-name (git-file-name "googletest-for-znc" commit))
-             (sha256
-              (base32
-               "0ya36n8d62zbxk6p22yffgx43mqhx2fz41gqqwbpdshjryf3wvxj")))))
-       ("pkg-config" ,pkg-config)
-       ("perl" ,perl)
-       ("python" ,python)))
+     `(("boost" ,boost)
+       ("gettext" ,gettext-minimal)
+       ("googletest-source" ,(package-source googletest))
+       ("pkg-config" ,pkg-config)))
     (inputs
-     `(("openssl" ,openssl)
-       ("zlib" ,zlib)
+     `(("cyrus-sasl" ,cyrus-sasl)
        ("icu4c" ,icu4c)
-       ("cyrus-sasl" ,cyrus-sasl)))
+       ("openssl" ,openssl)
+       ("perl" ,perl)
+       ("python" ,python)
+       ("zlib" ,zlib)))
     (home-page "https://znc.in")
     (synopsis "IRC network bouncer")
     (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}.  It can
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 461296f66b..c9cd7b1382 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -339,14 +339,14 @@ only provides @code{MPI_THREAD_FUNNELED}.")))
 (define-public python-mpi4py
   (package
     (name "python-mpi4py")
-    (version "3.0.1")
+    (version "3.0.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "mpi4py" version))
         (sha256
           (base32
-            "0ld8rjmsjr0dklvj2g1gr3ax32sdq0xjxyh0cspknc1i36waajb5"))))
+            "1q28xl36difma1wq0acq111cqxjya32kn3lxp6fbidz3wg8jkmpq"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 1c0a4f3982..0a0677161a 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -20,6 +20,8 @@
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
+;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
+;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -128,6 +130,7 @@
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tex)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
@@ -314,7 +317,7 @@ playing your music.")
 (define-public cmus
   (package
     (name "cmus")
-    (version "2.7.1")
+    (version "2.8.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -323,7 +326,7 @@ playing your music.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0xd96py21bl869qlv1353zw7xsgq6v5s8szr0ldr63zj5fgc2ps5"))))
+                "1ydnvq13ay8b8mfmmgwi5qsgyf220yi1d01acbnxqn775dghmwar"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; cmus does not include tests
@@ -1362,7 +1365,7 @@ users to select LV2 plugins and run them with jalv.")
 (define-public synthv1
   (package
     (name "synthv1")
-    (version "0.9.7")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -1370,12 +1373,10 @@ users to select LV2 plugins and run them with jalv.")
                               "/synthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0i70wm430fvksi3g985farrkhgb7mwhi7j06dl66cdj1n12jzzk7"))))
+                "15kabmxp38wqvavs5hr1dqasjjf1j977kzqggxfmzyi3y5fan3hj"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; there are no tests
-       #:configure-flags
-       '("CXXFLAGS=-std=gnu++11")))
+     `(#:tests? #f))                    ; there are no tests
     (inputs
      `(("jack" ,jack-1)
        ("lv2" ,lv2)
@@ -1396,7 +1397,7 @@ oscillators and stereo effects.")
 (define-public drumkv1
   (package
     (name "drumkv1")
-    (version "0.9.7")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -1404,12 +1405,10 @@ oscillators and stereo effects.")
                               "/drumkv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1361dqdasrc98q9hcjdwsjx6agfimwnay430887fryi3pslkyd81"))))
+                "010p8nwnmqgj5mw324psig3hxi1g2gylxrigd6sj6sgcpy3kdm23"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; there are no tests
-       #:configure-flags
-       '("CXXFLAGS=-std=gnu++11")))
+     `(#:tests? #f))                    ; there are no tests
     (inputs
      `(("jack" ,jack-1)
        ("lv2" ,lv2)
@@ -1431,7 +1430,7 @@ effects.")
 (define-public samplv1
   (package
     (name "samplv1")
-    (version "0.9.7")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -1439,12 +1438,10 @@ effects.")
                               "/samplv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1vgmcjccpgqqlmmwfg6m91nph81p2xaxydjx82n4l1yrr9lidn9h"))))
+                "138kd9szgn3b97s7crhsyj8pgwb0bn4l9knd4zliqjgj2f1bs9x0"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; there are no tests
-       #:configure-flags
-       '("CXXFLAGS=-std=gnu++11")))
+     `(#:tests? #f))                    ; there are no tests
     (inputs
      `(("jack" ,jack-1)
        ("lv2" ,lv2)
@@ -1466,7 +1463,7 @@ effects.")
 (define-public padthv1
   (package
     (name "padthv1")
-    (version "0.9.7")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri
@@ -1474,12 +1471,10 @@ effects.")
                               "/padthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1jd4bf6a1ipvg4yhb3xf3maqg68bx97ic9l57djmkirlrkh2a3wp"))))
+                "1k4p2ir12qjcs62knvw2s6qyvb46203yx22fnwp341cjk171cxji"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; there are no tests
-       #:configure-flags
-       '("CXXFLAGS=-std=gnu++11")))
+     `(#:tests? #f))                    ; there are no tests
     (inputs
      `(("jack" ,jack-1)
        ("lv2" ,lv2)
@@ -2823,6 +2818,33 @@ metadata as it goes using the MusicBrainz database.  Then it provides a variety
 of tools for manipulating and accessing your music.")
     (license license:expat)))
 
+(define-public beets-bandcamp
+  (package
+    (name "beets-bandcamp")
+    (version "0.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "beets-bandcamp" version))
+              (sha256
+               (base32
+                "04awg0zdhhg5h510fc1p3qkvr2l1qm6nf85hlr9z8im8a7xlka0i"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f))          ; there are no tests
+    (propagated-inputs
+     `(("beets" ,beets)
+       ("python-isodate" ,python-isodate)))
+    (inputs
+     `(("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/unrblt/beets-bandcamp")
+    (synopsis "Bandcamp plugin for beets")
+    (description
+     "This plugin for beets automatically obtains tag data from @uref{Bandcamp,
+https://bandcamp.com/}.  It's also capable of getting song lyrics and album art
+using the beets FetchArt plugin.")
+    (license license:gpl2)))
+
 (define-public milkytracker
   (package
     (name "milkytracker")
@@ -2871,7 +2893,7 @@ for improved Amiga ProTracker 2/3 compatibility.")
 (define-public schismtracker
   (package
     (name "schismtracker")
-    (version "20181223")
+    (version "20190614")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2880,7 +2902,7 @@ for improved Amiga ProTracker 2/3 compatibility.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "18k5j10zq39y2q294avdmar87x93k57wqmq8bpz562hdqki2mz1l"))
+                "0cg0q5bkn8a06v03vmj69xyhi4xxpl729k4008q4hiakh9gy2x49"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove use of __DATE__ and __TIME__ for reproducibility.
@@ -2900,7 +2922,7 @@ for improved Amiga ProTracker 2/3 compatibility.")
        ("automake" ,automake)
        ("python" ,python)))
     (inputs
-     `(("alsa-lib" ,alsa-lib) ; for asound dependency
+     `(("alsa-lib" ,alsa-lib)           ; for asound dependency
        ("libx11" ,libx11)
        ("libxext" ,libxext)
        ("sdl" ,sdl)))
@@ -3725,7 +3747,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
 (define-public musescore
   (package
     (name "musescore")
-    (version "3.1")
+    (version "3.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3734,7 +3756,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "07xkn8gnnqzhj9cn1li5qpm2rfm86bmxbbfd76i1jx4v999icn0j"))
+                "0719p4hjlq7skga8q4hvnd5w33vhrd1a1aygvqm9pn4na02zazy6"))
               (modules '((guix build utils)))
               (snippet
                ;; Un-bundle OpenSSL and remove unused libraries.
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index e1e7d6a5a0..ca360b3884 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
-;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
 ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
@@ -466,14 +466,14 @@ sub-directory.")
 (define-public stow
   (package
     (name "stow")
-    (version "2.2.2")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/stow/stow-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1pvky9fayms4r6fhns8jd0vavszd7d979w62vfd5n88v614pdxz2"))))
+                "0h8qr2rxsrkg6d8jxjk68r23jgn1dxdxyp4bnzzinpa8sjhfl905"))))
     (build-system gnu-build-system)
     (inputs
      `(("perl" ,perl)))
@@ -482,6 +482,10 @@ sub-directory.")
        ("perl-test-output" ,perl-test-output)
        ("perl-capture-tiny" ,perl-capture-tiny)
        ("perl-io-stringy" ,perl-io-stringy)))
+    (propagated-inputs
+     `(("perl-clone-choose" ,perl-clone-choose)
+       ("perl-clone" ,perl-clone)
+       ("perl-hash-merge" ,perl-hash-merge)))
     (home-page "https://www.gnu.org/software/stow/")
     (synopsis "Managing installed software packages")
     (description
@@ -490,7 +494,7 @@ of data and makes them appear to be merged into the same directory.  It is
 typically used for managing software packages installed from source, by
 letting you install them apart in distinct directories and then create
 symlinks to the files in a common directory such as /usr/local.")
-    (license license:gpl2+)))
+    (license license:gpl3+)))
 
 (define-public rpm
   (package
diff --git a/gnu/packages/patches/emacs-zones-called-interactively.patch b/gnu/packages/patches/emacs-zones-called-interactively.patch
index b60f390a7e..eefcfdd12e 100644
--- a/gnu/packages/patches/emacs-zones-called-interactively.patch
+++ b/gnu/packages/patches/emacs-zones-called-interactively.patch
@@ -1,4 +1,4 @@
-From fb56fbb706804215ef9af0cc575db97c373046c6 Mon Sep 17 00:00:00 2001
+From 81603e53ebaae0f0b23c4c52c7dab83e808964ec Mon Sep 17 00:00:00 2001
 From: Brian Leung <bkleung89@gmail.com>
 Date: Sun, 17 Mar 2019 01:32:04 +0100
 Subject: [PATCH] This patch silences the byte-compiler.
@@ -8,36 +8,36 @@ Subject: [PATCH] This patch silences the byte-compiler.
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/zones.el b/zones.el
-index 1bf94f0..94fa9a6 100644
+index ca88d48..594ea36 100644
 --- a/zones.el
 +++ b/zones.el
-@@ -1031,7 +1031,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+@@ -1075,7 +1075,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
  
  This is a destructive operation. The list structure of the variable
  value can be modified."
 -  (zz-narrow-advice (interactive-p)))
-+  (zz-narrow-advice (called-interactively-p)))
++  (zz-narrow-advice (called-interactively-p 'interactive)))
  
  (defadvice narrow-to-defun (after zz-add-zone--defun activate)
    "Push the defun limits to the current `zz-izones-var'.
-@@ -1039,7 +1039,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+@@ -1083,7 +1083,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
  
  This is a destructive operation. The list structure of the variable
  value can be modified."
 -  (zz-narrow-advice (interactive-p)))
-+  (zz-narrow-advice (called-interactively-p)))
++  (zz-narrow-advice (called-interactively-p 'interactive)))
  
  ;; Call `zz-add-zone' if interactive or `zz-add-zone-anyway-p'.
  ;;
-@@ -1049,7 +1049,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+@@ -1093,7 +1093,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
  
  This is a destructive operation. The list structure of the variable
  value can be modified."
 -  (zz-narrow-advice (interactive-p)))
-+  (zz-narrow-advice (called-interactively-p)))
++  (zz-narrow-advice (called-interactively-p 'interactive)))
  
  ;;(@* "General Commands")
  
 -- 
-2.21.0
+2.22.0
 
diff --git a/gnu/packages/patches/gstreamer-buffer-reset-offset.patch b/gnu/packages/patches/gstreamer-buffer-reset-offset.patch
new file mode 100644
index 0000000000..024892a60f
--- /dev/null
+++ b/gnu/packages/patches/gstreamer-buffer-reset-offset.patch
@@ -0,0 +1,59 @@
+Fix a buffer offset problem in GStreamer 1.16.  Initially reported by Mark H.
+Weaver in <https://lists.gnu.org/archive/html/guix-devel/2019-06/msg00140.html>.
+
+See also <https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/316>.
+
+From 1734c9fc1a4f99b165383ae1eb02f04e0844a00c Mon Sep 17 00:00:00 2001
+From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+Date: Sat, 29 Jun 2019 09:22:05 -0400
+Subject: [PATCH] bufferpool: Fix the buffer size reset code
+
+The offset in gst_buffer_resize() is additive. So to move back the
+offset to zero, we need to pass the opposite of the current offset. This
+was raised through the related unit test failingon 32bit as on 64bit
+the alignment padding was enough to hide the issue. The test was
+modified to also fail on 64bit. This patch will remove spurious
+assertions like:
+
+  assertion 'bufmax >= bufoffs + offset + size' failed
+
+Fixes #316
+---
+ gst/gstbufferpool.c             | 7 +++++--
+ tests/check/gst/gstbufferpool.c | 2 +-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c
+index e5c7a5872..619860e63 100644
+--- a/gst/gstbufferpool.c
++++ b/gst/gstbufferpool.c
+@@ -1222,8 +1222,11 @@ default_reset_buffer (GstBufferPool * pool, GstBuffer * buffer)
+   GST_BUFFER_OFFSET_END (buffer) = GST_BUFFER_OFFSET_NONE;
+ 
+   /* if the memory is intact reset the size to the full size */
+-  if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY))
+-    gst_buffer_resize (buffer, 0, pool->priv->size);
++  if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY)) {
++    gsize offset;
++    gst_buffer_get_sizes (buffer, &offset, NULL);
++    gst_buffer_resize (buffer, -offset, pool->priv->size);
++  }
+ 
+   /* remove all metadata without the POOLED flag */
+   gst_buffer_foreach_meta (buffer, remove_meta_unpooled, pool);
+diff --git a/tests/check/gst/gstbufferpool.c b/tests/check/gst/gstbufferpool.c
+index f0c3c8d8e..dd9b2dc03 100644
+--- a/tests/check/gst/gstbufferpool.c
++++ b/tests/check/gst/gstbufferpool.c
+@@ -190,7 +190,7 @@ GST_START_TEST (test_buffer_modify_discard)
+   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
+   buffer_track_destroy (buf, &dcount);
+   /* do resize, as we didn't modify the memory, pool should reuse this buffer */
+-  gst_buffer_resize (buf, 5, 2);
++  gst_buffer_resize (buf, 8, 2);
+   gst_buffer_unref (buf);
+ 
+   /* buffer should've gone back into pool */
+-- 
+2.22.0
+
diff --git a/gnu/packages/patches/khmer-use-libraries.patch b/gnu/packages/patches/khmer-use-libraries.patch
deleted file mode 100644
index 47d163a99a..0000000000
--- a/gnu/packages/patches/khmer-use-libraries.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Change setup.cfg so that the bundled zlib and bzip2 are not used.  This cannot
-currently be achieved using "--library z,bz2" as instructed in the setup.py.
-
-diff --git a/setup.cfg b/setup.cfg
-index c054092..080992e 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -1,7 +1,7 @@
- [build_ext]
- define = SEQAN_HAS_BZIP2,SEQAN_HAS_ZLIB
- undef = NO_UNIQUE_RC
--# libraries = z,bz2
-+libraries = z,bz2
- ## if using system libraries
- include-dirs = lib:third-party/zlib:third-party/bzip2:third-party/seqan/core/include:third-party/smhasher
- # include-dirs = lib
diff --git a/gnu/packages/patches/lcalc-default-parameters-1.patch b/gnu/packages/patches/lcalc-default-parameters-1.patch
new file mode 100644
index 0000000000..19b0776320
--- /dev/null
+++ b/gnu/packages/patches/lcalc-default-parameters-1.patch
@@ -0,0 +1,26 @@
+Patch taken from the Sage packaging system.
+
+diff -Naur lcalc-1.23-vanilla/include/Ldirichlet_series.h lcalc-1.23-fixed-gcc.4.9/include/Ldirichlet_series.h
+--- lcalc-1.23-vanilla/include/Ldirichlet_series.h	2012-08-08 23:21:55.000000000 +0200
++++ lcalc-1.23-fixed-gcc.4.9/include/Ldirichlet_series.h	2014-04-21 14:37:59.027464849 +0200
+@@ -43,7 +43,7 @@
+  //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ template <class ttype>
+ Complex L_function <ttype>::
+-dirichlet_series(Complex s, long long N=-1)
++dirichlet_series(Complex s, long long N)
+ {
+     Complex z=0.;
+     long long m,n;
+diff -Naur lcalc-1.23-vanilla/include/L.h lcalc-1.23-fixed-gcc.4.9/include/L.h
+--- lcalc-1.23-vanilla/include/L.h	2012-08-08 23:21:55.000000000 +0200
++++ lcalc-1.23-fixed-gcc.4.9/include/L.h	2014-04-21 14:32:04.003467348 +0200
+@@ -491,7 +491,7 @@
+ 
+     //#include "Ldirichlet_series.h" //for computing Dirichlet series
+     Complex partial_dirichlet_series(Complex s, long long N1, long long N2);
+-    Complex dirichlet_series(Complex s, long long N);
++    Complex dirichlet_series(Complex s, long long N=-1LL);
+ 
+     //#include "Ltaylor_series.h" //for computing taylor series for Dirichlet series
+     //void compute_taylor_series(int N, int K, Complex s_0, Complex *series);
diff --git a/gnu/packages/patches/lcalc-default-parameters-2.patch b/gnu/packages/patches/lcalc-default-parameters-2.patch
new file mode 100644
index 0000000000..1d881ee0c4
--- /dev/null
+++ b/gnu/packages/patches/lcalc-default-parameters-2.patch
@@ -0,0 +1,58 @@
+Patch taken from the Sage packaging system.
+
+--- lcalc-1.23/include/Lgamma.h	2012-08-08 23:21:55.000000000 +0200
++++ lcalc-1.23/include/Lgamma.h	2014-05-18 21:15:27.786889718 +0200
+@@ -77,7 +77,7 @@
+ //n=0 should just give log_GAMMA(z)... thus making log_GAMMA
+ //code obsolete. But leave log_GAMMA intact anyways.
+ template <class ttype>
+-precise(ttype) log_GAMMA (ttype z,int n=0)
++precise(ttype) log_GAMMA (ttype z,int n)
+ {
+     int M;
+     precise(ttype) log_G,r,r2,y;
+@@ -230,7 +230,7 @@
+ //value exp_w which holds exp(-w)
+ //computes G(z,w), so there's an extra w^(-z) factor.
+ template <class ttype>
+-Complex inc_GAMMA (ttype z,ttype w, const char *method="temme", ttype exp_w = 0, bool recycle=false)
++Complex inc_GAMMA (ttype z,ttype w, const char *method, ttype exp_w, bool recycle)
+ {
+ 
+     Complex G;
+@@ -334,7 +334,7 @@
+ 
+ 
+ template <class ttype>
+-ttype cfrac_GAMMA (ttype z,ttype w, ttype exp_w=0, bool recycle=false)  //computes G(z,w) via continued fraction
++ttype cfrac_GAMMA (ttype z,ttype w, ttype exp_w, bool recycle)  //computes G(z,w) via continued fraction
+ {
+ 
+         ttype G;
+@@ -424,7 +424,7 @@
+ }
+ 
+ template <class ttype>
+-ttype asympt_GAMMA (ttype z,ttype w, ttype exp_w = 0, bool recycle=false)  //computes G(z,w) via asymptotic series
++ttype asympt_GAMMA (ttype z,ttype w, ttype exp_w, bool recycle)  //computes G(z,w) via asymptotic series
+ {
+ 
+         if(my_verbose>3) cout << "called asympt_GAMMA("<<z<<","<<w<<")"<< endl;
+@@ -446,7 +446,7 @@
+ 
+ 
+ template <class ttype>
+-ttype comp_inc_GAMMA (ttype z,ttype w,ttype exp_w = 0, bool recycle=false)  //computes g(z,w)
++ttype comp_inc_GAMMA (ttype z,ttype w,ttype exp_w, bool recycle)  //computes g(z,w)
+ {
+ 
+     ttype g;
+@@ -604,7 +604,7 @@
+ }
+ 
+ template <class ttype>
+-Complex gamma_sum(Complex s, int what_type, ttype *coeff, int N, Double g, Complex l, Double Q, Long Period, Complex delta=1, const char *method="temme")
++Complex gamma_sum(Complex s, int what_type, ttype *coeff, int N, Double g, Complex l, Double Q, Long Period, Complex delta, const char *method)
+ {
+     Complex SUM=0;
+ 
diff --git a/gnu/packages/patches/lcalc-lcommon-h.patch b/gnu/packages/patches/lcalc-lcommon-h.patch
new file mode 100644
index 0000000000..897956de64
--- /dev/null
+++ b/gnu/packages/patches/lcalc-lcommon-h.patch
@@ -0,0 +1,13 @@
+Patch taken from the Sage packaging system.
+
+--- src/include/Lcommon.h	2010-01-31 15:16:45.000000000 +0000
++++ src/include/Lcommon.h	2011-03-08 21:19:11.849443238 +0000
+@@ -25,7 +25,7 @@
+ #ifdef USE_MPFR
+ inline double lcalc_to_double(const double& x) { return x; }
+ #endif
+-//inline double lcalc_to_double(const long double& x) { return x; }
++inline double lcalc_to_double(const long double& x) { return x; }
+ inline double lcalc_to_double(const int& x) { return x; }
+ inline double lcalc_to_double(const long long& x) { return x; }
+ inline double lcalc_to_double(const short& x) { return x; }
diff --git a/gnu/packages/patches/lcalc-using-namespace-std.patch b/gnu/packages/patches/lcalc-using-namespace-std.patch
new file mode 100644
index 0000000000..6e0075fdc8
--- /dev/null
+++ b/gnu/packages/patches/lcalc-using-namespace-std.patch
@@ -0,0 +1,43 @@
+Patch taken from the Sage packaging system.
+
+diff --git a/include/Lcommon.h b/include/Lcommon.h
+index 1b3be43..bf40532 100644
+--- a/include/Lcommon.h
++++ b/include/Lcommon.h
+@@ -48,7 +48,7 @@ const bool outputSeries=true;	  // Whether to output the coefficients or just th
+ 
+ // Loop i from m to n
+ // Useful in tidying up most for loops
+-#define loop(i,m,n) for(typeof(m) i=(m); i!=(n); i++)
++#define loop(i,m,n) for(auto i=(m); i!=(n); i++)
+ 
+ // A class for calculations involving polynomials of small degree
+ // Not efficient enough for huge polynomials
+diff --git a/include/Lcommon_ld.h b/include/Lcommon_ld.h
+index 86ae4df..33c560c 100644
+--- a/include/Lcommon_ld.h
++++ b/include/Lcommon_ld.h
+@@ -53,7 +53,7 @@ const bool outputSeries=true;	  // Whether to output the coefficients or just th
+ 
+ // Loop i from m to n
+ // Useful in tidying up most for loops
+-#define loop(i,m,n) for(typeof(m) i=(m); i!=(n); i++)
++#define loop(i,m,n) for(auto i=(m); i!=(n); i++)
+ 
+ // A class for calculations involving polynomials of small degree
+ // Not efficient enough for huge polynomials
+diff --git a/include/Lglobals.h b/include/Lglobals.h
+index 60002e4..ca2606c 100644
+--- a/include/Lglobals.h
++++ b/include/Lglobals.h
+@@ -24,9 +24,9 @@
+ #ifndef Lglobals_H
+ #define Lglobals_H
+ 
++#include <valarray>
+ using namespace std;
+ 
+-#include <valarray>
+ #ifdef USE_MPFR
+     #include "Lgmpfrxx.h"
+     typedef mpfr_class Double;
diff --git a/gnu/packages/patches/leela-zero-gtest.patch b/gnu/packages/patches/leela-zero-gtest.patch
new file mode 100644
index 0000000000..7291b4ab72
--- /dev/null
+++ b/gnu/packages/patches/leela-zero-gtest.patch
@@ -0,0 +1,40 @@
+Use shared gtest instead of submodule
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 617e4b2..2857875 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -18,7 +18,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+ include(GNUInstallDirs)
+ 
+ project(leelaz)
+-add_subdirectory(gtest EXCLUDE_FROM_ALL) # We don't want to install gtest, exclude it from `all`
+ 
+ # Required Packages
+ set(Boost_MIN_VERSION "1.58.0")
+@@ -27,6 +26,7 @@ find_package(Boost 1.58.0 REQUIRED program_options filesystem)
+ find_package(Threads REQUIRED)
+ find_package(ZLIB REQUIRED)
+ find_package(OpenCL REQUIRED)
++find_package(GTest REQUIRED)
+ # We need OpenBLAS for now, because we make some specific
+ # calls. Ideally we'd use OpenBLAS is possible and fall back to
+ # not doing those calls if it's not present.
+@@ -93,6 +93,7 @@ include_directories(${IncludePath})
+ include_directories(${Boost_INCLUDE_DIRS})
+ include_directories(${OpenCL_INCLUDE_DIRS})
+ include_directories(${ZLIB_INCLUDE_DIRS})
++include_directories(${GTEST_INCLUDE_DIRS})
+ 
+ if((UNIX AND NOT APPLE) OR WIN32)
+     include_directories(${BLAS_INCLUDE_DIRS})
+@@ -141,7 +142,8 @@ target_link_libraries(tests ${Boost_LIBRARIES})
+ target_link_libraries(tests ${BLAS_LIBRARIES})
+ target_link_libraries(tests ${OpenCL_LIBRARIES})
+ target_link_libraries(tests ${ZLIB_LIBRARIES})
+-target_link_libraries(tests gtest_main ${CMAKE_THREAD_LIBS_INIT})
++target_link_libraries(tests ${GTEST_BOTH_LIBRARIES})
++target_link_libraries(tests ${CMAKE_THREAD_LIBS_INIT})
+ 
+ include(GetGitRevisionDescription)
+ git_describe(VERSION --tags)
diff --git a/gnu/packages/patches/lrcalc-includes.patch b/gnu/packages/patches/lrcalc-includes.patch
new file mode 100644
index 0000000000..e15286905b
--- /dev/null
+++ b/gnu/packages/patches/lrcalc-includes.patch
@@ -0,0 +1,92 @@
+Patch taken from the Sage packaging system.
+
+From 4a5e1c8c3c11efdb1cbb4239825a6bf4bf1c52f8 Mon Sep 17 00:00:00 2001
+From: Anders Skovsted Buch <asbuch@math.rutgers.edu>
+Date: Sun, 29 Nov 2015 16:25:56 -0500
+Subject: [PATCH] Patch by Jeroen Demeyer to change include <vector.h> to
+ "vector.h", plus similar cases.
+
+---
+ src/lrcalc.c   | 2 +-
+ src/maple.c    | 4 ++--
+ src/schublib.h | 2 +-
+ src/symfcn.c   | 6 +++---
+ src/symfcn.h   | 4 ++--
+ 5 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/lrcalc.c b/src/lrcalc.c
+index aff3f75..60df49e 100644
+--- a/src/lrcalc.c
++++ b/src/lrcalc.c
+@@ -8,7 +8,7 @@
+ #include <stdlib.h>
+ extern char *optarg;
+ 
+-#include <vectarg.h>
++#include "vectarg.h"
+ 
+ #include "symfcn.h"
+ #include "maple.h"
+diff --git a/src/maple.c b/src/maple.c
+index fdc0768..a5f4d14 100644
+--- a/src/maple.c
++++ b/src/maple.c
+@@ -4,8 +4,8 @@
+  */
+ 
+ #include <stdio.h>
+-#include <vector.h>
+-#include <hashtab.h>
++#include "vector.h"
++#include "hashtab.h"
+ #include "maple.h"
+ 
+ 
+diff --git a/src/schublib.h b/src/schublib.h
+index a8e8511..864850c 100644
+--- a/src/schublib.h
++++ b/src/schublib.h
+@@ -1,7 +1,7 @@
+ #ifndef _SCHUBLIB_H
+ #define _SCHUBLIB_H
+ 
+-#include <hashtab.h>
++#include "hashtab.h"
+ 
+ hashtab *trans(vector *w, int vars, hashtab *res);
+ hashtab *monk(int i, hashtab *slc, int rank);
+diff --git a/src/symfcn.c b/src/symfcn.c
+index 4ffbe4b..fd5df5d 100644
+--- a/src/symfcn.c
++++ b/src/symfcn.c
+@@ -5,9 +5,9 @@
+ 
+ #include <stdio.h>
+ 
+-#include <alloc.h>
+-#include <vector.h>
+-#include <hashtab.h>
++#include "alloc.h"
++#include "vector.h"
++#include "hashtab.h"
+ 
+ #include "symfcn.h"
+ 
+diff --git a/src/symfcn.h b/src/symfcn.h
+index b8543b1..29bb00d 100644
+--- a/src/symfcn.h
++++ b/src/symfcn.h
+@@ -1,8 +1,8 @@
+ #ifndef _SYMFCN_H
+ #define _SYMFCN_H
+ 
+-#include <hashtab.h>
+-#include <vector.h>
++#include "hashtab.h"
++#include "vector.h"
+ 
+ int part_itr_sz(vector *part);
+ int part_itr_sub(vector *part, vector *outer);
+-- 
+2.1.1.1.g1fb337f
+
diff --git a/gnu/packages/patches/python-pyatspi-python-37.patch b/gnu/packages/patches/python-pyatspi-python-37.patch
new file mode 100644
index 0000000000..caa6aea39e
--- /dev/null
+++ b/gnu/packages/patches/python-pyatspi-python-37.patch
@@ -0,0 +1,82 @@
+From 29a7b929f7f1160b643dc5f5911533887173fcff Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Thu, 28 Jun 2018 17:10:33 +0200
+Subject: [PATCH] Rename async to asynchronous, keep backwards comaptibility
+
+async is a keyword in Python 3.7 and keeping it results in SyntaxError.
+
+Fixes https://gitlab.gnome.org/GNOME/pyatspi2/issues/1
+---
+ pyatspi/registry.py | 35 +++++++++++++++++++++++++++--------
+ 1 file changed, 27 insertions(+), 8 deletions(-)
+
+diff --git a/pyatspi/registry.py b/pyatspi/registry.py
+index cb28395..f73ee16 100644
+--- a/pyatspi/registry.py
++++ b/pyatspi/registry.py
+@@ -50,9 +50,9 @@ class Registry(object):
+         reference to the Accessibility.Registry singleton. Doing so is harmless and
+         has no point.
+ 
+-        @@ivar async: Should event dispatch to local listeners be decoupled from event
+-                receiving from the registry?
+-        @@type async: boolean
++        @@ivar asynchronous: Should event dispatch to local listeners be decoupled
++                from event receiving from the registry?
++        @@type asynchronous: boolean
+         @@ivar reg: Reference to the real, wrapped registry object
+         @@type reg: Accessibility.Registry
+         @@ivar dev: Reference to the device controller
+@@ -111,25 +111,44 @@ class Registry(object):
+ 
+                 self.has_implementations = True
+ 
+-                self.async = False	# not fully supported yet
++                self.asynchronous = False	# not fully supported yet
+                 self.started = False
+                 self.event_listeners = dict()
+ 
++        def __getattr__(self, name):
++            """
++            For backwards compatibility with old API
++            """
++            if name == 'async':
++                return self.asynchronous
++            return object.__getattr__(self, name)
++
++        def __setattr__(self, name, value):
++            """
++            For backwards compatibility with old API
++            """
++            if name == 'async':
++                self.asynchronous = value
++            object.__setattr__(self, name, value)
++
+         def _set_default_registry (self):
+                 self._set_registry (MAIN_LOOP_GLIB)
+ 
+-        def start(self, async=False, gil=True):
++        def start(self, asynchronous=False, gil=True, **kwargs):
+                 """
+                 Enter the main loop to start receiving and dispatching events.
+ 
+-                @@param async: Should event dispatch be asynchronous (decoupled) from 
+-                        event receiving from the AT-SPI registry?
+-                @@type async: boolean
++                @@param asynchronous: Should event dispatch be asynchronous
++                        (decoupled) from event receiving from the AT-SPI registry?
++                @@type asynchronous: boolean
+                 @@param gil: Add an idle callback which releases the Python GIL for a few
+                         milliseconds to allow other threads to run? Necessary if other threads
+                         will be used in this process.
+                 @@type gil: boolean
+                 """
++                if 'async' in kwargs:
++                    # support previous API
++                    asynchronous = kwargs['async']
+                 if not self.has_implementations:
+                         self._set_default_registry ()
+                 self.started = True
+-- 
+2.22.0
+
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index b2eb81ef0f..a9e345da53 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -1039,7 +1039,7 @@ multiple files.")
 (define-public pdfpc
   (package
     (name "pdfpc")
-    (version "4.3.2")
+    (version "4.3.4")
     (source
      (origin
        (method git-fetch)
@@ -1048,7 +1048,7 @@ multiple files.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "15y6g92fp6x6dwwhrhkfny5z20w7pq9c8w19fh2vzff9aa6m2h9z"))))
+        (base32 "07aafsm4jzdgpahz83p0ajv40hry7gviyadqi13ahr8xdhhwy2sd"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))          ; no test target
     (inputs
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 3875c71911..d0df091494 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
@@ -383,24 +383,7 @@ error when it would have happened.")
     (license (package-license perl))))
 
 (define-public perl-base
-  (package
-    (name "perl-base")
-    (version "2.23")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
-                           "base-" version ".tar.gz"))
-       (sha256
-        (base32 "1pjxcbbcpwlgzm0fzsbqd58zn8cj9vwril1wn3xfd7ws550mixa0"))))
-    (build-system perl-build-system)
-    (home-page "https://metacpan.org/release/base")
-    (synopsis "Establish an ISA relationship with base classes at compile time")
-    (description "Allows you to both load one or more modules, while setting
-up inheritance from those modules at the same time.  Unless you are using the
-fields pragma, consider this module discouraged in favor of the lighter-weight
-parent.")
-    (license (package-license perl))))  ;See README
+  (deprecated-package "perl-base" perl))
 
 (define-public perl-browser-open
   (package
@@ -873,8 +856,6 @@ the Carp.pm module doesn't help.")
     (build-system perl-build-system)
     (native-inputs
      `(("perl-sub-name" ,perl-sub-name)))
-    (propagated-inputs
-     `(("perl-base" ,perl-base)))
     (home-page "https://metacpan.org/release/Class-Accessor")
     (synopsis "Automated accessor generation")
     (description "This module automagically generates accessors/mutators for
@@ -1302,6 +1283,32 @@ objects.")
     (home-page "https://metacpan.org/release/Clone")
     (license (package-license perl))))
 
+(define-public perl-clone-choose
+  (package
+    (name "perl-clone-choose")
+    (version "0.010")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HE/HERMES/"
+                           "Clone-Choose-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0cin2bjn5z8xhm9v4j7pwlkx88jnvz8al0njdjwyvs6fb0glh8sn"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-clone" ,perl-clone)
+       ("perl-clone-pp" ,perl-clone-pp)
+       ("perl-test-without-module" ,perl-test-without-module)))
+    (propagated-inputs
+     `(("perl-module-runtime" ,perl-module-runtime)))
+    (home-page "https://metacpan.org/release/Clone-Choose")
+    (synopsis "Choose appropriate Perl @code{clone} utility")
+    (description "This @code{Clone::Choose} module checks several different
+modules which provide a @code{clone()} function and selects an appropriate
+one.")
+    (license perl-license)))
+
 (define-public perl-clone-pp
   (package
     (name "perl-clone-pp")
@@ -1605,14 +1612,14 @@ CPAN::Meta object are present.")
 (define-public perl-cpanel-json-xs
   (package
     (name "perl-cpanel-json-xs")
-    (version "4.10")
+    (version "4.12")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "Cpanel-JSON-XS-" version ".tar.gz"))
        (sha256
-        (base32 "1r92b03hkmqr0brp00cj67b1iklfd4yas481d6a5nx2941c03h3p"))))
+        (base32 "0n66da8s88srr591i7gm1d611z9jbcz488fhqxy604diiw8pnha9"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-common-sense" ,perl-common-sense)))
@@ -3764,14 +3771,14 @@ allows you to locate these files after installation.")
 (define-public perl-file-slurp
   (package
     (name "perl-file-slurp")
-    (version "9999.26")
+    (version "9999.27")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/C/CA/CAPOEIRAB/"
                            "File-Slurp-" version ".tar.gz"))
        (sha256
-        (base32 "0c09ivl50sg9j75si6cahfp1wgvhqawakb6h5j6hlca6vwjqs9qy"))))
+        (base32 "1x233kj1qifvii7j8d4wzarwhj5z11vnpxsqvdm98dsccr7qi79s"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/File-Slurp")
     (synopsis "Reading/Writing/Modifying of complete files")
@@ -3835,8 +3842,6 @@ slurping and spewing.  All functions are optionally exported.")
        (sha256
         (base32 "0pr3wrxrk93wy7dz9gsb1sgl77icrs8rh2mah6wms5cdi2ll5ch1"))))
     (build-system perl-build-system)
-    (propagated-inputs
-     `(("perl-parent" ,perl-parent)))
     (home-page "https://metacpan.org/release/File-Temp")
     (synopsis "Return name and handle of a temporary file safely")
     (description "File::Temp can be used to create and open temporary files in
@@ -4969,7 +4974,7 @@ portions of this module couldn't be compiled on this machine.")
 (define-public perl-mailtools
   (package
     (name "perl-mailtools")
-    (version "2.20")
+    (version "2.21")
     (source
      (origin
        (method url-fetch)
@@ -4979,7 +4984,7 @@ portions of this module couldn't be compiled on this machine.")
              ".tar.gz"))
        (sha256
         (base32
-         "15iizg2x1w7ca0r8rn3wwhp7w160ljvf55prspljwd6cm7vhcmpm"))))
+         "1js43bp2dnd8n2rv8clsv749166jnyqnc91k4wkkmw5n4rlbvnaa"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-timedate" ,perl-timedate)))
@@ -5634,7 +5639,6 @@ Moose and is optimised for rapid startup.")
        ("perl-package-stash" ,perl-package-stash)
        ("perl-package-stash-xs" ,perl-package-stash-xs)
        ("perl-params-util" ,perl-params-util)
-       ("perl-parent" ,perl-parent)
        ("perl-scalar-list-utils" ,perl-scalar-list-utils)
        ("perl-sub-exporter" ,perl-sub-exporter)
        ("perl-sub-name" ,perl-sub-name)
@@ -6964,22 +6968,7 @@ distributions.")
     (license (package-license perl))))
 
 (define-public perl-parent
-  (package
-    (name "perl-parent")
-    (version "0.237")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/C/CO/CORION/"
-                           "parent-" version ".tar.gz"))
-       (sha256
-        (base32 "1bnaadzf51g6zrpq6pvvgds2cc9d4w1vck7sapkd3hb5hmjdk28h"))))
-    (build-system perl-build-system)
-    (home-page "https://metacpan.org/release/parent")
-    (synopsis "Establish an ISA relationship with base classes at compile time")
-    (description "Allows you to both load one or more modules, while setting
-up inheritance from those modules at the same time.")
-    (license (package-license perl))))
+  (deprecated-package "perl-parent" perl))
 
 (define-public perl-path-class
   (package
@@ -7951,14 +7940,14 @@ uplevel() are avoided.")
 (define-public perl-super
   (package
     (name "perl-super")
-    (version "1.20141117")
+    (version "1.20190531")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/C/CH/CHROMATIC/"
                            "SUPER-" version ".tar.gz"))
        (sha256
-        (base32 "1cn05kacg0xfbm1zzksm2yx2pnrzqja4d9163cxv3sdfc1yhwqhs"))))
+        (base32 "16nk2za9fwyg7mcifacr69qi075iz1yvy8r9jh3903kzdvkiwpb8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -9009,8 +8998,7 @@ simple n-ary tree.")
      `(("perl-module-build" ,perl-module-build)
        ("perl-test-exception" ,perl-test-exception)))
     (propagated-inputs
-     `(("perl-tree-simple" ,perl-tree-simple)
-       ("perl-base" ,perl-base)))
+     `(("perl-tree-simple" ,perl-tree-simple)))
     (home-page "https://metacpan.org/release/Tree-Simple-VisitorFactory")
     (synopsis "Factory object for dispensing Visitor objects")
     (description "This module is a factory for dispensing
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 58a1022bc2..676dae5430 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -105,3 +105,138 @@ is delete your existing cassette files, and run your tests again.  VCR.py will
 detect the absence of a cassette file and once again record all HTTP
 interactions, which will update them to correspond to the new API.")
     (license license:expat)))
+
+(define-public python-pytest-checkdocs
+  (package
+    (name "python-pytest-checkdocs")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-checkdocs" version))
+       (sha256
+        (base32
+         "07c27cdjcw6jph5kbgpxchrvwlps4ggwb2j6m7y64imnik0asrq8"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-importlib-metadata" ,python-importlib-metadata)))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
+    (home-page "https://github.com/jaraco/pytest-checkdocs")
+    (synopsis "Check the README when running tests")
+    (description
+     "This package provides a pytest plugin that checks the long description
+of the project to ensure it renders properly.")
+    (license license:expat)))
+
+(define-public python-pytest-flake8
+  (package
+    (name "python-pytest-flake8")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-flake8" version))
+       (sha256
+        (base32
+         "1h30gd21fjsafqxwclf25sdh89vrdz7rsh4lzw11aiw7ww9mq8jd"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-flake8" ,python-flake8)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/tholo/pytest-flake8")
+    (synopsis "Pytest plugin to check FLAKE8 requirements")
+    (description
+     "This package provides a pytest plugin for efficiently checking PEP8
+compliance.")
+    (license license:bsd-3)))
+
+(define-public python-pytest-shutil
+  (package
+    (name "python-pytest-shutil")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-shutil" version))
+       (sha256
+        (base32
+         "0q8j0ayzmnvlraml6i977ybdq4xi096djhf30n2m1rvnvrhm45nq"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tests
+           (lambda _
+             (mkdir "/tmp/bin")
+             (substitute* "tests/integration/test_cmdline_integration.py"
+               (("dirname = '/bin'")
+                "dirname = '/tmp/bin'")
+               (("bindir = os.path.realpath\\('/bin'\\)")
+                "bindir = os.path.realpath('/tmp/bin')"))
+             #t)))))
+    (propagated-inputs
+     `(("python-contextlib2" ,python-contextlib2)
+       ("python-execnet" ,python-execnet)
+       ("python-pathpy" ,python-pathpy)
+       ("python-termcolor" ,python-termcolor)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools-git" ,python-setuptools-git)))
+    (home-page "https://github.com/manahl/pytest-plugins")
+    (synopsis "Assorted shell and environment tools for py.test")
+    (description
+     "This package provides assorted shell and environment tools for the
+py.test testing framework.")
+    (license license:expat)))
+
+(define-public python-pytest-fixture-config
+  (package
+    (name "python-pytest-fixture-config")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-fixture-config" version))
+       (sha256
+        (base32
+         "13i1qpz22w3x4dmw8vih5jdnbqfqvl7jiqs0dg764s0zf8bp98a1"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-setuptools-git" ,python-setuptools-git)))
+    (home-page "https://github.com/manahl/pytest-plugins")
+    (synopsis "Fixture configuration utils for py.test")
+    (description
+     "This package provides fixture configuration utilities for the py.test
+testing framework.")
+    (license license:expat)))
+
+(define-public python-pytest-virtualenv
+  (package
+    (name "python-pytest-virtualenv")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-virtualenv" version))
+       (sha256
+        (base32
+         "03w2zz3crblj1p6i8nq17946hbn3zqp9z7cfnifw47hi4a4fww12"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; one test fails; can't find virtualenv
+    (propagated-inputs
+     `(("python-virtualenv" ,python-virtualenv)
+       ("python-pytest-shutil" ,python-pytest-shutil)
+       ("python-pytest-fixture-config" ,python-pytest-fixture-config)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools-git" ,python-setuptools-git)))
+    (home-page "https://github.com/manahl/pytest-plugins")
+    (synopsis "Virtualenv fixture for py.test")
+    (description "This package provides a virtualenv fixture for the py.test
+framework.")
+    (license license:expat)))
diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm
index 88f62d1934..705a7ffa3b 100644
--- a/gnu/packages/python-compression.scm
+++ b/gnu/packages/python-compression.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -32,7 +32,8 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages python-xyz))
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sphinx))
 
 (define-public python-lzo
   (package
@@ -205,3 +206,31 @@ install: libbitshuffle.so
                #t))))))
     (inputs '())
     (native-inputs '())))
+
+(define-public python-zipp
+  (package
+    (name "python-zipp")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "zipp" version))
+       (sha256
+        (base32
+         "1hsv4zwy1pwnbrr63wjjkpwrmnk36ngbkkqw01bj5hcwh1z3m56a"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-contextlib2" ,python-contextlib2)
+       ("python-pathlib2" ,python-pathlib2)
+       ("python-rst.linker" ,python-rst.linker)))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-sphinx" ,python-sphinx)
+       ("python-unittest2" ,python-unittest2)))
+    (home-page "https://github.com/jaraco/zipp")
+    (synopsis
+     "Backport of pathlib-compatible object wrapper for zip files")
+    (description
+     "This package provides a @code{pathlib}-compatible @code{Zipfile} object
+wrapper.  It provides a backport of the @code{Path} object.")
+    (license license:expat)))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index d9065e8b15..88a00070a8 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -77,14 +77,13 @@ with what is used by the Bitcoin network.")
 (define-public python-bcrypt
   (package
     (name "python-bcrypt")
-    (version "3.1.6")
+    (version "3.1.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "bcrypt" version))
        (sha256
-        (base32
-         "1sh2xh0iragdq8dhssc1cdd02nppjq7b5kmv0qladfi2s9cnfqs4"))))
+        (base32 "0hhywhxx301cxivgxrpslrangbfpccc8y83qbwn1f57cab3nj00b"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pycparser" ,python-pycparser)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 1867beb566..4ba40e95b0 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -29,7 +29,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
-;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -60,6 +60,7 @@
 ;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
 ;;; Copyright © 2019 Sam <smbaines8@gmail.com>
 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -88,6 +89,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages dbm)
   #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
@@ -118,6 +120,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-compression)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages qt)
@@ -2685,7 +2688,7 @@ ecosystem, but can naturally be used also by other projects.")
 (define-public python-robotframework
   (package
     (name "python-robotframework")
-    (version "3.1.1")
+    (version "3.1.2")
     ;; There are no tests in the PyPI archive.
     (source
      (origin
@@ -2695,8 +2698,7 @@ ecosystem, but can naturally be used also by other projects.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1aaiamc9l35m5sf7xl2qc5q9308v7sz3p1qgzcslsjxzddphyn4v"))
+        (base32 "16gnxy0qinh8fhs0qvhff5z2xh49c3cqgm0d7bfjw120df6x7fym"))
        (patches (search-patches
                  "python-robotframework-honor-source-date-epoch.patch"))))
     (build-system python-build-system)
@@ -4856,17 +4858,101 @@ them as the version argument or in a SCM managed file.")
 (define-public python2-setuptools-scm
   (package-with-python2 python-setuptools-scm))
 
+(define-public python-pathlib2
+  (package
+    (name "python-pathlib2")
+    (version "2.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pathlib2" version))
+       (sha256
+        (base32
+         "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-scandir" ,python-scandir)
+       ("python-six" ,python-six)))
+    (home-page "https://pypi.python.org/pypi/pathlib2/")
+    (synopsis "Object-oriented filesystem paths")
+    (description "The goal of pathlib2 is to provide a backport of the
+standard @code{pathlib} module which tracks the standard library module, so
+all the newest features of the standard @code{pathlib} can be used also on
+older Python versions.")
+    (license license:expat)))
+
+(define-public python-importlib-metadata
+  (package
+    (name "python-importlib-metadata")
+    (version "0.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "importlib_metadata" version))
+       (sha256
+        (base32
+         "1nqj6vj2z4byi8flzf2lbldhqgicsz9mkpv4k69kjd8p8qxy4vnb"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-configparser" ,python-configparser)
+       ("python-contextlib2" ,python-contextlib2)
+       ("python-docutils" ,python-docutils)
+       ("python-pathlib2" ,python-pathlib2)
+       ("python-rst.linker" ,python-rst.linker)
+       ("python-zipp" ,python-zipp)))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-sphinx" ,python-sphinx)))
+    (home-page "https://importlib-metadata.readthedocs.io/")
+    (synopsis "Read metadata from Python packages")
+    (description
+     "@code{importlib_metadata} is a library which provides an API for
+accessing an installed Python package's metadata, such as its entry points or
+its top-level name.  This functionality intends to replace most uses of
+@code{pkg_resources} entry point API and metadata API.  Along with
+@code{importlib.resources} in Python 3.7 and newer, this can eliminate the
+need to use the older and less efficient @code{pkg_resources} package.")
+    (license license:asl2.0)))
+
+(define-public python-jaraco-packaging
+  (package
+    (name "python-jaraco-packaging")
+    (version "6.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "jaraco.packaging" version))
+        (sha256
+          (base32
+            "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-checkdocs" ,python-pytest-checkdocs)
+       ("python-pytest-flake8" ,python-pytest-flake8)
+       ("python-rst.linker" ,python-rst.linker)
+       ("python-setuptools" ,python-setuptools)
+       ("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-six" ,python-six)
+       ("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/jaraco/jaraco.packaging")
+    (synopsis "Tools to supplement packaging Python releases")
+    (description
+     "This package provides various tools to supplement packaging Python
+releases.")
+    (license license:expat)))
+
 (define-public python-pathpy
   (package
     (name "python-pathpy")
-    (version "11.0.1")
+    (version "11.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "path.py" version))
        (sha256
-        (base32 "07x15v8c7ry9bvycw294c9yq6ky9v2b0dalvgi6rn38ilh69vsz7"))))
-    ;; (outputs '("out" "doc"))
+        (base32 "1jxkf91syzxlpiwgm83fjfz1m5xh3jrvv4iyl5wjsnkk599pls5n"))))
+    (outputs '("out" "doc"))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-appdirs" ,python-appdirs)))
@@ -4875,26 +4961,31 @@ them as the version argument or in a SCM managed file.")
        ("python-sphinx" ,python-sphinx)
        ("python-rst.linker" ,python-rst.linker)
        ("python-pytest" ,python-pytest)
-       ("python-pytest-runner" ,python-pytest-runner)))
+       ("python-pytest-runner" ,python-pytest-runner)
+       ("python-jaraco-packaging" ,python-jaraco-packaging)))
     (arguments
-     ;; FIXME: Documentation and tests require "jaraco.packaging".
-     `(#:tests? #f))
-    ;;    #:phases
-    ;;    (modify-phases %standard-phases
-    ;;      (add-after 'build 'build-doc
-    ;;        (lambda _
-    ;;          (setenv "LANG" "en_US.UTF-8")
-    ;;          (zero? (system* "python" "setup.py" "build_sphinx"))))
-    ;;      (add-after 'install 'install-doc
-    ;;        (lambda* (#:key outputs #:allow-other-keys)
-    ;;          (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
-    ;;                 (doc (string-append data "/doc/" ,name "-" ,version))
-    ;;                 (html (string-append doc "/html")))
-    ;;            (mkdir-p html)
-    ;;            (for-each (lambda (file)
-    ;;                        (copy-file file (string-append doc "/" file)))
-    ;;                      '("README.rst" "CHANGES.rst"))
-    ;;            (copy-recursively "build/sphinx/html" html)))))))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-doc
+           (lambda _
+             (setenv "LANG" "en_US.UTF-8")
+             (invoke "python" "setup.py" "build_sphinx")))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+                    (doc (string-append data "/doc/" ,name "-" ,version))
+                    (html (string-append doc "/html")))
+               (mkdir-p html)
+               (for-each (lambda (file)
+                           (copy-file file (string-append doc "/" file)))
+                         '("README.rst" "CHANGES.rst"))
+               (copy-recursively "build/sphinx/html" html)
+               #t)))
+         (replace 'check
+           (lambda _
+             ;; The import time test aborts if an import takes longer than
+             ;; 100ms.  It may very well take a little longer than that.
+             (invoke "pytest" "-v" "-k" "not test_import_time"))))))
     (home-page "https://github.com/jaraco/path.py")
     (synopsis "Python module wrapper for built-in os.path")
     (description
@@ -7930,6 +8021,27 @@ be set via config files and/or environment variables.")
 @code{ArgumentParser} object.")
     (license license:asl2.0)))
 
+(define-public python-contextlib2
+  (package
+    (name "python-contextlib2")
+    (version "0.5.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "contextlib2" version))
+       (sha256
+        (base32
+         "0j6ad6lwwyc9kv71skj098v5l7x5biyj2hs4lc5x1kcixqcr97sh"))))
+    (build-system python-build-system)
+    (home-page "http://contextlib2.readthedocs.org/")
+    (synopsis "Tools for decorators and context managers")
+    (description "This module is primarily a backport of the Python
+3.2 contextlib to earlier Python versions.  Like contextlib, it
+provides utilities for common tasks involving decorators and context
+managers.  It also contains additional features that are not part of
+the standard library.")
+    (license license:psfl)))
+
 (define-public python2-contextlib2
   (package
     (name "python2-contextlib2")
@@ -9746,16 +9858,16 @@ format.")
 (define-public python-twisted
   (package
     (name "python-twisted")
-    (version "19.2.0")
+    (version "19.2.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Twisted" version ".tar.bz2"))
               (sha256
                (base32
-                "1gmb8d57s13d8znvqnxi47vqzqz141z443dbxg9wjkp8ia9f220p"))))
+                "0liymyd4pzphizjlpwkncxjpm9akyr3lkfkm77yfg6wasv108b7s"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f)) ; FIXME: Some tests are failing.
+     '(#:tests? #f))                    ; FIXME: some tests fail
     (propagated-inputs
      `(("python-zope-interface" ,python-zope-interface)
        ("python-pyhamcrest" ,python-pyhamcrest)
@@ -10378,14 +10490,14 @@ etc.")
 (define-public python-stem
   (package
     (name "python-stem")
-    (version "1.7.0")
+    (version "1.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "stem" version))
        (sha256
         (base32
-         "1awiglfiajnx2hva9aqpj3fmdvdb4qg7cwnlfyih827m68y3cq8v"))))
+         "18lc95pmc7i089nlsb06dsxyjl5wbhxfqgdxbjcia35ndh8z7sn9"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -13464,6 +13576,37 @@ belong to tagged versions.")
 (define-public python2-setuptools-scm-git-archive
   (package-with-python2 python-setuptools-scm-git-archive))
 
+(define-public python-setuptools-git
+  (package
+    (name "python-setuptools-git")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools-git" version))
+       (sha256
+        (base32
+         "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; This is needed for tests.
+         (add-after 'unpack 'configure-git
+           (lambda _
+             (setenv "HOME" "/tmp")
+             (invoke "git" "config" "--global" "user.email" "guix")
+             (invoke "git" "config" "--global" "user.name" "guix")
+             #t)))))
+    (native-inputs
+     `(("git" ,git-minimal)))
+    (home-page "https://github.com/msabramo/setuptools-git")
+    (synopsis "Setuptools revision control system plugin for Git")
+    (description
+     "This package provides a plugin for Setuptools for revision control with
+Git.")
+    (license license:bsd-3)))
+
 (define-public python-pyclipper
   (package
     (name "python-pyclipper")
@@ -14067,6 +14210,51 @@ source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
 @code{f} strings.")
     (license license:expat)))
 
+(define-public python-typed-ast
+  (package
+    (name "python-typed-ast")
+    (version "1.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "typed-ast" version))
+       (sha256
+        (base32
+         "1m7pr6qpana3cvqwiw7mlvrgvmw27ch5mx1592572xhlki8g85ak"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build python-build-system)
+                  (ice-9 ftw)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (let ((cwd (getcwd)))
+               (setenv "PYTHONPATH"
+                       (string-append cwd "/build/"
+                                      (find (cut string-prefix? "lib" <>)
+                                            (scandir (string-append cwd "/build")))
+                                      ":"
+                                      (getenv "PYTHONPATH"))))
+             (invoke "pytest")
+             #t)))))
+    (native-inputs `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/python/typed_ast")
+    (synopsis "Fork of Python @code{ast} modules with type comment support")
+    (description "This package provides a parser similar to the standard
+@code{ast} library.  Unlike @code{ast}, the parsers in @code{typed_ast}
+include PEP 484 type comments and are independent of the version of Python
+under which they are run.  The @code{typed_ast} parsers produce the standard
+Python AST (plus type comments), and are both fast and correct, as they are
+based on the CPython 2.7 and 3.7 parsers.")
+    ;; See the file "LICENSE" for the details.
+    (license (list license:psfl
+                   license:asl2.0
+                   license:expat))))    ;ast27/Parser/spark.py
+
 (define-public python-typing
   (package
     (name "python-typing")
@@ -15155,14 +15343,13 @@ append on old values.  Partd excels at shuffling operations.")
 (define-public python-dask
   (package
     (name "python-dask")
-    (version "1.2.0")
+    (version "1.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dask" version))
        (sha256
-        (base32
-         "1y0dqcp72ixwblgway0jpvfirlxfcmwrjiivdq96firj1hw127sd"))))
+        (base32 "0b29gvf96gmp20wicly3v3mhyc93zbm3mdv935fka6x0wax7cy2y"))))
     (build-system python-build-system)
     ;; A single test out of 5000+ fails.  This test is marked as xfail when
     ;; pytest-xdist is used.
@@ -15373,16 +15560,15 @@ with the HTTP/2-based RPC framework gRPC.")
 (define-public python-astunparse
   (package
     (name "python-astunparse")
-    (version "1.6.1")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "astunparse" version))
        (sha256
-        (base32
-         "1jhidwyrqn17avqh9xnnm3wd7q7aahaq009cba67g86y6gxicyyj"))))
+        (base32 "0rzbc44xcvzjhhiy7wac96mgal5mcjz1mfq8rmvgswskf4kf9cys"))))
     (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; there are none
+    (arguments '(#:tests? #f))          ; there are none
     (propagated-inputs
      `(("python-six" ,python-six)
        ("python-wheel" ,python-wheel)))
@@ -15610,3 +15796,40 @@ by Igor Pavlov.")
 
 (define-public python2-pylzma
   (package-with-python2 python-pylzma))
+
+(define-public python-bsddb3
+  (package
+    (name "python-bsddb3")
+    (version "6.2.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "bsddb3" version))
+       (sha256
+        (base32
+         "019db2y6bfmiqbrgg9x9f6h72qjmqh05czdn2v5sy9bl0gs23mj2"))))
+    (build-system python-build-system)
+    (inputs
+     `(("bdb" ,bdb)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'configure-locations
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb"))
+             (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "python3" "test3.py" "-v"))))))
+    (home-page "https://www.jcea.es/programacion/pybsddb.htm")
+    (synopsis "Python bindings for Oracle Berkeley DB")
+    (description
+     "This module provides a nearly complete wrapping of the Oracle/Sleepycat
+C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and
+Transaction objects, and each of these is exposed as a Python type in the
+bsddb3.db module.  The database objects can use various access methods: btree,
+hash, recno, and queue.  Complete support of Berkeley DB distributed
+transactions.  Complete support for Berkeley DB Replication Manager.
+Complete support for Berkeley DB Base Replication.  Support for RPC.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 9c8088b2f7..9444d8be73 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -871,14 +871,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                       (delete-file-recursively "src/llvm-emscripten")
                       (delete-file-recursively "src/tools/clang")
                       (delete-file-recursively "src/tools/lldb")
-                      #t))
-          (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                       "rust-1.30-gdb-llvm.patch"
-                                       "rust-reproducible-builds.patch")))))
-      (inputs
-       ;; Use LLVM 7.0
-       (alist-replace "llvm" (list llvm)
-                      (package-inputs base-rust)))
+                      #t))))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -918,12 +911,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
           "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli")))
     (package
       (inherit base-rust)
-      (source
-        (origin
-          (inherit (package-source base-rust))
-          (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                       "rust-1.30-gdb-llvm.patch"
-                                       "rust-reproducible-builds.patch")))))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -1069,6 +1056,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
            "0bbizy6b7002v1rdhrxrf5gijclbyizdhkglhp81ib3bf5x66kas")))
     (package
       (inherit base-rust)
+      (inputs
+       (alist-replace "llvm" (list llvm-8)
+                      (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
index 63d1281668..43da5c636a 100644
--- a/gnu/packages/sagemath.scm
+++ b/gnu/packages/sagemath.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bdw-gc)
@@ -308,8 +310,19 @@ on numerical types, while GiNaC depends on CLN for this purpose.")
              (invoke "make" "libzn_poly.so")))
          (add-after 'install 'install-so
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
-               (install-file "libzn_poly.so" lib)))))))
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib"))
+                    (soname (string-append "libzn_poly-" ,version ".so"))
+                    (target (string-append lib "/" soname)))
+               (install-file "libzn_poly.a" lib)
+               (install-file soname lib)
+               (symlink target
+                        (string-append lib "/libzn_poly.so"))
+               (symlink target
+                        (string-append lib "/libzn_poly-"
+                                       ,(version-major+minor version)
+                                       ".so")))
+             #t)))))
     (synopsis "Arithmetic for polynomials over Z/NZ")
     (description "zn_poly implements the arithmetic of polynomials the
 coefficients of which are modular integers.")
@@ -353,3 +366,109 @@ Boolean variables.  As a unique approach, binary decision diagrams are
 used as internal storage type for polynomial structures.")
     (license license:gpl2+)
     (home-page "https://gitlab.com/sagemath/zn_poly")))
+
+(define-public lcalc
+  (package
+    (name "lcalc")
+    (version "1.23")
+    ;; The original home page of the project has disappeared, as well as
+    ;; code hosted by the original author on Google Code. The latter has
+    ;; been copied to gitlab.com/sagemath and purportedly contains patches
+    ;; for a never released version 1.3, that supposedly follows 1.23.
+    ;; We use the tarball as well as the patches hosted inside the sage
+    ;; package system distributed with the sage tarball.
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "ftp://ftp.fu-berlin.de/unix/misc/sage/spkg/"
+                           "upstream/lcalc/lcalc-1.23.tar.bz2"))
+       (sha256
+        (base32
+         "1c6dsdshgxhqppjxvxhp8yhpxaqvnz3d1mlh26r571gkq8z2bm43"))
+       (patches (search-patches "lcalc-lcommon-h.patch"
+                                "lcalc-default-parameters-1.patch"
+                                "lcalc-default-parameters-2.patch"
+                                "lcalc-using-namespace-std.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;no tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'prepare-build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "src")
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "Makefile"
+                 (("^INSTALL_DIR= /usr/local")
+                  (string-append "INSTALL_DIR=" out))
+                 ;; Sage renames the include directory, so we do it also.
+                 (("include/Lfunction")
+                  "include/libLfunction")
+                 ;; Add --std=c++11 to be compatible with the "auto" keyword
+                 ;; introduced by lcalc-using-namespace-std.patch.
+                 (("^#EXTRA= -pg")
+                  "EXTRA=--std=c++11")))
+             #t))
+         (add-before 'install 'make-output-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (lib (string-append out "/lib"))
+                    (include (string-append out "/include")))
+               (mkdir-p bin)
+               (mkdir-p lib)
+               (mkdir-p include))
+             #t)))))
+    ;; FIXME:
+    ;; We need to add pari-gp and probably pari related patches from the
+    ;; sage project, as well as uncomment the line setting PARI_DEFINE in
+    ;; the Makefile to get the full functionality of this package.
+    ;; For the time being, we hope that sage can be compiled without.
+    (synopsis "C++ library for L-functions")
+    (description "Lcalc computes L-functions, in particular the Riemann
+zeta function and its twists by quadratic characters.")
+    (license license:gpl2+)
+    (home-page "https://gitlab.com/sagemath/sage")))
+
+(define-public ratpoints
+  (package
+    (name "ratpoints")
+    (version "2.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.mathe2.uni-bayreuth.de/stoll/programs/"
+                    "ratpoints-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0zhad84sfds7izyksbqjmwpfw4rvyqk63yzdjd3ysd32zss5bgf4"))
+              (patches
+               ;; Taken from
+               ;; <https://git.sagemath.org/sage.git/plain/build/pkgs/ratpoints/patches/>
+               (search-patches "ratpoints-sturm_and_rp_private.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:make-flags
+       (list (string-append "INSTALL_DIR=" (assoc-ref %outputs "out"))
+             "CCFLAGS=-fPIC")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ;no configure script
+         (add-before 'install 'create-install-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p out)
+               (with-directory-excursion out
+                 (for-each (lambda (d) (mkdir-p d))
+                           '("bin" "include" "lib"))))
+             #t)))))
+    (inputs
+     `(("gmp" ,gmp)))
+    (home-page "http://www.mathe2.uni-bayreuth.de/stoll/programs/")
+    (synopsis "Find rational points on hyperelliptic curves")
+    (description "Ratpoints tries to find all rational points within
+a given height bound on a hyperelliptic curve in a very efficient way,
+by using an optimized quadratic sieve algorithm.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index 1ac72f2baa..98b0cc7044 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Benjamin Slade <slade@jnanam.net>
+;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -77,14 +79,14 @@ implementing both small and large scale systems.")
 (define-public rep-gtk
   (package
     (name "rep-gtk")
-    (version "0.90.8.2")
+    (version "0.90.8.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.tuxfamily.org/librep/"
+              (uri (string-append "https://download.tuxfamily.org/librep/"
                                   name "/" name "_" version ".tar.xz"))
               (sha256
                (base32
-                "0qslm2isyv22hffdpw0nh7xk8jw8cj3h5y7d40c9h5r833w7j6sz"))
+                "0hgkkywm8zczir3lqr727bn7ybgg71x9cwj1av8fykkr8pdpard9"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -94,14 +96,26 @@ implementing both small and large scale systems.")
                      "installdir=$(libdir)/rep"))
                   #t))))
     (build-system gnu-build-system)
-    (arguments '(#:tests? #f)) ; no tests
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'bootstrap 'remove-autogen
+           (lambda _
+             ;; Remove autogen.sh so that the bootstrap phase can run
+             ;; autoreconf.
+             (delete-file "autogen.sh")
+             #t)))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
     (propagated-inputs
      ;; required by rep-gtk.pc.
      `(("gtk+"   ,gtk+-2)
        ("librep" ,librep)))
-    (home-page "http://sawfish.wikia.com/wiki/Rep-GTK")
+    (home-page "https://sawfish.fandom.com/wiki/Rep-GTK")
     (synopsis "GTK+ binding for librep")
     (description
      "Rep-GTK is a GTK+ (and GLib, GDK) binding to the librep, and one of the
@@ -111,14 +125,14 @@ backend of Sawfish.")
 (define-public sawfish
   (package
     (name "sawfish")
-    (version "1.11")
+    (version "1.12.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.tuxfamily.org/sawfish/"
+              (uri (string-append "https://download.tuxfamily.org/sawfish/"
                                   name "_" version ".tar.xz"))
               (sha256
                (base32
-                "0wp4m0p836a0rysbcdqb6z5hxlxqj3rgdbks3bs44rlssx0mcvyg"))
+                "1z7awzgw8d15aw17kpbj460pcxq8l2rhkaxk47w7yg9qrmg0xja4"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -172,7 +186,7 @@ backend of Sawfish.")
        ("libxrandr"   ,libxrandr)
        ("libxtst"     ,libxtst)
        ("rep-gtk"     ,rep-gtk)))
-    (home-page "http://sawfish.wikia.com/wiki/Main_Page")
+    (home-page "https://sawfish.tuxfamily.org")
     (synopsis "Configurable window manager")
     (description
      "Sawfish is an extensible window manager using a Lisp-based scripting
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 21fe65a08d..31dff49daa 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -460,14 +460,14 @@ k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.")
 (define-public r-cluster
   (package
     (name "r-cluster")
-    (version "2.0.9")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cluster" version))
        (sha256
         (base32
-         "1bg5dvs4bzj0rp75jpxaklz12rvyh5w99h7zkvfgpgn86ljg1rlf"))))
+         "055af3yz2biqbsbwm4arwr1yqnj4gicpzv2i6dbfl5pnz2z5byga"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -1198,14 +1198,14 @@ agnes cluster diagrams.")
 (define-public r-gdtools
   (package
     (name "r-gdtools")
-    (version "0.1.8")
+    (version "0.1.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gdtools" version))
        (sha256
         (base32
-         "1ayy0s699ghaz34lklvcskfwman3x2n2772s5sa5x9k9xgsnxwcl"))))
+         "0w4fihf52q5qxxk0lg36x6yvjjl8vw66y60ncdjs5fvnxqn5z2vb"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1651,13 +1651,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.3.4")
+    (version "0.4.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "1pks7d2xavzgaxqrnk3f79qsmv4wqv93f8991jv93pnb1mxpyijf"))))
+                "038mmbmklw17ncgz53vrdx2506c1jj6di3y165bbx2sl2yia8j4p"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1730,14 +1730,14 @@ database.")
 (define-public r-dbplyr
   (package
     (name "r-dbplyr")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dbplyr" version))
        (sha256
         (base32
-         "15fs66qq2p20gi3y2jlcsw27ach8rwkkkgr1mz2qbiyddbsjks6g"))))
+         "1q2dflr88s5a1amzfld3087q422vf70052qn84zyd8895kdg10xp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -2537,13 +2537,13 @@ disk (or a connection).")
 (define-public r-plotrix
   (package
     (name "r-plotrix")
-    (version "3.7-5")
+    (version "3.7-6")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotrix" version))
               (sha256
                (base32
-                "0k6ivryac1k81z2dijjds376a9jxwk8rf5g48snj67cnjffkybxj"))))
+                "0ijfjlr7ls5hvfyzdmwab6bx0w3nvp0c8fgynj4355cj8mbzgmc3"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/plotrix")
     (synopsis "Various plotting functions")
@@ -3004,14 +3004,14 @@ statements.")
 (define-public r-segmented
   (package
     (name "r-segmented")
-    (version "0.5-4.0")
+    (version "1.0-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "segmented" version))
        (sha256
         (base32
-         "0wa0xjda2j33284jkp5hj1wdjysc5f4paj1s1lcixgawj4ckmxkz"))))
+         "1igsfkffpa60zn6j45lhw1zgr5pz6rjknv2f3sylnx5l9fdwibgf"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/segmented")
     (synopsis "Regression models with breakpoints estimation")
@@ -3622,13 +3622,13 @@ vignettes.")
 (define-public r-mvtnorm
   (package
     (name "r-mvtnorm")
-    (version "1.0-10")
+    (version "1.0-11")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mvtnorm" version))
               (sha256
                (base32
-                "04md0wmqgif24g0a4hx19ifn4kk8nx10986vf2d9vascig6ikpri"))))
+                "0lkjph661blc1nwfzg9w48a60wvj6ffh4zjwlisvracsx4nn2883"))))
     (build-system r-build-system)
     (inputs
      `(("gfortran" ,gfortran)))
@@ -4748,14 +4748,14 @@ models, generalized linear models and model-based clustering.")
 (define-public r-mclust
   (package
     (name "r-mclust")
-    (version "5.4.3")
+    (version "5.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mclust" version))
        (sha256
         (base32
-         "18x5ych9zi3y87rxi4pf6f23sl2918dp9xxpw1pqa7p7drw817p6"))))
+         "039ymr57bq5327gypizw0v2qb81j6bkqhjdh8yj23qa5sh51phyc"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -4967,14 +4967,14 @@ of the points.")
 (define-public r-fpc
   (package
     (name "r-fpc")
-    (version "2.2-2")
+    (version "2.2-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fpc" version))
        (sha256
         (base32
-         "1lzqxi2jzc753j4356b949isx2nccd32mw2ch665q78nxccp145n"))))
+         "1dy3pla4jjgs46izqg2kxajlxr80sbr9896jbzb1qszrdx7af041"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)
@@ -4984,7 +4984,6 @@ of the points.")
        ("r-kernlab" ,r-kernlab)
        ("r-mass" ,r-mass)
        ("r-mclust" ,r-mclust)
-       ("r-mvtnorm" ,r-mvtnorm)
        ("r-prabclus" ,r-prabclus)
        ("r-robustbase" ,r-robustbase)))
     (home-page "https://cran.r-project.org/web/packages/fpc")
@@ -5138,14 +5137,14 @@ using modular prediction and response module classes.")
 (define-public r-quantreg
   (package
     (name "r-quantreg")
-    (version "5.40")
+    (version "5.41")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantreg" version))
        (sha256
         (base32
-         "1srni6lkgvy44ljxndz2j9ca702z2wy81f6z6mbbi6h06ni11qw6"))))
+         "110ax3ngn6i94h7iw7ha67kfsmj94hycp7lk62nmyvkp34vpfykh"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 51ed0317bc..faff25ddc1 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -252,16 +252,14 @@ over the Internet in an HTTP and CDN friendly way;
 (define-public rclone
   (package
     (name "rclone")
-    (version "1.47.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/ncw/rclone.git")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1nxwjr9jly6wh1ixr6a7zhlg4b3298v940040fsm0n3lcljd37zx"))))
+    (version "1.48.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/ncw/rclone/releases/download/v"
+                           version "/rclone-v" version ".tar.gz"))
+       (sha256
+        (base32 "1r03rlsk0qpya1fl8xfhj5inccjywf2cqgkd8r6wfhf3w2qd1zlc"))))
     ;; FIXME: Rclone bundles some libraries Guix already provides.  Need to
     ;; un-bundle them.
     (build-system go-build-system)
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index eac3297a32..4840ac4e10 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,8 +26,10 @@
 (define-module (gnu packages tcl)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system perl)
   #:use-module (gnu packages)
   #:use-module (gnu packages image)
@@ -35,7 +38,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (guix licenses))
+  #:use-module ((guix licenses) #:prefix license:))
 
 (define-public tcl
   (package
@@ -81,7 +84,7 @@
     (home-page "http://www.tcl.tk/")
     (synopsis "The Tcl scripting language")
     (description "The Tcl (Tool Command Language) scripting language.")
-    (license tcl/tk)))
+    (license license:tcl/tk)))
 
 
 (define-public expect
@@ -130,7 +133,7 @@ telnet, ftp, passwd, fsck, rlogin, tip, etc.  Expect really makes this
 stuff trivial.  Expect is also useful for testing these same
 applications.  And by adding Tk, you can wrap interactive applications in
 X11 GUIs.")
-    (license public-domain)))            ; as written in `license.terms'
+    (license license:public-domain))) ; as written in `license.terms'
 
 (define-public tk
   (package
@@ -229,7 +232,7 @@ interfaces (GUIs) in the Tcl language.")
     ;; those of the orignal Tix4.1.3 or Tk8.4.* sources. See the files
     ;; pTk/license.terms, pTk/license.html_lib, and pTk/Tix.license for
     ;; details of this license."
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public tcllib
   (package
@@ -343,7 +346,7 @@ modules for Tk, all written in high-level Tcl.  Examples of provided widgets:
 application may register callback scripts for certain document features, and
 when the parser encounters those features while parsing the document the
 callback is evaluated.")
-    (license (non-copyleft
+    (license (license:non-copyleft
               "file://LICENCE"
               "See LICENCE in the distribution."))))
 
@@ -377,4 +380,31 @@ callback is evaluated.")
 application development.  TclX provides additional interfaces to the operating
 system, and adds many new programming constructs, text manipulation tools, and
 debugging tools.")
-    (license tcl/tk)))
+    (license license:tcl/tk)))
+
+(define-public go-github.com-nsf-gothic
+  (let ((commit "97dfcc195b9de36c911a69a6ec2b5b2659c05652")
+        (revision "0"))
+    (package
+      (name "go-github.com-nsf-gothic")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/nsf/gothic")
+                       (commit commit)))
+                (sha256
+                 (base32
+                  "1lrhbml6r4sh22rrn3m9bck70pv0g0c1diprg7cil90x0jidxczr"))
+                (file-name (git-file-name name version))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/nsf/gothic"))
+    (propagated-inputs
+     `(("tk" ,tk)
+       ("tcl" ,tcl)))
+    (home-page "https://github.com/nsf/gothic")
+    (synopsis "Tcl/Tk Go bindings")
+    (description "Gothic contains Go bindings for Tcl/Tk.  The package contains
+only one type and one function that can be used to create a Tk interpreter.")
+    (license license:expat))))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 731bbc5d16..b35486ba59 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,15 +37,19 @@
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages regex)
   #:use-module (gnu packages ruby)
@@ -388,3 +393,47 @@ projects.  The EditorConfig project maintains a file format and plugins for
 various text editors which allow this file format to be read and used by those
 editors.")
     (license license:bsd-2)))
+
+(define-public texmacs
+  (package
+    (name "texmacs")
+    (version "1.99.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.texmacs.org/Download/ftp/tmftp/"
+                           "source/TeXmacs-" version "-src.tar.gz"))
+       (sha256
+        (base32
+         "0i95sf9y8qpgxd8f39cprbp3s200nm9lml0xdpyn46n838acvw19"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "3rdparty")
+           #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("guile" ,guile-1.8)
+       ("perl" ,perl)
+       ("python" ,python-wrapper)
+       ("qt" ,qt-4)))
+    (arguments
+     `(#:tests? #f ;no check target
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'gzip-flags
+           (lambda _
+             (substitute* "Makefile.in"
+               (("^GZIP = gzip -f") "GZIP = gzip -f -n")))))))
+    (synopsis "Editing platform with special features for scientists")
+    (description
+     "GNU TeXmacs is a text editing platform which is specialized for
+scientists.  It is ideal for editing structured documents with different
+types of content.  It has robust support for mathematical formulas and plots.
+ It can also act as an interface to external mathematical programs such as R
+and Octave.  TeXmacs is completely extensible via Guile.")
+    (license license:gpl3+)
+    (home-page "https://www.texmacs.org/tmweb/home/welcome.en.html")))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 028a3b786f..bd94279b7f 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1446,7 +1446,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.05.20")
+    (version "2019.06.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1454,7 +1454,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "18xwdfvpkqrnj0kb8xj8hgwhgiqpv7x7x7zzr4x3vynb9grcv9m8"))))
+                "03a729198zzhixbn7xixi9bprmk3qqh5dsyh3dqhji6lmlijx1w5"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 87839490b2..d60aaf3ac2 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -399,46 +399,48 @@ manage system or application containers.")
 (define-public libvirt
   (package
     (name "libvirt")
-    (version "4.10.0")
+    (version "5.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libvirt.org/sources/libvirt-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0v17zzyyb25nn9l18v5244myg7590dp6ppwgi8xysipifc0q77bz"))))
+                "0ywf8m9yz2hxnic7fylzlmgy4m353r4vv5zsvp89zq5yh4h81yhw"))))
     (build-system gnu-build-system)
     (arguments
-     `(;; FAIL: virshtest
-       ;; FAIL: virfirewalltest
-       ;; FAIL: virkmodtest
-       ;; FAIL: virnetsockettest
-       ;; FAIL: networkxml2firewalltest
-       ;; FAIL: nwfilterebiptablestest
-       ;; FAIL: nwfilterxml2firewalltest
-       ;; Time-out while running commandtest.
-       #:tests? #f
-       #:configure-flags
+     `(#:configure-flags
        (list "--with-polkit"
+             (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
+                            ,name "-" ,version)
              "--sysconfdir=/etc"
              "--localstatedir=/var")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
+         (add-before 'configure 'fix-BOURNE_SHELL-definition
+           ;; BOURNE_SHELL is hard-#defined to ‘/bin/sh’, causing test failures.
            (lambda _
-             (substitute* '("tests/commandtest.c"
-                            "gnulib/tests/test-posix_spawn1.c"
-                            "gnulib/tests/test-posix_spawn2.c")
+             (substitute* "config.h.in"
                (("/bin/sh") (which "sh")))
              #t))
+         (add-before 'configure 'disable-broken-tests
+           (lambda _
+             (let ((tests (list "commandtest"      ; hangs idly
+                                "virnetsockettest" ; tries to network
+                                "virshtest")))     ; fails
+               (substitute* "tests/Makefile.in"
+                 (((format #f "(~a)\\$\\(EXEEXT\\)" (string-join tests "|")))
+                  ""))
+               #t)))
          (replace 'install
            ;; Since the sysconfdir and localstatedir should be /etc and /var
            ;; at runtime, we must prevent writing to them at installation
            ;; time.
-           (lambda _
-             (invoke "make" "install"
-                            "sysconfdir=/tmp/etc"
-                            "localstatedir=/tmp/var")))
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "install"
+                    "sysconfdir=/tmp/etc"
+                    "localstatedir=/tmp/var"
+                    make-flags)))
          (add-after 'install 'wrap-libvirtd
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -458,7 +460,7 @@ manage system or application containers.")
        ("libpcap" ,libpcap)
        ("libnl" ,libnl)
        ("libuuid" ,util-linux)
-       ("lvm2" ,lvm2) ; for libdevmapper
+       ("lvm2" ,lvm2)                   ; for libdevmapper
        ("curl" ,curl)
        ("openssl" ,openssl)
        ("cyrus-sasl" ,cyrus-sasl)
@@ -534,13 +536,13 @@ three libraries:
 (define-public python-libvirt
   (package
     (name "python-libvirt")
-    (version "4.10.0")
+    (version "5.3.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "libvirt-python" version))
               (sha256
                (base32
-                "11fipj9naihgc9afc8bz5hi05xa1shp4qcy170sa18p3sl4zljb9"))))
+                "1zrhkz68ka4f08wwm36y3zzwfn1r65h4nw1nm9qgg8jmrfazj4sj"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 1d9190ef63..124cc93e68 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -202,14 +202,14 @@ Interface} specification.")
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
     ;; Consider updating the nginx-documentation package together with this one.
-    (version "1.17.0")
+    (version "1.17.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1aqgmrjzmklmv2iiyirk2h0hy35v1a76gczhjkxnms2krl35s6z2"))))
+                "0gp7cy2bbn8yi1wapjzssf4bhmn4d4vphdb0k1wiaq2fa6s2a63g"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -3112,7 +3112,7 @@ select or poll.")
 (define-public perl-libwww
   (package
     (name "perl-libwww")
-    (version "6.37")
+    (version "6.39")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -3120,7 +3120,7 @@ select or poll.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "04a24cx9gs070rvlwf5kanz03y7nnq9k2nmpr01plnm059iprvf6"))))
+               "1mblfwz3g7vmyykmb0mcbmmad77rwx55fwaca9ymv9wajd3pg3cs"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -3662,14 +3662,14 @@ applications.")
 (define-public perl-uri
   (package
     (name "perl-uri")
-    (version "1.73")
+    (version "1.76")
     (source (origin
              (method url-fetch)
-             (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+             (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
                                  "URI-" version ".tar.gz"))
              (sha256
               (base32
-               "04z4xwiryrbxxi48bwbkgq9q9pwfgqry3wp0ramcrwv3dx5ap9yc"))))
+               "0gj1aj18k43kmzc3y1zhj5giinf8rksacf757r475xfna0fqxjdj"))))
     (build-system perl-build-system)
     (native-inputs
      ;; For tests.
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 63916d1cc3..72f0e1fd55 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -310,7 +310,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
     (name "wine-staging-patchset-data")
-    (version "4.10")
+    (version "4.11")
     (source
      (origin
        (method git-fetch)
@@ -320,7 +320,7 @@ integrate Windows applications into your desktop.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0kl5718c4xk8d1va1jb5jaa2n0vw3l0hi6bpc7siaww1fp64hy98"))))
+         "0h8qldqr9w1kwn48qgg5m1cs2xqkv8xxg2c66cvfka91hy886jcf"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("bash" ,bash)
@@ -366,7 +366,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "041d3km85iqbshspy9av1fxjwq18xldrb18j04xl2fmpv1hq3pas"))))
+                "1rmyfwlynzs2niz7l2lwjs2axm6in6gb43ldbzyzsflxsmk5fl9f"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("faudio" ,faudio)
               ("ffmpeg" ,ffmpeg)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 7afa7c74e6..8d547969b3 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -519,6 +519,7 @@ move windows, switch between desktops, etc.).")
         (git-reference
          (url "https://github.com/resurrecting-open-source-projects/scrot.git")
          (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32 "1dg0pnmk09p7zlbyxv7d40vf54amrv73y976ds5p7096x6lmlndy"))))
     (build-system gnu-build-system)
@@ -1178,7 +1179,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
 (define-public rofi
   (package
     (name "rofi")
-    (version "1.5.2")
+    (version "1.5.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/DaveDavenport/rofi/"
@@ -1186,7 +1187,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
                                   version "/rofi-" version ".tar.xz"))
               (sha256
                (base32
-                "17faa0rj8vqidrijwx9jrq0c29003n8v3izvc66yssfljgb8kcpj"))))
+                "0y78ya2va2lg3ww17n11y9awn8lhcp1px2d8gxaimxfqlxczs8la"))))
     (build-system gnu-build-system)
     (inputs
      `(("pango" ,pango)
@@ -1206,7 +1207,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
        ("glib:bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (arguments
-     `(#:parallel-tests? #f ; May fail in some circumstances.
+     `(#:parallel-tests? #f             ; fails in some circumstances
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'adjust-tests
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index c518508360..2b4feb1c2d 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -188,7 +188,7 @@ to share commonly used Xfce widgets among the Xfce applications.")
 (define-public exo
   (package
     (name "exo")
-    (version "0.12.5")
+    (version "0.12.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -196,7 +196,7 @@ to share commonly used Xfce widgets among the Xfce applications.")
                                   "exo-" version ".tar.bz2"))
               (sha256
                (base32
-                "1s23prcgall6r5dpn0qlrdq3zj13p95a5s0l2vflgrka8gb39x78"))))
+                "00qh8ihrf09jvd26kilybihkgvv6rvi0l1bvlldxc99jb7ygy5ql"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b7feded821..6e503e7b43 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -1780,17 +1780,14 @@ features and to query screensaver info on specific windows.")
 (define-public sessreg
   (package
     (name "sessreg")
-    (version "1.1.1")
+    (version "1.1.2")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "mirror://xorg/individual/app/sessreg-"
-               version
-               ".tar.bz2"))
-        (sha256
-          (base32
-            "1qd66mg2bnppqz4xgdjzif2488zl82vx2c26ld3nb8pnyginm9vq"))))
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://xorg/individual/app/sessreg-" version ".tar.bz2"))
+       (sha256
+        (base32 "0crczl25zynkrslmm8sjaxszhrh4i33m7h5fg4wfdb3k8aarxjyz"))))
     (build-system gnu-build-system)
     (inputs
       `(("xorgproto" ,xorgproto)))
@@ -2076,14 +2073,14 @@ legacy X clients.")
 (define-public xcalc
   (package
     (name "xcalc")
-    (version "1.0.7")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://xorg/individual/app/"
                            "xcalc-" version ".tar.gz"))
        (sha256
-        (base32 "1xgih1iq9498m7vk22qrdsck1rb905sn395azjn4a6pmhfai401b"))))
+        (base32 "0c768lh0nh28ram9ldldhaf51024fngc589v4pjmf3lxmzcihr58"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 3c1827fb70..537d30add5 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1533,7 +1533,7 @@ GID."
     (('gnu rest ...) #t)
     (rest #f)))
 
-(define (hydra-key-authorization keys guix)
+(define (substitute-key-authorization keys guix)
   "Return a gexp with code to register KEYS, a list of files containing 'guix
 archive' public keys, with GUIX."
   (define default-acl
@@ -1570,8 +1570,7 @@ archive' public keys, with GUIX."
 
 (define %default-authorized-guix-keys
   ;; List of authorized substitute keys.
-  (list (file-append guix "/share/guix/hydra.gnu.org.pub")
-        (file-append guix "/share/guix/berlin.guixsd.org.pub")))
+  (list (file-append guix "/share/guix/berlin.guixsd.org.pub")))
 
 (define-record-type* <guix-configuration>
   guix-configuration make-guix-configuration
@@ -1688,7 +1687,7 @@ archive' public keys, with GUIX."
 
      ;; Optionally authorize substitute server keys.
      (if authorize-key?
-         (hydra-key-authorization keys guix)
+         (substitute-key-authorization keys guix)
          #~#f))))
 
 (define* (references-file item #:optional (name "references"))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 73acb3b17f..13cffd9feb 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -895,11 +895,17 @@ and @command{wicd-curses} user interfaces."
   (vpn-plugins network-manager-vpn-plugins        ;list of <package>
                (default '())))
 
-(define %network-manager-activation
-  ;; Activation gexp for NetworkManager.
-  #~(begin
-      (use-modules (guix build utils))
-      (mkdir-p "/etc/NetworkManager/system-connections")))
+(define network-manager-activation
+  ;; Activation gexp for NetworkManager
+  (match-lambda
+    (($ <network-manager-configuration> network-manager dns vpn-plugins)
+     #~(begin
+         (use-modules (guix build utils))
+         (mkdir-p "/etc/NetworkManager/system-connections")
+         #$@(if (equal? dns "dnsmasq")
+                ;; create directory to store dnsmasq lease file
+                '((mkdir-p "/var/lib/misc"))
+                '())))))
 
 (define (vpn-plugin-directory plugins)
   "Return a directory containing PLUGINS, the NM VPN plugins."
@@ -949,7 +955,7 @@ and @command{wicd-curses} user interfaces."
             (service-extension dbus-root-service-type config->package)
             (service-extension polkit-service-type config->package)
             (service-extension activation-service-type
-                               (const %network-manager-activation))
+                               network-manager-activation)
             (service-extension session-environment-service-type
                                network-manager-environment)
             ;; Add network-manager to the system profile.
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 453b0bdd6d..912096027f 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -330,8 +330,8 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
           ;; The usual services.
           (syslog-service)
 
-          ;; The build daemon.  Register the hydra.gnu.org key as trusted.
-          ;; This allows the installation process to use substitutes by
+          ;; The build daemon.  Register the default substitute server key(s)
+          ;; as trusted to allow the installation process to use substitutes by
           ;; default.
           (service guix-service-type
                    (guix-configuration (authorize-key? #t)))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 656afd1ddb..c90b87c023 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -273,7 +273,10 @@ FILE-SYSTEMS."
   (append-map (compose file-system-type-modules file-system-type)
               file-systems))
 
-(define* (default-initrd-modules #:optional (system (%current-system)))
+(define* (default-initrd-modules
+           #:optional
+           (system (or (%current-target-system)
+                       (%current-system))))
   "Return the list of modules included in the initrd by default."
   (define virtio-modules
     ;; Modules for Linux para-virtualized devices, for use in QEMU guests.
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 247f237622..a891711844 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -223,8 +223,8 @@ info --version")
                                   (operating-system-user-accounts os))))
               (marionette-eval
                `(begin
-                  (use-modules (srfi srfi-1) (ice-9 ftw)
-                               (ice-9 match))
+                  (use-modules (guix build utils) (srfi srfi-1)
+                               (ice-9 ftw) (ice-9 match))
 
                   (every (match-lambda
                            ((user home)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 7b5ee18505..9f6baa1a48 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -79,6 +79,7 @@
     (services (cons (service marionette-service-type
                              (marionette-configuration
                               (imported-modules '((gnu services herd)
+                                                  (guix build utils)
                                                   (guix combinators)))))
                     %base-services))))
 
diff --git a/guix/build/compile.scm b/guix/build/compile.scm
index 794f12379c..c8fe273f7e 100644
--- a/guix/build/compile.scm
+++ b/guix/build/compile.scm
@@ -63,7 +63,8 @@
   ;; strings" due to the fact that we use 'G_' instead of '_'.  We'll need
   ;; help from Guile to solve this.
   '(unsupported-warning unbound-variable arity-mismatch
-    macro-use-before-definition))                 ;new in 2.2
+    macro-use-before-definition                   ;new in 2.2
+    shadowed-toplevel))                           ;new in 2.2.5
 
 (define (optimization-options file)
   "Return the default set of optimizations options for FILE."
diff --git a/guix/build/download-nar.scm b/guix/build/download-nar.scm
index 681f22238d..cb146038ad 100644
--- a/guix/build/download-nar.scm
+++ b/guix/build/download-nar.scm
@@ -42,10 +42,10 @@
   "Return the fallback nar URL for ITEM--e.g.,
 \"/gnu/store/cabbag3…-foo-1.2-checkout\"."
   ;; Here we hard-code nar URLs without checking narinfos.  That's probably OK
-  ;; though.
+  ;; though.  Use berlin.guixsd.org instead of its ci.guix.gnu.org front end to
+  ;; avoid sending these requests to CDN providers without user consent.
   ;; TODO: Use HTTPS?  The downside is the extra dependency.
-  (let ((bases '("http://mirror.hydra.gnu.org/guix"
-                 "http://berlin.guixsd.org"))
+  (let ((bases '("http://berlin.guixsd.org"))
         (item  (basename item)))
     (append (map (cut string-append <> "/nar/gzip/" item) bases)
             (map (cut string-append <> "/nar/" item) bases))))
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 5c2eb3c14d..eb045cbd1c 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -146,6 +146,7 @@
             window-size-y-pixels
             terminal-window-size
             terminal-columns
+            terminal-rows
 
             utmpx?
             utmpx-login-type
@@ -1871,23 +1872,17 @@ corresponds to the TIOCGWINSZ ioctl."
                (list (strerror err))
                (list err)))))
 
-(define* (terminal-columns #:optional (port (current-output-port)))
-  "Return the best approximation of the number of columns of the terminal at
-PORT, trying to guess a reasonable value if all else fails.  The result is
-always a positive integer."
-  (define (fall-back)
-    (match (and=> (getenv "COLUMNS") string->number)
-      (#f 80)
-      ((? number? columns)
-       (if (> columns 0) columns 80))))
-
+(define (terminal-dimension window-dimension port fall-back)
+  "Return the terminal dimension defined by WINDOW-DIMENSION, one of
+'window-size-columns' or 'window-size-rows' for PORT.  If PORT does not
+correspond to a terminal, return the value returned by FALL-BACK."
   (catch 'system-error
     (lambda ()
       (if (file-port? port)
-          (match (window-size-columns (terminal-window-size port))
+          (match (window-dimension (terminal-window-size port))
             ;; Things like Emacs shell-mode return 0, which is unreasonable.
             (0 (fall-back))
-            ((? number? columns) columns))
+            ((? number? n) n))
           (fall-back)))
     (lambda args
       (let ((errno (system-error-errno args)))
@@ -1900,6 +1895,24 @@ always a positive integer."
             (fall-back)
             (apply throw args))))))
 
+(define* (terminal-columns #:optional (port (current-output-port)))
+  "Return the best approximation of the number of columns of the terminal at
+PORT, trying to guess a reasonable value if all else fails.  The result is
+always a positive integer."
+  (define (fall-back)
+    (match (and=> (getenv "COLUMNS") string->number)
+      (#f 80)
+      ((? number? columns)
+       (if (> columns 0) columns 80))))
+
+  (terminal-dimension window-size-columns port fall-back))
+
+(define* (terminal-rows #:optional (port (current-output-port)))
+  "Return the best approximation of the number of rows of the terminal at
+PORT, trying to guess a reasonable value if all else fails.  The result is
+always a positive integer."
+  (terminal-dimension window-size-rows port (const 25)))
+
 
 ;;;
 ;;; utmpx.
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 8145d51143..433b4551a5 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -21,6 +21,7 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
+  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
@@ -34,6 +35,7 @@
   #:use-module (guix base16)
   #:use-module (guix memoization)
   #:use-module (guix combinators)
+  #:use-module (guix deprecation)
   #:use-module (guix monads)
   #:use-module (gcrypt hash)
   #:use-module (guix base32)
@@ -50,7 +52,8 @@
             derivation-builder-environment-vars
             derivation-file-name
             derivation-prerequisites
-            derivation-prerequisites-to-build
+            derivation-build-plan
+            derivation-prerequisites-to-build     ;deprecated
 
             <derivation-output>
             derivation-output?
@@ -61,6 +64,7 @@
 
             <derivation-input>
             derivation-input?
+            derivation-input
             derivation-input-path
             derivation-input-derivation
             derivation-input-sub-derivations
@@ -148,14 +152,28 @@
   (recursive? derivation-output-recursive?))      ; Boolean
 
 (define-immutable-record-type <derivation-input>
-  (make-derivation-input path sub-derivations)
+  (make-derivation-input drv sub-derivations)
   derivation-input?
-  (path            derivation-input-path)             ; store path
+  (drv             derivation-input-derivation)       ; <derivation>
   (sub-derivations derivation-input-sub-derivations)) ; list of strings
 
-(define (derivation-input-derivation input)
-  "Return the <derivation> object INPUT refers to."
-  (read-derivation-from-file (derivation-input-path input)))
+
+(define (derivation-input-path input)
+  "Return the file name of the derivation INPUT refers to."
+  (derivation-file-name (derivation-input-derivation input)))
+
+(define* (derivation-input drv #:optional
+                           (outputs (derivation-output-names drv)))
+  "Return a <derivation-input> for the OUTPUTS of DRV."
+  ;; This is a public interface meant to be more convenient than
+  ;; 'make-derivation-input' and giving us more control.
+  (make-derivation-input drv outputs))
+
+(define (derivation-input-key input)
+  "Return an object for which 'equal?' and 'hash' are constant-time, and which
+can thus be used as a key for INPUT in lookup tables."
+  (cons (derivation-input-path input)
+        (derivation-input-sub-derivations input)))
 
 (set-record-type-printer! <derivation>
                           (lambda (drv port)
@@ -197,8 +215,8 @@ download with a fixed hash (aka. `fetchurl')."
   "Return the list of output paths corresponding to INPUT, a
 <derivation-input>."
   (match input
-    (($ <derivation-input> path sub-drvs)
-     (map (cut derivation-path->output-path path <>)
+    (($ <derivation-input> drv sub-drvs)
+     (map (cut derivation->output-path drv <>)
           sub-drvs))))
 
 (define (valid-derivation-input? store input)
@@ -213,20 +231,20 @@ they are coalesced, with their sub-derivations merged.  This is needed because
 Nix itself keeps only one of them."
   (fold (lambda (input result)
           (match input
-            (($ <derivation-input> path sub-drvs)
+            (($ <derivation-input> (= derivation-file-name path) sub-drvs)
              ;; XXX: quadratic
              (match (find (match-lambda
-                            (($ <derivation-input> p s)
+                            (($ <derivation-input> (= derivation-file-name p)
+                                                   s)
                              (string=? p path)))
                           result)
                (#f
                 (cons input result))
-               ((and dup ($ <derivation-input> _ sub-drvs2))
+               ((and dup ($ <derivation-input> drv sub-drvs2))
                 ;; Merge DUP with INPUT.
                 (let ((sub-drvs (delete-duplicates
                                  (append sub-drvs sub-drvs2))))
-                  (cons (make-derivation-input path
-                                               (sort sub-drvs string<?))
+                  (cons (make-derivation-input drv (sort sub-drvs string<?))
                         (delq dup result))))))))
         '()
         inputs))
@@ -242,12 +260,14 @@ result is the set of prerequisites of DRV not already in valid."
              (result    '())
              (input-set (set)))
     (let ((inputs (remove (lambda (input)
-                            (or (set-contains? input-set input)
+                            (or (set-contains? input-set
+                                               (derivation-input-key input))
                                 (cut? input)))
                           (derivation-inputs drv))))
       (fold2 loop
              (append inputs result)
-             (fold set-insert input-set inputs)
+             (fold set-insert input-set
+                   (map derivation-input-key inputs))
              (map derivation-input-derivation inputs)))))
 
 (define (offloadable-derivation? drv)
@@ -333,87 +353,81 @@ substituter many times."
         (#f #f)
         ((key . value) value)))))
 
-(define* (derivation-prerequisites-to-build store drv
-                                            #:key
-                                            (mode (build-mode normal))
-                                            (outputs
-                                             (derivation-output-names drv))
-                                            (substitutable-info
-                                             (substitution-oracle store
-                                                                  (list drv)
-                                                                  #:mode mode)))
-  "Return two values: the list of derivation-inputs required to build the
-OUTPUTS of DRV and not already available in STORE, recursively, and the list
-of required store paths that can be substituted.  SUBSTITUTABLE-INFO must be a
-one-argument procedure similar to that returned by 'substitution-oracle'."
-  (define built?
-    (mlambda (item)
-      (valid-path? store item)))
-
-  (define input-built?
-    (compose (cut any built? <>) derivation-input-output-paths))
-
-  (define input-substitutable?
-    ;; Return true if and only if all of SUB-DRVS are subsitutable.  If at
-    ;; least one is missing, then everything must be rebuilt.
-    (compose (cut every substitutable-info <>) derivation-input-output-paths))
-
-  (define (derivation-built? drv* sub-drvs)
+(define* (derivation-build-plan store inputs
+                                #:key
+                                (mode (build-mode normal))
+                                (substitutable-info
+                                 (substitution-oracle
+                                  store
+                                  (map derivation-input-derivation
+                                       inputs)
+                                  #:mode mode)))
+  "Given INPUTS, a list of derivation-inputs, return two values: the list of
+derivation to build, and the list of substitutable items that, together,
+allows INPUTS to be realized.
+
+SUBSTITUTABLE-INFO must be a one-argument procedure similar to that returned
+by 'substitution-oracle'."
+  (define (built? item)
+    (valid-path? store item))
+
+  (define (input-built? input)
     ;; In 'check' mode, assume that DRV is not built.
     (and (not (and (eqv? mode (build-mode check))
-                   (eq? drv* drv)))
-         (every built? (derivation-output-paths drv* sub-drvs))))
-
-  (define (derivation-substitutable-info drv sub-drvs)
-    (and (substitutable-derivation? drv)
-         (let ((info (filter-map substitutable-info
-                                 (derivation-output-paths drv sub-drvs))))
-           (and (= (length info) (length sub-drvs))
+                   (member input inputs)))
+         (every built? (derivation-input-output-paths input))))
+
+  (define (input-substitutable-info input)
+    (and (substitutable-derivation? (derivation-input-derivation input))
+         (let* ((items (derivation-input-output-paths input))
+                (info  (filter-map substitutable-info items)))
+           (and (= (length info) (length items))
                 info))))
 
-  (let loop ((drv        drv)
-             (sub-drvs   outputs)
-             (build      '())                     ;list of <derivation-input>
-             (substitute '()))                    ;list of <substitutable>
-    (cond ((derivation-built? drv sub-drvs)
-           (values build substitute))
-          ((derivation-substitutable-info drv sub-drvs)
-           =>
-           (lambda (substitutables)
-             (values build
-                     (append substitutables substitute))))
-          (else
-           (let ((build  (if (substitutable-derivation? drv)
-                             build
-                             (cons (make-derivation-input
-                                    (derivation-file-name drv) sub-drvs)
-                                   build)))
-                 (inputs (remove (lambda (i)
-                                   (or (member i build) ; XXX: quadratic
-                                       (input-built? i)
-                                       (input-substitutable? i)))
-                                 (derivation-inputs drv))))
-             (fold2 loop
-                    (append inputs build)
-                    (append (append-map (lambda (input)
-                                          (if (and (not (input-built? input))
-                                                   (input-substitutable? input))
-                                              (map substitutable-info
-                                                   (derivation-input-output-paths
-                                                    input))
-                                              '()))
-                                        (derivation-inputs drv))
-                            substitute)
-                    (map (lambda (i)
-                           (read-derivation-from-file
-                            (derivation-input-path i)))
-                         inputs)
-                    (map derivation-input-sub-derivations inputs)))))))
-
-(define (read-derivation drv-port)
+  (let loop ((inputs     inputs)                  ;list of <derivation-input>
+             (build      '())                     ;list of <derivation>
+             (substitute '())                     ;list of <substitutable>
+             (visited    (set)))                  ;set of <derivation-input>
+    (match inputs
+      (()
+       (values build substitute))
+      ((input rest ...)
+       (let ((key (derivation-input-key input)))
+         (cond ((set-contains? visited key)
+                (loop rest build substitute visited))
+               ((input-built? input)
+                (loop rest build substitute
+                      (set-insert key visited)))
+               ((input-substitutable-info input)
+                =>
+                (lambda (substitutables)
+                  (loop rest build
+                        (append substitutables substitute)
+                        (set-insert key visited))))
+               (else
+                (let ((deps (derivation-inputs
+                             (derivation-input-derivation input))))
+                  (loop (append deps rest)
+                        (cons (derivation-input-derivation input) build)
+                        substitute
+                        (set-insert key visited))))))))))
+
+(define-deprecated (derivation-prerequisites-to-build store drv #:rest rest)
+  derivation-build-plan
+  (let-values (((build download)
+                (apply derivation-build-plan store
+                       (list (derivation-input drv)) rest)))
+    (values (map derivation-input build) download)))
+
+(define* (read-derivation drv-port
+                          #:optional (read-derivation-from-file
+                                      read-derivation-from-file))
   "Read the derivation from DRV-PORT and return the corresponding <derivation>
-object.  Most of the time you'll want to use 'read-derivation-from-file',
-which caches things as appropriate and is thus more efficient."
+object.  Call READ-DERIVATION-FROM-FILE to read derivations declared as inputs
+of the derivation being parsed.
+
+Most of the time you'll want to use 'read-derivation-from-file', which caches
+things as appropriate and is thus more efficient."
 
   (define comma (string->symbol ","))
 
@@ -449,8 +463,9 @@ which caches things as appropriate and is thus more efficient."
     (fold-right (lambda (input result)
                   (match input
                     ((path (sub-drvs ...))
-                     (cons (make-derivation-input path sub-drvs)
-                           result))))
+                     (let ((drv (read-derivation-from-file path)))
+                       (cons (make-derivation-input drv sub-drvs)
+                             result)))))
                 '()
                 x))
 
@@ -552,9 +567,15 @@ that form."
 
   (define (write-input input port)
     (match input
-      (($ <derivation-input> path sub-drvs)
+      (($ <derivation-input> obj sub-drvs)
        (display "(\"" port)
-       (display path port)
+
+       ;; 'derivation/masked-inputs' produces objects that contain a string
+       ;; instead of a <derivation>, so we need to account for that.
+       (display (if (derivation? obj)
+                    (derivation-file-name obj)
+                    obj)
+                port)
        (display "\"," port)
        (write-string-list sub-drvs)
        (display ")" port))))
@@ -645,13 +666,16 @@ name of each input with that input's hash."
     (($ <derivation> outputs inputs sources
                      system builder args env-vars)
      (let ((inputs (map (match-lambda
-                          (($ <derivation-input> path sub-drvs)
+                          (($ <derivation-input> (= derivation-file-name path)
+                                                 sub-drvs)
                            (let ((hash (derivation-path->base16-hash path)))
                              (make-derivation-input hash sub-drvs))))
                         inputs)))
        (make-derivation outputs
-                        (sort (coalesce-duplicate-inputs inputs)
-                              derivation-input<?)
+                        (sort inputs
+                              (lambda (drv1 drv2)
+                                (string<? (derivation-input-derivation drv1)
+                                          (derivation-input-derivation drv2))))
                         sources
                         system builder args env-vars
                         #f)))))
@@ -807,17 +831,19 @@ derivation.  It is kept as-is, uninterpreted, in the derivation."
   (define input->derivation-input
     (match-lambda
       (((? derivation? drv))
-       (make-derivation-input (derivation-file-name drv) '("out")))
+       (make-derivation-input drv '("out")))
       (((? derivation? drv) sub-drvs ...)
-       (make-derivation-input (derivation-file-name drv) sub-drvs))
-      (((? direct-store-path? input))
-       (make-derivation-input input '("out")))
-      (((? direct-store-path? input) sub-drvs ...)
-       (make-derivation-input input sub-drvs))
-      ((input . _)
-       (let ((path (add-to-store store (basename input)
-                                 #t "sha256" input)))
-         (make-derivation-input path '())))))
+       (make-derivation-input drv sub-drvs))
+      (_ #f)))
+
+  (define input->source
+    (match-lambda
+      (((? string? input) . _)
+       (if (direct-store-path? input)
+           input
+           (add-to-store store (basename input)
+                         #t "sha256" input)))
+      (_ #f)))
 
   ;; Note: lists are sorted alphabetically, to conform with the behavior of
   ;; C++ `std::map' in Nix itself.
@@ -828,32 +854,31 @@ derivation.  It is kept as-is, uninterpreted, in the derivation."
                                   (make-derivation-output "" hash-algo
                                                           hash recursive?)))
                           (sort outputs string<?)))
+         (sources    (sort (delete-duplicates
+                            (filter-map input->source inputs))
+                           string<?))
          (inputs     (sort (coalesce-duplicate-inputs
-                            (map input->derivation-input
-                                 (delete-duplicates inputs)))
+                            (filter-map input->derivation-input inputs))
                            derivation-input<?))
          (env-vars   (sort (env-vars-with-empty-outputs
                             (user+system-env-vars))
                            (lambda (e1 e2)
                              (string<? (car e1) (car e2)))))
-         (drv-masked (make-derivation outputs
-                                      (filter (compose derivation-path?
-                                                       derivation-input-path)
-                                              inputs)
-                                      (filter-map (lambda (i)
-                                                    (let ((p (derivation-input-path i)))
-                                                      (and (not (derivation-path? p))
-                                                           p)))
-                                                  inputs)
+         (drv-masked (make-derivation outputs inputs sources
                                       system builder args env-vars #f))
          (drv        (add-output-paths drv-masked)))
 
     (let* ((file (add-data-to-store store (string-append name ".drv")
                                     (derivation->bytevector drv)
-                                    (map derivation-input-path inputs)))
+                                    (append (map derivation-input-path inputs)
+                                            sources)))
            (drv* (set-field drv (derivation-file-name) file)))
-      (hash-set! %derivation-cache file drv*)
-      drv*)))
+      ;; Preserve pointer equality.  This improves the performance of
+      ;; 'eq?'-memoization on derivations.
+      (or (hash-ref %derivation-cache file)
+          (begin
+            (hash-set! %derivation-cache file drv*)
+            drv*)))))
 
 (define (invalidate-derivation-caches!)
   "Invalidate internal derivation caches.  This is mostly useful for
@@ -920,7 +945,8 @@ recursively."
       ;; in the format used in 'derivation' calls.
       (mlambda (input loop)
         (match input
-          (($ <derivation-input> path (sub-drvs ...))
+          (($ <derivation-input> (= derivation-file-name path)
+                                 (sub-drvs ...))
            (match (vhash-assoc path mapping)
              ((_ . (? derivation? replacement))
               (cons replacement sub-drvs))
@@ -990,6 +1016,11 @@ derivation/output pairs, using the specified MODE."
   (build-things store (map (match-lambda
                             ((? derivation? drv)
                              (derivation-file-name drv))
+                            ((? derivation-input? input)
+                             (cons (derivation-input-path input)
+                                   (string-join
+                                    (derivation-input-sub-derivations input)
+                                    ",")))
                             ((? string? file) file)
                             (((? derivation? drv) . output)
                              (cons (derivation-file-name drv)
diff --git a/guix/download.scm b/guix/download.scm
index cd5d61cd13..fe680be4a2 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -394,7 +394,6 @@
                        '(guix base16) '(bytevector->base16-string))
 
      (list (guix-publish "ci.guix.gnu.org")
-           (guix-publish "mirror.hydra.gnu.org")
            (lambda (file algo hash)
              ;; 'tarballs.nixos.org' supports several algorithms.
              (string-append "https://tarballs.nixos.org/"
diff --git a/guix/progress.scm b/guix/progress.scm
index f150b081d6..349637dbcf 100644
--- a/guix/progress.scm
+++ b/guix/progress.scm
@@ -197,7 +197,9 @@ object) and TRANSFERRED (a total number of bytes) to determine the
 throughput."
   (define elapsed
     (duration->seconds
-     (time-difference (current-time time-monotonic) start-time)))
+     (time-difference (current-time (time-type start-time))
+                      start-time)))
+
   (if (and (number? size) (not (zero? size)))
       (let* ((%  (* 100.0 (/ transferred size)))
              (throughput (/ transferred elapsed))
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 61ca4dca9f..ec58ba871b 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -836,11 +836,9 @@ build."
            (#t
             (match (package-source p)
               (#f
-               (format (current-error-port)
-                       (G_ "~a: warning: \
-package '~a' has no source~%")
-                       (location->string (package-location p))
-                       (package-name p))
+               (warning (package-location p)
+                        (G_ "package '~a' has no source~%")
+                        (package-name p))
                '())
               (s
                (list (package-source-derivation store s)))))
@@ -918,7 +916,8 @@ needed."
                                    '())))
                    (items (filter-map (match-lambda
                                         (('argument . (? store-path? file))
-                                         file)
+                                         (and (not (derivation-path? file))
+                                              file))
                                         (_ #f))
                                       opts))
                    (roots (filter-map (match-lambda
diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm
index 8fe81ad64b..2e14857f1e 100644
--- a/guix/scripts/graph.scm
+++ b/guix/scripts/graph.scm
@@ -254,8 +254,7 @@ GNU-BUILD-SYSTEM have zero dependencies."
   "Return the <derivation> objects and store items corresponding to the
 dependencies of OBJ, a <derivation> or store item."
   (if (derivation? obj)
-      (append (map (compose read-derivation-from-file derivation-input-path)
-                   (derivation-inputs obj))
+      (append (map derivation-input-derivation (derivation-inputs obj))
               (derivation-sources obj))
       '()))
 
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 5751123525..7b277b63f1 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -26,6 +26,7 @@
 (define-module (guix scripts package)
   #:use-module (guix ui)
   #:use-module ((guix status) #:select (with-status-verbosity))
+  #:use-module ((guix build syscalls) #:select (terminal-rows))
   #:use-module (guix store)
   #:use-module (guix grafts)
   #:use-module (guix derivations)
@@ -178,9 +179,9 @@ hooks\" run when building the profile."
 ;;;
 
 (define (find-packages-by-description regexps)
-  "Return two values: the list of packages whose name, synopsis, description,
-or output matches at least one of REGEXPS sorted by relevance, and the list of
-relevance scores."
+  "Return a list of pairs: packages whose name, synopsis, description,
+or output matches at least one of REGEXPS sorted by relevance, and its
+non-zero relevance score."
   (let ((matches (fold-packages (lambda (package result)
                                   (if (package-superseded package)
                                       result
@@ -189,19 +190,19 @@ relevance scores."
                                         ((? zero?)
                                          result)
                                         (score
-                                         (cons (list package score)
+                                         (cons (cons package score)
                                                result)))))
                                 '())))
-    (unzip2 (sort matches
-                  (lambda (m1 m2)
-                    (match m1
-                      ((package1 score1)
-                       (match m2
-                         ((package2 score2)
-                          (if (= score1 score2)
-                              (string>? (package-full-name package1)
-                                        (package-full-name package2))
-                              (> score1 score2)))))))))))
+    (sort matches
+          (lambda (m1 m2)
+            (match m1
+              ((package1 . score1)
+               (match m2
+                 ((package2 . score2)
+                  (if (= score1 score2)
+                      (string>? (package-full-name package1)
+                                (package-full-name package2))
+                      (> score1 score2))))))))))
 
 (define (transaction-upgrade-entry entry transaction)
   "Return a variant of TRANSACTION that accounts for the upgrade of ENTRY, a
@@ -755,16 +756,10 @@ processed, #f otherwise."
                                       (('query 'search rx) rx)
                                       (_                   #f))
                                     opts))
-              (regexps  (map (cut make-regexp* <> regexp/icase) patterns)))
+              (regexps  (map (cut make-regexp* <> regexp/icase) patterns))
+              (matches  (find-packages-by-description regexps)))
          (leave-on-EPIPE
-          (let-values (((packages scores)
-                        (find-packages-by-description regexps)))
-            (for-each (lambda (package score)
-                        (package->recutils package (current-output-port)
-                                           #:extra-fields
-                                           `((relevance . ,score))))
-                      packages
-                      scores)))
+          (display-search-results matches (current-output-port)))
          #t))
 
       (('show requested-name)
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index b4334b3f16..c716998a5b 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -724,6 +724,32 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
 (define %http-write
   (@@ (web server http) http-write))
 
+(match (list (major-version) (minor-version) (micro-version))
+  (("2" "2" "5")                                  ;Guile 2.2.5
+   (let ()
+     (define %read-line (@ (ice-9 rdelim) %read-line))
+     (define bad-header (@@ (web http) bad-header))
+
+     ;; XXX: Work around <https://bugs.gnu.org/36350> by reverting to the
+     ;; definition of 'read-header-line' as found in 2.2.4 and earlier.
+     (define (read-header-line port)
+       "Read an HTTP header line and return it without its final CRLF or LF.
+Raise a 'bad-header' exception if the line does not end in CRLF or LF,
+or if EOF is reached."
+       (match (%read-line port)
+         (((? string? line) . #\newline)
+          ;; '%read-line' does not consider #\return a delimiter; so if it's
+          ;; there, remove it.  We are more tolerant than the RFC in that we
+          ;; tolerate LF-only endings.
+          (if (string-suffix? "\r" line)
+              (string-drop-right line 1)
+              line))
+         ((line . _)                              ;EOF or missing delimiter
+          (bad-header 'read-header-line line))))
+
+     (set! (@@ (web http) read-header-line) read-header-line)))
+  (_ #t))
+
 (define (strip-headers response)
   "Return RESPONSE's headers minus 'Content-Length' and our internal headers."
   (fold alist-delete
diff --git a/guix/scripts/system/search.scm b/guix/scripts/system/search.scm
index 955cdd1e95..5278062edd 100644
--- a/guix/scripts/system/search.scm
+++ b/guix/scripts/system/search.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -139,9 +139,8 @@ columns."
      . 1)))
 
 (define (find-service-types regexps)
-  "Return two values: the list of service types whose name or description
-matches at least one of REGEXPS sorted by relevance, and the list of relevance
-scores."
+  "Return a list of service type/score pairs: service types whose name or
+description matches REGEXPS sorted by relevance, and their score."
   (let ((matches (fold-service-types
                   (lambda (type result)
                     (match (relevance type regexps
@@ -149,30 +148,25 @@ scores."
                       ((? zero?)
                        result)
                       (score
-                       (cons (list type score) result))))
+                       (cons (cons type score) result))))
                   '())))
-    (unzip2 (sort matches
-                  (lambda (m1 m2)
-                    (match m1
-                      ((type1 score1)
-                       (match m2
-                         ((type2 score2)
-                          (if (= score1 score2)
-                              (string>? (service-type-name* type1)
-                                        (service-type-name* type2))
-                              (> score1 score2)))))))))))
+    (sort matches
+          (lambda (m1 m2)
+            (match m1
+              ((type1 . score1)
+               (match m2
+                 ((type2 . score2)
+                  (if (= score1 score2)
+                      (string>? (service-type-name* type1)
+                                (service-type-name* type2))
+                      (> score1 score2))))))))))
 
 
 (define (guix-system-search . args)
   (with-error-handling
-    (let ((regexps (map (cut make-regexp* <> regexp/icase) args)))
+    (let* ((regexps (map (cut make-regexp* <> regexp/icase) args))
+           (matches (find-service-types regexps)))
       (leave-on-EPIPE
-       (let-values (((services scores)
-                     (find-service-types regexps)))
-         (for-each (lambda (service score)
-                     (service-type->recutils service
-                                             (current-output-port)
-                                             #:extra-fields
-                                             `((relevance . ,score))))
-                   services
-                   scores))))))
+       (display-search-results matches (current-output-port)
+                               #:print service-type->recutils
+                               #:command "guix system search")))))
diff --git a/guix/self.scm b/guix/self.scm
index 69e2381a8c..be90b60863 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -577,9 +577,6 @@ load path."
                    ,(file-append* source "/etc/completion/zsh/_guix"))
                   ("share/fish/vendor_completions.d/guix.fish"
                    ,(file-append* source "/etc/completion/fish/guix.fish"))
-                  ("share/guix/hydra.gnu.org.pub"
-                   ,(file-append* source
-                                  "/etc/substitutes/hydra.gnu.org.pub"))
                   ("share/guix/berlin.guixsd.org.pub"
                    ,(file-append* source
                                   "/etc/substitutes/berlin.guixsd.org.pub"))
diff --git a/guix/ui.scm b/guix/ui.scm
index 0b4fe144b6..6d243ef041 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -41,12 +41,12 @@
   #:use-module (guix packages)
   #:use-module (guix profiles)
   #:use-module (guix derivations)
-  #:use-module (guix combinators)
   #:use-module (guix build-system)
   #:use-module (guix serialization)
   #:use-module ((guix licenses) #:select (license? license-name))
   #:use-module ((guix build syscalls)
-                #:select (free-disk-space terminal-columns))
+                #:select (free-disk-space terminal-columns
+                                          terminal-rows))
   #:use-module ((guix build utils)
                 ;; XXX: All we need are the bindings related to
                 ;; '&invoke-error'.  However, to work around the bug described
@@ -106,8 +106,11 @@
             string->recutils
             package->recutils
             package-specification->name+version+output
+
             relevance
             package-relevance
+            display-search-results
+
             string->generations
             string->duration
             matching-generations
@@ -774,12 +777,19 @@ error."
             str))))
 
 (define (show-derivation-outputs derivation)
-  "Show the output file names of DERIVATION."
-  (format #t "~{~a~%~}"
-          (map (match-lambda
-                 ((out-name . out)
-                  (derivation->output-path derivation out-name)))
-               (derivation-outputs derivation))))
+  "Show the output file names of DERIVATION, which can be a derivation or a
+derivation input."
+  (define (show-outputs derivation outputs)
+    (format #t "~{~a~%~}"
+            (map (cut derivation->output-path derivation <>)
+                 outputs)))
+
+  (match derivation
+    ((? derivation?)
+     (show-outputs derivation (derivation-output-names derivation)))
+    ((? derivation-input? input)
+     (show-outputs (derivation-input-derivation input)
+                   (derivation-input-sub-derivations input)))))
 
 (define* (check-available-space need
                                 #:optional (directory (%store-prefix)))
@@ -809,40 +819,31 @@ warning."
                              #:key dry-run? (use-substitutes? #t)
                              (mode (build-mode normal)))
   "Show what will or would (depending on DRY-RUN?) be built in realizing the
-derivations listed in DRV using MODE, a 'build-mode' value.  Return #t if
-there's something to build, #f otherwise.  When USE-SUBSTITUTES?, check and
-report what is prerequisites are available for download."
+derivations listed in DRV using MODE, a 'build-mode' value.  The elements of
+DRV can be either derivations or derivation inputs.
+
+Return #t if there's something to build, #f otherwise.  When USE-SUBSTITUTES?,
+check and report what is prerequisites are available for download."
+  (define inputs
+    (map (match-lambda
+           ((? derivation? drv) (derivation-input drv))
+           ((? derivation-input? input) input))
+         drv))
+
   (define substitutable-info
     ;; Call 'substitutation-oracle' upfront so we don't end up launching the
     ;; substituter many times.  This makes a big difference, especially when
     ;; DRV is a long list as is the case with 'guix environment'.
     (if use-substitutes?
-        (substitution-oracle store drv #:mode mode)
+        (substitution-oracle store (map derivation-input-derivation inputs)
+                             #:mode mode)
         (const #f)))
 
-  (define (built-or-substitutable? drv)
-    (or (null? (derivation-outputs drv))
-        (let ((out (derivation->output-path drv))) ;XXX: assume "out" exists
-          (or (valid-path? store out)
-              (substitutable-info out)))))
-
   (let*-values (((build download)
-                 (fold2 (lambda (drv build download)
-                          (let-values (((b d)
-                                        (derivation-prerequisites-to-build
-                                         store drv
-                                         #:mode mode
-                                         #:substitutable-info
-                                         substitutable-info)))
-                            (values (append b build)
-                                    (append d download))))
-                        '() '()
-                        drv))
-                ((build)                          ; add the DRV themselves
-                 (delete-duplicates
-                  (append (map derivation-file-name
-                               (remove built-or-substitutable? drv))
-                          (map derivation-input-path build))))
+                 (derivation-build-plan store inputs
+                                        #:mode mode
+                                        #:substitutable-info
+                                        substitutable-info))
                 ((download)                   ; add the references of DOWNLOAD
                  (if use-substitutes?
                      (delete-duplicates
@@ -856,8 +857,8 @@ report what is prerequisites are available for download."
                                            download))))
                      download))
                 ((graft hook build)
-                 (match (fold (lambda (file acc)
-                                (let ((drv (read-derivation-from-file file)))
+                 (match (fold (lambda (drv acc)
+                                (let ((file (derivation-file-name drv)))
                                   (match acc
                                     ((#:graft graft #:hook hook #:build build)
                                      (cond
@@ -1246,6 +1247,11 @@ WIDTH columns.  EXTRA-FIELDS is a list of symbol/value pairs to emit."
             extra-fields)
   (newline port))
 
+
+;;;
+;;; Searching.
+;;;
+
 (define (relevance obj regexps metrics)
   "Compute a \"relevance score\" for OBJ as a function of its number of
 matches of REGEXPS and accordingly to METRICS.  METRICS is list of
@@ -1256,17 +1262,20 @@ weight of this field in the final score.
 A score of zero means that OBJ does not match any of REGEXPS.  The higher the
 score, the more relevant OBJ is to REGEXPS."
   (define (score str)
-    (let ((counts (map (lambda (regexp)
-                         (match (fold-matches regexp str '() cons)
-                           (()  0)
-                           ((m) (if (string=? (match:substring m) str)
-                                    5              ;exact match
-                                    1))
-                           (lst (length lst))))
-                       regexps)))
-      ;; Compute a score that's proportional to the number of regexps matched
-      ;; and to the number of matches for each regexp.
-      (* (length counts) (reduce + 0 counts))))
+    (define scores
+      (map (lambda (regexp)
+             (fold-matches regexp str 0
+                           (lambda (m score)
+                             (+ score
+                                (if (string=? (match:substring m) str)
+                                    5             ;exact match
+                                    1)))))
+           regexps))
+
+    ;; Return zero if one of REGEXPS doesn't match.
+    (if (any zero? scores)
+        0
+        (reduce + 0 scores)))
 
   (fold (lambda (metric relevance)
           (match metric
@@ -1312,6 +1321,45 @@ score, the more relevant OBJ is to REGEXPS."
 zero means that PACKAGE does not match any of REGEXPS."
   (relevance package regexps %package-metrics))
 
+(define* (display-search-results matches port
+                                 #:key
+                                 (command "guix search")
+                                 (print package->recutils))
+  "Display MATCHES, a list of object/score pairs, by calling PRINT on each of
+them.  If PORT is a terminal, print at most a full screen of results."
+  (define first-line
+    (port-line port))
+
+  (define max-rows
+    (and first-line (isatty? port)
+         (terminal-rows port)))
+
+  (define (line-count str)
+    (string-count str #\newline))
+
+  (let loop ((matches matches))
+    (match matches
+      (((package . score) rest ...)
+       (let ((text (call-with-output-string
+                     (lambda (port)
+                       (print package port
+                              #:extra-fields
+                              `((relevance . ,score)))))))
+         (if (and max-rows
+                  (> (port-line port) first-line) ;print at least one result
+                  (> (+ 4 (line-count text) (port-line port))
+                     max-rows))
+             (unless (null? rest)
+               (display-hint (format #f (G_ "Run @code{~a ... | less} \
+to view all the results.")
+                                     command)))
+             (begin
+               (display text port)
+               (loop rest)))))
+      (()
+       #t))))
+
+
 (define (string->generations str)
   "Return the list of generations matching a pattern in STR.  This function
 accepts the following patterns: \"1\", \"1,2,3\", \"1..9\", \"1..\", \"..9\"."
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 93f4cdd8ee..d173a78906 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -87,9 +87,11 @@
 (test-assert "parse & export"
   (let* ((f  (search-path %load-path "tests/test.drv"))
          (b1 (call-with-input-file f get-bytevector-all))
-         (d1 (read-derivation (open-bytevector-input-port b1)))
+         (d1 (read-derivation (open-bytevector-input-port b1)
+                              identity))
          (b2 (call-with-bytevector-output-port (cut write-derivation d1 <>)))
-         (d2 (read-derivation (open-bytevector-input-port b2))))
+         (d2 (read-derivation (open-bytevector-input-port b2)
+                              identity)))
     (and (equal? b1 b2)
          (equal? d1 d2))))
 
@@ -724,7 +726,7 @@
 (test-assert "build-expression->derivation and derivation-prerequisites"
   (let ((drv (build-expression->derivation %store "fail" #f)))
     (any (match-lambda
-          (($ <derivation-input> path)
+          (($ <derivation-input> (= derivation-file-name path))
            (string=? path (derivation-file-name (%guile-for-build)))))
          (derivation-prerequisites drv))))
 
@@ -741,7 +743,7 @@
     (match (derivation-prerequisites c
                                      (cut valid-derivation-input? %store
                                           <>))
-      ((($ <derivation-input> file ("out")))
+      ((($ <derivation-input> (= derivation-file-name file) ("out")))
        (string=? file (derivation-file-name b)))
       (x
        (pk 'fail x #f)))))
@@ -805,17 +807,20 @@
              ;; Ask for nothing but the "out" output of DRV.
              (build-derivations store `((,drv . "out")))
 
+             ;; Synonymous:
+             (build-derivations store (list (derivation-input drv '("out"))))
+
              (valid-path? store out)
-             (equal? (pk 'x content) (pk 'y (call-with-input-file out get-string-all)))
-             )))))
+             (equal? (pk 'x content)
+                     (pk 'y (call-with-input-file out get-string-all))))))))
 
-(test-assert "build-expression->derivation and derivation-prerequisites-to-build"
+(test-assert "build-expression->derivation and derivation-build-plan"
   (let ((drv (build-expression->derivation %store "fail" #f)))
     ;; The only direct dependency is (%guile-for-build) and it's already
     ;; built.
-    (null? (derivation-prerequisites-to-build %store drv))))
+    (null? (derivation-build-plan %store (derivation-inputs drv)))))
 
-(test-assert "derivation-prerequisites-to-build when outputs already present"
+(test-assert "derivation-build-plan when outputs already present"
   (let* ((builder    `(begin ,(random-text) (mkdir %output) #t))
          (input-drv  (build-expression->derivation %store "input" builder))
          (input-path (derivation->output-path input-drv))
@@ -828,9 +833,12 @@
               (valid-path? %store output))
       (error "things already built" input-drv))
 
-    (and (equal? (map derivation-input-path
-                      (derivation-prerequisites-to-build %store drv))
-                 (list (derivation-file-name input-drv)))
+    (and (lset= equal?
+                (map derivation-file-name
+                     (derivation-build-plan %store
+                                            (list (derivation-input drv))))
+                (list (derivation-file-name input-drv)
+                      (derivation-file-name drv)))
 
          ;; Build DRV and delete its input.
          (build-derivations %store (list drv))
@@ -839,9 +847,10 @@
 
          ;; Now INPUT-PATH is missing, yet it shouldn't be listed as a
          ;; prerequisite to build because DRV itself is already built.
-         (null? (derivation-prerequisites-to-build %store drv)))))
+         (null? (derivation-build-plan %store
+                                       (list (derivation-input drv)))))))
 
-(test-assert "derivation-prerequisites-to-build and substitutes"
+(test-assert "derivation-build-plan and substitutes"
   (let* ((store  (open-connection))
          (drv    (build-expression->derivation store "prereq-subst"
                                                (random 1000)))
@@ -853,17 +862,19 @@
 
     (with-derivation-narinfo drv
       (let-values (((build download)
-                    (derivation-prerequisites-to-build store drv))
+                    (derivation-build-plan store
+                                           (list (derivation-input drv))))
                    ((build* download*)
-                    (derivation-prerequisites-to-build store drv
-                                                       #:substitutable-info
-                                                       (const #f))))
+                    (derivation-build-plan store
+                                           (list (derivation-input drv))
+                                           #:substitutable-info
+                                           (const #f))))
         (and (null? build)
              (equal? (map substitutable-path download) (list output))
              (null? download*)
-             (null? build*))))))
+             (equal? (list drv) build*))))))
 
-(test-assert "derivation-prerequisites-to-build and substitutes, non-substitutable build"
+(test-assert "derivation-build-plan and substitutes, non-substitutable build"
   (let* ((store  (open-connection))
          (drv    (build-expression->derivation store "prereq-no-subst"
                                                (random 1000)
@@ -876,16 +887,16 @@
 
     (with-derivation-narinfo drv
       (let-values (((build download)
-                    (derivation-prerequisites-to-build store drv)))
+                    (derivation-build-plan store
+                                           (list (derivation-input drv)))))
         ;; Despite being available as a substitute, DRV will be built locally
         ;; due to #:substitutable? #f.
         (and (null? download)
              (match build
-               (((? derivation-input? input))
-                (string=? (derivation-input-path input)
-                          (derivation-file-name drv)))))))))
+               (((= derivation-file-name build))
+                (string=? build (derivation-file-name drv)))))))))
 
-(test-assert "derivation-prerequisites-to-build and substitutes, local build"
+(test-assert "derivation-build-plan and substitutes, local build"
   (with-store store
     (let* ((drv    (build-expression->derivation store "prereq-subst-local"
                                                  (random 1000)
@@ -898,7 +909,8 @@
 
       (with-derivation-narinfo drv
         (let-values (((build download)
-                      (derivation-prerequisites-to-build store drv)))
+                      (derivation-build-plan store
+                                             (list (derivation-input drv)))))
           ;; #:local-build? is *not* synonymous with #:substitutable?, so we
           ;; must be able to substitute DRV's output.
           ;; See <http://bugs.gnu.org/18747>.
@@ -907,7 +919,7 @@
                  (((= substitutable-path item))
                   (string=? item (derivation->output-path drv))))))))))
 
-(test-assert "derivation-prerequisites-to-build in 'check' mode"
+(test-assert "derivation-build-plan in 'check' mode"
   (with-store store
     (let* ((dep (build-expression->derivation store "dep"
                                               `(begin ,(random-text)
@@ -919,13 +931,13 @@
       (delete-paths store (list (derivation->output-path dep)))
 
       ;; In 'check' mode, DEP must be rebuilt.
-      (and (null? (derivation-prerequisites-to-build store drv))
-           (match (derivation-prerequisites-to-build store drv
-                                                     #:mode (build-mode
-                                                             check))
-             ((input)
-              (string=? (derivation-input-path input)
-                        (derivation-file-name dep))))))))
+      (and (null? (derivation-build-plan store
+                                         (list (derivation-input drv))))
+           (lset= equal?
+                  (derivation-build-plan store
+                                         (list (derivation-input drv))
+                                         #:mode (build-mode check))
+                  (list drv dep))))))
 
 (test-assert "substitution-oracle and #:substitute? #f"
   (with-store store
diff --git a/tests/grafts.scm b/tests/grafts.scm
index f85f3c6913..6fd3d5e171 100644
--- a/tests/grafts.scm
+++ b/tests/grafts.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,9 +45,6 @@
 (define %mkdir
   (bootstrap-binary "mkdir"))
 
-(define make-derivation-input
-  (@@ (guix derivations) make-derivation-input))
-
 
 (test-begin "grafts")
 
@@ -356,16 +353,11 @@
                 (p1r-inputs  (filter (match-input p1r) inputs))
                 (p2-inputs   (filter (match-input p2) inputs)))
            (and (equal? p1-inputs
-                        (list (make-derivation-input (derivation-file-name p1)
-                                                     '("one"))))
+                        (list (derivation-input p1 '("one"))))
                 (equal? p1r-inputs
-                        (list
-                         (make-derivation-input (derivation-file-name p1r)
-                                                '("ONE"))))
+                        (list (derivation-input p1r '("ONE"))))
                 (equal? p2-inputs
-                        (list
-                         (make-derivation-input (derivation-file-name p2)
-                                                '("aaa"))))
+                        (list (derivation-input p2 '("aaa"))))
                 (derivation-output-names p2g))))))
 
 (test-assert "graft-derivation, renaming"         ;<http://bugs.gnu.org/23132>
diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh
index ce82cfd1e6..78f82eafe2 100644
--- a/tests/guix-daemon.sh
+++ b/tests/guix-daemon.sh
@@ -196,7 +196,7 @@ done
 
 # Make sure garbage collection from a TCP connection does not work.
 
-tcp_socket="127.0.0.1:9999"
+tcp_socket="127.0.0.1:9998"
 guix-daemon --listen="$tcp_socket" &
 daemon_pid=$!
 
diff --git a/tests/packages.scm b/tests/packages.scm
index 613b2f1221..836d446657 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -1227,6 +1227,38 @@
     (lambda (key . args)
       key)))
 
+(test-equal "specification->package+output"
+  `((,coreutils "out") (,coreutils "debug"))
+  (list (call-with-values (lambda ()
+                            (specification->package+output "coreutils"))
+          list)
+        (call-with-values (lambda ()
+                            (specification->package+output "coreutils:debug"))
+          list)))
+
+(test-equal "specification->package+output invalid output"
+  'error
+  (catch 'quit
+    (lambda ()
+      (specification->package+output "coreutils:does-not-exist"))
+    (lambda _
+      'error)))
+
+(test-equal "specification->package+output no default output"
+  `(,coreutils #f)
+  (call-with-values
+    (lambda ()
+      (specification->package+output "coreutils" #f))
+    list))
+
+(test-equal "specification->package+output invalid output, no default"
+  'error
+  (catch 'quit
+    (lambda ()
+      (specification->package+output "coreutils:does-not-exist" #f))
+    (lambda _
+      'error)))
+
 (test-equal "find-package-locations"
   (map (lambda (package)
          (cons (package-version package)
diff --git a/tests/syscalls.scm b/tests/syscalls.scm
index 3e267c9f01..eeb223b950 100644
--- a/tests/syscalls.scm
+++ b/tests/syscalls.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -538,6 +538,9 @@
   (> (terminal-columns (open-input-string "Join us now, share the software!"))
      0))
 
+(test-assert "terminal-rows"
+  (> (terminal-rows) 0))
+
 (test-assert "utmpx-entries"
   (match (utmpx-entries)
     (((? utmpx? entries) ...)
diff --git a/tests/ui.scm b/tests/ui.scm
index 1e98e3534b..2138e23369 100644
--- a/tests/ui.scm
+++ b/tests/ui.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,10 +22,12 @@
   #:use-module (guix profiles)
   #:use-module (guix store)
   #:use-module (guix derivations)
+  #:use-module ((gnu packages) #:select (specification->package))
   #:use-module (guix tests)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-19)
+  #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-64)
   #:use-module (ice-9 regex))
 
@@ -260,4 +262,27 @@ Second line" 24))
                                                  "ISO-8859-1")
                              (show-manifest-transaction store m t))))))))
 
+(test-assert "package-relevance"
+  (let ((guile  (specification->package "guile"))
+        (gcrypt (specification->package "guile-gcrypt"))
+        (go     (specification->package "go"))
+        (gnugo  (specification->package "gnugo"))
+        (rx     (cut make-regexp <> regexp/icase))
+        (>0     (cut > <> 0))
+        (=0     zero?))
+    (and (>0 (package-relevance guile
+                                (map rx '("scheme"))))
+         (>0 (package-relevance guile
+                                (map rx '("scheme" "implementation"))))
+         (>0 (package-relevance gcrypt
+                                (map rx '("guile" "crypto"))))
+         (=0 (package-relevance guile
+                                (map rx '("guile" "crypto"))))
+         (>0 (package-relevance go
+                                (map rx '("go"))))
+         (=0 (package-relevance go
+                                (map rx '("go" "game"))))
+         (>0 (package-relevance gnugo
+                                (map rx '("go" "game")))))))
+
 (test-end "ui")