summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-02-20 17:19:00 +0100
committerMarius Bakke <mbakke@fastmail.com>2019-02-20 17:19:00 +0100
commit901236474a9523595c0bdefd5ac22366e78b9e61 (patch)
tree667efe648d584b0c960b0da0d577b8a71b6b941c /gnu
parent63d4ef52ebad4157817d56ccbe974da8fff81929 (diff)
parent64766d5cafd5cf19189ed274eb7e29ef784f90de (diff)
downloadguix-901236474a9523595c0bdefd5ac22366e78b9e61.tar.gz
Merge branch 'staging' into core-updates
Diffstat (limited to 'gnu')
-rw-r--r--gnu/installer/connman.scm2
-rw-r--r--gnu/installer/newt/keymap.scm2
-rw-r--r--gnu/installer/newt/page.scm2
-rw-r--r--gnu/installer/newt/timezone.scm5
-rw-r--r--gnu/installer/newt/utils.scm2
-rw-r--r--gnu/installer/newt/wifi.scm8
-rw-r--r--gnu/installer/parted.scm6
-rw-r--r--gnu/installer/timezone.scm10
-rw-r--r--gnu/local.mk26
-rw-r--r--gnu/packages.scm53
-rw-r--r--gnu/packages/admin.scm54
-rw-r--r--gnu/packages/aidc.scm29
-rw-r--r--gnu/packages/algebra.scm146
-rw-r--r--gnu/packages/assembly.scm12
-rw-r--r--gnu/packages/audio.scm38
-rw-r--r--gnu/packages/aux-files/chromium/master-preferences.json26
-rw-r--r--gnu/packages/backup.scm44
-rw-r--r--gnu/packages/base.scm5
-rw-r--r--gnu/packages/bioconductor.scm23
-rw-r--r--gnu/packages/bioinformatics.scm306
-rw-r--r--gnu/packages/bittorrent.scm22
-rw-r--r--gnu/packages/bootloaders.scm12
-rw-r--r--gnu/packages/busybox.scm6
-rw-r--r--gnu/packages/check.scm32
-rw-r--r--gnu/packages/chez.scm155
-rw-r--r--gnu/packages/chromium.scm705
-rw-r--r--gnu/packages/compression.scm77
-rw-r--r--gnu/packages/conky.scm18
-rw-r--r--gnu/packages/coq.scm81
-rw-r--r--gnu/packages/cran.scm150
-rw-r--r--gnu/packages/crypto.scm6
-rw-r--r--gnu/packages/cups.scm52
-rw-r--r--gnu/packages/curl.scm10
-rw-r--r--gnu/packages/databases.scm37
-rw-r--r--gnu/packages/debug.scm36
-rw-r--r--gnu/packages/dictionaries.scm2
-rw-r--r--gnu/packages/disk.scm32
-rw-r--r--gnu/packages/dlang.scm4
-rw-r--r--gnu/packages/dns.scm28
-rw-r--r--gnu/packages/docker.scm13
-rw-r--r--gnu/packages/documentation.scm13
-rw-r--r--gnu/packages/efi.scm10
-rw-r--r--gnu/packages/emacs-xyz.scm183
-rw-r--r--gnu/packages/engineering.scm9
-rw-r--r--gnu/packages/file-systems.scm4
-rw-r--r--gnu/packages/finance.scm168
-rw-r--r--gnu/packages/flashing-tools.scm20
-rw-r--r--gnu/packages/fonts.scm51
-rw-r--r--gnu/packages/ftp.scm8
-rw-r--r--gnu/packages/game-development.scm12
-rw-r--r--gnu/packages/games.scm74
-rw-r--r--gnu/packages/gd.scm11
-rw-r--r--gnu/packages/genimage.scm194
-rw-r--r--gnu/packages/geo.scm27
-rw-r--r--gnu/packages/gimp.scm16
-rw-r--r--gnu/packages/gl.scm6
-rw-r--r--gnu/packages/gnome.scm334
-rw-r--r--gnu/packages/gnupg.scm19
-rw-r--r--gnu/packages/gnuzilla.scm4
-rw-r--r--gnu/packages/gtk.scm29
-rw-r--r--gnu/packages/guile-xyz.scm101
-rw-r--r--gnu/packages/hardware.scm12
-rw-r--r--gnu/packages/ibus.scm145
-rw-r--r--gnu/packages/image-processing.scm8
-rw-r--r--gnu/packages/image-viewers.scm6
-rw-r--r--gnu/packages/image.scm42
-rw-r--r--gnu/packages/irc.scm8
-rw-r--r--gnu/packages/java.scm41
-rw-r--r--gnu/packages/kde-frameworks.scm337
-rw-r--r--gnu/packages/kde-plasma.scm228
-rw-r--r--gnu/packages/kde.scm101
-rw-r--r--gnu/packages/kodi.scm6
-rw-r--r--gnu/packages/libffi.scm6
-rw-r--r--gnu/packages/libreoffice.scm36
-rw-r--r--gnu/packages/linux.scm42
-rw-r--r--gnu/packages/lisp.scm15
-rw-r--r--gnu/packages/llvm.scm88
-rw-r--r--gnu/packages/lxqt.scm2
-rw-r--r--gnu/packages/machine-learning.scm3
-rw-r--r--gnu/packages/magic-wormhole.scm160
-rw-r--r--gnu/packages/mail.scm42
-rw-r--r--gnu/packages/maths.scm110
-rw-r--r--gnu/packages/maven.scm12
-rw-r--r--gnu/packages/mpi.scm27
-rw-r--r--gnu/packages/multiprecision.scm15
-rw-r--r--gnu/packages/music.scm18
-rw-r--r--gnu/packages/musl.scm12
-rw-r--r--gnu/packages/ncdu.scm6
-rw-r--r--gnu/packages/ncurses.scm8
-rw-r--r--gnu/packages/netpbm.scm4
-rw-r--r--gnu/packages/networking.scm46
-rw-r--r--gnu/packages/ocaml.scm228
-rw-r--r--gnu/packages/package-management.scm87
-rw-r--r--gnu/packages/parallel.scm6
-rw-r--r--gnu/packages/patches/allegro4-mesa-18.2.5-and-later.patch41
-rw-r--r--gnu/packages/patches/clang-7.0-libc-search-path.patch82
-rw-r--r--gnu/packages/patches/dealii-mpi-deprecations.patch28
-rw-r--r--gnu/packages/patches/doxygen-test.patch8
-rw-r--r--gnu/packages/patches/gd-CVE-2019-6977.patch36
-rw-r--r--gnu/packages/patches/gd-CVE-2019-6978.patch301
-rw-r--r--gnu/packages/patches/glibc-CVE-2018-11236.patch149
-rw-r--r--gnu/packages/patches/glibc-CVE-2018-11237.patch55
-rw-r--r--gnu/packages/patches/kio-search-smbd-on-PATH.patch2
-rw-r--r--gnu/packages/patches/ledger-revert-boost-python-fix.patch39
-rw-r--r--gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch15
-rw-r--r--gnu/packages/patches/pius.patch38
-rw-r--r--gnu/packages/patches/qtbase-old-kernel.patch25
-rw-r--r--gnu/packages/patches/red-eclipse-remove-gamma-name-hack.patch52
-rw-r--r--gnu/packages/patches/ruby-safe-yaml-add-require-time.patch19
-rw-r--r--gnu/packages/patches/runc-CVE-2019-5736.patch343
-rw-r--r--gnu/packages/patches/scalapack-blacs-mpi-deprecations.patch170
-rw-r--r--gnu/packages/patches/soundconverter-remove-gconf-dependency.patch104
-rw-r--r--gnu/packages/patches/tomsfastmath-constness.patch76
-rw-r--r--gnu/packages/patches/xf86-video-i128-remove-mibstore.patch23
-rw-r--r--gnu/packages/patches/xmodmap-asprintf.patch14
-rw-r--r--gnu/packages/pdf.scm17
-rw-r--r--gnu/packages/perl.scm17
-rw-r--r--gnu/packages/python-crypto.scm82
-rw-r--r--gnu/packages/python-web.scm116
-rw-r--r--gnu/packages/python-xyz.scm189
-rw-r--r--gnu/packages/python.scm62
-rw-r--r--gnu/packages/qt.scm33
-rw-r--r--gnu/packages/rails.scm372
-rw-r--r--gnu/packages/rdesktop.scm26
-rw-r--r--gnu/packages/rrdtool.scm6
-rw-r--r--gnu/packages/ruby.scm1777
-rw-r--r--gnu/packages/rust.scm16
-rw-r--r--gnu/packages/sagemath.scm59
-rw-r--r--gnu/packages/sdl.scm48
-rw-r--r--gnu/packages/search.scm6
-rw-r--r--gnu/packages/security-token.scm8
-rw-r--r--gnu/packages/simh.scm19
-rw-r--r--gnu/packages/skarnet.scm6
-rw-r--r--gnu/packages/statistics.scm23
-rw-r--r--gnu/packages/suckless.scm4
-rw-r--r--gnu/packages/sync.scm43
-rw-r--r--gnu/packages/terminals.scm55
-rw-r--r--gnu/packages/textutils.scm4
-rw-r--r--gnu/packages/tls.scm24
-rw-r--r--gnu/packages/tmux.scm23
-rw-r--r--gnu/packages/tor.scm7
-rw-r--r--gnu/packages/version-control.scm19
-rw-r--r--gnu/packages/video.scm62
-rw-r--r--gnu/packages/vim.scm12
-rw-r--r--gnu/packages/virtualization.scm16
-rw-r--r--gnu/packages/web-browsers.scm4
-rw-r--r--gnu/packages/web.scm103
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm66
-rw-r--r--gnu/packages/xdisorg.scm53
-rw-r--r--gnu/packages/xml.scm36
-rw-r--r--gnu/packages/xorg.scm123
-rw-r--r--gnu/services/desktop.scm109
-rw-r--r--gnu/services/xorg.scm121
-rw-r--r--gnu/system/vm.scm6
155 files changed, 8328 insertions, 2547 deletions
diff --git a/gnu/installer/connman.scm b/gnu/installer/connman.scm
index 740df7424a..ef8cca3952 100644
--- a/gnu/installer/connman.scm
+++ b/gnu/installer/connman.scm
@@ -299,7 +299,7 @@ to merge stdout and stderr using bash redirection. Then error messages are
 extracted from connmanctl output using a regexp. This makes the whole
 procedure even more unreliable.
 
-Raise &connman-connection-error if an error occured during connection. Raise
+Raise &connman-connection-error if an error occurred during connection. Raise
 &connman-password-error if the given password is incorrect."
 
   (define connman-error-regexp (make-regexp "Error[ ]*([^\n]+)\n"))
diff --git a/gnu/installer/newt/keymap.scm b/gnu/installer/newt/keymap.scm
index 6211af2bc5..3e765bfdd4 100644
--- a/gnu/installer/newt/keymap.scm
+++ b/gnu/installer/newt/keymap.scm
@@ -71,7 +71,7 @@
     (cut append <> <>)))
 
 (define (sort-variants variants)
-  "Sort VARIANTS list by putting the internation variant ahead and return it."
+  "Sort VARIANTS list by putting the international variant ahead and return it."
   (call-with-values
       (lambda ()
         (partition
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm
index edf0b8c999..23fbfcce76 100644
--- a/gnu/installer/newt/page.scm
+++ b/gnu/installer/newt/page.scm
@@ -188,7 +188,7 @@ If SORT-LISTBOX-ITEMS? is set to #t, the listbox items are sorted using
 'string<=' procedure (after being converted to text).
 
 If ALLOW-DELETE? is #t, the form will return if the <DELETE> key is pressed,
-otherwise nothing will happend.
+otherwise nothing will happen.
 
 Each time the listbox current item changes, call SKIP-ITEM-PROCEDURE? with the
 current listbox item as argument. If it returns #t, skip the element and jump
diff --git a/gnu/installer/newt/timezone.scm b/gnu/installer/newt/timezone.scm
index 6c96ee55b1..63b44af729 100644
--- a/gnu/installer/newt/timezone.scm
+++ b/gnu/installer/newt/timezone.scm
@@ -30,9 +30,6 @@
   #:use-module (newt)
   #:export (run-timezone-page))
 
-;; Heigth of the listbox displaying timezones.
-(define timezone-listbox-heigth (make-parameter 20))
-
 ;; Information textbox width.
 (define info-textbox-width (make-parameter 40))
 
@@ -53,7 +50,7 @@ returned."
 
   (define (run-page timezone-tree)
     (define (loop path)
-      (let ((timezones (locate-childrens timezone-tree path)))
+      (let ((timezones (locate-children timezone-tree path)))
         (run-listbox-selection-page
          #:title (G_ "Timezone")
          #:info-text (G_ "Please select a timezone.")
diff --git a/gnu/installer/newt/utils.scm b/gnu/installer/newt/utils.scm
index 1c2ce4e628..dfb113e0c6 100644
--- a/gnu/installer/newt/utils.scm
+++ b/gnu/installer/newt/utils.scm
@@ -30,7 +30,7 @@
 (define screen-rows    (make-parameter 0))
 
 (define (destroy-form-and-pop form)
-  "Destory the given FORM and pop the current window."
+  "Destroy the given FORM and pop the current window."
   (destroy-form form)
   (pop-window))
 
diff --git a/gnu/installer/newt/wifi.scm b/gnu/installer/newt/wifi.scm
index 59e40e327e..4cf5c128e7 100644
--- a/gnu/installer/newt/wifi.scm
+++ b/gnu/installer/newt/wifi.scm
@@ -100,7 +100,7 @@ nmc_wifi_strength_bars."
   "Run a page to inform user that a connection error happened."
   (run-error-page
    (format #f
-           (G_ "An error occured while trying to connect to ~a, please retry.")
+           (G_ "An error occurred while trying to connect to ~a, please retry.")
            service-name)
    (G_ "Connection error")))
 
@@ -160,8 +160,8 @@ of <service-item> records present in LISTBOX."
 ;; Maximum length of a wifi service name.
 (define service-name-max-length (make-parameter 20))
 
-;; Heigth of the listbox displaying wifi services.
-(define wifi-listbox-heigth (make-parameter 20))
+;; Height of the listbox displaying wifi services.
+(define wifi-listbox-height (make-parameter 20))
 
 ;; Information textbox width.
 (define info-textbox-width (make-parameter 40))
@@ -188,7 +188,7 @@ network when the corresponding listbox entry is selected. A button allow to
 force a wifi scan."
   (let* ((listbox (make-listbox
                    -1 -1
-                   (wifi-listbox-heigth)
+                   (wifi-listbox-height)
                    (logior FLAG-SCROLL FLAG-BORDER FLAG-RETURNEXIT)))
          (form (make-form))
          (buttons-grid (make-grid 1 1))
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 187311e633..642b8c6d8a 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -677,7 +677,7 @@ otherwise."
 (define* (mkpart disk user-partition
                  #:key (previous-partition #f))
   "Create the given USER-PARTITION on DISK. The PREVIOUS-PARTITION argument as
-to be set to the partition preceeding USER-PARTITION if any."
+to be set to the partition preceding USER-PARTITION if any."
 
   (define (parse-start-end start end)
     "Parse start and end strings as positions on DEVICE expressed with a unit,
@@ -734,8 +734,8 @@ cause them to cross."
                                     (< start-distance 3))
                                (+ start-sector start-offset)
                                start-sector)))
-       ;; This is a hackery but parted almost always fails to create optimally
-       ;; aligned partitions (unless specifiying percentages) because, the
+       ;; This is a hack.  Parted almost always fails to create optimally
+       ;; aligned partitions (unless specifying percentages) because the
        ;; default range of 1MB centered on the start sector is not enough when
        ;; the optimal alignment is 2048 sectors of 512KB.
        (extend-ranges! start-range end-range #:offset start-offset)
diff --git a/gnu/installer/timezone.scm b/gnu/installer/timezone.scm
index 32bc2ed6bb..c336b5f3ba 100644
--- a/gnu/installer/timezone.scm
+++ b/gnu/installer/timezone.scm
@@ -25,7 +25,7 @@
   #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:use-module (ice-9 receive)
-  #:export (locate-childrens
+  #:export (locate-children
             timezone->posix-tz
             timezone-has-child?
             zonetab->timezone-tree
@@ -94,15 +94,15 @@ timezones."
                     (loop (remove-first same-region))
                     (loop other-region))))))))
 
-(define (locate-childrens tree path)
-  "Return the childrens of the timezone indicated by PATH in the given
+(define (locate-children tree path)
+  "Return the children of the timezone indicated by PATH in the given
 TREE. Raise a condition if the PATH could not be found."
   (let ((extract-proc (cut map car <>)))
     (match path
       (() (sort (extract-proc tree) string<?))
       ((region . rest)
        (or (and=> (assoc-ref tree region)
-                  (cut locate-childrens <> rest))
+                  (cut locate-children <> rest))
            (raise
             (condition
              (&message
@@ -111,7 +111,7 @@ TREE. Raise a condition if the PATH could not be found."
 
 (define (timezone-has-child? tree timezone)
   "Return #t if the given TIMEZONE any child in TREE and #f otherwise."
-  (not (null? (locate-childrens tree timezone))))
+  (not (null? (locate-children tree timezone))))
 
 (define* (zonetab->timezone-tree zonetab)
   "Return the timezone tree corresponding to the given ZONETAB file."
diff --git a/gnu/local.mk b/gnu/local.mk
index 3f66beac14..e239c76c7c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -100,6 +100,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/check.scm			\
   %D%/packages/chemistry.scm			\
   %D%/packages/chez.scm				\
+  %D%/packages/chromium.scm			\
   %D%/packages/ci.scm				\
   %D%/packages/cinnamon.scm			\
   %D%/packages/clojure.scm			\
@@ -191,6 +192,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/gcc.scm				\
   %D%/packages/gd.scm				\
   %D%/packages/gdb.scm				\
+  %D%/packages/genimage.scm			\
   %D%/packages/geo.scm				\
   %D%/packages/gettext.scm			\
   %D%/packages/ghostscript.scm			\
@@ -253,8 +255,9 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/jrnl.scm				\
   %D%/packages/jose.scm				\
   %D%/packages/julia.scm			\
-  %D%/packages/kde.scm              \
+  %D%/packages/kde.scm				\
   %D%/packages/kde-frameworks.scm		\
+  %D%/packages/kde-plasma.scm			\
   %D%/packages/kerberos.scm			\
   %D%/packages/key-mon.scm			\
   %D%/packages/kodi.scm				\
@@ -294,6 +297,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/m4.scm				\
   %D%/packages/machine-learning.scm		\
   %D%/packages/man.scm				\
+  %D%/packages/magic-wormhole.scm		\
   %D%/packages/mail.scm				\
   %D%/packages/make-bootstrap.scm		\
   %D%/packages/markup.scm			\
@@ -635,7 +639,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/aegisub-boost68.patch                    \
   %D%/packages/patches/agg-am_c_prototype.patch			\
   %D%/packages/patches/allegro-mesa-18.2.5-and-later.patch	\
-  %D%/packages/patches/allegro4-mesa-18.2.5-and-later.patch	\
   %D%/packages/patches/amule-crypto-6.patch			\
   %D%/packages/patches/antiword-CVE-2014-8123.patch			\
   %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch	\
@@ -685,6 +688,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch	\
   %D%/packages/patches/clang-3.8-libc-search-path.patch		\
   %D%/packages/patches/clang-6.0-libc-search-path.patch		\
+  %D%/packages/patches/clang-7.0-libc-search-path.patch		\
   %D%/packages/patches/clang-runtime-asan-build-fixes.patch	\
   %D%/packages/patches/clang-runtime-esan-build-fixes.patch	\
   %D%/packages/patches/classpath-aarch64-support.patch		\
@@ -708,6 +712,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/cursynth-wave-rand.patch			\
   %D%/packages/patches/cvs-2017-12836.patch			\
   %D%/packages/patches/dbus-helper-search-path.patch		\
+  %D%/packages/patches/dealii-mpi-deprecations.patch		\
   %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch	\
   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
   %D%/packages/patches/diffutils-gets-undeclared.patch		\
@@ -793,6 +798,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcr-fix-collection-tests-to-work-with-gpg-21.patch	\
   %D%/packages/patches/gd-CVE-2018-5711.patch			\
   %D%/packages/patches/gd-CVE-2018-1000222.patch		\
+  %D%/packages/patches/gd-CVE-2019-6977.patch			\
+  %D%/packages/patches/gd-CVE-2019-6978.patch			\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
   %D%/packages/patches/gd-freetype-test-failure.patch		\
   %D%/packages/patches/gdm-CVE-2018-14424.patch			\
@@ -814,6 +821,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/glibc-CVE-2017-1000366-pt1.patch		\
   %D%/packages/patches/glibc-CVE-2017-1000366-pt2.patch		\
   %D%/packages/patches/glibc-CVE-2017-1000366-pt3.patch		\
+  %D%/packages/patches/glibc-CVE-2018-11236.patch		\
+  %D%/packages/patches/glibc-CVE-2018-11237.patch		\
   %D%/packages/patches/glibc-allow-kernel-2.6.32.patch		\
   %D%/packages/patches/glibc-boot-2.16.0.patch			\
   %D%/packages/patches/glibc-boot-2.2.5.patch			\
@@ -936,7 +945,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/ldc-bootstrap-disable-tests.patch	\
   %D%/packages/patches/ldc-disable-phobos-tests.patch		\
   %D%/packages/patches/ledger-fix-uninitialized.patch		\
-  %D%/packages/patches/ledger-revert-boost-python-fix.patch	\
   %D%/packages/patches/liba52-enable-pic.patch			\
   %D%/packages/patches/liba52-link-with-libm.patch		\
   %D%/packages/patches/liba52-set-soname.patch			\
@@ -1052,6 +1060,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mozjs38-tracelogger.patch		\
   %D%/packages/patches/mozjs38-version-detection.patch		\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
+  %D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \
   %D%/packages/patches/mumble-1.2.19-abs.patch			\
   %D%/packages/patches/mumps-build-parallelism.patch		\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
@@ -1126,7 +1135,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/pinentry-efl.patch			\
   %D%/packages/patches/pingus-boost-headers.patch		\
   %D%/packages/patches/pingus-sdl-libs-config.patch		\
-  %D%/packages/patches/pius.patch       			\
   %D%/packages/patches/pixman-CVE-2016-5296.patch		\
   %D%/packages/patches/plink-1.07-unclobber-i.patch		\
   %D%/packages/patches/plink-endian-detection.patch		\
@@ -1183,6 +1191,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qemu-CVE-2018-16872.patch 		\
   %D%/packages/patches/qemu-CVE-2019-6778.patch 		\
   %D%/packages/patches/qt4-ldflags.patch			\
+  %D%/packages/patches/qtbase-old-kernel.patch			\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
@@ -1199,6 +1208,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/rct-add-missing-headers.patch		\
   %D%/packages/patches/readline-link-ncurses.patch		\
   %D%/packages/patches/readline-6.2-CVE-2014-2524.patch		\
+  %D%/packages/patches/red-eclipse-remove-gamma-name-hack.patch	\
   %D%/packages/patches/reposurgeon-add-missing-docbook-files.patch	\
   %D%/packages/patches/reptyr-fix-gcc-7.patch			\
   %D%/packages/patches/ripperx-missing-file.patch		\
@@ -1209,13 +1219,16 @@ dist_patch_DATA =						\
   %D%/packages/patches/ruby-concurrent-ignore-broken-test.patch	\
   %D%/packages/patches/ruby-concurrent-test-arm.patch		\
   %D%/packages/patches/ruby-rack-ignore-failing-test.patch      \
+  %D%/packages/patches/ruby-safe-yaml-add-require-time.patch	\
   %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\
+  %D%/packages/patches/runc-CVE-2019-5736.patch			\
   %D%/packages/patches/rust-1.19-mrustc.patch			\
   %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-reproducible-builds.patch		 \
   %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
+  %D%/packages/patches/scalapack-blacs-mpi-deprecations.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
   %D%/packages/patches/scotch-build-parallelism.patch		\
   %D%/packages/patches/scotch-integer-declarations.patch	\
@@ -1273,7 +1286,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/tk-find-library.patch			\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
   %D%/packages/patches/ttfautohint-source-date-epoch.patch	\
-  %D%/packages/patches/tomsfastmath-constness.patch		\
   %D%/packages/patches/totem-meson-easy-codec.patch		\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/twinkle-include-qregexpvalidator.patch	\
@@ -1332,7 +1344,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/x265-arm-flags.patch			\
   %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
   %D%/packages/patches/xf86-video-geode-glibc-2.20.patch	\
-  %D%/packages/patches/xf86-video-i128-remove-mibstore.patch	\
   %D%/packages/patches/xf86-video-mach64-glibc-2.20.patch	\
   %D%/packages/patches/xf86-video-savage-xorg-compat.patch 	\
   %D%/packages/patches/xf86-video-siliconmotion-fix-ftbfs.patch \
@@ -1342,8 +1353,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-session-fix-xflock4.patch		\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xinetd-fix-fd-leak.patch			\
-  %D%/packages/patches/xinetd-CVE-2013-4342.patch		\
-  %D%/packages/patches/xmodmap-asprintf.patch
+  %D%/packages/patches/xinetd-CVE-2013-4342.patch
 
 MISC_DISTRO_FILES =				\
   %D%/packages/ld-wrapper.in
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 9cd57fc704..e484d9754f 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -375,34 +375,41 @@ reducing the memory footprint."
   (define cache-file
     (string-append directory %package-cache-file))
 
-  (define (expand-cache module symbol variable result)
+  (define (expand-cache module symbol variable result+seen)
     (match (false-if-exception (variable-ref variable))
       ((? package? package)
-       (if (hidden-package? package)
-           result
-           (cons `#(,(package-name package)
-                    ,(package-version package)
-                    ,(module-name module)
-                    ,symbol
-                    ,(package-outputs package)
-                    ,(->bool (member (%current-system)
-                                     (package-supported-systems package)))
-                    ,(->bool (package-superseded package))
-                    ,@(let ((loc (package-location package)))
-                        (if loc
-                            `(,(location-file loc)
-                              ,(location-line loc)
-                              ,(location-column loc))
-                            '(#f #f #f))))
-                 result)))
+       (match result+seen
+         ((result . seen)
+          (if (or (vhash-assq package seen)
+                  (hidden-package? package))
+              (cons result seen)
+              (cons (cons `#(,(package-name package)
+                             ,(package-version package)
+                             ,(module-name module)
+                             ,symbol
+                             ,(package-outputs package)
+                             ,(->bool
+                               (member (%current-system)
+                                       (package-supported-systems package)))
+                             ,(->bool (package-superseded package))
+                             ,@(let ((loc (package-location package)))
+                                 (if loc
+                                     `(,(location-file loc)
+                                       ,(location-line loc)
+                                       ,(location-column loc))
+                                     '(#f #f #f))))
+                          result)
+                    (vhash-consq package #t seen))))))
       (_
-       result)))
+       result+seen)))
 
   (define exp
-    (fold-module-public-variables* expand-cache '()
-                                   (all-modules (%package-module-path)
-                                                #:warn
-                                                warn-about-load-error)))
+    (first
+     (fold-module-public-variables* expand-cache
+                                    (cons '() vlist-null)
+                                    (all-modules (%package-module-path)
+                                                 #:warn
+                                                 warn-about-load-error))))
 
   (mkdir-p (dirname cache-file))
   (call-with-output-file cache-file
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index f4c34e10fe..24486cec18 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
@@ -285,26 +285,26 @@ graphs and can export its output to different formats.")
 
 (define-public htop
   (package
-   (name "htop")
-   (version "2.2.0")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "http://hisham.hm/htop/releases/"
-                  version "/htop-" version ".tar.gz"))
-            (sha256
-             (base32
-              "0mrwpb3cpn3ai7ar33m31yklj64c3pp576vh1naqff6f21pq5mnr"))))
-   (build-system gnu-build-system)
-   (inputs
-    `(("ncurses" ,ncurses)))
-   (native-inputs
-    `(("python" ,python-minimal-wrapper))) ; for scripts/MakeHeader.py
-   (home-page "https://hisham.hm/htop/")
-   (synopsis "Interactive process viewer")
-   (description
-    "This is htop, an interactive process viewer.  It is a text-mode
+    (name "htop")
+    (version "2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://hisham.hm/htop/releases/"
+                                  version "/htop-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0mrwpb3cpn3ai7ar33m31yklj64c3pp576vh1naqff6f21pq5mnr"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (native-inputs
+     `(("python" ,python-wrapper)))     ;for scripts/MakeHeader.py
+    (home-page "https://hisham.hm/htop/")
+    (synopsis "Interactive process viewer")
+    (description
+     "This is htop, an interactive process viewer.  It is a text-mode
 application (for console or X terminals) and requires ncurses.")
-   (license license:gpl2)))
+    (license license:gpl2)))
 
 (define-public pies
   (package
@@ -880,7 +880,7 @@ over ssh connections.")
 (define-public rename
   (package
     (name "rename")
-    (version "1.00")
+    (version "1.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -888,7 +888,7 @@ over ssh connections.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "03yhf8nmqsb0zyliv501fdvwlp589jqfn44yqkrflmpzrbik3zxl"))))
+                "137m8s06r4n038ivlr5r1d9a7q9l7shmwpvnyx053r9ndhvbnkh5"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -1602,14 +1602,14 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.7.6")
+    (version "2.7.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
         (base32
-         "0f7b2ghm34ql8yv90wr0ngd6w7wyvnlcxpc3snkj86kcjsnmx1bd"))))
+         "0l4id24jqi578xmybvwrz10sm2jhs90gk9gs1y04gfarz4vcj304"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
@@ -2715,8 +2715,9 @@ Python loading in HPC environments.")
            "1k9148xnfznch1443niaa3w1kmsw4vp0xpwna6npgmi7zqg06ymy"))))
       (build-system trivial-build-system)
       (inputs
-       `(("bash" ,bash)
-         ("perl" ,perl)))
+       `(("bash" ,bash-minimal)
+         ("perl" ,perl)
+         ("procps" ,procps)))
       (native-inputs
        `(("gzip" ,gzip)))
       (arguments
@@ -2789,7 +2790,6 @@ support forum.  It runs with the @code{/exec} command in most IRC clients.")
        ("lm-sensors" ,lm-sensors)
        ("mesa-utils" ,mesa-utils)
        ("pciutils" ,pciutils)
-       ("procps" ,procps)
        ("tar" ,tar)
        ("tree" ,tree)
        ("util-linux" ,util-linux)       ; lsblk
diff --git a/gnu/packages/aidc.scm b/gnu/packages/aidc.scm
index 64d26548c4..afcb33ad6d 100644
--- a/gnu/packages/aidc.scm
+++ b/gnu/packages/aidc.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 John Darringon <jmd@gnu.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +24,8 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages image)
   #:use-module (guix build-system gnu))
@@ -75,21 +77,28 @@ characters, and is highly robust.")
 (define-public libdmtx
   (package
     (name "libdmtx")
-    (version "0.7.4")
+    (version "0.7.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "mirror://sourceforge/libdmtx/" name "/" version "/"
-             name "-" version ".tar.bz2"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dmtx/libdmtx.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0xnxx075ycy58n92yfda2z9zgd41h3d4ik5d9l197lzsqim5hb5n"))))
+        (base32 "0wk3fkxzf9ip75v8ia54v6ywx72ajp5s6777j4ay8barpbv869rj"))))
     (build-system gnu-build-system)
+    (arguments
+     ;; XXX Test suite is broken: https://github.com/dmtx/libdmtx/issues/22
+     `(#:tests? #f))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://libdmtx.sourceforge.net/")
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/dmtx")
     (synopsis "Library for reading and writing Data Matrix 2D barcodes")
     (description "libdmtx is software for reading and writing Data Matrix 2D
-barcodes on Linux and Unix.  At its core libdmtx is a shared library, allowing
+barcodes of the modern ECC200 variety.  libdmtx is a shared library, allowing
 C/C++ programs to use its capabilities without restrictions or overhead.")
     (license license:bsd-3)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 52eb6ee366..f9ae22b3f3 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
@@ -856,3 +856,147 @@ xtensor provides:
 @item tools to manipulate array expressions and build upon xtensor.
 @end itemize")
     (license license:bsd-3)))
+
+(define-public gap
+  (package
+    (name "gap")
+    (version "4.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.gap-system.org/pub/gap/gap-"
+                           (version-major+minor version)
+                           "/tar.bz2/gap-"
+                           version
+                           ".tar.bz2"))
+       (sha256
+        (base32
+         "1dmb8v4p7j1nnf7sx8sg54b49yln36bi9acwp7w1d3a1nxj17ird"))
+       (modules '((guix build utils) (ice-9 ftw) (srfi srfi-1)))
+       (snippet
+        '(begin
+           ;; Delete the external gmp and zlib libraries
+           ;; and a subdirectory not needed for our build.
+           (for-each delete-file-recursively
+                     '("extern" "hpcgap"))
+           ;; Delete a failing test.
+           ;; FIXME: This might be fixed in the next release, see
+           ;; https://github.com/gap-system/gap/issues/3292
+           (delete-file "tst/testinstall/dir.tst")
+           ;; Delete all packages except for a fixed list.
+           (with-directory-excursion "pkg"
+             (for-each delete-file-recursively
+               (lset-difference string=? (scandir ".")
+                 '("." ".."
+                   ;; Necessary packages.
+                   "GAPDoc-1.6.2"
+                   "primgrp-3.3.2"
+                   "SmallGrp-1.3"    ; artistic2.0
+                   "transgrp"        ; artistic2.0 for data,
+                                     ; gpl2 or gpl3 for code
+                   ;; Recommanded package.
+                   "io-4.5.4"        ; gpl3+
+                   ;; Optional packages, searched for at start,
+                   ;; and their depedencies.
+                   "alnuth-3.1.0"
+                   "AutoDoc-2018.09.20"
+                   "autpgrp-1.10"
+                   "crisp-1.4.4"     ; bsd-2
+                   ; "ctbllib"       ; no explicit license, drop
+                   "FactInt-1.6.2"
+                   "fga"
+                   "irredsol-1.4"    ; bsd-2
+                   "laguna-3.9.0"
+                   "polenta-1.3.8"
+                   "polycyclic-2.14"
+                   "radiroot-2.8"
+                   "resclasses-4.7.1"
+                   "sophus-1.24"
+                   ; "tomlib-1.2.7"  ; no explicit license, drop
+                   "utils-0.59"))))
+           #t))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("gmp" ,gmp)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-packages
+           ;; Compile all packages that have not been deleted by the
+           ;; code snippet above.
+           (lambda _
+             (setenv "CONFIG_SHELL" (which "bash"))
+             (with-directory-excursion "pkg"
+               (invoke "../bin/BuildPackages.sh")
+             #t)))
+         (add-after 'build-packages 'build-doc
+           ;; The documentation is bundled, but we create it from source.
+           (lambda _
+             (with-directory-excursion "doc"
+               (invoke "./make_doc"))
+             #t))
+         (replace 'check
+           (lambda _
+             ;; "make check" is expected to appear in gap-4.10.1
+             (invoke "./gap" "tst/testinstall.g")
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (prog (string-append bin "/gap"))
+                    (prog-real (string-append bin "/.gap-real"))
+                    (share (string-append out "/share/gap"))
+                    (include (string-append out "/include/gap")))
+               ;; Install only the gap binary; the gac compiler is left
+               ;; for maybe later. "Wrap" it in a shell script that calls
+               ;; the binary with the correct parameter.
+               (mkdir-p bin)
+               (copy-file "gap" prog-real)
+               (call-with-output-file prog
+                 (lambda (port)
+                   (format port
+                           "#!~a~%exec ~a -l ~a \"$@\"~%"
+                           (which "bash")
+                           prog-real
+                           share)))
+               (chmod prog #o755)
+               ;; Install the headers and the library, which are needed by
+               ;; Sage. The Makefile targets are available in gap-4.10.0,
+               ;; but planned to be removed in gap-4.10.1.
+               (invoke "make" "install-headers")
+               (invoke "make" "install-libgap")
+               (install-file "gen/config.h" include)
+               ;; Install a certain number of files and directories to
+               ;; SHARE, where the wrapped shell script expects them.
+               ;; Remove information on the build directory from sysinfo.gap.
+               (substitute* "sysinfo.gap"
+                 (("GAP_BIN_DIR=\".*\"") "GAP_BIN_DIR=\"\"")
+                 (("GAP_LIB_DIR=\".*\"") "GAP_LIB_DIR=\"\"")
+                 (("GAP_CPPFLAGS=\".*\"") "GAP_CPPFLAGS=\"\""))
+               (install-file "sysinfo.gap" share)
+               (copy-recursively "grp" (string-append share "/grp"))
+               (copy-recursively "pkg" (string-append share "/pkg"))
+               ;; The following is not the C library libgap.so, but a
+               ;; library of GAP code.
+               (copy-recursively "lib" (string-append share "/lib"))
+               ;; The gap binary looks for documentation inside SHARE.
+               (copy-recursively "doc" (string-append share "/doc")))
+             #t)))))
+    (home-page "https://www.gap-system.org/")
+    (synopsis
+     "System for computational group theory")
+    (description
+     "GAP is a system for computational discrete algebra, with particular
+emphasis on computational group theory.  It provides a programming language,
+a library of thousands of functions implementing algebraic algorithms
+written in the GAP language as well as large data libraries of algebraic
+objects.")
+    ;; Some packages have different licenses (effectively forcing the
+    ;; combined work to be licensed as gpl3+); if this is the case, this
+    ;; is mentioned above next to their name.
+    ;; Some packages have no license mentioned explicitly; supposedly this
+    ;; means that the gpl2+ licence of GAP itself applies, but to be on the
+    ;; safe side, we drop them for now.
+    (license license:gpl2+)))
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 9b8ef562d3..0de2183b88 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -129,7 +129,7 @@ to the clients.")
 (define-public fasm
   (package
     (name "fasm")
-    (version "1.73.06")
+    (version "1.73.08")
     (source
      (origin
        (method url-fetch)
@@ -137,14 +137,14 @@ to the clients.")
                            version ".tgz"))
        (sha256
         (base32
-         "02wqkqxpn3p0iwcagsm92qd9cdfcnbx8a09qg03b3pjppp30hmp6"))))
+         "1l4my3fran06h5jiygswx4fsj53dvpfgg9ksfbdzsdg20r672997"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; No tests exist
-       #:strip-binaries? #f ; fasm has no sections
+     `(#:tests? #f                      ; no tests exist
+       #:strip-binaries? #f             ; fasm has no sections
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure) ; no "configure" script exists
+         (delete 'configure)            ; no "configure" script
          (replace 'build
            (lambda _
              (chdir "source/Linux/")
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 12755dd7a7..ae0dddeb66 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1374,7 +1375,20 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
        (list
         ;; Add the output lib directory to the RUNPATH.
         (string-append "--ldflags=-Wl,-rpath=" %output "/lib")
-        "--cxxflags=-std=c++11")))
+        "--cxxflags=-std=c++11")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-boost-includes
+           (lambda _
+             (substitute* "src/headers/gx_internal_plugins.h"
+               (("namespace gx_jack" m)
+                (string-append "#include <boost/noncopyable.hpp>\n" m)))
+             (substitute* '("src/headers/gx_system.h"
+                            "src/headers/gx_parameter.h"
+                            "src/headers/gx_json.h")
+               (("namespace gx_system" m)
+                (string-append "#include <boost/noncopyable.hpp>\n" m)))
+             #t)))))
     (inputs
      `(("libsndfile" ,libsndfile)
        ("boost" ,boost)
@@ -2446,18 +2460,17 @@ the Turtle syntax.")
 (define-public suil
   (package
     (name "suil")
-    (version "0.10.0")
+    (version "0.10.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.drobilla.net/suil-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0j489gm3fhnmwmbgw30bvd4byw1vsy4yazdlnji8jzhcz0qwb5cq"))))
+               "00d43m0nai63ajb7rkm9v084jcih206y17ib3160zcvzc885ji4z"))))
     (build-system waf-build-system)
     (arguments
-     `(#:tests? #f ; no check target
-       #:python ,python-2 ;XXX: The bundled waf does not work with Python 3.7.0.
+     `(#:tests? #f        ; no check target
        #:configure-flags
        '("CXXFLAGS=-std=gnu++11")))
     (inputs
@@ -3207,7 +3220,7 @@ with support for HD extensions.")
 (define-public bs1770gain
   (package
     (name "bs1770gain")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
@@ -3215,11 +3228,20 @@ with support for HD extensions.")
                            version "/bs1770gain-" version ".tar.gz"))
        (sha256
         (base32
-         "0r4fbajgfmnwgl63hcm56f1j8m5f135q6j5jkzdvrrhpcj39yx06"))))
+         "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; XXX
+           (substitute* "bs1770gain/bs1770gain.c"
+             (("\"N.*\"") "\"\""))
+           (substitute* "configure"
+             (("URL=.*$")
+              "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html\n"))))))
     (build-system gnu-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("sox" ,sox)))
-    (home-page "http://bs1770gain.sourceforge.net/")
+    (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
     (synopsis "Tool to adjust loudness of media files")
     (description
      "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
diff --git a/gnu/packages/aux-files/chromium/master-preferences.json b/gnu/packages/aux-files/chromium/master-preferences.json
new file mode 100644
index 0000000000..5a2049fa72
--- /dev/null
+++ b/gnu/packages/aux-files/chromium/master-preferences.json
@@ -0,0 +1,26 @@
+{
+    "distribution": {
+        "import_bookmarks": false,
+        "make_chrome_default": false,
+        "make_chrome_default_for_user": false,
+        "verbose_logging": true,
+        "skip_first_run_ui": true,
+        "suppress_first_run_default_browser_prompt": true
+    },
+    "browser": {
+        "has_seen_welcome_page" : true,
+        "check_default_browser" : false
+    },
+    "dns_prefetching": {
+        "enabled": false
+    },
+    "alternate_error_pages": {
+        "enabled": false
+    },
+    "hardware": {
+        "audio_capture_enabled": false
+    },
+    "default_apps": "noinstall",
+    "hide_web_store_icon": true,
+    "homepage": "https://www.gnu.org/software/guix/"
+}
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 45b1be2413..5da7475150 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -46,6 +46,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages datastructures)
   #:use-module (gnu packages dbm)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages ftp)
@@ -495,14 +496,14 @@ detection, and lossless compression.")
 (define-public borg
   (package
     (name "borg")
-    (version "1.1.8")
+    (version "1.1.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "borgbackup" version))
        (sha256
         (base32
-         "0qqvcscn1l4y83x4sh3izdpmr8zq38j8chjkpfq4q4d01i470hqb"))
+         "0x95nhv4h34m8cxycbwc4xdz350saaxlgh727b23bgn4ci7gh3vx"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -548,11 +549,6 @@ detection, and lossless compression.")
                ;; HOME=/homeless-shelter.
                (setenv "HOME" "/tmp")
                #t)))
-         (add-after 'unpack 'remove-documentation-timestamps ; reproducibility
-           (lambda _
-             (substitute* "setup.py"
-               (("write\\(':Date:'.*") "\n"))
-             #t))
          ;; The tests need to be run after Borg is installed.
          (delete 'check)
          (add-after 'install 'check
@@ -589,17 +585,12 @@ detection, and lossless compression.")
                          '("docs/misc/create_chunker-params.txt"
                            "docs/misc/internals-picture.txt"
                            "docs/misc/prune-example.txt"))
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python3" "setup.py" "build_man")
                (copy-recursively "docs/man" man)
                #t))))))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-setuptools-scm" ,python-setuptools-scm)
-       ("python-pytest" ,python-pytest)
-       ;; For generating the documentation.
-       ("python-sphinx" ,python-sphinx)
-       ("python-guzzle-sphinx-theme" ,python-guzzle-sphinx-theme)))
+       ("python-pytest" ,python-pytest)))
     (inputs
      `(("acl" ,acl)
        ("libb2" ,libb2)
@@ -985,3 +976,30 @@ de-duplicated before it is actually written to the storage back end to save
 precious backup space.
 @end itemize")
     (license license:bsd-2)))
+
+(define-public burp
+  (package
+    (name "burp")
+    (version "2.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/burp/burp-" version
+                                  "/burp-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0in49c0ir7lb7jli0fcphdq1nh5rclhans4ngm7z7hzyxa4jrgri"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("librsync" ,librsync)
+       ("openssl" ,openssl)
+       ("uthash" ,uthash)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("check" ,check)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://burp.grke.org")
+    (synopsis "Differential backup and restore")
+    (description "Burp is a network backup and restore program.  It attempts
+to reduce network traffic and the amount of space that is used by each
+backup.")
+    (license license:agpl3)))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index c3db665e98..289631acee 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -860,7 +860,10 @@ with the Linux kernel.")
                                        "glibc-versioned-locpath.patch"
                                        "glibc-allow-kernel-2.6.32.patch"
                                        "glibc-reinstate-prlimit64-fallback.patch"
-				       "glibc-supported-locales.patch"))))))
+                                       "glibc-supported-locales.patch"
+                                       "glibc-CVE-2018-11236.patch"
+                                       "glibc-CVE-2018-11237.patch"))))
+    (properties `((lint-hidden-cve . ("CVE-2017-18269")))))) ; glibc-2.27-git-fixes
 
 (define-public glibc-2.26
   (package
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 20aabb0be4..9057158cde 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu packages bioinformatics)
   #:use-module (gnu packages cran)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages graph)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages statistics)
@@ -1176,3 +1177,25 @@ Viewer (SAV) files, access data, and generate QC plots.")
      "This package provides a quality control pipeline for ChIP-exo/nexus
 sequencing data.")
     (license license:gpl2+)))
+
+(define-public r-dnacopy
+  (package
+    (name "r-dnacopy")
+    (version "1.56.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "DNAcopy" version))
+       (sha256
+        (base32
+         "04cqdqxhva66xwh1s2vffi56b9fcrqd4slcrvqasj5lp2rkjli82"))))
+    (properties `((upstream-name . "DNAcopy")))
+    (build-system r-build-system)
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://bioconductor.org/packages/DNAcopy")
+    (synopsis "DNA copy number data analysis")
+    (description
+     "This package implements the @dfn{circular binary segmentation} (CBS)
+algorithm to segment DNA copy number data and identify genomic regions with
+abnormal copy number.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 02cafb2358..5dc3945035 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -612,16 +613,22 @@ intended to behave exactly the same as the original BWK awk.")
 (define-public python-pybedtools
   (package
     (name "python-pybedtools")
-    (version "0.7.10")
+    (version "0.8.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pybedtools" version))
               (sha256
                (base32
-                "0l2b2wrnj85azfqgr0zwr60f7j58vlla1hcgxvr9rwikpl8j72ji"))))
+                "1xl454ijvd4dzfvqgfahad49b49j7qy710fq9xh1rvk42z6x5ssf"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:modules ((ice-9 ftw)
+                  (srfi srfi-1)
+                  (srfi srfi-26)
+                  (guix build utils)
+                  (guix build python-build-system))
+       ;; See https://github.com/daler/pybedtools/issues/192
+       #:phases
        (modify-phases %standard-phases
          ;; See https://github.com/daler/pybedtools/issues/261
          (add-after 'unpack 'disable-broken-tests
@@ -631,21 +638,59 @@ intended to behave exactly the same as the original BWK awk.")
              (substitute* "pybedtools/test/test_scripts.py"
                (("def test_venn_mpl")
                 "def _do_not_test_venn_mpl"))
-             ;; Requires internet access.
              (substitute* "pybedtools/test/test_helpers.py"
+               ;; Requires internet access.
                (("def test_chromsizes")
-                "def _do_not_test_chromsizes"))
-             ;; FIXME: these two fail for no good reason.
-             (substitute* "pybedtools/test/test1.py"
-               (("def test_issue_157")
-                "def _do_not_test_issue_157")
-               (("def test_to_dataframe")
-                "def _do_not_test_to_dataframe"))
-             #t)))))
-    (propagated-inputs
-     ;; Tests don't pass with Bedtools 2.27.1.
-     ;; See https://github.com/daler/pybedtools/issues/260
-     `(("bedtools" ,bedtools-2.26)
+                "def _do_not_test_chromsizes")
+               ;; Broken as a result of the workaround used in the check phase
+               ;; (see: https://github.com/daler/pybedtools/issues/192).
+               (("def test_getting_example_beds")
+                "def _do_not_test_getting_example_beds"))
+             #t))
+         ;; TODO: Remove phase after it's part of PYTHON-BUILD-SYSTEM.
+         ;; build system.
+         ;; Force the Cythonization of C++ files to guard against compilation
+         ;; problems.
+         (add-after 'unpack 'remove-cython-generated-files
+           (lambda _
+             (let ((cython-sources (map (cut string-drop-right <> 4)
+                                        (find-files "." "\\.pyx$")))
+                   (c/c++-files (find-files "." "\\.(c|cpp|cxx)$")))
+               (define (strip-extension filename)
+                 (string-take filename (string-index-right filename #\.)))
+               (define (cythonized? c/c++-file)
+                 (member (strip-extension c/c++-file) cython-sources))
+               (for-each delete-file (filter cythonized? c/c++-files))
+               #t)))
+         (add-after 'remove-cython-generated-files 'generate-cython-extensions
+           (lambda _
+             (invoke "python" "setup.py" "cythonize")))
+         (replace 'check
+           (lambda _
+             (let* ((cwd (getcwd))
+                    (build-root-directory (string-append cwd "/build/"))
+                    (build (string-append
+                            build-root-directory
+                            (find (cut string-prefix? "lib" <>)
+                                  (scandir (string-append
+                                            build-root-directory)))))
+                    (scripts (string-append
+                              build-root-directory
+                              (find (cut string-prefix? "scripts" <>)
+                                    (scandir build-root-directory)))))
+               (setenv "PYTHONPATH"
+                       (string-append build ":" (getenv "PYTHONPATH")))
+               ;; Executable scripts such as 'intron_exon_reads.py' must be
+               ;; available in the PATH.
+               (setenv "PATH"
+                       (string-append scripts ":" (getenv "PATH"))))
+             ;; The tests need to be run from elsewhere...
+             (mkdir-p "/tmp/test")
+             (copy-recursively "pybedtools/test" "/tmp/test")
+             (with-directory-excursion "/tmp/test"
+               (invoke "pytest")))))))
+    (propagated-inputs
+     `(("bedtools" ,bedtools)
        ("samtools" ,samtools)
        ("python-matplotlib" ,python-matplotlib)
        ("python-pysam" ,python-pysam)
@@ -654,9 +699,11 @@ intended to behave exactly the same as the original BWK awk.")
      `(("python-numpy" ,python-numpy)
        ("python-pandas" ,python-pandas)
        ("python-cython" ,python-cython)
-       ("python-nose" ,python-nose)
-       ("kentutils" ,kentutils) ; for bedGraphToBigWig
-       ("python-six" ,python-six)))
+       ("kentutils" ,kentutils)         ; for bedGraphToBigWig
+       ("python-six" ,python-six)
+       ;; For the test suite.
+       ("python-pytest" ,python-pytest)
+       ("python-psutil" ,python-psutil)))
     (home-page "https://pythonhosted.org/pybedtools/")
     (synopsis "Python wrapper for BEDtools programs")
     (description
@@ -667,34 +714,7 @@ Python.")
     (license license:gpl2+)))
 
 (define-public python2-pybedtools
-  (let ((pkg (package-with-python2 python-pybedtools)))
-    (package (inherit pkg)
-      (arguments
-       `(#:modules ((ice-9 ftw)
-                    (srfi srfi-1)
-                    (srfi srfi-26)
-                    (guix build utils)
-                    (guix build python-build-system))
-         ;; See https://github.com/daler/pybedtools/issues/192
-         ,@(substitute-keyword-arguments (package-arguments pkg)
-             ((#:phases phases)
-              `(modify-phases ,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"))))
-                     ;; The tests need to be run from elsewhere...
-                     (mkdir-p "/tmp/test")
-                     (copy-recursively "pybedtools/test" "/tmp/test")
-                     (with-directory-excursion "/tmp/test"
-                       (invoke "nosetests"
-                               ;; This test fails for unknown reasons
-                               "--exclude=.*test_getting_example_beds"))
-                     #t))))))))))
+  (package-with-python2 python-pybedtools))
 
 (define-public python-biom-format
   (package
@@ -4345,130 +4365,6 @@ interrupted by stop codons.  OrfM finds and prints these ORFs.")
     (home-page "https://github.com/wwood/OrfM")
     (license license:lgpl3+)))
 
-(define-public pplacer
-  (let ((commit "807f6f3"))
-    (package
-      (name "pplacer")
-      ;; The commit should be updated with each version change.
-      (version "1.1.alpha19")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/matsen/pplacer.git")
-               (commit (string-append "v" version))))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
-      (build-system ocaml-build-system)
-      (arguments
-       `(#:ocaml ,ocaml-4.01
-         #:findlib ,ocaml4.01-findlib
-         #:modules ((guix build ocaml-build-system)
-                    (guix build utils)
-                    (ice-9 ftw))
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (add-after 'unpack 'replace-bundled-cddlib
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let* ((cddlib-src (assoc-ref inputs "cddlib-src"))
-                      (local-dir "cddlib_guix"))
-                 (mkdir local-dir)
-                 (with-directory-excursion local-dir
-                   (invoke "tar" "xvf" cddlib-src))
-                 (let ((cddlib-src-folder
-                        (string-append local-dir "/"
-                                       (list-ref (scandir local-dir) 2)
-                                       "/lib-src")))
-                   (for-each make-file-writable (find-files "cdd_src" ".*"))
-                   (for-each
-                    (lambda (file)
-                      (copy-file file
-                                 (string-append "cdd_src/" (basename file))))
-                    (find-files cddlib-src-folder ".*[ch]$")))
-                 #t)))
-           (add-after 'unpack 'fix-makefile
-             (lambda _
-               ;; Remove system calls to 'git'.
-               (substitute* "Makefile"
-                 (("^DESCRIPT:=pplacer-.*")
-                  (string-append
-                   "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n")))
-               (substitute* "myocamlbuild.ml"
-                 (("git describe --tags --long .*\\\" with")
-                  (string-append
-                   "echo -n v" ,version "-" ,commit "\" with")))
-               #t))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin")))
-                 (copy-recursively "bin" bin))
-               #t)))))
-      (native-inputs
-       `(("zlib" ,zlib)
-         ("gsl" ,gsl)
-         ("ocaml-ounit" ,ocaml4.01-ounit)
-         ("ocaml-batteries" ,ocaml4.01-batteries)
-         ("ocaml-camlzip" ,ocaml4.01-camlzip)
-         ("ocaml-csv" ,ocaml4.01-csv)
-         ("ocaml-sqlite3" ,ocaml4.01-sqlite3)
-         ("ocaml-xmlm" ,ocaml4.01-xmlm)
-         ("ocaml-mcl" ,ocaml4.01-mcl)
-         ("ocaml-gsl" ,ocaml4.01-gsl)
-         ("cddlib-src" ,(package-source cddlib))))
-      (propagated-inputs
-       `(("pplacer-scripts" ,pplacer-scripts)))
-      (synopsis "Phylogenetic placement of biological sequences")
-      (description
-       "Pplacer places query sequences on a fixed reference phylogenetic tree
-to maximize phylogenetic likelihood or posterior probability according to a
-reference alignment.  Pplacer is designed to be fast, to give useful
-information about uncertainty, and to offer advanced visualization and
-downstream analysis.")
-      (home-page "http://matsen.fhcrc.org/pplacer")
-      (license license:gpl3))))
-
-;; This package is installed alongside 'pplacer'.  It is a separate package so
-;; that it can use the python-build-system for the scripts that are
-;; distributed alongside the main OCaml binaries.
-(define pplacer-scripts
-  (package
-    (inherit pplacer)
-    (name "pplacer-scripts")
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'enter-scripts-dir
-           (lambda _ (chdir "scripts") #t))
-         (replace 'check
-           (lambda _ (invoke "python" "-m" "unittest" "discover" "-v") #t))
-         (add-after 'install 'wrap-executables
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin")))
-               (let ((path (string-append
-                            (assoc-ref inputs "hmmer") "/bin:"
-                            (assoc-ref inputs "infernal") "/bin")))
-                 (display path)
-                 (wrap-program (string-append bin "/refpkg_align.py")
-                   `("PATH" ":" prefix (,path))))
-               (let ((path (string-append
-                            (assoc-ref inputs "hmmer") "/bin")))
-                 (wrap-program (string-append bin "/hrefpkg_query.py")
-                   `("PATH" ":" prefix (,path)))))
-             #t)))))
-    (inputs
-     `(("infernal" ,infernal)
-       ("hmmer" ,hmmer)))
-    (propagated-inputs
-     `(("python-biopython" ,python2-biopython)
-       ("taxtastic" ,taxtastic)))
-    (synopsis "Pplacer Python scripts")))
-
 (define-public python2-pbcore
   (package
     (name "python2-pbcore")
@@ -11172,7 +11068,7 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
     (native-inputs
      `(("ldc" ,ldc)
        ("rdmd" ,rdmd)
-       ("python" ,python-minimal)
+       ("python" ,python)
        ("biod"
         ,(let ((commit "4f1a7d2fb7ef3dfe962aa357d672f354ebfbe42e"))
            (origin
@@ -14441,3 +14337,69 @@ Nanopolish can calculate an improved consensus sequence for a draft genome
 assembly, detect base modifications, call SNPs (Single nucleotide
 polymorphisms) and indels with respect to a reference genome and more.")
       (license license:expat))))
+
+(define-public cnvkit
+  (package
+    (name "cnvkit")
+    (version "0.9.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/etal/cnvkit.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0g2f78k68yglmj4fsfmgs8idqv3di9aj53fg0ld0hqljg8chhh82"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-biopython" ,python-biopython)
+       ("python-future" ,python-future)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)
+       ("python-reportlab" ,python-reportlab)
+       ("python-pandas" ,python-pandas)
+       ("python-pysam" ,python-pysam)
+       ("python-pyfaidx" ,python-pyfaidx)
+       ("python-scipy" ,python-scipy)
+       ;; R packages
+       ("r-dnacopy" ,r-dnacopy)))
+    (home-page "https://cnvkit.readthedocs.org/")
+    (synopsis "Copy number variant detection from targeted DNA sequencing")
+    (description
+     "CNVkit is a Python library and command-line software toolkit to infer
+and visualize copy number from high-throughput DNA sequencing data.  It is
+designed for use with hybrid capture, including both whole-exome and custom
+target panels, and short-read sequencing platforms such as Illumina and Ion
+Torrent.")
+    (license license:asl2.0)))
+
+(define-public python-pyfit-sne
+  (package
+    (name "python-pyfit-sne")
+    (version "1.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/KlugerLab/pyFIt-SNE.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13wh3qkzs56azmmgnxib6xfr29g7xh09sxylzjpni5j0pp0rc5qw"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (inputs
+     `(("fftw" ,fftw)))
+    (native-inputs
+     `(("python-cython" ,python-cython)))
+    (home-page "https://github.com/KlugerLab/pyFIt-SNE")
+    (synopsis "FFT-accelerated Interpolation-based t-SNE")
+    (description
+     "t-Stochastic Neighborhood Embedding (t-SNE) is a highly successful
+method for dimensionality reduction and visualization of high dimensional
+datasets.  A popular implementation of t-SNE uses the Barnes-Hut algorithm to
+approximate the gradient at each iteration of gradient descent.  This package
+is a Cython wrapper for FIt-SNE.")
+    (license license:bsd-4)))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 00b115cb9c..d96610a791 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
@@ -426,16 +426,16 @@ desktops.")
 (define-public qbittorrent
   (package
     (name "qbittorrent")
-    (version "4.1.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/qbittorrent/qBittorrent/archive/release-"
-                    version ".tar.gz"))
-              (file-name (string-append name "-release-" version ".tar.gz"))
-              (sha256
-               (base32
-                "00zrpnwanq9f7maky2z4wnzw08xy902s77scm2gcvxxxankr4j92"))))
+    (version "4.1.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/qbittorrent/qBittorrent.git")
+             (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "09zcygaxfv9g6av0vsvlyzv4v65wvj766xyfx31yz5ig3xan6ak1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index a566001b07..b0617f452a 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 nee <nee@cock.li>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -773,7 +773,7 @@ tools, and more.")
 (define-public os-prober
   (package
     (name "os-prober")
-    (version "1.76")
+    (version "1.77")
     (source
      (origin
        (method url-fetch)
@@ -781,15 +781,15 @@ tools, and more.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1vb45i76bqivlghrq7m3n07qfmmq4wxrkplqx8gywj011rhq19fk"))))
+         "0pvhrw4h05n21zw7ig3a3bi8aqdh6zxs0x1znz4g7vhspsps93ld"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
-                  (ice-9 regex)   ; for string-match
-                  (srfi srfi-26)) ; for cut
+                  (ice-9 regex)         ; for string-match
+                  (srfi srfi-26))       ; for cut
        #:make-flags (list "CC=gcc")
-       #:tests? #f ; no tests
+       #:tests? #f                      ; no tests
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 09812d4a49..20a2e5aabf 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -108,7 +108,7 @@ any small or embedded system.")
 (define-public toybox
   (package
     (name "toybox")
-    (version "0.7.8")
+    (version "0.8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -116,7 +116,7 @@ any small or embedded system.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1mlqv5hsvy8ii6m698hq6rc316klwv44jlr034knwg6bk1lf2qj9"))))
+                "0mirj977zxsxnfaiqndwgsn9calgg312d817fi1hkfbd8kcyrk73"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 2e9103ab90..7ba0b9c208 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -16,7 +16,7 @@
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -286,7 +286,7 @@ format.")
 (define-public cppcheck
   (package
     (name "cppcheck")
-    (version "1.86")
+    (version "1.87")
     (source (origin
       (method git-fetch)
       (uri (git-reference
@@ -294,7 +294,7 @@ format.")
              (commit version)))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "0jr4aah72c7wy94a8vlj3k050rx6pmc7m9nvmll1jwbscxj5f7ff"))))
+       (base32 "1xiy54rz99nzbpwj35jiyssd2nc6k5k0lw5ml6nh2qnmbfkl8swl"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags '("-DBUILD_TESTS=ON")))
@@ -694,23 +694,22 @@ and many external plugins.")
 (define-public python-pytest-cov
   (package
     (name "python-pytest-cov")
-    (version "2.6.0")
+    (version "2.6.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pytest-cov" version))
         (sha256
-         (base32
-          "0qnpp9y3ygx4jk4pf5ad71fh2skbvnr6gl54m7rg5qysnx4g0q73"))))
+         (base32 "0cyxbbghx2l4p60w10k00j1j74q1ngfiffr0pxn73ababjr69dha"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
           (lambda _
-            ;; options taken from tox.ini
+            ;; Options taken from tox.ini.
             ;; TODO: make "--restructuredtext" tests pass. They currently fail
-            ;; with "Duplicate implicit target name"
+            ;; with "Duplicate implicit target name".
             (invoke "python" "./setup.py" "check"
                     "--strict" "--metadata"))))))
     (propagated-inputs
@@ -755,14 +754,14 @@ supports coverage of subprocesses.")
 (define-public python-pytest-mock
   (package
     (name "python-pytest-mock")
-    (version "1.10.0")
+    (version "1.10.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pytest-mock" version))
         (sha256
          (base32
-          "1h6lgpmsvs9s8j2s80v06f9f3iaw1n1rc51mbrxk1f12sw4q56nq"))))
+          "1i5mg3ff1qk0wqfcxfz60hwy3q5dskdp36i10ckigkzffg8hc3ad"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-setuptools-scm" ,python-setuptools-scm)))
@@ -1905,14 +1904,13 @@ JSON APIs with Behave.")
 (define-public python-nose-randomly
   (package
     (name "python-nose-randomly")
-    (version "1.2.5")
+    (version "1.2.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "nose-randomly" version))
        (sha256
-        (base32
-         "1cw9dlr1zh3w4i438kin7z0rm8092ki52hayisyc43h9pcplq7rn"))))
+        (base32 "0z662rqhfk4bjmg806mn4frb8nz4gbh7mrddsrhfffp1g4yklj3y"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose" ,python-nose)
@@ -2140,7 +2138,7 @@ provides a simple way to achieve this.")
 (define-public umockdev
   (package
     (name "umockdev")
-    (version "0.11.3")
+    (version "0.12.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/martinpitt/umockdev/"
@@ -2148,7 +2146,7 @@ provides a simple way to achieve this.")
                                   "umockdev-" version ".tar.xz"))
               (sha256
                (base32
-                "1in2hdan1g62wpvgjlj8mci85551ipr1964j2b9j06gm3blpihcx"))))
+                "1hx5jm9afng6hw9wyp524z8nwdp6w053pca0w2c0gqpgrmvjxvd2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -2161,8 +2159,8 @@ provides a simple way to achieve this.")
              #t)))))
     (native-inputs
      `(("vala" ,vala)
-       ("python" ,python) ; for tests
-       ("which" ,which) ; for tests
+       ("python" ,python)               ; for tests
+       ("which" ,which)                 ; for tests
        ("gtk-doc" ,gtk-doc)
        ("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 10601f0bfa..7d0042872e 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,22 +42,22 @@
 (define nanopass
   (let ((version "1.9"))
     (origin
-      (method url-fetch)
-      (uri (string-append
-            "https://github.com/nanopass/nanopass-framework-scheme/archive"
-            "/v" version ".tar.gz"))
-      (sha256 (base32 "11pwyy4jiwhcl2am3a4ciczacjbjkyvdizqzdglb3l1hj2gj6nv2"))
-      (file-name (string-append "nanopass-" version ".tar.gz")))))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/nanopass/nanopass-framework-scheme.git")
+            (commit (string-append "v" version))))
+      (sha256 (base32 "0lrngdna6w7v9vlp1a873hgwrwsz2p0pgkccswa4smzvdyhgfsri"))
+      (file-name (git-file-name "nanopass" version)))))
 
 (define stex
   (let ((version "1.2.1"))
     (origin
-      (method url-fetch)
-      (uri (string-append
-            "https://github.com/dybvig/stex/archive"
-            "/v" version ".tar.gz"))
-      (sha256 (base32 "03pl3f668h24dn51vccr1sj5lsba9zq3j37bnxjvdadcdaj4qy5z"))
-      (file-name (string-append "stex-" version ".tar.gz")))))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/dybvig/stex.git")
+            (commit (string-append "v" version))))
+      (sha256 (base32 "1jiawhhqnsj42hzmlbq5xby3iarhf8vhiqs0kg1a0zg5jsn6cf8n"))
+      (file-name (git-file-name "stex" version)))))
 
 (define-public chez-scheme
   (package
@@ -65,12 +65,13 @@
     (version "9.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cisco/ChezScheme/archive/"
-                           "v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cisco/ChezScheme.git")
+             (commit (string-append "v" version))))
        (sha256
-        (base32 "135991hspq0grf26pvl2lkwhp92yz204h6rgiwyym0x6v0xzknd1"))
-       (file-name (string-append "chez-scheme-" version ".tar.gz"))
+        (base32 "132fal5hwiq0bqzvfhjsqr4d11cfdh1670f6286ks29xxj1c04zq"))
+       (file-name (git-file-name name version))
        (modules '((guix build utils)))
        (snippet
         ;; Fix compilation with glibc >= 2.26, which removed xlocale.h.
@@ -122,7 +123,8 @@
              ;; next one; see <https://github.com/cisco/ChezScheme/issues/209>.
              (substitute* "csug/copyright.stex"
                (("\\\\INSERTREVISIONMONTHSPACEYEAR" )
-                "October 2017"))))     ; tarball release date
+                "October 2017"))       ; tarball release date
+             #t))
          ;; Adapt the custom 'configure' script.
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -140,9 +142,9 @@
                          (apply unpack (list #:source src))
                          (apply patch-source-shebangs (list #:source src)))
                        (delete-file-recursively new-name)
-                       (system* "mv" orig-name new-name)))
-                    `((,nanopass "nanopass-framework-scheme-1.9" "nanopass")
-                      (,stex "stex-1.2.1" "stex")))
+                       (invoke "mv" orig-name new-name)))
+                    `((,nanopass "source" "nanopass")
+                      (,stex "source" "stex")))
                ;; The Makefile wants to download and compile "zlib".  We patch
                ;; it to use the one from our 'zlib' package.
                (substitute* "configure"
@@ -174,23 +176,24 @@
                  (("/bin/true") (which "true")))
                (substitute* "stex/Makefile"
                  (("PREFIX=/usr") (string-append "PREFIX=" out)))
-               (zero? (system* "./configure" "--threads"
-                               (string-append "--installprefix=" out))))))
+               (invoke "./configure" "--threads"
+                       (string-append "--installprefix=" out)))))
          ;; Installation of the documentation requires a running "chez".
          (add-after 'install 'install-doc
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
-                   (doc (string-append (assoc-ref outputs "doc")
+             (let ((doc (string-append (assoc-ref outputs "doc")
                                        "/share/doc/" ,name "-" ,version)))
-               (setenv "HOME" (getcwd))
-               (setenv "PATH" (string-append (getenv "PATH") ":" bin))
-               (with-directory-excursion "stex"
-                 (system* "make" (string-append "BIN=" bin)))
-               (system* "make" "docs")
+               (invoke "make" "docs")
                (with-directory-excursion "csug"
                  (substitute* "Makefile"
-                   (("/tmp/csug9") doc))
-                 (system* "make" "install")
+                   ;; The ‘installdir=’ can't be overruled on the command line.
+                   (("/tmp/csug9") doc)
+                   ;; $m is the ‘machine type’, e.g. ‘ta6le’ on x86_64, but is
+                   ;; set incorrectly for some reason, e.g. to ‘a6le’ on x86_64.
+                   ;; Avoid the whole mess by running the (machine-independent)
+                   ;; ‘installsh’ script at its original location.
+                   (("\\$m/installsh") "makefiles/installsh"))
+                 (invoke "make" "install")
                  (install-file "csug.pdf" doc))
                (with-directory-excursion "release_notes"
                  (install-file "release_notes.pdf" doc))
@@ -237,13 +240,13 @@ and 32-bit PowerPC architectures.")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/fedeinthemix/chez-srfi/archive"
-             "/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fedeinthemix/chez-srfi.git")
+             (commit (string-append "v" version))))
        (sha256
-        (base32 "17i4wly7bcr5kb5hf04ljpbvv4r5hsr9xsmw650fj43z9jr303gs"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1vgn984mj2q4w6r2q66h7qklp2hrh85wwh4k9yisga5fi0ps7myf"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
      `(("chez-scheme" ,chez-scheme)))
@@ -264,16 +267,15 @@ and 32-bit PowerPC architectures.")
         (revision "1"))
     (package
       (name "chez-web")
-      ;; release 2.0 is different and doesn't work.
-      (version (string-append "2.0-" revision "."
-                              (string-take commit 7)))
+      ;; Release 2.0 is different and doesn't work.
+      (version (git-version "2.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/arcfide/ChezWEB.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32 "1dq25qygyncbfq4kwwqqgyyakfqjwhp5q23vrf3bff1p66nyfl3b"))))
       (build-system gnu-build-system)
@@ -318,7 +320,8 @@ and 32-bit PowerPC architectures.")
                               (("\\./chezweave" all)
                                (string-append "chez-scheme --program " all)))
                             (substitute* "installit"
-                              (("-g \\$GROUP -o \\$OWNER") "")))))))
+                              (("-g \\$GROUP -o \\$OWNER") ""))
+                            #t)))))
       (home-page "https://github.com/arcfide/ChezWEB")
       (synopsis "Hygienic Literate Programming for Chez Scheme")
       (description "ChezWEB is a system for doing Knuthian style WEB
@@ -330,15 +333,14 @@ programming in Scheme.")
         (revision "1"))
     (package
       (name "chez-sockets")
-      (version (string-append "0.0-" revision "."
-                              (string-take commit 7)))
+      (version (git-version "0.0.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/arcfide/chez-sockets.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32 "1n5fbwwz51fdzvjackgmnsgh363g9inyxv7kmzi0469cwavwcx5m"))))
       (build-system gnu-build-system)
@@ -435,11 +437,13 @@ Chez Scheme.")
     (home-page "https://github.com/fedeinthemix/chez-matchable")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append home-page "/archive" "/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
        (sha256
-        (base32 "0cl4vc6487pikjq159pj4n5ghyaax31nywb5n4yn1682h3ir1hs0"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "02qn7x348p23z1x5lwhkyj7i8z6mgwpzpnwr8dyina0yzsdkr71s"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
      `(("chez-srfi" ,chez-srfi))) ; for tests
@@ -462,13 +466,13 @@ Chez Scheme.")
     (version "0.9.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/fedeinthemix/chez-irregex/archive"
-             "/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fedeinthemix/chez-irregex.git")
+             (commit (string-append "v" version))))
        (sha256
-        (base32 "0ywy5syaw549a58viz68dmgnv756ic705rcnlqxgjq27lnaim53b"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "0jh6piylw545j81llay9wfivgpv6lcnwd81gm4w17lkasslir50q"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
      `(("chez-matchable" ,chez-matchable))) ; for tests
@@ -514,10 +518,10 @@ syntax, with various aliases for commonly used patterns.")
          (replace 'configure ,chez-configure)
          (replace 'build
            (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (zero? (apply system* "make" "chez-build" make-flags))))
+             (apply invoke "make" "chez-build" make-flags)))
          (replace 'install
            (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (zero? (apply system* "make" "chez-install" make-flags)))))))
+             (apply invoke "make" "chez-install" make-flags))))))
     (home-page "http://synthcode.com/scheme/fmt")
     (synopsis "Combinator formatting library for Chez Scheme")
     (description "This package provides a library of procedures for
@@ -534,14 +538,16 @@ strings.")
     (home-page "https://github.com/fedeinthemix/chez-mit")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append home-page "/archive/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
        (sha256
-        (base32 "1p11q061znwxzxrxg3vw4dbsnpv1dav12hjhnkrjnzyyjvvdm2kn"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "0c7i3b6i90xk96nmxn1pc9272a4yal4v40dm1a4ybdi87x53zkk0"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
-     `(("chez-srfi" ,chez-srfi))) ; for tests
+     `(("chez-srfi" ,chez-srfi)))       ; for tests
     (native-inputs
      `(("chez-scheme" ,chez-scheme)))
     (arguments
@@ -562,14 +568,16 @@ required to port the program 'Scmutils' to Chez Scheme.")
     (home-page "https://github.com/fedeinthemix/chez-scmutils")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append home-page "/archive/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
        (sha256
-        (base32 "1a5j61pggaiwl1gl6m038rcy5n8r2sj5nyjmz86jydx97mm5i8hj"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "0lb05wlf8qpgg8y0gdsyaxg1nbfx1qbaqdjvygrp64ndn8fnhq7l"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
-     `(("chez-srfi" ,chez-srfi)))      ; for tests
+     `(("chez-srfi" ,chez-srfi)))       ; for tests
     (native-inputs
      `(("chez-scheme" ,chez-scheme)))
     (propagated-inputs
@@ -577,7 +585,7 @@ required to port the program 'Scmutils' to Chez Scheme.")
        ("chez-srfi" ,chez-srfi)))
     (arguments
      `(#:make-flags ,(chez-make-flags name version)
-       #:tests? #f ; no test suite
+       #:tests? #f                      ; no test suite
        #:phases
        (modify-phases %standard-phases
          (replace 'configure ,chez-configure)
@@ -589,7 +597,7 @@ required to port the program 'Scmutils' to Chez Scheme.")
          (delete 'build)
          (add-after 'install 'install-src
            (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (zero? (apply system* "make" "install-src" make-flags))))
+             (apply invoke "make" "install-src" make-flags)))
          (add-after 'install-src 'absolute-path-in-scm-files
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -609,12 +617,13 @@ required to port the program 'Scmutils' to Chez Scheme.")
              (let* ((out (assoc-ref outputs "out"))
                     (mk-file (car (find-files out "Makefile"))))
                (with-directory-excursion (dirname mk-file)
-                 (zero? (apply system* "make" "build" make-flags))))))
+                 (apply invoke "make" "build" make-flags)))))
          (add-after 'build 'clean-up
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out")))
                (for-each delete-file
-                         (find-files out "Makefile|compile-all\\.ss"))))))))
+                         (find-files out "Makefile|compile-all\\.ss"))
+               #t))))))
     (synopsis "Port of MIT/GNU Scheme Scmutils to Chez Scheme")
     (description "This package provides a port of the MIT/GNU Scheme
 Scmutils program to Chez Scheme.  The port consists of a set of
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
new file mode 100644
index 0000000000..1594bfeb60
--- /dev/null
+++ b/gnu/packages/chromium.scm
@@ -0,0 +1,705 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages chromium)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:use-module (guix monads)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages kerberos)
+  #:use-module (gnu packages ninja)
+  #:use-module (gnu packages node)
+  #:use-module (gnu packages pciutils)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages regex)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages speech)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages vulkan)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg))
+
+(define %preserved-third-party-files
+  '("base/third_party/dmg_fp" ;X11-style
+    "base/third_party/dynamic_annotations" ;BSD-2
+    "base/third_party/icu" ;Unicode, X11-style
+    "base/third_party/superfasthash" ;BSD-3
+    "base/third_party/symbolize" ;BSD-3
+    "base/third_party/xdg_mime" ;LGPL2.0+ or Academic 2.0
+    "base/third_party/xdg_user_dirs" ;Expat
+    "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
+    "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
+    "courgette/third_party/divsufsort" ;Expat
+    "net/third_party/http2" ;BSD-3
+    "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
+    "net/third_party/nss" ;MPL-2.0
+    "net/third_party/quic" ;BSD-3
+    "net/third_party/spdy" ;BSD-3
+    "net/third_party/uri_template" ;ASL2.0
+    "third_party/abseil-cpp" ;ASL2.0
+    "third_party/adobe/flash/flapper_version.h" ;no license, trivial
+    "third_party/angle" ;BSD-3
+    "third_party/angle/src/common/third_party/base" ;BSD-3
+    "third_party/angle/src/common/third_party/smhasher" ;Public domain
+    "third_party/angle/src/common/third_party/xxhash" ;BSD-2
+    "third_party/angle/src/third_party/compiler" ;BSD-2
+    "third_party/angle/src/third_party/libXNVCtrl" ;Expat
+    "third_party/angle/src/third_party/trace_event" ;BSD-3
+    "third_party/angle/third_party/glslang" ;BSD-3
+    "third_party/angle/third_party/spirv-headers" ;Expat
+    "third_party/angle/third_party/spirv-tools" ;Expat
+    "third_party/angle/third_party/vulkan-headers" ;ASL2.0
+    "third_party/angle/third_party/vulkan-loader" ;ASL2.0
+    "third_party/angle/third_party/vulkan-tools" ;ASL2.0
+    "third_party/angle/third_party/vulkan-validation-layers" ;ASL2.0
+    "third_party/apple_apsl" ;APSL2.0
+    "third_party/blink" ;BSD-3, LGPL2+
+    "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
+    "third_party/boringssl/src/third_party/fiat" ;Expat
+    "third_party/breakpad" ;BSD-3
+    "third_party/brotli" ;Expat
+    "third_party/cacheinvalidation" ;ASL2.0
+    "third_party/catapult" ;BSD-3
+    "third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
+    "third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
+    "third_party/catapult/third_party/polymer" ;BSD-3
+    "third_party/catapult/tracing/third_party/d3" ;BSD-3
+    "third_party/catapult/tracing/third_party/gl-matrix" ;Expat
+    "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3
+    "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat
+    "third_party/catapult/tracing/third_party/oboe" ;BSD-2
+    "third_party/catapult/tracing/third_party/pako" ;Expat
+    "third_party/ced" ;BSD-3
+    "third_party/cld_3" ;ASL2.0
+    "third_party/crashpad" ;ASL2.0
+    "third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
+    "third_party/crc32c" ;BSD-3
+    "third_party/cros_system_api" ;BSD-3
+    "third_party/dom_distiller_js" ;BSD-3
+    "third_party/fips181" ;BSD-3
+    "third_party/flatbuffers" ;ASL2.0
+    "third_party/google_input_tools" ;ASL2.0
+    "third_party/google_input_tools/third_party/closure_library" ;ASL2.0
+    "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
+    "third_party/googletest" ;BSD-3
+    "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
+    "third_party/iccjpeg" ;IJG
+    "third_party/inspector_protocol" ;BSD-3
+    "third_party/jinja2" ;BSD-3
+    "third_party/jstemplate" ;ASL2.0
+    "third_party/khronos" ;Expat, SGI
+    "third_party/leveldatabase" ;BSD-3
+    "third_party/libXNVCtrl" ;Expat
+    "third_party/libaddressinput" ;ASL2.0
+    "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
+    "third_party/libaom/source/libaom/third_party/vector" ;Expat
+    "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
+    "third_party/libjingle_xmpp" ;BSD-3
+    "third_party/libphonenumber" ;ASL2.0
+    "third_party/libsecret" ;LGPL2.1+
+    "third_party/libsrtp" ;BSD-3
+    "third_party/libsync" ;ASL2.0
+    "third_party/libudev" ;LGPL2.1+
+    "third_party/libwebm" ;BSD-3
+    "third_party/libxml/chromium" ;BSD-3
+    "third_party/libyuv" ;BSD-3
+    "third_party/lss" ;BSD-3
+    "third_party/markupsafe" ;BSD-3
+    "third_party/mesa_headers" ;Expat, SGI
+    "third_party/metrics_proto" ;BSD-3
+    "third_party/modp_b64" ;BSD-3
+    "third_party/nasm" ;BSD-2
+    "third_party/node" ;Expat
+    "third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2
+    "third_party/ots" ;BSD-3
+    "third_party/pdfium" ;BSD-3
+    "third_party/pdfium/third_party/agg23" ;Expat
+    "third_party/pdfium/third_party/base" ;BSD-3
+    "third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
+    "third_party/pdfium/third_party/skia_shared" ;BSD-3
+    "third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
+    "third_party/ply" ;BSD-3
+    "third_party/polymer" ;BSD-3
+    "third_party/protobuf" ;BSD-3
+    "third_party/protobuf/third_party/six" ;Expat
+    "third_party/pyjson5" ;ASL2.0
+    "third_party/qcms" ;Expat
+    "third_party/rnnoise" ;BSD-3
+    "third_party/s2cellid" ;ASL2.0
+    "third_party/sfntly" ;ASL2.0
+    "third_party/skia" ;BSD-3
+    "third_party/skia/third_party/gif" ;MPL1.1/GPL2+/LGPL2.1+
+    "third_party/skia/third_party/skcms" ;BSD-3
+    "third_party/skia/third_party/vulkan" ;BSD-3
+    "third_party/smhasher" ;Expat, public domain
+    "third_party/speech-dispatcher" ;GPL2+
+    "third_party/spirv-headers" ;ASL2.0
+    "third_party/SPIRV-Tools" ;ASL2.0
+    "third_party/sqlite" ;Public domain
+    "third_party/ungoogled" ;BSD-3
+    "third_party/usb_ids" ;BSD-3
+    "third_party/usrsctp" ;BSD-2
+    "third_party/web-animations-js" ;ASL2.0
+    "third_party/webdriver" ;ASL2.0
+    "third_party/webrtc" ;BSD-3
+    "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft
+    "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain
+    "third_party/webrtc/modules/third_party/fft" ;Non-copyleft
+    "third_party/webrtc/modules/third_party/g711" ;Public domain
+    "third_party/webrtc/modules/third_party/g722" ;Public domain
+    "third_party/webrtc/rtc_base/third_party/base64" ;Non-copyleft
+    "third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
+    "third_party/widevine/cdm/widevine_cdm_version.h" ;BSD-3
+    "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
+    "third_party/woff2" ;ASL2.0
+    "third_party/xdg-utils" ;Expat
+    "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
+    "third_party/zlib/google" ;BSD-3
+    "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
+    "v8/src/third_party/utf8-decoder" ;Expat
+    "v8/src/third_party/valgrind" ;BSD-4
+    "v8/third_party/inspector_protocol" ;BSD-3
+    "v8/third_party/v8/builtins")) ;PSFL
+
+(define* (computed-origin-method gexp-promise hash-algo hash
+                                 #:optional (name "source")
+                                 #:key (system (%current-system))
+                                 (guile (default-guile)))
+  "Return a derivation that executes the G-expression that results
+from forcing GEXP-PROMISE."
+  (mlet %store-monad ((guile (package->derivation guile system)))
+    (gexp->derivation (or name "computed-origin")
+                      (force gexp-promise)
+                      #:system system
+                      #:guile-for-build guile)))
+
+(define %chromium-version "72.0.3626.109")
+(define %ungoogled-revision "a58db880c15e5077e881cad7b07d1a277ecd463a")
+
+;; This is a "computed" origin that does the following:
+;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball.
+;; 2) Prunes all third_party folders that are not explicitly preserved.
+;; 3) Adjusts "GN" build files such that system libraries are preferred.
+(define ungoogled-chromium-source
+  (let* ((chromium-source
+          (origin
+            (method url-fetch)
+            (uri (string-append "https://commondatastorage.googleapis.com"
+                                "/chromium-browser-official/chromium-"
+                                %chromium-version ".tar.xz"))
+            (sha256
+             (base32
+              "0bcc0iksk2v30drwd5zbw7v6sfbw16jqllc12ks2nifrvh058jjp"))))
+         (ungoogled-source
+          (origin
+            (method git-fetch)
+            (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium")
+                                (commit %ungoogled-revision)))
+            (file-name (git-file-name "ungoogled-chromium"
+                                      (string-take %ungoogled-revision 7)))
+            (sha256
+             (base32
+              "19w60b71rcccp32b7rcpw75kfg4sw2xfr32rfk0hcyaj5rq0mm69")))))
+
+    (origin
+      (method computed-origin-method)
+      (file-name (string-append "ungoogled-chromium-" %chromium-version ".tar.xz"))
+      (sha256 #f)
+      (uri
+       (delay
+         (with-imported-modules '((guix build utils))
+           #~(begin
+               (use-modules (guix build utils))
+               (let ((chromium-dir    (string-append "chromium-" #$%chromium-version))
+                     (preserved-files (list #$@%preserved-third-party-files)))
+
+                 (set-path-environment-variable
+                  "PATH" '("bin")
+                  (list #+(canonical-package patch)
+                        #+(canonical-package xz)
+                        #+(canonical-package tar)
+                        #+python-2
+                        #+python))
+
+                 (copy-recursively #+ungoogled-source "/tmp/ungoogled")
+
+                 (with-directory-excursion "/tmp/ungoogled"
+
+                   ;; Create a custom "bundle" that inherits from linux_rooted
+                   ;; and adds an additional patch.
+                   (format #t "Creating Guix config bundle...~%")
+                   (force-output)
+                   (mkdir-p "config_bundles/guix")
+                   (call-with-output-file "config_bundles/guix/bundlemeta.ini"
+                     (lambda (port)
+                       (format port
+                               "[bundle]
+display_name = GNU Guix
+depends = linux_rooted\n")))
+                   (call-with-output-file "config_bundles/guix/patch_order.list"
+                     (lambda (port)
+                       (format port "debian_buster/system/openjpeg.patch\n")))
+
+                   (format #t "Unpacking chromium tarball...~%")
+                   (force-output)
+                   (invoke "tar" "xf" #+chromium-source)
+
+                   (format #t "Ungooglifying...~%")
+                   (force-output)
+                   (invoke "python3" "run_buildkit_cli.py" "prune"
+                           "-b" "config_bundles/guix" chromium-dir)
+                   (invoke "python3" "run_buildkit_cli.py" "patches" "apply"
+                           "-b" "config_bundles/guix" chromium-dir)
+                   (invoke "python3" "run_buildkit_cli.py" "domains" "apply"
+                           "-b" "config_bundles/linux_rooted"
+                           "-c" "/tmp/domainscache.tar.gz" chromium-dir)
+
+                   (with-directory-excursion chromium-dir
+                     (format #t "Pruning third party files...~%")
+                     (force-output)
+                     (apply invoke "python"
+                             "build/linux/unbundle/remove_bundled_libraries.py"
+                             "--do-remove" preserved-files)
+
+                     (format #t "Replacing GN files...~%")
+                     (force-output)
+                     (invoke "python3" "build/linux/unbundle/replace_gn_files.py"
+                             "--system-libraries" "ffmpeg" "flac" "fontconfig"
+                             "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
+                             "libjpeg" "libpng" "libvpx" "libwebp" "libxml"
+                             "libxslt" "openh264" "opus" "re2" "snappy" "yasm"
+                             "zlib"))
+
+                   (format #t (string-append "Packing new ungoogled tarball ...~%"))
+                   (force-output)
+                   (invoke "tar" "cvfa" #$output
+                           ;; Avoid non-determinism in the archive.
+                           "--mtime=@0"
+                           "--owner=root:0"
+                           "--group=root:0"
+                           "--sort=name"
+                           chromium-dir)
+
+                   #t)))))))))
+
+(define opus+custom
+  (package/inherit opus
+    (name "opus+custom")
+    (arguments
+     (substitute-keyword-arguments (package-arguments opus)
+       ((#:configure-flags flags ''())
+        ;; Opus Custom is an optional extension of the Opus
+        ;; specification that allows for unsupported frame
+        ;; sizes.  Chromium requires that this is enabled.
+        `(cons "--enable-custom-modes"
+               ,flags))))))
+
+(define-public ungoogled-chromium
+  (package
+    (name "ungoogled-chromium")
+    (version %chromium-version)
+    (synopsis "Graphical web browser")
+    (source ungoogled-chromium-source)
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       ;; FIXME: Chromiums RUNPATH lacks entries for some libraries, so
+       ;; we have to disable validation and add a wrapper below.
+       #:validate-runpath? #f
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 regex)
+                  (srfi srfi-26))
+       #:configure-flags
+       ;; See tools/gn/docs/cookbook.md and
+       ;; https://www.chromium.org/developers/gn-build-configuration
+       ;; for usage.  Run "./gn args . --list" in the Release
+       ;; directory for an exhaustive list of supported flags.
+       ;; (Note: The 'configure' phase will do that for you.)
+       (list "is_debug=false"
+             "use_gold=false"
+             "use_lld=false"
+             "linux_use_bundled_binutils=false"
+             "use_custom_libcxx=false"
+             "use_sysroot=false"
+             "enable_precompiled_headers=false"
+             "goma_dir=\"\""
+             "enable_nacl=false"
+             "enable_nacl_nonsfi=false"
+             "use_allocator=\"none\""
+             "use_unofficial_version_number=false"
+             "treat_warnings_as_errors=false"
+             "use_official_google_api_keys=false"
+             "fieldtrial_testing_like_official_build=true"
+             "safe_browsing_mode=0"
+             "enable_mdns=false"
+             "enable_one_click_signin=false"
+             "enable_reading_list=false"
+             "enable_remoting=false"
+             "enable_reporting=false"
+             "enable_service_discovery=false"
+             "enable_swiftshader=false"
+             ;; Disable type-checking for the Web UI to avoid a Java dependency.
+             "closure_compile=false"
+
+             ;; Define a custom toolchain that simply looks up CC, AR and
+             ;; friends from the environment.
+             "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
+             "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
+             ;; Don't assume it's clang.
+             "is_clang=false"
+             ;; Disable debugging features to save space.  These are normally
+             ;; pulled in by "is_official_build", but that requires "is_clang".
+             "blink_symbol_level=0"
+             "enable_iterator_debugging=false"
+             "exclude_unwind_tables=true"
+             ;; Optimize for building everything at once, as opposed to
+             ;; incrementally for development.  See "docs/jumbo.md".
+             "use_jumbo_build=true"
+
+             ;; Prefer system libraries.
+             "use_system_freetype=true"
+             "use_system_harfbuzz=true"
+             "use_system_lcms2=true"
+             "use_system_libdrm=true"
+             "use_system_libjpeg=true"
+             "use_system_libpng=true"
+             "use_system_zlib=true"
+             "use_gnome_keyring=false"  ;deprecated by libsecret
+             "use_openh264=true"
+             "use_pulseaudio=true"
+             "link_pulseaudio=true"
+             "use_vaapi=true"
+
+             ;; Don't arbitrarily restrict formats supported by system ffmpeg.
+             "proprietary_codecs=true"
+             "ffmpeg_branding=\"Chrome\""
+
+             ;; WebRTC stuff.
+             "rtc_use_h264=true"
+             ;; Don't use bundled sources.
+             "rtc_build_json=false"
+             "rtc_build_libevent=false"
+             "rtc_build_libvpx=false"
+             "rtc_build_opus=false"
+             "rtc_build_ssl=false"
+             "rtc_build_libsrtp=true"   ;FIXME: fails to find headers
+             "rtc_build_usrsctp=true"   ;TODO: package this
+             (string-append "rtc_jsoncpp_root=\""
+                            (assoc-ref %build-inputs "jsoncpp")
+                            "/include/jsoncpp/json\"")
+             (string-append "rtc_ssl_root=\""
+                            (assoc-ref %build-inputs "openssl")
+                            "/include/openssl\""))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-stuff
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "printing/cups_config_helper.py"
+               (("cups_config =.*")
+                (string-append "cups_config = '" (assoc-ref inputs "cups")
+                               "/bin/cups-config'\n")))
+
+             (substitute*
+                 '("base/process/launch_posix.cc"
+                   "base/third_party/dynamic_annotations/dynamic_annotations.c"
+                   "sandbox/linux/seccomp-bpf/sandbox_bpf.cc"
+                   "sandbox/linux/services/credentials.cc"
+                   "sandbox/linux/services/namespace_utils.cc"
+                   "sandbox/linux/services/syscall_wrappers.cc"
+                   "sandbox/linux/syscall_broker/broker_host.cc")
+               (("include \"base/third_party/valgrind/") "include \"valgrind/"))
+
+             (for-each (lambda (file)
+                         (substitute* file
+                           ;; Fix opus include path.
+                           ;; Do not substitute opus_private.h.
+                           (("#include \"opus\\.h\"")
+                            "#include \"opus/opus.h\"")
+                           (("#include \"opus_custom\\.h\"")
+                            "#include \"opus/opus_custom.h\"")
+                           (("#include \"opus_defines\\.h\"")
+                            "#include \"opus/opus_defines.h\"")
+                           (("#include \"opus_multistream\\.h\"")
+                            "#include \"opus/opus_multistream.h\"")
+                           (("#include \"opus_types\\.h\"")
+                            "#include \"opus/opus_types.h\"")))
+                       (find-files (string-append "third_party/webrtc/modules"
+                                                  "/audio_coding/codecs/opus")))
+
+             (substitute* "chrome/common/chrome_paths.cc"
+               (("/usr/share/chromium/extensions")
+                ;; TODO: Add ~/.guix-profile.
+                "/run/current-system/profile/share/chromium/extensions"))
+
+             ;; XXX: Should be unnecessary when use_system_lcms2=true.
+             (substitute* "third_party/pdfium/core/fxcodec/codec/ccodec_iccmodule.h"
+               (("include \"third_party/lcms/include/lcms2\\.h\"")
+                "include \"lcms2.h\""))
+
+             (substitute*
+                 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
+               (("include \"third_party/curl") "include \"curl"))
+
+             (substitute* "third_party/webrtc/rtc_base/strings/json.h"
+               (("#include \"third_party/jsoncpp/") "#include \"json/"))
+
+             (substitute* "media/base/decode_capabilities.cc"
+               (("third_party/libvpx/source/libvpx/") ""))
+
+             (substitute* "ui/gfx/skia_util.h"
+               (("third_party/vulkan/include/") ""))
+
+             ;; Building chromedriver embeds some files using the ZIP
+             ;; format which doesn't support timestamps before
+             ;; 1980. Therefore, advance the timestamps of the files
+             ;; which are included so that building chromedriver
+             ;; works.
+             (let ((circa-1980 (* 10 366 24 60 60)))
+               (for-each (lambda (file)
+                           (utime file circa-1980 circa-1980))
+                         '("chrome/test/chromedriver/extension/background.js"
+                           "chrome/test/chromedriver/extension/manifest.json")))
+
+             #t))
+         (add-before 'configure 'prepare-build-environment
+           (lambda* (#:key inputs #:allow-other-keys)
+
+             ;; Make sure the right build tools are used.
+             (setenv "AR" "ar") (setenv "NM" "nm")
+             (setenv "CC" "gcc") (setenv "CXX" "g++")
+
+             ;; Work around <https://bugs.gnu.org/30756>.
+             (unsetenv "C_INCLUDE_PATH")
+             (unsetenv "CPLUS_INCLUDE_PATH")
+
+             ;; TODO: pre-compile instead. Avoids a race condition.
+             (setenv "PYTHONDONTWRITEBYTECODE" "1")
+
+             ;; XXX: How portable is this.
+             (mkdir-p "third_party/node/linux/node-linux-x64")
+             (symlink (string-append (assoc-ref inputs "node") "/bin")
+                      "third_party/node/linux/node-linux-x64/bin")
+
+             #t))
+         (replace 'configure
+           (lambda* (#:key configure-flags #:allow-other-keys)
+             (let ((args (string-join configure-flags " ")))
+               ;; Generate ninja build files.
+               (invoke "gn" "gen" "out/Release"
+                       (string-append "--args=" args))
+
+               ;; Print the full list of supported arguments as well as
+               ;; their current status for convenience.
+               (format #t "Dumping configure flags...\n")
+               (invoke "gn" "args" "out/Release" "--list"))))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "ninja" "-C" "out/Release"
+                     "-j" (number->string (parallel-job-count))
+                     "chrome"
+                     "chromedriver")))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out            (assoc-ref outputs "out"))
+                    (bin            (string-append out "/bin"))
+                    (exe            (string-append bin "/chromium"))
+                    (lib            (string-append out "/lib"))
+                    (man            (string-append out "/share/man/man1"))
+                    (applications   (string-append out "/share/applications"))
+                    (install-regexp (make-regexp "\\.(bin|pak)$"))
+                    (locales        (string-append lib "/locales"))
+                    (resources      (string-append lib "/resources"))
+                    (preferences    (assoc-ref inputs "master-preferences"))
+                    (gtk+           (assoc-ref inputs "gtk+"))
+                    (mesa           (assoc-ref inputs "mesa"))
+                    (nss            (assoc-ref inputs "nss"))
+                    (udev           (assoc-ref inputs "udev"))
+                    (sh             (which "sh")))
+
+               (substitute* '("chrome/app/resources/manpage.1.in"
+                              "chrome/installer/linux/common/desktop.template")
+                 (("@@MENUNAME@@") "Chromium")
+                 (("@@PACKAGE@@") "chromium")
+                 (("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
+
+               (mkdir-p man)
+               (copy-file "chrome/app/resources/manpage.1.in"
+                          (string-append man "/chromium.1"))
+
+               (mkdir-p applications)
+               (copy-file "chrome/installer/linux/common/desktop.template"
+                          (string-append applications "/chromium.desktop"))
+
+               (mkdir-p lib)
+               (copy-file preferences (string-append lib "/master_preferences"))
+
+               (with-directory-excursion "out/Release"
+                 (for-each (lambda (file)
+                             (install-file file lib))
+                           (scandir "." (cut regexp-exec install-regexp <>)))
+                 (copy-file "chrome" (string-append lib "/chromium"))
+
+                 ;; TODO: Install icons from "../../chrome/app/themes" into
+                 ;; "out/share/icons/hicolor/$size".
+                 (install-file
+                  "product_logo_48.png"
+                  (string-append out "/share/icons/48x48/chromium.png"))
+
+                 (copy-recursively "locales" locales)
+                 (copy-recursively "resources" resources)
+
+                 (mkdir-p bin)
+                 (symlink "../lib/chromium" exe)
+                 (install-file "chromedriver" bin)
+
+                 (wrap-program exe
+                   ;; TODO: Get these in RUNPATH.
+                   `("LD_LIBRARY_PATH" ":" prefix
+                     (,(string-append lib ":" nss "/lib/nss:" mesa "/lib:"
+                                      udev "/lib")))
+                   ;; Avoid file manager crash.  See <https://bugs.gnu.org/26593>.
+                   `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))))
+                 #t)))))))
+    (native-inputs
+     `(("bison" ,bison)
+       ("gcc" ,gcc-8)
+       ("gn" ,gn)
+       ("gperf" ,gperf)
+       ("ninja" ,ninja)
+       ("node" ,node)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)
+       ("yasm" ,yasm)
+
+       ;; This file contains defaults for new user profiles.
+       ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
+
+       ("python-beautifulsoup4" ,python2-beautifulsoup4)
+       ("python-html5lib" ,python2-html5lib)
+       ("python" ,python-2)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("atk" ,atk)
+       ("cups" ,cups)
+       ("curl" ,curl)
+       ("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)
+       ("expat" ,expat)
+       ("flac" ,flac)
+       ("ffmpeg" ,ffmpeg)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("harfbuzz" ,harfbuzz)
+       ("icu4c" ,icu4c)
+       ("jsoncpp" ,jsoncpp)
+       ("lcms" ,lcms)
+       ("libevent" ,libevent)
+       ("libffi" ,libffi)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("libva" ,libva)
+       ("libvpx" ,libvpx)
+       ("libwebp" ,libwebp)
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxcomposite" ,libxcomposite)
+       ("libxcursor" ,libxcursor)
+       ("libxdamage" ,libxdamage)
+       ("libxext" ,libxext)
+       ("libxfixes" ,libxfixes)
+       ("libxi" ,libxi)
+       ("libxml2" ,libxml2)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("libxslt" ,libxslt)
+       ("libxtst" ,libxtst)
+       ("mesa" ,mesa)
+       ("minizip" ,minizip)
+       ("mit-krb5" ,mit-krb5)
+       ("nss" ,nss)
+       ("openh264" ,openh264)
+       ("openjpeg" ,openjpeg)                          ;PDFium only
+       ("openssl" ,openssl)
+       ("opus" ,opus+custom)
+       ("pango" ,pango)
+       ("pciutils" ,pciutils)
+       ("pulseaudio" ,pulseaudio)
+       ("re2" ,re2)
+       ("snappy" ,snappy)
+       ("speech-dispatcher" ,speech-dispatcher)
+       ("udev" ,eudev)
+       ("valgrind" ,valgrind)
+       ("vulkan-headers" ,vulkan-headers)))
+    (home-page "https://github.com/Eloston/ungoogled-chromium")
+    (description
+     "Ungoogled-Chromium is the Chromium web browser, with some functionality
+disabled in order to protect the users privacy.")
+    ;; Chromium is developed as BSD-3, but bundles a large number of third-party
+    ;; components with other licenses.  For full information, see chrome://credits.
+    (license (list license:bsd-3
+                   license:bsd-2
+                   license:expat
+                   license:asl2.0
+                   license:mpl1.1
+                   license:mpl2.0
+                   license:public-domain
+                   license:isc
+                   (license:non-copyleft "chrome://credits"
+                                         "See chrome://credits for more information.")
+                   license:lgpl2.1+))))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 6314546667..f619f62699 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2018 Marius Bakke <mbakke@fastmail.com>
@@ -557,14 +557,14 @@ archiving.  Lzip is a clean implementation of the LZMA algorithm.")
 (define-public lziprecover
   (package
     (name "lziprecover")
-    (version "1.20")
+    (version "1.21")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://savannah/lzip/" name "/"
-                                  name "-" version ".tar.gz"))
+              (uri (string-append "mirror://savannah/lzip/lziprecover/"
+                                  "lziprecover-" version ".tar.gz"))
               (sha256
                (base32
-                "0fpnmdxayvd1ff0rk9606dvr431ji6b1v71km4ww244rih1rmmzz"))))
+                "094w2z8fz41yaq0gkyr61cl7pb1d7kchpl5dka7rvm3qvbb7ncd2"))))
     (build-system gnu-build-system)
     (home-page "https://www.nongnu.org/lzip/lziprecover.html")
     (synopsis "Recover and decompress data from damaged lzip files")
@@ -1278,7 +1278,7 @@ or junctions, and always follows hard links.")
 (define-public unshield
   (package
     (name "unshield")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin (method url-fetch)
              (uri (string-append "http://github.com/twogood/unshield/archive/"
@@ -1286,25 +1286,36 @@ or junctions, and always follows hard links.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "0x7ps644yp5dka2zhb8w0ifqmw3d255jafpzfwv8xbcpgq6fmm2x"))))
+               "1avv5c11jbmzwizq10pwvlh1dmyna8ccvpgacv95h4gbq26rg35a"))))
     (build-system cmake-build-system)
     (inputs
      `(("zlib" ,zlib)
        ("openssl" ,openssl)
-       ;; test data that is otherwise downloaded with curl
+       ;; Test data that is otherwise downloaded with curl.
        ("unshield-avigomanager11b22.zip"
         ,(origin
            (method url-fetch)
-           (uri (string-append "https://www.dropbox.com/s/8r4b6752swe3nhu/"
-                               "unshield-avigomanager11b22.zip?dl=1"))
+           (uri (string-append
+                 "https://www.dropbox.com/s/8r4b6752swe3nhu/"
+                 "unshield-avigomanager11b22.zip?dl=1"))
            (sha256
             (base32 "0fwq7lih04if68wpwpsk5wjqyvh32db76a41sq6gbx4dn1lc3ddn"))
            (file-name "unshield-avigomanager11b22.zip")))
+       ("unshield-baldurs_gate_patch_v1_1_4315_international.zip"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://www.dropbox.com/s/9ruil8oi6amjbbk/"
+                 "unshield-baldurs_gate_patch_v1_1_4315_international.zip?dl=1"))
+           (sha256
+            (base32 "0spaxf6dardlhqxz3ys09fzamj007q3nfyw4xng6gh3qp9780maj"))
+           (file-name "unshield-baldurs_gate_patch_v1_1_4315_international.zip")))
        ("unshield-the-feeble-files-spanish.zip"
         ,(origin
            (method url-fetch)
-           (uri (string-append "https://www.dropbox.com/s/1ng0z9kfxc7eb1e/"
-                               "unshield-the-feeble-files-spanish.zip?dl=1"))
+           (uri (string-append
+                 "https://www.dropbox.com/s/1ng0z9kfxc7eb1e/"
+                 "unshield-the-feeble-files-spanish.zip?dl=1"))
            (sha256
             (base32 "1k5cw6vnpja8yjlnhx5124xrw9i8s1l539hfdqqrqz3l5gn0bnyd"))
            (file-name "unshield-the-feeble-files-spanish.zip")))))
@@ -1320,6 +1331,7 @@ or junctions, and always follows hard links.")
                          (copy-file (assoc-ref inputs i)
                                     (string-append "test/v0/" i)))
                        '("unshield-avigomanager11b22.zip"
+                         "unshield-baldurs_gate_patch_v1_1_4315_international.zip"
                          "unshield-the-feeble-files-spanish.zip"))
              (substitute* (find-files "test/" "/*\\.sh")
                ;; Tests expect the unshield binary in a specific
@@ -1332,7 +1344,12 @@ or junctions, and always follows hard links.")
              (substitute* "test/v0/avigomanager.sh"
                (("test.zip")
                 (string-append (getcwd)
-                  "/test/v0/unshield-avigomanager11b22.zip")))
+                               "/test/v0/unshield-avigomanager11b22.zip")))
+             (substitute* "test/v0/baldurs_gate_patch_v1_1_4315_international.sh"
+               (("test.zip")
+                (string-append
+                 (getcwd)
+                 "/test/v0/unshield-baldurs_gate_patch_v1_1_4315_international.zip")))
              (substitute* "test/v0/the-feeble-files-spanish.sh"
                (("test.zip")
                 (string-append (getcwd)
@@ -1623,14 +1640,14 @@ of archives.")
 (define-public lunzip
   (package
     (name "lunzip")
-    (version "1.10")
+    (version "1.11")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://savannah/lzip/"
-                           name "/" name "-" version ".tar.gz"))
+       (uri (string-append "mirror://savannah/lzip/lunzip/"
+                           "lunzip-" version ".tar.gz"))
        (sha256
-        (base32 "1iw59br6nsxs7l1p875h8w3vxwr04xfhg5zyal64crvamhxkj5kl"))))
+        (base32 "19zq3gmlbia2krq4k4zs1j0xjdv7nsdzqvfb0pyca5n53h2mzb91"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1650,14 +1667,14 @@ Lunzip is intended to be fully compatible with the regular lzip package.")
 (define-public clzip
   (package
     (name "clzip")
-    (version "1.10")
+    (version "1.11")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://savannah/lzip/"
-                           name "/" name "-" version ".tar.gz"))
+       (uri (string-append "mirror://savannah/lzip/clzip/"
+                           "clzip-" version ".tar.gz"))
        (sha256
-        (base32 "03xcmhl3dya4jrwmsqh09ikimpb36fr3vkh2bwfzz1sbcns0cdg3"))))
+        (base32 "1h14dmc9fi10gcdpdpbgq1bwvcxvivppilj64pf720x8mw915mfr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1676,17 +1693,15 @@ Clzip is intended to be fully compatible with the regular lzip package.")
 (define-public lzlib
   (package
     (name "lzlib")
-    (version "1.10")
+    (version "1.11")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://savannah/lzip/"
-                           name "/" name "-" version ".tar.gz"))
+       (uri (string-append "mirror://savannah/lzip/lzlib/"
+                           "lzlib-" version ".tar.gz"))
        (sha256
-        (base32 "0hqhnj2lzqacdbmmnpy91lsm1rd9zlngs1q6s9pyahsv1a0bfshx"))))
+        (base32 "0djdj4sg33rzi4k84cygvnp09bfsv6i8wy2k7i67rayib63myp3c"))))
     (build-system gnu-build-system)
-    ;; The included minilzip binary is only ~16 smaller than the ‘real’ lzip.
-    ;; It's used during the test suite, but don't be tempted to install it.
     (arguments
      `(#:configure-flags
        (list "CC=gcc"
@@ -1704,14 +1719,14 @@ corrupted input.")
 (define-public plzip
   (package
     (name "plzip")
-    (version "1.7")
+    (version "1.8")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://savannah/lzip/"
-                           name "/" name "-" version ".tar.gz"))
+       (uri (string-append "mirror://savannah/lzip/plzip/"
+                           "plzip-" version ".tar.gz"))
        (sha256
-        (base32 "1dzjp9r7krwpsn224bhcqbzd5aj5b4556sdi9yzl2bzbk3fjrqlm"))))
+        (base32 "04indil809qgfmz776imb3dnhkysh7zk28jcv3mw0ahl2lyaxbzd"))))
     (build-system gnu-build-system)
     (inputs
      `(("lzlib" ,lzlib)))
diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm
index 0da9f8438b..c3b72ea063 100644
--- a/gnu/packages/conky.scm
+++ b/gnu/packages/conky.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
   #:use-module (gnu packages lua)
@@ -34,15 +36,17 @@
 (define-public conky
   (package
     (name "conky")
-    (version "1.10.8")
+    (home-page "https://github.com/brndnmtthws/conky")
+    (version "1.11.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/brndnmtthws/conky/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0mw8xbnxr0a7yq2smzi2nln2b5n0q571vdrq6mhvs5n84xd6bg9f"))))
+        (base32 "0yalcpwx85smh6nnvxxsgqi344nk7jzlkkam7yjghm87df4v7xmx"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; there are no tests
@@ -73,10 +77,10 @@
        ("libxft" ,libxft)
        ("libxinerama" ,libxinerama)
        ("lua" ,lua)
-       ("ncurses" ,ncurses)))
+       ("ncurses" ,ncurses)
+       ("curl" ,curl)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "https://github.com/brndnmtthws/conky")
     (synopsis "Lightweight system monitor for X")
     (description
      "Conky is a lightweight system monitor for X that displays operating
diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm
index e42f8af1ab..3cd8c4cb69 100644
--- a/gnu/packages/coq.scm
+++ b/gnu/packages/coq.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -42,14 +43,15 @@
   (package
     (name "coq")
     (version "8.8.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/coq/coq/archive/V"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0i2hs0i6rp27cy8zd0mx7jscqw5cx2y0diw0pxgij66s3yr47y7r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/coq/coq.git")
+             (commit (string-append "V" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "03v8b57mz3ivsijwxy51avzwiyhla5ijaf98a5a2q29yabdq8dkp"))))
     (native-search-paths
      (list (search-path-specification
             (variable "COQPATH")
@@ -63,6 +65,10 @@
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -279,20 +285,22 @@ assistant.")
   (package
     (name "coq-mathcomp")
     (version "1.7.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/math-comp/math-comp/archive/mathcomp-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "05zgyi4wmasi1rcyn5jq42w0bi9713q9m8dl1fdgl66nmacixh39"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/math-comp/math-comp.git")
+             (commit (string-append "mathcomp-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1cdzi67jj440xkdpxm10aly80zpn56vjzj2ygb67iq3xpljlv95h"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("ocaml" ,ocaml)
        ("which" ,which)
        ("coq" ,coq)))
     (arguments
-     `(#:tests? #f; No need to test formally-verified programs :)
+     `(#:tests? #f             ; no need to test formally-verified programs :)
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -492,3 +500,44 @@ work on a decision procedure for the equational theory of an extension of the
 sigma-calculus by Abadi et al.  The library is completely written in Coq and
 uses Ltac to synthesize the substitution operation.")
       (license license:bsd-3))))
+
+(define-public coq-equations
+  (package
+    (name "coq-equations")
+    (version "1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mattam82/Coq-Equations.git")
+                    (commit (string-append "v" version "-8.8"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "129rxsdsf88vjcw0xhm74yax1hmnk6f8n9ksg0hcyyjq1ijddiwa"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("ocaml"  ,ocaml)
+       ("coq"    ,coq)
+       ("camlp5" ,camlp5)))
+    (arguments
+     `(#:test-target "test-suite"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "coq_makefile" "-f" "_CoqProject" "-o" "Makefile")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "COQLIB" (string-append (assoc-ref outputs "out") "/lib/coq/"))
+             (invoke "make"
+                     (string-append "COQLIB=" (assoc-ref outputs "out")
+                                    "/lib/coq/")
+                     "install"))))))
+    (home-page "https://mattam82.github.io/Coq-Equations/")
+    (synopsis "Function definition plugin for Coq")
+    (description "Equations provides a notation for writing programs
+by dependent pattern-matching and (well-founded) recursion in Coq.  It
+compiles everything down to eliminators for inductive types, equality
+and accessibility, providing a definitional extension to the Coq
+kernel.")
+    (license license:lgpl2.1)))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 975884e881..b71906a8f5 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2018 Laura Lazzati <laura.lazzati.15@gmail.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Brett Gilio <brettg@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2251,14 +2252,14 @@ available in a vignette.")
 (define-public r-lava
   (package
     (name "r-lava")
-    (version "1.6.4")
+    (version "1.6.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lava" version))
        (sha256
         (base32
-         "0627cjlg55kzbzcy82w6wykmw2i57qhgfcabn2zy3ydfdswyxij1"))))
+         "13rlqdg42ylnz4hc932bl50xismrcr4d9ykcd9zs19cw5mckjx0f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-numderiv" ,r-numderiv)
@@ -6589,19 +6590,19 @@ used to teach mathematics, statistics, computation and modeling.")
 (define-public r-raster
   (package
     (name "r-raster")
-    (version "2.8-4")
+    (version "2.8-19")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "raster" version))
        (sha256
         (base32
-         "14pcfznxm5kdwd908axkr9v1l0hzxlrwd8kwrz0liqnfh9cx5rsa"))))
+         "1lmhf7p7is8ai7lv7zsj2rdzf83j7ccl4x7a9vwxxa824zy4bkf4"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
        ("r-sp" ,r-sp)))
-    (home-page "http://www.rspatial.org/")
+    (home-page "https://www.rspatial.org/")
     (synopsis "Geographic data analysis and modeling")
     (description
      "The package implements basic and high-level functions for reading,
@@ -10511,3 +10512,142 @@ tempering (function @code{temper}), and morphometric random walk
 Metropolis (function @code{morph.metrop}), which achieves geometric ergodicity
 by change of variable.")
     (license license:expat)))
+
+(define-public r-listenv
+  (package
+    (name "r-listenv")
+    (version "0.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "listenv" version))
+       (sha256
+        (base32
+         "0ma5jsri2zqkrlsm9nqpikl7imbwfy1glsmk13mblw0q245h49k1"))))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-r-rsp" ,r-r-rsp))) ; vignette builder
+    (home-page "https://github.com/HenrikBengtsson/listenv")
+    (synopsis "Environments behaving (almost) as lists")
+    (description
+     "This package implements list environments.  List environments are
+environments that have list-like properties.  For instance, the elements of a
+list environment are ordered and can be accessed and iterated over using index
+subsetting.")
+    (license license:lgpl2.1+)))
+
+(define-public r-globals
+  (package
+    (name "r-globals")
+    (version "0.12.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "globals" version))
+       (sha256
+        (base32
+         "0szyv1ayyk31bh3xqlkj43020w44xq6s4rw2bxwizyjssxm3b1br"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-codetools" ,r-codetools)))
+    (home-page "https://github.com/HenrikBengtsson/globals")
+    (synopsis "Identify global objects in R expressions")
+    (description
+     "This package provides tools to identify global (\"unknown\" or \"free\")
+objects in R expressions by code inspection using various strategies, e.g.
+conservative or liberal.  The objective of this package is to make it as
+simple as possible to identify global objects for the purpose of exporting
+them in distributed compute environments.")
+    (license license:lgpl2.1+)))
+
+(define-public r-future
+  (package
+    (name "r-future")
+    (version "1.11.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "future" version))
+       (sha256
+        (base32
+         "1s4lyqg4mm1drzc6czaalmhmxfjgp4nznb14ql5xzny9rprgz43i"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-digest" ,r-digest)
+       ("r-globals" ,r-globals)
+       ("r-listenv" ,r-listenv)))
+    (native-inputs
+     `(("r-r-rsp" ,r-r-rsp))) ; vignette builder
+    (home-page "https://github.com/HenrikBengtsson/future")
+    (synopsis "Unified parallel and distributed processing in R")
+    (description
+     "The purpose of this package is to provide a lightweight and unified
+Future API for sequential and parallel processing of R expression via futures.
+This package implements sequential, multicore, multisession, and cluster
+futures.  With these, R expressions can be evaluated on the local machine, in
+parallel a set of local machines, or distributed on a mix of local and remote
+machines.  Extensions to this package implement additional backends for
+processing futures via compute cluster schedulers etc.  Because of its unified
+API, there is no need to modify any code in order to switch from sequential on
+the local machine to, say, distributed processing on a remote compute cluster.")
+    (license license:lgpl2.1+)))
+
+(define-public r-future-apply
+  (package
+    (name "r-future-apply")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "future.apply" version))
+       (sha256
+        (base32
+         "0b6v9rxvnnz13sydbgkapw71hx98fwdczjchgqnspjmq2340kdc0"))))
+    (properties `((upstream-name . "future.apply")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-future" ,r-future)
+       ("r-globals" ,r-globals)))
+    (native-inputs
+     `(("r-r-rsp" ,r-r-rsp))) ; vignette builder
+    (home-page "https://github.com/HenrikBengtsson/future.apply")
+    (synopsis "Apply function to elements in parallel using futures")
+    (description
+     "This package provides implementations of @code{apply()},
+@code{eapply()}, @code{lapply()}, @code{Map()}, @code{mapply()},
+@code{replicate()}, @code{sapply()}, @code{tapply()}, and @code{vapply()} that
+can be resolved using any future-supported backend, e.g. parallel on the local
+machine or distributed on a compute cluster.")
+    (license license:gpl2+)))
+
+(define-public r-rsvd
+  (package
+    (name "r-rsvd")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rsvd" version))
+       (sha256
+        (base32
+         "0vjhrvnkl9rmvl8sv2kac5sd10z3fgxymb676ynxzc2pmhydy3an"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-matrix" ,r-matrix)))
+    (home-page "https://github.com/erichson/rSVD")
+    (synopsis "Randomized singular value decomposition")
+    (description
+     "Low-rank matrix decompositions are fundamental tools and widely used for
+data analysis, dimension reduction, and data compression.  Classically, highly
+accurate deterministic matrix algorithms are used for this task.  However, the
+emergence of large-scale data has severely challenged our computational
+ability to analyze big data.  The concept of randomness has been demonstrated
+as an effective strategy to quickly produce approximate answers to familiar
+problems such as the @dfn{singular value decomposition} (SVD).  This package
+provides several randomized matrix algorithms such as the randomized singular
+value decomposition (@code{rsvd}), randomized principal component
+analysis (@code{rpca}), randomized robust principal component
+analysis (@code{rrpca}), randomized interpolative decomposition (@code{rid}),
+and the randomized CUR decomposition (@code{rcur}).  In addition several plot
+functions are provided.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 3cb80eb0f2..149ff64a2e 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -228,7 +228,7 @@ the wrong hands.")
 (define-public keyutils
   (package
     (name "keyutils")
-    (version "1.5.11")
+    (version "1.6")
     (source
      (origin
        (method url-fetch)
@@ -237,7 +237,7 @@ the wrong hands.")
                        version ".tar.bz2"))
        (sha256
         (base32
-         "1ddig6j5xjyk6g9l2wlqc7k1cgvryxdqbsv3c9rk1p3f42448n0i"))
+         "05bi5ja6f3h3kdi7p9dihlqlfrsmi1wh1r2bdgxc0180xh6g5bnk"))
        (modules '((guix build utils)))
        ;; Create relative symbolic links instead of absolute ones to /lib/*.
        (snippet '(begin
@@ -751,7 +751,7 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
          (replace 'check
            (lambda _ (invoke "./botan-test"))))))
     (native-inputs
-     `(("python" ,python-minimal-wrapper)
+     `(("python" ,python-wrapper)
        ("python-docutils" ,python-docutils)))
     (inputs
      `(("sqlite" ,sqlite)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 6724f04ce5..c63b5ddf39 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages polkit)
   #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages scanner)
   #:use-module (gnu packages tls)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -380,6 +382,32 @@ device-specific programs to convert and print many types of files.")
        ("cups-filters" ,cups-filters)
        ("zlib"  ,zlib)))))
 
+(define-public cups-pk-helper
+  (package
+    (name "cups-pk-helper")
+    (version "0.2.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://freedesktop.org/software/"
+                                  name "/releases/" name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0a52jw6rm7lr5nbyksiia0rn7sasyb5cjqcb95z1wxm2yprgi6lm"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("glib" ,glib)
+       ("polkit" ,polkit)
+       ("cups" ,cups)))
+    (home-page "https://www.freedesktop.org/wiki/Software/cups-pk-helper/")
+    (synopsis "PolicyKit helper to configure CUPS with fine-grained privileges")
+    (description
+     "This package provides the org.opensuse.CupsPkHelper.Mechanism DBus
+system service which uses @file{cups-pk-helper-mechanism}.  This package
+should only be used as part of the Guix cups-pk-helper service.")
+    (license license:gpl2+)))
+
 (define-public hplip
   (package
     (name "hplip")
@@ -681,3 +709,27 @@ printers.  It can only be used with printers that support the Epson ESC/P-R
 language.")
     (home-page "http://download.ebz.epson.net/dsc/search/01/search")
     (license license:gpl2+)))
+
+(define-public python-pycups
+  (package
+    (name "python-pycups")
+    (version "1.9.74")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pycups" version ".tar.bz2"))
+       (sha256
+        (base32
+         "1ffp7sswhdsfpy88zg0cc8kl04wygkjs01rlm9f0spbwk8jhy2c6"))))
+    (build-system python-build-system)
+    (arguments
+     '(;; Tests require CUPS to be running
+       #:tests? #f))
+    (inputs
+     `(("cups" ,cups)))
+    (home-page "https://github.com/zdohnal/pycups")
+    (synopsis "Python bindings for libcups")
+    (description
+     "This package provides Python bindings for libcups, wrapping the CUPS
+API.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 2e14e05c2c..b1b2b999a2 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -188,15 +189,14 @@ not offer a replacement for libcurl.")
 (define-public guile-curl
   (package
    (name "guile-curl")
-   (version "0.5")
+   (version "0.6")
    (source (origin
             (method url-fetch)
-            (uri (string-append
-                  "http://www.lonelycactus.com/tarball/guile-curl-"
-                  version ".tar.gz"))
+            (uri (string-append "http://www.lonelycactus.com/tarball/"
+                                "guile_curl-" version ".tar.gz"))
             (sha256
              (base32
-              "1846rxgc0ylh8768lr79irc7nwjichzb7qb7lzs2k42m0i53sc46"))))
+              "1pxdhnk288ky6gkpad8i60m0p6404rdvls43lr1b5d3csrklyc70"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags (list (string-append
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index cc4e6631f8..052ebb847f 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
@@ -277,15 +277,14 @@ mapping from string keys to string values.")
 (define-public memcached
   (package
     (name "memcached")
-    (version "1.5.10")
+    (version "1.5.12")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://memcached.org/files/memcached-" version ".tar.gz"))
        (sha256
-        (base32
-         "0jqw3z0408yx0lzc6ykn4d29n02dk31kqnmq9b3ldmcnpl6hck29"))))
+        (base32 "0aav15f0lh8k4i62aza2bdv4s8vv65j38pz2zc4v45snd3arfby0"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -335,7 +334,7 @@ applications.")
     (native-inputs
      `(("valgrind" ,valgrind)
        ("perl" ,perl)
-       ("python" ,python2-minimal)
+       ("python" ,python-2)
        ("python2-pymongo" ,python2-pymongo)
        ("python2-pyyaml" ,python2-pyyaml)
        ("tzdata" ,tzdata)))
@@ -687,18 +686,18 @@ as a drop-in replacement of MySQL.")
 (define-public postgresql
   (package
     (name "postgresql")
-    (version "10.6")
+    (version "10.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "0jv26y3f10svrjxzsgqxg956c86b664azyk2wppzpa5x11pjga38"))
+                "1piyfcrcqscjhnnwn91kdvr764s7d0qz4lgygf9bl6qc71ji1vdz"))
               (patches (search-patches "postgresql-disable-resolve_symlinks.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--with-uuid=e2fs")
+     `(#:configure-flags '("--with-uuid=e2fs" "--with-openssl")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-/bin/sh
@@ -717,6 +716,7 @@ as a drop-in replacement of MySQL.")
     (inputs
      `(("readline" ,readline)
        ("libuuid" ,util-linux)
+       ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (home-page "https://www.postgresql.org/")
     (synopsis "Powerful object-relational database system")
@@ -733,26 +733,25 @@ pictures, sounds, or video.")
   (package
     (inherit postgresql)
     (name "postgresql")
-    (version "9.6.11")
+    (version "9.6.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://ftp.postgresql.org/pub/source/v"
                                   version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "0c55akrkzqd6p6a8hr0338wk246hl76r9j16p4zn3s51d7f0l99q"))))))
+                "114xay230xia2fagisxahs5fc2mza8hmmkr6ibd7nxllp938931f"))))))
 
 (define-public python-pymysql
   (package
     (name "python-pymysql")
-    (version "0.9.2")
+    (version "0.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyMySQL" version))
        (sha256
-        (base32
-         "0gvi63f1zq1bbd30x28kqyx351hal1yc323ckp0mihainb5n1iwy"))))
+        (base32 "1ry8lxgdc1p3k7gbw20r405jqi5lvhi5wk83kxdbiv8xv3f5kh6q"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-unittest2" ,python-unittest2)))
@@ -1069,7 +1068,7 @@ extremely small.")
 (define-public perl-dbi
   (package
     (name "perl-dbi")
-    (version "1.641")
+    (version "1.642")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1077,7 +1076,7 @@ extremely small.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1hf2x29bnqf2x1v4bdhji802z7n2mbg7h1amv8gdkqyhrlrfa2am"))))
+                "0pbzqazrx7pnw4nbyaf27in4b6yddkirbd2ws7mnqa2n7812a81z"))))
     (build-system perl-build-system)
     (synopsis "Database independent interface for Perl")
     (description "This package provides an database interface for Perl.")
@@ -1490,14 +1489,14 @@ sets, bitmaps and hyperloglogs.")
 (define-public kyotocabinet
   (package
     (name "kyotocabinet")
-    (version "1.2.76")
+    (version "1.2.77")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://fallabs.com/kyotocabinet/pkg/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0g6js20x7vnpq4p8ghbw3mh9wpqksya9vwhzdx6dnlf354zjsal1"))))
+                "1rlx4307adbzd842b4npq6cwlw8h010ingxaz3qz1ijc70lr72an"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1637,7 +1636,7 @@ database.")
 (define-public perl-db-file
  (package
   (name "perl-db-file")
-  (version "1.842")
+  (version "1.843")
   (source
     (origin
       (method url-fetch)
@@ -1647,7 +1646,7 @@ database.")
              ".tar.gz"))
       (sha256
         (base32
-          "0w2d99vs9qarng2f9fpg3gchfdzy6an13507jhclcl8wv183h5hg"))))
+          "0sildz1i3fmh949w1scpjsyjx0cbmfw0yna3y70mc6vbwp8y696y"))))
   (build-system perl-build-system)
   (inputs `(("bdb" ,bdb)))
   (native-inputs `(("perl-test-pod" ,perl-test-pod)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 0f4a654e62..ef4ddc9cbb 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,11 +31,13 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages code)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages virtualization)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
@@ -336,3 +339,36 @@ conditions.")
 intercepting file operations and changing random bits in the program's
 input.  Zzuf's behaviour is deterministic, making it easy to reproduce bugs.")
     (license (non-copyleft "http://www.wtfpl.net/txt/copying/"))))
+
+(define-public scanmem
+  (package
+    (name "scanmem")
+    (version "0.17")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/scanmem/scanmem")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "17p8sh0rj8yqz36ria5bp48c8523zzw3y9g8sbm2jwq7sc27i7s9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("libtool" ,libtool)
+       ("intltool" ,intltool)
+       ("automake" ,automake)
+       ("autoconf" ,autoconf)))
+    (inputs
+     `(("readline" ,readline)))
+    (home-page "https://github.com/scanmem/scanmem")
+    (synopsis "Memory scanner")
+    (description "Scanmem is a debugging utility designed to isolate the
+address of an arbitrary variable in an executing process.  Scanmem simply
+needs to be told the pid of the process and the value of the variable at
+several different times.  After several scans of the process, scanmem isolates
+the position of the variable and allows you to modify its value.")
+    ;; The library is covered by LGPLv3 or later; the application is covered
+    ;; by GPLv3 or later.
+    (license (list lgpl3+ gpl3+))))
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 8c39453650..e0cd7604b6 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -372,7 +372,7 @@ word (e.g. cats) into its lemma \"cat\" and the grammatical information
        ("flex" ,flex)
        ("pkg-config" ,pkg-config)
        ;; python is only required for running the test suite
-       ("python-minimal" ,python-minimal)))
+       ("python" ,python)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index ceacd98a43..16fb2014b0 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
@@ -37,6 +37,7 @@
   #:use-module (gnu packages c)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
@@ -340,14 +341,14 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
 (define-public gparted
   (package
     (name "gparted")
-    (version "0.32.0")
+    (version "0.33.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/gparted/gparted/gparted-"
                            version "/gparted-" version ".tar.gz"))
        (sha256
-        (base32 "1fjp4c8jc0kjbbih1x1vs9v40d9lncma642kflnmy0bixxnvh7df"))))
+        (base32 "1ml1ky3s75lbxr91p608q3prsdh9x899mw7nbgk252pqhg4vh8sh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; tests require a network connection
@@ -478,16 +479,16 @@ a card with a smaller capacity than stated.")
 (define-public duperemove
   (package
     (name "duperemove")
-    (version "0.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/markfasheh/duperemove/archive/v"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "0rjmmh42yqw9a5j6sp31cqwxk3s97dsi4xz0wpxpllj7bsp3aiw5"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (version "0.11.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/markfasheh/duperemove.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1scz76pvpljvrpfn176125xwaqwyy4pirlm11sc9spb2hyzknw2z"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -609,7 +610,7 @@ passphrases.")
 (define-public ndctl
   (package
     (name "ndctl")
-    (version "63")
+    (version "64.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -618,7 +619,7 @@ passphrases.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "060nsza8xic769bxj3pvl70a9885bwrc0myw16l095i3z6w7yzwq"))))
+                "1la82fqbdwjkw6il498nkdfgqc4aszv481xf2p9p07jfvankx24v"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
@@ -635,6 +636,7 @@ passphrases.")
     (inputs
      `(("eudev" ,eudev)
        ("json-c" ,json-c)
+       ("keyutils" ,keyutils)
        ("kmod" ,kmod)
        ("util-linux" ,util-linux)))
     (arguments
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index c03c24d9e2..2530b8a3c7 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -249,8 +249,8 @@ bootstrapping more recent compilers written in D.")
                       (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
                       (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
       (native-inputs
-       `(("llvm" ,llvm)
-         ("clang" ,clang)
+       `(("llvm" ,llvm-6)
+         ("clang" ,clang-6)
          ("ldc" ,ldc-bootstrap)
          ("python-lit" ,python-lit)
          ("python-wrapper" ,python-wrapper)
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 09f0194bf7..1a6b29746a 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
@@ -294,15 +294,14 @@ asynchronous fashion.")
 (define-public nsd
   (package
     (name "nsd")
-    (version "4.1.25")
+    (version "4.1.26")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.nlnetlabs.nl/downloads/nsd/nsd-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0zyzjd3wmq258jiry62ci1z23qfd0rc5ggnpmybc60xvpddgynwg"))))
+        (base32 "1x0mvj4872dzj1rr9adnchdm4dhn41xmc459p5j4s0r13m1l32lz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -365,15 +364,14 @@ to result in system-wide compromise.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.8.1")
+    (version "1.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.unbound.net/downloads/unbound-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0p9w6spar5dfi7fplxjcq4394wldabaws0ns30cqq6sxqfwv6qn3"))))
+        (base32 "05xrb8havr2vgjsdy7n85kgnvk1mg7qwhjp4a8n6pg4jhd5zjnj1"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs
@@ -388,7 +386,7 @@ to result in system-wide compromise.")
        ("openssl" ,openssl)))
     (arguments
      `(#:configure-flags
-       (list "--disable-static" ;save space and non-determinism in libunbound.a
+       (list "--disable-static" ; save space and non-determinism in libunbound.a
              (string-append
               "--with-ssl=" (assoc-ref %build-inputs "openssl"))
              (string-append
@@ -524,16 +522,16 @@ served by AS112.  Stub and forward zones are supported.")
 (define-public yadifa
   (package
     (name "yadifa")
-    (version "2.3.8")
+    (version "2.3.9")
     (source
-     (let ((build "7713"))
+     (let ((build "8497"))
        (origin
          (method url-fetch)
          (uri
           (string-append "http://cdn.yadifa.eu/sites/default/files/releases/"
-                         name "-" version "-" build ".tar.gz"))
+                         "yadifa-" version "-" build ".tar.gz"))
          (sha256
-          (base32 "15xhzg4crjcxascwpz6y8qpqcgypzv2p9bspdskp4nx1x1y4316c")))))
+          (base32 "0xvyr91sfgzkpw6g3h893ldbwnki3w2472n56rr18w67qghs1sa5")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -571,14 +569,14 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "2.7.3")
+    (version "2.7.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://secure.nic.cz/files/knot-dns/"
-                                  name "-" version ".tar.xz"))
+                                  "knot-" version ".tar.xz"))
               (sha256
                (base32
-                "1pwjcv7hzhqawisibybma160k77a6f1v94xw6ay9c7j49vrw05w7"))
+                "18lpyq3vgr2ainmfiy14x7hcf1zxza66bhkpr54jaz2gy1viijx1"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 992eb0dcc1..7cb8f96258 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -43,7 +43,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization))
 
-(define %docker-version "18.09.0")
+(define %docker-version "18.09.2")
 
 (define-public python-docker-py
   (package
@@ -162,7 +162,7 @@ Python without keeping their credentials in a Docker configuration file.")
 (define-public containerd
   (package
     (name "containerd")
-    (version "1.2.2")
+    (version "1.2.4")
     (source
      (origin
       (method git-fetch)
@@ -171,8 +171,7 @@ Python without keeping their credentials in a Docker configuration file.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32
-        "065snv0s3v3z0ghadlii4w78qnhchcbx2kfdrvm8fk8gb4pkx1ya"))))
+       (base32 "1rw7f0y3iv0mapxid1rgpns80dcy8nhgmxmw27x8qzrzic5viivy"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/containerd/containerd"
@@ -241,7 +240,7 @@ network attachments.")
       (file-name (git-file-name name version))
       (sha256
        (base32
-        "1liqbx58grqih6m8hz9y20y5waflv19pv15l3wl64skap2bsn21c"))
+        "1zfpk2n8j6gnwbrxrh6d6pj24y60dhbanpf55shrm2yxz54ka36c"))
       (patches
        (search-patches "docker-engine-test-noinstall.patch"
                        "docker-fix-tests.patch"))))
@@ -337,6 +336,7 @@ network attachments.")
                  (substitute-LookPath "blkid" "util-linux" "/sbin/blkid")
                  (substitute-LookPath "unpigz" "pigz" "/bin/unpigz")
                  (substitute-LookPath "iptables" "iptables" "/sbin/iptables")
+                 (substitute-LookPath "iptables-legacy" "iptables" "/sbin/iptables")
                  (substitute-LookPath "ip" "iproute2" "/sbin/ip")
                  (substitute-Command "modprobe" "kmod" "/bin/modprobe")
                  (substitute-Command "pvcreate" "lvm2" "/sbin/pvcreate")
@@ -396,6 +396,7 @@ network attachments.")
              ;; Timeouts after 5 min.
              (delete-file "plugin/manager_linux_test.go")
              ;; Operation not permitted.
+             (delete-file "daemon/graphdriver/btrfs/btrfs_test.go")
              (delete-file "daemon/graphdriver/overlay/overlay_test.go")
              (delete-file "daemon/graphdriver/overlay2/overlay_test.go")
              #t))
@@ -483,7 +484,7 @@ provisioning etc.")
       (file-name (git-file-name name version))
       (sha256
        (base32
-        "1ivisys20kphvbqlazc3bsg7pk0ykj9gjx5d4yg439x4n13jxwvb"))))
+        "0jzcqh1kqbfyj6ax7z67gihaqgjiz6ddz6rq6k458l68v7zn77r8"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/docker/cli"
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 9425df707c..6ce7827391 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -123,14 +123,18 @@ markup) can be customized and extended by the user.")
 (define-public doxygen
   (package
     (name "doxygen")
-    (version "1.8.14")
+    (version "1.8.15")
+    (home-page "http://www.doxygen.nl/")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://ftp.stack.nl/pub/users/dimitri/"
-                                 name "-" version ".src.tar.gz"))
+             (uri (list (string-append home-page "files/doxygen-"
+                                       version ".src.tar.gz")
+                        (string-append "mirror://sourceforge/doxygen/rel-"
+                                       version "/doxygen-" version
+                                       ".src.tar.gz")))
              (sha256
               (base32
-               "0kcxymbam9jwiyjwyvwdjj0h74lbb6c467szsipzbxjyfl17wxfi"))
+               "0p94b4yb6bk2dxzs5kyl82xxgq2qakgbx5yy3ssbbadncb20x75x"))
              (patches (search-patches "doxygen-test.patch"))))
     (build-system cmake-build-system)
     (native-inputs
@@ -150,7 +154,6 @@ markup) can be customized and extended by the user.")
                                    (string-append
                                     (assoc-ref inputs "bash") "/bin/sh")))
                                 #t)))))
-    (home-page "http://www.stack.nl/~dimitri/doxygen/")
     (synopsis "Generate documentation from annotated sources")
     (description "Doxygen is the de facto standard tool for generating
 documentation from annotated C++ sources, but it also supports other popular
diff --git a/gnu/packages/efi.scm b/gnu/packages/efi.scm
index 43e660743a..49ca740088 100644
--- a/gnu/packages/efi.scm
+++ b/gnu/packages/efi.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +30,8 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
-  #:use-module (guix utils))
+  #:use-module (guix utils)
+  #:use-module (ice-9 match))
 
 (define-public gnu-efi
   (package
@@ -195,6 +197,12 @@ and EFI variable management.")
     (arguments
      `(#:make-flags
        (list "CC=gcc"
+             ,@(match (%current-system)
+                 ("aarch64-linux"
+                  '("ARCH=aarch64"))
+                 ("armhf-linux"
+                  '("ARCH=arm"))
+                 (_ '()))
              (string-append "INCDIR=" (assoc-ref %build-inputs "gnu-efi")
                             "/include")
              (string-append "LIBDIR=" (assoc-ref %build-inputs "gnu-efi")
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 339927a4f0..cedc1efbc8 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -41,6 +41,7 @@
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5052,7 +5053,7 @@ target will call @code{compile} on it.")
 (define-public emacs-cider
   (package
     (name "emacs-cider")
-    (version "0.18.0")
+    (version "0.20.0")
     (source
      (origin
        (method git-fetch)
@@ -5062,7 +5063,7 @@ target will call @code{compile} on it.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1m9kc88vga3q5d731qnpngnsa0n57pf21k3hll20rw8rggrx4vdn"))))
+         "0lfhzg9c931jbx27hpshk3l76gwbp6ggf668sqa77xrvymwdlsnw"))))
     (build-system emacs-build-system)
     (arguments
      '(#:exclude                        ; Don't exclude 'cider-test.el'.
@@ -5207,8 +5208,8 @@ extensions.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-collection
-  (let ((commit "0cfdf4ecf0420aac2a9dd29ff7b54067c3433d71")
-        (revision "6"))
+  (let ((commit "e7b57aae0131634d0da5e599717a86c4b3ca6092")
+        (revision "7"))
     (package
       (name "emacs-evil-collection")
       (version (git-version "0.0.1" revision commit))
@@ -5220,7 +5221,7 @@ extensions.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "1igsvgxvij918myc397cjhfybmm11znc7961vnbcd5xlviq2p01y"))))
+                  "1g7bxvgnsikpxxdimy0lymn3xz53fari048l827sjyw5kxi59d20"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)))
@@ -6547,14 +6548,14 @@ which code derived from Kelvin H's org-page.")
 (define-public emacs-xelb
   (package
     (name "emacs-xelb")
-    (version "0.16")
+    (version "0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/xelb-"
                                   version ".tar"))
               (sha256
                (base32
-                "03wsr1jr7f7zfd80h864rd4makwh4widdnj1kjv2xyjwdgap9rl8"))))
+                "0k98580vq253fjdgklgqlwl450saninfw39fbq8lv3xsnp3dcgml"))))
     (build-system emacs-build-system)
     ;; The following functions and variables needed by emacs-xelb are
     ;; not included in emacs-minimal:
@@ -6586,7 +6587,7 @@ It should enable you to implement low-level X11 applications.")
 (define-public emacs-exwm
   (package
     (name "emacs-exwm")
-    (version "0.21")
+    (version "0.22")
     (synopsis "Emacs X window manager")
     (source (origin
               (method url-fetch)
@@ -6594,7 +6595,7 @@ It should enable you to implement low-level X11 applications.")
                                   version ".tar"))
               (sha256
                (base32
-                "07ng1pgsnc3isfsyzh2gfc7391p9il8lb5xqf1z6yqn20w7k6xzj"))))
+                "0lppm8ng37i5s4x7xdrxhjbdcnpl6pyvn4g7w52zbckjsn8qnqh0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-xelb" ,emacs-xelb)))
@@ -8918,7 +8919,7 @@ outline-mode), so there is no such thing like an outshine mode, only
 (define-public emacs-biblio
   (package
     (name "emacs-biblio")
-    (version "0.1")
+    (version "0.2")
     (source
      (origin
        (method url-fetch)
@@ -8927,7 +8928,7 @@ outline-mode), so there is no such thing like an outshine mode, only
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "109fvivsb4r0rbqljngqrmxqvbnbkqlivczx6brrvlr7ci625lhf"))))
+         "0vwrljmab8m1z83048gxx5mryml9f5pb3h0jpwkvqcl0ra152lzx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-seq" ,emacs-seq)
@@ -9205,8 +9206,8 @@ navigate and display hierarchy structures.")
       (license license:gpl3+))))
 
 (define-public emacs-pulseaudio-control
-  (let ((commit "1da372ec79f5d2fb901d1f9f0679fee8848fd011")
-        (revision "2"))
+  (let ((commit "7e1a87068379075a5e9ce36c64c686c03d20d379")
+        (revision "3"))
     (package
       (name "emacs-pulseaudio-control")
       (version (git-version "0.0.1" revision commit))
@@ -9219,7 +9220,7 @@ navigate and display hierarchy structures.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "02xrsms2pjqdk6327midi61i5vg2h9cq5jwaxv43ldm68wl7hi6k"))))
+           "0wcaqyh15x56255rrj350089z15pnwixa2vf0ly6dv0hjmzmh3mr"))))
       (build-system emacs-build-system)
       (arguments
        '(#:phases (modify-phases %standard-phases
@@ -9625,6 +9626,32 @@ until the top-level form is no longer a macro call.")
     (description "Execute menu items as commands, with completion.")
     (license license:gpl3)))
 
+(define-public emacs-isearch-prop
+  (let ((commit "5e9dc44cf582d998aaa73ccd4d07cbda01248156")
+        (revision "1"))
+    (package
+      (name "emacs-isearch-prop")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/isearch-prop.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1xawppy705ybsgx566zvj8zk2aajq0sqvhvfs7nijqq32lx0a2zl"))))
+      (build-system emacs-build-system)
+      (home-page "https://www.emacswiki.org/emacs/isearch-prop.el")
+      (synopsis "Extensions to @code{isearch.el}")
+      (description "The Emacs library @code{isearch-prop.el} lets you search within
+  contexts.  You can limit incremental search to a set of zones of
+  buffer text, search contexts that in effect constitute a multi-region.
+  These zones can be defined in various ways, including some ways
+  provided specially by this library.")
+      (license license:gpl3+))))
+
 (define-public emacs-company-lua
   (let ((commit "0be8122f3adf57ad27953bf4b03545d6298d3da4"))
     (package
@@ -10645,27 +10672,26 @@ keep Parens and Indentation inline with one another.")
     (license license:gpl3+)))
 
 (define-public emacs-helm-eww
-  (let ((commit "9d36acc433bcf689598b1b4d7d47c9aeb84d6b44"))
-    (package
-      (name "emacs-helm-eww")
-      (version (git-version "0.1" "3" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/emacs-helm/helm-eww.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "06gnf84gx6qbhcw1h5jhjnvcdxkdpv0npm53x3pgqybbll5rn5dy"))))
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/emacs-helm/helm-eww/")
-      (synopsis "Helm interface to EWW")
-      (description "This package provides a Helm interface for EWW buffers,
+  (package
+    (name "emacs-helm-eww")
+    (version "1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-helm/helm-eww.git")
+                    (commit version)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0dvlp7y6kqc4azg5b7jx5lz2rwd0ia7y0y3hcj9y23zd88r73lg7"))))
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/emacs-helm/helm-eww/")
+    (synopsis "Helm interface to EWW")
+    (description "This package provides a Helm interface for EWW buffers,
 bookmarks and history.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-stumpwm-mode
   (let ((commit "8fbe071d2c6c040794060a354eb377218dc10b35")
@@ -12457,26 +12483,25 @@ correctly.")
       (license license:gpl2+))))
 
 (define-public emacs-helm-slime
-  (let ((commit "9980925f3e5f6ac5a30369d2a544e82006a79c76"))
-    (package
-      (name "emacs-helm-slime")
-      (version (git-version "0.0.0" "1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/emacs-helm/helm-slime")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0xa07gpfkzwn522x9573mq5mfxvbawdgd0m93gqj6w5a14wk8zzh"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)
-         ("emacs-slime" ,emacs-slime)))
-      (home-page "https://github.com/emacs-helm/helm-slime")
-      (synopsis "Helm for SLIME, the Superior Lisp Interaction Mode for Emacs")
-      (description "Helm-SLIME defines a few new commands:
+  (package
+    (name "emacs-helm-slime")
+    (version "0.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-helm/helm-slime")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0vn93vv2wclnwq6f480z14jn9wfp0ylhp5dd48ycc9jicfsnxqfj"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-slime" ,emacs-slime)))
+    (home-page "https://github.com/emacs-helm/helm-slime")
+    (synopsis "Helm for SLIME, the Superior Lisp Interaction Mode for Emacs")
+    (description "Helm-SLIME defines a few new commands:
 
 @itemize
 @item helm-slime-complete: Select a symbol from the SLIME completion systems.
@@ -12484,7 +12509,7 @@ correctly.")
 @item: helm-slime-apropos: Yet another slime-apropos with Helm.
 @item helm-slime-repl-history: Select an input from the SLIME REPL history and insert it.
 @end itemize\n")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-gtk-look
   (package
@@ -13110,3 +13135,51 @@ mostly geared towards Common Lisp, but some are useful for other Lisp
 dialects, too.  Redshank's code transformations aim to be expression-based (as
 opposed to character-based).")
       (license license:gpl1+))))
+
+(define-public emacs-disk-usage
+  (package
+    (name "emacs-disk-usage")
+    (version "1.1.0")
+    (home-page "https://gitlab.com/ambrevar/emacs-disk-usage.git")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1c9jmjn8vf0v4776v79pc5w0labfs4v9aysbv2w9423rg4mangbg"))))
+    (build-system emacs-build-system)
+    (synopsis "Sort and browse disk usage listings with Emacs")
+    (description "Disk Usage is a file system analyzer: it offers a tabulated
+view of file listings sorted by size.  Directory sizes are computed
+recursively.  The results are cached for speed.")
+    (license license:gpl3+)))
+
+(define-public emacs-orgit
+  (let ((commit "ddb830c38cb71e5cf86db7fa62d6ee88ab3962d5"))
+    (package
+      (name "emacs-orgit")
+      (version (git-version "1.5.1" "1" 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
+                  "0fy4n71yskfkjl6w9mzrw3pfd5lp8f48g2c9bxiwg7mwzsmsb9nb"))))
+      (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+))))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index ad7ae18781..9dab778de2 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -606,17 +606,18 @@ ready for production.")
 (define-public gerbv
   (package
     (name "gerbv")
-    (version "2.6.2")
+    (version "2.7.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gerbv/gerbv/gerbv-"
                                   version "/gerbv-" version ".tar.gz"))
               (sha256
                (base32
-                "1cw8k6ni0q8kswad03kha86fk7n06vq8p0wzsfhcnalsdshrn17i"))))
+                "1d2k43k7i4yvbpi4sw1263a8d0q98z2n7aqhmpinpkih8a681vn5"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("glib:bin" ,glib "bin")         ; for glib-compile-schemas, etc.
+       ("pkg-config" ,pkg-config)))
     (inputs
      `(("cairo" ,cairo)
        ("gtk" ,gtk+-2)
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 066d6d843b..c778ebd21e 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -109,7 +109,7 @@ single file can be mounted.")
 (define-public disorderfs
   (package
     (name "disorderfs")
-    (version "0.5.5")
+    (version "0.5.6")
     (source
      (origin
        (method git-fetch)
@@ -119,7 +119,7 @@ single file can be mounted.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "18c32qcdzbxrzg7srnqnw1ls9yqqxyk9b996yxr6w2znw6x6n8v4"))))
+         "1zn2ydap8k9fwjl3ivgrg6l32s5p4ik6ca6j1idp7c77znlv6cpp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index e44be713f2..112a6eba97 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -45,6 +45,7 @@
   #:use-module (gnu packages dns)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages dbm)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages libedit)
@@ -138,7 +139,7 @@ line client and a client based on Qt.")
 (define-public ledger
   (package
     (name "ledger")
-    (version "3.1.1")
+    (version "3.1.2")
     (source
      (origin
        (method git-fetch)
@@ -147,39 +148,17 @@ line client and a client based on Qt.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1j4p7djkmdmd858hylrsc3inamh9z0vkfl98s9wiqfmrzw51pmxp"))
-       (patches (search-patches "ledger-revert-boost-python-fix.patch"
-                                "ledger-fix-uninitialized.patch"))))
+        (base32 "0hwnipj2m9p95hhyv6kyq54m27g14r58gnsy2my883kxhpcyb2vc"))
+       (patches (search-patches "ledger-fix-uninitialized.patch"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:modules ((guix build cmake-build-system)
-                  ((guix build gnu-build-system) #:prefix gnu:)
-                  (guix build utils)
-                  (guix build emacs-utils))
-       #:imported-modules (,@%cmake-build-system-modules
-                           (guix build emacs-utils))
-       #:configure-flags
+     `(#:configure-flags
        `("-DBUILD_DOCS:BOOL=ON"
          "-DBUILD_WEB_DOCS:BOOL=ON"
-         "-DBUILD_EMACSLISP:BOOL=ON"
          "-DUSE_PYTHON:BOOL=ON"
-         "-DCMAKE_INSTALL_LIBDIR:PATH=lib"
-         ,(string-append "-DUTFCPP_INCLUDE_DIR:PATH="
-                         (assoc-ref %build-inputs "utfcpp")
-                         "/include"))
-       ;; Skip failing test BaselineTest_cmd-org during the check phase.
-       ;; This is a known upstream issue. See
-       ;; https://github.com/ledger/ledger/issues/550
-       #:make-flags (list "ARGS=-E BaselineTest_cmd-org")
+         "-DCMAKE_INSTALL_LIBDIR:PATH=lib")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'boost-compat
-           (lambda _
-             (substitute* "src/utils.h"
-               ;; This library moved in Boost 1.66.  Remove for Ledger
-               ;; versions > 3.1.1.
-               (("boost/uuid/sha1.hpp") "boost/uuid/detail/sha1.hpp"))
-             #t))
          (add-before 'configure 'install-examples
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((examples (string-append (assoc-ref outputs "out")
@@ -195,18 +174,11 @@ line client and a client based on Qt.")
              (setenv "TZDIR"
                      (string-append (assoc-ref inputs "tzdata")
                                     "/share/zoneinfo"))
-             #t))
-         (replace 'check (assoc-ref gnu:%standard-phases 'check))
-         (add-after 'install 'relocate-elisp
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((site-dir (string-append (assoc-ref outputs "out")
-                                             "/share/emacs/site-lisp"))
-                    (guix-dir (string-append site-dir "/guix.d"))
-                    (orig-dir (string-append site-dir "/ledger-mode"))
-                    (dest-dir (string-append guix-dir "/ledger-mode")))
-               (mkdir-p guix-dir)
-               (rename-file orig-dir dest-dir)
-               (emacs-generate-autoloads ,name dest-dir)))))))
+             ;; Skip failing test BaselineTest_cmd-org.
+             ;; This is a known upstream issue. See
+             ;; https://github.com/ledger/ledger/issues/550
+             (setenv "ARGS" "-E BaselineTest_cmd-org")
+             #t)))))
     (inputs
      `(("boost" ,boost)
        ("gmp" ,gmp)
@@ -216,8 +188,7 @@ line client and a client based on Qt.")
        ("tzdata" ,tzdata)
        ("utfcpp" ,utfcpp)))
     (native-inputs
-     `(("emacs" ,emacs-minimal)
-       ("groff" ,groff)
+     `(("groff" ,groff)
        ("texinfo" ,texinfo)))
     (home-page "https://ledger-cli.org/")
     (synopsis "Command-line double-entry accounting program")
@@ -243,8 +214,74 @@ in ability, and easy to use.")
                    license:asl2.0     ; src/strptime.cc
                    (license:non-copyleft
                     "file://src/wcwidth.cc"
-                    "See src/wcwidth.cc in the distribution.")
-                   license:gpl2+))))  ; lisp/*
+                    "See src/wcwidth.cc in the distribution.")))))
+
+(define-public emacs-ledger-mode
+  ;; There have been no new releases since 2016.
+  (let ((commit "253a20dc62e137ed0ed8e1dd8614ecba116610ea")
+        (revision "1"))
+    (package
+      (name "emacs-ledger-mode")
+      (version (git-version "3.1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ledger/ledger-mode.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "06wrgkqpgvk17vibrk2qikdlqn8y63jg86marp1wgmram92mb3jk"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:modules ((guix build cmake-build-system)
+                    (guix build utils)
+                    (guix build emacs-utils))
+         #:imported-modules (,@%cmake-build-system-modules
+                             (guix build emacs-utils))
+         #:tests? #f ; there are none
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'build 'build-doc
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((target (string-append (assoc-ref outputs "out")
+                                            "/share/info")))
+                 (mkdir-p target)
+                 (invoke "makeinfo" "-o" target
+                         "../source/doc/ledger-mode.texi"))
+               #t))
+           (add-after 'install 'relocate-elisp
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((site-dir (string-append (assoc-ref outputs "out")
+                                               "/share/emacs/site-lisp"))
+                      (guix-dir (string-append site-dir "/guix.d"))
+                      (orig-dir (string-append site-dir "/ledger-mode"))
+                      (dest-dir (string-append guix-dir "/ledger-mode")))
+                 (mkdir-p guix-dir)
+                 (rename-file orig-dir dest-dir)
+                 (emacs-generate-autoloads ,name dest-dir)
+                 #t))))))
+      (native-inputs
+       `(("emacs-minimal" ,emacs-minimal)
+         ("texinfo" ,texinfo)))
+      (home-page "https://ledger-cli.org/")
+      (synopsis "Command-line double-entry accounting program")
+      (description
+       "Ledger is a powerful, double-entry accounting system that is
+accessed from the UNIX command-line.  This may put off some users, since
+there is no flashy UI, but for those who want unparalleled reporting
+access to their data there are few alternatives.
+
+Ledger uses text files for input.  It reads the files and generates
+reports; there is no other database or stored state.  To use Ledger,
+you create a file of your account names and transactions, run from the
+command line with some options to specify input and requested reports, and
+get output.  The output is generally plain text, though you could generate
+a graph or html instead.  Ledger is simple in concept, surprisingly rich
+in ability, and easy to use.
+
+This package provides the Emacs mode.")
+      (license license:gpl2+))))
 
 (define-public geierlein
   (package
@@ -591,7 +628,7 @@ Monero GUI client.")
 (define-public python-trezor-agent
   (package
     (name "python-trezor-agent")
-    (version "0.9.4")
+    (version "0.13.0")
     (source
      (origin
        (method git-fetch)
@@ -600,11 +637,18 @@ Monero GUI client.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "15aaqk79d9y9nbsfznf2iscz12z5ispcj8kr8v5bc0sqqj2brs12"))))
+        (base32 "0i4igkxi8fwdlbhg6nx27lhnc9v9nmrw4j5fvpnc202n6yjlc7x7"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'remove-requires-backports-shutil-which
+           ;; Remove requires on backport of shutil_which, as python 3.4+ has
+           ;; a built-in implementation supported in python-trezor-agent.
+           (lambda _
+             (substitute* "setup.py"
+               (("'backports.shutil_which>=3.5.1',") ""))
+             #t))
          (delete 'check)
          (add-after 'install 'check
            (lambda* (#:key outputs inputs #:allow-other-keys)
@@ -612,15 +656,22 @@ Monero GUI client.")
              (add-installed-pythonpath inputs outputs)
              (invoke "py.test"))))))
     (propagated-inputs
-     `(("python-ecdsa" ,python-ecdsa)
+     `(("python-configargparse" ,python-configargparse)
+       ("python-daemon" ,python-daemon)
+       ("python-docutils" ,python-docutils)
+       ("python-ecdsa" ,python-ecdsa)
        ("python-ed25519" ,python-ed25519)
+       ("python-mnemonic" ,python-mnemonic)
+       ("python-pymsgbox" ,python-pymsgbox)
        ("python-semver" ,python-semver)
-       ("python-unidecode" ,python-unidecode)))
+       ("python-unidecode" ,python-unidecode)
+       ("python-wheel" ,python-wheel)))
     (native-inputs
-     `(("python-mock" ,python-mock)
+     `(("gnupg" ,gnupg)
+       ("python-mock" ,python-mock)
        ("python-pytest" ,python-pytest)))
     (home-page "https://github.com/romanz/trezor-agent")
-    (synopsis "TREZOR SSH and GPG host support")
+    (synopsis "Use hardware wallets as SSH and GPG agent")
     (description
      "@code{libagent} is a library that allows using TREZOR, Keepkey and
 Ledger Nano as a hardware SSH/GPG agent.")
@@ -789,19 +840,32 @@ Then set the environment variable GNUPGHOME to
 (define-public trezor-agent
   (package
     (name "trezor-agent")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "trezor_agent" version))
        (sha256
         (base32
-         "1i5cdamlf3c0ym600pjklij74p8ifj9cv7xrpnrfl1b8nkadswbz"))))
+         "144657c7bn0a667dq5fv5r6j7iilxf3h9agj29v1m2qpq40g0az8"))))
+    (arguments
+     ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'".
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'wrap 'fixup-agent-py
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               ;; overwrite the wrapper with the real thing.
+               (install-file "./trezor_agent.py"
+                             (string-append out "/bin"))
+             #t))))))
     (build-system python-build-system)
     (inputs
      `(("python-trezor" ,python-trezor)
        ("python-trezor-agent" ,python-trezor-agent)))
-    (home-page "http://github.com/romanz/trezor-agent")
+    (native-inputs
+     `(("python-hidapi" ,python-hidapi)))
+    (home-page "https://github.com/romanz/trezor-agent")
     (synopsis "Using Trezor as hardware SSH/GPG agent")
     (description "This package allows using Trezor as a hardware SSH/GPG
 agent.")
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index bc4bbd876a..aeef2f340c 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -341,16 +341,16 @@ referred to as the \"Odin 3 protocol\".")
 (define-public ifdtool
   (package
     (name "ifdtool")
-    (version "4.7")
+    (version "4.9")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://review.coreboot.org/p/coreboot")
+                    (url "https://github.com/coreboot/coreboot.git")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nw555i0fm5kljha9h47bk70ykbwv8ddfk6qhz6kfqb79vzhy4h2"))))
+                "0jidj29jh6p65d17k304wlzhxvp4p3c2namgcdwg2sxq8jfr0zlm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -359,12 +359,12 @@ referred to as the \"Odin 3 protocol\".")
              (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
-        (add-after 'unpack 'chdir
-          (lambda _
-            (chdir "util/ifdtool")
-            #t))
-        (delete 'configure)
-        (delete 'check))))
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "util/ifdtool")
+             #t))
+         (delete 'configure))           ; no configure script
+       #:tests? #f))                    ; no test suite
     (home-page "https://github.com/corna/me_cleaner/")
     (synopsis "Intel Firmware Descriptor dumper")
     (description "This package provides @command{ifdtool}, a program to
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index f77f9da163..9d49c02cf6 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2017 Mohammed Sadiq <sadiq@sadiqpk.org>
 ;;; Copyright © 2018 Charlie Ritter <chewzerita@posteo.net>
 ;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
+;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -857,6 +858,56 @@ Powerline support.")
 designed to work well in user interface environments.")
     (license license:silofl1.1)))
 
+(define-public font-adobe-source-sans-pro
+  (package
+    (name "font-adobe-source-sans-pro")
+    (version "2.040R-ro-1.090R-it")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/adobe-fonts/source-sans-pro/archive/"
+                    (regexp-substitute/global
+                     ;; The upstream tag uses "/" between the roman and italic
+                     ;; versions, so substitute our "-" separator here.
+                     #f "R-ro-" version 'pre "R-ro/" 'post) ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1wpbhd2idps53ph8rg1mhr3vz4lsgbpjprcq10nliwcxdz9d8lv0"))))
+    (build-system font-build-system)
+    (home-page "https://github.com/adobe-fonts/source-sans-pro")
+    (synopsis
+     "Sans serif font family for user interface environments")
+    (description
+     "Source Sans Pro is a set of OpenType fonts that have been designed to
+work well in user interface (UI) environments.")
+    (license license:silofl1.1)))
+
+(define-public font-adobe-source-serif-pro
+  (package
+    (name "font-adobe-source-serif-pro")
+    (version "2.007R-ro-1.007R-it")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/adobe-fonts/source-serif-pro/archive/"
+                    (regexp-substitute/global
+                     ;; The upstream tag uses "/" between the roman and italic
+                     ;; versions, so substitute our "-" separator here.
+                     #f "R-ro-" version 'pre "R-ro/" 'post) ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1sws9k26ldqk375qsigk1zv8cq1xlvadjwvv3dqrcc3qzm1c7hwc"))))
+    (build-system font-build-system)
+    (home-page "https://github.com/adobe-fonts/source-serif-pro")
+    (synopsis
+     "Serif typeface to complement Source Sans Pro for setting text")
+    (description
+     "Source Serif Pro is a set of OpenType fonts to complement the Source
+Sans Pro family.")
+    (license license:silofl1.1)))
+
 (define-public font-fira-mono
   (package
     (name "font-fira-mono")
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index bc44d7537a..916f8f6b0e 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -175,7 +175,7 @@ as required.")
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/"
-                           name "/" name "-" version ".tar.bz2"))
+                           "libfilezilla/libfilezilla-" version ".tar.bz2"))
        (sha256
         (base32
          "17zlhw5b1a7jzh50cbpy2is3sps5lnzch5yf9qm7mwrviw9c8j10"))))
@@ -209,14 +209,14 @@ output.
 (define-public filezilla
   (package
     (name "filezilla")
-    (version "3.39.0")
+    (version "3.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/client/"
                            "FileZilla_" version "_src.tar.bz2"))
        (sha256
-        (base32 "0ks42q6mi3qx85zpa98izkyficv2bdh3jnvmy97xjnjyfy9mwlgv"))))
+        (base32 "11b0410fcwrahq5dd7ph10bc09m62sxra4bjp0kj5gph822s0v63"))))
     (build-system gnu-build-system)
     (arguments
       ;; Don't let filezilla phone home to check for updates.
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 6b641be0ef..ac01cb3f2f 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Julian Graham <joolean@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
@@ -431,7 +431,7 @@ support.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "1.2.1")
+    (version "1.2.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -440,7 +440,7 @@ support.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1dl06k2p0r7l20ghxcq5sn7j0jl2l8q4m27vmfs2qfgvldjll2h3"))))
+                "0ay4x1b6h5xfax1cqry2fklcmqi6a16klgmci4gkhga7as66lnnn"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -641,17 +641,15 @@ programming language.")
 (define-public allegro-4
   (package
     (name "allegro")
-    (version "4.4.2")
+    (version "4.4.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/liballeg/allegro5/"
                                   "releases/download/" version "/allegro-"
                                   version ".tar.gz"))
-              (patches (search-patches
-                        "allegro4-mesa-18.2.5-and-later.patch"))
               (sha256
                (base32
-                "1p0ghkmpc4kwij1z9rzxfv7adnpy4ayi0ifahlns1bdzgmbyf88v"))))
+                "1d5ws3ihvpa6f4qc6a6drq31pajw6bblxifr4kcxzqj9br1nw28y"))))
     (build-system cmake-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 8858de7713..fc23b709fb 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -656,7 +656,7 @@ destroying an ancient book using a special wand.")
 (define-public gnubg
   (package
     (name "gnubg")
-    (version "1.06.001")
+    (version "1.06.002")
     (source
      (origin
        (method url-fetch)
@@ -664,7 +664,7 @@ destroying an ancient book using a special wand.")
                            version "-sources." "tar.gz"))
        (sha256
         (base32
-         "0snz3j1bvr25ji7lg82bl2gm2s2x9lrpc7viw0hclgz0ql74cw7b"))))
+         "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
     (build-system gnu-build-system)
     (inputs `(("glib" ,glib)
               ("readline" ,readline)
@@ -2143,22 +2143,22 @@ Battle for Wesnoth}.")))
 (define-public gamine
   (package
     (name "gamine")
-    (version "1.5")
+    (version "1.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gamine-game/"
                                   "gamine-" version ".tar.gz"))
               (sha256
                (base32
-                "08wnk7w84c2413hwny89j2cn89cvfdf67bfc6wl0bf475if0mf4h"))))
+                "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
     (inputs
      `(("gstreamer" ,gstreamer)
-       ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
-       ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
+       ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
+       ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
        ("gtk+" ,gtk+)))
     (arguments
      `(#:tests? #f
@@ -2413,7 +2413,7 @@ OpenGFX provides you with...
     (build-system gnu-build-system)
     (native-inputs
      `(("catcodec" ,catcodec)
-       ("python" ,python2-minimal)))
+       ("python" ,python-2)))
     (arguments
      `(#:make-flags
        (list (string-append "INSTALL_DIR=" %output
@@ -2450,7 +2450,7 @@ the original Transport Tycoon Deluxe.")
          "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("python" ,python2-minimal)))
+     `(("python" ,python-2)))
     (arguments
      `(#:make-flags
        (list (string-append "INSTALL_DIR=" %output
@@ -2838,7 +2838,9 @@ http://lavachat.symlynx.com/unix/")
                 (file-name (string-append name "-" version ".tar.gz"))
                 (sha256
                  (base32
-                  "1vs9k6f5fgsiy1n72imlqm8khjwm8cryc08zwd4gr7yxlxv45bs0"))))
+                  "1vs9k6f5fgsiy1n72imlqm8khjwm8cryc08zwd4gr7yxlxv45bs0"))
+                (patches
+                 (search-patches "red-eclipse-remove-gamma-name-hack.patch"))))
       (build-system gnu-build-system)
       (arguments
        `(#:tests? #f            ; no check target
@@ -3421,22 +3423,23 @@ the GNU GPL.")
 (define-public tintin++
   (package
     (name "tintin++")
-    (version "2.01.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/tintin"
-                                  "/TinTin++ Source Code/" version
-                                  "/tintin" "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0pnnbcm96xbj69358568rpvp164rjmcvhnnzs7nvj062pi2hqcxx"))))
+    (version "2.01.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
+                           (version-major+minor version)
+                           "/tintin-" version ".tar.gz"))
+       (sha256
+        (base32
+         "033n84pyxml3n3gd4dq0497n9w331bnrr1gppwipz9ashmq8jz7v"))))
     (inputs
      `(("gnutls" ,gnutls)
        ("pcre" ,pcre)
        ("readline" ,readline)
        ("zlib" ,zlib)))
     (arguments
-     '(#:tests? #f ; no test suite
+     '(#:tests? #f                      ; no test suite
        #:phases
        (modify-phases %standard-phases
          ;; The source is in tt/src.
@@ -4104,9 +4107,8 @@ small robot living in the nano world, repair its maker.")
 (define-public teeworlds
   (package
     (name "teeworlds")
-    (version "0.7.0")
+    (version "0.7.2")
     (source (origin
-              ;; do not use auto-generated tarballs
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/teeworlds/teeworlds.git")
@@ -4114,7 +4116,7 @@ small robot living in the nano world, repair its maker.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0jigg2yikihbivzs7hpljr0mghx1l9v4f1cdr8fbmqv2wb51ah8q"))
+                "15l988qcsqgb6rjais0qd5sd2rjanm2708jmzvkariqzz0d6pb93"))
               (modules '((guix build utils)
                          (ice-9 ftw)
                          (ice-9 regex)
@@ -4131,7 +4133,7 @@ small robot living in the nano world, repair its maker.")
                (search-patches "teeworlds-use-latest-wavpack.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no tests included
+     `(#:tests? #f                      ; no tests included
        #:modules ((guix build gnu-build-system)
                   (guix build utils)
                   (srfi srfi-26))
@@ -4293,17 +4295,17 @@ with the mouse isn’t always trivial.")
 (define-public chroma
   (package
     (name "chroma")
-    (version "1.15")
+    (version "1.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0nzm3j5wjazr1d6pkydqlc48sjf72hggq0hmx8mhq03114mmiir5"))))
+                "1gfaw1kf7cxf5ibr61n6dxjihi49gmysn4cvawx1pqvy52ljpk0p"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f)) ; no tests included
+     `(#:tests? #f))                    ; no tests included
     (inputs
      `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
        ("freetype" ,freetype)
@@ -4948,16 +4950,16 @@ some graphical niceities, and numerous bug-fixes and other improvements.")
   (package
     (inherit quakespasm)
     (name "vkquake")
-    (version "1.00.0")
+    (version "1.01.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Novum/vkQuake/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Novum/vkQuake.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0bviv18jvp41jvrabgl7l5kq4n1p6p3rywij481yswawdw6l5idh"))))
+        (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
     (arguments
      `(#:make-flags
        (let ((vulkanlib (string-append (assoc-ref %build-inputs
@@ -5376,7 +5378,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
 (define-public fortune-mod
   (package
     (name "fortune-mod")
-    (version "2.6.1")
+    (version "2.6.2")
     (source
      (origin
        (method git-fetch)
@@ -5386,7 +5388,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "17183z8ls6hrngh8a3374csagqa2acs8jl21dqm7gwj4lk0ghkba"))))
+         "11xff87s8ifw2dqs90n0rjq0psv4i7ykybygmibsqjj7id3xxw4c"))))
     (build-system cmake-build-system)
     (arguments
      `(#:test-target "check"
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index a53a4f2c2f..c08c1f6758 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -39,6 +39,7 @@
 (define-public gd
   (package
     (name "gd")
+    (replacement gd/fixed)
     ;; Note: With libgd.org now pointing to github.com, genuine old
     ;; tarballs are no longer available.  Notably, versions 2.0.x are
     ;; missing.
@@ -94,6 +95,16 @@ most common applications of GD involve website development.")
                            "See COPYING file in the distribution."))
     (properties '((cpe-name . "libgd")))))
 
+(define-public gd/fixed
+  (hidden-package
+    (package
+      (inherit gd)
+      (source (origin
+                (inherit (package-source gd))
+                (patches (append (origin-patches (package-source gd))
+                                 (search-patches "gd-CVE-2019-6977.patch"
+                                                 "gd-CVE-2019-6978.patch"))))))))
+
 (define-public perl-gd
   (package
     (name "perl-gd")
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm
new file mode 100644
index 0000000000..792bddf5a5
--- /dev/null
+++ b/gnu/packages/genimage.scm
@@ -0,0 +1,194 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages genimage)
+  #:use-module (guix utils)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build utils)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages bootloaders)
+  #:use-module (gnu packages cdrom)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages disk)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages mtools)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages virtualization)
+  #:use-module (gnu packages wm))
+
+(define-public genimage
+  (package
+    (name "genimage")
+    (version "10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pengutronix/genimage.git")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0had00p2why2l1fl14mq7nbhmmfbd3na4qnnpg36akdy05g67jbn"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'guixify
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Note to maintainers: Check ".def =" lines in source.
+             (substitute* "config.c"
+              (("\\.def = \"cpio\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "cpio")
+                              "/bin/cpio\""))
+              (("\\.def = \"dd\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "coreutils")
+                              "/bin/dd\""))
+              (("\\.def = \"debugfs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "e2fsprogs")
+                              "/sbin/debugfs\""))
+              (("\\.def = \"e2fsck\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "e2fsprogs")
+                              "/sbin/e2fsck\""))
+              (("\\.def = \"genext2fs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "genext2fs")
+                              "/bin/genext2fs\""))
+              (("\\.def = \"genisoimage\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "cdrkit-libre")
+                              "/bin/genisoimage\""))
+              (("\\.def = \"mcopy\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "mtools")
+                              "/bin/mcopy\""))
+              (("\\.def = \"mmd\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "mtools")
+                              "/bin/mmd\""))
+              ;;; Note: mkcramfs is obsolete.
+              (("\\.def = \"mkdosfs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "dosfstools")
+                              "/sbin/mkfs.fat\""))
+              (("\\.def = \"mke2fs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "e2fsprogs")
+                              "/sbin/mke2fs\""))
+              (("\\.def = \"mkfs\\.jffs2\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "mtd-utils")
+                              "/sbin/mkfs.jffs2\""))
+              (("\\.def = \"mkfs\\.ubifs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "mtd-utils")
+                              "/sbin/mkfs.ubifs\""))
+              (("\\.def = \"mksquashfs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "squashfs-tools")
+                              "/bin/mksquashfs\""))
+              (("\\.def = \"qemu-img\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "qemu")
+                              "/bin/qemu-img\""))
+              (("\\.def = \"tar\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "tar")
+                              "/bin/tar\""))
+              (("\\.def = \"tune2fs\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "e2fsprogs")
+                              "/sbin/tune2fs\""))
+              (("\\.def = \"ubinize\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "mtd-utils")
+                              "/sbin/ubinize\""))
+              (("\\.def = \"mkimage\"")
+               (string-append ".def = \""
+                              (assoc-ref inputs "u-boot-tools")
+                              "/bin/mkimage\"")))
+             (substitute* "test/basic-images.test"
+              ;; Work around bug in sharness.sh.
+              (("mkdosfs")
+               "mkfs.fat")
+              ;; Work around bug in sharness.sh.
+              (("dd,mkfs\\.fat,mcopy")
+               "dd,mkfs_fat,mcopy")
+              ;; Should be in the next upstream release.
+              (("qemu_img") "qemu-img"))
+             (substitute* "util.c"
+              (("\"/bin/sh\"")
+               (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\"")))
+             ;; We don't have /etc/passwd so uid 0 is not known as "root".
+             ;; Thus patch it out.
+             (substitute* '("test/ext2test.dump"
+                            "test/ext3test.dump"
+                            "test/ext4test.dump"
+                            "test/mke2fs.dump")
+              (("root") "unknown"))
+             #t))
+         (add-before 'check 'setenv-check
+           (lambda _
+             ;; Our container doesn't provide access to /etc/mtab
+             (setenv "EXT2FS_NO_MTAB_OK" "1")
+             ;; Make test reproducible
+             (setenv "GENIMAGE_MKFJFFS2" "mkfs.jffs2 -U")
+             (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "make" "TEST_LOG_COMPILER=" "check"))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ;;; Note: cramfs is obsolete.
+       ("dtc" ,dtc) ; for the tests
+       ("fdisk" ,fdisk) ; for the tests
+       ("pkg-config" ,pkg-config)
+       ("util-linux" ,util-linux))) ; for the tests
+    (inputs
+     `(("bash" ,bash)
+       ("cdrkit-libre" ,cdrkit-libre)
+       ("cpio" ,cpio)
+       ;; Note: invoked by final executable.
+       ("coreutils" ,coreutils) ; chmod, dd
+       ("dosfstools" ,dosfstools)
+       ("e2fsprogs" ,e2fsprogs)
+       ("genext2fs" ,genext2fs)
+       ("libconfuse" ,libconfuse)
+       ("mtd-utils" ,mtd-utils)
+       ("mtools" ,mtools)
+       ("qemu" ,qemu-minimal)
+       ("squashfs-tools" ,squashfs-tools)
+       ("tar" ,tar)
+       ("u-boot-tools" ,u-boot-tools)))
+    (synopsis "Create Flash images according to specification")
+    (description "@command{genimage} creates Flash images according to a
+specification file.")
+    (home-page "https://github.com/pengutronix/genimage")
+    (license license:gpl2)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 6ea89dc92a..884f57eabd 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017, 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
@@ -32,6 +32,7 @@
   #:use-module (guix build-system scons)
   #:use-module (guix build-system r)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -743,25 +744,25 @@ to create databases that are optimized for rendering/tile/map-services.")
 (define-public protozero
   (package
     (name "protozero")
-    (version "1.6.3")
+    (version "1.6.5")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/mapbox/protozero/archive/v"
-                            version ".tar.gz"))
-    (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1xaj4phz1r7xn0vgdfvfkz8b0bizgb6mavjky1zqcvdmbwgwgly5"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mapbox/protozero.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10ldzni46cplmkgx1f73yn95qcb71xh9nxpcfdmi107y3kvicv3c"))))
     (build-system cmake-build-system)
     (home-page "https://github.com/mapbox/protozero")
     (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
-    (description "Protozero is a minimalistic protocol buffer decored and
+    (description "Protozero is a minimalistic protocol buffer decoder and
 encoder in C++.  The developer using protozero has to manually translate the
 @file{.proto} description into code.")
     (license (list
-               license:asl2.0; for folly
-               license:bsd-2))))
+              license:asl2.0            ; for folly
+              license:bsd-2))))
 
 (define-public libosmium
   (package
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index cd0deac158..9f0a87a40a 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 ;;;
@@ -49,7 +49,7 @@
 (define-public babl
   (package
     (name "babl")
-    (version "0.1.56")
+    (version "0.1.62")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://download.gimp.org/pub/babl/"
@@ -63,7 +63,7 @@
                                         "/babl-" version ".tar.bz2")))
               (sha256
                (base32
-                "0a2dvihah1j7qi5dp1qzzlwklcqnndmxsm7lc7i78g7c2yknrlla"))))
+                "047msfzj8v4sfl61a2xhd69r9rh2pjq4lzpk3j10ijyv9qbry9yw"))))
     (build-system gnu-build-system)
     (home-page "http://gegl.org/babl/")
     (synopsis "Image pixel format conversion library")
@@ -80,15 +80,15 @@ provided, as well as a framework to add new color models and data types.")
 (define-public gegl
   (package
     (name "gegl")
-    (version "0.4.8")
+    (version "0.4.12")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://download.gimp.org/pub/gegl/"
                                         (string-take version 3)
-                                        "/" name "-" version ".tar.bz2")))
+                                        "/gegl-" version ".tar.bz2")))
               (sha256
                (base32
-                "0jdfhf8wikba4h68k505x0br3gisiwivc33aca8v3ibaqpp6i53i"))))
+                "0ljqxc4iyy2hrj31pxcy1xp4xm5zbx1nigqisphmg4p8mcz2jrz9"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("LDFLAGS=-lm")))
@@ -118,7 +118,7 @@ buffers.")
 (define-public gimp
   (package
     (name "gimp")
-    (version "2.10.6")
+    (version "2.10.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.gimp.org/pub/gimp/v"
@@ -126,7 +126,7 @@ buffers.")
                                   "/gimp-" version ".tar.bz2"))
               (sha256
                (base32
-                "07qh2ljbza2mph1gh8sicn27qihhj8hx3ivvry2874cfh8ghgj2f"))))
+                "16sb4kslwin2jbgdb4nhks78pd0af8mvj8g5hap3hj946p7w2jfq"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ; 9 MiB of gtk-doc HTML
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index b673cbffe6..8a336a50f4 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -221,7 +221,7 @@ also known as DXTn or DXTC) for Mesa.")
 (define-public mesa
   (package
     (name "mesa")
-    (version "18.3.1")
+    (version "18.3.4")
     (source
       (origin
         (method url-fetch)
@@ -233,7 +233,7 @@ also known as DXTn or DXTC) for Mesa.")
                                   version "/mesa-" version ".tar.xz")))
         (sha256
          (base32
-          "0qyw9dj2p9n91qzc4ylck2an7ibssjvzi2bjcpv2ajk851yq47sv"))
+          "01xv03ah4l5lcfx015n3fg1620dh4nbbv6gmhh6zhdsx6sj4sc9j"))
         (patches
          (search-patches "mesa-skip-disk-cache-test.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 3a34356beb..366051a3e0 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -21,7 +21,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017, 2018 nee <nee-git@hidamari.blue>
@@ -32,7 +32,8 @@
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
-;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -127,6 +128,7 @@
   #:use-module (gnu packages rdesktop)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
+  #:use-module (gnu packages rust)
   #:use-module (gnu packages samba)
   #:use-module (gnu packages scanner)
   #:use-module (gnu packages selinux)
@@ -277,7 +279,7 @@ features to enable users to create their discs easily and quickly.")
      `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("gobject-introspection" ,gobject-introspection)
        ("duplicity" ,duplicity)
-       ("python" ,python2-minimal)
+       ("python" ,python-2)
        ("python-pygobject" ,python2-pygobject)
        ("gtk+" ,gtk+)
        ("libnotify" ,libnotify)
@@ -975,6 +977,88 @@ for translations, though this is only a dependency for the maintainers.  This
 database is translated at Transifex.")
     (license license:gpl2+)))
 
+(define-public system-config-printer
+  (package
+    (name "system-config-printer")
+    (version "1.5.11")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "https://github.com/zdohnal/system-config-printer/releases/"
+                   "download/" version
+                   "/system-config-printer-" version ".tar.xz"))
+             (sha256
+              (base32
+               "1lq0q51bhanirpjjvvh4xiafi8hgpk8r32h0dj6dn3f32z8pib9q"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:imported-modules ((guix build python-build-system)
+                           ,@%glib-or-gtk-build-system-modules)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-Makefile.am
+           (lambda _
+             ;; The Makefile generates some scripts, so set a valid shebang
+             (substitute* "Makefile.am"
+               (("/bin/bash") (which "bash")))
+             (delete-file "configure")
+             #t))
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Modify the man XML otherwise xmlto tries to access the network
+             (substitute* "man/system-config-printer.xml"
+               (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                (string-append (assoc-ref inputs "docbook-xml")
+                               "/xml/dtd/docbook/")))
+             #t))
+         (add-after 'install 'wrap-for-python
+           (@@ (guix build python-build-system) wrap))
+         (add-after 'install 'wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out               (assoc-ref outputs "out"))
+                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
+               (for-each
+                (lambda (program)
+                  (wrap-program program
+                    `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+                (map (lambda (name)
+                       (string-append out "/bin/" name))
+                     '("system-config-printer"
+                       "system-config-printer-applet"
+                       "install-printerdriver"
+                       "scp-dbus-service"))))
+             #t)))))
+    (inputs
+     `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gobject-introspection" ,gobject-introspection)
+       ("python" ,python)
+       ("cups" ,cups)
+       ("python-dbus" ,python-dbus)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pycups" ,python-pycups)
+       ("python-requests" ,python-requests)
+       ("python-pycairo" ,python-pycairo)
+       ("libnotify" ,libnotify)
+       ("packagekit" ,packagekit)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("desktop-file-utils" ,desktop-file-utils)
+       ("glib" ,glib)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("intltool" ,intltool)
+       ("xmlto" ,xmlto)
+       ("docbook-xml" ,docbook-xml-4.1.2)
+       ("docbook-xsl" ,docbook-xsl)
+       ("libxml2" ,libxml2)))
+    (home-page "https://github.com/zdohnal/system-config-printer")
+    (synopsis "CUPS administration tool")
+    (description
+     "system-config-printer is a CUPS administration tool.  It's written in
+Python using GTK+, and uses the @acronym{IPP, Internet Printing Protocol} when
+configuring CUPS.")
+    (license license:gpl2+)))
+
 (define-public hicolor-icon-theme
   (package
     (name "hicolor-icon-theme")
@@ -1218,7 +1302,7 @@ dealing with different structured file formats.")
 (define-public librsvg
   (package
     (name "librsvg")
-    (version "2.40.20")
+    (version "2.44.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1226,11 +1310,22 @@ dealing with different structured file formats.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0ay9himvw1l1swcf3h1312d2iqzfl65kpbfgiyfykgvq7cydvx6g"))))
+                "1h3qnqhr0l7pd2bxg69ki6ckl4srdwgr471dpp4jq9i4784hp0v6"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:make-flags '("CC=gcc")
+       #:phases
        (modify-phases %standard-phases
+         ;; Don't patch anything in vendor/ to avoid having to recompute
+         ;; checksums for the bundled Cargo "crates".  TODO: Unbundle those.
+         (delete 'patch-source-shebangs)
+         (delete 'patch-generated-file-shebangs)
+         (delete 'patch-usr-bin-file)
+         (add-before 'configure 'patch-all-the-things
+           (lambda _
+             (for-each patch-shebang '("tap-driver.sh" "tap-test"))
+             (patch-/usr/bin/file "configure")
+             #t))
          (add-before 'configure 'pre-configure
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "gdk-pixbuf-loader/Makefile.in"
@@ -1244,22 +1339,32 @@ dealing with different structured file formats.")
                (("gdk_pixbuf_cache_file = .*$")
                 "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))
              #t))
-         (add-after 'unpack 'remove-failing-tests
+         (add-before 'check 'remove-failing-tests
            (lambda _
              (with-directory-excursion "tests/fixtures/reftests"
                (for-each delete-file
-                         '(;; This test fails on i686:
+                         '(;; The images produced by these tests differ slightly
+                           ;; from their reference counterparts due to differences
+                           ;; in the build environment (missing fonts, etc).  See
+                           ;; <tests/README.md> for details.
+                           ;; These fail on x86_64.
+                           "svg1.1/coords-viewattr-02-b.svg"
+                           "svg1.1/filters-composite-04-f.svg"
+                           "svg1.1/filters-image-01-b.svg"
+                           "svg1.1/filters-conv-02-f.svg"
+                           "svg1.1/filters-conv-04-f.svg"
+                           ;; This test fails on i686:
                            "svg1.1/masking-path-04-b.svg"
-                           "svg1.1/masking-path-04-b-ref.png"
                            ;; This test fails on armhf:
                            "svg1.1/masking-mask-01-b.svg"
-                           "svg1.1/masking-mask-01-b-ref.png"
                            ;; This test fails on aarch64:
-                           "bugs/777834-empty-text-children.svg"
-                           "bugs/777834-empty-text-children-ref.png")))
+                           "bugs/777834-empty-text-children.svg")))
              #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ;; This is the minimum supported Rust version in Librsvg 2.44.
+       ("rust" ,rust-1.27)
+       ("cargo" ,rust-1.27 "cargo")
        ("glib" ,glib "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
     (inputs
@@ -4572,6 +4677,14 @@ such as gzip tarballs.")
                    (out  (assoc-ref outputs "out")))
                (wrap-program (string-append out "/bin/gnome-session")
                  `("PATH" ":" prefix (,(string-append glib "/bin"))))
+               #t)))
+         (add-after 'install 'add-absolute-paths-to-desktop-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (substitute* (map (lambda (x)
+                                   (string-append out "/share/xsessions/" x))
+                                 '("gnome.desktop" "gnome-xorg.desktop"))
+                 (("gnome-session") (string-append out "/bin/gnome-session")))
                #t))))
 
        #:configure-flags
@@ -5317,10 +5430,6 @@ libxml2.")
          ;; service for TTY 1 before starting GDM).
          "--with-initial-vt=7"
 
-         ;; By default, GDM expects distributions to install a custom Xsession
-         ;; script. It provides a generic one if --enable-gdm-xsession is set.
-         "--enable-gdm-xsession"
-
          ;; Use '/etc/environment' for locale settings instead of the
          ;; systemd-specific '/etc/locale.conf'.
          "--with-lang-file=/etc/environment"
@@ -5338,7 +5447,7 @@ libxml2.")
        (modify-phases %standard-phases
          (add-before
           'configure 'pre-configure
-          (lambda _
+          (lambda* (#:key inputs #:allow-other-keys)
             ;; We don't have <systemd/sd-daemon.h>.
             (substitute* '("common/gdm-log.c"
                            "daemon/gdm-server.c"
@@ -5367,44 +5476,64 @@ libxml2.")
                "\"/run/current-system/profile/share/wayland")
               (("DATADIR \"/gnome")
                "\"/run/current-system/profile/share/gnome"))
-            (substitute* '("daemon/gdm-session.c")
-              (("set_up_session_environment \\(self\\);")
-               (string-append
-                "set_up_session_environment (self);\n"
-                ;; Propagate GDM_X_SERVER environment variable (which is set
-                ;; by the GDM service, as it's a function of what X modules
-                ;; the user decides to have available) down to worker
-                ;; processes.
-                "gdm_session_set_environment_variable (self, \"GDM_X_SERVER\",\n"
-                "    g_getenv (\"GDM_X_SERVER\"));\n"
-                ;; FIXME: Really glib should be declaring XDG_CONFIG_DIRS as a
-                ;; variable, but it doesn't do that right now.  Anyway
-                ;; /run/current-system/profile/share/gnome-session/sessions/gnome.desktop
-                ;; requires that a number of .desktop files be present, and
-                ;; these special .desktop files are in $XDG_CONFIG_DIRS (which
-                ;; defaults to /etc/xdg if it's not set).  Here we need to
-                ;; provide a value such that the GNOME session's requirements
-                ;; are met (provided GNOME is installed of course).
-                "gdm_session_set_environment_variable (self, \"XDG_CONFIG_DIRS\",\n"
-                "    \"/run/current-system/profile/etc/xdg\");\n"
-                ;; The session bus (which GDM will initialize from the this
-                ;; session environment) needs to know where to find the system
-                ;; service files.
-                "gdm_session_set_environment_variable (self, \"XDG_DATA_DIRS\",\n"
-                "    \"/run/current-system/profile/share\");\n"
-                )))
+            (let ((propagate '("GDM_CUSTOM_CONF"
+                               "GDM_DBUS_DAEMON"
+                               "GDM_X_SERVER"
+                               "GDM_X_SESSION"
+                               ;; XXX: Remove this once GNOME Shell is
+                               ;; a dependency of GDM.
+                               "XDG_DATA_DIRS")))
+              (substitute* "daemon/gdm-session.c"
+                (("set_up_session_environment \\(self\\);")
+                 (apply string-append
+                        "set_up_session_environment (self);\n"
+                        (map (lambda (name)
+                               (string-append
+                                "gdm_session_set_environment_variable "
+                                "(self, \"" name "\","
+                                "g_getenv (\"" name "\"));\n"))
+                             propagate)))))
             ;; Look for custom GDM conf in /run/current-system.
             (substitute* '("common/gdm-settings-desktop-backend.c")
               (("GDM_CUSTOM_CONF")
-               "\"/run/current-system/etc/gdm/custom.conf\""))
+               (string-append "(g_getenv(\"GDM_CUSTOM_CONF\") != NULL"
+                              " ? g_getenv(\"GDM_CUSTOM_CONF\")"
+                              " : GDM_CUSTOM_CONF)")))
             ;; Use service-supplied path to X.
             (substitute* '("daemon/gdm-server.c")
               (("\\(X_SERVER X_SERVER_ARG_FORMAT")
                "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
             (substitute* '("daemon/gdm-x-session.c")
+              (("\"dbus-daemon\"")
+               "g_getenv (\"GDM_DBUS_DAEMON\")")
               (("X_SERVER")
-               "g_getenv (\"GDM_X_SERVER\")"))
-            #t)))))
+               "g_getenv (\"GDM_X_SERVER\")")
+              (("GDMCONFDIR \"/Xsession\"")
+               "g_getenv (\"GDM_X_SESSION\")"))
+            ;; Use an absolute path for GNOME Session.
+            (substitute* "daemon/gdm-launch-environment.c"
+              (("\"gnome-session\"")
+               (string-append "\"" (assoc-ref inputs "gnome-session")
+                              "/bin/gnome-session\"")))
+            #t))
+         ;; GDM needs GNOME Session to run these applications.  We link
+         ;; their autostart files in `share/gdm/greeter/autostart'
+         ;; because GDM explicitly tells GNOME Session to look there.
+         ;;
+         ;; XXX: GNOME Shell should be linked here too, but currently
+         ;; GNOME Shell depends on GDM.
+         (add-after 'install 'link-autostart-files
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (autostart (string-append out "/share/gdm/"
+                                              "greeter/autostart"))
+                    (settings (assoc-ref inputs "gnome-settings-daemon")))
+               (mkdir-p autostart)
+               (with-directory-excursion autostart
+                 (for-each (lambda (desktop)
+                             (symlink desktop (basename desktop)))
+                           (find-files (string-append settings "/etc/xdg"))))
+               #t))))))
     (native-inputs
      `(("dconf" ,dconf)
        ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@@ -5417,6 +5546,8 @@ libxml2.")
      `(("accountsservice" ,accountsservice)
        ("check" ,check) ; for testing
        ("elogind" ,elogind)
+       ("gnome-session" ,gnome-session)
+       ("gnome-settings-daemon" ,gnome-settings-daemon)
        ("gtk+" ,gtk+)
        ("iso-codes" ,iso-codes)
        ("libcanberra" ,libcanberra)
@@ -6065,6 +6196,7 @@ associations for GNOME.")
        ("pinentry-gnome3"           ,pinentry-gnome3)
        ("pulseaudio"                ,pulseaudio)
        ("shared-mime-info"          ,shared-mime-info)
+       ("system-config-printer"     ,system-config-printer)
        ("totem"                     ,totem)
        ("xdg-user-dirs"             ,xdg-user-dirs)
        ("yelp"                      ,yelp)
@@ -7259,7 +7391,7 @@ mp3, Ogg Vorbis and FLAC")
 (define-public soundconverter
   (package
     (name "soundconverter")
-    (version "3.0.0")
+    (version "3.0.1")
     (source
      (origin
        (method url-fetch)
@@ -7268,8 +7400,7 @@ mp3, Ogg Vorbis and FLAC")
                            "soundconverter-" version ".tar.xz"))
 
        (sha256
-        (base32
-         "1wrxf5py54xplrf97qp24pzbis0cvax5c6k0c7vr3z3ry8r7gd7c"))
+        (base32 "1d6x1yf8psqbd9zbybxivfqg55khcnngp2mn92l161dfdk9512c5"))
        (patches
         (search-patches
          "soundconverter-remove-gconf-dependency.patch"))))
@@ -7286,12 +7417,6 @@ mp3, Ogg Vorbis and FLAC")
 
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-POTFILES.in
-           (lambda _
-             (substitute* "po/POTFILES.in"
-               ;; This file doesn't exist, so without removing it, the 'check
-               ;; phase fails for the po directory
-               (("soundconverter/gconfstore\\.py") ""))))
          (add-after 'install 'wrap-soundconverter-for-python
            (assoc-ref python:%standard-phases 'wrap))
          (add-after 'install 'wrap-soundconverter
@@ -7322,52 +7447,49 @@ configurable file renaming. ")
     (license license:gpl3)))
 
 (define-public workrave
-  (let ((commit "v1_10_21"))
-    (package
-      (name "workrave")
-      (version (string-map (match-lambda
-                             (#\_ #\.)
-                             (chr chr))
-                           (string-drop commit 1)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/rcaelers/workrave.git")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "150qca8c552fakjlzkgarsxgp87l1xcwn19svqsa9d0cygqxjgia"))))
-      (build-system glib-or-gtk-build-system)
-      (propagated-inputs `(("glib" ,glib)
-                           ("gtk+" ,gtk+)
-                           ("gdk-pixbuf" ,gdk-pixbuf)
-                           ("gtkmm" ,gtkmm)
-                           ("glibmm" ,glibmm)
-                           ("libx11" ,libx11)
-                           ("libxtst" ,libxtst)
-                           ("dconf" ,dconf)
-                           ("libice" ,libice)))
-      (inputs `(("libsm" ,libsm)
-                ("python-cheetah" ,python2-cheetah)))
-      (native-inputs `(("glib" ,glib "bin")
-                       ("pkg-config" ,pkg-config)
-                       ("gettext" ,gnu-gettext)
-                       ("autoconf" ,autoconf)
-                       ("autoconf-archive" , autoconf-archive)
-                       ("automake" ,automake)
-                       ("libtool" ,libtool)
-                       ("intltool" ,intltool)
-                       ("libxscrnsaver" ,libxscrnsaver)
-                       ("gobject-introspection" ,gobject-introspection)
-                       ("python2" ,python-2)))
-      (synopsis "Tool to help prevent repetitive strain injury (RSI)")
-      (description
-       "Workrave is a program that assists in the recovery and prevention of
+  (package
+    (name "workrave")
+    (version "1.10.21")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rcaelers/workrave.git")
+             (commit (string-map (match-lambda (#\_ #\.) (chr chr)) version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "150qca8c552fakjlzkgarsxgp87l1xcwn19svqsa9d0cygqxjgia"))))
+    (build-system glib-or-gtk-build-system)
+    (propagated-inputs `(("glib" ,glib)
+                         ("gtk+" ,gtk+)
+                         ("gdk-pixbuf" ,gdk-pixbuf)
+                         ("gtkmm" ,gtkmm)
+                         ("glibmm" ,glibmm)
+                         ("libx11" ,libx11)
+                         ("libxtst" ,libxtst)
+                         ("dconf" ,dconf)
+                         ("libice" ,libice)))
+    (inputs `(("libsm" ,libsm)
+              ("python-cheetah" ,python2-cheetah)))
+    (native-inputs `(("glib" ,glib "bin")
+                     ("pkg-config" ,pkg-config)
+                     ("gettext" ,gnu-gettext)
+                     ("autoconf" ,autoconf)
+                     ("autoconf-archive" , autoconf-archive)
+                     ("automake" ,automake)
+                     ("libtool" ,libtool)
+                     ("intltool" ,intltool)
+                     ("libxscrnsaver" ,libxscrnsaver)
+                     ("gobject-introspection" ,gobject-introspection)
+                     ("python2" ,python-2)))
+    (synopsis "Tool to help prevent repetitive strain injury (RSI)")
+    (description
+     "Workrave is a program that assists in the recovery and prevention of
 repetitive strain injury (@dfn{RSI}).  The program frequently alerts you to take
 micro-pauses and rest breaks, and restricts you to your daily limit.")
-      (home-page "http://www.workrave.org")
-      (license license:gpl3+))))
+    (home-page "http://www.workrave.org")
+    (license license:gpl3+)))
 
 (define-public ghex
   (package
@@ -7375,9 +7497,9 @@ micro-pauses and rest breaks, and restricts you to your daily limit.")
     (version "3.18.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/ghex/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "ghex-" version ".tar.xz"))
               (sha256
                (base32
                 "1lq8920ad2chi9ibmyq0x9hg9yk63b0kdbzid03w42cwdzw50x66"))))
@@ -7388,7 +7510,7 @@ micro-pauses and rest breaks, and restricts you to your daily limit.")
        ("which" ,which)
        ("intltool" ,intltool)
        ("yelp-tools" ,yelp-tools)
-       ("desktop-file-utils" ,desktop-file-utils))) ;for 'desktop-file-validate'
+       ("desktop-file-utils" ,desktop-file-utils))) ; for 'desktop-file-validate'
     (inputs
      `(("atk" ,atk)
        ("gtk" ,gtk+)))
@@ -7404,9 +7526,9 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
     (version "3.28.5")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/libdazzle/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "libdazzle-" version ".tar.xz"))
               (sha256
                (base32
                 "08qdwv2flywnh6kibkyv0pnm67pk8xlmjh4yqx6hf13hyhkxkqgg"))))
@@ -7427,9 +7549,9 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
              (setenv "DISPLAY" ":1")
              #t)))))
     (native-inputs
-     `(("glib" ,glib "bin") ; glib-compile-resources
+     `(("glib" ,glib "bin")             ; glib-compile-resources
        ("pkg-config" ,pkg-config)
-       ;; For tests
+       ;; For tests.
        ("xorg-server" ,xorg-server)))
     (inputs
      `(("glib" ,glib)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2ef165946e..e0a763dfaf 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
@@ -137,7 +137,7 @@ generation.")
 (define-public libassuan
   (package
     (name "libassuan")
-    (version "2.5.2")
+    (version "2.5.3")
     (source
      (origin
       (method url-fetch)
@@ -145,7 +145,7 @@ generation.")
                           version ".tar.bz2"))
       (sha256
        (base32
-        "1rw8nw6fx6ppxga6m4cqcp898lnlzf7vn3s5c2lzfxg3fzr1nswq"))))
+        "00p7cpvzf0q3qwcgg51r9d0vbab4qga2xi8wpk2fgd36710b1g4i"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error" ,libgpg-error)
@@ -223,14 +223,14 @@ compatible to GNU Pth.")
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.2.12")
+    (version "2.2.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1jw282iy27j1qygym52aa44zxy7ly4bdadhd628hwr4q9j5hy0yv"))))
+                "1n0igfn9nwdajzkcgdx7apwm9m5rpw0fg6vwskmf1rpranlqgivn"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -627,7 +627,7 @@ signing, decryption, verification, and key-listing parsing.")
 (define-public pius
   (package
    (name "pius")
-   (version "2.2.6")
+   (version "2.2.7")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -635,15 +635,14 @@ signing, decryption, verification, and key-listing parsing.")
                   version "/pius-" version ".tar.bz2"))
             (sha256
              (base32
-              "1893hzpx3zv724drqv48csrn0cm98xw4ymb1zmhs2jvjj1778zfj"))
-            (patches (search-patches "pius.patch"))))
+              "1nsl7czicv95j0gfz4s82ys3g3h2mwr6cq3ilid8bpz3iy7z4ipy"))))
    (build-system python-build-system)
-   (inputs `(("perl" ,perl)                ;for 'pius-party-worksheet'
+   (inputs `(("perl" ,perl)             ; for 'pius-party-worksheet'
              ("gpg" ,gnupg)
              ("python-six" ,python2-six)))
    (arguments
     `(#:tests? #f
-      #:python ,python-2                     ;uses the Python 2 'print' syntax
+      #:python ,python-2                ; uses the Python 2 'print' syntax
       #:phases
       (modify-phases %standard-phases
         (add-before
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 8d87b580fb..7c761ff3ae 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -576,7 +576,7 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "60.5.0-guix1")
+(define %icecat-version "60.5.1-guix1")
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -598,7 +598,7 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "09a0kk250r03984n1hdwr2rg1vmhi2jkyzzgbbvkf9h9hzp6j7qs"))))
+              "1xbi1gvrrvqby04vx6klxff7h5r87dqgi1fx6i4mbg3ll59gy09z"))))
 
          (upstream-icecat-base-version "60.3.0") ; maybe older than base-version
          (upstream-icecat-gnu-version "1")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 4817fec8c1..70d48aaeea 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -1591,18 +1591,21 @@ misspelled words in a GtkTextView widget.")
 (define-public clipit
   (package
     (name "clipit")
-    (version "1.4.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/downloads/ClipIt/clipit-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "0jrwn8qfgb15rwspdp1p8hb1nc0ngmpvgr87d4k3lhlvqg2cfqva"))))
+    (version "1.4.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/CristianHenzel/ClipIt.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05xi29v2y0rvb33fmvrz7r9j4l858qj7ngwd7dp4pzpkkaybjln0"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gtk+" ,gtk+-2)))
@@ -1677,7 +1680,7 @@ popular spread sheet programs.")
 (define-public yad
   (package
     (name "yad")
-    (version "0.40.3")
+    (version "0.41.0")
     (source
      (origin
        (method git-fetch)
@@ -1686,7 +1689,7 @@ popular spread sheet programs.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1vpgbjbkkbk5plicyklzpf65j1vlig4n4bi3qpvrz5bb09ic5alw"))))
+        (base32 "1hkxiich898sbacpg3jflf6i8l4hkfnc0zh10rr376v0mnzbn6jn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index ae05197e16..8febe605a7 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -1251,54 +1251,69 @@ above command-line parameters.")
 (define-public guile-hall
   (package
     (name "guile-hall")
-    (version "0.1.1")
+    (version "0.2")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://gitlab.com/a-sassmannshausen/guile-hall")
-             (commit "7d1094a12fe917209ce5b76c681cc8c862d4c65b")))
-       (file-name "guile-hall-0.1.1-checkout")
-       (sha256
-        (base32
-         "03kb09cjca98hlbx9mj12mqinzsnnvp6ci6i975n88pjhaxigyp1"))))
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256 (base32
+                "1bkbqgj24xh5b65sw2m98iggpi67b72szx1dsiq3cpzlcxplmgaz"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:modules
-       ((ice-9 match)
-        (ice-9 ftw)
-        ,@%gnu-build-system-modules)
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'hall-wrap-binaries
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out  (assoc-ref outputs "out"))
-                    (bin  (string-append out "/bin/"))
-                    (site (string-append out "/share/guile/site"))
-                    (config (assoc-ref inputs "guile-config")))
-               (match (scandir site)
-                 (("." ".." version)
-                  (let ((modules (string-append site "/" version))
-                        (compiled-modules (string-append
-                                           out "/lib/guile/" version
-                                           "/site-ccache")))
-                    (wrap-program (string-append bin "hall")
-                      `("GUILE_LOAD_PATH" ":" prefix
-                        (,modules
-                         ,(string-append config
-                                         "/share/guile/site/"
-                                         version)))
-                      `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                        (,compiled-modules
-                         ,(string-append config "/lib/guile/"
-                                         version
-                                         "/site-ccache"))))
-                    #t)))))))))
+      `(#:modules
+        ((ice-9 match)
+         (ice-9 ftw)
+         ,@%gnu-build-system-modules)
+        #:phases
+        (modify-phases
+          %standard-phases
+          (add-after 'install 'hall-wrap-binaries
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((compiled-dir
+                       (lambda (out version)
+                         (string-append
+                           out "/lib/guile/" version "/site-ccache")))
+                     (uncompiled-dir
+                       (lambda (out version)
+                         (string-append
+                          out "/share/guile/site"
+                          (if (string-null? version) "" "/") version)))
+                     (dep-path
+                       (lambda (env modules path)
+                         (list env ":" 'prefix
+                               (cons modules
+                                     (map (lambda (input)
+                                            (string-append
+                                              (assoc-ref inputs input)
+                                              path))
+                                          ,''("guile-config"))))))
+                     (out (assoc-ref outputs "out"))
+                     (bin (string-append out "/bin/"))
+                     (site (uncompiled-dir out "")))
+                (match (scandir site)
+                       (("." ".." version)
+                        (for-each
+                          (lambda (file)
+                            (wrap-program
+                              (string-append bin file)
+                              (dep-path
+                                "GUILE_LOAD_PATH"
+                                (uncompiled-dir out version)
+                                (uncompiled-dir "" version))
+                              (dep-path
+                                "GUILE_LOAD_COMPILED_PATH"
+                                (compiled-dir out version)
+                                (compiled-dir "" version))))
+                          ,''("hall"))
+                        #t))))))))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("texinfo" ,texinfo)))
+      `(("autoconf" ,autoconf)
+        ("automake" ,automake)
+        ("pkg-config" ,pkg-config)
+        ("texinfo" ,texinfo)))
     (inputs `(("guile" ,guile-2.2)))
     (propagated-inputs
      `(("guile-config" ,guile-config)))
@@ -1963,8 +1978,8 @@ format is also supported.")
   (deprecated-package "mcron2" mcron))
 
 (define-public guile-picture-language
-  (let ((commit "1531116036d1b5e0d2482ff2c8d77ad21f1d2bef")
-        (revision "1"))
+  (let ((commit "1ea8b78a8bceb4f7e5eaeb3e76987072267f99bb")
+        (revision "2"))
     (package
       (name "guile-picture-language")
       (version (git-version "0" revision commit))
@@ -1975,7 +1990,7 @@ format is also supported.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "04salmqf5x84vb3qkkxx47b64jyl290zsf3ik81l9hg6fwvvlmq3"))))
+                  "1rvq6q2zq21x7dx0qq1hn568wglsl4bkd8gacbarcx1fs0rrxcqw"))))
       (build-system guile-build-system)
       (inputs
        `(("guile" ,guile-2.2)))
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 0a2a7dbb7b..006a61c086 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,14 +38,14 @@
 (define-public ddcutil
   (package
     (name "ddcutil")
-    (version "0.9.2")
+    (version "0.9.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.ddcutil.com/tarballs/"
-                           name "-" version ".tar.gz"))
+                           "ddcutil-" version ".tar.gz"))
        (sha256
-        (base32 "0nhi261vf2n3jpi0a0n6659911kxi3lj7a4h7cmv0ip6sbb8rk88"))))
+        (base32 "1jqfip43sx3dnx86znmpy8dj4ikkfpgf8npgq66s7hqwwa99i7zc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -238,7 +238,7 @@ be dangerous and may void your CPU or system board's warranty.")
 (define-public wavemon
   (package
     (name "wavemon")
-    (version "0.8.2")
+    (version "0.9.0")
     (source
      (origin
        (method git-fetch)
@@ -247,7 +247,7 @@ be dangerous and may void your CPU or system board's warranty.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0rqpp7rhl9rlwnihsapaiy62v33h45fm3d0ia2nhdjw7fwkwcqvs"))))
+        (base32 "07cid0h3mcyr74nnrzzf8k5n1p9a4y3wij43jbiaqmkpxilcc1i6"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 60ba8a2721..7dc3bd89a1 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
+;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -298,7 +298,7 @@ Japanese language input in most graphical applications.")
 (define-public librime
   (package
     (name "librime")
-    (version "1.3.2")
+    (version "1.4.0")
     (source
      (origin
        (method git-fetch)
@@ -308,7 +308,7 @@ Japanese language input in most graphical applications.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "06q10cv7a3i6d8l3sq79nasw3p1njvmjgh4jq2hqw9abcx351m1r"))
+         "1zkx1wfbd94v55gfycyd2b94jxclfyk2zl7yw35pyjx63qdlb6sd"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -349,16 +349,16 @@ traditional Chinese output.")
 (define-public rime-data
   (package
     (name "rime-data")
-    (version "0.38.20181029")
+    (version "0.38.20190131")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/rime/plum.git")
-             (commit "fb4f829da2007f2dbb37d60a79bc67c25ea16568")))
+             (commit "8b48688cd4610d0c9223eb68831a31b6134e4cc8")))
        (file-name "plum-checkout")
        (sha256
-        (base32 "1m1wiv9j5bay4saga58c7dj4h8gqivsbyp16y245ifvxvp9czj67"))))
+        (base32 "0fv3hv4av9y7afxijh1n8idnyf82v9rxxi2ypmxd7lkj4naa22qh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                  ; no tests
@@ -380,7 +380,8 @@ traditional Chinese output.")
              (let* ((dest-dir "package/rime"))
                (mkdir-p dest-dir)
                (for-each (lambda (pkg)
-                           (symlink (assoc-ref inputs pkg)
+                           (symlink (assoc-ref inputs
+                                               (string-append "rime-" pkg))
                                     (string-append dest-dir "/" pkg)))
                          '("array"
                            "bopomofo"
@@ -406,216 +407,216 @@ traditional Chinese output.")
              #t))
          (delete 'configure))))
     (native-inputs
-     `(("array"
+     `(("rime-array"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-array.git")
-                 (commit "906e923902147584b0b0247028a782abbfbfd8a0")))
+                 (commit "93cc99238f120606a076220ec4ddcad164f6396a")))
            (file-name "rime-array-checkout")
            (sha256
             (base32
-             "1alk6ghn4ji4kvp7lfm57bwm2gjh99i79r0w9naz6wkdim8idvb1"))))
-       ("bopomofo"
+             "06yxrv3x702751jvx46rfw3ix34jk7jh183rz6bllznzi7lxz7sz"))))
+       ("rime-bopomofo"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-bopomofo.git")
-                 (commit "8dc44ca1b6ef4e45b452e070b9da737f5da165e3")))
+                 (commit "ed25098386f5efd3d70b08650f0d1b70c41c11a3")))
            (file-name "rime-bopomofo-checkout")
            (sha256
             (base32
-             "16k6wfhcrw3a77rmbrp21ca0gmsmb3f68s193c1cfwr8i68k46nf"))))
-       ("cangjie"
+             "1ip1pbfb1hadf2mcymr5939iagf25ywfl67d9198jahzyr6rdyvc"))))
+       ("rime-cangjie"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-cangjie.git")
-                 (commit "ab085e90856b3399b374dc3c8b4cb40d11f307a8")))
+                 (commit "5fd8ce6f64039e505ca02655a621f2e830b97c19")))
            (file-name "rime-cangjie-checkout")
            (sha256
             (base32
-             "11fgj0rbv9nyzfijwm2l8pm8fznhif4h27ndrrcaaylkp7p5zsx2"))))
-       ("combo-pinyin"
+             "1gf6r0q593ixar6v0jyvs56cik2gjp7pf9v799rfd2yydyia3bfg"))))
+       ("rime-combo-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-combo-pinyin.git")
-                 (commit "f1bae63f20504f2b8113c5cbdf2700e858aa91eb")))
+                 (commit "9bd952b964e9744e5d18e9e31625b50f3585a2cb")))
            (file-name "rime-combo-pinyin-checkout")
            (sha256
             (base32
-             "1l1079akwm1hw4kkn0q6x9fpylnl2ka6z2fn7lmdpfpsr0xgn0n7"))))
-       ("double-pinyin"
+             "0crafjs39x4j221gb34mxxh3cdpxfhhx3nfw6b6bgkzlrp35a02b"))))
+       ("rime-double-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-double-pinyin.git")
-                 (commit "2101a5cd40e511ec38835769aa66d2dddf059c2e")))
+                 (commit "69bf85d4dfe8bac139c36abbd68d530b8b6622ea")))
            (file-name "rime-double-pinyin-checkout")
            (sha256
             (base32
-             "19hh2qm0njbfk2js678hfm2hw9b796s43vs11yy3m1v9m0gk2vi7"))))
-       ("emoji"
+             "093wif5avvvw45fqbwj5wkbxrychy4pagl4mwsmbrayc8jkp69ak"))))
+       ("rime-emoji"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-emoji.git")
-                 (commit "6e6611b315f03ee4c33f958f9dbe960b13a0ed19")))
+                 (commit "c8d67f9b50bf89a10c57da646d2e6db8799aef38")))
            (file-name "rime-emoji-checkout")
            (sha256
             (base32
-             "1brfs3214w36j3345di9ygp468hbvbqdqpkjxxs1dbp437rayhyy"))))
-       ("essay"
+             "0ngcm088iyyp3llxvv0m80i7n5928d6cgh256ikhn3ixallxxdxv"))))
+       ("rime-essay"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-essay.git")
-                 (commit "5e5c7a0ef41c9b030abdad81a9df07b56b1661e9")))
+                 (commit "71d0b1f3d4f3bfe61ae07581edf07579740c4421")))
            (file-name "rime-essay-checkout")
            (sha256
             (base32
-             "0ana9is0zhh79m4gjshvmaxbrg3jiqysydx5bpm151i7i6vw5y1i"))))
-       ("ipa"
+             "1iwz104k7zfk7lpa257kvpqdr6jhbg3p76n3644ywiz4l7kc678i"))))
+       ("rime-ipa"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-ipa.git")
-                 (commit "02a9e2c181921a2e95e1a81f88188c41132755c3")))
+                 (commit "e420c7bfb07153a2d2484eb2bdccdd719811abbb")))
            (file-name "rime-ipa-checkout")
            (sha256
             (base32
-             "1szrxgvqlgmxapj2aflw2cvbv0p6pl0sw0gyxa13dvdhhf7s9rvr"))))
-       ("jyutping"
+             "1wfv7lb4y61b3qic5mhw92rn46cckldd9wrkcq03mg5512mbw63z"))))
+       ("rime-jyutping"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-jyutping.git")
-                 (commit "1402ec3d6cc0973f952fe3f9ef531294e4ffe9e0")))
+                 (commit "04891a298319888e8c6b1a20e0fa81cfaea01264")))
            (file-name "rime-jyutping-checkout")
            (sha256
             (base32
-             "17g03dy4gw6vyc9da1wjn3iy9hx64dfnwiwsfc7bkzan22x2m4dv"))))
-       ("luna-pinyin"
+             "0wsj965khglz36cnvfm4fkv386xvxhmsxgcw88p5qi0b3wlbzzx6"))))
+       ("rime-luna-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-luna-pinyin.git")
-                 (commit "3b05132576f5c347ff8a70857d2dae080936ac3b")))
+                 (commit "c9c405566177cb3898bdb82d7f4157587f2d9c01")))
            (file-name "rime-luna-pinyin-checkout")
            (sha256
             (base32
-             "0kgnpxjn10dm2d9718r12rdjlwqd2s2h84jvkhxhh5v0dkv1anl2"))))
-       ("middle-chinese"
+             "0i7f2675lvj9pzwlm8550ifnr3xqi77xlyyvml1wpxpkfqhjr475"))))
+       ("rime-middle-chinese"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-middle-chinese.git")
-                 (commit "9ba8d70330654b9a730f882d35cfad7dbeddfd75")))
+                 (commit "ed6d44f8d0bedf6e0c1c3183a270f8f01a211a40")))
            (file-name "rime-middle-chinese-checkout")
            (sha256
             (base32
-             "0hwg5zby5kphh0bcfay8mfxwr5bwqhamiw3cmmmf7kp9fbns5s23"))))
-       ("pinyin-simp"
+             "09mql88lsrxa99pyllby5z22kaiwwa037ha8gwaxjnnlsjgvz7zx"))))
+       ("rime-pinyin-simp"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-pinyin-simp.git")
-                 (commit "74357ffd62c05fb60edf6eab5b86bc8c8c1907d0")))
+                 (commit "bb5a6dfa871669d2f451b477bfff6d131df6f6c6")))
            (file-name "rime-pinyin-simp-checkout")
            (sha256
             (base32
-             "1paw3c7pv5bl54abnp9pidfxrkchdacyxy5m9zb311p5sgm7fhxh"))))
-       ("prelude"
+             "0ss82042k833w5q72h72ghcfchkx00nx6l4z4fb861s2rxr0bkjd"))))
+       ("rime-prelude"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-prelude.git")
-                 (commit "33040568c3ddb2ee6340c9b669494317db21b77c")))
+                 (commit "8a52b4f86a59f3eb602f9a4cf6a680a67c15df8c")))
            (file-name "rime-prelude-checkout")
            (sha256
             (base32
-             "1gwcasyyg6f0ib6s4qsrrjcqr1lcs7j3xqxl65rznsw44nhnbwwq"))))
-       ("quick"
+             "039fr3996vfxzn2milaq1f5fw08f6zgjsxsql6cfhsc5b55fidm7"))))
+       ("rime-quick"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-quick.git")
-                 (commit "910a97d403ad8e72f322488da146da79c19d623f")))
+                 (commit "3fe5911ba608cb2df1b6301b76ad1573bd482a76")))
            (file-name "rime-quick-checkout")
            (sha256
             (base32
-             "0yrq3gbfmm29xlr52rmxc41mqfrb0295q7sdhbc3ax71677mpr0y"))))
-       ("scj"
+             "08bh87ym5qvw55lyw20l3m7jd4c2z5rvil8h5q8790r7z6j6ijy9"))))
+       ("rime-scj"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-scj.git")
-                 (commit "e0eae889f4376d2a434ac3b38523e0da7400db68")))
+                 (commit "cab5a0858765eff0553dd685a2d61d5536e9149c")))
            (file-name "rime-scj-checkout")
            (sha256
             (base32
-             "1whnv9zs349kvy0zi7dnmpqwil8i6gqwrzvhy3qdrjzy58y6gwxn"))))
-       ("soutzoe"
+             "0ard2bjp4896a8dimmcwyjwgmp9kl4rz92yc92jnd3y4rgwl6fvk"))))
+       ("rime-soutzoe"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-soutzoe.git")
-                 (commit "e47841a8ad6341731c41cdb814b7a25c837603c4")))
+                 (commit "beeaeca72d8e17dfd1e9af58680439e9012987dc")))
            (file-name "rime-soutzoe-checkout")
            (sha256
             (base32
-             "1rgpmkxa72jy6gyy44fn8azpk3amk9s9lrdf7za03nv95d0fvm0p"))))
-       ("stenotype"
+             "0jyqx0q9s0qxn168l5n8zav8jcl2g5ppr7pa8jm1vwrllf20slcc"))))
+       ("rime-stenotype"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-stenotype.git")
-                 (commit "d4ff379314fd95283853d1734854979cf3cbd287")))
+                 (commit "1d472097c32d943d1096644f4c31f28799a17bd8")))
            (file-name "rime-stenotype-checkout")
            (sha256
             (base32
-             "1kckpi4l4884hvydr3d6vid3v7rsc1app29kmk7v8jf8vn16afhl"))))
-       ("stroke"
+             "1dy9qlbyhnshq2k1vcvkqn2624r96iaixhyrx1z7v0vz84fjf6y4"))))
+       ("rime-stroke"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-stroke.git")
-                 (commit "cfd29c675c46cf70b7a7f0a3836a913059316a0a")))
+                 (commit "f802735392b378fb2a56a9b7b53b8ec96a30ccaf")))
            (file-name "rime-stroke-checkout")
            (sha256
             (base32
-             "135is9c1p4lm98fd9l1gxyflkm69cv5an129ka7sk614bq84m08d"))))
-       ("terra-pinyin"
+             "1wlrsskxhldh8369n771gk7sxflzdx0c9qhq1mqm5hhkwc5ig1j0"))))
+       ("rime-terra-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-terra-pinyin.git")
-                 (commit "15b5c73a796571cd6f9ef6c89f96656cb9df86f9")))
+                 (commit "b9e0edd3182e74b26b03a278c038e669ca538a35")))
            (file-name "rime-terra-pinyin-checkout")
            (sha256
             (base32
-             "1xsd84h1zw417h5hr4dbgyk5009zi7q2p9774w3ccr5sxgc3i3cm"))))
-       ("wubi"
+             "1vzrv2k178bii4ld9rvpdi8zmcwybd8bks0qzjx2v4kbjgwj28zk"))))
+       ("rime-wubi"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-wubi.git")
-                 (commit "d44403728a0b1cd8b47cb1f81b83f58e5f790b74")))
+                 (commit "dd052ee158a38cb791755318b1aef9b4a3ed0316")))
            (file-name "rime-wubi-checkout")
            (sha256
             (base32
-             "0ld31bdn94lncxd1ka44w4sbl03skh08mc927dhdmwq5bpvrgn36"))))
-       ("wugniu"
+             "00xzv3sbwqh2jz4i7s315h7rw17qa2dgj7kflyy3blxk0s2cqiqa"))))
+       ("rime-wugniu"
         ,(origin
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/rime/rime-wugniu.git")
-                 (commit "65bcc354ada3839591d7546a64c71dbdd0592b02")))
+                 (commit "abd1ee98efbf170258fcf43875c21a4259e00b61")))
            (file-name "rime-wugniu-checkout")
            (sha256
             (base32
-             "0g31awp40s778sp5c290x40s8np86n8aw011s17sslxrqhhb0bkx"))))))
+             "0qn54d3cclny106ixdw08r5n6wn52ffs1hgrma3k0j4pv0kr9nlq"))))))
     (home-page "https://rime.im/")
     (synopsis "Schema data of Rime Input Method Engine")
     (description "@dfn{rime-data} provides the schema data of Rime Input
@@ -625,7 +626,7 @@ Method Engine.")
 (define-public ibus-rime
   (package
     (name "ibus-rime")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method git-fetch)
@@ -634,7 +635,7 @@ Method Engine.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1nqi7ymv34a9kx24say3xj98lkrs9nkpv1n2ijb91wdz3cr012ly"))))
+        (base32 "12y6jdz1amhgrnqa7zjim63dfsz6zyxyahbirfan37wmcfp6gp1d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 233fea85af..a8968acba2 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -457,19 +457,19 @@ vision algorithms.  It can be used to do things like:
 (define-public nip2
   (package
     (name "nip2")
-    (version "8.7.0")
+    (version "8.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/libvips/nip2/releases/download/v"
                            version "/nip2-" version ".tar.gz" ))
        (sha256
-        (base32 "08dxfds4n1vxdilxcw01741a2r6fxyhawi656b7f0hy6znnkbsbc"))))
+        (base32 "0l7n427njif53npqn02gfjjly8y3khbrkzqxp10j5vp9h97psgiw"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         ;; test_conv.ws keep failing so disabling for now
+         ;; test_conv.ws keep failing so disabling for now.
          (add-after 'unpack 'disable-test-conv
            (lambda _
              (delete-file "test/workspaces/test_conv.ws")
@@ -484,7 +484,7 @@ vision algorithms.  It can be used to do things like:
        ("gtk+-2" ,gtk+-2)
        ("libxml2" ,libxml2)
        ("libexif" ,libexif)
-       ("libjpeg" ,libjpeg)                       ;required by vips.pc
+       ("libjpeg" ,libjpeg)             ; required by vips.pc
        ("librsvg" ,librsvg)
        ("fftw" ,fftw)
        ("libgsf" ,libgsf)
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 895802cc94..7da0b0dab9 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -62,7 +62,7 @@
 (define-public feh
   (package
     (name "feh")
-    (version "3.1.1")
+    (version "3.1.3")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -70,7 +70,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1sy8z6rv5sy1bhk3846hgfdy96wdi874yr2fnxfprks46qp29l31"))))
+                "1vsnxf4as3vyzjfhd8frzb1a8i7wnq7ck5ljx7qxqrnfqvxl1s4z"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 1f1c8433d1..f4bf1116e4 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2014, 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
@@ -321,7 +321,7 @@ Currently all documentation resides in @file{pnglite.h}.")
    (version "9c")
    (source (origin
             (method url-fetch)
-            (uri (string-append "http://www.ijg.org/files/jpegsrc.v"
+            (uri (string-append "https://www.ijg.org/files/jpegsrc.v"
                    version ".tar.gz"))
             (sha256 (base32
                      "08kixcf3a7s9x91174abjnk1xbvj4v8crdc73zi4k9h3jfbm00k5"))))
@@ -342,14 +342,14 @@ lossless JPEG manipulations such as rotation, scaling or cropping:
 @item wrjpgcom
 @end enumerate")
    (license license:ijg)
-   (home-page "http://www.ijg.org/")))
+   (home-page "https://www.ijg.org/")))
 
 (define-public libjpeg-8
   (package (inherit libjpeg)
    (version "8d")
    (source (origin
             (method url-fetch)
-            (uri (string-append "http://www.ijg.org/files/jpegsrc.v"
+            (uri (string-append "https://www.ijg.org/files/jpegsrc.v"
                    version ".tar.gz"))
             (sha256 (base32
                      "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0"))))))
@@ -1299,10 +1299,11 @@ PNG, and performs PNG integrity checks and corrections.")
   (package
     (name "libjpeg-turbo")
     (version "2.0.1")
+    (replacement libjpeg-turbo-2.0.2)
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/" name "/" version "/"
-                                  name "-" version ".tar.gz"))
+              (uri (string-append "mirror://sourceforge/libjpeg-turbo/"
+                                  version "/libjpeg-turbo-" version ".tar.gz"))
               (sha256
                (base32
                 "1zv6z093l3x3jzygvni7b819j7xhn6d63jhcdrckj7fz67n6ry75"))))
@@ -1328,6 +1329,18 @@ and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).")
                    license:ijg          ;the libjpeg library and associated tools
                    license:zlib))))     ;the libjpeg-turbo SIMD extensions
 
+(define-public libjpeg-turbo-2.0.2
+  (package
+    (inherit libjpeg-turbo)
+    (version "2.0.2")
+    (source (origin
+              (inherit (package-source libjpeg-turbo))
+              (uri (string-append "mirror://sourceforge/libjpeg-turbo/"
+                                  version "/libjpeg-turbo-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1v9gx1gdzgxf51nd55ncq7rghmj4x9x91rby50ag36irwngmkf5c"))))))
+
 (define-public niftilib
   (package
     (name "niftilib")
@@ -1575,15 +1588,16 @@ identical visual appearance.")
 (define-public grim
   (package
    (name "grim")
-   (version "1.0")
+   (version "1.1")
    (source
     (origin
-     (method url-fetch)
-     (uri (string-append "https://github.com/emersion/grim/archive/v" version
-                         ".tar.gz"))
-     (file-name (string-append name "-" version ".tar.gz"))
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://github.com/emersion/grim.git")
+           (commit (string-append "v" version))))
+     (file-name (git-file-name name version))
      (sha256
-      (base32 "0xkk5nqyp1px0sxz4asmchznc0q39wdx1b67ql741k8aj815km0f"))))
+      (base32 "1bcvkggqszcwy6hg8g4mch3yr25ic0baafbd90af5s5mrhrjxxxz"))))
    (build-system meson-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs `(("cairo" ,cairo)
@@ -1600,7 +1614,7 @@ identical visual appearance.")
 (define-public slurp
   (package
    (name "slurp")
-   (version "1.0")
+   (version "1.0.1")
    (source
     (origin
      (method git-fetch)
@@ -1609,7 +1623,7 @@ identical visual appearance.")
            (commit (string-append "v" version))))
      (file-name (git-file-name name version))
      (sha256
-      (base32 "03igv8r8n772xb0y7whhs1pa298l3d94jbnknaxpwp2n4fi04syb"))))
+      (base32 "072lkwhpvr753wfqzmd994bnhbrgfavxcgqcyml7abab28sdhs1y"))))
    (build-system meson-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs `(("cairo" ,cairo)
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 98d0e8d5d8..e6f23d14d7 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
 ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -67,15 +67,15 @@
 (define-public quassel
   (package
     (name "quassel")
-    (version "0.13.0")
+    (version "0.13.1")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append "http://quassel-irc.org/pub/quassel-"
+        (uri (string-append "https://quassel-irc.org/pub/quassel-"
                             version ".tar.bz2"))
         (sha256
          (base32
-          "0xp9mppxl63qzgsdyprmblvfrj0bb9z57kfc088gvcavvq1210nr"))
+          "0mg8jydc70vlylppzich26q4s40kr78r3ysfyjwisfvlg2byxvs8"))
         (modules '((guix build utils)))
         ;; We don't want to install the bundled scripts.
         (snippet
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index a314dc9953..9747569009 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017, 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
@@ -2267,22 +2267,23 @@ debugging, etc.")
 (define-public javacc
   (package
     (inherit javacc-4)
-    (version "7.0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/javacc/javacc/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append "javacc-" version ".tar.gz"))
-              (sha256
-               (base32
-                "111xc9mnmc5a6qz6x3xbhqc07y1lg2b996ggzw0hrblg42zya9xf"))
-              (modules '((guix build utils)))
-              ;; delete bundled jars
-              (snippet '(begin (for-each delete-file-recursively
-                                         '("bootstrap" "lib"))
-                               #t))))
-    (arguments
-     `(#:make-flags ; bootstrap from javacc-4
+    (version "7.0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/javacc/javacc.git")
+             (commit version)))
+       (file-name (git-file-name "javacc" version))
+       (sha256
+        (base32 "18kkak3gda93gr25jrgy6q00g0jr8i24ri2wk4kybz1v234fxx9i"))
+       (modules '((guix build utils)))
+       ;; Delete bundled jars.
+       (snippet '(begin (for-each delete-file-recursively
+                                  '("bootstrap" "lib"))
+                        #t))))
+    (arguments
+     `(#:make-flags                     ; bootstrap from javacc-4
        (list (string-append "-Dbootstrap-jar="
                             (assoc-ref %build-inputs "javacc")
                             "/share/java/javacc.jar"))
@@ -5236,18 +5237,18 @@ fundamental protocol access, not higher-level abstractions.")
 (define-public java-jsch
   (package
     (name "java-jsch")
-    (version "0.1.54")
+    (version "0.1.55")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/jsch/jsch/"
                                   version "/jsch-" version ".zip"))
               (sha256
                (base32
-                "029rdddyq1mh3ghryh3ki99kba1xkf1d1swjv2vi6lk6zzjy2wdb"))))
+                "1lxyjwvmwa723wcf3bqn816hkvc03vz4xhbsi7bvfhrz2rpgcfq6"))))
     (build-system ant-build-system)
     (arguments
      `(#:build-target "dist"
-       #:tests? #f ; no tests included
+       #:tests? #f                      ; no tests included
        #:phases
        (modify-phases %standard-phases
          (replace 'install (install-jars "dist")))))
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 5068de22bb..6a8d27f34e 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -78,7 +78,7 @@
 (define-public extra-cmake-modules
   (package
     (name "extra-cmake-modules")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -87,7 +87,7 @@
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "07pdgjyrxniacqcfvrzw8ij3kasx5pkbq38k6491qbhzfm8vi7y0"))))
+                "1x868hs9jiqzkqx7gld4mdm5dzfxc5kann22y15a4f7g5a957534"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("qtbase" ,qtbase))) ; For tests (needs qmake)
@@ -253,7 +253,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.")
 (define-public attica
   (package
     (name "attica")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -262,7 +262,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1iqclahs9yzyjnkzbzr8hl9j6q8m2djdm6mix92xwrakgirnl3gn"))))
+                "0bsn9mi3nj23k2r3mfgjm9i1mp8qnwf08xn9x757wk3xas0cx98v"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -293,7 +293,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
 (define-public bluez-qt
   (package
     (name "bluez-qt")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -302,7 +302,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0mgnq7w52ksr8b7ys2f1m3irnviy011bsaggh489fjy0xlzk5ard"))))
+                "1ixad1ya3c339c675w8nwmbga8ydq16db9fk2az3gjm68z3dch8a"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("dbus" ,dbus)
@@ -326,7 +326,7 @@ Bluetooth stack.  It is used by the KDE Bluetooth stack, BlueDevil.")
 (define-public breeze-icons
   (package
     (name "breeze-icons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -335,23 +335,8 @@ Bluetooth stack.  It is used by the KDE Bluetooth stack, BlueDevil.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "178620hhqlv6dl8qal2bmiw55s8b3p4h16q8cgkmq5q5i59nzcph"))))
+                "03mb7x8mc2h6cjb4mrifrbkbpj3lv9c0mg4m619rqiydg0p1yf49"))))
     (build-system cmake-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'add-symlinks
-           ;; Fix "ScalableTest" - FIXME: Remove for > 5.49.0
-           (lambda _
-             (symlink "../22/plasma-browser-integration.svg"
-                      "icons-dark/apps/48/plasma-browser-integration.svg")
-             (symlink "../22/plasma-browser-integration.svg"
-                      "icons-dark/apps/64/plasma-browser-integration.svg")
-             (symlink "../22/plasma-browser-integration.svg"
-                      "icons/apps/48/plasma-browser-integration.svg")
-             (symlink "../22/plasma-browser-integration.svg"
-                      "icons/apps/64/plasma-browser-integration.svg")
-             #t)))))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
        ("fdupes" ,fdupes)
@@ -370,7 +355,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.")
 (define-public kapidox
   (package
     (name "kapidox")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -379,7 +364,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "09jph3hvasqx1ia0l7is9brc08nxvh9qmg8564nh5cmqaxdwj559"))))
+                "0x41adp3rnvr6njc57ffdyh6d5i5aw13xcjdr4p6kacw9pk63ajf"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f)) ; has no test target
@@ -412,7 +397,7 @@ documentation.")
 (define-public karchive
   (package
     (name "karchive")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -421,7 +406,7 @@ documentation.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1p1gwqda2bsjdysp4ggwdsldbasyfl075xn3wchqyakdv2bdzmn0"))))
+                "1llznxc5wjjnmbjx8iwi3a93gc2z0z344viknsgls1fwdjjfyxc4"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -446,7 +431,7 @@ GZip format, via a subclass of QIODevice.")
 (define-public kcodecs
   (package
     (name "kcodecs")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -455,7 +440,7 @@ GZip format, via a subclass of QIODevice.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "07va63gsfjrc5ha9rdli923cwyzxpb3v8xgf1zfhw75cfkgda3nz"))))
+                "0491j6l28jwfpgaqs2816qpyggnra2df33iw3fgvb0wd4r4gvmjb"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -482,7 +467,7 @@ Internet).")
 (define-public kconfig
   (package
     (name "kconfig")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -491,10 +476,11 @@ Internet).")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0cb3crnlr8hr5npq3ykfxqd4yckmkykzrrizfs89ryhmznc2ngsf"))))
+                "06gscipc3914gwiswhp1xx4sy74bpy645ykq2i6r1sb6sm16hmja"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("extra-cmake-modules" ,extra-cmake-modules)
+     `(("dbus" ,dbus)
+       ("extra-cmake-modules" ,extra-cmake-modules)
        ("inetutils" ,inetutils)
        ("qttools" ,qttools)
        ("xorg-server" ,xorg-server)))
@@ -508,13 +494,10 @@ Internet).")
              (setenv "HOME" (getcwd))
              (setenv "TMPDIR" (getcwd))
              #t))
-         (add-before 'check 'start-xorg-server
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; The test suite requires a running X server.
-             (system (string-append (assoc-ref inputs "xorg-server")
-                                    "/bin/Xvfb :1 &"))
-             (setenv "DISPLAY" ":1")
-             #t)))))
+         (replace 'check
+           (lambda _
+             (setenv "QT_QPA_PLATFORM" "offscreen")
+             (invoke "dbus-launch" "ctest" "."))))))
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Kconfiguration settings framework for Qt")
     (description "KConfig provides an advanced configuration system.
@@ -549,7 +532,7 @@ propagate their changes to their respective configuration files.")
 (define-public kcoreaddons
   (package
     (name "kcoreaddons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -558,7 +541,7 @@ propagate their changes to their respective configuration files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "00s22jvbwav20cidnp8v9fgc6pqbp4wnqkb2spv18mjhg4pv3bqj"))))
+                "1j7bc5fhak8db3vdfslbjdffbdclakhfwsni2a855d08yfrl1n1w"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -606,7 +589,7 @@ many more.")
 (define-public kdbusaddons
   (package
     (name "kdbusaddons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -615,7 +598,7 @@ many more.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1fnmrrffp3kfwyjfzqkzlizflpyqgzbjljb51ppmdypcq8wy9ibh"))
+                "1sj3cycgci3ih65bkh7bsvbzyp7r654ppcryj4azpcsxqhy5gc7l"))
               (patches (search-patches "kdbusaddons-kinit-file-name.patch"))))
     (build-system cmake-build-system)
     (native-inputs
@@ -651,7 +634,7 @@ as well as an API to create KDED modules.")
 (define-public kdnssd
   (package
     (name "kdnssd")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -660,7 +643,7 @@ as well as an API to create KDED modules.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1n61id2x1iianshg8g6fw389mqihz4h8sj9hnng7cdg4csh72ffr"))))
+                "0lljj7mxmqm60kfzr37zb7z58mfyfh7zgykf7a5is1k0lxpgk6zc"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -679,7 +662,7 @@ infrastructure.")
 (define-public kguiaddons
   (package
     (name "kguiaddons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -688,7 +671,7 @@ infrastructure.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1zkjd3l5pyvvilcc9lbdgqaxnpvh586yf0cndl90h3x89hy1d4xk"))))
+                "190jwhvq2fi8g03saszlaslzxmcbqrbwli9f9vm6h5j9nnc0z6h3"))))
     (build-system cmake-build-system)
     ;; TODO: Build packages for the Python bindings.  Ideally this will be
     ;; done for all versions of python guix supports.  Requires python,
@@ -717,7 +700,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.")
 (define-public ki18n
   (package
     (name "ki18n")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -726,7 +709,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1i4rdrxann45zl6fkmfd1b96q52g0mpc5x19fx9h80crapkm8jjz"))))
+                "0kvwjzqibby9fawyfb8bd81abjhsjlyi8xy9mcapnih5x2gx3z92"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("gettext" ,gettext-minimal)
@@ -760,7 +743,7 @@ translation scripting.")
 (define-public kidletime
   (package
     (name "kidletime")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -769,7 +752,7 @@ translation scripting.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1fd02anlmaa0hnnp5q1s9973m3asy56qppwq1va1g6ga3csv3wrv"))))
+                "1kq6zh6cjhzffjhxnc7l1pw6g38swxyspp8xl8c860zdhc9xfd1g"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -791,7 +774,7 @@ or user activity.")
   ;; plasma-framework which is tier 3.
   (package
     (name "kirigami")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -800,7 +783,7 @@ or user activity.")
                     "kirigami2-" version ".tar.xz"))
               (sha256
                (base32
-                "1wan9h7kvjzvyzfjfjd512lxiac5prhs493xjqwxgags6kxwglaz"))))
+                "11djxli5cq7pn19lmjz2y7z39mhlr98jskasfzyax546j47v973k"))))
     (properties `((upstream-name . "kirigami2")))
     (build-system cmake-build-system)
     (native-inputs
@@ -827,7 +810,7 @@ of applications that follow the Kirigami Human Interface Guidelines.")
 (define-public kitemmodels
   (package
     (name "kitemmodels")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -836,7 +819,7 @@ of applications that follow the Kirigami Human Interface Guidelines.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1frha301540js45mrxiw034m9b2rwsa56xphkqn6cm4jmn48qdjg"))))
+                "13609avkqrfi79zyr737662nr8bwcfdya9dxc6gzyqx5i0l2nbw6"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -886,7 +869,7 @@ model to observers
 (define-public kitemviews
   (package
     (name "kitemviews")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -895,7 +878,7 @@ model to observers
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1aj605q2p72w4rb9i0f2xb93bn5xfjq9sl5i4h6rqflcvvy7qpdp"))))
+                "1mgh7z5xcbhc7a2qq8mqfp7j4amk93hypkpy2zc3rdhc60ps94ad"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -921,7 +904,7 @@ to flat and hierarchical lists.")
 (define-public kplotting
   (package
     (name "kplotting")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -930,7 +913,7 @@ to flat and hierarchical lists.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "13fzqqkyxs4ja6n5yb9lc5jx4qpsmrbsiihnwrgj3lhpzhlr91n0"))))
+                "0nn2v1yvvpzpi1y1pm47zvmwsa942c7d9n8iqymqihnp0fqjr8y7"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -956,7 +939,7 @@ pixel units.")
 (define-public ksyntaxhighlighting
   (package
     (name "ksyntaxhighlighting")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -965,7 +948,7 @@ pixel units.")
                     "syntax-highlighting-" version ".tar.xz"))
               (sha256
                (base32
-                "17rkgzkfiz5dv0xr67na7ikqszgwjnf2gc11b2h47qdsr7pgx95v"))))
+                "00w5nmz9l70znv8q7q1zw3f7gngwfgf41iwbs53zqcv1z7wmrz6m"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1005,7 +988,7 @@ integration with a custom editor as well as a ready-to-use
 (define-public kwayland
   (package
     (name "kwayland")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1014,7 +997,7 @@ integration with a custom editor as well as a ready-to-use
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0d95l2i3j1xxkc15n57w4rhf3di02zna4zzn4gap9qdhfxlfbqi6"))))
+                "0m9q13qzgvp03jrsyc59l6pp7jf0dvhx768p21drs46qxw6wla7l"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1044,7 +1027,7 @@ represented by a QPoint or a QSize.")
 (define-public kwidgetsaddons
   (package
     (name "kwidgetsaddons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1053,7 +1036,7 @@ represented by a QPoint or a QSize.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1frgqz9njbc81pfy6gl6p0hyh1977lg31ynrx5wy7lg7fwaxwl92"))))
+                "0kpbvvmjrhxxjqc0cb63zlq06a3xspq43xv3wdingcn28zypynzc"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1091,7 +1074,7 @@ configuration pages, message boxes, and password requests.")
 (define-public kwindowsystem
   (package
     (name "kwindowsystem")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1100,7 +1083,7 @@ configuration pages, message boxes, and password requests.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "175rzwrjndhawyy4x11lbihdr1r9gwxmxjpbz4x06hlz4g50wffp"))))
+                "10zdxm08d758zbwlrbsn0ghxjpf39ids2s5pnca072gbrbrxv656"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1152,7 +1135,7 @@ lower level classes for interaction with the X Windowing System.")
 (define-public modemmanager-qt
   (package
     (name "modemmanager-qt")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1161,7 +1144,7 @@ lower level classes for interaction with the X Windowing System.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1wf3v552vbr4kh2d770zn3yn0q3bqjqbfrvnf813mnld7961m7p2"))))
+                "10pkgm4dzsrfnjsf78pssd1wp0y27d1y834chd267hx9vgrv8axm"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1190,7 +1173,7 @@ messages.")
 (define-public networkmanager-qt
   (package
     (name "networkmanager-qt")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1199,7 +1182,7 @@ messages.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "16pnd52m9srcb2ml3vc3kd9k1yak5rq09yci39qp7z5jbdy7jk2z"))))
+                "0j8l4k13vsqh0a8mw8dw5bc78xvxhz2rh7bb870as04i32bvw772"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1229,7 +1212,7 @@ which are used in DBus communication.")
 (define-public oxygen-icons
   (package
     (name "oxygen-icons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1238,7 +1221,7 @@ which are used in DBus communication.")
                     name "5" "-" version ".tar.xz"))
               (sha256
                (base32
-                "0llx06sr36cd6vgkgm3jw6k4cv1cfx3r6x6lmb477wpahis0n75g"))))
+                "0fvm9bq1573xkha4a577s1iik8nwzks8xhrli5mm6rbh53s12wp4"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1254,7 +1237,7 @@ which are used in DBus communication.")
 (define-public prison
   (package
     (name "prison")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -1262,7 +1245,7 @@ which are used in DBus communication.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "0dppz9x6k84sl0aiyjlh3xigqgda64r8mij3bzxcdkv2wbc4ld9d"))))
+        (base32 "1xadc2fq6csml78czg5p572cwvmqmn334a5dxjnd7k1pdx50gi07"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1279,7 +1262,7 @@ provides uniform access to generation of barcodes with data.")
 (define-public qqc2-desktop-style
   (package
     (name "qqc2-desktop-style")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1288,7 +1271,7 @@ provides uniform access to generation of barcodes with data.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vbms7b8x1y7yh8im8dv1q3wwl3j2x4r47yqg86f28grw2r2n2zj"))))
+                "0aj37ldc3ywqap3sz73j54kbzycn529imr15jgl252k04rqpjya5"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1313,7 +1296,7 @@ feel.")
 (define-public solid
   (package
     (name "solid")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1322,7 +1305,7 @@ feel.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1p7rdmf2f8520xc7zp7wxlcizyyjfxwq5mf95qsfpwc4dl0c43gp"))))
+                "18dw55g41q34m2qzvybvpsas1dnyryqxnlf2md0xc4r36ib9p2pn"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1352,7 +1335,7 @@ system.")
 (define-public sonnet
   (package
     (name "sonnet")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1361,7 +1344,7 @@ system.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0m5pmka1hwjsg3c3qvx087z3fjrfw0ayk7ylgjls5iwd39kkl1b3"))))
+                "13bb1s2f4kfaikcga297j2fqlyr4qxdcq4v1b3zs1gas4z1wpcg6"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1389,7 +1372,7 @@ ASpell and HUNSPELL.")
 (define-public threadweaver
   (package
     (name "threadweaver")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1398,7 +1381,7 @@ ASpell and HUNSPELL.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "099bs429p71dzrqy25z61rvn48w3b73p7yag4q69jnxcpj0qcyz7"))))
+                "0r0ml5pz7h0vmydcg4gqqkl21lp6c5gqdwyfsnyad02dcjkh4hql"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1419,7 +1402,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way."
 (define-public kactivities
   (package
     (name "kactivities")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1428,7 +1411,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way."
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "117f3zrdbs0pa10wn7vy691n02m01h6x4pm8m1q3f4pjm0k4kqim"))))
+                "0dp9vx2nl9fnawzcz04fqa731s3bk2izxrqbvn71aqyrs7fymabg"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1464,7 +1447,7 @@ with other frameworks.")
 (define-public kauth
   (package
     (name "kauth")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1473,7 +1456,7 @@ with other frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0qg3zwg3kfx2snmvsw4ixr0qds7bd7992dxggvi9dcny7dm9q0n8"))))
+                "1w6bp2kbp1sn4cl76fgl2pqrg660ix99qq4h65g090kc934np3zc"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("dbus" ,dbus)
@@ -1511,7 +1494,7 @@ utilities.")
 (define-public kcompletion
   (package
     (name "kcompletion")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1520,7 +1503,7 @@ utilities.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "16br6wnqzndk8v41im23h2ww4hypi2i1qfg6m9c49mpxflgmspbi"))))
+                "08ym79fqk7vshsf3jk37d6jvg7ys63kwflcn5dff5ci18jan2ir2"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1547,7 +1530,7 @@ integrated it into your application's other widgets.")
 (define-public kcrash
   (package
     (name "kcrash")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1556,7 +1539,7 @@ integrated it into your application's other widgets.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xmr9rrl0xahpnq1rw4bbar1nbr21x2bk4hhv79la6dsg9ha25b3"))))
+                "08a8c5mbj6ll0d1ivhcjx5ga1jfbnwxsk618wcfpwwi6mkxrc3f9"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1582,7 +1565,7 @@ application crashes.")
 (define-public kdoctools
   (package
     (name "kdoctools")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1591,7 +1574,7 @@ application crashes.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1dmpk453s71ls0q8hgpqqd5dcr7zlimf5wykizcy2wn7p77gzsgl"))))
+                "0dlal0vkxf5yh1hbfhrcrxqqi1w43q7bvv8ws8pb18jjgimzr46l"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1639,7 +1622,7 @@ from DocBook files.")
 (define-public kfilemetadata
   (package
     (name "kfilemetadata")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1648,7 +1631,7 @@ from DocBook files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "045k1mgn8kg0qfsr5sl1499nzhzmbcvrqc205pmq6sh4r14nvk80"))))
+                "0fqj266f9f66rfjzg0rl35fac5rn5n3npyfb4gsla3mdc8fjz9mi"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1691,7 +1674,7 @@ by applications to write metadata.")
 (define-public kimageformats
   (package
     (name "kimageformats")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1700,7 +1683,7 @@ by applications to write metadata.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1q7019gbk59fwampna1ayjvw016c0q79hmldpaqh3xa9sh082wy4"))))
+                "0hhxv8m5993vlpi5yf7w3fadzckficn16flshdkby7bwq8agrbz1"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1745,7 +1728,7 @@ formats.")
 (define-public kjobwidgets
   (package
     (name "kjobwidgets")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1754,7 +1737,7 @@ formats.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "04i5cvbxii7n0jr3ai1dh44miqbdkxb6an5w8s7qvkv0xmkml35g"))))
+                "1pbx974jpn8n2080gblmbh8q0yb5wxb9xblpm100rbhpg20sc2by"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1773,7 +1756,7 @@ asynchronous jobs.")
 (define-public knotifications
   (package
     (name "knotifications")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1782,7 +1765,7 @@ asynchronous jobs.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10481j2irlqhqd16xi412xbglnyjl0ndanlv9s0d3fxirs95zdd9"))))
+                "1dbrk9r3w8pmg15bhrb8qdk4fiqvc9qggb67zvk1n7ddlfkyarz6"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -1819,7 +1802,7 @@ covers feedback and persistent events.")
 (define-public kpackage
   (package
     (name "kpackage")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1828,7 +1811,7 @@ covers feedback and persistent events.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xbfjwxb4gff8gg0hs5m9s0jcnzqk27rs2jr71g5ckhvs5psnkcd"))
+                "175b0lj4qybddjpc25b1p60lr8f9220i9ymk3wk3y3vf4893v833"))
               ;; Default to: external paths/symlinks can be followed by a
               ;; package
               (patches (search-patches "kpackage-allow-external-paths.patch"))))
@@ -1880,7 +1863,7 @@ were traditional plugins.")
 (define-public kpty
   (package
     (name "kpty")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1889,7 +1872,7 @@ were traditional plugins.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1pnj07079l6gkz6171fcvljh0dcdy9s77p1q0l9nnkknjbr102pg"))))
+                "0r5080xl7x13qmjnjssb0d1pk626anaa4xahb7fi869fndr4xhzn"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -1917,7 +1900,7 @@ and communicating with them using a pty.")
 (define-public kunitconversion
   (package
     (name "kunitconversion")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1926,7 +1909,7 @@ and communicating with them using a pty.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "11jnqz218rga3f4ppf1d927c7qhh2qpghwjpsrnrxdkz5nrvnf79"))))
+                "1v5cfxk5v76w1f1qvrpilrs111wvp8bn2p3bswhqp4lg0qxync0q"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1960,7 +1943,7 @@ gallons).")
 (define-public baloo
   (package
     (name "baloo")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1969,7 +1952,7 @@ gallons).")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xj12v0k58sr3snxyj4vx7dqhinrvk6qm0ikymscqgbmw9ijwxph"))))
+                "068ms071639pskhjz37cszylvfzzqhp7x1rmwdfn5nlvzrv6lrxh"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kcoreaddons" ,kcoreaddons)
@@ -2025,7 +2008,7 @@ maintaining an index of the contents of your files.")
 (define-public kactivities-stats
   (package
     (name "kactivities-stats")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2034,7 +2017,7 @@ maintaining an index of the contents of your files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "129z2m5330j0l1nw8g3qjib60xmx54c6d2g9vnp4w8z0agnihs5f"))))
+                "12n178244ysfak0x9qm9a2k814qi56w8xpkg03na7hlsz2l4y9v6"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2055,7 +2038,7 @@ by which applications, and what documents have been linked to which activity.")
 (define-public kbookmarks
   (package
     (name "kbookmarks")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2064,7 +2047,7 @@ by which applications, and what documents have been linked to which activity.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0clmfdcc1fc98q3vbfjf8x140a6df88ixhz0mny3dpv1wcr5cz53"))))
+                "0vsn98znzdbiy8clbl9p3kiag3zvxgc9701gwg2ig8mpv3ci9lkg"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kwidgetsaddons" ,kwidgetsaddons)))
@@ -2098,7 +2081,7 @@ using the XBEL format.")
 (define-public kcmutils
   (package
     (name "kcmutils")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2107,7 +2090,7 @@ using the XBEL format.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xv899p9f0hj6hd089mhn910qn66bihzpaa11ikrhbimckw8g19q"))))
+                "1f49864xpxrbj77n7l474wkn3rw4zy8vkl3psdya7ccdk7ac2s0k"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfigwidgets" ,kconfigwidgets)
@@ -2151,7 +2134,7 @@ KCModules can be created with the KConfigWidgets framework.")
 (define-public kconfigwidgets
   (package
     (name "kconfigwidgets")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2160,7 +2143,7 @@ KCModules can be created with the KConfigWidgets framework.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1nqcrqr67m3kvq2r83x45zcdghk12bas9fp0s43s68imrhy5xikz"))))
+                "0npfp6z5lc2h8y6slmz3sbymyyv9k2w73rpsjzl5zswqhzlvrb5k"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kauth" ,kauth)
@@ -2201,7 +2184,7 @@ their settings.")
 (define-public kdeclarative
   (package
     (name "kdeclarative")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2210,7 +2193,7 @@ their settings.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kgawb8wfx4snk2ckwxj0hmpgcvq3k1zpsxqdawi4cmsy4bxzfs9"))))
+                "043jl7rn9yawh04fwgaxb8iwksn3z8qb4yfc4s6v1znwcs7ajlda"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfig" ,kconfig)
@@ -2264,7 +2247,7 @@ that offer bindings to some of the Frameworks.")
 (define-public kded
   (package
     (name "kded")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2273,7 +2256,7 @@ that offer bindings to some of the Frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1l6hs3spbs3618jwg3n7r3hrrkqxmmd43f0km8849x4641p72zyc"))))
+                "0kn9kzzji257mppd12jzwiibha8127ajxvng2ls765lylv9nad7q"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2297,7 +2280,7 @@ started on demand.")
 (define-public kdesignerplugin
   (package
     (name "kdesignerplugin")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2306,7 +2289,7 @@ started on demand.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0hj4ng0i22rvw4kl0irhqhww3kvn4c0pncn38w1j5vim4gxv0xcd"))))
+                "114035wil0p5z6h0li8wjzivsdxhqbih54kn4nvhn43b71xnzs3y"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2348,7 +2331,7 @@ ini-style description files.")
 (define-public kdesu
   (package
     (name "kdesu")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2357,7 +2340,7 @@ ini-style description files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1gwvby51qqbkrs2vjpnplxr6m6xa5ddfdjs1iygh8kpqsh8a765k"))))
+                "1x2gjnmgpcaxvfav2pm92zfgxbn60awpvmn9ycs68rq47p6h9x0f"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kpty" ,kpty)))
@@ -2379,7 +2362,7 @@ with su and ssh respectively.")
 (define-public kdewebkit
   (package
     (name "kdewebkit")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2388,7 +2371,7 @@ with su and ssh respectively.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "05idyw94ayjh7qdia9pnjmx29r5lsch421kv8h5ivr7ixcbrgk6n"))))
+                "1mnbdsiih94hlwwff9fs9gnzl3y7ayf1pskmz1rajgjmqd6rm7mm"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2411,7 +2394,7 @@ engine WebKit via QtWebKit.")
 (define-public kemoticons
   (package
     (name "kemoticons")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2420,7 +2403,7 @@ engine WebKit via QtWebKit.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0mz9hkhnprjbrfq54mqcvj8w87h025785m1bas80brsqzvni5krn"))))
+                "03vx22f9mjd10qm61f6ihr283w2sarrhg0rssxp7g7wahvshcvmh"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kservice" ,kservice)))
@@ -2451,7 +2434,7 @@ emoticons coming from different providers.")
 (define-public kglobalaccel
   (package
     (name "kglobalaccel")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2460,7 +2443,7 @@ emoticons coming from different providers.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1fk7wazfwr7smqiym3phm5yvw6cmiczag52y1vad8fgb3izd6zhl"))))
+                "1c6dxp6jvbw8l74n1mv0v62yr34b9447szhvd61y4sxmmfjimhz4"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2495,7 +2478,7 @@ window does not need focus for them to be activated.")
 (define-public kiconthemes
   (package
     (name "kiconthemes")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2504,7 +2487,7 @@ window does not need focus for them to be activated.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f7pk6smi2f0mm7jkrw5ymmkhd9gi8vnmppyblp1v3pvmy571c2m"))))
+                "1rgbfklb7xxg7z2zyrsmaxf883ixgfbkqilps3npwk3xac2f66rw"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -2542,7 +2525,7 @@ in applications using the KDE Frameworks.")
 (define-public kinit
   (package
     (name "kinit")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2551,7 +2534,7 @@ in applications using the KDE Frameworks.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1rq9b59gdgcpvwd694l8h55sqahpdaky0n7ag5psjlfn5myf1d95"))
+                "11xwiny5sfqbdls249vnq6ssp5pzw1w9wg4ql9nkwwygl4ml8b9y"))
               ;; Use the store paths for other packages and dynamically loaded
               ;; libs
               (patches (search-patches "kinit-kdeinit-extra_libs.patch"
@@ -2610,7 +2593,7 @@ makes starting KDE applications faster and reduces memory consumption.")
 (define-public kio
   (package
     (name "kio")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2619,7 +2602,7 @@ makes starting KDE applications faster and reduces memory consumption.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0rrsg3g1b204cdp58vxd5dig1ggwyvk1382p1c86vn6w8qbrq27k"))
+                "1k3cn7hvp5z9nirss29v164hahrlvlqivxlk64c8w9ynjx699ira"))
               (patches (search-patches "kio-search-smbd-on-PATH.patch"))))
     (build-system cmake-build-system)
     (propagated-inputs
@@ -2642,6 +2625,7 @@ makes starting KDE applications faster and reduces memory consumption.")
        ("kauth" ,kauth)
        ("kcodecs" ,kcodecs)
        ("kconfigwidgets" ,kconfigwidgets)
+       ("kcrash" ,kcrash)
        ("kdbusaddons" ,kdbusaddons)
        ("kdoctools" ,kdoctools)
        ("kiconthemes" ,kiconthemes)
@@ -2702,7 +2686,7 @@ KIO enabled infrastructure.")
 (define-public knewstuff
   (package
     (name "knewstuff")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2711,7 +2695,7 @@ KIO enabled infrastructure.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vhcl2z9rcqg8390l1cwn3yyi1n17pn6mn8fsplp25qhzimb8bmk"))))
+                "0a2d9wrhjsjl0klsrn501sp9681v7qmq6hmalw061arjv165dzw2"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("attica" ,attica)
@@ -2758,7 +2742,7 @@ specification.")
 (define-public knotifyconfig
   (package
     (name "knotifyconfig")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2767,7 +2751,7 @@ specification.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "09v4aq5x98sqg2awhw0n0y0rnjkr77kbf51xij0fiykd4llp9lfa"))))
+                "01hxj6s2sq5k5j6j1y4c5gxyl1886j7ghh0hdc95b7n4gdjwwbci"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2800,7 +2784,7 @@ notifications which can be embedded in your application.")
 (define-public kparts
   (package
     (name "kparts")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2809,7 +2793,7 @@ notifications which can be embedded in your application.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0zdz0byj0gsbgb007y8x37w8yf1gkw6dsp2s9bbdc4w6h9ipdj2k"))))
+                "0gqkgnvkdai8hbg1n32jq4a3yzlkarmw8a7hxlfr0ykgysanjh65"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kio" ,kio)
@@ -2817,8 +2801,7 @@ notifications which can be embedded in your application.")
        ("kxmlgui" ,kxmlgui)))
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
-       ("shared-mime-info" ,shared-mime-info)
-       ))
+       ("shared-mime-info" ,shared-mime-info)))
     (inputs
      `(("kauth" ,kauth)
        ("kbookmarks" ,kbookmarks)
@@ -2853,7 +2836,7 @@ widgets with a user-interface defined in terms of actions.")
 (define-public kpeople
   (package
     (name "kpeople")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2862,7 +2845,7 @@ widgets with a user-interface defined in terms of actions.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0i5pd1d2jphsvpc3dpdw28dsdal1qrnnrx3k6qx4wax3f8ph5khv"))))
+                "0vbgi4l14g4f0klbxqbkjcag6yi0ghhpxn5nik5sssmcx8qyk885"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -2896,7 +2879,7 @@ to easily extend the contacts collection.")
 (define-public krunner
   (package
     (name "krunner")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2905,7 +2888,7 @@ to easily extend the contacts collection.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "02l5gch9hpag1q5ixnb541g7m9lx25pbggldpa8zykp63apyca19"))))
+                "0yw2jh9dailhcwkkjl2qggg5k90bwbfsn88a3hzwyj2ng2haypis"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("plasma-framework" ,plasma-framework)))
@@ -2966,7 +2949,7 @@ typed.")
 (define-public kservice
   (package
     (name "kservice")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2975,7 +2958,7 @@ typed.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1wwb6c6m8f3b16p47adkc05rrlszvvym7ckks5xp08s58pk1dm8z"))))
+                "0k8xksmw2ai7m0js7l98rv5v6ykifmnqiyy2yc1xhgn40lf1r89j"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfig" ,kconfig)
@@ -3025,7 +3008,7 @@ types or handled by application specific code.")
 (define-public ktexteditor
   (package
     (name "ktexteditor")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3034,7 +3017,7 @@ types or handled by application specific code.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "14iss8svx49vav0h2kg8vhv8g5hg4ky30s7049csfwz7xhp7jmcj"))))
+                "0b5zqhm5aw7jj7dj600xa674ik11gwyzamhyz5962xhvsg5pyjwx"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kparts" ,kparts)))
@@ -3105,7 +3088,7 @@ library.")
 (define-public ktextwidgets
   (package
     (name "ktextwidgets")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3114,7 +3097,7 @@ library.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "14gclshmpwmfwkp2hzlnf823pjjmknd9q0gdclsh3yy268c2rsw1"))))
+                "1ymqmb5z4flzrns3wdjagxbzbpighbincwbhy29a0mqg4zcm82xk"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("ki18n" ,ki18n)
@@ -3152,7 +3135,7 @@ It supports rich text as well as plain text.")
 (define-public kwallet
   (package
     (name "kwallet")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3161,7 +3144,7 @@ It supports rich text as well as plain text.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "13bmks9jb3yhp6clv25qkqkrvbhfyk9z16laxsv79jdd82lxgn1z"))))
+                "1dp072h5r6yd81i69759pj8klfsikrg25za44sry2kh6fxvwmngm"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)))
@@ -3194,7 +3177,7 @@ the passwords on KDE work spaces.")
 (define-public kxmlgui
   (package
     (name "kxmlgui")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3203,7 +3186,7 @@ the passwords on KDE work spaces.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0wsgs5ya3wnc5cryi1r9i30sq8dnnhh15p02skdjlhwjfvdhxmfa"))))
+                "0ph67zarf1sccvp7882brrihv4dsmxq0nggan0rnk54qg0zdhgcn"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kconfig" ,kconfig)
@@ -3246,7 +3229,7 @@ descriptions for integrating actions from plugins.")
 (define-public kxmlrpcclient
   (package
     (name "kxmlrpcclient")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3255,7 +3238,7 @@ descriptions for integrating actions from plugins.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0l4jnvn7s77jkvd2z44mz24mfzcw499plms79j21pjryc88drh06"))))
+                "1573wnv2fbjjzgx3f1qm7y8wlj22bz45mny0rxci90i76nnh4538"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kio" ,kio)))
@@ -3289,7 +3272,7 @@ setUrl, setUserAgent and call.")
 (define-public plasma-framework
   (package
     (name "plasma-framework")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3298,7 +3281,7 @@ setUrl, setUserAgent and call.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1yrccbkdpnfbgn7fzpmzzxm5c7fhkv1vqygq1f96r30fia0cj5jv"))))
+                "1pvxxw52s03i11p5byd2sh8sbvlk6h8q6briq9d4qvjy6c0pmbq4"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("kpackage" ,kpackage)
@@ -3386,7 +3369,7 @@ script engines.")
 (define-public kde-frameworkintegration
   (package
     (name "kde-frameworkintegration")
-    (version "5.49.0")
+    (version "5.55.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3395,7 +3378,7 @@ script engines.")
                     "frameworkintegration-" version ".tar.xz"))
               (sha256
                (base32
-                "1ni4jrny630zf3zwmqbm8z7dqgiar58992lylfv7kspdg5crcgfx"))))
+                "0pfpk268x06pjwciv4jr5v259kjck0sf4xzsgn29ifkmsk74wwmi"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3443,7 +3426,7 @@ workspace.")
 (define-public kdelibs4support
   (package
     (name "kdelibs4support")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -3452,7 +3435,7 @@ workspace.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "1cz70c77l66lbw4fbgmfbq1fldybqxsiay2pg9risgqp3ra8wahi"))))
+        (base32 "1l1gjv06yp9jdiapiypwscbb6y0rfgrnw9rdsl7kkxh9ps8b8j39"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("dbus" ,dbus)
@@ -3559,7 +3542,7 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.")
 (define-public khtml
   (package
     (name "khtml")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -3568,7 +3551,7 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0k9m2pgq64grmgc6ywpzfnn65h8wfkkiwjbmz2mwbf2yi9c1ky64"))))
+        (base32 "0wh9z5xm0gaf1c2s7cq7763jfyv83d58x80nwsvb0ayd6y8id1bq"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3618,7 +3601,7 @@ technology and using KJS for JavaScript support.")
 (define-public kjs
   (package
     (name "kjs")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -3627,7 +3610,7 @@ technology and using KJS for JavaScript support.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "057ikyi4wffjvxdyk08hmj7h8vmbwbcxv98apmjzgsd611zvx5p0"))))
+        (base32 "0c1wyxsgn70jvw7zcjjpw12w9sg9xxvyslgnqlnnyh8sx7rrp70c"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3651,7 +3634,7 @@ support.")
 (define-public kjsembed
   (package
     (name "kjsembed")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -3660,7 +3643,7 @@ support.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0qddjkfm6f0f5dynqvi3l23mgyfdbk4xzg967sj3a2qlq423ah0m"))))
+        (base32 "0dh9012y9bqj48jp50lrsmd28bbvf4jd93l34vfzmza252yvyw3l"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3680,7 +3663,7 @@ QObjects, so you can script your applications.")
 (define-public kmediaplayer
   (package
     (name "kmediaplayer")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -3689,7 +3672,7 @@ QObjects, so you can script your applications.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "0hbx48ivj4i96yagd9n9vd22ycsljrvijm6nfms4x7z7jr49flrx"))))
+        (base32 "0gpfrhgk2l63lyz0bz93cg7mc5g7mjvrkfvpyndmi1v7vhndp5zq"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -3726,7 +3709,7 @@ KParts instead.")
 (define-public kross
   (package
     (name "kross")
-    (version "5.49.0")
+    (version "5.55.0")
     (source
      (origin
        (method url-fetch)
@@ -3735,7 +3718,7 @@ KParts instead.")
              (version-major+minor version) "/portingAids/"
              name "-" version ".tar.xz"))
        (sha256
-        (base32 "194zcf499fkwk3wcs3kc3l0fi9h8gn5yqh6gxrgiyn6iyy9a4qdz"))))
+        (base32 "0p3q36gka6m62nryc3l11d30mlhiqjpghvfcyq6wikiqlv2kqvjs"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
new file mode 100644
index 0000000000..d2aa90b26d
--- /dev/null
+++ b/gnu/packages/kde-plasma.scm
@@ -0,0 +1,228 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages kde-plasma)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages xorg))
+
+(define-public kdecoration
+  (package
+    (name "kdecoration")
+    (version "5.15.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://kde/stable/plasma/" version
+                                  "/kdecoration-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1pcyw6rrz0q7i2jnfvmjz2pixiw2aay19q3pxa1g3qvqydh3id5q"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("ki18n" ,ki18n)
+       ("qtbase" ,qtbase)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'check-setup
+           (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") #t)))))
+    (home-page "https://cgit.kde.org/kdecoration.git")
+    (synopsis "Plugin based library to create window decorations")
+    (description "KDecoration is a library to create window decorations.
+These window decorations can be used by for example an X11 based window
+manager which re-parents a Client window to a window decoration frame.")
+    (license license:lgpl3+)))
+
+(define-public kscreenlocker
+  (package
+    (name "kscreenlocker")
+    (version "5.15.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://kde/stable/plasma/" version
+                                  "/kscreenlocker-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1hgj2mzbbiqn52j3px2mzz6xzzpzr78q3bcai8ddc4gcl1xgs6yi"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'check-setup
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (system (string-append (assoc-ref inputs "xorg-server")
+                                   "/bin/Xvfb :1 -screen 0 640x480x24 &"))
+             (setenv "DISPLAY" ":1")
+             #t))
+         (delete 'check)
+         ;; Tests use the installed library and require a DBus session.
+         (add-after 'install 'check
+           (lambda _
+             (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
+             (invoke "dbus-launch" "ctest" "."))))))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+
+       ;; For tests.
+       ("dbus" ,dbus)
+       ("xorg-server" ,xorg-server)))
+    (inputs
+     `(("kcmutils" ,kcmutils)
+       ("kcrash" ,kcrash)
+       ("kdeclarative" ,kdeclarative)
+       ("kglobalaccel" ,kglobalaccel)
+       ("ki18n" ,ki18n)
+       ("kidletime" ,kidletime)
+       ("knotifications" ,knotifications)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwayland" ,kwayland)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libseccomp" ,libseccomp) ;for sandboxing the look'n'feel package
+       ("libxcursor" ,libxcursor) ;missing in CMakeList.txt
+       ("libxi" ,libxi)           ;XInput, required for grabbing XInput2 devices
+       ("linux-pam" ,linux-pam)
+       ("logind" ,elogind)        ;optional loginctl support
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtx11extras" ,qtx11extras)
+       ("solid" ,solid)
+       ("wayland" ,wayland)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (home-page "https://cgit.kde.org/kscreenlocker.git")
+    (synopsis "Screen locking library")
+    (description
+     "@code{kscreenlocker} is a library for creating secure lock screens.")
+    (license license:gpl2+)))
+
+(define-public libkscreen
+  (package
+    (name "libkscreen")
+    (version "5.15.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/plasma/" version "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32 "1clw8966fmwih1fsjasvpgvfq7w728hlabl3i0zjz53r87hdw3mb"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ;; For testing.
+       ("dbus" ,dbus)))
+    (inputs
+     `(("kwayland" ,kwayland)
+       ("libxrandr" ,libxrandr)
+       ("qtbase" ,qtbase)
+       ("qtx11extras" ,qtx11extras)))
+    (arguments
+     '(#:tests? #f         ; FIXME: 55% tests passed, 5 tests failed out of 11
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; For the missing '/etc/machine-id'.
+             (setenv "DBUS_FATAL_WARNINGS" "0")
+             ;; Run the tests offscreen.
+             (setenv "QT_QPA_PLATFORM" "offscreen")
+             #t)))))
+    (home-page "https://community.kde.org/Solid/Projects/ScreenManagement")
+    (synopsis "KDE's screen management software")
+    (description "KScreen is the new screen management software for KDE Plasma
+Workspaces which tries to be as magic and automatic as possible for users with
+basic needs and easy to configure for those who want special setups.")
+    (license license:gpl2+)))
+
+(define-public libksysguard
+  (package
+    (name "libksysguard")
+    (version "5.15.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde//stable/plasma/" version
+                           "/libksysguard-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1aqkzbng2qq09rpb21r6drnn866b9y8yba3klhvhi0q5vg3p605d"))))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("kconfigwidgets" ,kconfigwidgets)
+       ("kiconthemes" ,kiconthemes)
+       ("kwindowsystem" ,kwindowsystem)
+       ("ki18n" ,ki18n)
+       ("kauth" ,kauth)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kglobalaccel" ,kglobalaccel)
+       ("kio" ,kio)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kservice" ,kservice)
+       ("qtbase" ,qtbase)
+       ("qtscript" ,qtscript)
+       ("qtwebkit" ,qtwebkit)
+       ("qtx11extras" ,qtx11extras)
+       ("plasma" ,plasma-framework)
+       ("zlib" ,zlib)))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       `(,(string-append "-DKDE_INSTALL_DATADIR="
+                         (assoc-ref %outputs "out") "/share"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-cmakelists
+           (lambda _
+             ;; TODO: Verify: This should no longer be necessary, since
+             ;; KF5AuthConfig.cmake.in contains this already.
+             (substitute* "processcore/CMakeLists.txt"
+               (("KAUTH_HELPER_INSTALL_DIR") "KDE_INSTALL_LIBEXECDIR"))))
+         (add-before 'check 'check-setup
+           (lambda _
+             ;; make Qt render "offscreen", required for tests
+             (setenv "QT_QPA_PLATFORM" "offscreen")))
+         (replace 'check
+           (lambda _
+             ;; TODO: Fix this failing test-case
+             (invoke "ctest" "-E" "processtest"))))))
+    (home-page "https://userbase.kde.org/KSysGuard")
+    (synopsis "Network enabled task and system monitoring")
+    (description "KSysGuard can obtain information on system load and
+manage running processes.  It obtains this information by interacting
+with a ksysguardd daemon, which may also run on a remote system.")
+    (license license:gpl3+)))
+
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 5946ba0b52..23078d00a0 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -36,11 +36,11 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
-  #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages image)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages kde-plasma)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages pdf)
@@ -480,105 +480,6 @@ used in KDE development tools Kompare and KDevelop.")
     ;; source archive
     (license (list license:gpl2+ license:lgpl2.0+ license:bsd-3))))
 
-(define-public libkscreen
-  (package
-    (name "libkscreen")
-    (version "5.13.5")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://kde/stable/plasma/" version "/"
-                           name "-" version ".tar.xz"))
-       (sha256
-        (base32 "04719va15i66qn1xqx318v6risxhp8bfcnhxh9mqm5h9qx5c6c4k"))))
-    (build-system cmake-build-system)
-    (native-inputs
-     `(("extra-cmake-modules" ,extra-cmake-modules)
-       ;; For testing.
-       ("dbus" ,dbus)))
-    (inputs
-     `(("kwayland" ,kwayland)
-       ("libxrandr" ,libxrandr)
-       ("qtbase" ,qtbase)
-       ("qtx11extras" ,qtx11extras)))
-    (arguments
-     '(#:tests? #f         ; FIXME: 55% tests passed, 5 tests failed out of 11
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; For the missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             ;; Run the tests offscreen.
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             #t)))))
-    (home-page "https://community.kde.org/Solid/Projects/ScreenManagement")
-    (synopsis "KDE's screen management software")
-    (description "KScreen is the new screen management software for KDE Plasma
-Workspaces which tries to be as magic and automatic as possible for users with
-basic needs and easy to configure for those who want special setups.")
-    (license license:gpl2+)))
-
-(define-public libksysguard
-  (package
-    (name "libksysguard")
-    (version "5.13.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://kde//stable/plasma/" version
-                           "/libksysguard-" version ".tar.xz"))
-       (sha256
-        (base32
-         "0k8q5bxk9zyv7c3nny1c399v8acqs618nw39q20pj2qdijl9ibvh"))))
-    (native-inputs
-     `(("extra-cmake-modules" ,extra-cmake-modules)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("kconfigwidgets" ,kconfigwidgets)
-       ("kiconthemes" ,kiconthemes)
-       ("kwindowsystem" ,kwindowsystem)
-       ("ki18n" ,ki18n)
-       ("kauth" ,kauth)
-       ("kcompletion" ,kcompletion)
-       ("kconfig" ,kconfig)
-       ("kcoreaddons" ,kcoreaddons)
-       ("kwidgetsaddons" ,kwidgetsaddons)
-       ("kservice" ,kservice)
-       ("qtbase" ,qtbase)
-       ("qtscript" ,qtscript)
-       ("qtwebkit" ,qtwebkit)
-       ("qtx11extras" ,qtx11extras)
-       ("plasma" ,plasma-framework)
-       ("zlib" ,zlib)))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags
-       `(,(string-append "-DKDE_INSTALL_DATADIR="
-                         (assoc-ref %outputs "out") "/share"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-cmakelists
-           (lambda _
-             ;; TODO: Verify: This should no longer be necessary, since
-             ;; KF5AuthConfig.cmake.in contains this already.
-             (substitute* "processcore/CMakeLists.txt"
-               (("KAUTH_HELPER_INSTALL_DIR") "KDE_INSTALL_LIBEXECDIR"))))
-         (add-before 'check 'check-setup
-           (lambda _
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")))
-         (replace 'check
-           (lambda _
-             ;; TODO: Fix this failing test-case
-             (invoke "ctest" "-E" "processtest"))))))
-    (home-page "https://www.kde.org/info/plasma-5.13.4.php")
-    (synopsis "Network enabled task and system monitoring")
-    (description "KSysGuard can obtain information on system load and
-manage running processes.  It obtains this information by interacting
-with a ksysguardd daemon, which may also run on a remote system.")
-    (license license:gpl3+)))
-
 (define-public qca
   (package
     (name "qca")
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 508ffaabca..776f9c970e 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -270,7 +270,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
 (define-public kodi
   (package
     (name "kodi")
-    (version "18.0rc3")
+    (version "18.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -279,7 +279,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0bwi4gwmwppjw6bf0zihyg42zwnd0imq0aw4xxsgnacqakhxzii0"))
+                "1w26aqvzxv4c70gcd1vw1pldapsc2xcacwq9b7dqx5m44j0zx1dc"))
               (patches (search-patches "kodi-skip-test-449.patch"))
               (snippet
                '(begin
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 3f7bb4f289..1df6b7b6df 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
-;;; Copyright © 2015 Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
+;;; Copyright © 2015, 2019 Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -157,13 +157,13 @@ conversions for values passed between the two languages.")
 (define-public ruby-ffi
   (package
     (name "ruby-ffi")
-    (version "1.9.23")
+    (version "1.10.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "ffi" version))
               (sha256
                (base32
-                "0zw6pbyvmj8wafdc7l5h7w20zkp1vbr2805ql5d941g2b20pk4zr"))))
+                "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p"))))
     (build-system ruby-build-system)
     ;; FIXME: Before running tests the build system attempts to build libffi
     ;; from sources.
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 4e90d436ac..02ad11c6fb 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -936,7 +936,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
 (define-public libreoffice
   (package
     (name "libreoffice")
-    (version "6.1.3.2")
+    (version "6.1.5.2")
     (source
      (origin
        (method url-fetch)
@@ -946,7 +946,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
        (sha256
         (base32
-         "0i4gf3qi16fg7dxq2l4vhkwh4f5lx7xd1ilpzcw26vccqkv3hvyl"))
+         "1wh8qhqkmb89nmfcb0w6iwpdzxwqr7c5kzxgpk4gy60xin6gwjgb"))
        (patches
         (append (list (origin
                         ;; Support newer versions of Orcus and MDDS.  These patches
@@ -972,37 +972,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
                         (file-name "libreoffice-mdds.patch")
                         (sha256
                          (base32
-                          "0apbmammmp4pk473xiv5vk50r4c5gjvqzf9jkficksvz58q6114f")))
-                      ;; The Poppler API changed rapidly in the versions leading 0.72.
-                      ;; Thus, we need several patches from upstream, each adapting to
-                      ;; different Poppler changes since version 0.68.
-                      (origin
-                        (method url-fetch)
-                        (uri (string-append "https://github.com/LibreOffice/core/commit/"
-                                            "1688a395d05125b83eac6cd5c43f0e3f2f66c491"
-                                            ".patch"))
-                        (file-name "libreoffice-poppler-compat.patch")
-                        (sha256
-                         (base32
-                          "0ia5avmj772mrgs6m4qqf01hs8hzpy3nafidj7w7gqx2zz2s5ih9")))
-                      (origin
-                        (method url-fetch)
-                        (uri (string-append "https://github.com/LibreOffice/core/commit/"
-                                            "5e8bdd9203dd642111c62a6668ee665a20d4ba19"
-                                            ".patch"))
-                        (file-name "libreoffice-poppler-gbool.patch")
-                        (sha256
-                         (base32
-                          "19kc74h5vnk48l2vny8zmm2lkxpwc7g8n9d3wwpg99748dvbmikd")))
-                      (origin
-                        (method url-fetch)
-                        (uri (string-append "https://github.com/LibreOffice/core/commit/"
-                                            "8ff41a26caf51544699863c89598d37d93dc1b21"
-                                            ".patch"))
-                        (file-name "libreoffice-poppler-0.71.patch")
-                        (sha256
-                         (base32
-                          "1dsd0gynjf7d6412dd2sx70xa2s8kld7ibyjdkwg5w9hhi2zxw2f"))))
+                          "0apbmammmp4pk473xiv5vk50r4c5gjvqzf9jkficksvz58q6114f"))))
                 (search-patches "libreoffice-boost.patch"
                                 "libreoffice-icu.patch"
                                 "libreoffice-glm.patch")))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e71c62900f..82fd0a326f 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
@@ -404,8 +404,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 "4.20.7")
-(define %linux-libre-hash "05jbpg4ivcbr8xi5ki03f4n57hnhc52nfjk1ik8czag7f4ph9v0b")
+(define %linux-libre-version "4.20.10")
+(define %linux-libre-hash "0d386gb1s9ag80iqzms9gdsfzirq7nlkpkkx2d6ky01rv0g4vgqn")
 
 (define %linux-libre-4.20-patches
   (list %boot-logo-patch
@@ -418,8 +418,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-4.20-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.19-version "4.19.20")
-(define %linux-libre-4.19-hash "1rs4jvp88n23n9a6f037sn498fzl1fn96zsjjmjngb8nmjr1y9vp")
+(define %linux-libre-4.19-version "4.19.23")
+(define %linux-libre-4.19-hash "0s207vqq2vcrgydjjwb5n2j7di0rjahnrbn3xv4xxlp5scjp59xq")
 
 (define %linux-libre-4.19-patches
   (list %boot-logo-patch
@@ -432,8 +432,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-4.19-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.98")
-(define %linux-libre-4.14-hash "165wlqqpb16zhrwihsb75y153xyz8q5dbi14xim7jsnvwlbh5i79")
+(define %linux-libre-4.14-version "4.14.101")
+(define %linux-libre-4.14-hash "02j240x30zkhpazdimlfi0xq6zjdw6fidgdfrdnvfryvhf6j097j")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -442,8 +442,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.155"
-                    "0fyj8dqhpqi3jh6i58avyvmg4mp9bplnpiffpp3fdka4v85lx152"
+  (make-linux-libre "4.9.158"
+                    "11v56dzp87wyxrymf2s1cmk7jr440z11m3yan73rnnnqlfq460ig"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
@@ -1830,20 +1830,19 @@ file system is as easy as logging into the server with an SSH client.")
 (define-public archivemount
   (package
     (name "archivemount")
-    (version "0.8.9")
+    (version "0.8.12")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://www.cybernoia.de/software/archivemount/"
+       (uri (string-append "https://www.cybernoia.de/software/archivemount/"
                            "archivemount-" version ".tar.gz"))
        (sha256
-        (base32
-         "0v4si1ri6lhnq9q87gkx7fsh6lv6xz4bynknwndqncpvfp5cy1jg"))))
+        (base32 "12fb8fcmd1zwvfgzx4pay47md5cr2kgxcgq82cm6skmq75alfzi4"))))
     (build-system gnu-build-system)
     (inputs `(("fuse" ,fuse)
               ("libarchive" ,libarchive)))
     (native-inputs `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.cybernoia.de/software/archivemount")
+    (home-page "https://www.cybernoia.de/software/archivemount.html")
     (synopsis "Tool for mounting archive files with FUSE")
     (description "archivemount is a FUSE-based file system for Unix variants,
 including Linux.  Its purpose is to mount archives (i.e. tar, tar.gz, etc.) to a
@@ -3022,7 +3021,7 @@ arrays when needed.")
 (define-public multipath-tools
   (package
     (name "multipath-tools")
-    (version "0.7.7")
+    (version "0.7.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.opensvc.com/?p=multipath-tools/"
@@ -3030,7 +3029,7 @@ arrays when needed.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1lirhjjv37jnf42r1ylrhi8kbzx9j9xnyfzvxpp6bzcp0fawigig"))
+                "1jhi6bhl4ih75rfmyyjxd35ghgch5ls1gw40cjxwy9d6bd41z6q1"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -3068,7 +3067,7 @@ arrays when needed.")
                  (("/usr/include/libudev.h")
                   (string-append udev "/include/libudev.h")))
                #t)))
-         (delete 'configure))))
+         (delete 'configure))))         ; no configure script
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
@@ -3093,7 +3092,7 @@ Linux Device Mapper multipathing driver:
 @code{dm} multipath devices.
 @item @command{kpartx} - Create device maps from partition tables.
 @end enumerate")
-    (license (list license:gpl2+             ; Main distribution.
+    (license (list license:gpl2+             ; main distribution
                    license:lgpl2.0+))))      ; libmpathcmd/mpath_cmd.h
 
 (define-public libaio
@@ -3690,7 +3689,7 @@ The collection contains a set of bandwidth and latency benchmark such as:
   (package
     (name "rng-tools")
     (home-page "https://github.com/nhorman/rng-tools")
-    (version "6.6")
+    (version "6.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference (url home-page)
@@ -3698,11 +3697,12 @@ The collection contains a set of bandwidth and latency benchmark such as:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0c32sxfvngdjzfmxn5ngc5yxwi8ij3yl216nhzyz9r31qi3m14v7"))))
+                "19f75m6mzg8h7b4snzg7d6ypvkz6nq32lrpi9ja95gqz4wsd18a5"))))
     (build-system gnu-build-system)
     (arguments
      `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
-       #:configure-flags '("--without-nistbeacon")))
+       #:configure-flags '("--without-nistbeacon"
+                           "--without-pkcs11")))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 93dc1aaf80..5aad298399 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -984,7 +984,8 @@ from other CLXes around the net.")
                ;; and can be removed when we move to the next release.
                (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
     (build-system asdf-build-system/sbcl)
-    (native-inputs `(("fiasco" ,sbcl-fiasco)))
+    (native-inputs `(("fiasco" ,sbcl-fiasco)
+                     ("texinfo" ,texinfo)))
     (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
               ("clx" ,sbcl-clx)
               ("alexandria" ,sbcl-alexandria)))
@@ -1016,6 +1017,16 @@ from other CLXes around the net.")
                      Icon=~@
                      Type=Application~%"
                     out)))
+               #t)))
+         (add-after 'install 'install-manual
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The proper way to the manual is bootstrapping a full autotools
+             ;; build system and running ‘./configure && make stumpwm.info’ to
+             ;; do some macro substitution.  We can get away with much less.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (info (string-append out "/share/info")))
+               (invoke "makeinfo" "stumpwm.texi.in")
+               (install-file "stumpwm.info" info)
                #t))))))
     (synopsis "Window manager written in Common Lisp")
     (description "Stumpwm is a window manager written entirely in Common Lisp.
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 13223fbb66..bb5a4a141c 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -3,9 +3,9 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
-;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
@@ -47,15 +47,15 @@
 (define-public llvm
   (package
     (name "llvm")
-    (version "6.0.1")
+    (version "7.0.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "http://llvm.org/releases/"
+      (uri (string-append "https://llvm.org/releases/"
                           version "/llvm-" version ".src.tar.xz"))
       (sha256
        (base32
-        "1qpls3vk85lydi5b4axl0809fv932qgsqgdgrk098567z4jc7mmn"))))
+        "16s196wqzdw4pmri15hadzqgdi926zln3an2viwyq0kini6zr3d3"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2
@@ -95,21 +95,6 @@ languages is in development.  The compiler infrastructure includes mirror sets
 of programming tools as well as libraries with equivalent functionality.")
     (license license:ncsa)))
 
-;; TODO: Build Mesa with LLVM 7 in the next staging cycle.
-;; TODO: Make LLVM 7 the default LLVM once Clang is also upgraded.
-(define-public llvm-7.0.1
-  (package (inherit llvm)
-    (name "llvm")
-    (version "7.0.1")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "http://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
-      (sha256
-       (base32
-        "16s196wqzdw4pmri15hadzqgdi926zln3an2viwyq0kini6zr3d3"))))))
-
 (define* (clang-runtime-from-llvm llvm hash
                                   #:optional (patches '()))
   (package
@@ -118,7 +103,7 @@ of programming tools as well as libraries with equivalent functionality.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
+       (uri (string-append "https://llvm.org/releases/"
                            version "/compiler-rt-" version ".src.tar.xz"))
        (sha256 (base32 hash))
        (patches (map search-patch patches))))
@@ -150,7 +135,7 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
+       (uri (string-append "https://llvm.org/releases/"
                            version "/cfe-" version ".src.tar.xz"))
        (sha256 (base32 hash))
        (patches (map search-patch patches))))
@@ -190,7 +175,7 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
                            (compiler-rt (assoc-ref inputs "clang-runtime")))
                        (case (string->number ,(version-major
                                                (package-version clang-runtime)))
-                         ((6)
+                         ((or 6 7)
                           ;; Link to libclang_rt files from clang-runtime.
                           (substitute* "lib/Driver/ToolChain.cpp"
                             (("getDriver\\(\\)\\.ResourceDir")
@@ -274,13 +259,58 @@ project includes the Clang front end, the Clang static analyzer, and several
 code analysis tools.")
     (license license:ncsa)))
 
+(define-public libcxx
+  (package
+    (name "libcxx")
+    (version (package-version llvm))
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://llvm.org/releases/"
+                           version "/libcxx-" version ".src.tar.xz"))
+       (sha256
+        (base32
+         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)))
+    (home-page "https://libcxx.llvm.org")
+    (synopsis "C++ standard library")
+    (description
+     "This package provides an implementation of the C++ standard library for
+use with Clang, targeting C++11, C++14 and above.")
+    (license license:expat)))
+
 (define-public clang-runtime
   (clang-runtime-from-llvm
    llvm
-   "1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl"))
+   "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq"))
 
 (define-public clang
   (clang-from-llvm llvm clang-runtime
+                   "067lwggnbg0w1dfrps790r5l6k8n5zwhlsw7zb6zvmfpwpfn4nx4"
+                   #:patches '("clang-7.0-libc-search-path.patch")))
+
+(define-public llvm-6
+  (package
+    (inherit llvm)
+    (version "6.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://llvm.org/releases/"
+                                  version "/llvm-" version ".src.tar.xz"))
+              (sha256
+               (base32
+                "1qpls3vk85lydi5b4axl0809fv932qgsqgdgrk098567z4jc7mmn"))))))
+
+(define-public clang-runtime-6
+  (clang-runtime-from-llvm
+   llvm-6
+   "1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl"))
+
+(define-public clang-6
+  (clang-from-llvm llvm-6 clang-runtime
                    "0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
                    #:patches '("clang-6.0-libc-search-path.patch")))
 
@@ -291,7 +321,7 @@ code analysis tools.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "http://llvm.org/releases/"
+      (uri (string-append "https://llvm.org/releases/"
                           version "/llvm-" version ".src.tar.xz"))
       (sha256
        (base32
@@ -341,7 +371,7 @@ code analysis tools.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
+       (uri (string-append "https://llvm.org/releases/"
                            version "/llvm-" version ".src.tar.xz"))
        (sha256
         (base32
@@ -365,7 +395,7 @@ code analysis tools.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
+       (uri (string-append "https://llvm.org/releases/"
                            version "/llvm-" version ".src.tar.xz"))
        (sha256
         (base32
@@ -388,7 +418,7 @@ code analysis tools.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
+       (uri (string-append "https://llvm.org/releases/"
                            version "/llvm-" version ".src.tar.xz"))
        (patches
         (search-patches "llvm-3.5-fix-clang-build-with-gcc5.patch"))
@@ -511,7 +541,7 @@ SOURCE-FILES found in SOURCE-PACKAGE."
     (description "This package allows to filter code through @code{clang-format}
 to fix its formatting.  @code{clang-format} is a tool that formats
 C/C++/Obj-C code according to a set of style options, see
-@url{http://clang.llvm.org/docs/ClangFormatStyleOptions.html}.")))
+@url{https://clang.llvm.org/docs/ClangFormatStyleOptions.html}.")))
 
 (define-public emacs-clang-rename
   (package
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index b3d32c284f..a37d2a1dd5 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -43,8 +43,8 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages kde-plasma)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages lxde)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index b56468f8c1..34bcd82ad7 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -322,9 +322,6 @@ networks) based on simulation of (stochastic) flow in graphs.")
 algorithm.")
     (license license:gpl3)))
 
-(define-public ocaml4.01-mcl
-  (package-with-ocaml4.01 ocaml-mcl))
-
 (define-public randomjungle
   (package
     (name "randomjungle")
diff --git a/gnu/packages/magic-wormhole.scm b/gnu/packages/magic-wormhole.scm
new file mode 100644
index 0000000000..bdfc1162b6
--- /dev/null
+++ b/gnu/packages/magic-wormhole.scm
@@ -0,0 +1,160 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
+;;;
+;;; 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 magic-wormhole)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix licenses)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz))
+
+(define-public magic-wormhole-mailbox-server
+  (package
+    (name "magic-wormhole-mailbox-server")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "magic-wormhole-mailbox-server" version))
+        (sha256
+         (base32
+          "1q6zhbx8fcpk7rchclm7yqcxdsc1x97hki2ji61sa544r5xvxv55"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tests
+          (lambda _
+            ;; This test requires network access.
+            (substitute* "src/wormhole_mailbox_server/test/test_web.py"
+              (("test_log_http") "disabled_test_log_http"))
+            #t)))))
+    (native-inputs
+     `(("python-mock" ,python-mock)))
+    (propagated-inputs
+     `(("python-attrs" ,python-attrs)
+       ("python-autobahn" ,python-autobahn)
+       ("python-idna" ,python-idna)
+       ("python-service-identity" ,python-service-identity)
+       ("python-six" ,python-six)
+       ("python-treq" ,python-treq)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/warner/magic-wormhole-mailbox-server")
+    (synopsis "Magic-Wormhole central mailbox server")
+    (description "This package provides the main server that Magic-Wormhole
+clients connect to.  The server performs store-and-forward delivery for small
+key-exchange and control messages.  Bulk data is sent over a direct TCP
+connection, or through a transit-relay.")
+   (license expat)))
+
+(define-public magic-wormhole-transit-relay
+  (package
+    (name "magic-wormhole-transit-relay")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "magic-wormhole-transit-relay" version))
+        (sha256
+         (base32
+          "11w5gdc6am2ph5rns60x0694sx4zrlzxj540jljhn5cmnbx1ngxi"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-docs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (docs (string-append out "/share/doc/magic-wormhole-transit-relay")))
+               (for-each (lambda (file)
+                           (install-file file docs))
+                         (find-files "docs/"))
+               #t))))))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pyflakes" ,python-pyflakes)
+       ("python-tox" ,python-tox)))
+    (propagated-inputs
+     `(("python-twisted" ,python-twisted)))
+    (home-page
+      "https://github.com/warner/magic-wormhole-transit-relay")
+    (synopsis "Magic-Wormhole relay server")
+    (description "This package provides the Magic-Wormhole Transit Relay
+server, which helps clients establish bulk-data transit connections even when
+both are behind NAT boxes.  Each side makes a TCP connection to this server and
+presents a handshake.  Two connections with identical handshakes are glued
+together, allowing them to pretend they have a direct connection.")
+    (license expat)))
+
+(define-public magic-wormhole
+  (package
+    (name "magic-wormhole")
+    (version "0.11.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "magic-wormhole" version))
+        (sha256
+         (base32
+          "01fr4bi6kc6fz9n3c4qq892inrc3nf6p2djy65yvm7xkvdxncydf"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; XXX I can't figure out how to build the docs properly.
+         ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34515#101
+         (add-after 'install 'install-docs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (man (string-append out "/share/man/man1")))
+               (install-file "docs/wormhole.1" man))
+             #t)))))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ;; XXX These are required for the test suite but end up being referenced
+       ;; by the built package.
+       ;; https://bugs.gnu.org/25235
+       ("magic-wormhole-mailbox-server" ,magic-wormhole-mailbox-server)
+       ("magic-wormhole-transit-relay" ,magic-wormhole-transit-relay)))
+    (propagated-inputs
+     `(("python-autobahn" ,python-autobahn)
+       ("python-click" ,python-click)
+       ("python-hkdf" ,python-hkdf)
+       ("python-humanize" ,python-humanize)
+       ("python-pynacl" ,python-pynacl)
+       ("python-spake2" ,python-spake2)
+       ("python-tqdm" ,python-tqdm)
+       ("python-twisted" ,python-twisted)
+       ("python-txtorcon" ,python-txtorcon)))
+    (home-page "https://github.com/warner/magic-wormhole")
+    (synopsis "Securely transfer data between computers")
+    (description "Magic-Wormhole is a library and a command-line tool named
+wormhole, which makes it possible to securely transfer arbitrary-sized files and
+directories (or short pieces of text) from one computer to another.  The two
+endpoints are identified by using identical \"wormhole codes\": in general, the
+sending machine generates and displays the code, which must then be typed into
+the receiving machine.
+
+The codes are short and human-pronounceable, using a phonetically-distinct
+wordlist.  The receiving side offers tab-completion on the codewords, so usually
+only a few characters must be typed.  Wormhole codes are single-use and do not
+need to be memorized.")
+    (license expat)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 301298082a..78cf899466 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015, 2016, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
@@ -491,7 +491,7 @@ and corrections.  It is based on a Bayesian filter.")
 (define-public offlineimap
   (package
     (name "offlineimap")
-    (version "7.2.2")
+    (version "7.2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -500,7 +500,7 @@ and corrections.  It is based on a Bayesian filter.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "11nj7y9fa7v6vcxk3wr8smfgm3mxxnmq3l8q69rrjxlfzcv7dl8m"))))
+                "18sdnhjldn8zs03bgqy1qa3ikmlfvyxcvwp3nbnv1a74biccqbpa"))))
     (build-system python-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)))
@@ -757,14 +757,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.28.1")
+    (version "0.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0mcsfkrp6mpy374m5rwwgm9md8qzvwa3s4rbzid4cnkx2cwfj4fi"))))
+                "0cg9ff7h7mklgbqqknxigxxx1j3p3s2a9cxvrs5ih7j56f04k9l5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -1066,7 +1066,7 @@ which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.2")
+    (version "1.8.3")
     (source
      (origin
        (method url-fetch)
@@ -1074,7 +1074,7 @@ which can add many functionalities to the base client.")
                            "/msmtp-" version ".tar.xz"))
        (sha256
         (base32
-         "14w7lmw1jxlganfk089b0ib23y5917mxbg3xqpid007dd4cmq66i"))))
+         "1d4jdgrx4czp66nnwdsy938lzr4llhwyy0715pwg0j6h6gyyxciw"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsecret" ,libsecret)
@@ -1730,27 +1730,23 @@ maintained.")
 (define-public khard
   (package
     (name "khard")
-    (version "0.12.2")
+    (version "0.13.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "01y52qmab4cw9wmx87aahnxbyaxrxw8j2wx06mpcqsfvgk8d54wi"))))
+                "1lyjiskc6ckjjylzr04dnm66p3cnn7vlysw9c27qls3y3ywx14zw"))))
     (build-system python-build-system)
     (arguments
-      `(#:phases
-        (modify-phases %standard-phases
-          (add-after 'install 'install-doc
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (doc (string-append out "/share/doc/khard")))
-                (copy-recursively "misc/khard" doc)
-                #t))))
-        ;; Tests are currently only runnable without preexisting data on
-        ;; the development branch:
-        ;; https://github.com/scheibler/khard/issues/176
-        #:tests? #f))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/khard")))
+               (copy-recursively "misc/khard" doc)
+               #t))))))
     (propagated-inputs
      `(("python-atomicwrites" ,python-atomicwrites)
        ("python-configobj" ,python-configobj)
@@ -2597,14 +2593,14 @@ servers.  The 4rev1 and 4 versions of IMAP are supported.")
 (define-public urlscan
   (package
     (name "urlscan")
-    (version "0.9.1")
+    (version "0.9.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "urlscan" version))
         (sha256
          (base32
-          "0vpdyrx51sg9a8kswa7ibbcgcpvc7r03aq8x4n4c7v2xg0v3c7wb"))))
+          "1zldck7vnp7z04aacbx3cprf5kzha4gfhjmss4iv2lh5nccxjfzx"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-urwid" ,python-urwid)))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 34c72dadad..7a03036b67 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2016, 2017 John Darrington <jmd@gnu.org>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -584,7 +584,8 @@ problems in numerical linear algebra.")
                            version ".tgz"))
        (sha256
         (base32
-         "0p1r61ss1fq0bs8ynnx7xq4wwsdvs32ljvwjnx6yxr8gd6pawx0c"))))
+         "0p1r61ss1fq0bs8ynnx7xq4wwsdvs32ljvwjnx6yxr8gd6pawx0c"))
+       (patches (search-patches "scalapack-blacs-mpi-deprecations.patch"))))
     (build-system cmake-build-system)
     (inputs
      `(("mpi" ,openmpi)
@@ -1635,7 +1636,7 @@ September 2004}")
 (define-public petsc
   (package
     (name "petsc")
-    (version "3.10.2")
+    (version "3.10.3")
     (source
      (origin
       (method url-fetch)
@@ -1643,7 +1644,7 @@ September 2004}")
       (uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
                           "petsc-lite-" version ".tar.gz"))
       (sha256
-       (base32 "0bl64pydak3rblnjffi482r8bin4xim9sb37ksl2jkcxf0i0irsi"))))
+       (base32 "10p9ap1rp6k8k2g8zdc505kdlsc3976fjymyp393sccjapm50dph"))))
     (outputs '("out"                    ;libraries and headers
                "examples"))             ;~30MiB of examples
     (build-system gnu-build-system)
@@ -3446,7 +3447,7 @@ revised simplex and the branch-and-bound methods.")
 (define-public dealii
   (package
     (name "dealii")
-    (version "8.5.1")
+    (version "9.0.1")
     (source
      (origin
        (method url-fetch)
@@ -3454,7 +3455,8 @@ revised simplex and the branch-and-bound methods.")
                            "download/v" version "/dealii-" version ".tar.gz"))
        (sha256
         (base32
-         "1bh9rsmkrg0zi70n27b11djmac9lximghsiy7mg7w7x544n82gnk"))
+         "0r7f8rhl3xr94imd372plizdcbqk0a70w73lwc3vw912dxk0sbyz"))
+       (patches (search-patches "dealii-mpi-deprecations.patch"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled sources: UMFPACK, TBB, muParser, and boost
@@ -3507,10 +3509,8 @@ in finite element programs.")
     (arguments
      (substitute-keyword-arguments (package-arguments dealii)
        ((#:configure-flags cf)
-        ``("-DMPI_C_COMPILER=mpicc"
-           "-DMPI_CXX_COMPILER=mpicxx"
-           "-DMPI_Fortran_COMPILER=mpifort"
-           ,@,cf))
+        `(cons "-DDEAL_II_WITH_MPI:BOOL=ON"
+               ,cf))
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
            (add-before 'check 'mpi-setup
@@ -3973,6 +3973,96 @@ as equations, scalars, vectors, and matrices.")
 theories} (SMT) solver.  It provides a C/C++ API, as well as Python bindings.")
     (license license:expat)))
 
+(define-public elpa
+  (package
+    (name "elpa")
+    (version "2018.11.001")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://elpa.mpcdf.mpg.de/html/Releases/"
+                                  version "/elpa-" version ".tar.gz"))
+              (sha256
+               (base32
+                "05hv3v5i6xmziaizw350ff72y1c3k662r85fm3xfdrkclj5zw9yc"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("fortran" ,gfortran)
+       ("perl" ,perl)))                 ;for configure and deps
+    (inputs
+     `(("blas" ,openblas)))
+    (arguments
+     `(#:configure-flags
+       `("--enable-openmp"
+         "--with-mpi=no"
+         ;; ELPA unfortunately does not support runtime dispatch, so we can
+         ;; only enable the "generic" kernels.  See the "Cross compilation"
+         ;; section of INSTALL.md.
+         "--enable-generic"
+         "--disable-sse" "--disable-sse-assembly" ;Require SSE3
+         "--disable-avx" "--disable-avx2" "--disable-avx512"
+         ,(string-append "CFLAGS=-O3 "
+                         "-funsafe-loop-optimizations -funsafe-math-optimizations "
+                         "-ftree-vect-loop-version -ftree-vectorize "
+                         ,(let ((system (or (%current-target-system)
+                                            (%current-system))))
+                            (cond
+                             ((or (string-prefix? "x86_64" system)
+                                  (string-prefix? "i686" system))
+                              "-msse2")
+                             (else "")))))
+       #:parallel-tests? #f             ;tests are multi-threaded, via BLAS
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-header-generation
+           (lambda _
+             (substitute* "configure"
+               (("^  *make.*top_srcdir=\"\\$srcdir\"" &)
+                (string-append & " CPP=\"$CPP\"")))
+             #t))
+         (add-before 'check 'setup-tests
+           (lambda _
+             ;; Decrease test time and RAM use by computing fewer eigenvalues.
+             ;; The flags are (MATRIX-SIZE, EIGENVALUES, BLOCK-SIZE), where
+             ;; the default is (500, 250, 16) for C tests and (5000, 150, 16)
+             ;; for Fortran.  This also causes several tests to pass that
+             ;; otherwise would otherwise fail with matrix size 5000; possibly
+             ;; due to floating point tolerances that are too tight.
+             (setenv "TEST_FLAGS" "1500 50 16") ;from elpa.spec
+             (setenv "OMP_NUM_THREADS" (number->string (parallel-job-count)))
+             (substitute* "Makefile"
+               ;; Test scripts are generated, patch the shebang
+               (("#!/bin/bash") (string-append "#!" (which "sh"))))
+             #t)))))
+    (home-page "http://elpa.mpcdf.mpg.de")
+    (synopsis "Eigenvalue solvers for symmetric matrices")
+    (description
+     "The ELPA library provides efficient and scalable direct eigensolvers for
+symmetric matrices.")
+    (license license:lgpl3)))
+
+(define-public elpa-openmpi
+  (package (inherit elpa)
+    (name "elpa-openmpi")
+    (inputs
+     `(("mpi" ,openmpi)
+       ("scalapack" ,scalapack)
+       ,@(package-inputs elpa)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments elpa)
+       ((#:configure-flags cf '())
+        `(cons "--with-mpi=yes" (delete "--with-mpi=no" ,cf)))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (add-before 'check 'mpi-setup
+             (lambda _
+               ;; Tests use 2 mpi tasks by default, use our remaining build
+               ;; cores as OpenMP threads.
+               (setenv "OMP_NUM_THREADS" (number->string
+                                          (max (quotient (parallel-job-count) 2)
+                                               1)))
+               (,%openmpi-setup)))))))
+    (synopsis "Eigenvalue solvers for symmetric matrices (with MPI support)")))
+
 (define-public elemental
   (package
     (name "elemental")
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 5379eb9166..2d7d54dd9d 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019 Tobias Geerinckx-Rite <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system ant)
   #:use-module (gnu packages)
@@ -79,12 +81,14 @@ provides the Maven plugin generating the component metadata.")))
     (name "maven-resolver-api")
     (version "1.3.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/apache/maven-resolver/"
-                                  "archive/maven-resolver-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/apache/maven-resolver.git")
+                    (commit (string-append "maven-resolver-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gfkf8g5zbjh6ciq3dnby9m5irhrbyc7d2jzic9l8xx6hl61q6mm"))))
+                "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "maven-resolver-api.jar"
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 0a43c55b7a..35d3c9e303 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
+  #:use-module (gnu packages fabric-management)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
@@ -174,6 +176,7 @@ bind processes, and much more.")
        ("gfortran" ,gfortran)
        ("libfabric" ,libfabric)
        ("libevent" ,libevent)
+       ("opensm" ,opensm)
        ,@(if (and (not (%current-target-system))
                   (member (%current-system) (package-supported-systems psm)))
              `(("psm" ,psm))
@@ -198,11 +201,31 @@ bind processes, and much more.")
                            "--with-valgrind"
                            "--with-hwloc=external"
                            "--with-libevent"
+
+                           ;; InfiniBand support
+                           "--enable-openib-control-hdr-padding"
+                           "--enable-openib-dynamic-sl"
+                           "--enable-openib-udcm"
+                           "--enable-openib-rdmacm"
+                           "--enable-openib-rdmacm-ibaddr"
+
                            ;; Enable support for SLURM's Process Manager
                            ;; Interface (PMI).
                            ,(string-append "--with-pmi="
                                            (assoc-ref %build-inputs "slurm")))
        #:phases (modify-phases %standard-phases
+                  ;; opensm is needed for InfiniBand support.
+                  (add-after 'unpack 'find-opensm-headers
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (setenv "C_INCLUDE_PATH"
+                              (string-append (assoc-ref inputs "opensm")
+                                             "/include/infiniband/:"
+                                             (getenv "C_INCLUDE_PATH")))
+                      (setenv "CPLUS_INCLUDE_PATH"
+                              (string-append (assoc-ref inputs "opensm")
+                                             "/include/infiniband/:"
+                                             (getenv "CPLUS_INCLUDE_PATH")))
+                      #t))
                   (add-before 'build 'remove-absolute
                     (lambda _
                       ;; Remove compiler absolute file names (OPAL_FC_ABSOLUTE
@@ -273,14 +296,14 @@ only provides @code{MPI_THREAD_FUNNELED}.")))
 (define-public python-mpi4py
   (package
     (name "python-mpi4py")
-    (version "3.0.0")
+    (version "3.0.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "mpi4py" version))
         (sha256
           (base32
-            "1mzgd26dfv4vwbci8gq77ss9f0x26i9aqzq9b9vs9ndxhlnv0mxl"))))
+            "0ld8rjmsjr0dklvj2g1gr3ax32sdq0xjxyh0cspknc1i36waajb5"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 9f434dabe3..fe78239c1f 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015, 2018 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
@@ -230,17 +230,16 @@ and numerical quadrature programs are included.")
 (define-public tomsfastmath
   (package
     (name "tomsfastmath")
-    (version "0.13.0")
+    (version "0.13.1")
     (synopsis "Large integer arithmetic library")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libtom/tomsfastmath/"
                                   "releases/download/v" version "/"
-                                  "tfm-" (version-major+minor version) ".tar.bz2"))
+                                  "tfm-" version ".tar.xz"))
               (sha256
                (base32
-                "01rlsvp6lskk2a0gfdi24ak5h8vdwi6kqbvbwjnmb92r0zrfdvwd"))
-              (patches (search-patches "tomsfastmath-constness.patch"))))
+                "0f0pmiaskh89sp0q933pafxb914shpaj5ad8sb5rzk1wv8d7mja7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("libtool" ,libtool)))
@@ -252,7 +251,7 @@ and numerical quadrature programs are included.")
                           "CC=gcc")
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)            ;no configuration
+         (delete 'configure)            ; no configuration
          (replace 'check
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make"
@@ -262,7 +261,7 @@ and numerical quadrature programs are included.")
              (invoke "./test")))
          (add-before 'install 'install-nogroup
            (lambda _
-             ;; Let permissions inherit from the current process
+             ;; Let permissions inherit from the current process.
              (substitute* "makefile.shared"
                (("-g \\$\\(GROUP\\) -o \\$\\(USER\\)") ""))
              #t))
@@ -286,7 +285,7 @@ Libs: -L~a/lib -ltfm~%"
                            ,synopsis ,version out)))
                (install-file "tomsfastmath.pc" pc-dir)
                #t))))))
-    (home-page "http://www.libtom.org/TomsFastMath/")
+    (home-page "https://www.libtom.net/TomsFastMath/")
     (description "TomsFastMath is a large integer library written in portable
 ISO C.  It is a port of LibTomMath with optional support for inline assembler
 multiplies.")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index f1733b7ae1..35958eee96 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 nee <nee.git@hidamari.blue>
 ;;; Copyright © 2018 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -2249,14 +2249,14 @@ from the command line.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.9.3")
+    (version "0.9.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "1010gvkzdzdk39g1g6wx2j19ls0kdl6l9q51xzk2qik7h2fwxl71"))))
+                "1zsikhqj5xzhw2x3b6pqlmcwz3hxx07lbbif8v3m3j41snzjic22"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; no "check" target
@@ -4227,7 +4227,7 @@ at @code{musicbrainz.org}.")
 (define-public clyrics
   (package
     (name "clyrics")
-    (version "0.10")
+    (version "0.11")
     (source
      (origin
        (method git-fetch)
@@ -4237,10 +4237,10 @@ at @code{musicbrainz.org}.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1qvj4dyipkkdccx5hci4z0q23i54ldk6hh7x5m35a7f70rrj6fbk"))))
+         "0vfjy555achgi5zwa34x4q7r692nc6bq4jx518a5w4m7k5fvm71j"))))
     (build-system trivial-build-system)
     (inputs
-     `(("bash" ,bash)                             ;for the wrapped program
+     `(("bash" ,bash)                   ; for the wrapped program
        ("perl" ,perl)
        ("perl-www-mechanize" ,perl-www-mechanize)
        ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
@@ -4270,9 +4270,9 @@ at @code{musicbrainz.org}.")
                          ,(delete
                            ""
                            (map (match-lambda
-                                  (((?  (cut string-prefix? "perl-" <>) name) . dir)
-                                   (string-append dir "/lib/perl5/site_perl"))
-                                  (_ ""))
+                                 (((?  (cut string-prefix? "perl-" <>) name) . dir)
+                                  (string-append dir "/lib/perl5/site_perl"))
+                                 (_ ""))
                                 %build-inputs))))
                      (copy-recursively "plugins" (string-append output "/clyrics"))
                      #t))))
diff --git a/gnu/packages/musl.scm b/gnu/packages/musl.scm
index 357372becd..8592db1373 100644
--- a/gnu/packages/musl.scm
+++ b/gnu/packages/musl.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,17 +28,17 @@
 (define-public musl
   (package
     (name "musl")
-    (version "1.1.20")
+    (version "1.1.21")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.musl-libc.org/releases/"
-                                  name "-" version ".tar.gz"))
+              (uri (string-append "https://www.musl-libc.org/releases/"
+                                  "musl-" version ".tar.gz"))
               (sha256
                (base32
-                "0q8dsjxl41dccscv9a0r78bs7jap57mn4mni5pwbbip6s1qqggj4"))))
+                "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; Musl has no tests
+     `(#:tests? #f                      ; musl has no tests
        #:configure-flags
        (list "--disable-gcc-wrapper")))
     (synopsis "Small C standard library")
diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm
index 5008a6a521..36d4738d90 100644
--- a/gnu/packages/ncdu.scm
+++ b/gnu/packages/ncdu.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public ncdu
   (package
     (name "ncdu")
-    (version "1.13")
+    (version "1.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dev.yorhel.nl/download/ncdu-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ni56ymlii577src4dzfbrq1mznbf6i0nka4bvh2sb1971f2ingl"))))
+                "0i4cap2z3037xx2rdzhrlazl2igk3xy4ncddp9j7xqi1mcx7i566"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (synopsis "Ncurses based disk usage analyzer")
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index 2051f1dd9d..ae3fb887e8 100644
--- a/gnu/packages/ncurses.scm
+++ b/gnu/packages/ncurses.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -229,15 +229,15 @@ ncursesw library provides wide character support.")
 (define-public dialog
   (package
     (name "dialog")
-    (version "1.3-20180621")
+    (version "1.3-20190211")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://invisible-mirror.net/archives/dialog/dialog-"
+                    "https://invisible-mirror.net/archives/dialog/dialog-"
                     version ".tgz"))
               (sha256
                (base32
-                "0yjqczlf64yppgvk4i6s0jm06mdr0mb5m6sj39nf891dnbi5jj2a"))))
+                "1lx0bvradzx1zl7znlrsnyljcs596r7wamkhyq37ikbxsy4y5h29"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; no test suite
diff --git a/gnu/packages/netpbm.scm b/gnu/packages/netpbm.scm
index e5246660a2..9c0e970257 100644
--- a/gnu/packages/netpbm.scm
+++ b/gnu/packages/netpbm.scm
@@ -135,7 +135,9 @@
              ;; 'gsc', so look for that instead.
              (substitute* "converter/other/pstopnm.c"
                (("\"%s/gs\"")
-                "\"%s/gsc\"")))
+                "\"%s/gsc\"")
+               (("/usr/bin/gs")
+                (string-append (assoc-ref inputs "ghostscript") "/bin/gsc"))))
            #t))
        (add-before 'check 'setup-check
          (lambda _
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index c71ae4a24d..ab253013bf 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
@@ -16,7 +16,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2017, 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018 Adam Van Ymeren <adam@vany.ca>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
@@ -98,6 +98,7 @@
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wm)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
@@ -1203,19 +1204,18 @@ HTTP proxies.")
 (define-public enet
   (package
     (name "enet")
-    (version "1.3.13")
+    (version "1.3.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://enet.bespin.org/download/"
-                                  name "-" version ".tar.gz"))
+                                  "enet-" version ".tar.gz"))
               (sha256
                (base32
-                "0p53mnmjbm56wizwraznynx13fcibcxiqny110dp6a5a3w174q73"))))
+                "0w780zc6cy8yq4cskpphx0f91lzh51vh9lwyc5ll8hhamdxgbxlq"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (synopsis
-     "Network communication layer on top of UDP")
+    (synopsis "Network communication layer on top of UDP")
     (description
      "ENet's purpose is to provide a relatively thin, simple and robust network
 communication layer on top of UDP.  The primary feature it provides is optional
@@ -1401,7 +1401,7 @@ procedure calls (RPCs).")
 (define-public openvswitch
   (package
     (name "openvswitch")
-    (version "2.8.1")
+    (version "2.10.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1409,7 +1409,7 @@ procedure calls (RPCs).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "14rqqhfyv49irz8ag0qbv9jn8z0bn3qzxir3r074y16p4sg4674d"))))
+                "103wi6k8xal0z1pyy680gms56skagh6jawa2ja588ljr55jcg4sg"))))
     (build-system gnu-build-system)
     (arguments
      '(;; FIXME: many tests fail with:
@@ -2367,3 +2367,31 @@ communication over HTTP.")
 be used to manage peer-to-peer network connections as needed for real time
 communication.")
     (license license:gpl3+)))
+
+(define-public frrouting
+  (package
+    (name "frrouting")
+    (version "6.0.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/FRRouting/frr/releases/"
+                                  "download/frr-" version "/frr-" version
+                                  ".tar.xz"))
+              (sha256
+               (base32
+                "0xfrvi62w8qlh46f504ka0skb7pm0g0p8vmdng4w90gsbirlzpdd"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("c-ares" ,c-ares)
+       ("json-c" ,json-c)
+       ("readline" ,readline)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://frrouting.org/")
+    (synopsis "IP routing protocol suite")
+    (description "FRRouting (FRR) is an IP routing protocol suite which includes
+protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP. ")
+    (license license:gpl2+)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 07fcf92aea..9a807a4cb6 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -234,45 +234,6 @@ functional, imperative and object-oriented styles of programming.")
     ;; distributed under lgpl2.0.
     (license (list license:qpl license:lgpl2.0))))
 
-(define-public ocaml-4.01
-  (package
-    (inherit ocaml-4.02)
-    (version "4.01.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://caml.inria.fr/pub/distrib/ocaml-"
-                    (version-major+minor version)
-                    "/ocaml-" version ".tar.xz"))
-              (sha256
-               (base32
-                "03d7ida94s1gpr3gadf4jyhmh5rrszd5s4m4z59daaib25rvfyv7"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments ocaml-4.02)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'build
-             (lambda _
-               ;; Specifying '-j' at all causes the build to fail.
-               (invoke "make" "world.opt")))
-           ,@(if (string=? "aarch64-linux" (%current-system))
-               ;; Custom configure script doesn't recongnize aarch64.
-               '((replace 'configure
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out (assoc-ref outputs "out"))
-                           (mandir (string-append out "/share/man")))
-                      (invoke "./configure"
-                              "--prefix" out
-                              "--mandir" mandir
-                              "-host" "armv8l-unknown-linux-gnu")))))
-               '())
-           (replace 'check
-             (lambda _
-               (with-directory-excursion "testsuite"
-                 (invoke "make" "all"
-                         (string-append
-                          "TOPDIR=" (getcwd) "/..")))))))))))
-
 (define-public ocaml-4.07
   (package
     (inherit ocaml-4.02)
@@ -957,14 +918,6 @@ compilers that can directly deal with packages.")
        ("m4" ,m4)
        ("ocaml" ,ocaml-4.02)))))
 
-(define-public ocaml4.01-findlib
-  (package
-    (inherit ocaml-findlib)
-    (name "ocaml4.01-findlib")
-    (native-inputs
-     `(("m4" ,m4)
-       ("ocaml" ,ocaml-4.01)))))
-
 ;; note that some tests may hang for no obvious reason.
 (define-public ocaml-ounit
   (package
@@ -990,9 +943,6 @@ compilers that can directly deal with packages.")
 other XUnit testing frameworks.")
     (license license:expat)))
 
-(define-public ocaml4.01-ounit
-  (package-with-ocaml4.01 ocaml-ounit))
-
 (define-public ocaml4.02-ounit
   (package-with-ocaml4.02 ocaml-ounit))
 
@@ -1038,24 +988,6 @@ JAR format.  It provides functions for reading from and writing to compressed
 files in these formats.")
     (license license:lgpl2.1+)))
 
-(define-public ocaml4.01-camlzip
-  (let ((base (package-with-ocaml4.01 camlzip)))
-    (package
-      (inherit base)
-      (name "ocaml4.01-camlzip")
-      ;; Version 1.05 is the last version to support OCaml 4.01.0.
-      (version "1.05")
-      (source
-       (origin
-         (method url-fetch)
-         (uri
-          (string-append
-           "http://forge.ocamlcore.org/frs/download.php/1037/camlzip-"
-           version ".tar.gz"))
-         (sha256
-          (base32
-           "0syh72jk9s0qwjmmfrkqchaj98m020ii082jn38pwnmb6v3p02wk")))))))
-
 (define-public ocaml4.02-camlzip
   (package-with-ocaml4.02 camlzip))
 
@@ -1222,9 +1154,6 @@ qcheck library.  The possibilities range from trivial tests -- extremely simple
 to use -- to sophisticated random generation of test cases.")
     (license license:lgpl3+)))
 
-(define-public ocaml4.01-qtest
-  (package-with-ocaml4.01 ocaml-qtest))
-
 (define-public ocaml4.02-qtest
   (package-with-ocaml4.02 ocaml-qtest))
 
@@ -1301,39 +1230,9 @@ tests.  After application execution, it is possible to generate a report in HTML
 format that is the replica of the application source code annotated with code
 coverage information.")
     (properties
-     `((ocaml4.01-variant . ,(delay ocaml4.01-bisect))
-       (ocaml4.02-variant . ,(delay ocaml4.02-bisect))))
+     `((ocaml4.02-variant . ,(delay ocaml4.02-bisect))))
     (license license:gpl3+)))
 
-(define-public ocaml4.01-bisect
-  (let ((base (package-with-ocaml4.01 (strip-ocaml4.01-variant ocaml-bisect))))
-    (package
-      (inherit base)
-      (version "1.3")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append "https://github.com/gasche/bisect/archive/"
-                                    version ".tar.gz"))
-                (file-name (string-append "ocaml-bisect-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1ip49jqf0kkbrqf8qspmfjbg9ap9fhvjkg718myzix88dg5rv8d4"))))
-      (arguments
-       `(#:ocaml ,ocaml-4.01
-         ,@(substitute-keyword-arguments (package-arguments ocaml-bisect)
-            ((#:make-flags flags)
-             `(list "all"))
-            ((#:phases phases)
-             `(modify-phases ,phases
-                (replace 'configure
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    (invoke "./configure"
-                            "-ocaml-prefix" (assoc-ref inputs "ocaml"))
-                    #t)))))))
-      (native-inputs `(,@(alist-delete "camlp4" (package-native-inputs base))))
-      (propagated-inputs
-       `(,@(alist-delete "camlp4" (package-propagated-inputs base)))))))
-
 (define-public ocaml4.02-bisect
   (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-bisect))))
     (package
@@ -1648,9 +1547,6 @@ coexistence with the old (version 2) SQLite and its OCaml wrapper
 @code{ocaml-sqlite}.")
     (license license:expat)))
 
-(define-public ocaml4.01-sqlite3
-  (package-with-ocaml4.01 ocaml-sqlite3))
-
 (define-public ocaml4.02-sqlite3
   (package-with-ocaml4.02 ocaml-sqlite3))
 
@@ -1680,9 +1576,6 @@ read and write files in this format as well as some convenience functions to
 manipulate such data.")
     (license (package-license camlp4))))
 
-(define-public ocaml4.01-csv
-  (package-with-ocaml4.01 ocaml-csv))
-
 (define-public ocaml4.02-csv
   (package-with-ocaml4.02 ocaml-csv))
 
@@ -2191,9 +2084,6 @@ format.  It can process XML documents without a complete in-memory
 representation of the data.")
     (license license:isc)))
 
-(define-public ocaml4.01-xmlm
-  (package-with-ocaml4.01 ocaml-xmlm))
-
 (define-public ocaml4.02-xmlm
   (package-with-ocaml4.02 ocaml-xmlm))
 
@@ -2530,8 +2420,7 @@ many additional enhancements, including:
              (invoke "make" "all")
              #t)))))
     (properties
-      `((ocaml4.01-variant . ,(delay ocaml4.01-batteries))
-        (ocaml4.02-variant . ,(delay ocaml4.02-batteries))))
+      `((ocaml4.02-variant . ,(delay ocaml4.02-batteries))))
     (home-page "http://batteries.forge.ocamlcore.org/")
     (synopsis "Development platform for the OCaml programming language")
     (description "Define a standard set of libraries which may be expected on
@@ -2552,12 +2441,6 @@ hierarchy of modules.")
                   "1a97w3x2l1jr5x9kj5gqm1x6b0q9fjqdcsvls7arnl3bvzgsia0n"))))
       (propagated-inputs '()))))
 
-(define-public ocaml4.01-batteries
-  (let ((base (package-with-ocaml4.01 (strip-ocaml4.01-variant ocaml4.02-batteries))))
-    (package
-      (inherit base)
-      (name "ocaml4.01-batteries"))))
-
 (define-public ocaml-pcre
   (package
     (name "ocaml-pcre")
@@ -4683,6 +4566,110 @@ in-line tests in ocaml code.  It is part of Jane Street's PPX rewriters
 collection.")
     (license license:expat)))
 
+(define-public ocaml-bindlib
+  (package
+    (name "ocaml-bindlib")
+    (version "5.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rlepigre/ocaml-bindlib.git")
+             (commit (string-append "ocaml-bindlib_" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1f8kr81w8vsi4gv61xn1qbc6zrzkjp8l9ix0942vjh4gjxc74v75"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:tests? #f ;no tests
+       #:use-make? #t
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (invoke "make")))
+         (replace 'install
+           (lambda _
+             (invoke "make" "install"))))))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)
+       ("ocaml-findlib" ,ocaml-findlib)))
+    (home-page "https://rlepigre.github.io/ocaml-bindlib/")
+    (synopsis "OCaml Bindlib library for bound variables")
+    (description "Bindlib is a library allowing the manipulation of data
+structures with bound variables.  It is particularly useful when writing ASTs
+for programming languages, but also for manipulating terms of the λ-calculus
+or quantified formulas.")
+    (license license:gpl3+)))
+
+(define-public ocaml-earley
+  (package
+    (name "ocaml-earley")
+    (version "2.0.0")
+    (home-page "https://github.com/rlepigre/ocaml-earley")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url (string-append home-page ".git"))
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18k7bi7krc4bvqnhijz1q0pfr0nfahghfjifci8rh1q4i5zd0xz5"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:test-target "."))
+    (synopsis "Parsing library based on Earley Algorithm")
+    (description "Earley is a parser combinator library base on Earley's
+algorithm.  It is intended to be used in conjunction with an OCaml syntax
+extension which allows the definition of parsers inside the language.  There
+is also support for writing OCaml syntax extensions in a camlp4 style.")
+    (license license:cecill-b)))
+
+(define-public ocaml-timed
+  (package
+    (name "ocaml-timed")
+    (version "1.0")
+    (home-page "https://github.com/rlepigre/ocaml-timed")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append home-page ".git"))
+                    (commit (string-append name "_" version))))
+              (sha256
+               (base32
+                "0hfxz710faxy5yk97bkfnw87r732jcxxhmjppwrbfdb6pd0wks96"))
+              (file-name (git-file-name name version))))
+    (build-system ocaml-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (invoke "make")))
+         (replace 'install
+           (lambda _
+             (invoke "make" "install")))
+         (replace 'check
+           (lambda _
+             (invoke "make" "tests"))))))
+    (synopsis "Timed references for imperative state")
+    (description "Timed references for imperative state.  This module provides
+an alternative type for references (or mutable cells) supporting undo/redo
+operations.  In particular, an abstract notion of time is used to capture the
+state of the references at any given point, so that it can be restored.  Note
+that usual reference operations only have a constant time / memory overhead
+(compared to those of the standard library).
+
+Moreover, we provide an alternative implementation based on the references
+of the standard library (Pervasives module).  However, it is less efficient
+than the first one.")
+    (license license:expat)))
+
 (define-public ocaml-biniou
  (package
    (name "ocaml-biniou")
@@ -4828,9 +4815,6 @@ Atom.")
 the OCaml language.")
     (license license:gpl3+)))
 
-(define-public ocaml4.01-gsl
-  (package-with-ocaml4.01 ocaml-gsl))
-
 (define-public cubicle
   (package
     (name "cubicle")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 2e69cd151e..477e977bb2 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages bootstrap)          ;for 'bootstrap-guile-origin'
@@ -107,8 +109,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.16.0")
-        (commit "4bddd12ad540d45a33a5f9f129b896843dca603f")
-        (revision 9))
+        (commit "2637cfd7a4894ef2a2a7da3bb46d8815c43d7e75")
+        (revision 10))
     (package
       (name "guix")
 
@@ -124,7 +126,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1abn4ghb25kn0cmr9dbb3q3fxdcc0g2fnnmbrykxv111s6ahdmlw"))
+                  "1m734gm45x9czqspsagdfxfgw5wiiinyq1s6zc9gfv7d3b2w472k"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -227,6 +229,7 @@
                                                   "guile-bytestructures"))
                                (ssh    (assoc-ref inputs "guile-ssh"))
                                (gnutls (assoc-ref inputs "gnutls"))
+                               (locales (assoc-ref inputs "glibc-utf8-locales"))
                                (deps   (list gcrypt json sqlite gnutls
                                              git bs ssh))
                                (effective
@@ -245,11 +248,13 @@
                                                   "/lib/guile/" effective
                                                   "/site-ccache")
                                              (delete #f deps))
-                                        ":")))
+                                        ":"))
+                               (locpath (string-append locales "/lib/locale")))
 
                           (wrap-program (string-append out "/bin/guix")
                             `("GUILE_LOAD_PATH" ":" prefix (,path))
-                            `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))
+                            `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath))
+                            `("GUIX_LOCPATH" ":" suffix (,locpath)))
 
                           #t))))))
       (native-inputs `(("pkg-config" ,pkg-config)
@@ -282,7 +287,9 @@
          ,@(if (and (not (%current-target-system))
                     (string=? (%current-system) "x86_64-linux"))
                `(("boot-guile/i686" ,(bootstrap-guile-origin "i686-linux")))
-               '())))
+               '())
+
+         ("glibc-utf8-locales" ,glibc-utf8-locales)))
       (propagated-inputs
        `(("gnutls" ,gnutls)
          ("guile-gcrypt" ,guile-gcrypt)
@@ -541,13 +548,13 @@ transactions from C or Python.")
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "106")
+    (version "111")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "0qrfp7nha2n2s9h5ibcf7rqji1amh4cqbcf80m6anim6p3ik26da"))))
+                "0sgqx3n0ny75bvcw10pfx61z67mdk5hx3mblw4gqnn2h9vc74qz1"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -606,6 +613,55 @@ various binary formats into more human readable forms to compare them.  It can
 compare two tarballs, ISO images, or PDFs just as easily.")
     (license license:gpl3+)))
 
+(define-public trydiffoscope
+ (package
+   (name "trydiffoscope")
+   (version "67.0.1")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
+            (commit version)))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((share (string-append (assoc-ref outputs "out") "/share/")))
+               (mkdir-p (string-append share "/man/man1/" ))
+               (invoke "rst2man.py"
+                       "trydiffoscope.1.rst"
+                       (string-append share "/man/man1/trydiffoscope.1"))
+               (mkdir-p (string-append share "/doc/" ,name "-" ,version))
+               (install-file "./README.rst"
+                          (string-append share "/doc/" ,name "-" ,version)))
+             #t)))))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("python-docutils" ,python-docutils)))
+    (build-system python-build-system)
+    (home-page "https://try.diffoscope.org")
+    (synopsis "Client for remote diffoscope service")
+    (description "This is a client for the @url{https://try.diffoscope.org,
+remote diffoscope service}.
+
+Diffoscope tries to get to the bottom of what makes files or directories
+different.  It recursively unpacks archives of many kinds and transforms
+various binary formats into more human readable forms to compare them.  It can
+compare two tarballs, ISO images, or PDFs just as easily.
+
+Results are displayed by default, stored as local text or html files, or made
+available via a URL on @url{https://try.diffoscope.org}.  Results stored on the
+server are purged after 30 days.")
+    (license license:gpl3+)))
+
 (define-public python-anaconda-client
   (package
     (name "python-anaconda-client")
@@ -870,17 +926,18 @@ Microsoft cabinet (.@dfn{CAB}) files.")
 (define-public msitools
   (package
     (name "msitools")
-    (version "0.98")
+    (version "0.99")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
-                                  version "/" name "-" version ".tar.xz"))
+              (uri (string-append "mirror://gnome/sources/msitools/"
+                                  version "/msitools-" version ".tar.xz"))
               (sha256
                (base32
-                "19wb3n3nwkpc6bjr0q3f1znaxsfaqgjbdxxnbx8ic8bb5b49hwac"))))
+                "0d9nidn5zc81bc30w119933rn2g87mrsqyqkndg20srkbsd96xfl"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("bison" ,bison)
+       ("pkg-config" ,pkg-config)))
     (inputs
      `(("gcab" ,gcab)
        ("glib" ,glib)
@@ -952,7 +1009,7 @@ the bootloader configuration.")
 (define-public flatpak
   (package
    (name "flatpak")
-   (version "1.2.0")
+   (version "1.2.3")
    (source
     (origin
      (method url-fetch)
@@ -960,7 +1017,7 @@ the bootloader configuration.")
                          version "/flatpak-" version ".tar.xz"))
      (sha256
       (base32
-       "1bdk6qmsvy4d80245x1si9qvrga2f2yalj9qfmf1lqj5ljxxxifv"))))
+       "0i0dn3w3545lvmjlzqj3j70lk8yrq64r9frp1rk6a161gwq20ixv"))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f ;; Tests fail due to trying to create files where it can't.
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 25d3c0737c..c024c5ceae 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -48,7 +48,7 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20181222")
+    (version "20190122")
     (source
      (origin
       (method url-fetch)
@@ -56,7 +56,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "0sd39nzgff3rpyzfwkffb5yxbdm5r6amrkslbgpjlrcrymy9z305"))))
+        "030rjhis8s47gkm05k4vc9p886cxvadpgzs8rqmgzvlc38h5ywxf"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/allegro4-mesa-18.2.5-and-later.patch b/gnu/packages/patches/allegro4-mesa-18.2.5-and-later.patch
deleted file mode 100644
index a4944821db..0000000000
--- a/gnu/packages/patches/allegro4-mesa-18.2.5-and-later.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Fixes compilation with Mesa >= 18.2.5.
-
-Modified from upstream to work on allegro4:
-
-https://github.com/liballeg/allegro5/commit/a40d30e21802ecf5c9382cf34af9b01bd3781e47
-
-diff --git a/addons/allegrogl/include/alleggl.h b/addons/allegrogl/include/alleggl.h
-index 0f86a6768..652dd024e 100644
---- a/addons/allegrogl/include/alleggl.h
-+++ b/addons/allegrogl/include/alleggl.h
-@@ -103,10 +103,14 @@
-
- /* HACK: Prevent both Mesa and SGI's broken headers from screwing us */
- #define __glext_h_
-+#define __gl_glext_h_
- #define __glxext_h_
-+#define __glx_glxext_h_
- #include <GL/gl.h>
- #undef  __glext_h_
-+#undef  __gl_glext_h_
- #undef  __glxext_h_
-+#undef  __glx_glxext_h_
-
- #endif /* ALLEGRO_MACOSX */
-
-diff --git a/addons/allegrogl/include/allegrogl/GLext/glx_ext_defs.h b/addons/allegrogl/include/allegrogl/GLext/glx_ext_defs.h
-index 49c502091..fba8aea5d 100644
---- a/addons/allegrogl/include/allegrogl/GLext/glx_ext_defs.h
-+++ b/addons/allegrogl/include/allegrogl/GLext/glx_ext_defs.h
-@@ -1,7 +1,9 @@
- /* HACK: Prevent both Mesa and SGI's broken headers from screwing us */
- #define __glxext_h_
-+#define __glx_glxext_h_
- #include <GL/glx.h>
- #undef __glxext_h_
-+#undef __glx_glxext_h_
-
- #ifndef GLX_VERSION_1_3
- #define _ALLEGRO_GLX_VERSION_1_3
---
-2.20.0
diff --git a/gnu/packages/patches/clang-7.0-libc-search-path.patch b/gnu/packages/patches/clang-7.0-libc-search-path.patch
new file mode 100644
index 0000000000..07ff8c90bd
--- /dev/null
+++ b/gnu/packages/patches/clang-7.0-libc-search-path.patch
@@ -0,0 +1,82 @@
+Clang attempts to guess file names based on the OS and distro (yes!),
+but unfortunately, that doesn't work for us.
+
+This patch makes it easy to insert libc's $libdir so that Clang passes the
+correct absolute file name of crt1.o etc. to 'ld'.  It also disables all
+the distro-specific stuff and removes the hard-coded FHS directory names
+to make sure Clang also works on non-GuixSD systems.
+
+--- a/lib/Driver/ToolChains/Linux.cpp
++++ b/lib/Driver/ToolChains/Linux.cpp
+@@ -225,7 +225,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+   PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+                          GCCInstallation.getTriple().str() + "/bin")
+                        .str());
+-
++  // Comment out the distro-specific tweaks so that they don't bite when
++  // using Guix on a foreign distro.
++#if 0
+   Distro Distro(D.getVFS());
+ 
+   if (Distro.IsAlpineLinux()) {
+@@ -284,6 +286,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ 
+   if (IsAndroid || Distro.IsOpenSUSE())
+     ExtraOpts.push_back("--enable-new-dtags");
++#endif
+ 
+   // The selection of paths to try here is designed to match the patterns which
+   // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+@@ -342,7 +345,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+     // the cross. Note that GCC does include some of these directories in some
+     // configurations but this seems somewhere between questionable and simply
+     // a bug.
+-    if (StringRef(LibPath).startswith(SysRoot)) {
++    if (0) {
+       addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths);
+       addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
+     }
+@@ -361,6 +364,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+   addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
+   addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
+ 
++  // This requires the commented distro tweaks above.
++#if 0
+   if (IsAndroid) {
+     // Android sysroots contain a library directory for each supported OS
+     // version as well as some unversioned libraries in the usual multiarch
+@@ -389,10 +394,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+     addPathIfExists(D, SysRoot + "/" + OSLibDir + "/" + ABIName, Paths);
+     addPathIfExists(D, SysRoot + "/usr/" + OSLibDir + "/" + ABIName, Paths);
+   }
++#endif
+ 
+   // Try walking via the GCC triple path in case of biarch or multiarch GCC
+   // installations with strange symlinks.
+   if (GCCInstallation.isValid()) {
++    // The following code would end up adding things like
++    // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
++#if 0
+     addPathIfExists(D,
+                     SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
+                         "/../../" + OSLibDir,
+@@ -405,6 +414,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+                              BiarchSibling.gccSuffix(),
+                       Paths);
+     }
++#endif
+ 
+     // See comments above on the multilib variant for details of why this is
+     // included even from outside the sysroot.
+@@ -429,8 +439,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+   if (StringRef(D.Dir).startswith(SysRoot))
+     addPathIfExists(D, D.Dir + "/../lib", Paths);
+ 
+-  addPathIfExists(D, SysRoot + "/lib", Paths);
+-  addPathIfExists(D, SysRoot + "/usr/lib", Paths);
++  // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
++  // and friends can be found.
++  addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
+ }
+ 
+ bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/dealii-mpi-deprecations.patch b/gnu/packages/patches/dealii-mpi-deprecations.patch
new file mode 100644
index 0000000000..816d54140a
--- /dev/null
+++ b/gnu/packages/patches/dealii-mpi-deprecations.patch
@@ -0,0 +1,28 @@
+From 40538ad31a71495649d174b0f7be5f7135d0a905 Mon Sep 17 00:00:00 2001
+From: David Wells <drwells@email.unc.edu>
+Date: Sat, 2 Feb 2019 10:00:38 -0500
+Subject: [PATCH] Avoid calling a deprecated MPI function.
+
+This was deprecated a long time ago (1996) and is not present in the
+latest version of openMPI (4.0): see
+
+https://www.open-mpi.org/faq/?category=mpi-removed
+
+Credit goes to Pratik Nayak for finding this issue.
+---
+ source/base/mpi.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source/base/mpi.cc b/source/base/mpi.cc
+index bd1f7f9846a..b8cd45e7c26 100644
+--- a/source/base/mpi.cc
++++ b/source/base/mpi.cc
+@@ -448,7 +448,7 @@ namespace Utilities
+       MPI_Aint     displacements[] = {0, offsetof(MinMaxAvg, min_index)};
+       MPI_Datatype types[]         = {MPI_DOUBLE, MPI_INT};
+ 
+-      ierr = MPI_Type_struct(2, lengths, displacements, types, &type);
++      ierr = MPI_Type_create_struct(2, lengths, displacements, types, &type);
+       AssertThrowMPI(ierr);
+ 
+       ierr = MPI_Type_commit(&type);
diff --git a/gnu/packages/patches/doxygen-test.patch b/gnu/packages/patches/doxygen-test.patch
index 5ac063adbf..8ccb9ec3c4 100644
--- a/gnu/packages/patches/doxygen-test.patch
+++ b/gnu/packages/patches/doxygen-test.patch
@@ -5,14 +5,14 @@ test.
 diff -u -r doxygen-1.8.7.orig/testing/012/citelist.xml doxygen-1.8.7/testing/012/citelist.xml
 --- doxygen-1.8.7.orig/testing/012/citelist.xml	2014-04-24 23:43:34.000000000 +0200
 +++ doxygen-1.8.7/testing/012/citelist.xml	2014-04-24 23:49:43.000000000 +0200
-@@ -4,17 +4,6 @@
-     <compoundname>citelist</compoundname>
-     <title>Bibliography</title>
+@@ -6,17 +6,6 @@
+     <briefdescription>
+     </briefdescription>
      <detaileddescription>
 -      <para>
 -        <variablelist>
 -          <varlistentry>
--            <term><anchor id="_1CITEREF_knuth79"/>[1]</term>
+-            <term><anchor id="citelist_1CITEREF_knuth79"/>[1]</term>
 -          </varlistentry>
 -          <listitem>
 -            <para>Donald<nonbreakablespace/>E. Knuth. <emphasis>Tex and Metafont, New Directions in Typesetting</emphasis>. American Mathematical Society and Digital Press, Stanford, 1979.</para>
diff --git a/gnu/packages/patches/gd-CVE-2019-6977.patch b/gnu/packages/patches/gd-CVE-2019-6977.patch
new file mode 100644
index 0000000000..b21a8ac619
--- /dev/null
+++ b/gnu/packages/patches/gd-CVE-2019-6977.patch
@@ -0,0 +1,36 @@
+Fix CVE-2019-6977:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6977
+
+Patch copied from Debian:
+
+https://salsa.debian.org/debian/libgd2/commit/2d7d3b68bb79843e5271a05543e996fd5a3a8cd1
+
+Description: Heap-based buffer overflow in gdImageColorMatch
+Origin: other, https://gist.github.com/cmb69/1f36d285eb297ed326f5c821d7aafced
+Bug-PHP: https://bugs.php.net/bug.php?id=77270
+Bug-Debian: https://bugs.debian.org/920645
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2019-6977
+Forwarded: no
+Author: "Christoph M. Becker" <cmbecker69@gmx.de>
+Last-Update: 2019-02-01
+
+At least some of the image reading functions may return images which
+use color indexes greater than or equal to im->colorsTotal.  We cater
+to this by always using a buffer size which is sufficient for
+`gdMaxColors` in `gdImageColorMatch()`.
+---
+
+--- a/src/gd_color_match.c
++++ b/src/gd_color_match.c
+@@ -31,8 +31,8 @@ BGD_DECLARE(int) gdImageColorMatch (gdIm
+ 		return -4; /* At least 1 color must be allocated */
+ 	}
+ 
+-	buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * im2->colorsTotal);
+-	memset (buf, 0, sizeof(unsigned long) * 5 * im2->colorsTotal );
++	buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * gdMaxColors);
++	memset (buf, 0, sizeof(unsigned long) * 5 * gdMaxColors );
+ 
+ 	for (x=0; x < im1->sx; x++) {
+ 		for( y=0; y<im1->sy; y++ ) {
diff --git a/gnu/packages/patches/gd-CVE-2019-6978.patch b/gnu/packages/patches/gd-CVE-2019-6978.patch
new file mode 100644
index 0000000000..69fc5056fc
--- /dev/null
+++ b/gnu/packages/patches/gd-CVE-2019-6978.patch
@@ -0,0 +1,301 @@
+Fix CVE-2019-6978:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6978
+
+Patch copied from upstream source repository:
+
+https://github.com/libgd/libgd/commit/553702980ae89c83f2d6e254d62cf82e204956d0
+
+From 553702980ae89c83f2d6e254d62cf82e204956d0 Mon Sep 17 00:00:00 2001
+From: "Christoph M. Becker" <cmbecker69@gmx.de>
+Date: Thu, 17 Jan 2019 11:54:55 +0100
+Subject: [PATCH] Fix #492: Potential double-free in gdImage*Ptr()
+
+Whenever `gdImage*Ptr()` calls `gdImage*Ctx()` and the latter fails, we
+must not call `gdDPExtractData()`; otherwise a double-free would
+happen.  Since `gdImage*Ctx()` are void functions, and we can't change
+that for BC reasons, we're introducing static helpers which are used
+internally.
+
+We're adding a regression test for `gdImageJpegPtr()`, but not for
+`gdImageGifPtr()` and `gdImageWbmpPtr()` since we don't know how to
+trigger failure of the respective `gdImage*Ctx()` calls.
+
+This potential security issue has been reported by Solmaz Salimi (aka.
+Rooney).
+---
+ src/gd_gif_out.c                  | 18 +++++++++++++++---
+ src/gd_jpeg.c                     | 20 ++++++++++++++++----
+ src/gd_wbmp.c                     | 21 ++++++++++++++++++---
+ tests/jpeg/.gitignore             |  1 +
+ tests/jpeg/CMakeLists.txt         |  1 +
+ tests/jpeg/Makemodule.am          |  3 ++-
+ tests/jpeg/jpeg_ptr_double_free.c | 31 +++++++++++++++++++++++++++++++
+ 7 files changed, 84 insertions(+), 11 deletions(-)
+ create mode 100644 tests/jpeg/jpeg_ptr_double_free.c
+
+diff --git a/src/gd_gif_out.c b/src/gd_gif_out.c
+index 298a581..d5a9534 100644
+--- a/src/gd_gif_out.c
++++ b/src/gd_gif_out.c
+@@ -99,6 +99,7 @@ static void char_init(GifCtx *ctx);
+ static void char_out(int c, GifCtx *ctx);
+ static void flush_char(GifCtx *ctx);
+ 
++static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out);
+ 
+ 
+ 
+@@ -131,8 +132,11 @@ BGD_DECLARE(void *) gdImageGifPtr(gdImagePtr im, int *size)
+ 	void *rv;
+ 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
+ 	if (out == NULL) return NULL;
+-	gdImageGifCtx(im, out);
+-	rv = gdDPExtractData(out, size);
++	if (!_gdImageGifCtx(im, out)) {
++		rv = gdDPExtractData(out, size);
++	} else {
++		rv = NULL;
++	}
+ 	out->gd_free(out);
+ 	return rv;
+ }
+@@ -220,6 +224,12 @@ BGD_DECLARE(void) gdImageGif(gdImagePtr im, FILE *outFile)
+ 
+ */
+ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
++{
++	_gdImageGifCtx(im, out);
++}
++
++/* returns 0 on success, 1 on failure */
++static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
+ {
+ 	gdImagePtr pim = 0, tim = im;
+ 	int interlace, BitsPerPixel;
+@@ -231,7 +241,7 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
+ 		based temporary image. */
+ 		pim = gdImageCreatePaletteFromTrueColor(im, 1, 256);
+ 		if(!pim) {
+-			return;
++			return 1;
+ 		}
+ 		tim = pim;
+ 	}
+@@ -247,6 +257,8 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
+ 		/* Destroy palette based temporary image. */
+ 		gdImageDestroy(	pim);
+ 	}
++
++	return 0;
+ }
+ 
+ 
+diff --git a/src/gd_jpeg.c b/src/gd_jpeg.c
+index fc05842..96ef430 100644
+--- a/src/gd_jpeg.c
++++ b/src/gd_jpeg.c
+@@ -117,6 +117,8 @@ static void fatal_jpeg_error(j_common_ptr cinfo)
+ 	exit(99);
+ }
+ 
++static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality);
++
+ /*
+  * Write IM to OUTFILE as a JFIF-formatted JPEG image, using quality
+  * QUALITY.  If QUALITY is in the range 0-100, increasing values
+@@ -231,8 +233,11 @@ BGD_DECLARE(void *) gdImageJpegPtr(gdImagePtr im, int *size, int quality)
+ 	void *rv;
+ 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
+ 	if (out == NULL) return NULL;
+-	gdImageJpegCtx(im, out, quality);
+-	rv = gdDPExtractData(out, size);
++	if (!_gdImageJpegCtx(im, out, quality)) {
++		rv = gdDPExtractData(out, size);
++	} else {
++		rv = NULL;
++	}
+ 	out->gd_free(out);
+ 	return rv;
+ }
+@@ -253,6 +258,12 @@ void jpeg_gdIOCtx_dest(j_compress_ptr cinfo, gdIOCtx *outfile);
+ 
+ */
+ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
++{
++	_gdImageJpegCtx(im, outfile, quality);
++}
++
++/* returns 0 on success, 1 on failure */
++static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
+ {
+ 	struct jpeg_compress_struct cinfo;
+ 	struct jpeg_error_mgr jerr;
+@@ -287,7 +298,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
+ 		if(row) {
+ 			gdFree(row);
+ 		}
+-		return;
++		return 1;
+ 	}
+ 
+ 	cinfo.err->emit_message = jpeg_emit_message;
+@@ -328,7 +339,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
+ 	if(row == 0) {
+ 		gd_error("gd-jpeg: error: unable to allocate JPEG row structure: gdCalloc returns NULL\n");
+ 		jpeg_destroy_compress(&cinfo);
+-		return;
++		return 1;
+ 	}
+ 
+ 	rowptr[0] = row;
+@@ -405,6 +416,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
+ 	jpeg_finish_compress(&cinfo);
+ 	jpeg_destroy_compress(&cinfo);
+ 	gdFree(row);
++	return 0;
+ }
+ 
+ 
+diff --git a/src/gd_wbmp.c b/src/gd_wbmp.c
+index f19a1c9..a49bdbe 100644
+--- a/src/gd_wbmp.c
++++ b/src/gd_wbmp.c
+@@ -88,6 +88,8 @@ int gd_getin(void *in)
+ 	return (gdGetC((gdIOCtx *)in));
+ }
+ 
++static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out);
++
+ /*
+ 	Function: gdImageWBMPCtx
+ 
+@@ -100,6 +102,12 @@ int gd_getin(void *in)
+ 		out   - the stream where to write
+ */
+ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
++{
++	_gdImageWBMPCtx(image, fg, out);
++}
++
++/* returns 0 on success, 1 on failure */
++static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
+ {
+ 	int x, y, pos;
+ 	Wbmp *wbmp;
+@@ -107,7 +115,7 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
+ 	/* create the WBMP */
+ 	if((wbmp = createwbmp(gdImageSX(image), gdImageSY(image), WBMP_WHITE)) == NULL) {
+ 		gd_error("Could not create WBMP\n");
+-		return;
++		return 1;
+ 	}
+ 
+ 	/* fill up the WBMP structure */
+@@ -123,11 +131,15 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
+ 
+ 	/* write the WBMP to a gd file descriptor */
+ 	if(writewbmp(wbmp, &gd_putout, out)) {
++		freewbmp(wbmp);
+ 		gd_error("Could not save WBMP\n");
++		return 1;
+ 	}
+ 
+ 	/* des submitted this bugfix: gdFree the memory. */
+ 	freewbmp(wbmp);
++
++	return 0;
+ }
+ 
+ /*
+@@ -271,8 +283,11 @@ BGD_DECLARE(void *) gdImageWBMPPtr(gdImagePtr im, int *size, int fg)
+ 	void *rv;
+ 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
+ 	if (out == NULL) return NULL;
+-	gdImageWBMPCtx(im, fg, out);
+-	rv = gdDPExtractData(out, size);
++	if (!_gdImageWBMPCtx(im, fg, out)) {
++		rv = gdDPExtractData(out, size);
++	} else {
++		rv = NULL;
++	}
+ 	out->gd_free(out);
+ 	return rv;
+ }
+#diff --git a/tests/jpeg/.gitignore b/tests/jpeg/.gitignore
+#index c28aa87..13bcf04 100644
+#--- a/tests/jpeg/.gitignore
+#+++ b/tests/jpeg/.gitignore
+#@@ -3,5 +3,6 @@
+# /jpeg_empty_file
+# /jpeg_im2im
+# /jpeg_null
+#+/jpeg_ptr_double_free
+# /jpeg_read
+# /jpeg_resolution
+diff --git a/tests/jpeg/CMakeLists.txt b/tests/jpeg/CMakeLists.txt
+index 19964b0..a8d8162 100644
+--- a/tests/jpeg/CMakeLists.txt
++++ b/tests/jpeg/CMakeLists.txt
+@@ -2,6 +2,7 @@ IF(JPEG_FOUND)
+ LIST(APPEND TESTS_FILES
+ 	jpeg_empty_file
+ 	jpeg_im2im
++	jpeg_ptr_double_free
+ 	jpeg_null
+ )
+ 
+diff --git a/tests/jpeg/Makemodule.am b/tests/jpeg/Makemodule.am
+index 7e5d317..b89e169 100644
+--- a/tests/jpeg/Makemodule.am
++++ b/tests/jpeg/Makemodule.am
+@@ -2,7 +2,8 @@ if HAVE_LIBJPEG
+ libgd_test_programs += \
+ 	jpeg/jpeg_empty_file \
+ 	jpeg/jpeg_im2im \
+-	jpeg/jpeg_null
++	jpeg/jpeg_null \
++	jpeg/jpeg_ptr_double_free
+ 
+ if HAVE_LIBPNG
+ libgd_test_programs += \
+diff --git a/tests/jpeg/jpeg_ptr_double_free.c b/tests/jpeg/jpeg_ptr_double_free.c
+new file mode 100644
+index 0000000..df5a510
+--- /dev/null
++++ b/tests/jpeg/jpeg_ptr_double_free.c
+@@ -0,0 +1,31 @@
++/**
++ * Test that failure to convert to JPEG returns NULL
++ *
++ * We are creating an image, set its width to zero, and pass this image to
++ * `gdImageJpegPtr()` which is supposed to fail, and as such should return NULL.
++ *
++ * See also <https://github.com/libgd/libgd/issues/381>
++ */
++
++
++#include "gd.h"
++#include "gdtest.h"
++
++
++int main()
++{
++    gdImagePtr src, dst;
++    int size;
++
++    src = gdImageCreateTrueColor(1, 10);
++    gdTestAssert(src != NULL);
++
++    src->sx = 0; /* this hack forces gdImageJpegPtr() to fail */
++
++    dst = gdImageJpegPtr(src, &size, 0);
++    gdTestAssert(dst == NULL);
++
++    gdImageDestroy(src);
++
++    return gdNumFailures();
++}
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/glibc-CVE-2018-11236.patch b/gnu/packages/patches/glibc-CVE-2018-11236.patch
new file mode 100644
index 0000000000..4f8a72943c
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2018-11236.patch
@@ -0,0 +1,149 @@
+https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=patch;h=5460617d1567657621107d895ee2dd83bc1f88f2
+with ChangeLog removed
+
+From 5460617d1567657621107d895ee2dd83bc1f88f2 Mon Sep 17 00:00:00 2001
+From: Paul Pluzhnikov <ppluzhnikov@google.com>
+Date: Tue, 8 May 2018 18:12:41 -0700
+Subject: [PATCH] Fix BZ 22786: integer addition overflow may cause stack
+ buffer overflow when realpath() input length is close to SSIZE_MAX.
+
+2018-05-09  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	[BZ #22786]
+	* stdlib/canonicalize.c (__realpath): Fix overflow in path length
+	computation.
+	* stdlib/Makefile (test-bz22786): New test.
+	* stdlib/test-bz22786.c: New test.
+---
+ ChangeLog             |  8 +++++
+ stdlib/Makefile       |  2 +-
+ stdlib/canonicalize.c |  2 +-
+ stdlib/test-bz22786.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 100 insertions(+), 2 deletions(-)
+ create mode 100644 stdlib/test-bz22786.c
+
+diff --git a/stdlib/Makefile b/stdlib/Makefile
+index af1643c..1ddb1f9 100644
+--- a/stdlib/Makefile
++++ b/stdlib/Makefile
+@@ -84,7 +84,7 @@ tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \
+ 		   tst-cxa_atexit tst-on_exit test-atexit-race 		    \
+ 		   test-at_quick_exit-race test-cxa_atexit-race             \
+ 		   test-on_exit-race test-dlclose-exit-race 		    \
+-		   tst-makecontext-align
++		   tst-makecontext-align test-bz22786
+ 
+ tests-internal	:= tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
+ 		   tst-tls-atexit tst-tls-atexit-nodelete
+diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
+index 4135f3f..390fb43 100644
+--- a/stdlib/canonicalize.c
++++ b/stdlib/canonicalize.c
+@@ -181,7 +181,7 @@ __realpath (const char *name, char *resolved)
+ 		extra_buf = __alloca (path_max);
+ 
+ 	      len = strlen (end);
+-	      if ((long int) (n + len) >= path_max)
++	      if (path_max - n <= len)
+ 		{
+ 		  __set_errno (ENAMETOOLONG);
+ 		  goto error;
+diff --git a/stdlib/test-bz22786.c b/stdlib/test-bz22786.c
+new file mode 100644
+index 0000000..e7837f9
+--- /dev/null
++++ b/stdlib/test-bz22786.c
+@@ -0,0 +1,90 @@
++/* Bug 22786: test for buffer overflow in realpath.
++   Copyright (C) 2018 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This file must be run from within a directory called "stdlib".  */
++
++#include <errno.h>
++#include <limits.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <support/test-driver.h>
++#include <libc-diag.h>
++
++static int
++do_test (void)
++{
++  const char dir[] = "bz22786";
++  const char lnk[] = "bz22786/symlink";
++
++  rmdir (dir);
++  if (mkdir (dir, 0755) != 0 && errno != EEXIST)
++    {
++      printf ("mkdir %s: %m\n", dir);
++      return EXIT_FAILURE;
++    }
++  if (symlink (".", lnk) != 0 && errno != EEXIST)
++    {
++      printf ("symlink (%s, %s): %m\n", dir, lnk);
++      return EXIT_FAILURE;
++    }
++
++  const size_t path_len = (size_t) INT_MAX + 1;
++
++  DIAG_PUSH_NEEDS_COMMENT;
++#if __GNUC_PREREQ (7, 0)
++  /* GCC 7 warns about too-large allocations; here we need such
++     allocation to succeed for the test to work.  */
++  DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
++#endif
++  char *path = malloc (path_len);
++  DIAG_POP_NEEDS_COMMENT;
++
++  if (path == NULL)
++    {
++      printf ("malloc (%zu): %m\n", path_len);
++      return EXIT_UNSUPPORTED;
++    }
++
++  /* Construct very long path = "bz22786/symlink/aaaa....."  */
++  char *p = mempcpy (path, lnk, sizeof (lnk) - 1);
++  *(p++) = '/';
++  memset (p, 'a', path_len - (path - p) - 2);
++  p[path_len - (path - p) - 1] = '\0';
++
++  /* This call crashes before the fix for bz22786 on 32-bit platforms.  */
++  p = realpath (path, NULL);
++
++  if (p != NULL || errno != ENAMETOOLONG)
++    {
++      printf ("realpath: %s (%m)", p);
++      return EXIT_FAILURE;
++    }
++
++  /* Cleanup.  */
++  unlink (lnk);
++  rmdir (dir);
++
++  return 0;
++}
++
++#define TEST_FUNCTION do_test
++#include <support/test-driver.c>
+-- 
+2.9.3
+
diff --git a/gnu/packages/patches/glibc-CVE-2018-11237.patch b/gnu/packages/patches/glibc-CVE-2018-11237.patch
new file mode 100644
index 0000000000..8a7c604ecd
--- /dev/null
+++ b/gnu/packages/patches/glibc-CVE-2018-11237.patch
@@ -0,0 +1,55 @@
+https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=patch;h=9aaaab7c6e4176e61c59b0a63c6ba906d875dc0e
+with the ChangeLog removed
+
+From 9aaaab7c6e4176e61c59b0a63c6ba906d875dc0e Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@suse.de>
+Date: Tue, 22 May 2018 10:37:59 +0200
+Subject: [PATCH] Don't write beyond destination in
+ __mempcpy_avx512_no_vzeroupper (bug 23196)
+
+When compiled as mempcpy, the return value is the end of the destination
+buffer, thus it cannot be used to refer to the start of it.
+---
+ ChangeLog                                               | 9 +++++++++
+ string/test-mempcpy.c                                   | 1 +
+ sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S | 5 +++--
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/string/test-mempcpy.c b/string/test-mempcpy.c
+index c08fba8..d98ecdd 100644
+--- a/string/test-mempcpy.c
++++ b/string/test-mempcpy.c
+@@ -18,6 +18,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define MEMCPY_RESULT(dst, len) (dst) + (len)
++#define MIN_PAGE_SIZE 131072
+ #define TEST_MAIN
+ #define TEST_NAME "mempcpy"
+ #include "test-string.h"
+diff --git a/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S b/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
+index 23c0f7a..effc3ac 100644
+--- a/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
++++ b/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
+@@ -336,6 +336,7 @@ L(preloop_large):
+ 	vmovups	(%rsi), %zmm4
+ 	vmovups	0x40(%rsi), %zmm5
+ 
++	mov	%rdi, %r11
+ /* Align destination for access with non-temporal stores in the loop.  */
+ 	mov	%rdi, %r8
+ 	and	$-0x80, %rdi
+@@ -366,8 +367,8 @@ L(gobble_256bytes_nt_loop):
+ 	cmp	$256, %rdx
+ 	ja	L(gobble_256bytes_nt_loop)
+ 	sfence
+-	vmovups	%zmm4, (%rax)
+-	vmovups	%zmm5, 0x40(%rax)
++	vmovups	%zmm4, (%r11)
++	vmovups	%zmm5, 0x40(%r11)
+ 	jmp	L(check)
+ 
+ L(preloop_large_bkw):
+-- 
+2.9.3
+
diff --git a/gnu/packages/patches/kio-search-smbd-on-PATH.patch b/gnu/packages/patches/kio-search-smbd-on-PATH.patch
index 47e20cfc0b..55535ffa11 100644
--- a/gnu/packages/patches/kio-search-smbd-on-PATH.patch
+++ b/gnu/packages/patches/kio-search-smbd-on-PATH.patch
@@ -16,7 +16,7 @@ pkgs/development/libraries/kde-frameworks/kio/samba-search-path.patch
 +        QLatin1Char pathSep(':');
 +        QStringList paths = QFile::decodeName(pathEnv).split(pathSep, QString::SkipEmptyParts);
 +        for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
-+            it->append("/smbd");
++            it->append(QStringLiteral("/smbd"));
 +            if (QFile::exists(*it)) {
 +                return true;
 +            }
diff --git a/gnu/packages/patches/ledger-revert-boost-python-fix.patch b/gnu/packages/patches/ledger-revert-boost-python-fix.patch
deleted file mode 100644
index 99f48f6e46..0000000000
--- a/gnu/packages/patches/ledger-revert-boost-python-fix.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 01220484f428a447e9b00e071a0d85185f30e1de Mon Sep 17 00:00:00 2001
-From: Alexis Hildebrandt <afh@surryhill.net>
-Date: Wed, 22 Jun 2016 15:43:37 +0200
-Subject: [PATCH] Revert "[python] Add fix for Boost.Python compile errors"
-
-This reverts commit 11590e134eafa768ccc4a171cc7fb216e906095f.
----
- src/py_commodity.cc | 3 ---
- src/py_journal.cc   | 3 ---
- 2 files changed, 6 deletions(-)
-
-diff --git a/src/py_commodity.cc b/src/py_commodity.cc
-index 5aafa6c..c457e64 100644
---- a/src/py_commodity.cc
-+++ b/src/py_commodity.cc
-@@ -243,9 +243,6 @@ namespace {
- 
- void export_commodity()
- {
--#if BOOST_VERSION >= 106000
--  python::register_ptr_to_python< shared_ptr<commodity_pool_t> >();
--#endif
-   class_< commodity_pool_t, shared_ptr<commodity_pool_t>,
-           boost::noncopyable > ("CommodityPool", no_init)
-     .add_property("null_commodity",
-diff --git a/src/py_journal.cc b/src/py_journal.cc
-index c1c38a9..879f954 100644
---- a/src/py_journal.cc
-+++ b/src/py_journal.cc
-@@ -232,9 +232,6 @@ void export_journal()
-           boost::noncopyable >("PostHandler")
-     ;
- 
--#if BOOST_VERSION >= 106000
--  python::register_ptr_to_python< shared_ptr<collector_wrapper> >();
--#endif
-   class_< collector_wrapper, shared_ptr<collector_wrapper>,
-           boost::noncopyable >("PostCollectorWrapper", no_init)
-     .def("__len__", &collector_wrapper::length)
diff --git a/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch b/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch
new file mode 100644
index 0000000000..9e76653a07
--- /dev/null
+++ b/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch
@@ -0,0 +1,15 @@
+https://github.com/thepowersgang/mrustc/issues/109
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Fri, 3 Jan 2019 13:00:00 +0100
+
+--- mrustc/src/expand/proc_macro.cpp.orig	2019-02-01 14:16:54.208486062 +0100
++++ mrustc/src/expand/proc_macro.cpp	2019-02-01 14:17:14.350925705 +0100
+@@ -977,7 +977,7 @@
+     for(;;)
+     {
+         auto b = recv_u8();
+-        v |= static_cast<uint64_t>(b) << ofs;
++        v |= static_cast<uint64_t>(b & 0x7F) << ofs;
+         if( (b & 0x80) == 0 )
+             break;
+         ofs += 7;
diff --git a/gnu/packages/patches/pius.patch b/gnu/packages/patches/pius.patch
deleted file mode 100644
index da39731d4d..0000000000
--- a/gnu/packages/patches/pius.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-See https://github.com/jaymzh/pius/pull/96
-
-commit 4dba0bf75ab351969622f7b9c38484657411a528
-Author: Martin Kletzander <nert.pinx+github@gmail.com>
-Date:   Thu May 17 17:55:27 2018 +0200
-
-    Don't fail on ENCRYPTION_COMPLIANCE_MODE line from too new GnuPG (#96)
-    
-    GnuPG started printing information about encryption compliance in [commit
-    f31dc2540acf](https://dev.gnupg.org/rGf31dc2540acf7cd7f09fd94658e815822222bfcb)
-    and since then signing with pius fails.
-    
-    Closes #95
-    
-    Signed-off-by: Martin Kletzander <nert.pinx@gmail.com>
-
-diff --git a/libpius/signer.py b/libpius/signer.py
-index 3c7262f..13013bb 100644
---- a/libpius/signer.py
-+++ b/libpius/signer.py
-@@ -45,6 +45,7 @@ class PiusSigner(object):
-   GPG_PINENTRY_LAUNCHED = '[GNUPG:] PINENTRY_LAUNCHED'
-   GPG_KEY_CONSIDERED = '[GNUPG:] KEY_CONSIDERED'
-   GPG_WARN_VERSION = '[GNUPG:] WARNING server_version_mismatch'
-+  GPG_ENC_COMPLIANT_MODE = '[GNUPG:] ENCRYPTION_COMPLIANCE_MODE'
- 
-   def __init__(self, signer, force_signer, mode, keyring, gpg_path, tmpdir,
-                outdir, encrypt_outfiles, mail, mailer, verbose, sort_keyring,
-@@ -431,6 +432,9 @@ class PiusSigner(object):
-       if PiusSigner.GPG_ENC_BEG in line:
-         debug('Got GPG_ENC_BEG')
-         continue
-+      elif PiusSigner.GPG_ENC_COMPLIANT_MODE in line:
-+        debug('Got ENCRYPTION_COMPLIANCE_MODE')
-+        continue
-       elif PiusSigner.GPG_ENC_END in line:
-         debug('Got GPG_ENC_END')
-         break
diff --git a/gnu/packages/patches/qtbase-old-kernel.patch b/gnu/packages/patches/qtbase-old-kernel.patch
new file mode 100644
index 0000000000..aa26fb6c4f
--- /dev/null
+++ b/gnu/packages/patches/qtbase-old-kernel.patch
@@ -0,0 +1,25 @@
+https://672856.bugs.gentoo.org/attachment.cgi?id=557978
+https://bugs.gentoo.org/672856
+
+The patch fixes building qtbase with linux kernels < 4.11.
+See bug #34431.
+
+diff -Naurp a/src/corelib/global/minimum-linux_p.h b/src/corelib/global/minimum-linux_p.h
+--- a/src/corelib/global/minimum-linux_p.h      2018-11-25 15:51:11.000000000 +0300
++++ b/src/corelib/global/minimum-linux_p.h      2018-12-17 13:25:38.176823753 +0300
+@@ -75,14 +75,9 @@ QT_BEGIN_NAMESPACE
+  * - accept4                    2.6.28
+  * - renameat2                  3.16                    QT_CONFIG(renameat2)
+  * - getrandom                  3.17                    QT_CONFIG(getentropy)
+- * - statx                      4.11                    QT_CONFIG(statx)
+  */
+
+-#if QT_CONFIG(statx)
+-#  define MINLINUX_MAJOR        4
+-#  define MINLINUX_MINOR        11
+-#  define MINLINUX_PATCH        0
+-#elif QT_CONFIG(getentropy)
++#if QT_CONFIG(getentropy)
+ #  define MINLINUX_MAJOR        3
+ #  define MINLINUX_MINOR        17
+ #  define MINLINUX_PATCH        0
diff --git a/gnu/packages/patches/red-eclipse-remove-gamma-name-hack.patch b/gnu/packages/patches/red-eclipse-remove-gamma-name-hack.patch
new file mode 100644
index 0000000000..573920cb99
--- /dev/null
+++ b/gnu/packages/patches/red-eclipse-remove-gamma-name-hack.patch
@@ -0,0 +1,52 @@
+From b16b4963c1ad81bb9ef784bc4913a4c8ab5f1bb4 Mon Sep 17 00:00:00 2001
+From: Lee Salzman <lsalzman@gmail.com>
+Date: Tue, 12 Sep 2017 14:45:10 -0400
+Subject: [PATCH] remove gamma name hack
+
+---
+ src/engine/main.cpp | 6 +++---
+ src/shared/cube.h   | 8 --------
+ 2 files changed, 3 insertions(+), 11 deletions(-)
+
+diff --git a/src/engine/main.cpp b/src/engine/main.cpp
+index 1032004d..77c9233a 100644
+--- a/src/engine/main.cpp
++++ b/src/engine/main.cpp
+@@ -278,10 +278,10 @@ static void setgamma(int val)
+ }
+ 
+ static int curgamma = 100;
+-VARF(IDF_PERSIST, gamma, 30, 100, 300,
++VARFN(IDF_PERSIST, gamma, reqgamma, 30, 100, 300,
+ {
+-    if(initing || gamma == curgamma) return;
+-    curgamma = gamma;
++    if(initing || reqgamma == curgamma) return;
++    curgamma = reqgamma;
+     setgamma(curgamma);
+ });
+ 
+diff --git a/src/shared/cube.h b/src/shared/cube.h
+index 3864c492..7ff5e267 100644
+--- a/src/shared/cube.h
++++ b/src/shared/cube.h
+@@ -3,19 +3,11 @@
+ 
+ #define _FILE_OFFSET_BITS 64
+ 
+-#ifdef __GNUC__
+-#define gamma __gamma
+-#endif
+-
+ #ifdef WIN32
+ #define _USE_MATH_DEFINES
+ #endif
+ #include <math.h>
+ 
+-#ifdef __GNUC__
+-#undef gamma
+-#endif
+-
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/gnu/packages/patches/ruby-safe-yaml-add-require-time.patch b/gnu/packages/patches/ruby-safe-yaml-add-require-time.patch
new file mode 100644
index 0000000000..92e5505985
--- /dev/null
+++ b/gnu/packages/patches/ruby-safe-yaml-add-require-time.patch
@@ -0,0 +1,19 @@
+From 9dd1e8d9ad0396a8c9092c2e9f17d498c58e0208 Mon Sep 17 00:00:00 2001
+From: elifoster <elifosterwy@gmail.com>
+Date: Tue, 5 Dec 2017 14:30:13 -0800
+Subject: [PATCH] Fix uninitialized constant DateTime Close #80
+
+---
+ lib/safe_yaml/parse/date.rb | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lib/safe_yaml/parse/date.rb b/lib/safe_yaml/parse/date.rb
+index cd3c62a..3a30a8b 100644
+--- a/lib/safe_yaml/parse/date.rb
++++ b/lib/safe_yaml/parse/date.rb
+@@ -1,3 +1,5 @@
++require 'time'
++
+ module SafeYAML
+   class Parse
+     class Date
diff --git a/gnu/packages/patches/runc-CVE-2019-5736.patch b/gnu/packages/patches/runc-CVE-2019-5736.patch
new file mode 100644
index 0000000000..f629fcbfb4
--- /dev/null
+++ b/gnu/packages/patches/runc-CVE-2019-5736.patch
@@ -0,0 +1,343 @@
+Fix CVE-2019-5736:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5736
+https://seclists.org/oss-sec/2019/q1/119
+
+Patch copied from upstream source repository:
+
+https://github.com/opencontainers/runc/commit/0a8e4117e7f715d5fbeef398405813ce8e88558b
+
+From 0a8e4117e7f715d5fbeef398405813ce8e88558b Mon Sep 17 00:00:00 2001
+From: Aleksa Sarai <asarai@suse.de>
+Date: Wed, 9 Jan 2019 13:40:01 +1100
+Subject: [PATCH] nsenter: clone /proc/self/exe to avoid exposing host binary
+ to container
+
+There are quite a few circumstances where /proc/self/exe pointing to a
+pretty important container binary is a _bad_ thing, so to avoid this we
+have to make a copy (preferably doing self-clean-up and not being
+writeable).
+
+We require memfd_create(2) -- though there is an O_TMPFILE fallback --
+but we can always extend this to use a scratch MNT_DETACH overlayfs or
+tmpfs. The main downside to this approach is no page-cache sharing for
+the runc binary (which overlayfs would give us) but this is far less
+complicated.
+
+This is only done during nsenter so that it happens transparently to the
+Go code, and any libcontainer users benefit from it. This also makes
+ExtraFiles and --preserve-fds handling trivial (because we don't need to
+worry about it).
+
+Fixes: CVE-2019-5736
+Co-developed-by: Christian Brauner <christian.brauner@ubuntu.com>
+Signed-off-by: Aleksa Sarai <asarai@suse.de>
+---
+ libcontainer/nsenter/cloned_binary.c | 268 +++++++++++++++++++++++++++
+ libcontainer/nsenter/nsexec.c        |  11 ++
+ 2 files changed, 279 insertions(+)
+ create mode 100644 libcontainer/nsenter/cloned_binary.c
+
+diff --git a/libcontainer/nsenter/cloned_binary.c b/libcontainer/nsenter/cloned_binary.c
+new file mode 100644
+index 000000000..c8a42c23f
+--- /dev/null
++++ b/libcontainer/nsenter/cloned_binary.c
+@@ -0,0 +1,268 @@
++/*
++ * Copyright (C) 2019 Aleksa Sarai <cyphar@cyphar.com>
++ * Copyright (C) 2019 SUSE LLC
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ *     http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++#define _GNU_SOURCE
++#include <unistd.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <stdbool.h>
++#include <string.h>
++#include <limits.h>
++#include <fcntl.h>
++#include <errno.h>
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/vfs.h>
++#include <sys/mman.h>
++#include <sys/sendfile.h>
++#include <sys/syscall.h>
++
++/* Use our own wrapper for memfd_create. */
++#if !defined(SYS_memfd_create) && defined(__NR_memfd_create)
++#  define SYS_memfd_create __NR_memfd_create
++#endif
++#ifdef SYS_memfd_create
++#  define HAVE_MEMFD_CREATE
++/* memfd_create(2) flags -- copied from <linux/memfd.h>. */
++#  ifndef MFD_CLOEXEC
++#    define MFD_CLOEXEC       0x0001U
++#    define MFD_ALLOW_SEALING 0x0002U
++#  endif
++int memfd_create(const char *name, unsigned int flags)
++{
++	return syscall(SYS_memfd_create, name, flags);
++}
++#endif
++
++/* This comes directly from <linux/fcntl.h>. */
++#ifndef F_LINUX_SPECIFIC_BASE
++#  define F_LINUX_SPECIFIC_BASE 1024
++#endif
++#ifndef F_ADD_SEALS
++#  define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9)
++#  define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10)
++#endif
++#ifndef F_SEAL_SEAL
++#  define F_SEAL_SEAL   0x0001	/* prevent further seals from being set */
++#  define F_SEAL_SHRINK 0x0002	/* prevent file from shrinking */
++#  define F_SEAL_GROW   0x0004	/* prevent file from growing */
++#  define F_SEAL_WRITE  0x0008	/* prevent writes */
++#endif
++
++#define RUNC_SENDFILE_MAX 0x7FFFF000 /* sendfile(2) is limited to 2GB. */
++#ifdef HAVE_MEMFD_CREATE
++#  define RUNC_MEMFD_COMMENT "runc_cloned:/proc/self/exe"
++#  define RUNC_MEMFD_SEALS \
++	(F_SEAL_SEAL | F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE)
++#endif
++
++static void *must_realloc(void *ptr, size_t size)
++{
++	void *old = ptr;
++	do {
++		ptr = realloc(old, size);
++	} while(!ptr);
++	return ptr;
++}
++
++/*
++ * Verify whether we are currently in a self-cloned program (namely, is
++ * /proc/self/exe a memfd). F_GET_SEALS will only succeed for memfds (or rather
++ * for shmem files), and we want to be sure it's actually sealed.
++ */
++static int is_self_cloned(void)
++{
++	int fd, ret, is_cloned = 0;
++
++	fd = open("/proc/self/exe", O_RDONLY|O_CLOEXEC);
++	if (fd < 0)
++		return -ENOTRECOVERABLE;
++
++#ifdef HAVE_MEMFD_CREATE
++	ret = fcntl(fd, F_GET_SEALS);
++	is_cloned = (ret == RUNC_MEMFD_SEALS);
++#else
++	struct stat statbuf = {0};
++	ret = fstat(fd, &statbuf);
++	if (ret >= 0)
++		is_cloned = (statbuf.st_nlink == 0);
++#endif
++	close(fd);
++	return is_cloned;
++}
++
++/*
++ * Basic wrapper around mmap(2) that gives you the file length so you can
++ * safely treat it as an ordinary buffer. Only gives you read access.
++ */
++static char *read_file(char *path, size_t *length)
++{
++	int fd;
++	char buf[4096], *copy = NULL;
++
++	if (!length)
++		return NULL;
++
++	fd = open(path, O_RDONLY | O_CLOEXEC);
++	if (fd < 0)
++		return NULL;
++
++	*length = 0;
++	for (;;) {
++		int n;
++
++		n = read(fd, buf, sizeof(buf));
++		if (n < 0)
++			goto error;
++		if (!n)
++			break;
++
++		copy = must_realloc(copy, (*length + n) * sizeof(*copy));
++		memcpy(copy + *length, buf, n);
++		*length += n;
++	}
++	close(fd);
++	return copy;
++
++error:
++	close(fd);
++	free(copy);
++	return NULL;
++}
++
++/*
++ * A poor-man's version of "xargs -0". Basically parses a given block of
++ * NUL-delimited data, within the given length and adds a pointer to each entry
++ * to the array of pointers.
++ */
++static int parse_xargs(char *data, int data_length, char ***output)
++{
++	int num = 0;
++	char *cur = data;
++
++	if (!data || *output != NULL)
++		return -1;
++
++	while (cur < data + data_length) {
++		num++;
++		*output = must_realloc(*output, (num + 1) * sizeof(**output));
++		(*output)[num - 1] = cur;
++		cur += strlen(cur) + 1;
++	}
++	(*output)[num] = NULL;
++	return num;
++}
++
++/*
++ * "Parse" out argv and envp from /proc/self/cmdline and /proc/self/environ.
++ * This is necessary because we are running in a context where we don't have a
++ * main() that we can just get the arguments from.
++ */
++static int fetchve(char ***argv, char ***envp)
++{
++	char *cmdline = NULL, *environ = NULL;
++	size_t cmdline_size, environ_size;
++
++	cmdline = read_file("/proc/self/cmdline", &cmdline_size);
++	if (!cmdline)
++		goto error;
++	environ = read_file("/proc/self/environ", &environ_size);
++	if (!environ)
++		goto error;
++
++	if (parse_xargs(cmdline, cmdline_size, argv) <= 0)
++		goto error;
++	if (parse_xargs(environ, environ_size, envp) <= 0)
++		goto error;
++
++	return 0;
++
++error:
++	free(environ);
++	free(cmdline);
++	return -EINVAL;
++}
++
++static int clone_binary(void)
++{
++	int binfd, memfd;
++	ssize_t sent = 0;
++
++#ifdef HAVE_MEMFD_CREATE
++	memfd = memfd_create(RUNC_MEMFD_COMMENT, MFD_CLOEXEC | MFD_ALLOW_SEALING);
++#else
++	memfd = open("/tmp", O_TMPFILE | O_EXCL | O_RDWR | O_CLOEXEC, 0711);
++#endif
++	if (memfd < 0)
++		return -ENOTRECOVERABLE;
++
++	binfd = open("/proc/self/exe", O_RDONLY | O_CLOEXEC);
++	if (binfd < 0)
++		goto error;
++
++	sent = sendfile(memfd, binfd, NULL, RUNC_SENDFILE_MAX);
++	close(binfd);
++	if (sent < 0)
++		goto error;
++
++#ifdef HAVE_MEMFD_CREATE
++	int err = fcntl(memfd, F_ADD_SEALS, RUNC_MEMFD_SEALS);
++	if (err < 0)
++		goto error;
++#else
++	/* Need to re-open "memfd" as read-only to avoid execve(2) giving -EXTBUSY. */
++	int newfd;
++	char *fdpath = NULL;
++
++	if (asprintf(&fdpath, "/proc/self/fd/%d", memfd) < 0)
++		goto error;
++	newfd = open(fdpath, O_RDONLY | O_CLOEXEC);
++	free(fdpath);
++	if (newfd < 0)
++		goto error;
++
++	close(memfd);
++	memfd = newfd;
++#endif
++	return memfd;
++
++error:
++	close(memfd);
++	return -EIO;
++}
++
++int ensure_cloned_binary(void)
++{
++	int execfd;
++	char **argv = NULL, **envp = NULL;
++
++	/* Check that we're not self-cloned, and if we are then bail. */
++	int cloned = is_self_cloned();
++	if (cloned > 0 || cloned == -ENOTRECOVERABLE)
++		return cloned;
++
++	if (fetchve(&argv, &envp) < 0)
++		return -EINVAL;
++
++	execfd = clone_binary();
++	if (execfd < 0)
++		return -EIO;
++
++	fexecve(execfd, argv, envp);
++	return -ENOEXEC;
++}
+diff --git a/libcontainer/nsenter/nsexec.c b/libcontainer/nsenter/nsexec.c
+index 28269dfc0..7750af35e 100644
+--- a/libcontainer/nsenter/nsexec.c
++++ b/libcontainer/nsenter/nsexec.c
+@@ -534,6 +534,9 @@ void join_namespaces(char *nslist)
+ 	free(namespaces);
+ }
+ 
++/* Defined in cloned_binary.c. */
++extern int ensure_cloned_binary(void);
++
+ void nsexec(void)
+ {
+ 	int pipenum;
+@@ -549,6 +552,14 @@ void nsexec(void)
+ 	if (pipenum == -1)
+ 		return;
+ 
++	/*
++	 * We need to re-exec if we are not in a cloned binary. This is necessary
++	 * to ensure that containers won't be able to access the host binary
++	 * through /proc/self/exe. See CVE-2019-5736.
++	 */
++	if (ensure_cloned_binary() < 0)
++		bail("could not ensure we are a cloned binary");
++
+ 	/* Parse all of the netlink configuration. */
+ 	nl_parse(pipenum, &config);
+ 
diff --git a/gnu/packages/patches/scalapack-blacs-mpi-deprecations.patch b/gnu/packages/patches/scalapack-blacs-mpi-deprecations.patch
new file mode 100644
index 0000000000..6ec1b8f21f
--- /dev/null
+++ b/gnu/packages/patches/scalapack-blacs-mpi-deprecations.patch
@@ -0,0 +1,170 @@
+From f11c3f094ed5ca727ec819983425b6641db8227c Mon Sep 17 00:00:00 2001
+From: Eric Bavier <bavier@member.fsf.org>
+Date: Wed, 13 Feb 2019 09:32:11 -0600
+Subject: [PATCH] BLACS: Remove use of long-deprecated MPI1 functions.
+
+* BLACS/SRC/blacs_get_.c: 'MPI_Attr_get' -> 'MPI_Comm_get_attr'.
+* BLACS/SRC/cgamn2d_.c, BLACS/SRC/cgamx2d_.c, BLACS/SRC/dgamn2d_.c,
+BLACS/SRC/dgamx2d_.c, BLACS/SRC/igamn2d_.c, BLACS/SRC/igamx2d_.c,
+BLACS/SRC/sgamn2d_.c, BLACS/SRC/sgamx2d_.c, BLACS/SRC/zgamn2d_.c,
+BLACS/SRC/zgamx2d_.c: 'MPI_Type_struct' -> 'MPI_Type_create_struct'.
+---
+ BLACS/SRC/blacs_get_.c | 2 +-
+ BLACS/SRC/cgamn2d_.c   | 2 +-
+ BLACS/SRC/cgamx2d_.c   | 2 +-
+ BLACS/SRC/dgamn2d_.c   | 2 +-
+ BLACS/SRC/dgamx2d_.c   | 2 +-
+ BLACS/SRC/igamn2d_.c   | 2 +-
+ BLACS/SRC/igamx2d_.c   | 2 +-
+ BLACS/SRC/sgamn2d_.c   | 2 +-
+ BLACS/SRC/sgamx2d_.c   | 2 +-
+ BLACS/SRC/zgamn2d_.c   | 2 +-
+ BLACS/SRC/zgamx2d_.c   | 2 +-
+ 11 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/BLACS/SRC/blacs_get_.c b/BLACS/SRC/blacs_get_.c
+index e979767..d4b04cf 100644
+--- a/BLACS/SRC/blacs_get_.c
++++ b/BLACS/SRC/blacs_get_.c
+@@ -23,7 +23,7 @@ F_VOID_FUNC blacs_get_(int *ConTxt, int *what, int *val)
+    case SGET_MSGIDS:
+       if (BI_COMM_WORLD == NULL) Cblacs_pinfo(val, &val[1]);
+       iptr = &val[1];
+-      ierr=MPI_Attr_get(MPI_COMM_WORLD, MPI_TAG_UB, (BVOID **) &iptr,val);
++      ierr=MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_TAG_UB, (BVOID **) &iptr,val);
+       val[0] = 0;
+       val[1] = *iptr;
+       break;
+diff --git a/BLACS/SRC/cgamn2d_.c b/BLACS/SRC/cgamn2d_.c
+index 2db6ccb..6958f32 100644
+--- a/BLACS/SRC/cgamn2d_.c
++++ b/BLACS/SRC/cgamn2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC cgamn2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/cgamx2d_.c b/BLACS/SRC/cgamx2d_.c
+index 707c0b6..f802d01 100644
+--- a/BLACS/SRC/cgamx2d_.c
++++ b/BLACS/SRC/cgamx2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC cgamx2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/dgamn2d_.c b/BLACS/SRC/dgamn2d_.c
+index dff23b4..a2627ac 100644
+--- a/BLACS/SRC/dgamn2d_.c
++++ b/BLACS/SRC/dgamn2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC dgamn2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/dgamx2d_.c b/BLACS/SRC/dgamx2d_.c
+index a51f731..2a644d0 100644
+--- a/BLACS/SRC/dgamx2d_.c
++++ b/BLACS/SRC/dgamx2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC dgamx2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/igamn2d_.c b/BLACS/SRC/igamn2d_.c
+index 16bc003..f6a7859 100644
+--- a/BLACS/SRC/igamn2d_.c
++++ b/BLACS/SRC/igamn2d_.c
+@@ -218,7 +218,7 @@ F_VOID_FUNC igamn2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/igamx2d_.c b/BLACS/SRC/igamx2d_.c
+index 8165cbe..a7cfcc6 100644
+--- a/BLACS/SRC/igamx2d_.c
++++ b/BLACS/SRC/igamx2d_.c
+@@ -218,7 +218,7 @@ F_VOID_FUNC igamx2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/sgamn2d_.c b/BLACS/SRC/sgamn2d_.c
+index d6c95e5..569c797 100644
+--- a/BLACS/SRC/sgamn2d_.c
++++ b/BLACS/SRC/sgamn2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC sgamn2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/sgamx2d_.c b/BLACS/SRC/sgamx2d_.c
+index 4b0af6f..8897ece 100644
+--- a/BLACS/SRC/sgamx2d_.c
++++ b/BLACS/SRC/sgamx2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC sgamx2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/zgamn2d_.c b/BLACS/SRC/zgamn2d_.c
+index 9de2b23..37897df 100644
+--- a/BLACS/SRC/zgamn2d_.c
++++ b/BLACS/SRC/zgamn2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC zgamn2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+diff --git a/BLACS/SRC/zgamx2d_.c b/BLACS/SRC/zgamx2d_.c
+index 414c381..0e9d474 100644
+--- a/BLACS/SRC/zgamx2d_.c
++++ b/BLACS/SRC/zgamx2d_.c
+@@ -221,7 +221,7 @@ F_VOID_FUNC zgamx2d_(int *ConTxt, F_CHAR scope, F_CHAR top, int *m, int *n,
+       {
+ #endif
+       i = 2;
+-      ierr=MPI_Type_struct(i, len, disp, dtypes, &MyType);
++      ierr=MPI_Type_create_struct(i, len, disp, dtypes, &MyType);
+       ierr=MPI_Type_commit(&MyType);
+       bp->N = bp2->N = 1;
+       bp->dtype = bp2->dtype = MyType;
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch b/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
index f065b9a3d4..29cdeb6e8d 100644
--- a/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
+++ b/gnu/packages/patches/soundconverter-remove-gconf-dependency.patch
@@ -1,83 +1,29 @@
-From: Sebastian Ramacher <sebastian@ramacher.at>
-Date: Fri, 6 Apr 2018 13:25:35 +0200
-Subject: Only fetch profiles if GConf is still available
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Tue, 19 Feb 2019 07:46:28 +0100
+Subject: [PATCH] gnu: soundconverter: Catch (and ignore) the right error.
 
----
- bin/soundconverter.py       |  1 -
- soundconverter/gstreamer.py | 44 ++++++++++++++++++++++++--------------------
- 2 files changed, 24 insertions(+), 21 deletions(-)
+Without this patch and GConf:
 
-diff --git a/bin/soundconverter.py b/bin/soundconverter.py
-index 39055ce..5198443 100644
---- a/bin/soundconverter.py
-+++ b/bin/soundconverter.py
-@@ -66,7 +66,6 @@ def _check_libs():
-         import gi
-         gi.require_version('Gst', '1.0')
-         gi.require_version('Gtk', '3.0')
--        gi.require_version('GConf', '2.0')
-         from gi.repository import GObject
-         # force GIL creation - see https://bugzilla.gnome.org/show_bug.cgi?id=710447
-         import threading
-diff --git a/soundconverter/gstreamer.py b/soundconverter/gstreamer.py
-index 23aaa9b..211b052 100644
---- a/soundconverter/gstreamer.py
-+++ b/soundconverter/gstreamer.py
-@@ -25,7 +25,7 @@ from urllib.parse import urlparse
- from gettext import gettext as _
- 
- import gi
--from gi.repository import Gst, Gtk, GObject, GConf, Gio
-+from gi.repository import Gst, Gtk, GObject, Gio
- 
- from soundconverter.fileoperations import vfs_encode_filename, file_encode_filename
- from soundconverter.fileoperations import unquote_filename, vfs_makedirs, vfs_unlink
-@@ -66,25 +66,29 @@ _GCONF_PROFILE_LIST_PATH = "/system/gstreamer/1.0/audio/global/profile_list"
- audio_profiles_list = []
- audio_profiles_dict = {}
- 
--_GCONF = GConf.Client.get_default()
--profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH)
--for name in profiles:
--    if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"):
--        # get profile
--        description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name")
--        extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension")
--        pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline")
--        # check profile validity
--        if not extension or not pipeline:
--            continue
--        if not description:
--            description = extension
--        if description in audio_profiles_dict:
--            continue
--            # store
--        profile = description, extension, pipeline
--        audio_profiles_list.append(profile)
--        audio_profiles_dict[description] = profile
-+try:
-+    from gi.repository import GConf
-+    _GCONF = GConf.Client.get_default()
-+    profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH)
-+    for name in profiles:
-+        if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"):
-+            # get profile
-+            description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name")
-+            extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension")
-+            pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline")
-+            # check profile validity
-+            if not extension or not pipeline:
-+                continue
-+            if not description:
-+                description = extension
-+            if description in audio_profiles_dict:
-+                continue
-+                # store
-+            profile = description, extension, pipeline
-+            audio_profiles_list.append(profile)
-+            audio_profiles_dict[description] = profile
-+except ImportError:
-+    pass
+  Traceback (most recent call last):
+    File "/gnu/…/bin/...soundconverter-real-real-real", line 164, in <module>
+      from soundconverter.batch import cli_convert_main
+    File "/gnu/…/lib/soundconverter/python/soundconverter/batch.py", line 31, in <module>
+      from soundconverter.gstreamer import TagReader
+    File "/gnu/…/lib/soundconverter/python/soundconverter/gstreamer.py", line 70, in <module>
+      gi.require_version('GConf', '2.0')
+    File "/gnu/…/lib/python3.7/site-packages/gi/__init__.py", line 130, in require_version
+      raise ValueError('Namespace %s not available' % namespace)
+  ValueError: Namespace GConf not available
+---
+diff -Naur soundconverter-3.0.1/soundconverter/gstreamer.py soundconverter-3.0.1/soundconverter/gstreamer.py
+--- soundconverter-3.0.1/soundconverter/gstreamer.py	2018-11-23 20:38:46.000000000 +0100
++++ soundconverter-3.0.1/soundconverter/gstreamer.py	2019-02-19 07:42:15.767684388 +0100
+@@ -88,7 +88,7 @@
+             profile = description, extension, pipeline
+             audio_profiles_list.append(profile)
+             audio_profiles_dict[description] = profile
+-except ImportError:
++except ValueError:
+     pass
  
  required_elements = ('decodebin', 'fakesink', 'audioconvert', 'typefind', 'audiorate')
- for element in required_elements:
diff --git a/gnu/packages/patches/tomsfastmath-constness.patch b/gnu/packages/patches/tomsfastmath-constness.patch
deleted file mode 100644
index 7c6ab5bbec..0000000000
--- a/gnu/packages/patches/tomsfastmath-constness.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From dac089515901d6bf315cd15a6e744b8d2c02c1cb Mon Sep 17 00:00:00 2001
-From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-Date: Sat, 31 Oct 2015 22:48:07 +0100
-Subject: [PATCH] tfm: make a few functions static
-
-clamav expects them to be static and it does not seem bad to do so.
-
-Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
----
- src/bin/fp_read_radix.c        | 2 +-
- src/bin/fp_read_signed_bin.c   | 2 +-
- src/bin/fp_read_unsigned_bin.c | 2 +-
- src/headers/tfm.h              | 6 +++---
- 4 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/bin/fp_read_radix.c b/src/bin/fp_read_radix.c
-index 0b5e826..431afa0 100644
---- a/src/bin/fp_read_radix.c
-+++ b/src/bin/fp_read_radix.c
-@@ -9,7 +9,7 @@
-  */
- #include <tfm_private.h>
- 
--int fp_read_radix(fp_int *a, char *str, int radix)
-+int fp_read_radix(fp_int *a, const char *str, int radix)
- {
-   int     y, neg;
-   char    ch;
-diff --git a/src/bin/fp_read_signed_bin.c b/src/bin/fp_read_signed_bin.c
-index e2b8003..6467d19 100644
---- a/src/bin/fp_read_signed_bin.c
-+++ b/src/bin/fp_read_signed_bin.c
-@@ -9,7 +9,7 @@
-  */
- #include <tfm_private.h>
- 
--void fp_read_signed_bin(fp_int *a, unsigned char *b, int c)
-+void fp_read_signed_bin(fp_int *a, const unsigned char *b, int c)
- {
-   /* read magnitude */
-   fp_read_unsigned_bin (a, b + 1, c - 1);
-diff --git a/src/bin/fp_read_unsigned_bin.c b/src/bin/fp_read_unsigned_bin.c
-index 3ee64c0..2ee89cb 100644
---- a/src/bin/fp_read_unsigned_bin.c
-+++ b/src/bin/fp_read_unsigned_bin.c
-@@ -9,7 +9,7 @@
-  */
- #include <tfm_private.h>
- 
--void fp_read_unsigned_bin(fp_int *a, unsigned char *b, int c)
-+void fp_read_unsigned_bin(fp_int *a, const unsigned char *b, int c)
- {
-   /* zero the int */
-   fp_zero (a);
-diff --git a/src/headers/tfm.h b/src/headers/tfm.h
-index af87b56..f406388 100644
---- a/src/headers/tfm.h
-+++ b/src/headers/tfm.h
-@@ -467,14 +467,14 @@ int fp_prime_random_ex(fp_int *a, int t, int size, int flags, tfm_prime_callback
- int fp_count_bits(fp_int *a);
- 
- int fp_unsigned_bin_size(fp_int *a);
--void fp_read_unsigned_bin(fp_int *a, unsigned char *b, int c);
-+void fp_read_unsigned_bin(fp_int *a, const unsigned char *b, int c);
- void fp_to_unsigned_bin(fp_int *a, unsigned char *b);
- 
- int fp_signed_bin_size(fp_int *a);
--void fp_read_signed_bin(fp_int *a, unsigned char *b, int c);
-+void fp_read_signed_bin(fp_int *a, const unsigned char *b, int c);
- void fp_to_signed_bin(fp_int *a, unsigned char *b);
- 
--int fp_read_radix(fp_int *a, char *str, int radix);
-+int fp_read_radix(fp_int *a, const char *str, int radix);
- 
- int fp_radix_size(fp_int *a, int radix, int *size);
- int fp_toradix(fp_int *a, char *str, int radix);
diff --git a/gnu/packages/patches/xf86-video-i128-remove-mibstore.patch b/gnu/packages/patches/xf86-video-i128-remove-mibstore.patch
deleted file mode 100644
index b269d63473..0000000000
--- a/gnu/packages/patches/xf86-video-i128-remove-mibstore.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Removes references to mibstore.h and miInitializeBackingStore, which
-have been removed from xorg-server.  Zack Rusin <zackr@vmware.com>
-wrote: "It was a noop for at least 5 years and it has been removed."
-See: http://patches.openembedded.org/patch/46133/
-
---- xf86-video-i128-1.3.6/src/i128_driver.c.~1~	2012-07-17 01:21:15.000000000 -0400
-+++ xf86-video-i128-1.3.6/src/i128_driver.c	2014-12-19 00:47:16.140087736 -0500
-@@ -51,7 +51,6 @@
- #include "mipointer.h"
- 
- /* All drivers implementing backing store need this */
--#include "mibstore.h"
- #include "micmap.h"
- 
- #include "xf86DDC.h"
-@@ -1557,7 +1556,6 @@
-         return FALSE;
-     }
-     
--    miInitializeBackingStore(pScreen);
-     xf86SetBackingStore(pScreen);
-     xf86SetSilkenMouse(pScreen);
- 
diff --git a/gnu/packages/patches/xmodmap-asprintf.patch b/gnu/packages/patches/xmodmap-asprintf.patch
deleted file mode 100644
index 6dfe8514e5..0000000000
--- a/gnu/packages/patches/xmodmap-asprintf.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-This patch allows the 'asprintf' declaration to be visible, by
-including <config.h>, which defines _GNU_SOURCE.
-
-
---- xmodmap-1.0.7/xmodmap.c	2013-11-25 23:25:25.000000000 +0100
-+++ xmodmap-1.0.7/xmodmap.c	2013-11-25 23:25:27.000000000 +0100
-@@ -26,6 +26,7 @@ from The Open Group.
- 
- */
- 
-+#include <config.h>
- #include <X11/Xos.h>
- #include <X11/Xlib.h>
- #include <stdio.h>
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 1aa47b5c28..77aa0484b4 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -748,18 +748,20 @@ using a stylus.")
 (define-public python-reportlab
   (package
     (name "python-reportlab")
-    (version "3.4.0")
+    (version "3.5.13")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "reportlab" version))
               (sha256
                (base32
-                "0hy304pzsz9lblmk7mrbk2682bi911lxgvzx2kcfpmfzb5gg7sjv"))))
+                "1wxgcj46rm83qz97i8ygvd59bks60kr6vvnz12ygw640z58ff5k1"))))
     (build-system python-build-system)
     (arguments
      '(;; FIXME: There is one test failure, but it does not cause the
        ;; build to fail. No time to investigate right now.
        #:test-target "tests"))
+    (inputs
+     `(("freetype" ,freetype)))
     (propagated-inputs
      `(("python-pillow" ,python-pillow)))
     (home-page "https://www.reportlab.com")
@@ -828,22 +830,23 @@ the PDF pages.")
 (define-public fbida
   (package
     (name "fbida")
-    (version "2.12")
+    (version "2.14")
     (home-page "https://www.kraxel.org/blog/linux/fbida/")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.kraxel.org/releases/fbida/"
-                                  name "-" version ".tar.gz"))
+                                  "fbida-" version ".tar.gz"))
               (sha256
                (base32
-                "0bw224vb7jh0lrqaf4jgxk48xglvxs674qcpj5y0axyfbh896cfk"))))
+                "0f242mix20rgsqz1llibhsz4r2pbvx6k32rmky0zjvnbaqaw1dwm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-ldconfig
+         (add-after 'unpack 'patch-FHS-file-names
            (lambda _
              (substitute* "mk/Autoconf.mk"
+               (("/bin/echo") "echo")
                (("/sbin/ldconfig -p") "echo lib")) #t))
          (delete 'configure))
         #:tests? #f
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 6a51a92ec8..d8510c0181 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
@@ -2385,7 +2385,7 @@ parsing logic.")
 (define-public perl-datetime-format-strptime
   (package
     (name "perl-datetime-format-strptime")
-    (version "1.75")
+    (version "1.76")
     (source
      (origin
        (method url-fetch)
@@ -2393,7 +2393,7 @@ parsing logic.")
                            "DateTime-Format-Strptime-" version ".tar.gz"))
        (sha256
         (base32
-         "069wmgbchydgx3nm9klqw0g6ksnja28g61d4allgzmvr9ynb5ksg"))))
+         "03dmzi9n6jmnfjmf0ld5sdmi3ib6jrhz25cjzv7d58ypdr32cg2r"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-datetime" ,perl-datetime)
@@ -2414,7 +2414,7 @@ takes a string and a pattern and returns the `DateTime` object associated.")
 (define-public perl-datetime-locale
   (package
     (name "perl-datetime-locale")
-    (version "1.17")
+    (version "1.23")
     (source
      (origin
        (method url-fetch)
@@ -2422,10 +2422,11 @@ takes a string and a pattern and returns the `DateTime` object associated.")
                            "DateTime-Locale-" version ".tar.gz"))
        (sha256
         (base32
-         "1jawnci23kik5x4gln6ixvv9bxznd5f6ira024yjxsc97y5mk9hc"))))
+         "05f0jchminv5g2nrvsx5v1ihc5919fzzhh4f82dxi5ns8bkq2nis"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-ipc-system-simple" ,perl-ipc-system-simple)
        ("perl-test-file-sharedir-dist" ,perl-test-file-sharedir-dist)
        ("perl-test-warnings" ,perl-test-warnings)
        ("perl-test-requires" ,perl-test-requires)
@@ -4060,16 +4061,16 @@ inc directory within a distribution and are used by Makefile.PL or Build.PL.")
 (define-public perl-inline
   (package
    (name "perl-inline")
-   (version "0.80")
+   (version "0.81")
    (source
     (origin
      (method url-fetch)
      (uri (string-append
-           "mirror://cpan/authors/id/I/IN/INGY/Inline-"
+           "mirror://cpan/authors/id/T/TI/TINITA/Inline-"
            version ".tar.gz"))
      (sha256
       (base32
-       "1xnf5hykcr54271x5jsnr61bcv1c7x39cy4kdcrkxm7bn62djavy"))))
+       "1qxi0xvn8rqj4sca9gwb1xkm6bdz33x57li5kfls6mnavil3i5qz"))))
    (build-system perl-build-system)
    (native-inputs
     `(("perl-test-warn" ,perl-test-warn)))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 2e08243178..4338854574 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -1,14 +1,14 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -57,14 +57,14 @@
 (define-public python-base58
   (package
     (name "python-base58")
-    (version "1.0.0")
+    (version "1.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "base58" version))
        (sha256
         (base32
-         "0lgnk7ycdxwhk2bkygl30nsks56bvrdj79ix76iv965pz808pzn5"))))
+         "0q1yr0n5jaf17xq98m7dma6z4rh8p19ch55l1s09gi3rk5ckqycs"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pyhamcrest" ,python-pyhamcrest)))
@@ -950,14 +950,14 @@ been constructed to maintain extensive documentation on how to use
 (define-public python-scrypt
   (package
     (name "python-scrypt")
-    (version "0.8.6")
+    (version "0.8.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "scrypt" version))
        (sha256
         (base32
-         "0b9nw10hfdl0jflm3b62q485ssc3f3f33lpg4yy407gs8wnrn8zq"))))
+         "0hjk71k3mgnl8siikm9lii9im8kv0rb7inkjzx78rnancra48xxr"))))
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
@@ -996,3 +996,73 @@ relevant RFCs too.")
 
 (define-public python2-service-identity
   (package-with-python2 python-service-identity))
+
+(define-public python-hkdf
+  (package
+    (name "python-hkdf")
+    (version "0.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "hkdf" version))
+        (sha256
+         (base32
+          "1jhxk5vhxmxxjp3zj526ry521v9inzzl8jqaaf0ma65w6k332ak2"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page "https://github.com/casebeer/python-hkdf")
+    (synopsis "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)")
+    (description "This package provides a Python implementation of the HMAC Key
+Derivation function (HKDF) defined in RFC 5869.")
+    (license license:bsd-2)))
+
+(define-public python-spake2
+  (package
+    (name "python-spake2")
+    (version "0.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "spake2" version))
+        (sha256
+         (base32
+          "1x16r7lrbklvfzbacb66qv9iiih6liq1y612dqh2chgf555n2yn1"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-hkdf" ,python-hkdf)))
+    (home-page "https://github.com/warner/python-spake2")
+    (synopsis "SPAKE2 password-authenticated key exchange in Python")
+    (description "This package provides a Python implementation of the SPAKE2
+Password-Authenticated Key Exchange algorithm.")
+    (license license:expat)))
+
+(define-public python-txtorcon
+  (package
+    (name "python-txtorcon")
+    (version "19.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "txtorcon" version))
+        (sha256
+         (base32
+          "0fxzhsc62bhmr730vj9pzallmw56gz6iykvl28a5agrycm0bfc9p"))))
+    (build-system python-build-system)
+    (arguments
+      ;; The tests fail immediately due to a missing file. Reported upstream:
+      ;; <https://github.com/meejah/txtorcon/issues/330>
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-automat" ,python-automat)
+       ("python-idna" ,python-idna)
+       ("python-incremental" ,python-incremental)
+       ("python-ipaddress" ,python-ipaddress)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)
+       ("python-zope-interface" ,python-zope-interface)))
+    (home-page "https://github.com/meejah/txtorcon")
+    (synopsis "Twisted-based Tor controller client")
+    (description "This package provides a Twisted-based Tor controller client,
+with state-tracking and configuration abstractions.")
+    (license license:expat)))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index afec5ebc30..eeca90641c 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -12,9 +12,9 @@
 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
@@ -56,6 +56,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages django)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
@@ -338,14 +339,14 @@ follow links and submit forms.  It doesn’t do JavaScript.")
 (define-public python-sockjs-tornado
   (package
     (name "python-sockjs-tornado")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "sockjs-tornado" version))
        (sha256
         (base32
-         "0zhq8wnnhkfbvdnsggqrc3pp97pqpilsf7fh6ymvnf52r0rwyjsc"))))
+         "15dgv6hw6c7h3m310alw1h6p5443lrm9pyqhcv2smc13fz1v04pc"))))
     (build-system python-build-system)
     (arguments
      `(;; There are no tests, and running the test phase requires missing
@@ -1277,13 +1278,13 @@ WebSocket usage in Python programs.")
 (define-public python-requests
   (package
     (name "python-requests")
-    (version "2.13.0")
+    (version "2.21.0")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "requests" version))
              (sha256
               (base32
-               "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
+               "13jr0wkj9c2j8c0c8iaal9iivi0bpxghnsdn6lxcpnmc657q4ajh"))))
     ;; TODO: unbundle urllib3 and chardet.
     (build-system python-build-system)
     (arguments
@@ -1566,34 +1567,18 @@ file.")
 (define-public python-webtest
   (package
     (name "python-webtest")
-    (version "2.0.30")
+    (version "2.0.33")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "WebTest" version))
        (sha256
         (base32
-         "1mb7m4ndklv84mh0pdkhv73yrflcnra61yczj5g3bvwbqlygfsaw"))))
+         "1l3z0cwqslsf4rcrhi2gr8kdfh74wn2dw76376i4g9i38gz8wd21"))))
     (build-system python-build-system)
     (arguments
-     `(;; Unfortunately we have to disable tests!
-       ;; This release of WebTest is pinned to python-nose < 1.3,
-       ;; but older versions of python-nose are plagued with the following
-       ;; bug(s), which rears its ugly head during test execution:
-       ;;   https://github.com/nose-devs/nose/issues/759
-       ;;   https://github.com/nose-devs/nose/pull/811
-       #:tests? #f))
-    ;; Commented out code is no good, but in this case, once tests
-    ;; are ready to be enabled again, we should put the following
-    ;; in place:
-    ;;  (native-inputs
-    ;;   `(("python-nose" ,python-nose) ; technially < 1.3,
-    ;;                                  ; but see above comment
-    ;;     ("python-coverage" ,python-coverage)
-    ;;     ("python-mock" ,python-mock)
-    ;;     ("python-pastedeploy" ,python-pastedeploy)
-    ;;     ("python-wsgiproxy2" ,python-wsgiproxy2)
-    ;;     ("python-pyquery" ,python-pyquery)))
+     ;; Tests require python-pyquery, which creates a circular dependency.
+     `(#:tests? #f))
     (propagated-inputs
      `(("python-waitress" ,python-waitress)
        ("python-webob" ,python-webob)
@@ -2733,14 +2718,14 @@ available in Django, but is a standalone package.")
 (define-public python-paste
   (package
     (name "python-paste")
-    (version "3.0.4")
+    (version "3.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Paste" version))
        (sha256
         (base32
-         "01w26w9jyfkh0mfydhfz3dwy3pj3fw7mzvj0lna3vs8hyx1hwl0n"))
+         "14lbi9asn5agsdf7r97prkjpz7amgmp529lbvfhf0nv881xczah6"))
        (patches (search-patches "python-paste-remove-timing-test.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -2969,3 +2954,78 @@ underlies Mozilla Persona.")
      "This is a Python library for interacting with the Firefox Accounts
 ecosystem.")
     (license license:mpl2.0)))
+
+(define-public python-hyperlink
+  (package
+    (name "python-hyperlink")
+    (version "18.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "hyperlink" version))
+        (sha256
+         (base32
+          "01m3y19arfqljksngy8grc966zdb4larysralb8cajzi8kvly6zh"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-idna" ,python-idna)))
+    (home-page "https://github.com/python-hyper/hyperlink")
+    (synopsis "Python module to create immutable URLs according to spec")
+    (description "This package provides a Python module to create immutable, and
+correct URLs for Python according to RFCs 3986 and 3987.")
+    (license license:expat)))
+
+(define-public python-treq
+  (package
+    (name "python-treq")
+    (version "18.6.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "treq" version))
+        (sha256
+         (base32
+          "0j4zwq9p1c9piv1vc66nxcv9s6hdinf90jwkbsm91k14npv9zq4i"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-attrs" ,python-attrs)
+       ("python-idna" ,python-idna)
+       ("python-incremental" ,python-incremental)
+       ("python-requests" ,python-requests)
+       ("python-service-identity" ,python-service-identity)
+       ("python-twisted" ,python-twisted)))
+    (home-page "https://github.com/twisted/treq")
+    (synopsis "Requests-like API built on top of twisted.web's Agent")
+    (description "This package provides an HTTP library inspired by
+@code{requests}} but written on top of Twisted's @code{Agents}.  It offers a
+high level API for making HTTP requests when using Twisted.")
+    (license license:expat)))
+
+(define-public python-autobahn
+  (package
+    (name "python-autobahn")
+    (version "19.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "autobahn" version))
+        (sha256
+         (base32
+          "1mm7j24ls01c7jb1ad5p5cpyxvzgydiyf8b04ihykh2v8g98j0x7"))))
+    (build-system python-build-system)
+    (arguments
+      ;; The tests fail to run:
+      ;; https://github.com/crossbario/autobahn-python/issues/1117
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)
+       ("python-twisted" ,python-twisted)
+       ("python-txaio" ,python-txaio)))
+    (home-page "https://crossbar.io/autobahn/")
+    (synopsis "Web Application Messaging Protocol implementation")
+    (description "This package provides an implementation of the @dfn{Web Application
+Messaging Protocol} (WAMP).  WAMP connects components in distributed
+applications using Publish and Subscribe (PubSub) and routed Remote Procedure
+Calls (rRPC).  It is ideal for distributed, multi-client and server applications
+such as IoT applications or multi-user database-driven business applications.")
+    (license license:expat)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 802f636b88..5d119fd12a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -32,7 +32,7 @@
 ;;; Copyright © 2016, 2017 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 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
@@ -2578,6 +2578,84 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
 Language (TOML) configuration files.")
     (license license:expat)))
 
+(define-public python-jsonrpc-server
+  (package
+    (name "python-jsonrpc-server")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-jsonrpc-server" version))
+       (sha256
+        (base32
+         "0m4ykpcdy52x37n1ikysp07j7p8ialcdvvvsrjp3545sn7iiid09"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-future" ,python-future)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)))
+    (home-page
+     "https://github.com/palantir/python-jsonrpc-server")
+    (synopsis "JSON RPC 2.0 server library")
+    (description
+     "This packages provides a JSON RPC 2.0 server library for Python.")
+    (license license:expat)))
+
+(define-public python-pydocstyle
+  (package
+    (name "python-pydocstyle")
+    (version "3.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pydocstyle" version))
+       (sha256
+        (base32
+         "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-snowballstemmer" ,python-snowballstemmer)))
+    (home-page
+     "https://github.com/PyCQA/pydocstyle/")
+    (synopsis "Python docstring style checker")
+    (description
+     "This package provides a style checker for the Python Language
+Server (PLS).")
+    (license license:expat)))
+
+(define-public python-language-server
+  (package
+    (name "python-language-server")
+    (version "0.23.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-language-server" version))
+       (sha256
+        (base32
+         "1h83x5widj9p630ha9yv39cpp3djxppll3iww9nc8i3hdmyrbnnh"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pluggy" ,python-pluggy)
+       ("python-jsonrpc-server" ,python-jsonrpc-server)
+       ("python-jedi" ,python-jedi)
+       ("python-yapf" ,python-yapf)
+       ("python-pyflakes" ,python-pyflakes)
+       ("python-pydocstyle" ,python-pydocstyle)
+       ("python-pycodestyle" ,python-pycodestyle)
+       ("python-mccabe" ,python-mccabe)
+       ("python-rope" ,python-rope)
+       ("python-autopep8" ,python-autopep8)))
+    (home-page "https://github.com/palantir/python-language-server")
+    (synopsis "Python implementation of the Language Server Protocol")
+    (description
+     "The Python Language Server (pyls) is an implementation of the Python 3
+language specification for the Language Server Protocol (LSP).  This tool is
+used in text editing environments to provide a complete and integrated
+feature-set for programming Python effectively.")
+    (license license:expat)))
+
 (define-public python-black
   (package
     (name "python-black")
@@ -2638,14 +2716,14 @@ interested parties to subscribe to events, or \"signals\".")
 (define-public pelican
   (package
     (name "pelican")
-    (version "3.7.1")
+    (version "4.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pelican" version))
        (sha256
         (base32
-         "12spygavv9b6xpb5pgp7f0p3z0mms60nx6zrpx1yfkj68zz4flra"))))
+         "05yda7n6r0ll18fpdjzkzyr0ls8hbb86fnjyb33k9jvv5avah2lr"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-feedgenerator" ,python-feedgenerator)
@@ -2720,14 +2798,14 @@ and is very extensible.")
 (define-public python-cython
   (package
     (name "python-cython")
-    (version "0.28.4")
+    (version "0.29.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Cython" version))
        (sha256
         (base32
-         "0imw9s2rbrh32clbl10csnwmig9p3nzkrd2baxxxfmnrsc42pb3n"))))
+         "1wfb68g115gmf3mv23w0hh972b0ll85gpb92ci28x6h997br0llx"))))
     (build-system python-build-system)
     ;; we need the full python package and not just the python-wrapper
     ;; because we need libpython3.3m.so
@@ -4604,6 +4682,31 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
 (define-public python2-ipykernel
   (package-with-python2 python-ipykernel))
 
+(define-public python-pari-jupyter
+  (package
+    (name "python-pari-jupyter")
+    (version "1.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pari_jupyter" version))
+       (sha256
+        (base32
+         "1yash0p422nnin7z58b99d0p23nx79f5m0mainc9hsjg72jhdhr6"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-ipykernel" ,python-ipykernel)))
+    (inputs
+     `(("pari-gp" ,pari-gp)
+       ("readline" ,readline)))
+    (arguments
+     `(#:tests? #f)) ; no test suite
+    (home-page
+     "https://github.com/jdemeyer/pari_jupyter")
+    (synopsis "A Jupyter kernel for PARI/GP")
+    (description "The package provides a PARI/GP kernel for Jupyter.")
+    (license license:gpl3+)))
+
 ;; This is the latest release of the LTS version of ipython with support for
 ;; Python 2.7 and Python 3.x.  Later non-LTS versions starting from 6.0 have
 ;; dropped support for Python 2.7.  We may want to rename this package.
@@ -7923,9 +8026,6 @@ The API is as much as possible the similar to jQuery.  pyquery uses lxml for
 fast xml and html manipulation.")
     (license license:bsd-3)))
 
-(define-public python2-pyquery
-  (package-with-python2 python-pyquery))
-
 (define-public python-anyjson
   (package
     (name "python-anyjson")
@@ -8806,8 +8906,7 @@ Python.  It generates C++ code and a Makefile."))
         (base32
          "1cppm0pa9aqgsbkq130lskrzmrvjs5vpiavjjbhpz2fdw52w8251"))))
     (arguments
-     ;; Rope is currently python-2 only.
-     ;; https://github.com/python-rope/rope/issues/57
+     ;; Rope has only partial python3 support, see `python-rope'
      `(#:python ,python-2))
     (build-system python-build-system)
     (native-inputs
@@ -8820,6 +8919,16 @@ and parameters in Python 2 source code.  These refactorings can also be applied
 to occurrences in strings and comments.")
     (license license:gpl2)))
 
+(define-public python-rope
+  (package
+    (inherit python2-rope)
+    (name "python-rope")
+    (arguments `(#:python ,python-wrapper
+                 ;; XXX: Only partial python3 support, results in some failing
+                 ;; tests: <https://github.com/python-rope/rope/issues/247>.
+                 #:tests? #f))
+    (properties `((python2-variant . ,(delay python2-rope))))))
+
 (define-public python-py3status
   (package
     (name "python-py3status")
@@ -9083,13 +9192,13 @@ format.")
 (define-public python-twisted
   (package
     (name "python-twisted")
-    (version "17.1.0")
+    (version "17.5.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Twisted" version ".tar.bz2"))
               (sha256
                (base32
-                "1p245mg15hkxp7hy5cyq2fgvlgjkb4cg0gwkwd148nzy1bbi3wnv"))))
+                "1sh2h23nnizcdyrl2rn7zxijglikxwz7z7grqpvq496zy2aa967i"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; FIXME: Some tests are failing.
@@ -9101,6 +9210,7 @@ format.")
     (propagated-inputs
      `(("python-zope-interface" ,python-zope-interface)
        ("python-incremental" ,python-incremental)
+       ("python-hyperlink" ,python-hyperlink)
        ("python-constantly" ,python-constantly)
        ("python-automat" ,python-automat)))
     (home-page "https://twistedmatrix.com/")
@@ -10724,14 +10834,13 @@ a file-like object from which an arbitrarly-sized key can be read.")
 (define-public python-qrcode
   (package
     (name "python-qrcode")
-    (version "6.0")
+    (version "6.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "qrcode" version))
        (sha256
-        (base32
-         "1gz1g2n9kqwqkak78aavr354z1v3yyiksk7q6xp5hi1zr6s0syq3"))))
+        (base32 "0sa3n298b9jpz6zn0birnjii3mg9sihjq28n9nzjlzv09y2m6ljh"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Tests require packaging 'pymaging'.
@@ -10740,10 +10849,6 @@ a file-like object from which an arbitrarly-sized key can be read.")
      `(("python-lxml" ,python-lxml)     ; for SVG output
        ("python-pillow" ,python-pillow) ; for PNG output
        ("python-six" ,python-six)))
-    (inputs
-     `(;; The setup.cfg file needs to be used, and support for this requires
-       ;; at least version 30.3.0 of setuptools
-       ("python-setuptools" ,python-setuptools)))
     (home-page "https://github.com/lincolnloop/python-qrcode")
     (synopsis "QR Code image generator")
     (description "This package provides a pure Python QR Code generator
@@ -14878,3 +14983,45 @@ It features bit and byte granularity, easy debugging and testing, an
 easy-to-extend subclass system, and lots of primitive constructs to
 make your work easier.")
     (license license:expat)))
+
+(define-public python-humanize
+  (package
+    (name "python-humanize")
+    (version "0.5.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "humanize" version))
+        (sha256
+         (base32
+          "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4"))))
+    (arguments
+     '(#:tests? #f)) ; tests not in pypi archive
+    (build-system python-build-system)
+    (home-page "https://github.com/jmoiron/humanize")
+    (synopsis "Print numerical information in a human-readable form")
+    (description "This package provides a Python module that displays numbers
+and dates in \"human readable\" forms.  For example, it would display
+\"12345591313\" as \"12.3 billion\".")
+    (license license:expat)))
+
+(define-public python-txaio
+  (package
+    (name "python-txaio")
+    (version "18.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "txaio" version))
+        (sha256
+         (base32
+          "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-twisted" ,python-twisted)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/crossbario/txaio")
+    (synopsis "Compatibility layer between Python asyncio and Twisted")
+    (description "Txaio provides a compatibility layer between the Python
+@code{asyncio} module and @code{Twisted}.")
+    (license license:expat)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ce2e344880..057c47706b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -460,3 +460,65 @@ instead of @command{python3}.")))
 
 (define-public python-wrapper (wrap-python3 python))
 (define-public python-minimal-wrapper (wrap-python3 python-minimal))
+
+(define-public micropython
+  (package
+    (name "micropython")
+    (version "1.10")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/micropython/micropython/"
+                            "releases/download/v" version
+                            "/micropython-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1g1zjip3rkx6bp16qi1bag72wivnbh56fcsl3nffanrx4j5f4z90"))
+      (modules '((guix build utils)))
+      (snippet
+       '(begin
+          (delete-file-recursively "ports/cc3200/FreeRTOS")
+          (with-directory-excursion "lib"
+            ;; TODO: Unbundle axtls and berkley-db-1.xx
+            (for-each delete-file-recursively
+                      '("libffi" "lwip" "stm32lib" "nrfx")))
+          #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'preprare-build
+           (lambda _
+             (chdir "ports/unix")
+             ;; see: https://github.com/micropython/micropython/pull/4246
+             (substitute* "Makefile"
+               (("-Os") "-Os -ffp-contract=off"))
+             #t))
+         (replace 'install-license-files
+           ;; We don't build in the root directory so the file isn't found.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (dest (string-append out "/share/doc/" ,name "-" ,version "/")))
+               (install-file "../../LICENSE" dest))
+             #t))
+         (delete 'configure)) ; no configure
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          "V=1")
+       #:test-target "test"))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)))
+    (inputs
+     `(("libffi" ,libffi)))
+    (home-page "https://micropython.org/")
+    (synopsis "Python implementation for microcontrollers and constrained systems")
+    (description "MicroPython is a lean and efficient implementation of the
+Python 3 programming language that includes a small subset of the Python
+standard library and is optimised to run on microcontrollers and in constrained
+environments.  MicroPython is packed full of advanced features such as an
+interactive prompt, arbitrary precision integers, closures, list comprehension,
+generators, exception handling and more.  Still it is compact enough to fit and
+run within just 256k of code space and 16k of RAM.  MicroPython aims to be as
+compatible with normal Python as possible to allow you to transfer code with
+ease from the desktop to a microcontroller or embedded system.")
+    (license license:expat)))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 6775a991b9..8179911539 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -512,7 +512,8 @@ system, and the core design of Django is reused in Grantlee.")
               (base32
                "071yc9iz14qs4s8yvrwllyfdzp5yjxsdpvbjxdrf0g5q69vqigy6"))
              ;; Use TZDIR to avoid depending on package "tzdata".
-             (patches (search-patches "qtbase-use-TZDIR.patch"))
+             (patches (search-patches "qtbase-use-TZDIR.patch"
+                                      "qtbase-old-kernel.patch"))
              (modules '((guix build utils)))
              (snippet
                ;; corelib uses bundled harfbuzz, md4, md5, sha3
@@ -2231,3 +2232,33 @@ a binding language:
 @item Creating from Singleton QML QObject defined in the binded language
 @end itemize\n")
     (license license:lgpl3)))                    ;version 3 only (+ exception)
+
+;; There have been no public releases yet.
+(define-public qtcolorwidgets
+  (let ((commit "a95f72e935fe9e046061a1d1c3930cbfbcb533e0")
+        (revision "1"))
+    (package
+      (name "qtcolorwidgets")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0dkiwlqh2gwhlp78c1fmchj3shl4p9inspcl96ya5aa8mn6kydy8"))))
+      (build-system cmake-build-system)
+      (arguments `(#:tests? #f)) ; There are no tests
+      (native-inputs
+       `(("qttools" ,qttools)))
+      (inputs
+       `(("qtbase" ,qtbase)))
+      (home-page "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
+      (synopsis "Color management widgets")
+      (description "QtColorWidgets provides a Qt color dialog that is more
+user-friendly than the default @code{QColorDialog} and several other
+color-related widgets.")
+      ;; Includes a license exception for combining with GPL2 code.
+      (license license:lgpl3+))))
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index 5348d914cf..2d7ccceff7 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -20,6 +20,7 @@
 (define-module (gnu packages rails)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages ruby)
   #:use-module (guix build-system ruby))
@@ -93,3 +94,374 @@ API.")
     (home-page
      "https://github.com/banister/debug_inspector")
     (license license:expat)))
+
+(define-public ruby-activemodel
+  (package
+   (name "ruby-activemodel")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "activemodel" version))
+     (sha256
+      (base32
+       "1xmwi3mw8g4shbjvkhk72ra3r5jccbdsd4piphqka2y1h8s7sxvi"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-activesupport" ,ruby-activesupport)))
+   (synopsis "Toolkit for building modeling frameworks like Active Record")
+   (description
+    "This package provides a toolkit for building modeling frameworks like
+Active Record.  ActiveSupport handles attributes, callbacks, validations,
+serialization, internationalization, and testing.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-activerecord
+  (package
+   (name "ruby-activerecord")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "activerecord" version))
+     (sha256
+      (base32
+       "19a0sns6a5wz2wym25lb1dv4lbrrl5sd1n15s5ky2636znmhz30y"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-activemodel" ,ruby-activemodel)
+      ("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-arel" ,ruby-arel)))
+   (synopsis "Ruby library to connect to relational databases")
+   (description
+    "Active Record connects classes to relational database table to establish
+an almost zero-configuration persistence layer for applications.")
+   (home-page "https://rubyonrails.org")
+   (license license:expat)))
+
+(define-public ruby-rails-html-sanitizer
+  (package
+    (name "ruby-rails-html-sanitizer")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rails-html-sanitizer" version))
+       (sha256
+        (base32
+         "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-loofah" ,ruby-loofah)))
+    (synopsis "HTML sanitization for Rails applications")
+    (description
+     "This gem is used to handle HTML sanitization in Rails applications.  If
+you need similar functionality in non Rails apps consider using Loofah
+directly.")
+    (home-page "https://github.com/rails/rails-html-sanitizer")
+    (license license:expat)))
+
+(define-public ruby-rails-dom-testing
+  (package
+   (name "ruby-rails-dom-testing")
+   (version "2.0.2")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/rails/rails-dom-testing.git")
+            (commit (string-append "v" version))))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "0zrg6x1w3wjgklbhcphjmggl11jx5s8cl21qjqij7wknm412i5wl"))))
+   (build-system ruby-build-system)
+   (native-inputs
+    `(("bundler" ,bundler)))
+   (propagated-inputs
+    `(("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-nokogiri" ,ruby-nokogiri)))
+   (synopsis "Compare HTML DOMs and assert certain elements exists")
+   (description
+    "This gem can compare HTML and assert certain elements exists.  This is
+useful when writing tests.")
+   (home-page "https://github.com/rails/rails-dom-testing")
+   (license license:expat)))
+
+(define-public ruby-actionview
+  (package
+   (name "ruby-actionview")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "actionview" version))
+     (sha256
+      (base32
+       "1lz04drbi1z0xhvb8jnr14pbf505lilr02arahxq7y3mxiz0rs8z"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-builder" ,ruby-builder)
+      ("ruby-erubi" ,ruby-erubi)
+      ("ruby-rails-dom-testing" ,ruby-rails-dom-testing)
+      ("ruby-rails-html-sanitizer" ,ruby-rails-html-sanitizer)))
+   (synopsis "Conventions and helpers for building web pages")
+   (description
+    "ActionView provides conventions and helpers for building web pages in
+Ruby.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-actionpack
+  (package
+   (name "ruby-actionpack")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "actionpack" version))
+     (sha256
+      (base32
+       "0iwhbqqn0cm39dq040iwq8cfyclqk3kyzwlp5k3j5cz8k2668wws"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-actionview" ,ruby-actionview)
+      ("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-rack" ,ruby-rack)
+      ("ruby-rack-test" ,ruby-rack-test)
+      ("ruby-rails-dom-testing" ,ruby-rails-dom-testing)
+      ("ruby-rails-html-sanitizer" ,ruby-rails-html-sanitizer)))
+   (synopsis "Conventions for building and testing MVC web applications")
+   (description
+    "ActionPack provides conventions for building and testing MVC web
+applications.  These work with any Rack-compatible server.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-actioncable
+  (package
+   (name "ruby-actioncable")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "actioncable" version))
+     (sha256
+      (base32
+       "0826k5ch0l03f9yrkxy69aiv039z4qi00lnahw2rzywd2iz6r68x"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-actionpack" ,ruby-actionpack)
+      ("ruby-nio4r" ,ruby-nio4r)
+      ("ruby-websocket-driver" ,ruby-websocket-driver)))
+   (synopsis "Integrate integrates WebSockets with Rails applications")
+   (description
+    "Action Cable integrates WebSockets with Rails applications.  Through
+WebSockets it allows for real-time features in web applications.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-activejob
+  (package
+   (name "ruby-activejob")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "activejob" version))
+     (sha256
+      (base32
+       "1jjkl62x2aprg55x9rpm0h2c82vr2qr989hg3l9r21l01q4822ir"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-globalid" ,ruby-globalid)))
+   (synopsis "Declare job classes for multiple backends")
+   (description
+    "ActiveJob allows declaring job classes in a common way across Rails
+applications.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-activestorage
+  (package
+    (name "ruby-activestorage")
+    (version "5.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "activestorage" version))
+       (sha256
+        (base32
+         "0c72837098sw384vk6dmrb2p7q3wx4swnibk6sw9dp4hn1vc4p31"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-actionpack" ,ruby-actionpack)
+       ("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-marcel" ,ruby-marcel)))
+    (synopsis "Integrate file storage services in to Rails applications")
+    (description
+     "ActiveStorage integrates file storage services with Rails applications,
+allowing files to be attached to ActiveRecord models..")
+    (home-page "https://rubyonrails.org/")
+    (license license:expat)))
+
+(define-public ruby-actionmailer
+  (package
+   (name "ruby-actionmailer")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "actionmailer" version))
+     (sha256
+      (base32
+       "0sfpb8s95cmkpp9ybyp2c88r55r5llscmmnkfwcwgasz9ncjiq5n"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-actionpack" ,ruby-actionpack)
+      ("ruby-actionview" ,ruby-actionview)
+      ("ruby-activejob" ,ruby-activejob)
+      ("ruby-mail" ,ruby-mail)
+      ("ruby-rails-dom-testing" ,ruby-rails-dom-testing)))
+   (synopsis "Work with emails using the controller/view pattern")
+   (description
+    "Compose, deliver, receive, and test emails using the controller/view
+pattern.  Including support for multipart email and attachments.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-railties
+  (package
+   (name "ruby-railties")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "railties" version))
+     (sha256
+      (base32
+       "00pnylmbz4c46mxw5lhxi8h39lndfg6fs1hpd0qd6swnjhkqsr1l"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-actionpack" ,ruby-actionpack)
+      ("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-method-source" ,ruby-method-source)
+      ("ruby-thor" ,ruby-thor)))
+   (synopsis "Rails internals, including application bootup and generators")
+   (description
+    "@code{railties} provides the core Rails internals including handling
+application bootup, plugins, generators, and Rake tasks.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-sprockets-rails
+  (package
+   (name "ruby-sprockets-rails")
+   (version "3.2.1")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "sprockets-rails" version))
+     (sha256
+      (base32
+       "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-actionpack" ,ruby-actionpack)
+      ("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-sprockets" ,ruby-sprockets)))
+   (synopsis "Sprockets Rails integration")
+   (description
+    "Provides Sprockets implementation for the Rails Asset Pipeline.")
+   (home-page
+    "https://github.com/rails/sprockets-rails")
+   (license license:expat)))
+
+(define-public ruby-rails
+  (package
+   (name "ruby-rails")
+   (version "5.2.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "rails" version))
+     (sha256
+      (base32
+       "1m9cszds68dsiycciiayd3c9g90s2yzn1izkr3gpgqkfw6dmvzyr"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(#:phases
+      (modify-phases %standard-phases
+        ;; This gem acts as glue between the gems that actually make up
+        ;; Rails. The important thing to check is that the gemspec matches up
+        ;; with the Guix packages and Rubygems can successfully activate the
+        ;; Rails gem.
+        ;;
+        ;; The following check phase tests this.
+        (delete 'check)
+        (add-after 'install 'check
+          (lambda* (#:key tests? outputs #:allow-other-keys)
+            (setenv "GEM_PATH"
+                    (string-append
+                     (getenv "GEM_PATH")
+                     ":"
+                     (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
+            (when tests?
+              (invoke "ruby" "-e" "gem 'rails'"))
+            #t)))))
+   (propagated-inputs
+    `(("ruby-activesupport" ,ruby-activesupport)
+      ("ruby-actionpack" ,ruby-actionpack)
+      ("ruby-actionview" ,ruby-actionview)
+      ("ruby-activemodel" ,ruby-activemodel)
+      ("ruby-activerecord" ,ruby-activerecord)
+      ("ruby-actionmailer" ,ruby-actionmailer)
+      ("ruby-activejob" ,ruby-activejob)
+      ("ruby-actioncable" ,ruby-actioncable)
+      ("ruby-activestorage" ,ruby-activestorage)
+      ("ruby-railties" ,ruby-railties)
+      ("bundler" ,bundler)
+      ("ruby-sprockets-rails" ,ruby-sprockets-rails)))
+   (synopsis "Full-stack web framework optimized for programmer happiness")
+   (description
+    "Ruby on Rails is a full-stack web framework optimized for programmer
+happiness and sustainable productivity.  It encourages beautiful code by
+favoring convention over configuration.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
diff --git a/gnu/packages/rdesktop.scm b/gnu/packages/rdesktop.scm
index 777606d77f..2febb1b5f4 100644
--- a/gnu/packages/rdesktop.scm
+++ b/gnu/packages/rdesktop.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,18 +46,18 @@
 (define-public rdesktop
   (package
     (name "rdesktop")
-    (version "1.8.3")
+    (version "1.8.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "mirror://sourceforge/rdesktop/rdesktop/" version "/"
-                    "rdesktop-" version ".tar.gz"))
+              (uri (string-append "https://github.com/rdesktop/rdesktop/"
+                                  "releases/download/v" version "/rdesktop-"
+                                  version ".tar.gz"))
               (sha256
                (base32
-                "1r7c1rjmw2xzq8fw0scyb453gy9z19774z1z8ldmzzsfndb03cl8"))))
+                "0bfd9nl2dfr1931fv6bpnrj5yf88ikijrs4s3nm96gm87bkvi64v"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags (list (string-append "--with-openssl="
+     `(#:configure-flags (list (string-append "--with-openssl="
                                               (assoc-ref %build-inputs
                                                          "openssl"))
 
@@ -64,11 +65,22 @@
                                "--disable-credssp"
                                "--disable-smartcard")
 
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install-license-files 'delete-extraneous-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (license-dir (string-append out "/share/doc/"
+                                                ,name "-" ,version)))
+               ;; XXX These files are installed erroneously.
+               (delete-file (string-append license-dir "/licence.c"))
+               (delete-file (string-append license-dir "/licence.o")))
+             #t)))
        #:tests? #f))                              ;no 'check' target
     (inputs
      `(("libx11" ,libx11)
        ("openssl" ,openssl)))
-    (home-page "http://www.rdesktop.org/")
+    (home-page "https://www.rdesktop.org/")
     (synopsis "Client for Windows Terminal Services")
     (description
      "rdesktop is a client for Microsoft's Windows Remote Desktop Services,
diff --git a/gnu/packages/rrdtool.scm b/gnu/packages/rrdtool.scm
index eb9be7a4bc..fb2afe616f 100644
--- a/gnu/packages/rrdtool.scm
+++ b/gnu/packages/rrdtool.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,14 +37,14 @@
 (define-public rrdtool
   (package
     (name "rrdtool")
-    (version "1.7.0")
+    (version "1.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://oss.oetiker.ch/rrdtool/pub/rrdtool-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ssjqpa0dwwzbylc0drmlbq922qcw8crffc0rpr805xr6n4k8zgr"))))
+                "1bhsg119j94xwykp2sbp01hhxcg78gzblfn7j98slrv9va77g6wq"))))
     (build-system gnu-build-system)
     (inputs
      `(("cairo" ,cairo)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 18c6335911..6da7109d14 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -32,19 +32,25 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dbm)
+  #:use-module (gnu packages rails)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages java)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages libidn)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lsof)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages ragel)
+  #:use-module (gnu packages rsync)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
@@ -55,7 +61,8 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages web)
-  #:use-module (guix build-system ruby))
+  #:use-module (guix build-system ruby)
+  #:use-module ((srfi srfi-1) #:select (alist-delete)))
 
 (define-public ruby
   (package
@@ -150,17 +157,58 @@ a focus on simplicity and productivity.")
                    (delete-file-recursively "ext/fiddle/libffi-3.2.1")
                    #t))))))
 
+(define-public ruby-commander
+  (package
+    (name "ruby-commander")
+    (version "4.4.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "commander" version))
+       (sha256
+        (base32
+         "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         ;; Don't run or require rubocop, the code linting tool, as this is a
+         ;; bit unnecessary.
+         (add-after 'unpack 'dont-run-rubocop
+           (lambda _
+             (substitute* "Rakefile"
+               ((".*rubocop.*") "")
+               ((".*RuboCop.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-highline" ,ruby-highline)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)
+       ("ruby-rspec-mocks" ,ruby-rspec-mocks)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (home-page "https://github.com/commander-rb/commander")
+    (synopsis "Library for building Ruby command-line executables")
+    (description
+     "Commander aims to be a complete solution for Ruby command-line
+executables.  Commander bridges the gap between other terminal related
+libraries (OptionParser, HighLine), while providing many new features, and an
+elegant API.")
+    (license license:expat)))
+
 (define-public ruby-highline
   (package
     (name "ruby-highline")
-    (version "1.7.10")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "highline" version))
        (sha256
         (base32
-         "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y"))))
+         "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
     (build-system ruby-build-system)
     (arguments
      `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
@@ -216,6 +264,41 @@ packaging native C and Java extensions in Ruby.")
     (home-page "https://github.com/rake-compiler/rake-compiler")
     (license license:expat)))
 
+(define-public ruby-rsync
+  (package
+    (name "ruby-rsync")
+    (version "1.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rsync" version))
+       (sha256
+        (base32
+         "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-coveralls-requirement
+           (lambda _
+             (substitute* "spec/spec_helper.rb"
+               (("require 'coveralls'") "")
+               (("Coveralls.wear!") ""))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("rsync" ,rsync)
+       ("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)
+       ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
+    (home-page "https://github.com/jbussdieker/ruby-rsync")
+    (synopsis "Ruby wrapper around rsync")
+    (description
+     "Ruby Rsync is a Ruby library that can synchronize files between remote
+hosts by wrapping the @file{rsync} binary.")
+    (license license:expat)))
+
 (define-public ruby-i18n
   (package
     (name "ruby-i18n")
@@ -410,20 +493,55 @@ outcomes of a code example.")
     (version "1.2.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "rspec-its" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rspec/rspec-its.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1pwphny5jawcm1hda3vs9pjv1cybaxy17dc1s75qd7drrvx697p3"))))
+         "190rz7v4q4wk80fzhr5hknvxx4vb2pywmqr8wc41w2blj9ylzi0f"))
+       (patches
+        (list
+         (origin (method url-fetch)
+                 (uri (string-append
+                       "https://github.com/rspec/rspec-its/commit/"
+                       "bfaab439c7c879f5ef25552f41827891f6308373.patch"))
+                 (file-name "ruby-rspec-its-fix-specs-for-ruby-2.4.patch")
+                 (sha256
+                  (base32
+                   "0lnik0kvrpgkakvdb2fmzg22pdlraf6kiidr9sv6rnfyviiqwxgh")))))))
     (build-system ruby-build-system)
     (arguments
-     `(#:tests? #f)) ; needs cucumber.
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'dont-install-gems-from-gemfile
+           (lambda _
+             (substitute* "Gemfile"
+               (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
+                ""))
+             #t))
+         (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
+           (lambda _
+             (substitute* "rspec-its.gemspec"
+               (("rake.*") "rake'\n")
+               (("cucumber.*") "cucumber'\n")
+               (("bundler.*") "bundler'\n")
+               (("aruba.*") "aruba'\n"))
+             #t)))))
     (propagated-inputs
      `(("ruby-rspec-core" ,ruby-rspec-core)
        ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
-    (synopsis "RSpec extension gem for attribute matching")
-    (description "@code{rspec-its} is an RSpec extension gem for attribute
-matching.")
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-aruba" ,ruby-aruba)))
+    (synopsis "RSpec extension that provides the @code{its} method")
+    (description
+     "RSpec::Its provides the its method as a short-hand to specify the expected
+value of an attribute.  For example, one can use @code{its(:size)\\{should
+eq(1)\\}}.")
     (home-page "https://github.com/rspec/rspec-its")
     (license license:expat)))
 
@@ -461,6 +579,29 @@ support for stubbing and mocking.")
     (propagated-inputs
      `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
 
+(define-public ruby-rspec-rerun
+  (package
+    (name "ruby-rspec-rerun")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rspec-rerun" version))
+       (sha256
+        (base32
+         "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Track failed RSpec tests to re-run them")
+    (description
+     "This package provides an automated way to track, and then re-run failed
+RSpec tests.")
+    (home-page "https://github.com/dblock/rspec-rerun")
+    (license license:expat)))
+
 (define-public ruby-rspec
   (package
     (name "ruby-rspec")
@@ -546,6 +687,28 @@ supported: XML Markup and XML Events.")
     (home-page "https://github.com/jimweirich/builder")
     (license license:expat)))
 
+(define-public ruby-bump
+  (package
+    (name "ruby-bump")
+    (version "0.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "bump" version))
+       (sha256
+        (base32
+         "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (synopsis "Tool for working with Rubygems")
+    (description
+     "Bump provides commands to manage Rubygem versioning, updating to the
+next patch version for example.")
+    (home-page "https://github.com/gregorym/bump")
+    (license license:expat)))
+
 (define-public ruby-rjb
   (package
     (name "ruby-rjb")
@@ -682,6 +845,53 @@ AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
   (home-page "https://asciidoctor.org")
   (license license:expat)))
 
+(define-public ruby-ast
+  (package
+    (name "ruby-ast")
+    (version "2.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ast" version))
+       (sha256
+        (base32
+         "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-coveralls-requirement
+           (lambda _
+             (substitute* "test/helper.rb"
+               (("require 'coveralls'") "")
+               (("Coveralls::SimpleCov::Formatter") ""))
+             #t))
+         (add-after 'extract-gemspec 'remove-unnecessary-requirements
+           (lambda _
+             (substitute* "ast.gemspec"
+               ((".*coveralls.*") "\n")
+               (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
+               (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
+               (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-json-pure" ,ruby-json-pure)
+       ("ruby-mime-times" ,ruby-mime-types)
+       ("ruby-yard" ,ruby-yard)
+       ("ruby-kramdown" ,ruby-kramdown)
+       ("ruby-rest-client" ,ruby-rest-client)
+       ("ruby-bacon" ,ruby-bacon)
+       ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
+       ("ruby-racc" ,ruby-racc)))
+    (synopsis "Library for working with Abstract Syntax Trees")
+    (description
+     "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
+It does this through immutable data structures.")
+    (home-page "https://whitequark.github.io/ast/")
+    (license license:expat)))
+
 (define-public ruby-sporkmonger-rack-mount
   ;; Testing the addressable gem requires a newer commit than that released, so
   ;; use an up to date version.
@@ -740,6 +950,124 @@ format.")
     (home-page "https://github.com/nicksieger/ci_reporter")
     (license license:expat)))
 
+(define-public ruby-contracts
+  (package
+    (name "ruby-contracts")
+    (version "0.16.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "contracts" version))
+       (sha256
+        (base32
+         "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         ;; Don't run or require rubocop, the code linting tool, as this is a
+         ;; bit unnecessary.
+         (add-after 'unpack 'dont-run-rubocop
+          (lambda _
+            (substitute* "Rakefile"
+              ((".*rubocop.*") "")
+              ((".*RuboCop.*") ""))
+            #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Method contracts for Ruby")
+    (description
+     "This library provides contracts for Ruby.  A contract describes the
+correct inputs and output for a method, and will raise an error if a incorrect
+value is found.")
+    (home-page "https://github.com/egonSchiele/contracts.ruby")
+    (license license:bsd-2)))
+
+(define-public ruby-crack
+  (package
+    (name "ruby-crack")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "crack" version))
+       (sha256
+        (base32
+         "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (for-each (lambda (file)
+                           (display file)(display "\n")
+                           (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
+                         (find-files "test" ".*rb$")))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-safe-yaml" ,ruby-safe-yaml)))
+    (synopsis "Simple JSON and XML parsing for Ruby")
+    (description
+     "@code{crack} provides really simple JSON and XML parsing, extracted from
+code in Merb and Rails.")
+    (home-page "https://github.com/jnunemaker/crack")
+    (license license:expat)))
+
+(define-public ruby-crass
+  (package
+    (name "ruby-crass")
+    (version "1.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "crass" version))
+       (sha256
+        (base32
+         "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
+    (build-system ruby-build-system)
+    (synopsis "Pure Ruby CSS parser based on CSS Syntax Level 3")
+    (description
+     "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
+    (home-page "https://github.com/rgrove/crass/")
+    (license license:expat)))
+
+(define-public ruby-cliver
+  (package
+    (name "ruby-cliver")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cliver" version))
+       (sha256
+        (base32
+         "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
+         ;; would be nice, but the tests look to be incompatible:
+         ;;
+         ;; NoMethodError: undefined method `last_comment'
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec-2)))
+    (synopsis "Assertions for command-line dependencies in Ruby")
+    (description
+     "@code{cliver} provides a way to detect missing command-line
+dependencies, including versions.")
+    (home-page "https://github.com/yaauie/cliver")
+    (license license:expat)))
+
 (define-public ruby-czmq-ffi-gen
   (package
     (name "ruby-czmq-ffi-gen")
@@ -873,6 +1201,25 @@ functions.")
     (home-page "https://github.com/ahoward/options")
     (license license:ruby)))
 
+(define-public ruby-erubi
+  (package
+    (name "ruby-erubi")
+    (version "1.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "erubi" version))
+       (sha256
+        (base32
+         "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
+    (build-system ruby-build-system)
+    (synopsis "ERB template engine for Ruby")
+    (description
+     "Erubi is a ERB template engine for Ruby.  It is a simplified fork of
+Erubis")
+    (home-page "https://github.com/jeremyevans/erubi")
+    (license license:expat)))
+
 (define-public ruby-erubis
   (package
     (name "ruby-erubis")
@@ -1132,6 +1479,86 @@ standard output stream.")
     (home-page "https://github.com/geemus/formatador")
     (license license:expat)))
 
+(define-public ruby-fuubar
+  (package
+    (name "ruby-fuubar")
+    (version "2.3.2")
+    (source
+     (origin
+       ;; Fetch from the git repository, as the gem package doesn't include
+       ;; the tests.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/thekompanee/fuubar.git")
+             (commit (string-append "releases/v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; TODO: Some tests fail, unsure why.
+       ;; 21 examples, 7 failures
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'delete-certificate
+           (lambda _
+             ;; Remove 's.cert_chain' as we do not build with a private key
+             (substitute* "fuubar.gemspec"
+               ((".*cert_chain.*") "")
+               ((".*signing_key.*") ""))
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)))
+    (propagated-inputs
+     `(("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-progressbar" ,ruby-progressbar)))
+    (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
+    (description
+     "Fuubar is an RSpec formatter that uses a progress bar instead of a
+string of letters and dots as feedback.  It also stops on the first test
+failure.")
+    (home-page "https://github.com/thekompanee/fuubar")
+    (license license:expat)))
+
+(define-public ruby-hashdiff
+  (package
+    (name "ruby-hashdiff")
+    (version "0.3.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "hashdiff" version))
+       (sha256
+        (base32
+         "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Run tests directly via rspec to avoid Rake issue:
+         ;; NoMethodError: undefined method `last_comment'
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec-2)))
+    (synopsis "HashDiff computes the smallest difference between two hashes")
+    (description
+     "HashDiff is a Ruby library to compute the smallest difference between
+two hashes.")
+    (home-page "https://github.com/liufengyun/hashdiff")
+    (license license:expat)))
+
 (define-public ruby-shindo
   (package
     (name "ruby-shindo")
@@ -1287,6 +1714,31 @@ User Agents.")
     (home-page "https://github.com/gshutler/useragent")
     (license license:expat)))
 
+(define-public ruby-backports
+  (package
+  (name "ruby-backports")
+  (version "3.11.4")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (rubygems-uri "backports" version))
+      (sha256
+        (base32
+          "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
+  (build-system ruby-build-system)
+  (arguments
+   '(;; TODO: This should be default, but there is one test failure
+     #:test-target "all_spec"))
+  (native-inputs
+   `(("ruby-mspec" ,ruby-mspec)
+     ("ruby-activesupport" ,ruby-activesupport)))
+  (synopsis "Backports of the features in newer Ruby versions")
+  (description
+    "Backports enables more compatibility across Ruby versions by providing
+backports of some features.")
+  (home-page "https://github.com/marcandre/backports")
+  (license license:expat)))
+
 (define-public ruby-bacon
   (package
     (name "ruby-bacon")
@@ -1328,6 +1780,30 @@ disable tests, have before and after blocks that run once and more.")
     (home-page "https://github.com/cldwalker/bacon-bits")
     (license license:expat)))
 
+(define-public ruby-bacon-colored-output
+  (package
+    (name "ruby-bacon-colored-output")
+    (version "1.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "bacon-colored_output" version))
+       (sha256
+        (base32
+         "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-bacon" ,ruby-bacon)))
+    (synopsis "Colored output for Bacon test framework")
+    (description
+     "This package adds color through ANSI escape codes to Bacon test
+output.")
+    (home-page "https://github.com/whitequark/bacon-colored_output")
+    (license license:expat)))
+
 (define-public ruby-connection-pool
   (package
     (name "ruby-connection-pool")
@@ -1386,6 +1862,32 @@ assertion messages for tests.")
     (home-page "https://github.com/k-tsj/power_assert")
     (license (list license:bsd-2 license:ruby))))
 
+(define-public ruby-powerpack
+  (package
+    (name "ruby-powerpack")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "powerpack" version))
+       (sha256
+        (base32
+         "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-yard" ,ruby-yard)))
+    (synopsis "Useful extensions to core Ruby classes")
+    (description
+     "This package provides a few useful extensions to core Ruby classes,
+including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
+@code{String}.")
+    (home-page "https://github.com/bbatsov/powerpack")
+    (license license:expat)))
+
 (define-public ruby-locale
   (package
     (name "ruby-locale")
@@ -1508,6 +2010,39 @@ It allows writing tests, checking results and automated testing in Ruby.")
     (home-page "https://test-unit.github.io/")
     (license (list license:psfl license:ruby))))
 
+(define-public ruby-maruku
+  (package
+    (name "ruby-maruku")
+    (version "0.7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "maruku" version))
+       (sha256
+        (base32
+         "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; TODO: 3 tests seem to fail due to HTML encoding issues
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
+    (synopsis "Markdown interpreter in Ruby")
+    (description
+     "Maruku is a Markdown interpreter in Ruby.  It can export Markdown to
+HTML, and PDF through LaTeX.")
+    (home-page "https://github.com/bhollis/maruku")
+    (license license:expat)))
+
 (define-public ruby-metaclass
   (package
     (name "ruby-metaclass")
@@ -1543,6 +2078,107 @@ objects.")
     (home-page "https://github.com/floehopper/metaclass")
     (license license:expat)))
 
+(define-public ruby-mspec
+  (package
+    (name "ruby-mspec")
+    (version "1.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "mspec" version))
+       (sha256
+        (base32
+         "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; TODO: 3 test failures
+       ;; ./spec/mocks/mock_spec.rb:82
+       ;; ./spec/utils/name_map_spec.rb:151
+       ;; ./spec/utils/name_map_spec.rb:155
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'extract-gemspec 'change-dependency-constraints
+           (lambda _
+             (substitute* "mspec.gemspec"
+               (("rake.*") "rake>)\n")
+               (("rspec.*") "rspec>)\n"))
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec" "spec"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "MSpec is a specialized framework for RubySpec")
+    (description
+     "MSpec is a specialized framework that is syntax-compatible with RSpec 2
+for basic features.  MSpec contains additional features that assist in writing
+specs for Ruby implementations in ruby/spec.")
+    (home-page "http://rubyspec.org")
+    (license license:expat)))
+
+(define-public ruby-mysql2
+  (package
+    (name "ruby-mysql2")
+    (version "0.5.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/brianmario/mysql2.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; TODO: Tests require a running MySQL/MariaDB service
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'replace-git-ls-files
+           (lambda _
+             (substitute* "mysql2.gemspec"
+               (("git ls-files .*`") "find . -type f |sort`"))
+             #t))
+         (add-before 'install 'set-MAKEFLAGS
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "MAKEFLAGS"
+                     (string-append
+                      "V=1 "
+                      "prefix=" (assoc-ref outputs "out")))
+             #t))
+         ;; Move the 'check phase to after 'install, as then you can test
+         ;; using the installed mysql2 gem in the store.
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs tests? #:allow-other-keys)
+             (setenv "GEM_PATH"
+                     (string-append
+                      (getenv "GEM_PATH")
+                      ":"
+                      (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (inputs
+     `(("mariadb" ,mariadb)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)))
+    (synopsis "MySQL library for Ruby, binding to libmysql")
+    (description
+     "This package provides a simple, fast MySQL library for Ruby, binding to
+libmysql.")
+    (home-page "https://github.com/brianmario/mysql2")
+    (license license:expat)))
+
 (define-public ruby-blankslate
   (package
     (name "ruby-blankslate")
@@ -1599,6 +2235,52 @@ irb's last-word approach.")
     (home-page "http://tagaholic.me/bond/")
     (license license:expat)))
 
+(define-public ruby-idn-ruby
+  (package
+    (name "ruby-idn-ruby")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "idn-ruby" version))
+       (sha256
+        (base32
+         "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key tests? outputs #:allow-other-keys)
+             (when tests?
+               (let* ((gem-file (cadr (find-files "." "\\.gem")))
+                      (name-and-version (basename gem-file ".gem")))
+                 (apply invoke
+                        "ruby" "--verbose"
+                        (string-append "-I"
+                                       (assoc-ref outputs "out")
+                                       "/lib/ruby/vendor_ruby/gems/"
+                                       name-and-version
+                                       "/lib")
+                        (find-files "./test" ".*\\.rb"))))
+             #t)))))
+    (inputs
+     `(("libidn" ,libidn)))
+    (synopsis "Ruby Bindings for the GNU LibIDN library")
+    (description
+     "Ruby Bindings for the GNU LibIDN library, an implementation of the
+Stringprep, Punycode and IDNA specifications.  These are used to encode and
+decode internationalized domain + names according to the IDNA2003
+specifications.
+
+Included are the most important parts of the Stringprep, Punycode and IDNA
+APIs like performing Stringprep processings, encoding to and decoding from
+Punycode strings and converting entire domain names to and from the ACE
+encoded form.")
+    (home-page "https://github.com/deepfryed/idn-ruby")
+    (license license:asl2.0)))
+
 (define-public ruby-instantiator
   (package
     (name "ruby-instantiator")
@@ -1839,13 +2521,13 @@ client protocol.")
 (define-public ruby-minitest
   (package
     (name "ruby-minitest")
-    (version "5.10.3")
+    (version "5.11.3")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "minitest" version))
               (sha256
                (base32
-                "05521clw19lrksqgvg2kmm025pvdhdaniix52vmbychrn2jm7kz2"))))
+                "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("ruby-hoe" ,ruby-hoe)))
@@ -2051,6 +2733,51 @@ instance, it provides @code{assert_true}, @code{assert_false} and
     (home-page "https://github.com/halostatue/minitest-bonus-assertions")
     (license license:expat)))
 
+(define-public ruby-minitest-reporters
+  (package
+    (name "ruby-minitest-reporters")
+    (version "1.3.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "minitest-reporters" version))
+       (sha256
+        (base32
+         "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Remove the requirement on Rubocop, as it isn't useful to run, and
+         ;; including it as an input can lead to circular dependencies.
+         (add-after 'unpack 'remove-rubocop-from-Rakefile
+           (lambda _
+             (substitute* "Rakefile"
+               (("require 'rubocop/rake\\_task'") "")
+               (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
+             #t))
+         (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
+           (lambda _
+             (substitute* "minitest-reporters.gemspec"
+               ((".*%q<rubocop>.*") "\n"))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-ansi" ,ruby-ansi)
+       ("ruby-builder" ,ruby-builder)
+       ("ruby-minitest" ,ruby-minitest)
+       ("ruby-progressbar" ,ruby-progressbar)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-maruku" ,ruby-maruku)))
+    (synopsis "Enhanced reporting for Minitest tests")
+    (description
+     "@code{minitest/reporters} provides a custom Minitest runner to improve
+how the test state is reported.  A number of different reporters are
+available, including a spec reporter, progress bar reporter, a HTML
+reporter.")
+    (home-page "https://github.com/kern/minitest-reporters")
+    (license license:expat)))
+
 (define-public ruby-minitest-rg
   (package
     (name "ruby-minitest-rg")
@@ -2294,13 +3021,13 @@ rogue test/unit/autorun requires.")
 (define-public ruby-arel
   (package
     (name "ruby-arel")
-    (version "8.0.0")
+    (version "9.0.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "arel" version))
               (sha256
                (base32
-                "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl"))))
+                "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
     (build-system ruby-build-system)
     (arguments '(#:tests? #f)) ; no tests
     (home-page "https://github.com/rails/arel")
@@ -2310,6 +3037,30 @@ Ruby.  It simplifies the generation of complex SQL queries and adapts to
 various relational database implementations.")
     (license license:expat)))
 
+(define-public ruby-marcel
+  (package
+    (name "ruby-marcel")
+    (version "0.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "marcel" version))
+       (sha256
+        (base32
+         "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-mimemagic" ,ruby-mimemagic)))
+    (synopsis "MIME type detection using magic numbers, filenames and extensions")
+    (description
+     "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
+Extensions} type detection using magic numbers, filenames, and extensions")
+    (home-page "https://github.com/basecamp/marcel")
+    (license license:expat)))
+
 (define-public ruby-minitar
   ;; We package from the GitHub source to fix the security issue reported at
   ;; https://github.com/halostatue/minitar/issues/16.
@@ -2461,6 +3212,67 @@ for select languages.")
     (home-page "http://coderay.rubychan.de")
     (license license:expat)))
 
+(define-public ruby-parser
+  (package
+    (name "ruby-parser")
+    (version "2.6.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "parser" version))
+       (sha256
+        (base32
+         "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-cliver" ,ruby-cliver)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-racc" ,ruby-racc)))
+    (inputs
+     `(("ragel" ,ragel)))
+    (propagated-inputs
+     `(("ruby-ast" ,ruby-ast)))
+    (synopsis "Ruby parser written in pure Ruby")
+    (description
+     "This package provides a Ruby parser written in pure Ruby.")
+    (home-page "https://github.com/whitequark/parser")
+    (license license:expat)))
+
+(define-public ruby-prawn-manual-builder
+  (package
+    (name "ruby-prawn-manual-builder")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "prawn-manual_builder" version))
+       (sha256
+        (base32
+         "0wbjnkqp55p5wmz85ldypcray223glckd209hmdxhnzk8s5pb3za"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'extract-gemspec 'patch-gemspec
+           (lambda _
+             (substitute* ".gemspec"
+               ;; Loosen the requirement for pdf-inspector
+               (("~> 1\\.0\\.7") ">= 0")))))))
+    (propagated-inputs
+     `(("ruby-coderay" ,ruby-coderay)))
+    (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
+    (description
+     "This package provides a tool for writing manuals for Prawn and Prawn
+accessories")
+    (home-page "https://github.com/prawnpdf/prawn-manual_builder")
+    (license (list
+              ;; GPLv2 or GPLv3 or custom license described in LICENSE file
+              license:gpl2
+              license:gpl3))))
+
 (define-public ruby-progress_bar
   (package
     (name "ruby-progress_bar")
@@ -2492,6 +3304,28 @@ rate.")
     (home-page "https://github.com/paul/progress_bar")
     (license license:wtfpl2)))
 
+(define-public ruby-progressbar
+  (package
+    (name "ruby-progressbar")
+    (version "1.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ruby-progressbar" version))
+       (sha256
+        (base32
+         "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
+       #:tests? #f))
+    (synopsis "Text progress bar library for Ruby")
+    (description
+     "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
+The output can be customized with a formatting system.")
+    (home-page "https://github.com/jfelchner/ruby-progressbar")
+    (license license:expat)))
+
 (define-public ruby-pry
   (package
     (name "ruby-pry")
@@ -2921,6 +3755,29 @@ when working with Ruby code.")
     ;; There is no mention of the "or later" clause.
     (license license:gpl2)))
 
+(define-public ruby-jaro-winkler
+  (package
+    (name "ruby-jaro-winkler")
+    (version "1.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "jaro_winkler" version))
+       (sha256
+        (base32
+         "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
+    (description
+     "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
+algorithm.  It is written as a C extension and will fallback to a pure Ruby
+implementation on platforms where this is unsupported.")
+    (home-page "https://github.com/tonytonyjan/jaro_winkler")
+    (license license:expat)))
+
 (define-public ruby-json
   (package
     (name "ruby-json")
@@ -3041,17 +3898,55 @@ you about the changes.")
                (base32
                 "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
 
+(define-public ruby-loofah
+  (package
+    (name "ruby-loofah")
+    (version "2.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "loofah" version))
+       (sha256
+        (base32
+         "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-unnecessary-dependencies
+           (lambda _
+             ;; concourse is a development tool which is unused, so remove it
+             ;; so it's not required.
+             (substitute* "Gemfile"
+               ((".*\"concourse\".*") "\n"))
+             (substitute* "Rakefile"
+               (("require 'concourse'") "")
+               (("Concourse\\.new.*") "\n"))
+             #t)))))
+    (native-inputs
+     `(("ruby-hoe" ,ruby-hoe)
+       ("ruby-rr" ,ruby-rr)))
+    (propagated-inputs
+     `(("ruby-nokogiri" ,ruby-nokogiri)
+       ("ruby-crass" ,ruby-crass)))
+    (synopsis "Ruby library for manipulating and transforming HTML/XML")
+    (description
+     "Loofah is a general library for manipulating and transforming HTML/XML
+documents and fragments.  It's built on top of Nokogiri and libxml2.")
+    (home-page "https://github.com/flavorjones/loofah")
+    (license license:expat)))
+
 (define-public ruby-activesupport
   (package
     (name "ruby-activesupport")
-    (version "5.2.1")
+    (version "5.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "activesupport" version))
        (sha256
         (base32
-         "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2"))))
+         "1iya7vxqwxysr74s7b4z1x19gmnx5advimzip3cbmsd5bd43wfgz"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -3442,6 +4337,32 @@ differences (added or removed nodes) between two XML/HTML documents.")
       (home-page "https://github.com/postmodern/nokogiri-diff")
       (license license:expat))))
 
+(define-public ruby-racc
+  (package
+    (name "ruby-racc")
+    (version "1.4.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "racc" version))
+       (sha256
+        (base32
+         "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("ruby-hoe" ,ruby-hoe)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)))
+    (synopsis "LALR(1) parser generator for Ruby")
+    (description
+     "Racc is a LALR(1) parser generator.  It is written in Ruby itself, and
+generates Ruby program.")
+    (home-page "http://i.loveruby.net/en/projects/racc/")
+    (license (list
+              ;; Generally licensed under the LGPL2.1, and some files also
+              ;; available under the same license as Ruby.
+              license:lgpl2.1
+              license:ruby))))
+
 (define-public ruby-rack
   (package
     (name "ruby-rack")
@@ -3558,6 +4479,140 @@ clickjacking, directory traversal, session hijacking and IP spoofing.")
     (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
     (license license:expat)))
 
+(define-public ruby-rainbow
+  (package
+    (name "ruby-rainbow")
+    (version "3.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rainbow" version))
+       (sha256
+        (base32
+         "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Run rspec directly, to avoid requiring Rubocop which is used from
+         ;; the Rakefile.
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Colorize printed text on ANSI terminals")
+    (description
+     "@code{rainbow} provides a string presenter object to colorize strings by
+wrapping them in ANSI escape codes.")
+    (home-page "https://github.com/sickill/rainbow")
+    (license license:expat)))
+
+(define-public ruby-rr
+  (package
+    (name "ruby-rr")
+    (version "1.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rr" version))
+       (sha256
+        (base32
+         "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; test files not included
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Ruby test double framework")
+    (description
+     "RR is a test double framework that features a rich selection of double
+techniques and a terse syntax.")
+    (home-page "https://rr.github.io/rr/")
+    (license license:expat)))
+
+(define-public ruby-rest-client
+  (package
+    (name "ruby-rest-client")
+    (version "2.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rest-client" version))
+       (sha256
+        (base32
+         "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'remove-unnecessary-development-dependencies
+           (lambda _
+             (substitute* "rest-client.gemspec"
+               ;; Remove rubocop as it's unused. Rubocop also indirectly
+               ;; depends on this package through ruby-parser and ruby-ast so
+               ;; this avoids a dependency loop.
+               ((".*rubocop.*") "\n")
+               ;; Remove pry as it's unused, it's a debugging tool
+               ((".*pry.*") "\n")
+               ;; Remove an unnecessarily strict rdoc dependency
+               ((".*rdoc.*") "\n"))
+             #t))
+         (add-before 'check 'delete-network-dependent-tests
+           (lambda _
+             (delete-file "spec/integration/request_spec.rb")
+             (delete-file "spec/integration/httpbin_spec.rb")
+             #t)))))
+    (propagated-inputs
+     `(("ruby-http-cookie" ,ruby-http-cookie)
+       ("ruby-mime-types" ,ruby-mime-types)
+       ("ruby-netrc" ,ruby-netrc)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-webmock", ruby-webmock-2)
+       ("ruby-rspec", ruby-rspec)))
+    (synopsis "Simple HTTP and REST client for Ruby")
+    (description
+     "@code{rest-client} provides a simple HTTP and REST client for Ruby,
+inspired by the Sinatra microframework style of specifying actions:
+@code{get}, @code{put}, @code{post}, @code{delete}.")
+    (home-page "https://github.com/rest-client/rest-client")
+    (license license:expat)))
+
+(define-public ruby-rubocop
+  (package
+    (name "ruby-rubocop")
+    (version "0.64.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rubocop" version))
+       (sha256
+        (base32
+         "07shi6kncwhkvlh9ci9rgccrjsq4448hbic3yrakh2w65ppynvbj"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-parser" ,ruby-parser)
+       ("ruby-powerpack" ,ruby-powerpack)
+       ("ruby-rainbow" ,ruby-rainbow)
+       ("ruby-progressbar" ,ruby-progressbar)
+       ("ruby-parallel" ,ruby-parallel)
+       ("ruby-jaro-winkler" ,ruby-jaro-winkler)
+       ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
+    (synopsis "Ruby code style checking tool")
+    (description
+     "@code{rubocop} is a Ruby code style checking tool.  It aims to enforce
+the community-driven Ruby Style Guide.")
+    (home-page "https://github.com/rubocop-hq/rubocop")
+    (license license:expat)))
+
 (define-public ruby-contest
   (package
     (name "ruby-contest")
@@ -3622,14 +4677,14 @@ Ruby classes.")
 (define-public ruby-gherkin
   (package
     (name "ruby-gherkin")
-    (version "4.1.3")
+    (version "5.1.0")
     (source
       (origin
         (method url-fetch)
         (uri (rubygems-uri "gherkin" version))
         (sha256
           (base32
-            "1d18r8mf2qyd9jbq9xxvca8adyysdzvwdy8v9c2s5hrd6p02kg79"))))
+            "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("bundler" ,bundler)))
@@ -3637,25 +4692,172 @@ Ruby classes.")
      '(#:tests? #f)) ; needs simplecov, among others
     (synopsis "Gherkin parser for Ruby")
     (description "Gherkin is a parser and compiler for the Gherkin language.
-It is intended be used by all Cucumber implementations to parse '.feature'
-files.")
-    (home-page "https://github.com/cucumber/gherkin3")
+It is intended be used by all Cucumber implementations to parse
+@file{.feature} files.")
+    (home-page "https://github.com/cucumber-attic/gherkin")
+    (license license:expat)))
+
+(define-public ruby-aruba
+  (package
+    (name "ruby-aruba")
+    (version "0.14.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "aruba" version))
+       (sha256
+        (base32
+         "0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* "spec/aruba/api_spec.rb"
+               ;; This resolves some errors in the specs
+               ;;
+               ;; undefined method `parse' for Time:Class
+               (("require 'spec_helper'")
+                "require 'spec_helper'\nrequire 'time'"))
+             ;; Avoid shebang issues in this spec file
+             (substitute* "spec/aruba/matchers/command_spec.rb"
+               (("/usr/bin/env bash")
+                (which "bash")))
+             #t))
+         (add-before 'check 'remove-unnecessary-dependencies
+           (lambda _
+             (substitute* "Gemfile"
+               ((".*byebug.*") "\n")
+               ((".*pry.*") "\n")
+               ((".*yaml.*") "\n")
+               ((".*bcat.*") "\n")
+               ((".*kramdown.*") "\n")
+               ((".*rubocop.*") "\n")
+               ((".*cucumber-pro.*") "\n")
+               ((".*cucumber.*") "\n")
+               ((".*license_finder.*") "\n")
+               ((".*rake.*") "gem 'rake'\n")
+               ((".*simplecov.*") "\n")
+               ((".*relish.*") "\n"))
+             (substitute* "spec/spec_helper.rb"
+               ((".*simplecov.*") "")
+               (("^SimpleCov.*") ""))
+             (substitute* "aruba.gemspec"
+               (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
+                "spec.add_runtime_dependency 'cucumber'"))
+             #t))
+         (add-before 'check 'set-home
+           (lambda _ (setenv "HOME" "/tmp") #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-fuubar" ,ruby-fuubar)))
+    (propagated-inputs
+     `(("ruby-childprocess" ,ruby-childprocess)
+       ("ruby-contracts" ,ruby-contracts)
+       ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-ffi" ,ruby-ffi)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)
+       ("ruby-thor" ,ruby-thor)
+       ("ruby-yard" ,ruby-yard)))
+    (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
+    (description
+     "Aruba is an extension for Cucumber, RSpec and Minitest for testing
+command-line applications.  It supports applications written in any
+language.")
+    (home-page "https://github.com/cucumber/aruba")
+    (license license:expat)))
+
+;; A version of ruby-aruba without tests run so that circular dependencies can
+;; be avoided.
+(define ruby-aruba-without-tests
+  (package
+    (inherit ruby-aruba)
+    (arguments '(#:tests? #f))
+    (propagated-inputs
+     `(("ruby-cucumber" ,ruby-cucumber-without-tests)
+       ,@(alist-delete "ruby-cucumber"
+                       (package-propagated-inputs ruby-aruba))))
+    (native-inputs '())))
+
+(define-public ruby-cucumber
+  (package
+    (name "ruby-cucumber")
+    (version "3.1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cucumber/cucumber-ruby.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         ;; Don't run or require rubocop, the code linting tool, as this is a
+         ;; bit unnecessary.
+         (add-after 'unpack 'dont-run-rubocop
+           (lambda _
+             (substitute* "Rakefile"
+               ((".*rubocop/rake\\_task.*") "")
+               ((".*RuboCop.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-builder" ,ruby-builder)
+       ("ruby-cucumber-core" ,ruby-cucumber-core)
+       ("ruby-cucumber-wire" ,ruby-cucumber-wire)
+       ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
+       ("ruby-diff-lcs" ,ruby-diff-lcs)
+       ("ruby-gherkin" ,ruby-gherkin)
+       ("ruby-multi-json" ,ruby-multi-json)
+       ("ruby-multi-test" ,ruby-multi-test)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ;; Use a untested version of aruba, to avoid a circular dependency, as
+       ;; ruby-aruba depends on ruby-cucumber.
+       ("ruby-aruba", ruby-aruba-without-tests)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-nokogiri" ,ruby-nokogiri)))
+    (synopsis "Describe automated tests in plain language")
+    (description
+     "Cucumber is a tool for running automated tests written in plain
+language.  It's designed to support a Behaviour Driven Development (BDD)
+software development workflow.")
+    (home-page "https://cucumber.io/")
     (license license:expat)))
 
+(define ruby-cucumber-without-tests
+  (package (inherit ruby-cucumber)
+    (arguments
+     '(#:tests? #f))
+    (native-inputs
+     '())))
+
 (define-public ruby-cucumber-core
   (package
     (name "ruby-cucumber-core")
-    (version "2.0.0")
+    ;; Stick to major version 3, until version 4 of Cucumber is released.
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "cucumber-core" version))
        (sha256
         (base32
-         "136hnvqv444qyxzcgy1k60y4i6cn3sn9lbqr4wan9dzz1yzllqbm"))))
+         "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
     (build-system ruby-build-system)
     (propagated-inputs
-     `(("ruby-gherkin" ,ruby-gherkin)))
+     `(("ruby-backports" ,ruby-backports)
+       ("ruby-gherkin" ,ruby-gherkin)
+       ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
     (native-inputs
      `(("bundler" ,bundler)))
     (arguments
@@ -3669,6 +4871,94 @@ and trust on your team.")
     (home-page "https://cucumber.io/")
     (license license:expat)))
 
+(define-public ruby-cucumber-expressions
+  (package
+    (name "ruby-cucumber-expressions")
+    (version "6.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cucumber-expressions" version))
+       (sha256
+        (base32
+         "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (synopsis "Simpler alternative to Regular Expressions")
+    (description "Cucumber Expressions offer similar functionality to Regular
+Expressions, with a syntax that is easier to read and write.  Cucumber
+Expressions are extensible with parameter types.")
+    (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
+    (license license:expat)))
+
+(define-public ruby-cucumber-wire
+  (package
+    (name "ruby-cucumber-wire")
+    ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
+    ;; 3, and Cucumber 4 hasn't been released yet.
+    (version "0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cucumber-wire" version))
+       (sha256
+        (base32
+         "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; TODO: Currently, the tests can't be run as cucumber is required,
+       ;; which would lead to a circular dependency.
+       #:tests? #f
+       #:test-target "default"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
+           (lambda _
+             (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Cucumber wire protocol plugin")
+    (description
+     "Cucumber's wire protocol allows step definitions to be implemented and
+invoked on any platform.")
+    (home-page "https://github.com/cucumber/cucumber-ruby-wire")
+    (license license:expat)))
+
+(define-public ruby-cucumber-tag-expressions
+  (package
+    (name "ruby-cucumber-tag-expressions")
+    (version "1.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cucumber-tag_expressions" version))
+       (sha256
+        (base32
+         "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "rspec")
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Cucumber tag expressions for Ruby")
+    (description
+     "Cucumber tag expression parser for Ruby.  A tag expression is an infix
+boolean expression used by Cucumber.")
+    (home-page "https://github.com/cucumber/tag-expressions-ruby")
+    (license license:expat)))
+
 (define-public ruby-bio-logger
   (package
     (name "ruby-bio-logger")
@@ -4228,6 +5518,147 @@ support to both Ruby and JRuby.  It uses @code{unf_ext} on CRuby and
     (home-page "https://github.com/knu/ruby-unf")
     (license license:bsd-2)))
 
+(define-public ruby-webmock-2
+  (package
+    (name "ruby-webmock")
+    (version "2.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "webmock" version))
+       (sha256
+        (base32
+         "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-addressable" ,ruby-addressable)
+       ("ruby-crack" ,ruby-crack)
+       ("ruby-hashdiff" ,ruby-hashdiff)))
+    (synopsis "Allows stubbing and setting expectations on HTTP requests")
+    (description
+     "WebMock allows stubbing HTTP requests and setting expectations on HTTP
+requests.  This is useful when testing software.")
+    (home-page "https://github.com/bblimke/webmock")
+    (license license:expat)))
+
+(define-public ruby-unicode-display-width
+  (package
+    (name "ruby-unicode-display-width")
+    (version "1.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "unicode-display_width" version))
+       (sha256
+        (base32
+         "0bq528fibi8s0jmxz0xzlgzggdq0x4fx46wfqz49478pv8gb2diq"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; Test data not included.
+       #:tests? #f))
+    (synopsis "Determine the monospace display width of Ruby strings")
+    (description
+     "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
+display width of strings in Ruby.")
+    (home-page "https://github.com/janlelis/unicode-display_width")
+    (license license:expat)))
+
+;; There is another gem called 'ruby-version' so we use an underscore in this
+;; name
+(define-public ruby_version
+  (package
+    (name "ruby_version")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ruby_version" version))
+       (sha256
+        (base32
+         "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'fix-dependencies
+           (lambda _
+             ;; Remove the Gemfile.lock, as we want to use Guix packages at
+             ;; whatever versions.
+             (delete-file "Gemfile.lock")
+             ;; Remove the incldued gem file as it's unnecessary.
+             (delete-file "pkg/ruby_version-1.0.0.gem")
+             (substitute* "ruby_version.gemspec"
+               ;; Don't require rdoc and rubygems-tasks as they're unnecessary
+               ((".*rdoc.*") "\n")
+               ((".*rubygems-tasks.*") "\n")
+               ;; Accept any version of rake and rspec
+               (("%q<rake.*") "%q<rake>)\n")
+               (("%q<rspec.*") "%q<rspec>)\n"))
+             ;; Remove the use of rubygems-tasks from the Rakefile, as it's
+             ;; unnecessary.
+             (substitute* "Rakefile"
+               (("^require 'rubygems/tasks'") "")
+               (("Gem::Tasks.new") ""))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Ruby library to help check the Ruby version")
+    (description
+     "@code{ruby_version} provides a @code{RubyVersion} module to simplify
+checking for the right Ruby version in software.")
+    (home-page "https://github.com/janlelis/ruby_version")
+    (license license:expat)))
+
+(define-public ruby-websocket-driver
+  (package
+   (name "ruby-websocket-driver")
+   (version "0.7.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "websocket-driver" version))
+     (sha256
+      (base32
+       "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
+   (synopsis "WebSocket protocol handler with pluggable I/O")
+   (description
+    "@code{websocket-driver} provides a complete implementation of the
+WebSocket protocols that can be hooked up to any TCP library")
+   (home-page "https://github.com/faye/websocket-driver-ruby")
+   (license license:expat)))
+
+(define-public ruby-websocket-extensions
+  (package
+    (name "ruby-websocket-extensions")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "websocket-extensions" version))
+       (sha256
+        (base32
+         "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (synopsis "Generic extension manager for WebSocket connections")
+    (description
+     "@code{websocket-extensions} provides a container for registering
+extension plugins.")
+    (home-page "https://github.com/faye/websocket-extensions-ruby")
+    (license license:expat)))
+
 (define-public ruby-domain-name
   (package
     (name "ruby-domain-name")
@@ -5213,8 +6644,21 @@ programs running in the background, in Ruby.")
                 "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l"))))
     (build-system ruby-build-system)
     (arguments
-     ;; Tests require network
-     `(#:tests? #f))
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Remove the requirement on Rubocop, as it isn't useful to run, and
+         ;; including it as an input can lead to circular dependencies.
+         (add-after 'unpack 'remove-rubocop-from-Rakefile
+           (lambda _
+             (substitute* "Rakefile"
+               (("require \"rubocop/rake\\_task\"") "")
+               (("RuboCop::RakeTask\\.new") ""))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-yard" ,ruby-yard)
+       ("ruby-mocha" ,ruby-mocha)
+       ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
     (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
     (synopsis "Domain name parser")
     (description "The gem @code{public_suffix} is a domain name parser,
@@ -5228,19 +6672,40 @@ all known public suffixes.")
 (define-public ruby-addressable
   (package
     (name "ruby-addressable")
-    (version "2.5.2")
+    (version "2.6.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "addressable" version))
               (sha256
                (base32
-                "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk"))))
+                "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l"))))
     (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
+          (lambda _
+            (substitute* "Gemfile"
+              (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
+              ((".*launchy.*") "")
+              ((".*rake.*") "gem 'rake'\n")
+              ((".*redcarpet.*") ""))
+            #t))
+         (add-before 'check 'delete-network-dependent-test
+           (lambda _
+             (delete-file "spec/addressable/net_http_compat_spec.rb")
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("bundler" ,bundler)
+       ("ruby-idn-ruby" ,ruby-idn-ruby)
+       ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
+       ("ruby-rspec-its", ruby-rspec-its)
+       ("ruby-yard" ,ruby-yard)
+       ("ruby-simplecov" ,ruby-simplecov)))
     (propagated-inputs
      `(("ruby-public-suffix" ,ruby-public-suffix)))
-    (arguments
-     ;; No test target
-     `(#:tests? #f))
     (home-page "https://github.com/sporkmonger/addressable")
     (synopsis "Alternative URI implementation")
     (description "Addressable is a replacement for the URI implementation that
@@ -5509,15 +6974,58 @@ interface.  It allows Jekyll to rebuild your site when a file changes.")
 (define-public ruby-parallel
   (package
     (name "ruby-parallel")
-    (version "1.12.1")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "parallel" version))
-              (sha256
-               (base32
-                "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67"))))
+    (version "1.13.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/grosser/parallel.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
     (build-system ruby-build-system)
-    (arguments `(#:tests? #f)); No rakefile
+    (arguments
+     `(;; TODO 3 test failures
+       ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
+       ;; open unnecessary pipes
+       ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
+       ;; SQLite in processes
+       ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
+       ;; SQLite in threads
+       #:tests? #f
+       #:test-target "rspec-rerun:spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-Gemfile
+           (lambda _
+             (substitute* "Gemfile"
+               (("gem 'rspec-legacy_formatters'") "")
+               (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
+         (add-before 'check 'delete-Gemfile.lock
+           (lambda _
+             ;; Bundler isn't being used for fetching dependendencies, so
+             ;; delete the Gemfile.lock
+             (delete-file "Gemfile.lock")
+             #t))
+         (add-before 'build 'patch-gemspec
+           (lambda _
+             (substitute* "parallel.gemspec"
+               (("git ls-files") "find"))
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-rerun" ,ruby-rspec-rerun)
+       ("bundler" ,bundler)
+       ("ruby-activerecord" ,ruby-activerecord)
+       ("ruby-progressbar" ,ruby-progressbar)
+       ("ruby-bump" ,ruby-bump)
+       ("procps" ,procps)
+       ("lsof" ,lsof)
+       ("ruby-mysql2" ,ruby-mysql2)
+       ("ruby-sqlite3" ,ruby-sqlite3)
+       ("ruby-i18n" ,ruby-i18n)))
     (home-page "https://github.com/grosser/parallel")
     (synopsis "Parallel processing in Ruby")
     (description "Parallel allows you to run any code in parallel Processes
@@ -5683,9 +7191,40 @@ functionality from Prawn.")
                (base32
                 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
     (build-system ruby-build-system)
-    (arguments `(#:tests? #f)); No rakefile
     (propagated-inputs
-     `(("ruby-prawn" ,ruby-prawn)))
+     `(("ruby-prawn" ,ruby-prawn)
+       ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-yard" ,ruby-yard)
+       ("ruby-mocha" ,ruby-mocha)
+       ("ruby-coderay" ,ruby-coderay)
+       ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-rspec-2" ,ruby-rspec-2)))
+    (arguments
+     '(;; TODO: 1 test fails
+       ;; Failure/Error: pdf.page_count.should == 1
+       ;;   expected: 1
+       ;;        got: 2 (using ==)
+       ;; # ./spec/table_spec.rb:1308
+       ;;
+       ;; 225 examples, 1 failure
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-gemspec
+           (lambda _
+             (substitute* "prawn-table.gemspec"
+               ;; Loosen the requirement for pdf-inspector
+               (("~> 1\\.1\\.0") ">= 0")
+               ;; Loosen the requirement for pdf-reader
+               (("~> 1\\.2") ">= 0"))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
     (home-page "https://github.com/prawnpdf/prawn-table")
     (synopsis "Tables support for Prawn")
     (description "This gem provides tables support for Prawn.")
@@ -5849,19 +7388,36 @@ indentation will probably be an issue and hence this gem.")
   (package
     (name "ruby-safe-yaml")
     (version "1.0.4")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "safe_yaml" version))
-              (sha256
-               (base32
-                "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094"))))
+    (source
+     (origin
+       ;; TODO Fetch from the git repository so a patch can be applied
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dtao/safe_yaml.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1wnln8xdy8g6kwdj4amm8773xwffqxpf2sxslk6jjh2wxsy1lrig"))
+       (patches
+        (search-patches "ruby-safe-yaml-add-require-time.patch"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("ruby-rspec" ,ruby-rspec)
        ("ruby-hashie" ,ruby-hashie)
        ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
-    (arguments `(#:test-target "spec"
-                 #:tests? #f));; FIXME: one failure
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-TZ
+           (lambda _
+             ;; This test is dependent on the timezone
+             ;; spec/transform/to_date_spec.rb:35
+             ;; # SafeYAML::Transform::ToDate converts times to the local
+             ;; timezone
+             (setenv "TZ" "UTC-11")
+             #t)))))
     (home-page "https://github.com/dtao/safe_yaml")
     (synopsis "YAML parser")
     (description "The SafeYAML gem provides an alternative implementation of
@@ -6006,3 +7562,124 @@ Pathname.")
     (description "The Pagination Generator forms the core of the pagination
 logic in Jekyll.  It calculates and generates the pagination pages.")
     (license license:expat)))
+
+(define-public ruby-faraday
+  (package
+    (name "ruby-faraday")
+    (version "0.15.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "faraday" version))
+       (sha256
+        (base32
+         "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f))
+    (propagated-inputs
+     `(("ruby-multipart-post" ,ruby-multipart-post)))
+    (synopsis "Ruby HTTP/REST API client library")
+    (description
+     "Faraday is a HTTP/REST API client library which provides a common
+interface over different adapters.")
+    (home-page "https://github.com/lostisland/faraday")
+    (license license:expat)))
+
+(define-public ruby-nio4r
+  (package
+   (name "ruby-nio4r")
+   (version "2.3.1")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "nio4r" version))
+     (sha256
+      (base32
+       "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(#:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'remove-unnecessary-dependencies
+          (lambda _
+            (substitute* "spec/spec_helper.rb"
+              ;; Coveralls is for uploading test coverage information to an
+              ;; online service, and thus unnecessary for building the Guix
+              ;; package
+              (("require \"coveralls\"") "")
+              (("Coveralls\\.wear!") "")
+              ;; Remove rspec/retry as we are not retrying the tests
+              (("require \"rspec/retry\"") "")
+              (("config\\.display_try_failure_messages = true") "")
+              (("config\\.verbose_retry = true") ""))
+            #t))
+        (add-before 'check 'compile
+          (lambda _
+            (invoke "rake" "compile")
+            #t))
+        (replace 'check
+          (lambda* (#:key tests? #:allow-other-keys)
+            (when tests?
+              (invoke "rspec"))
+            #t)))))
+   (native-inputs
+    `(("bundler" ,bundler)
+      ("ruby-rake-compiler" ,ruby-rake-compiler)
+      ("ruby-rspec" ,ruby-rspec)
+      ("ruby-rubocop" ,ruby-rubocop)))
+   (synopsis "New I/O for Ruby")
+   (description
+    "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
+for scalable network clients and servers.")
+   (home-page "https://github.com/socketry/nio4r")
+   (license license:expat)))
+
+(define-public ruby-globalid
+  (package
+   (name "ruby-globalid")
+   (version "0.4.2")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (rubygems-uri "globalid" version))
+     (sha256
+      (base32
+       "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
+   (build-system ruby-build-system)
+   (arguments
+    '(;; No included tests
+      #:tests? #f))
+   (propagated-inputs
+    `(("ruby-activesupport" ,ruby-activesupport)))
+   (synopsis "Generate URIs idenfitying model instances in Ruby")
+   (description
+    "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
+uniquely identify it.")
+   (home-page "https://rubyonrails.org/")
+   (license license:expat)))
+
+(define-public ruby-sprockets
+  (package
+    (name "ruby-sprockets")
+    (version "3.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "sprockets" version))
+       (sha256
+        (base32
+         "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(;; No included tests
+       #:tests? #f))
+    (propagated-inputs
+     `(("ruby-concurrent" ,ruby-concurrent)
+       ("ruby-rack" ,ruby-rack)))
+    (synopsis "Sprockets is a Rack-based asset packaging system")
+    (description
+     "Sprockets is a Rack-based asset packaging system that concatenates and
+serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
+    (home-page "https://github.com/rails/sprockets")
+    (license license:expat)))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 6e3ea79845..353e2f269b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -105,7 +105,9 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"))))
+                  "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i"))
+                (patches
+                 (search-patches "mrustc-0.8.0-fix-variable-length-integer-receiving.patch"))))
       (outputs '("out" "cargo"))
       (build-system gnu-build-system)
       (inputs
@@ -746,7 +748,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works"))
                  #t)))))))))
 
-(define-public rust
+(define-public rust-1.28
   (let ((base-rust
          (rust-bootstrapped-package rust-1.27 "1.28.0"
                                     "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"
@@ -779,3 +781,13 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  #t))
              ;; The thinlto test should pass with llvm 6.
              (delete 'disable-thinlto-test))))))))
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.28 "1.29.2"
+                                    "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"
+                                    #:patches
+                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                      "rust-reproducible-builds.patch"))))
+    (package
+      (inherit base-rust))))
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
index dd8c062d31..baa79ab1c0 100644
--- a/gnu/packages/sagemath.scm
+++ b/gnu/packages/sagemath.scm
@@ -22,39 +22,70 @@
   #:use-module (guix download)
   #:use-module (guix build-system python)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz))
 
 
 (define-public python-cypari2
- (package
-   (name "python-cypari2")
-   (version "2.0.3")
-   (source
+  (package
+    (name "python-cypari2")
+    (version "2.0.3")
+    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cypari2" version))
        (sha256
-         (base32
-           "0mghbmilmy34xp1d50xdx76sijqxmpkm2bcgx2v1mdji2ff7n0yc"))))
-   (build-system python-build-system)
-   (native-inputs
+        (base32
+         "0mghbmilmy34xp1d50xdx76sijqxmpkm2bcgx2v1mdji2ff7n0yc"))))
+    (build-system python-build-system)
+    (native-inputs
      `(("python-cython" ,python-cython)))
-   (propagated-inputs
+    (propagated-inputs
      `(("python-cysignals" ,python-cysignals)))
-   (inputs
+    (inputs
      `(("gmp" ,gmp)
        ("pari-gp", pari-gp)))
-   (home-page "https://cypari2.readthedocs.io/")
-   (synopsis
+    (home-page "https://cypari2.readthedocs.io/")
+    (synopsis
      "Python interface to the number theory library libpari")
-   (description
+    (description
      "Cypari2 provides a Python interface to the number theory library
 PARI/GP.  It has been spun off from the SageMath mathematics software system,
 but it can be used independently.")
-   (license license:gpl2+)))
+    (license license:gpl2+)))
 
 (define-public python2-cypari2
   (package-with-python2 python-cypari2))
 
+;; The stable version of the following package is not young enough to be
+;; used with Sage, since it does not support cython. One would need to
+;; use an alpha release. On the other hand, Sage can be built without it.
+(define-public python-gmpy2
+  (package
+    (name "python-gmpy2")
+    (version "2.0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "gmpy2" version ".zip"))
+              (sha256
+               (base32
+                "0grx6zmi99iaslm07w6c2aqpnmbkgrxcqjrqpfq223xri0r3w8yx"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (inputs
+     `(("gmp" ,gmp)
+       ("mpfr" ,mpfr)
+       ("mpc" ,mpc)))
+    (home-page "https://github.com/aleaxit/gmpy")
+    (synopsis
+     "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x")
+    (description
+     "This package provides a Python interface to the GNU multiprecision
+libraries GMO, MPFR and MPC.")
+    (license license:lgpl3+)))
+
+(define-public python2-gmpy2
+  (package-with-python2 python-gmpy2))
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index ee143497e5..a1522792a7 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -351,35 +351,35 @@ directory.")
 (define-public sdl2-image
   (package (inherit sdl-image)
     (name "sdl2-image")
-    (version "2.0.3")
-    (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-"
-                              version ".tar.gz"))
-              (sha256
-               (base32
-                "0s13dmakn21q6yw8avl67d4zkxzl1wap6l5nwf6cvzrmlxfw441m"))))
+    (version "2.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://www.libsdl.org/projects/SDL_image/release/"
+                       "SDL2_image-" version ".tar.gz"))
+       (sha256
+        (base32 "1b6f7002bm007y3zpyxb5r6ag0lml51jyvx1pwpj9sq24jfc8kp7"))))
     (propagated-inputs
      (propagated-inputs-with-sdl2 sdl-image))))
 
 (define-public sdl2-mixer
   (package (inherit sdl-mixer)
     (name "sdl2-mixer")
-    (version "2.0.2")
-    (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-"
-                              version ".tar.gz"))
-              (modules '((guix build utils)))
-              (snippet '(begin
-                          ;; Remove bundled libraries.
-                          (delete-file-recursively "external")
-                          #t))
-              (sha256
-               (base32
-                "1fw3kkqi5346ai5if4pxrcbhs5c4vv3a4smgz6fl6kyaxwkmwqaf"))))
+    (version "2.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "http://www.libsdl.org/projects/SDL_mixer/release/"
+                       "SDL2_mixer-" version ".tar.gz"))
+       (modules '((guix build utils)))
+       (snippet '(begin
+                   ;; Remove bundled libraries.
+                   (delete-file-recursively "external")
+                   #t))
+       (sha256
+        (base32 "0694vsz5bjkcdgfdra6x9fq8vpzrl8m6q96gh58df7065hw5mkxl"))))
     (propagated-inputs
      (propagated-inputs-with-sdl2 sdl-mixer))))
 
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index ed616e739f..8ee6b4d32f 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -47,14 +47,14 @@
 (define-public xapian
   (package
     (name "xapian")
-    (version "1.4.9")
+    (version "1.4.10")
     ;; Note: When updating Xapian, remember to update xapian-bindings below.
     (source (origin
               (method url-fetch)
               (uri (string-append "https://oligarchy.co.uk/xapian/" version
                                   "/xapian-core-" version ".tar.xz"))
               (sha256
-               (base32 "1k7m7m9jld96k16ansfw2w3c354pvd8ibhnrb6dw012g06fw7sfd"))))
+               (base32 "1f4vf1w1yvsn9mn462q6snc8wkmfpifp8wrlzs4aqi45w0kr6rk8"))))
     (build-system gnu-build-system)
     (inputs `(("zlib" ,zlib)
               ("util-linux" ,util-linux)))
@@ -92,7 +92,7 @@ rich set of boolean query operators.")
                                   "/xapian-bindings-" version ".tar.xz"))
               (sha256
                (base32
-                "0ll3z3418r7bzxs4kyini2cbci5xl8i5scl3wyx88s2v4ak56bcz"))))
+                "0zqx5gcwm2mhx41fnfx30z9c31x96g5pskyrmx3c556mnklfpask"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-python3")
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index fb2526c04a..ba5bb5b4c6 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Mike Gerwitz <mtg@gnu.org>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -95,7 +95,7 @@ readers and is needed to communicate with such devices through the
 (define-public eid-mw
   (package
     (name "eid-mw")
-    (version "4.4.3")
+    (version "4.4.13")
     (source
      (origin
        (method git-fetch)
@@ -103,7 +103,7 @@ readers and is needed to communicate with such devices through the
              (url "https://github.com/Fedict/eid-mw")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "1h90iz4l85drchpkmhlsvg7f9abhw6890fdr9x5n5ir3kxikwcdm"))))
+        (base32 "14bgn2k0xbd6241qdghg787pgxy7k9rvcspaf74zwwyibaqknzyx"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -130,7 +130,7 @@ readers and is needed to communicate with such devices through the
              ;; Patch it to just return the real version number directly.
              (substitute* "scripts/build-aux/genver.sh"
                (("/bin/sh") (which "sh"))
-               (("\\$GITDESC") ,version))
+               (("^(GITDESC=).*" match) (string-append match ,version "\n")))
              (invoke "sh" "./bootstrap.sh"))))))
     (synopsis "Belgian eID Middleware")
     (description "The Belgian eID Middleware is required to authenticate with
diff --git a/gnu/packages/simh.scm b/gnu/packages/simh.scm
index 8547b705e0..bbca246bc1 100644
--- a/gnu/packages/simh.scm
+++ b/gnu/packages/simh.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages admin))
 
@@ -27,14 +29,15 @@
   (package
     (name "simh")
     (version "3.9-0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/" name "/" name
-                                  "/archive/v" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ymfy8j15d1aa4ai5xv9w7mk6lk4zx3zhfv0mfn66pdhrc8jlh0g"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/simh/simh.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1jiq6shj6a9xvzacvmyhxxd6xdyica8q4006qqjh5mh96rxrp15c"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
      `(("libpcap" ,libpcap)))
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index 6546d40597..9ba37b0f19 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Claes Wallin <claes.wallin@greatsinodevelopment.com>
 ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
 ;;; Copyright © 2017 Z. Ren <zren@dlut.edu.cn>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -105,7 +105,7 @@ complexity.")))
 (define-public s6
   (package
    (name "s6")
-   (version "2.7.2.1")
+   (version "2.7.2.2")
    (source
     (origin
      (method url-fetch)
@@ -113,7 +113,7 @@ complexity.")))
                          version ".tar.gz"))
      (sha256
       (base32
-       "0vyl4wr2l4mp9ams0dyg224qxhl8ksxsv2shs6606lhhp9g1rb6b"))))
+       "0psjmfidjdciswakw9agzzniqfmhrr21765m0q77kwxg7iisgpsq"))))
    (build-system gnu-build-system)
    (inputs `(("skalibs" ,skalibs)
              ("execline" ,execline)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 04b49def54..e1f48db22d 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;;
@@ -150,6 +150,27 @@ simulation not wholly unlike BUGS.  JAGS was written with three aims in mind:
 @end enumerate\n")
     (license license:gpl2)))
 
+(define-public libxls
+  (package
+    (name "libxls")
+    (version "1.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/libxls/libxls/releases/download/"
+                           "v" version "/libxls-" version ".tar.gz"))
+       (sha256
+        (base32 "00j2lrcvvhclmh3z9vy7myqq1br1jnnqkz2wzgk4a1gbg8c5afn5"))))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/libxls/libxls")
+    (synopsis "Read binary (.xls) Excel spreadsheet files")
+    (description
+     "libxls is a C library to read .xls spreadsheet files in the binary OLE
+BIFF8 format as created by Excel 97 and later versions.  It cannot write them.
+
+This package also provides @command{xls2csv} to export Excel files to CSV.")
+    (license license:bsd-2)))
+
 ;; Update this package together with the set of recommended packages: r-boot,
 ;; r-class, r-cluster, r-codetools, r-foreign, r-kernsmooth, r-lattice,
 ;; r-mass, r-matrix, r-mgcv, r-nlme, r-nnet, r-rpart, r-spatial, r-survival.
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 1b5e21845c..d15fdbaddd 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -78,13 +78,13 @@ a custom raw video format with a simple container.")
 (define-public dwm
   (package
     (name "dwm")
-    (version "6.1")
+    (version "6.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dl.suckless.org/dwm/dwm-"
                                  version ".tar.gz"))
              (sha256
-              (base32 "1zkmwb6df6m254shx06ly90c0q4jl70skk1pvkixpb7hcxhwbxn2"))))
+              (base32 "03hirnj8saxnsfqiszwl2ds7p0avg20izv9vdqyambks00p2x44p"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 421e362cde..1aae3a8ed6 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
@@ -48,14 +48,14 @@
 (define-public owncloud-client
   (package
     (name "owncloud-client")
-    (version "2.5.1.10973")
+    (version "2.5.3.11470")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.owncloud.com/desktop/stable/"
                            "owncloudclient-" version ".tar.xz"))
        (sha256
-        (base32 "19x4rbnqg7f7hspz1xy86b1q51q1n5y7yvq8kqc1m64n2r2s3srk"))
+        (base32 "0cznis8qadsnlgm046lxn8vmbxli6zp4b8nk93n53mkfxlcw355n"))
        (patches (search-patches "owncloud-disable-updatecheck.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -79,7 +79,13 @@
              (substitute* "test/CMakeLists.txt"
                           (("owncloud_add_test\\(Utility \"\"\\)" test)
                            (string-append "#" test)))
-             #t)))
+             #t))
+         (add-after 'unpack 'dont-embed-store-path
+           (lambda _
+             (substitute* "src/common/utility_unix.cpp"
+               (("QCoreApplication::applicationFilePath\\()") "\"owncloud\""))
+             #t))
+         (delete 'patch-dot-desktop-files))
        #:configure-flags '("-DUNIT_TESTING=ON"
                            ;; build without qtwebkit, which causes the
                            ;; package to FTBFS while looking for QWebView.
@@ -162,13 +168,13 @@ their folder.
     (version "2.2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/axkibe/lsyncd/archive/release-"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/axkibe/lsyncd.git")
+             (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "02g054qv8rnbxywd4f0gnd13lrlns9175d3ciqnyslhs1zs15nqb"))))
+        (base32 "1q2ixp52r96ckghgmxdbms6xrq8dbziimp8gmgzqfq4lk1v1w80y"))))
     (build-system cmake-build-system)
     (arguments
      `(;; The "tests" target is broken and assumes that tests are run in the
@@ -184,10 +190,7 @@ their folder.
                     (bin (string-append out "/bin"))
                     (man (string-append out "/share/man/man1")))
                (install-file "lsyncd" bin)
-               (install-file (string-append "../lsyncd-release-"
-                                            ,version
-                                            "/doc/manpage/lsyncd.1")
-                             man)
+               (install-file "../source/doc/manpage/lsyncd.1" man)
                #t))))))
     (native-inputs
      `(("lua" ,lua-5.2)))
@@ -249,7 +252,7 @@ over the Internet in an HTTP and CDN friendly way;
 (define-public rclone
   (package
     (name "rclone")
-    (version "1.45")
+    (version "1.46")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -258,19 +261,13 @@ over the Internet in an HTTP and CDN friendly way;
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "06xg0ibv9pnrnmabh1kblvxx1pk8h5rmkr9mjbymv497sx3zgz26"))))
+                "1fl52dl41n76r678nzkxa2kgk9khn1fxraxgk8jd3ayc787qs9ia"))))
     ;; FIXME: Rclone bundles some libraries Guix already provides.  Need to
     ;; un-bundle them.
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/ncw/rclone"
-       #:install-source? #f
-       #:phases
-       (modify-phases %standard-phases
-         ;; Fix failure during "check" phase: "mkdir /homeless-shelter:
-         ;; permission denied".
-         (add-after 'unpack 'set-home-directory
-           (lambda _ (setenv "HOME" "/tmp") #t)))))
+       #:install-source? #f))
     (synopsis "@code{rsync} for cloud storage")
     (description "@code{Rclone} is a command line program to sync files and
 directories to and from different cloud storage providers.
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 1c38cb3834..a9c19cdf82 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
@@ -47,6 +47,7 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -308,20 +309,20 @@ multi-seat support, a replacement for @command{mingetty}, and more.")
 (define-public libtermkey
   (package
     (name "libtermkey")
-    (version "0.20")
+    (version "0.21")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.leonerd.org.uk/code/"
-                                  name "/" name "-" version ".tar.gz"))
+              (uri (string-append "http://www.leonerd.org.uk/code/libtermkey/"
+                                  "libtermkey-" version ".tar.gz"))
               (sha256
-               (base32 "1xfj6lchhfljmbcl6dz8dpakppyy13nbl4ykxiv5x4dr9b4qf3bc"))))
+               (base32 "0fzb5pvj139di02saffhy3ajchmksn1rs41kplkv2zjyjv7xbsvr"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list
                      "CC=gcc"
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
-                  (delete 'configure))
+                  (delete 'configure))  ; no configure script
        #:test-target "test"))
     (inputs `(("ncurses" ,ncurses)))
     (native-inputs `(("libtool" ,libtool)
@@ -372,36 +373,38 @@ types of devices that provide serial consoles.")
 (define-public beep
   (package
     (name "beep")
-    (version "1.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://www.johnath.com/" name "/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0bgch6jq5cahakk3kbr9549iysf2dik09afixxy5brbxk1xfzb2r"))))
+    (version "1.4.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             ;; The original beep 1.3 at <http://www.johnath.com/beep> has been
+             ;; unmaintained for some time, and vulnerable to at least two CVEs:
+             ;; https://github.com/johnath/beep/issues/11#issuecomment-454056858
+             ;; Use this maintained fork instead.
+             (url "https://github.com/spkr-beep/beep.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1gramwa2zm59kqjhv96fi8vg7l6lyffv02h0310vb90naschi99g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; no tests.
+     `(#:tests? #f                      ; no tests
+       #:make-flags
+       (list (string-append "prefix=" (assoc-ref %outputs "out"))
+             (string-append "pkgdocdir=$(docdir)/" ,name "-" ,version))
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (add-after 'unpack 'patch-makefile
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "Makefile" (("/usr") (assoc-ref outputs "out")))
-             #t))
-         (add-before 'install 'create-output-directories
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref %outputs "out")))
-               (mkdir-p (string-append out "/bin"))
-               (mkdir-p (string-append out "/man/man1"))))))))
+         (delete 'configure))))         ; no configure script
+    (native-inputs
+     `(("gcc" ,gcc-8)))                 ; for ‘-fstack-clash-protection’
     (synopsis "Linux command-line utility to control the PC speaker")
     (description "beep allows the user to control the PC speaker with precision,
 allowing different sounds to indicate different events.  While it can be run
 quite happily on the command line, its intended place of residence is within
 scripts, notifying the user when something interesting occurs.  Of course, it
 has no notion of what's interesing, but it's very good at that notifying part.")
-    (home-page "http://www.johnath.com/beep")
+    (home-page "https://github.com/spkr-beep/beep")
     (license license:gpl2+)))
 
 (define-public unibilium
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index d2f84420c6..b0a4462227 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -341,7 +341,7 @@ as existing hashing techniques, with provably negligible risk of collisions.")
 (define-public oniguruma
   (package
     (name "oniguruma")
-    (version "6.9.0")
+    (version "6.9.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/kkos/"
@@ -349,7 +349,7 @@ as existing hashing techniques, with provably negligible risk of collisions.")
                                   "/onig-" version ".tar.gz"))
               (sha256
                (base32
-                "1jg76i2ksf3s4bz4h3g2f9ac19q31lzxs11j900w7qqc0mgb5gwi"))))
+                "04pa6dk946xbzy8wz6d2zrpjwhks6559n8zc5ngwr9a5psvzxhy7"))))
     (build-system gnu-build-system)
     (home-page "https://github.com/kkos/oniguruma")
     (synopsis "Regular expression library")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index a90cf0b0c2..f4ae7fbda3 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -268,10 +268,10 @@ required structures.")
              (uri (list (string-append "https://www.openssl.org/source/openssl-"
                                        version ".tar.gz")
                         (string-append "ftp://ftp.openssl.org/source/"
-                                       name "-" version ".tar.gz")
+                                       "openssl-" version ".tar.gz")
                         (string-append "ftp://ftp.openssl.org/source/old/"
                                        (string-trim-right version char-set:letter)
-                                       "/" name "-" version ".tar.gz")))
+                                       "/openssl-" version ".tar.gz")))
              (sha256
               (base32
                "115nisqy7kazbg6br2wrcra9nphyph1l4dgp563b9cf2rv5wyi2p"))
@@ -400,10 +400,10 @@ required structures.")
              (uri (list (string-append "https://www.openssl.org/source/openssl-"
                                        version ".tar.gz")
                         (string-append "ftp://ftp.openssl.org/source/"
-                                       name "-" version ".tar.gz")
+                                       "openssl-" version ".tar.gz")
                         (string-append "ftp://ftp.openssl.org/source/old/"
                                        (string-trim-right version char-set:letter)
-                                       "/" name "-" version ".tar.gz")))
+                                       "/openssl-" version ".tar.gz")))
               (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
               (sha256
                (base32
@@ -439,15 +439,7 @@ required structures.")
                                         "/share/openssl-" ,version)
 
                          (string-append "--prefix=" out)
-                         (string-append "-Wl,-rpath," lib)
-
-                         ;; XXX FIXME: Work around a code generation bug in GCC
-                         ;; 4.9.3 on ARM when compiled with -mfpu=neon.  See:
-                         ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66917>
-                         ,@(if (and (not (%current-target-system))
-                                    (string-prefix? "armhf" (%current-system)))
-                               '("-mfpu=vfpv3")
-                               '())))))
+                         (string-append "-Wl,-rpath," lib)))))
 
            (delete 'move-man3-pages)
            (add-after 'install 'move-extra-documentation
@@ -522,13 +514,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.30.2")
+    (version "0.31.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "1wmqxrl4w9w79jd16bmxp8g3xbrx3az4137zbip8x44zrrzmnni9"))))
+                "1gxjv09c695lj8swspa390nch117i60qkrgy135383vfk00jsp3y"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -579,7 +571,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "0vkpqwps1c8ja140kiiz2cws9hqjrbkx58wbji3qxv9cap5qfi2k"))))
+                "0wq4jgyzli684h154w26xplp0fzyks2vlrnmhafhyb0h1bw9cc8c"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index d8af54ce57..e09e6c1fbe 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -61,21 +62,19 @@ continue running in the background, then later reattached.")
         (revision "1"))
     (package
       (name "tmux-themepack")
-      (version
-       (string-append "0.0.0-" revision "." (string-take commit 7))) ;; No version tags
+      (version (git-version "0.0.0" revision commit)) ; no version tags
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url
-                       (string-append "https://github.com/jimeh/" name ".git"))
+                      (url "https://github.com/jimeh/tmux-themepack.git")
                       (commit commit)))
                 (sha256
                  (base32
                   "1d3k87mq5lca042jbap5kxskjy3kg79wjhhpnm6jacbn3anc67zl"))
-                (file-name (string-append name "-" version "-checkout"))))
+                (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
-       `(#:tests? #f ; No test suite.
+       `(#:tests? #f                    ; no test suite
          #:phases (modify-phases %standard-phases
                     (delete 'configure)
                     (delete 'build)
@@ -96,14 +95,14 @@ continue running in the background, then later reattached.")
     (name "tmuxifier")
     (version "0.13.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                    "https://github.com/jimeh/tmuxifier/archive/v"
-                    version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/jimeh/tmuxifier.git")
+                   (commit (string-append "v" version))))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "1j9fj6zg0j3sdn7svpybzsqh7876rv81zi437976kj7hxnyjkcz7"))))
+               "1b6a1cw2mnml84k5vhbcp58kvp94xlnlpp4kwdhqw4jrzfgcjfzd"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index ec86d7d241..c5346e04a2 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -160,7 +160,7 @@ networks.")
 (define-public onionshare
   (package
     (name "onionshare")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
       (origin
         (method git-fetch)
@@ -169,8 +169,7 @@ networks.")
               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "02zic4cxwrcfdg22dq9c2rzni3l18wynjxd38scc59s37vlw7w2r"))))
+         (base32 "19zrz9kh7k4pdk4lh3cm0kv02ngdqkrggwma1xdskrrmp2rjkgz7"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -182,7 +181,7 @@ networks.")
                (substitute* '("setup.py" "onionshare/common.py")
                  (("sys.prefix,") (string-append "'" out "',")))
                (substitute* "setup.py"
-                 ;; for the nautilus plugin
+                 ;; For the nautilus plugin.
                  (("/usr/share/nautilus") "share/nautilus"))
                (substitute* "install/onionshare.desktop"
                  (("/usr") out))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 0b5699a894..5eeb66adb4 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -995,14 +995,15 @@ lot easier.")
   (package
     (name "stgit")
     (version "0.18")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ctmarinas/stgit/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "19fk6vw3pgp2a98wpd4j3kyiyll5dy9bi4921wq1mrky0l53mj00"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ctmarinas/stgit.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ydgg744m671nkhg7h4q2z3b9vpbc9914rbc0wcgimqfqsxkxx2y"))))
     (build-system python-build-system)
     (inputs
      `(("git" ,git)))
@@ -1012,7 +1013,7 @@ lot easier.")
        (modify-phases %standard-phases
          (replace 'check
            (lambda _
-             ;; two tests will fail -> disable them. TODO: fix the failing tests
+             ;; Two tests will fail -> disable them. TODO: fix the failing tests
              (delete-file "t/t3300-edit.sh")
              (delete-file "t/t7504-commit-msg-hook.sh")
              (invoke "make" "test"))))))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d4cc4b53e1..e3b46dca01 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1478,7 +1478,7 @@ other site that youtube-dl supports.")
 (define-public you-get
   (package
     (name "you-get")
-    (version "0.4.1077")
+    (version "0.4.1210")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1487,7 +1487,7 @@ other site that youtube-dl supports.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rwkn3wb3r70b8cqj40qdknkg9kqbgzkvi901hbpy2a8s1b7858n"))))
+                "1plw518hzpzzcr38phlnsbpq7aqnps8iwrgr68f6d41rppl1qb25"))))
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)))             ; for multi-part and >=1080p videos
@@ -1517,7 +1517,7 @@ audio, images) from the Web.  It can use either mpv or vlc for playback.")
 (define-public youtube-viewer
   (package
     (name "youtube-viewer")
-    (version "3.5.0")
+    (version "3.5.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1526,7 +1526,7 @@ audio, images) from the Web.  It can use either mpv or vlc for playback.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1s7hv2a46cx2nbdykrijqfh8hdkf3zqn6q8sg3ajnnc5agaspyrg"))))
+                "0sx0f7jgc41a4anflw02zqk5yivydn02nn78kxkn3fik6xdmv3yd"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -1634,15 +1634,15 @@ players, like VLC or MPlayer.")
 (define-public libdvdread
   (package
     (name "libdvdread")
-    (version "6.0.0")
+    (version "6.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.videolan.org/videolan/"
-                                  name "/" version "/"
-                                  name "-" version ".tar.bz2"))
+                                  "libdvdread/" version "/"
+                                  "libdvdread-" version ".tar.bz2"))
               (sha256
                (base32
-                "0dgr23fzcjhb7ck54xkr9zmf4jcq3ph0dz3fbyvla1c6ni9ijfxk"))))
+                "1gfmh8ii3s2fw1c8vn57piwxc0smd3va4h7xgp9s8g48cc04zki8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-libdvdcss=yes")))
@@ -2039,7 +2039,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.10.0")
+    (version "6.12.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2048,16 +2048,10 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ki86yslr5ywa6sz8pjrgd9a4rn2rr4mss2zkmqi7pq8prgsm1fr"))
-              (modules '((guix build utils)))
-              (snippet '(begin
-                          ;; As of glibc 2.26, <xlocale.h> no longer is.
-                          (substitute* "src/framework/mlt_property.h"
-                            (("xlocale\\.h") "locale.h"))
-                          #t))))
+                "0pzm3mjbbdl2rkbswgyfkx552xlxh2qrwzsi2a4dicfr92rfgq6w"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no tests
+     `(#:tests? #f                      ; no tests
        #:make-flags '("CC=gcc" "CXX=g++ -std=gnu++11")
        #:configure-flags
        (list "--enable-gpl3"
@@ -2065,14 +2059,14 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
        #:phases
        (modify-phases %standard-phases
          (add-after
-          'configure 'override-LDFLAGS
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* "config.mak"
-              (("LDFLAGS\\+=")
-               (string-append "LDFLAGS+=-Wl,-rpath="
-                              (assoc-ref outputs "out")
-                              "/lib ")))
-            #t)))))
+             'configure 'override-LDFLAGS
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "config.mak"
+               (("LDFLAGS\\+=")
+                (string-append "LDFLAGS+=-Wl,-rpath="
+                               (assoc-ref outputs "out")
+                               "/lib ")))
+             #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("ffmpeg" ,ffmpeg-3.4)
@@ -2881,7 +2875,17 @@ programmers to access a standard API to open and decompress media files.")
          (add-before 'configure 'fix-ldflags
            (lambda _
              (setenv "LDFLAGS" "-pthread")
-             #t)))))
+             #t))
+         (add-after 'unpack 'fix-boost-headers
+               (lambda _
+                 (substitute*
+                     '("src/subtitles_provider_libass.cpp"
+                       "src/colour_button.cpp"
+                       "src/video_provider_dummy.cpp"
+                       "./src/video_frame.cpp")
+                   (("#include <boost/gil/gil_all.hpp>")
+                    "#include <boost/gil.hpp>"))
+                 #t)))))
     (inputs
      `(("boost" ,boost)
        ("desktop-file-utils" ,desktop-file-utils)
@@ -3026,7 +3030,7 @@ It counts more than 100 plugins.")
 (define-public motion
   (package
     (name "motion")
-    (version "4.2")
+    (version "4.2.2")
     (home-page "https://motion-project.github.io/")
     (source (origin
               (method git-fetch)
@@ -3035,7 +3039,7 @@ It counts more than 100 plugins.")
                     (commit (string-append "release-" version))))
               (sha256
                (base32
-                "0c0q6dl4v561m5y8bp0c0h4p3s52fjgcdnsrrf5ygdi288d3rfxv"))
+                "05c1gx75xy2hw49x6vkydvwxbr80kipsc3nr906k3hq8735svx6f"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
@@ -3059,7 +3063,7 @@ It counts more than 100 plugins.")
                                          (assoc-ref %outputs "out")
                                          "/etc"))
 
-       #:tests? #f))                              ;no 'check' target
+       #:tests? #f))                    ; no 'check' target
     (synopsis "Detect motion from video signals")
     (description
      "Motion is a program that monitors the video signal from one or more
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 53d028681d..5e1e9b852c 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -519,7 +519,7 @@ commit or run any Git arbitrary command.")
 (define-public vim-airline
   (package
     (name "vim-airline")
-    (version "0.9")
+    (version "0.10")
     (source
      (origin
        (method git-fetch)
@@ -529,7 +529,7 @@ commit or run any Git arbitrary command.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0hq3304rhakx7x1v7wll7gxinmfz6561bq97qpj8jrk19rhcab75"))))
+         "0k3c6p3xy6514n1n347ci4q9xjm9wwqirpdysam6f7r39crgmfhd"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -675,7 +675,7 @@ are detected, the user is notified.")))
 (define-public neovim
   (package
     (name "neovim")
-    (version "0.3.1")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
@@ -684,7 +684,7 @@ are detected, the user is notified.")))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "08mdffcw4k503bccm1plq8r7hjx4w61w5jyfdj80fr079hnkjpmw"))))
+         "03mwfhr9rq86p8lypbdfyl7c7xyn6nzv2ipd8jc33bxzvs5i0hd6"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules ((srfi srfi-26)
@@ -730,7 +730,7 @@ are detected, the user is notified.")))
      `(("pkg-config" ,pkg-config)
        ("gettext" ,gettext-minimal)
        ("gperf" ,gperf)))
-    (home-page "http://neovim.io")
+    (home-page "https://neovim.io")
     (synopsis "Fork of vim focused on extensibility and agility")
     (description "Neovim is a project that seeks to aggressively
 refactor Vim in order to:
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index f5e4540329..e0fd217730 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -571,7 +571,7 @@ virtualization library.")
 (define-public virt-manager
   (package
     (name "virt-manager")
-    (version "2.0.0")
+    (version "2.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://virt-manager.org/download/sources"
@@ -579,10 +579,10 @@ virtualization library.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1b48xbrx99mfiv80c60k3ydzkpcpbq57c8h8dl0gnffmnzbs8vzb"))))
+                "1m038kyngmxlgz91c7z8g73lb2wy0ajyah871a3g3wb5cnd0dsil"))))
     (build-system python-build-system)
     (arguments
-     `(#:use-setuptools? #f ; Uses custom distutils 'install' command.
+     `(#:use-setuptools? #f          ; uses custom distutils 'install' command
        ;; Some of the tests seem to require network access to install virtual
        ;; machines.
        #:tests? #f
@@ -602,7 +602,7 @@ virtualization library.")
              #t))
          (add-after 'unpack 'fix-default-uri
            (lambda* (#:key inputs #:allow-other-keys)
-             ;; xen is not available for now - so only patch qemu
+             ;; Xen is not available for now - so only patch qemu.
              (substitute* "virtManager/connect.py"
                (("/usr(/bin/qemu-system)" _ suffix)
                 (string-append (assoc-ref inputs "qemu") suffix)))
@@ -650,7 +650,7 @@ virtualization library.")
     (propagated-inputs
      `(("qemu" ,qemu)))
     (native-inputs
-     `(("glib" ,glib "bin")             ; glib-compile-schemas.
+     `(("glib" ,glib "bin")             ; glib-compile-schemas
        ("gtk+" ,gtk+ "bin")             ; gtk-update-icon-cache
        ("perl" ,perl)                   ; pod2man
        ("intltool" ,intltool)))
@@ -847,15 +847,17 @@ monitor/GPU.")
 (define-public runc
   (package
     (name "runc")
-    (version "1.0.0-rc5")
+    (version "1.0.0-rc6")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/opencontainers/runc/releases/"
                     "download/v" version "/runc.tar.xz"))
+              (file-name (string-append name "-" version ".tar.xz"))
+              (patches (search-patches "runc-CVE-2019-5736.patch"))
               (sha256
                (base32
-                "081avdzwnqpk368wbaihlzsypaxpj42d7699h7jgp0fks14x4103"))))
+                "1c7832dq70slkjh8qp2civ1wxhhdd2hrx84pq7db1mmqc9fdr3cc"))))
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/opencontainers/runc"
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index b84abd0929..5c0e14826b 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -144,14 +144,14 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
 (define-public luakit
   (package
     (name "luakit")
-    (version "2017.08.10")
+    (version "2.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/luakit/luakit/archive/" version
                                   ".tar.gz"))
               (sha256
                (base32
-                "0dwxhnq90whakgdg21lzcf03n2g1c7hqgliwhav8av5na5mqpn93"))
+                "09kgsm2w2xa4xwylsi0bwjvdl9k6hkyjyyrq2i3l8bvi2qrs5gzc"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (inputs
      `(("lua-5.1" ,lua-5.1)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index b386c1d469..70a839b639 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -164,17 +164,17 @@ and its related documentation.")
     (name "mod-wsgi")
     (version "4.5.22")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/GrahamDumpleton/mod_wsgi/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/GrahamDumpleton/mod_wsgi.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0n1yhmrfp8mjbsngmyjl937c6rc0069p6wdi1lknrbn1q42hzw6q"))))
+                "1q90xw2cbhka5gcd6yc69iir73x4gm7fm75qpkins2ryfl6w1q3f"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ;; TODO: Can't figure out if there are tests
+     '(#:tests? #f                 ; TODO: can't figure out if there are tests
        #:make-flags (list
                      (string-append "DESTDIR="
                                     (assoc-ref %outputs "out"))
@@ -413,16 +413,16 @@ APIs.")
     (version "1.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/gnosek/fcgiwrap/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gnosek/fcgiwrap.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07y6s4mm86cv7p1ljz94sxnqa89y9amn3vzwsnbq5hrl4vdy0zac"))))
+        (base32 "1ryw66h9aazi83amk8l7ha8k5g0c7qvk5g6jv376a1ws9xk2qw6f"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no tests included
+     `(#:tests? #f                      ; no tests included
        #:make-flags (list "CC=gcc")))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -620,17 +620,17 @@ project)
     (name "qjson")
     (version "0.9.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/flavio/qjson/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/flavio/qjson.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1m0h4rajj99hv9w4i381a8x81lxiv167lxk10ncvphpkfxs624p8"))))
+                "1f4wnxzx0qdmxzc7hqk28m0sva7z9p9xmxm6aifvjlp0ha6pmfxs"))))
     (build-system cmake-build-system)
     (arguments
-     ;; The tests require a X server
+     ;; The tests require a running X server.
      `(#:configure-flags '("-DQJSON_BUILD_TESTS=ON"
                            "-DCMAKE_CXX_FLAGS=-std=gnu++11 -fPIC")
        #:phases
@@ -747,14 +747,14 @@ current version of any major web browser.")
     (name "rapidjson")
     (version "1.1.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/miloyip/rapidjson/archive/v"
-                   version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/miloyip/rapidjson.git")
+                   (commit (string-append "v" version))))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "13nrpvw8f1wx0ga7svbzld7pgrv8l172nangpipnj7jaf0lysz5z"))
+               "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab"))
              (modules '((guix build utils)))
              (snippet
               '(begin
@@ -786,13 +786,14 @@ style API.")
     (name "libyajl")
     (version "2.1.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/lloyd/yajl/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lloyd/yajl.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nmcqpaiq4pv7dymyg3n3jsd57yhp5npxl26a1hzw3m3lmj37drz"))))
+                "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml"))))
     (build-system cmake-build-system)
     (arguments
      '(#:phases
@@ -992,13 +993,14 @@ of people.")
     (name "websockify")
     (version "0.8.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/novnc/websockify/archive/v"
-                                  version "/archive.tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/novnc/websockify.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kjq6gibsvbb6zx5gi8hgh7110x62pbwcqkwapf3k7s27w5y907h"))))
+                "0pcic8qs0gdwrfjgfaf893jyddaw97wcjm2mmvwn0xyhmy8mbmw1"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f)) ; FIXME: 2 out of 6 tests fail with "ImportError: No module
@@ -3515,15 +3517,14 @@ WWW::Mechanize that incorporates features for web application testing.")
 (define-public perl-test-www-mechanize-catalyst
   (package
     (name "perl-test-www-mechanize-catalyst")
-    (version "0.60")
+    (version "0.62")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
+       (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
                            "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
        (sha256
-        (base32
-         "0nhhfrrai3ndziz873vpa1j0vljjnib4wqafd6yyvkf58ad7v0lv"))))
+        (base32 "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
@@ -3882,14 +3883,14 @@ a pure C99 library.")
 (define-public uwsgi
   (package
     (name "uwsgi")
-    (version "2.0.17.1")
+    (version "2.0.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://projects.unbit.it/downloads/uwsgi-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0xxjb9dyivq5531birvxq2gnyxf2x5q7gz54440acra6qwsq4cfj"))))
+                "10zmk4npknigmbqcq1wmhd461dk93159px172112vyq0i19sqwj9"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (arguments
@@ -4779,13 +4780,13 @@ deployments.")
   (package
     (name "varnish")
     (home-page "https://varnish-cache.org/")
-    (version "6.0.0")
+    (version "6.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
               (sha256
                (base32
-                "1vhbdch33m6ig4ijy57zvrramhs9n7cba85wd8rizgxjjnf87cn7"))))
+                "0gf9hzzrr1lndbbqi8cwlfasi7l517cy3nbgna88i78lm247rvp0"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
@@ -4793,6 +4794,10 @@ deployments.")
                                (string-append "PTHREAD_CC="
                                               (assoc-ref %build-inputs "gcc")
                                               "/bin/gcc")
+                               ;; XXX: Disable PCRE-JIT to work around a segmentation
+                               ;; fault when using jemalloc 5.x:
+                               ;; <https://github.com/varnishcache/varnish-cache/issues/2817>
+                               "--disable-pcre-jit"
                                "--localstatedir=/var")
        #:phases
        (modify-phases %standard-phases
@@ -4827,6 +4832,7 @@ deployments.")
                #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("python-sphinx" ,python-sphinx)
        ("rst2man" ,python-docutils)))
     (inputs
      `(("jemalloc" ,jemalloc)
@@ -4952,7 +4958,7 @@ functions of Tidy.")
 (define-public hiawatha
   (package
     (name "hiawatha")
-    (version "10.8.3")
+    (version "10.9")
     (source
      (origin
        (method url-fetch)
@@ -4962,11 +4968,10 @@ functions of Tidy.")
        (snippet '(begin
                    ;; We use packaged libraries, so delete the bundled copies.
                    (for-each delete-file-recursively
-                             (list "nghttp2" "mbedtls"))
+                             (list "extra/nghttp2.tgz" "mbedtls"))
                    #t))
        (sha256
-        (base32
-         "0w7047pwijhsbvvv1qjynp7gvn0nil56w82f7ax0gabrg7ddzk6s"))))
+        (base32 "1f2j2x1ziawz8ijg3s3izqpyzpiwfyhlsvbv0szxvhvj4a0l7pbl"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests included
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 9881386583..67da5b455e 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.1")
+    (version "4.2")
     (source
      (origin
        (method git-fetch)
@@ -320,7 +320,7 @@ integrate Windows applications into your desktop.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1jp5s4k3cwiw6jy8lih25n0c7nyrddr6dm7vlyfdfrl2gkah94z0"))))
+         "1dhv6y60g64bj3kgfknbfzxfzmy686dh7svxlvi4lfis2faikxmk"))))
     (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
-                "1b8vwid8wsy1ss2q27bqkd9sdl67qqh0kmazi87vspi40nz7bxyf"))))
+                "1ysvq2jyvh7r27iwpsrlrwzj672jnrihry91bx3m3fysz3sl3ld1"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("ffmpeg" ,ffmpeg)
               ("gtk+" ,gtk+)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index fd89df0c16..554a14154c 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
@@ -15,7 +15,7 @@
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;;
@@ -190,17 +190,12 @@ commands would.")
                 "0xl56y196vxv001gvx35xwfr25zah8m3xwizp9ycdgdc0rfc4rdb"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags
-       (list "CC=gcc"
-             (string-append "PREFIX=" %output)
-             ;; This works around the following error:
-             ;; 'error: ‘for’ loop initial declarations are only allowed in C99
-             ;; or C11 mode'
-             "CFLAGS=-std=c11")
+     `(#:configure-flags
        ;; The build system tries to build in a separate directory, but that
        ;; seems to be unnecessary.
-       #:configure-flags '("--disable-builddir")
-       ;; The test suite appears to require the unpackaged Perl module AnyEvent.
+       (list "--disable-builddir")
+
+       ;; The test suite requires the unpackaged Xephyr X server.
        #:tests? #f))
     (inputs
      `(("libxcb" ,libxcb)
@@ -228,10 +223,16 @@ commands would.")
        ("libxml2" ,libxml2)
        ("docbook-xsl" ,docbook-xsl)))
     (home-page "https://i3wm.org/")
-    (synopsis "Improved tiling window manager")
-    (description "A tiling window manager, completely written
-from scratch.  i3 is primarily targeted at advanced users and
-developers.")
+    (synopsis "Tiling window manager")
+    (description "i3 is a tiling X11 window manager that dynamically manages
+tiled, stacked, and tabbed window layouts.
+
+i3 primarily targets advanced users.  Windows are managed manually and organised
+inside containers, which can be split vertically or horizontally, and optionally
+resized.
+
+i3 uses a plain-text configuration file, and can be extended and controlled from
+many programming languages.")
     (license license:bsd-3)))
 
 (define-public i3blocks
@@ -675,20 +676,27 @@ drags, snap-to-border support, and virtual desktops.")
      `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
        #:phases
        (modify-phases %standard-phases
-         (add-after
-          'install 'install-xsession
-          (lambda _
-            (let ((xsessions (string-append %output "/share/xsessions")))
-              (mkdir-p xsessions)
-              (call-with-output-file
-                  (string-append xsessions "/fluxbox.desktop")
-                (lambda (port)
-                  (format port "~
-                    [Desktop Entry]~@
-                    Name=~a~@
-                    Comment=~a~@
-                    Exec=~a/bin/startfluxbox~@
-                    Type=Application~%" ,name ,synopsis %output)))))))))
+         (add-after 'install 'install-vim-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (syntax (string-append out "/share/vim/vimfiles/syntax")))
+               (copy-recursively "3rd/vim/vim/syntax" syntax)
+               #t)))
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file
+                 (string-append xsessions "/fluxbox.desktop")
+                 (lambda (port)
+                   (format port "~
+                     [Desktop Entry]~@
+                     Name=~a~@
+                     Comment=~a~@
+                     Exec=~a/bin/startfluxbox~@
+                     Type=Application~%" ,name ,synopsis out)))
+               #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index c43f834985..178927433a 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -18,7 +18,7 @@
 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
 ;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
@@ -324,7 +324,7 @@ rasterisation.")
 (define-public libdrm
   (package
     (name "libdrm")
-    (version "2.4.96")
+    (version "2.4.97")
     (source
       (origin
         (method url-fetch)
@@ -334,7 +334,7 @@ rasterisation.")
                ".tar.bz2"))
         (sha256
          (base32
-          "14xkip83qgljjaahzq40qgl60j54q7k00la1hbf5kk5lgg7ilmhd"))
+          "08yimlp6jir1rs5ajgdx74xa5qdzcqahpdzdk0rmkmhh7vdcrl3p"))
         (patches (search-patches "libdrm-symbol-check.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -455,39 +455,24 @@ move windows, switch between desktops, etc.).")
 (define-public scrot
   (package
     (name "scrot")
-    (version "0.8")
-    (source (origin
-              (method url-fetch)
-              (uri (list (string-append
-                           "http://linuxbrit.co.uk/downloads/scrot-"
-                           version ".tar.gz")
-                         (string-append
-                           "https://fossies.org/linux/privat/old/scrot-"
-                           version ".tar.gz")))
-              (sha256
-               (base32
-                "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
+    (version "0.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/resurrecting-open-source-projects/scrot.git")
+         (commit version)))
+       (sha256
+        (base32 "1dg0pnmk09p7zlbyxv7d40vf54amrv73y976ds5p7096x6lmlndy"))))
     (build-system gnu-build-system)
-    (arguments
-     ;; By default, man and doc are put in PREFIX/{man,doc} instead of
-     ;; PREFIX/share/{man,doc}.
-     '(#:configure-flags
-       (list (string-append "--mandir="
-                            (assoc-ref %outputs "out")
-                            "/share/man"))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (string-append out "/share/doc/scrot")))
-               (mkdir-p doc)
-               (invoke "make" "install"
-                       (string-append "docsdir=" doc))))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
     (inputs
-     `(("libx11" ,libx11)
-       ("giblib" ,giblib)))
-    (home-page "http://linuxbrit.co.uk/software/")
+     `(("giblib" ,giblib)
+       ("libx11" ,libx11)))
+    (home-page "https://github.com/resurrecting-open-source-projects/scrot")
     (synopsis "Command-line screen capture utility for X Window System")
     (description
      "Scrot allows to save a screenshot of a full screen, a window or a part
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 3a4cf01c7d..b25b06cf50 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -410,7 +410,7 @@ combination with @code{XML::Parser}, PerlSAX, @code{XML::DOM},
 (define-public perl-xml-libxml
   (package
     (name "perl-xml-libxml")
-    (version "2.0132")
+    (version "2.0134")
     (source
      (origin
        (method url-fetch)
@@ -418,7 +418,7 @@ combination with @code{XML::Parser}, PerlSAX, @code{XML::DOM},
                            "XML-LibXML-" version ".tar.gz"))
        (sha256
         (base32
-         "0xnl281hb590i287fxpl947f1s4zl9dnvc4ajvsqi89w23im453j"))))
+         "1ks69xymv6zkj7hvaymjvb78ch81abri7kg4zrwxhdfsqb8a9g7h"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
@@ -1260,38 +1260,6 @@ files.  It is designed to be fast and to handle large input files.")
 (define-public python2-defusedxml
   (package-with-python2 python-defusedxml))
 
-(define-public libxls
-  (package
-    (name "libxls")
-    (version "1.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://sourceforge.net/projects/"
-                                  name "/files/" name "-"
-                                  version ".zip"))
-              (sha256
-               (base32
-                "1g8ds7wbhsa4hdcn77xc2c0l3vvz5bx2hx9ng9c9n7aii92ymfnk"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ;; Bootstrapping is required in order to fix the test driver script.
-         (replace 'bootstrap
-           (lambda _
-             (invoke "bash" "bootstrap"))))))
-    (native-inputs
-     `(("unzip" ,unzip)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)))
-    (home-page "http://libxls.sourceforge.net/")
-    (synopsis "Read Excel files")
-    (description
-     "libxls is a C library which can read Excel (xls) files since Excel 97 (the BIFF8 format).
-libxls cannot write Excel files.")
-    (license license:bsd-2)))
-
 (define-public freexl
   (package
     (name "freexl")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b8e6c4add5..231fc3254b 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -1084,7 +1084,7 @@ synchronization between the X server and direct-rendering clients.")
 (define-public libfontenc
   (package
     (name "libfontenc")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
       (origin
         (method url-fetch)
@@ -1094,14 +1094,14 @@ synchronization between the X server and direct-rendering clients.")
                ".tar.bz2"))
         (sha256
           (base32
-            "08gxmrhgw97mv0pvkfmd46zzxrn6zdw4g27073zl55gwwqq8jn3h"))))
+            "0y90170dp8wsidr1dzza0grxr1lfh30ji3b5vkjz4j6x1n0wxz1c"))))
     (build-system gnu-build-system)
     (inputs
       `(("zlib" ,zlib)
         ("xorgproto" ,xorgproto)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/lib/libfontenc")
     (synopsis "Xorg font encoding library")
     (description "Xorg font encoding library.")
     (license license:x11)))
@@ -2083,17 +2083,14 @@ legacy X clients.")
 (define-public xcalc
   (package
     (name "xcalc")
-    (version "1.0.6")
+    (version "1.0.7")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "mirror://xorg/individual/app/" name "-"
-             version
-             ".tar.gz"))
+       (uri (string-append "mirror://xorg/individual/app/"
+                           "xcalc-" version ".tar.gz"))
        (sha256
-        (base32
-         "1lg8xwj0nr8anbd77n3cs87s57sr4gmb3pxs3k22a28n6ndcvmbz"))))
+        (base32 "1xgih1iq9498m7vk22qrdsck1rb905sn395azjn4a6pmhfai401b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -2204,7 +2201,7 @@ X11 Inter-Client Communication Conventions Manual (ICCCM).")
 (define-public xcursor-themes
   (package
     (name "xcursor-themes")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
       (origin
         (method url-fetch)
@@ -2214,7 +2211,7 @@ X11 Inter-Client Communication Conventions Manual (ICCCM).")
                ".tar.bz2"))
         (sha256
           (base32
-            "0whjiq6d5z4z75zh37pji6llfcyrg6q3mg9zx5zqyncnj39q30xf"))))
+            "16a96li0s0ggg60v7f6ywxmsrmxdfizcw55ccv7sp4qjfisca7pf"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxcursor" ,libxcursor)
@@ -2331,7 +2328,7 @@ DRI (Direct Rendering Infrastructure) drivers.")
 (define-public xev
   (package
     (name "xev")
-    (version "1.2.2")
+    (version "1.2.3")
     (source
       (origin
         (method url-fetch)
@@ -2341,7 +2338,7 @@ DRI (Direct Rendering Infrastructure) drivers.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0krivhrxpq6719103r541xpi3i3a0y15f7ypc4lnrx8sdhmfcjnr"))))
+            "02ddsdx138g7szhwklpbzi0cxr34871iay3k28kdcihrz8f4zg36"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxrender" ,libxrender)
@@ -2350,7 +2347,7 @@ DRI (Direct Rendering Infrastructure) drivers.")
         ("libx11" ,libx11)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xev")
     (synopsis "Print contents of X events")
     (description
      "XEv creates a window and then asks the X server to send it X11
@@ -2464,7 +2461,7 @@ including most mice, keyboards, tablets and touchscreens.")
 (define-public xf86-input-libinput
   (package
     (name "xf86-input-libinput")
-    (version "0.28.1")
+    (version "0.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2472,7 +2469,7 @@ including most mice, keyboards, tablets and touchscreens.")
                     name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "12yr0yki94j2416bfhmkz5jpacffm27jkra89fl7h03c0y749nls"))))
+                "0818vr0yhk9j1y1wcbxzcd458vrvp06rrhi8k43bhqkb5jb4dcxq"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2920,7 +2917,7 @@ X server.")
 (define-public xf86-video-i128
   (package
     (name "xf86-video-i128")
-    (version "1.3.6")
+    (version "1.4.0")
     (source
       (origin
         (method url-fetch)
@@ -2930,8 +2927,7 @@ X server.")
                ".tar.bz2"))
         (sha256
           (base32
-           "171b8lbxr56w3isph947dnw7x87hc46v6m3mcxdcz44gk167x0pq"))
-        (patches (search-patches "xf86-video-i128-remove-mibstore.patch"))))
+           "1snhpv1igrhifcls3r498kjd14ml6x2xvih7zk9xlsd1ymmhlb4g"))))
     (build-system gnu-build-system)
     (inputs `(("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
@@ -2944,8 +2940,8 @@ X server.")
 
 
 (define-public xf86-video-intel
-  (let ((commit "0932a6b37ba6d5c9e916a1cb6ab89c3205b81a0c")
-        (revision "11"))
+  (let ((commit "33ee0c3b21ea279e08d0863fcb2e874f0974b00e")
+        (revision "12"))
     (package
       (name "xf86-video-intel")
       (version (git-version "2.99.917" revision commit))
@@ -2958,7 +2954,7 @@ X server.")
                (commit commit)))
          (sha256
           (base32
-           "10pqxp7n53ddiypd3l1i9gkbgzdpi6rz9vksbd16biq7pbijc2xf"))
+           "1ryjaj52nd2fbrjf1id5fr5vndzvv287rggbj3lzhbwzxv52r0gj"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (inputs `(("mesa" ,mesa)
@@ -3027,7 +3023,7 @@ the same level of support for generic VGA or 8514/A adapters.")
 (define-public xf86-video-mga
   (package
     (name "xf86-video-mga")
-    (version "1.6.5")
+    (version "2.0.0")
     (source
       (origin
         (method url-fetch)
@@ -3037,7 +3033,7 @@ the same level of support for generic VGA or 8514/A adapters.")
                ".tar.bz2"))
         (sha256
           (base32
-           "08ll52hlar9z446v0wwca5qkj3hxhswwm7vvcgic9xv4cf7csqxn"))))
+           "0yaxpgyyj9398nzzr5vnsfxcis76z46p9814yzj8179yl7hld296"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
               ("xorgproto" ,xorgproto)
@@ -3052,7 +3048,7 @@ the same level of support for generic VGA or 8514/A adapters.")
 (define-public xf86-video-neomagic
   (package
     (name "xf86-video-neomagic")
-    (version "1.2.9")
+    (version "1.3.0")
     (source
       (origin
         (method url-fetch)
@@ -3062,7 +3058,7 @@ the same level of support for generic VGA or 8514/A adapters.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1whb2kgyqaxdjim27ya404acz50izgmafwnb6y9m89q5n6b97y3j"))))
+            "0r4h673kw8fl7afc30anwbjlbhp82mg15fvaxf470xg7z983k0wk"))))
     (build-system gnu-build-system)
     (inputs `(("xorgproto" ,xorgproto)
               ("xorg-server" ,xorg-server)))
@@ -3131,7 +3127,7 @@ supported, and the RENDER extension is not accelerated by this driver.")
 (define-public xf86-video-nouveau
   (package
     (name "xf86-video-nouveau")
-    (version "1.0.15")
+    (version "1.0.16")
     (source
      (origin
        (method url-fetch)
@@ -3141,7 +3137,7 @@ supported, and the RENDER extension is not accelerated by this driver.")
              ".tar.bz2"))
        (sha256
         (base32
-         "0k0xah72ryjwak4dc4crszxrlkmi9x1s7p3sd4la642n77yi1pmf"))))
+         "01mz8gnq7j6bvrqb2ljm3d1wpjhi9p2z2w8zbkdrqmqmcj060h1h"))))
     (build-system gnu-build-system)
     (inputs `(("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
@@ -3367,7 +3363,7 @@ This driver supports SiS chipsets of 300/315/330/340 series.")
 (define-public xf86-video-tdfx
   (package
     (name "xf86-video-tdfx")
-    (version "1.4.7")
+    (version "1.5.0")
     (source
       (origin
         (method url-fetch)
@@ -3377,7 +3373,7 @@ This driver supports SiS chipsets of 300/315/330/340 series.")
                ".tar.bz2"))
         (sha256
           (base32
-           "0hia45z4jc472fxp00803nznizcn4h1ybp63jcsb4lmd9vhqxx2c"))))
+           "0qc5wzwf1n65si9rc37bh224pzahh7gp67vfimbxs0b9yvhq0i9g"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
               ("xorgproto" ,xorgproto)
@@ -3664,7 +3660,7 @@ monitor via the X video mode extension.")
 (define-public xhost
   (package
     (name "xhost")
-    (version "1.0.7")
+    (version "1.0.8")
     (source
       (origin
         (method url-fetch)
@@ -3674,7 +3670,7 @@ monitor via the X video mode extension.")
                ".tar.bz2"))
         (sha256
           (base32
-            "16n26xw6l01zq31d4qvsaz50misvizhn7iihzdn5f7s72pp1krlk"))))
+            "15n3mnd4i5kh4z32qv11580qjgvnng0wry2y753ljrqkkrbkrp52"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxmu" ,libxmu)
@@ -3682,7 +3678,7 @@ monitor via the X video mode extension.")
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xhost")
     (synopsis "Xorg server access control utility")
     (description
      "XHost is used to manage the list of host names or user names
@@ -3868,7 +3864,7 @@ extension to the X11 protocol.  It includes:
 (define-public xkeyboard-config
   (package
     (name "xkeyboard-config")
-    (version "2.24")
+    (version "2.26")
     (source
       (origin
         (method url-fetch)
@@ -3878,7 +3874,7 @@ extension to the X11 protocol.  It includes:
               ".tar.bz2"))
         (sha256
           (base32
-            "1my4786pd7iv5x392r9skj3qclmbd26nqzvh2fllwkkbyj08bcci"))))
+            "13h3381pfp4pv32189zkfsj2x0alr91xj6dqii76rl0c8v3ihdrr"))))
     (build-system gnu-build-system)
     (inputs
       `(("gettext" ,gettext-minimal)
@@ -3929,7 +3925,7 @@ programs that have displayed undesired windows on a user's screen.")
 (define-public xlsatoms
   (package
     (name "xlsatoms")
-    (version "1.1.2")
+    (version "1.1.3")
     (source
       (origin
         (method url-fetch)
@@ -3939,13 +3935,13 @@ programs that have displayed undesired windows on a user's screen.")
                ".tar.bz2"))
         (sha256
           (base32
-            "196yjik910xsr7dwy8daa0amr0r22ynfs360z0ndp9mx7mydrra7"))))
+            "10m3a046jvaw5ywx4y65kl84lsxqan70gww1g1r7cf96ijaqz1jp"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxcb" ,libxcb)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xlsatoms")
     (synopsis "List interned X server atoms")
     (description
      "XLsAtoms is used to list the interned atoms defined on X server.")
@@ -4077,7 +4073,7 @@ containing one glyph per cell.")
 (define-public xmodmap
   (package
     (name "xmodmap")
-    (version "1.0.9")
+    (version "1.0.10")
     (source
       (origin
         (method url-fetch)
@@ -4087,15 +4083,14 @@ containing one glyph per cell.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0y649an3jqfq9klkp9y5gj20xb78fw6g193f5mnzpl0hbz6fbc5p"))
-        (patches (search-patches "xmodmap-asprintf.patch"))))
+            "0z28331i2pm16x671fa9qwsfqdmr6a43bzwmp0dm17a3sx0hjgs7"))))
     (build-system gnu-build-system)
     (inputs
       `(("xorgproto" ,xorgproto)
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xmodmap")
     (synopsis "Modify keymaps and button mappings on X server")
     (description
      "Xmodmap is used to display and edit the keyboard modifier map and
@@ -4227,7 +4222,7 @@ and Reflect (RandR) extension.")
 (define-public xrdb
   (package
     (name "xrdb")
-    (version "1.1.1")
+    (version "1.2.0")
     (source
       (origin
         (method url-fetch)
@@ -4237,14 +4232,14 @@ and Reflect (RandR) extension.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1dqp486nd5sagbg572kl0k839nwvpqnb7jvppyb7jj5vrpkss8rd"))))
+            "0ik9gh6363c47pr0dp7q22nfs8vmavjg2v4bsr0604ppl77nafpj"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxmu" ,libxmu)
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xrdb")
     (synopsis "X server resource database utility")
     (description
      "XRDB is used to get or set the contents of the RESOURCE_MANAGER
@@ -4370,7 +4365,7 @@ libICE, the X font server, and related components.")
 (define-public xvinfo
   (package
     (name "xvinfo")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
       (origin
         (method url-fetch)
@@ -4380,7 +4375,7 @@ libICE, the X font server, and related components.")
                ".tar.bz2"))
         (sha256
           (base32
-            "1sz5wqhxd1fqsfi1w5advdlwzkizf2fgl12hdpk66f7mv9l8pflz"))))
+            "0gz7fvxavqlrqynpfbrm2nc9yx8h0ksnbnv34fj7n1q6cq6j4lq3"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxext" ,libxext)
@@ -4388,7 +4383,7 @@ libICE, the X font server, and related components.")
         ("libx11" ,libx11)))
     (native-inputs
       `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/wiki/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xvinfo")
     (synopsis "Print out X-Video extension adaptor information")
     (description
      "XVInfo is used to print out the capabilities of any video adaptors
@@ -5162,8 +5157,8 @@ over Xlib, including:
         ("xcb-util-renderutil" ,xcb-util-renderutil)
         ("xcb-util-wm" ,xcb-util-wm)))
     (native-inputs
-       `(("python" ,python-minimal-wrapper)
-         ("pkg-config" ,pkg-config)))
+     `(("python" ,python-wrapper)
+       ("pkg-config" ,pkg-config)))
     (arguments
      `(#:parallel-tests? #f
        #:configure-flags
@@ -5740,14 +5735,14 @@ Intrinsics (Xt) Library.")
 (define-public xclock
   (package
     (name "xclock")
-    (version "1.0.7")
+    (version "1.0.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.x.org/releases/individual/app/"
                            name "-" version ".tar.bz2"))
        (sha256
-        (base32 "1l3xv4bsca6bwxx73jyjz0blav86i7vwffkhdb1ac81y9slyrki3"))))
+        (base32 "0m92zhamh15my9f2rqa14q41d6k2cn468azm3g7g3w9n7942024k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -5762,7 +5757,7 @@ Intrinsics (Xt) Library.")
        ("libxkbfile" ,libxkbfile)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "https://www.x.org/")
+    (home-page "https://gitlab.freedesktop.org/xorg/app/xclock")
     (synopsis "Analog / digital clock for X")
     (description "The xclock program displays the time in analog or digital
 form.")
@@ -6378,16 +6373,16 @@ output.")
 (define-public console-setup
   (package
     (name "console-setup")
-    (version "1.188")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://salsa.debian.org/installer-team/console-setup.git")
-                    (commit version)))
-              (sha256
-               (base32
-                "1741mg2wc5wa63clkijmv04zd6jxhc7c6aq7mkhqw1r4dhfhih19"))
-              (file-name (git-file-name name version))))
+    (version "1.189")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://salsa.debian.org/installer-team/console-setup.git")
+             (commit version)))
+       (sha256
+        (base32 "09rfnnhwjm98im711v6jrgl49iy5n1b26x12zzk5rw6g1667mz86"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index fbeabf1162..ce63969dc8 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2019 Christopher Baines <mail@cbaines.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,6 +40,7 @@
   #:use-module (gnu system pam)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages xfce)
@@ -49,6 +51,7 @@
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages mate)
   #:use-module (gnu packages enlightenment)
+  #:use-module (guix deprecation)
   #:use-module (guix records)
   #:use-module (guix packages)
   #:use-module (guix store)
@@ -56,8 +59,22 @@
   #:use-module (guix gexp)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
-  #:export (upower-configuration
+  #:export (<upower-configuration>
+            upower-configuration
             upower-configuration?
+            upower-configuration-upower
+            upower-configuration-watts-up-pro?
+            upower-configuration-poll-batteries?
+            upower-configuration-ignore-lid?
+            upower-configuration-use-percentage-for-policy?
+            upower-configuration-percentage-low
+            upower-configuration-percentage-critical
+            upower-configuration-percentage-action
+            upower-configuration-time-low
+            upower-configuration-time-critical
+            upower-configuration-time-action
+            upower-configuration-critical-power-action
+
             upower-service
             upower-service-type
 
@@ -173,23 +190,33 @@ is set to @var{value} when the bus daemon launches it."
 ;;; Upower D-Bus service.
 ;;;
 
-;; TODO: Export.
 (define-record-type* <upower-configuration>
   upower-configuration make-upower-configuration
   upower-configuration?
-  (upower        upower-configuration-upower
-                 (default upower))
-  (watts-up-pro? upower-configuration-watts-up-pro?)
-  (poll-batteries? upower-configuration-poll-batteries?)
-  (ignore-lid? upower-configuration-ignore-lid?)
-  (use-percentage-for-policy? upower-configuration-use-percentage-for-policy?)
-  (percentage-low upower-configuration-percentage-low)
-  (percentage-critical upower-configuration-percentage-critical)
-  (percentage-action upower-configuration-percentage-action)
-  (time-low upower-configuration-time-low)
-  (time-critical upower-configuration-time-critical)
-  (time-action upower-configuration-time-action)
-  (critical-power-action upower-configuration-critical-power-action))
+  (upower                     upower-configuration-upower
+                              (default upower))
+  (watts-up-pro?              upower-configuration-watts-up-pro?
+                              (default #f))
+  (poll-batteries?            upower-configuration-poll-batteries?
+                              (default #t))
+  (ignore-lid?                upower-configuration-ignore-lid?
+                              (default #f))
+  (use-percentage-for-policy? upower-configuration-use-percentage-for-policy?
+                              (default #f))
+  (percentage-low             upower-configuration-percentage-low
+                              (default 10))
+  (percentage-critical        upower-configuration-percentage-critical
+                              (default 3))
+  (percentage-action          upower-configuration-percentage-action
+                              (default 2))
+  (time-low                   upower-configuration-time-low
+                              (default 1200))
+  (time-critical              upower-configuration-time-critical
+                              (default 300))
+  (time-action                upower-configuration-time-action
+                              (default 120))
+  (critical-power-action      upower-configuration-critical-power-action
+                              (default 'hybrid-sleep)))
 
 (define* upower-configuration-file
   ;; Return an upower-daemon configuration file.
@@ -247,6 +274,11 @@ is set to @var{value} when the bus daemon launches it."
 (define upower-service-type
   (let ((upower-package (compose list upower-configuration-upower)))
     (service-type (name 'upower)
+                  (description
+                   "Run @command{upowerd}}, a system-wide monitor for power
+consumption and battery levels, with the given configuration settings.  It
+implements the @code{org.freedesktop.UPower} D-Bus interface, and is notably
+used by GNOME.")
                   (extensions
                    (list (service-extension dbus-root-service-type
                                             upower-dbus-service)
@@ -259,20 +291,21 @@ is set to @var{value} when the bus daemon launches it."
 
                          ;; Make the 'upower' command visible.
                          (service-extension profile-service-type
-                                            upower-package))))))
-
-(define* (upower-service #:key (upower upower)
-                         (watts-up-pro? #f)
-                         (poll-batteries? #t)
-                         (ignore-lid? #f)
-                         (use-percentage-for-policy? #f)
-                         (percentage-low 10)
-                         (percentage-critical 3)
-                         (percentage-action 2)
-                         (time-low 1200)
-                         (time-critical 300)
-                         (time-action 120)
-                         (critical-power-action 'hybrid-sleep))
+                                            upower-package)))
+                  (default-value (upower-configuration)))))
+
+(define-deprecated (upower-service #:key (upower upower)
+                                   (watts-up-pro? #f)
+                                   (poll-batteries? #t)
+                                   (ignore-lid? #f)
+                                   (use-percentage-for-policy? #f)
+                                   (percentage-low 10)
+                                   (percentage-critical 3)
+                                   (percentage-action 2)
+                                   (time-low 1200)
+                                   (time-critical 300)
+                                   (time-action 120)
+                                   (critical-power-action 'hybrid-sleep))
   "Return a service that runs @uref{http://upower.freedesktop.org/,
 @command{upowerd}}, a system-wide monitor for power consumption and battery
 levels, with the given configuration settings.  It implements the
@@ -802,6 +835,21 @@ accountsservice web site} for more information."
 
 
 ;;;
+;;; cups-pk-helper service.
+;;;
+
+(define cups-pk-helper-service-type
+  (service-type
+   (name 'cups-pk-helper)
+   (description
+    "PolicyKit helper to configure CUPS with fine-grained privileges.")
+   (extensions
+    (list (service-extension dbus-root-service-type list)
+          (service-extension polkit-service-type list)))
+   (default-value cups-pk-helper)))
+
+
+;;;
 ;;; GNOME desktop service.
 ;;;
 
@@ -988,8 +1036,9 @@ as expected.")))
          (service wpa-supplicant-service-type)    ;needed by NetworkManager
          (service avahi-service-type)
          (udisks-service)
-         (upower-service)
+         (service upower-service-type)
          (accountsservice-service)
+         (service cups-pk-helper-service-type)
          (colord-service)
          (geoclue-service)
          (service polkit-service-type)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 1efb275794..f2a3c28c90 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -2,7 +2,8 @@
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,7 +29,9 @@
   #:use-module ((gnu packages base) #:select (canonical-package))
   #:use-module (gnu packages guile)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages display-managers)
   #:use-module (gnu packages gnustep)
   #:use-module (gnu packages gnome)
@@ -290,7 +293,8 @@ in place of @code{/usr/bin/X}."
                              (configuration-file
                               (xorg-configuration-file #:modules modules
                                                        #:fonts fonts))
-                             (xorg-server xorg-server))
+                             (xorg-server xorg-server)
+                             (xserver-arguments '("-nolisten" "tcp")))
   "Return a @code{startx} script in which @var{modules}, a list of X module
 packages, and @var{fonts}, a list of X font directories, are available.  See
 @code{xorg-wrapper} for more details on the arguments.  The result should be
@@ -303,8 +307,8 @@ used in place of @code{startx}."
   (define exp
     ;; Write a small wrapper around the X server.
     #~(apply execl #$X #$X ;; Second #$X is for argv[0].
-             "-logverbose" "-verbose" "-nolisten" "tcp" "-terminate"
-             (cdr (command-line))))
+             "-logverbose" "-verbose" "-terminate" #$@xserver-arguments
+              (cdr (command-line))))
 
   (program-file "startx" exp))
 
@@ -623,48 +627,59 @@ makes the good ol' XlockMore usable."
          (home-directory "/var/lib/gdm")
          (shell (file-append shadow "/sbin/nologin")))))
 
+(define dbus-daemon-wrapper
+  (program-file "gdm-dbus-wrapper"
+                #~(begin
+                    (setenv "XDG_CONFIG_DIRS"
+                            "/run/current-system/profile/etc/xdg")
+                    (setenv "XDG_DATA_DIRS"
+                            "/run/current-system/profile/share")
+                    (apply execl (string-append #$dbus "/bin/dbus-daemon")
+                           (program-arguments)))))
+
 (define-record-type* <gdm-configuration>
   gdm-configuration make-gdm-configuration
   gdm-configuration?
   (gdm gdm-configuration-gdm (default gdm))
   (allow-empty-passwords? gdm-configuration-allow-empty-passwords? (default #t))
   (auto-login? gdm-configuration-auto-login? (default #f))
+  (dbus-daemon gdm-configuration-dbus-daemon (default dbus-daemon-wrapper))
   (default-user gdm-configuration-default-user (default #f))
+  (gnome-shell-assets gdm-configuration-gnome-shell-assets
+                      (default (list adwaita-icon-theme font-cantarell)))
   (x-server gdm-configuration-x-server
-            (default (xorg-wrapper))))
-
-(define (gdm-etc-service config)
-  (define gdm-configuration-file
-    (mixed-text-file "gdm-custom.conf"
-                     "[daemon]\n"
-                     "#User=gdm\n"
-                     "#Group=gdm\n"
-                     (if (gdm-configuration-auto-login? config)
-                         (string-append
-                          "AutomaticLoginEnable=true\n"
-                          "AutomaticLogin="
-                          (or (gdm-configuration-default-user config)
-                              (error "missing default user for auto-login"))
-                          "\n")
-                         (string-append
-                          "AutomaticLoginEnable=false\n"
-                          "#AutomaticLogin=\n"))
-                     "#TimedLoginEnable=false\n"
-                     "#TimedLogin=\n"
-                     "#TimedLoginDelay=0\n"
-                     "#InitialSetupEnable=true\n"
-                     ;; Enable me once X is working.
-                     "WaylandEnable=false\n"
-                     "\n"
-                     "[debug]\n"
-                     "#Enable=true\n"
-                     "\n"
-                     "[security]\n"
-                     "#DisallowTCP=true\n"
-                     "#AllowRemoteAutoLogin=false\n"))
-  `(("gdm" ,(file-union
-             "gdm"
-             `(("custom.conf" ,gdm-configuration-file))))))
+            (default (xorg-wrapper)))
+  (x-session gdm-configuration-x-session
+             (default (xinitrc))))
+
+(define (gdm-configuration-file config)
+  (mixed-text-file "gdm-custom.conf"
+                   "[daemon]\n"
+                   "#User=gdm\n"
+                   "#Group=gdm\n"
+                   (if (gdm-configuration-auto-login? config)
+                       (string-append
+                        "AutomaticLoginEnable=true\n"
+                        "AutomaticLogin="
+                        (or (gdm-configuration-default-user config)
+                            (error "missing default user for auto-login"))
+                        "\n")
+                       (string-append
+                        "AutomaticLoginEnable=false\n"
+                        "#AutomaticLogin=\n"))
+                   "#TimedLoginEnable=false\n"
+                   "#TimedLogin=\n"
+                   "#TimedLoginDelay=0\n"
+                   "#InitialSetupEnable=true\n"
+                   ;; Enable me once X is working.
+                   "WaylandEnable=false\n"
+                   "\n"
+                   "[debug]\n"
+                   "#Enable=true\n"
+                   "\n"
+                   "[security]\n"
+                   "#DisallowTCP=true\n"
+                   "#AllowRemoteAutoLogin=false\n"))
 
 (define (gdm-pam-service config)
   "Return a PAM service for @command{gdm}."
@@ -698,15 +713,27 @@ makes the good ol' XlockMore usable."
                                           "/bin/gdm"))
                      #:environment-variables
                      (list (string-append
+                            "GDM_CUSTOM_CONF="
+                            #$(gdm-configuration-file config))
+                           (string-append
+                            "GDM_DBUS_DAEMON="
+                            #$(gdm-configuration-dbus-daemon config))
+                           (string-append
                             "GDM_X_SERVER="
                             #$(gdm-configuration-x-server config))
-                           ;; XXX: GDM requires access to a handful of
-                           ;; programs and components from Gnome (gnome-shell,
-                           ;; dbus, and gnome-session among others). The
-                           ;; following variables only work provided Gnome is
-                           ;; installed.
-                           "XDG_DATA_DIRS=/run/current-system/profile/share"
-                           "PATH=/run/current-system/profile/bin"))))
+                           (string-append
+                            "GDM_X_SESSION="
+                            #$(gdm-configuration-x-session config))
+                           (string-append
+                            "XDG_DATA_DIRS="
+                            ((lambda (ls) (string-join ls ":"))
+                             (map (lambda (path)
+                                    (string-append path "/share"))
+                                  ;; XXX: Remove gnome-shell below when GDM
+                                  ;; can depend on GNOME Shell directly.
+                                  (cons #$gnome-shell
+                                        '#$(gdm-configuration-gnome-shell-assets
+                                            config)))))))))
          (stop #~(make-kill-destructor))
          (respawn? #t))))
 
@@ -719,8 +746,8 @@ makes the good ol' XlockMore usable."
                                           (const %gdm-accounts))
                        (service-extension pam-root-service-type
                                           gdm-pam-service)
-                       (service-extension etc-service-type
-                                          gdm-etc-service)
+                       (service-extension profile-service-type
+                                          gdm-configuration-gnome-shell-assets)
                        (service-extension dbus-root-service-type
                                           (compose list
                                                    gdm-configuration-gdm))))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 088b582bcd..e09c687a04 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -134,7 +134,9 @@
   ;; Guile-Gcrypt, Guile-SQLite3, and their propagated inputs.
   (append-map (lambda (package)
                 (cons package
-                      (package-transitive-propagated-inputs package)))
+                      (match (package-transitive-propagated-inputs package)
+                        (((labels packages) ...)
+                         packages))))
               (list guile-gcrypt guile-sqlite3)))
 
 (define* (expression->derivation-in-linux-vm name exp