summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi13
-rw-r--r--gnu/build/file-systems.scm10
-rw-r--r--gnu/local.mk8
-rw-r--r--gnu/packages/code.scm4
-rw-r--r--gnu/packages/crypto.scm4
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/emacs.scm4
-rw-r--r--gnu/packages/fonts.scm40
-rw-r--r--gnu/packages/freedesktop.scm41
-rw-r--r--gnu/packages/game-development.scm8
-rw-r--r--gnu/packages/gdb.scm4
-rw-r--r--gnu/packages/geo.scm4
-rw-r--r--gnu/packages/gl.scm4
-rw-r--r--gnu/packages/glib.scm34
-rw-r--r--gnu/packages/gnome.scm333
-rw-r--r--gnu/packages/gnupg.scm29
-rw-r--r--gnu/packages/graphics.scm43
-rw-r--r--gnu/packages/gtk.scm42
-rw-r--r--gnu/packages/image-viewers.scm4
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/irc.scm4
-rw-r--r--gnu/packages/javascript.scm85
-rw-r--r--gnu/packages/linux.scm21
-rw-r--r--gnu/packages/mail.scm4
-rw-r--r--gnu/packages/mate.scm4
-rw-r--r--gnu/packages/maths.scm4
-rw-r--r--gnu/packages/mtools.scm4
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/ocaml.scm246
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/patches/gnome-shell-CVE-2017-8288.patch54
-rw-r--r--gnu/packages/patches/libgdata-fix-tests.patch325
-rw-r--r--gnu/packages/patches/libgdata-glib-duplicate-tests.patch16
-rw-r--r--gnu/packages/patches/libssh-hostname-parser-bug.patch31
-rw-r--r--gnu/packages/patches/openscenegraph-ffmpeg3.patch156
-rw-r--r--gnu/packages/patches/perl-file-path-CVE-2017-6512.patch173
-rw-r--r--gnu/packages/patches/xf86-input-wacom-xorg-abi-25.patch46
-rw-r--r--gnu/packages/perl.scm7
-rw-r--r--gnu/packages/ruby.scm93
-rw-r--r--gnu/packages/ssh.scm7
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm20
-rw-r--r--gnu/packages/web.scm30
-rw-r--r--gnu/packages/wm.scm4
-rw-r--r--gnu/packages/xdisorg.scm10
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm10
-rw-r--r--guix/import/cpan.scm4
-rw-r--r--guix/ssh.scm76
-rw-r--r--tests/cpan.scm4
50 files changed, 1683 insertions, 412 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index e8fba43afe..f69c84dea6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5329,7 +5329,7 @@ a container similar to the one the build daemon creates:
 $ guix build -K foo
 @dots{}
 $ cd /tmp/guix-build-foo.drv-0
-$ guix environment -C foo --ad-hoc strace gdb
+$ guix environment --no-grafts -C foo --ad-hoc strace gdb
 [env]# source ./environment-variables
 [env]# cd foo-1.2
 @end example
@@ -5337,7 +5337,10 @@ $ guix environment -C foo --ad-hoc strace gdb
 Here, @command{guix environment -C} creates a container and spawns a new
 shell in it (@pxref{Invoking guix environment}).  The @command{--ad-hoc
 strace gdb} part adds the @command{strace} and @command{gdb} commands to
-the container, which would may find handy while debugging.
+the container, which would may find handy while debugging.  The
+@option{--no-grafts} option makes sure we get the exact same
+environment, with ungrafted packages (@pxref{Security Updates}, for more
+info on grafts).
 
 To get closer to a container like that used by the build daemon, we can
 remove @file{/bin/sh}:
@@ -9260,6 +9263,12 @@ Whether to use substitutes.
 @item @code{substitute-urls} (default: @var{%default-substitute-urls})
 The list of URLs where to look for substitutes by default.
 
+@item @code{max-silent-time} (default: @code{0})
+@itemx @code{timeout} (default: @code{0})
+The number of seconds of silence and the number of seconds of activity,
+respectively, after which a build process times out.  A value of zero
+disables the timeout.
+
 @item @code{extra-options} (default: @code{'()})
 List of extra command-line options for @command{guix-daemon}.
 
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 10be0dc83c..7737de3d03 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -268,12 +268,18 @@ as a bytevector, or #f if DEVICE does not contain an iso9660 file system."
 
 (define (iso9660-superblock-uuid sblock)
   "Return the modification time of an iso9660 primary volume descriptor
-SBLOCK as a bytevector."
+SBLOCK as a bytevector.  If that's not set, returns the creation time."
   ;; Drops GMT offset for compatibility with Grub, blkid and /dev/disk/by-uuid.
   ;; Compare Grub: "2014-12-02-19-30-23-00".
   ;; Compare blkid result: "2014-12-02-19-30-23-00".
   ;; Compare /dev/disk/by-uuid entry: "2014-12-02-19-30-23-00".
-  (sub-bytevector sblock 830 16))
+  (let* ((creation-time (sub-bytevector sblock 813 17))
+         (modification-time (sub-bytevector sblock 830 17))
+         (unset-time (make-bytevector 17 0))
+         (time (if (bytevector=? unset-time modification-time)
+                   creation-time
+                   modification-time)))
+    (sub-bytevector time 0 16))) ; strips GMT offset.
 
 (define (iso9660-uuid->string uuid)
   "Given an UUID bytevector, return its timestamp string."
diff --git a/gnu/local.mk b/gnu/local.mk
index 015267f09d..74630eb9fa 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -208,6 +208,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/irc.scm  			\
   %D%/packages/iso-codes.scm			\
   %D%/packages/java.scm				\
+  %D%/packages/javascript.scm			\
   %D%/packages/jemalloc.scm			\
   %D%/packages/jrnl.scm				\
   %D%/packages/julia.scm			\
@@ -631,7 +632,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/glog-gcc-5-demangling.patch		\
   %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
   %D%/packages/patches/gmp-faulty-test.patch			\
-  %D%/packages/patches/gnome-shell-CVE-2017-8288.patch		\
   %D%/packages/patches/gnome-tweak-tool-search-paths.patch	\
   %D%/packages/patches/gnucash-price-quotes-perl.patch		\
   %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
@@ -724,6 +724,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/libevent-2.1-skip-failing-test.patch	\
   %D%/packages/patches/libextractor-ffmpeg-3.patch		\
   %D%/packages/patches/libgit2-0.25.1-mtime-0.patch		\
+  %D%/packages/patches/libgdata-fix-tests.patch			\
+  %D%/packages/patches/libgdata-glib-duplicate-tests.patch	\
   %D%/packages/patches/libgit2-use-after-free.patch		\
   %D%/packages/patches/libffi-3.2.1-complex-alpha.patch		\
   %D%/packages/patches/libjxr-fix-function-signature.patch	\
@@ -738,6 +740,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libsndfile-armhf-type-checks.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8362.patch		\
+  %D%/packages/patches/libssh-hostname-parser-bug.patch		\
   %D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch	\
   %D%/packages/patches/libtar-CVE-2013-4420.patch 		\
   %D%/packages/patches/libtheora-config-guess.patch		\
@@ -840,6 +843,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ocaml-findlib-make-install.patch	\
   %D%/packages/patches/omake-fix-non-determinism.patch	\
   %D%/packages/patches/ola-readdir-r.patch			\
+  %D%/packages/patches/openscenegraph-ffmpeg3.patch             \
   %D%/packages/patches/openexr-missing-samples.patch		\
   %D%/packages/patches/openjpeg-CVE-2016-9850-CVE-2016-9851.patch		\
   %D%/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch		\
@@ -859,6 +863,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/pcre-CVE-2017-7186.patch			\
   %D%/packages/patches/pcre2-CVE-2017-7186.patch		\
   %D%/packages/patches/pcre2-CVE-2017-8786.patch		\
+  %D%/packages/patches/perl-file-path-CVE-2017-6512.patch	\
   %D%/packages/patches/perl-autosplit-default-time.patch	\
   %D%/packages/patches/perl-deterministic-ordering.patch	\
   %D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
@@ -1041,7 +1046,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/xcb-proto-python3-whitespace.patch	\
   %D%/packages/patches/wxwidgets-fix-windowGTK.patch		\
   %D%/packages/patches/xdotool-fix-makefile.patch               \
-  %D%/packages/patches/xf86-input-wacom-xorg-abi-25.patch	\
   %D%/packages/patches/xf86-video-ark-remove-mibstore.patch	\
   %D%/packages/patches/xf86-video-ast-remove-mibstore.patch	\
   %D%/packages/patches/xf86-video-geode-glibc-2.20.patch	\
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index d57fc004c7..1576c23b35 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -93,14 +93,14 @@ highlighting your own code that seemed comprehensible when you wrote it.")
 (define-public global                             ; a global variable
   (package
     (name "global")
-    (version "6.5.6")
+    (version "6.5.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/global/global-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "018m536k5y6lks1a6gqn3bsp7r8zk017znqj9kva1nm8d7x9lbqj"))))
+               "0cnd7a7d1pl46yk15q6mnr9i9w3xi8pxgchw4ia9njgr4jjqzh6r"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("libltdl" ,libltdl)
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 2e55aa04af..f8631a6dbb 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -80,7 +80,7 @@ communication, encryption, decryption, signatures, etc.")
 (define-public signify
   (package
     (name "signify")
-    (version "20")
+    (version "21")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/aperezdc/signify/"
@@ -88,7 +88,7 @@ communication, encryption, decryption, signatures, etc.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "08my2kbbjdal9z6c1fykgr9zpixh694fw42lyiaci01a7i50zp4r"))))
+                "0jd26kxwmmar3bylpx9x5dpqxzs17ky5dvwx8pdgcg95n4lyk223"))))
     (build-system gnu-build-system)
     ;; TODO Build with libwaive (described in README.md), to implement something
     ;; like OpenBSD's pledge().
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 7937c67781..7f1d18f2b0 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -321,14 +321,14 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "2.4.3")
+    (version "2.4.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://secure.nic.cz/files/knot-dns/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kvhibnnk77nqi9gdw2zbnp0dydfcy6zy96qv0f3a7wwnay5h0pr"))
+                "0g2n5r2n03bqz322xlwdw4bqhj8l4n8q0hzrqngi4rgmk4rp97ly"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 81a74d1fb5..987aaf4226 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -3618,14 +3618,14 @@ passive voice.")
 (define-public emacs-org
   (package
     (name "emacs-org")
-    (version "20170515")
+    (version "20170606")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://elpa.gnu.org/packages/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "0lfapcxil69x1a63cszgq72lqks1z3gpyxw7vcllqlgi7n7a4y6f"))))
+                "0m2gln3wz9v3aflyxxy2317808yy05rrzrjx35spw2d90d10hmkz"))))
     (build-system emacs-build-system)
     (home-page "http://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 73d76a461f..59e60dc292 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1227,3 +1228,42 @@ Ensuring readability and clarity at both large and small sizes, these icons
 have been optimized for beautiful display on all common platforms and display
 resolutions.")
    (license license:asl2.0)))
+
+(define-public font-mathjax
+  (package
+    (name "font-mathjax")
+    (version "2.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/mathjax/MathJax/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0sbib5lk0jrvbq6s72ag6ss3wjlz5wnk07ddxij1kp96yg3c1d1b"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 match))
+         (set-path-environment-variable
+          "PATH" '("bin") (map (match-lambda
+                                 ((_ . input)
+                                  input))
+                               %build-inputs))
+         (let ((install-directory (string-append %output "/share/fonts/mathjax")))
+           (mkdir-p install-directory)
+           (zero? (system* "tar" "-C" install-directory "-xvf"
+                           (assoc-ref %build-inputs "source")
+                           "MathJax-2.7.1/fonts" "--strip" "2"))))))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("tar" ,tar)))
+    (home-page "https://www.mathjax.org/")
+    (synopsis "Fonts for MathJax")
+    (description "This package contains the fonts required for MathJax.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 85a6c8b26d..ef07f2d64b 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages acl)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
@@ -267,6 +268,46 @@ the org.freedesktop.login1 interface over the system bus, allowing other parts
 of a the system to know what users are logged in, and where.")
     (license license:lgpl2.1+)))
 
+(define-public packagekit
+  (package
+    (name "packagekit")
+    (version "1.1.5")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "https://www.freedesktop.org/software/"
+                   "PackageKit/releases/"
+                   "PackageKit-" version ".tar.xz"))
+             (sha256
+              (base32
+               "035pqxgkyki813hyw2frrbpfllq113zfk5qcp9wvsq5lsp74ix2h"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:make-flags (list (string-append "BASH_COMPLETIONS_DIR="
+                                         %output "/etc/bash_completion.d"))
+       #:configure-flags
+       '("--disable-systemd")))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("glib:bin" ,glib "bin")))
+    (inputs
+     `(("glib" ,glib)
+       ("bash-completion", bash-completion)
+       ("polkit" ,polkit)))
+    (propagated-inputs
+     `(("sqlite" ,sqlite)))
+    (home-page "https://www.freedesktop.org/software/PackageKit/")
+    (synopsis "API for package management, through D-Bus")
+    (description
+     "PackageKit provides a way of performing package management tasks,
+e.g. updating, removing and installing software.  Through supporting many
+backends, PackageKit can perform these tasks using the appropriate package
+manager for the current system.")
+    (license license:gpl2+)))
+
 (define-public python-pyxdg
   (package
     (name "python-pyxdg")
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 6d9e4061d1..5253d0c919 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -30,6 +30,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
@@ -221,7 +222,8 @@ possible, and it also makes the SGE easy to learn.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://savannah/python-tmx/tmx-"
+       (uri (string-append "mirror://savannah/python-tmx/"
+                           (version-major+minor version) "/tmx-"
                            version ".tar.gz"))
        (sha256
         (base32
@@ -293,7 +295,7 @@ support.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "0.18.2")
+    (version "1.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bjorn/tiled/archive/v"
@@ -301,7 +303,7 @@ support.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1kcj2blrlfpghjv0qigip2qcbxfx7vv9i8nr4997hkwhsh6i2pjp"))))
+                "0g6ld9znydbdzy4x9h532gf1fg5bnz1mmrpvw4jg2a4lxkrz3rd5"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index ba1fd62a24..77a3376a02 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -37,14 +37,14 @@
 (define-public gdb
   (package
     (name "gdb")
-    (version "7.12.1")
+    (version "8.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gdb/gdb-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "11ii260h1sd7v0bs3cz6d5l8gqxxgldry0md60ncjgixjw5nh1s6"))))
+               "1vplyf8v70yn0rdqjx6awl9nmfbwaj5ynwwjxwa71rhp97z4z8pn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; FIXME "make check" fails on single-processor systems.
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 4f137a88d7..d8d5490f3e 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -75,7 +75,7 @@ topology functions.")
 (define-public gnome-maps
   (package
     (name "gnome-maps")
-    (version "3.18.3")
+    (version "3.24.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -83,7 +83,7 @@ topology functions.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vdnr2wmhqhql2gxd5n1ijwk88qhim14izbkczncg35846hfsr5i"))))
+                "1mnhcrawdp6fyqylh0m8l259xdd7pqwibrjyl54rmsvnm8vfrwsy"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags ; Ensure that geoclue is referred to by output.
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 40b756394e..7457809300 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -217,7 +217,7 @@ also known as DXTn or DXTC) for Mesa.")
 (define-public mesa
   (package
     (name "mesa")
-    (version "17.0.4")
+    (version "17.0.6")
     (source
       (origin
         (method url-fetch)
@@ -227,7 +227,7 @@ also known as DXTn or DXTC) for Mesa.")
                                   version "/mesa-" version ".tar.xz")))
         (sha256
          (base32
-          "0im3ca1vwwmkjf5w761vh7vabr4vrrdxpckr0wm974x18n2xqs8j"))
+          "17d60jjzg4ddm95gk2cqx0xz6b9anmmz6ax4majwr3gis2yg7v49"))
         (patches
          (search-patches "mesa-fix-32bit-test-failures.patch"
                          "mesa-wayland-egl-symbols-check-mips.patch"
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 6de9cce0b7..fcd1daf5e8 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -67,7 +67,7 @@
 (define dbus
   (package
     (name "dbus")
-    (version "1.10.16")
+    (version "1.10.18")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -75,7 +75,7 @@
                     version ".tar.gz"))
               (sha256
                (base32
-                "121kqkjsd3vgf8vca8364xl44qa5086h7qy5zs5f1l78ldpbmc57"))
+                "0jjirhw6xwz2ffmbg5kr79108l8i1bdaw7szc67n3qpkygaxsjb0"))
               (patches (search-patches "dbus-helper-search-path.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -137,7 +137,7 @@ shared NFS home directories.")
 (define glib
   (package
    (name "glib")
-   (version "2.50.3")
+   (version "2.52.2")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
@@ -145,7 +145,7 @@ shared NFS home directories.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "16frrwhc1yqkzx6bgh3060g94dr2biab17fb01mrni819jzr9vl2"))
+              "1l65kab6jr9zlllgbjcbvrbgah3sdd577fpw4pdb2j195ag5s3ph"))
             (patches (search-patches "glib-tests-timer.patch"))))
    (build-system gnu-build-system)
    (outputs '("out"           ; everything
@@ -289,14 +289,14 @@ dynamic loading, and an object system.")
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-    (version "1.50.0")
+    (version "1.52.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/"
                    "gobject-introspection/" (version-major+minor version)
                    "/gobject-introspection-" version ".tar.xz"))
              (sha256
-              (base32 "1i9pccig8mv6qf0c1z8fcapays190nmr7j6pyc7cfhzmcv39fr8w"))
+              (base32 "1x5gkyrglv3dn9b4fsgw6asqgjw1wj7qc37g9pyac6pyaa6w7l1f"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "tools/g-ir-tool-template.in"
@@ -492,7 +492,7 @@ has an ease of use unmatched by other C++ callback libraries.")
 (define glibmm
   (package
     (name "glibmm")
-    (version "2.50.0")
+    (version "2.50.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/glibmm/"
@@ -500,7 +500,7 @@ has an ease of use unmatched by other C++ callback libraries.")
                                  "/glibmm-" version ".tar.xz"))
              (sha256
               (base32
-               "152yz5w0lx0y5j9ml72az7pc83p4l92bc0sb8whpcazldqy6wwnz"))))
+               "1926b3adx903hzvdp8glblsgjyadzqnwgkj8hg605d4wv98m1n0z"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (alist-cons-before
@@ -573,7 +573,7 @@ useful for C++.")
 (define-public python-pygobject
   (package
     (name "python-pygobject")
-    (version "3.22.0")
+    (version "3.24.1")
     (source
      (origin
        (method url-fetch)
@@ -582,11 +582,13 @@ useful for C++.")
                            "/pygobject-" version ".tar.xz"))
        (sha256
         (base32
-         "1ryblpc4wbhxcwf7grgib4drrab5xi6p78ihhrx0zj7g13xrrch8"))))
+         "1zdzznrj2s1gsrv2z4r0n88fzba8zjc1n2r313xi77lhl1daja56"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)
-       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
+       ;for tests: dbus-run-session and glib-compile-schemas
+       ("dbus" ,dbus)
+       ("glib-bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("python" ,python)
@@ -596,16 +598,6 @@ useful for C++.")
      ;; pygobject-3.0.pc refers to all these.
      `(("glib" ,glib)
        ("libffi" ,libffi)))
-    (arguments
-     ;; TODO: failing tests: test_native_calls_async
-     ;; test_native_calls_async_errors test_native_calls_sync
-     ;; test_native_calls_sync_errors test_python_calls_async
-     ;; test_python_calls_async_error test_python_calls_async_error_result
-     ;; test_python_calls_sync test_python_calls_sync_errors
-     ;; test_python_calls_sync_noargs test_callback_user_data_middle_none
-     ;; test_callback_user_data_middle_single
-     ;; test_callback_user_data_middle_tuple
-     '(#:tests? #f))
     ;; For finding typelib files, since gobject-introscpetion isn't propagated.
     (native-search-paths (package-native-search-paths gobject-introspection))
     (home-page "https://live.gnome.org/PyGObject")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7f7880429a..ebf598d9c7 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
@@ -46,6 +46,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system trivial)
@@ -237,6 +238,56 @@ relationship modeling, and network diagrams.  The program supports various file
 formats like PNG, SVG, PDF and EPS.")
       (license license:gpl2+))))
 
+(define-public libgdata
+  (package
+    (name "libgdata")
+    (version "0.16.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version)  "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "09q8h1129xjpw33rvzz7856drygxwlm0s64z9cm0vbmjxiqy0h47"))
+              (patches
+               (search-patches "libgdata-fix-tests.patch"
+                               "libgdata-glib-duplicate-tests.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'use-empty-ssl-cert-file
+           (lambda _
+             ;; The ca-certificates.crt is not available in the build
+             ;; environment.
+             (setenv "SSL_CERT_FILE" "/dev/null")
+             #t)))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("uhttpmock" ,uhttpmock)))
+    (inputs
+     `(("cyrus-sasl" ,cyrus-sasl)
+       ("glib" ,glib)
+       ("glib-networking" ,glib-networking)
+       ("json-glib" ,json-glib)
+       ("libsoup" ,libsoup)))
+    (propagated-inputs
+     `(("gcr" ,gcr)
+       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("liboauth" ,liboauth)
+       ("libxml2" ,libxml2)))
+    (home-page "https://wiki.gnome.org/Projects/libgdata")
+    (synopsis "Library for accessing online service APIs")
+    (description
+     "libgdata is a GLib-based library for accessing online service APIs using
+the GData protocol — most notably, Google's services.  It provides APIs to
+access the common Google services, and has full asynchronous support.")
+    (license license:lgpl2.1+)))
+
 (define-public gnome-common
   (package
     (name "gnome-common")
@@ -262,7 +313,7 @@ commonly used macros.")
 (define-public gnome-desktop
   (package
     (name "gnome-desktop")
-    (version "3.22.2")
+    (version "3.24.2")
     (source
      (origin
       (method url-fetch)
@@ -271,7 +322,7 @@ commonly used macros.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "074yjz4g9gii045v2pl1ad34hcg92ci04ynxqcabwnf3lvvypmsi"))))
+        "0pkq5l1llw8gkjhfq6y58iyj6wac8dh1mc3rzjzn6nd7lrkdx8cg"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gobject-introspection" ,gobject-introspection)
@@ -339,7 +390,7 @@ and keep up to date translations of documentation.")
 (define-public gnome-disk-utility
   (package
     (name "gnome-disk-utility")
-    (version "3.22.1")
+    (version "3.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -347,7 +398,7 @@ and keep up to date translations of documentation.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1hqynlcgwm72il2rdml98gcarz0alsgxs5xf6ww2x0czaj3s3953"))))
+                "18akarcbhm8djlmz49jzavc7qx8dg71gvxc9xd23p0bwjj4h93w7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin")
@@ -521,7 +572,7 @@ forgotten when the session ends.")
 (define-public evince
   (package
     (name "evince")
-    (version "3.22.1")
+    (version "3.24.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -529,15 +580,10 @@ forgotten when the session ends.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "0713mcrym5ykhl5smqxi6m9578gz3nkibmkmc794amss7gdkkm7k"))))
+               "13yw0i68dgqp9alyliy3zifszh7rikkpi1xbz5binvxxgfpraf04"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-nautilus")
-
-       ;; FIXME: Tests fail with:
-       ;;   ImportError: No module named gi.repository
-       ;; Where should that module come from?
-       #:tests? #f
        #:phases
        (modify-phases %standard-phases
          (add-before 'install 'skip-gtk-update-icon-cache
@@ -593,7 +639,7 @@ on the GNOME Desktop with a single simple application.")
 (define-public gsettings-desktop-schemas
   (package
     (name "gsettings-desktop-schemas")
-    (version "3.22.0")
+    (version "3.24.0")
     (source
      (origin
       (method url-fetch)
@@ -602,7 +648,7 @@ on the GNOME Desktop with a single simple application.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "1qgalzqwg0fl0n22vslqcsnsmj9kc54qj25ib16rxaf36jxcf1hg"))))
+        "145vpcljy4660cnk8zk91qf7ywa7hqfl5hhw025gy8hxcqzklmzn"))))
     (build-system gnu-build-system)
     (inputs
      `(("glib" ,glib)))
@@ -954,17 +1000,18 @@ the GNOME desktop environment.")
 (define-public libcroco
   (package
     (name "libcroco")
-    (version "0.6.11")
+    (version "0.6.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version)  "/"
                                   name "-" version ".tar.xz"))
+              (patches
+                (search-patches "libcroco-CVE-2017-7960.patch"
+                                "libcroco-CVE-2017-7961.patch"))
               (sha256
                (base32
-                "0mm0wldbi40am5qn0nv7psisbg01k42rwzjxl3gv11l5jj554aqk"))
-              (patches (search-patches "libcroco-CVE-2017-7960.patch"
-                                       "libcroco-CVE-2017-7961.patch"))))
+                "0q7qhi7z64i26zabg9dbs5706fa8pmzp1qhpa052id4zdiabbi6x"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1686,7 +1733,7 @@ Hints specification (EWMH).")
 (define-public gnumeric
   (package
     (name "gnumeric")
-    (version "1.12.32")
+    (version "1.12.34")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1694,7 +1741,7 @@ Hints specification (EWMH).")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1s3dxvdwzmppsp2dfg90rccilf4hknhwjdy7lazr9sys58zchyx0"))))
+                "09f7h4lvwzyl0amd3axapwbsrnrvvpwxyhs540jlrv425n0j0j8b"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(;; The gnumeric developers don't worry much about failing tests.
@@ -1727,7 +1774,9 @@ Hints specification (EWMH).")
        ("zlib" ,zlib)))
     (native-inputs
      `(("bison" ,bison)
+       ("docbook-xml" ,docbook-xml)
        ("intltool" ,intltool)
+       ("itstool" ,itstool)
        ("glib:bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (home-page "http://www.gnumeric.org")
@@ -1817,7 +1866,7 @@ passwords in the GNOME keyring.")
 (define-public vala
   (package
     (name "vala")
-    (version "0.34.4")
+    (version "0.36.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1825,7 +1874,7 @@ passwords in the GNOME keyring.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10vbd74jazc3vhfagzx8v197bshrg61hnjzna6y3wmhljhrvs5vb"))))
+                "0706izk9prxqclm7gv4f63diwnlc1llvfl5sc9ghqbgn076lx2mc"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -2064,7 +2113,7 @@ configuration storage systems.")
 (define-public json-glib
   (package
     (name "json-glib")
-    (version "1.2.2")
+    (version "1.2.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2072,14 +2121,7 @@ configuration storage systems.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "08d6449sgnwfh92x8rhwsm03g8frv0mvp3s4wl3cskw25asql4pa"))
-              (modules '((guix build utils)))
-              (snippet
-               ;; Don't duplicate test names.
-               ;; <https://bugzilla.gnome.org/show_bug.cgi?id=755977>.
-               '(substitute* "json-glib/tests/builder.c"
-                  (("\"/builder/complex\", test_builder_empty")
-                   "\"/builder/empty\", test_builder_empty")))))
+                "02pl0wl3mf47c038bgv2r4pa6pr6y3shjhxn1l7s3rrrgl1sjmgx"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib" ,glib "bin")              ;for glib-mkenums and glib-genmarshal
@@ -2253,7 +2295,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.56.0")
+    (version "2.58.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2261,14 +2303,17 @@ libxml to ease remote use of the RESTful API.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1r8zz270qdg92gbsvy61d51y1cj7hp059h2f4xpvqiw2vrqnn8fq"))))
+                "1fggmshk2mfsyfvml6paki65xj9rv1s5p7ds41xmnx6yazsnkik2"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
      `(#:configure-flags
        (list (string-append "--with-html-dir="
                             (assoc-ref %outputs "doc")
-                            "/share/gtk-doc/html"))
+                            "/share/gtk-doc/html")
+             (string-append "--with-apache-module-dir="
+                            (assoc-ref %build-inputs "httpd")
+                            "/modules"))
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'disable-unconnected-socket-test
@@ -2286,6 +2331,9 @@ libxml to ease remote use of the RESTful API.")
                        ;; The ca-certificates.crt is not available in the build
                        ;; environment.
                        (setenv "SSL_CERT_FILE" "/dev/null")
+                       ;; HTTPD in Guix uses mod_event and does not build prefork.
+                       (substitute* "tests/httpd.conf"
+                         (("^LoadModule mpm_prefork_module.*$") "\n"))
                        #t))
          (replace 'install
                   (lambda _
@@ -2371,7 +2419,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 (define-public gnome-mines
   (package
     (name "gnome-mines")
-    (version "3.22.2")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
@@ -2380,7 +2428,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1wia0nj5i244m6pq3lridvk3vx9yipsa9l921nsskd97115mnyza"))))
+         "1xh2as2xmh7gx45gpnl0fh9xjpvyyn3m84qgv41kyp2s4clsyqz6"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -2409,7 +2457,7 @@ floating in an ocean using only your brain and a little bit of luck.")
 (define-public gnome-sudoku
   (package
     (name "gnome-sudoku")
-    (version "3.22.2")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
@@ -2418,7 +2466,7 @@ floating in an ocean using only your brain and a little bit of luck.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1sz2ln2nc9ff7zigghil32vbmr2qhb98dc0rbrz755rlrsh8pi08"))))
+         "1mw5ykk7wr0r9770jj5270f07rjws0pmpjs0b1fywj4li13r98h4"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2444,7 +2492,7 @@ more fun.")
 (define-public gnome-terminal
   (package
     (name "gnome-terminal")
-    (version "3.24.1")
+    (version "3.24.2")
     (source
      (origin
        (method url-fetch)
@@ -2453,7 +2501,7 @@ more fun.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1q303bljcr06w3ra737kq1hpjda45wk16kmrixxwldf3zkk2dgx7"))))
+         "03zcvxlzg7n4pz65vrg5xj3qpkqr4bz162mgmaz4bjh71b1xl7i8"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -2695,7 +2743,7 @@ service via the system message bus.")
 (define-public libgweather
   (package
     (name "libgweather")
-    (version "3.20.4")
+    (version "3.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2703,7 +2751,7 @@ service via the system message bus.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1higj4nmn3srqjbzl4iva7c0b4fkdq74xi4b35xd0qc4qiawbkbx"))))
+                "0ggspn3wmlkdxpfv4ym68qn1mzqc3hv666sykv8sv1ah40rbk28h"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -2750,7 +2798,7 @@ services for numerous locations.")
 (define-public gnome-settings-daemon
   (package
     (name "gnome-settings-daemon")
-    (version "3.22.1")
+    (version "3.24.2")
     (source
      (origin
        (method url-fetch)
@@ -2759,7 +2807,7 @@ services for numerous locations.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1finsr7yqvix6n3rdwclv4fpgagmz6xyrk3qzapkn9ljv76rfzdm"))))
+         "1jnw920zn4cadhgmcv2q5ylzqhwm1rmrhf3a14q8mvp38hkdgaaa"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(;; Color management test can't reach the colord system service.
@@ -2877,7 +2925,7 @@ which are easy to play with the aid of a mouse.")
 (define-public devhelp
   (package
     (name "devhelp")
-    (version "3.22.0")
+    (version "3.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2885,7 +2933,7 @@ which are easy to play with the aid of a mouse.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1c7zqn8apm1lnpsp74bd880rga2vi5wxfjghqdgwqf6j28pf1jjr"))))
+                "0c74rk46dy3kvy78m42jl3ip56c5536zmy8v1lbascjmh4fdwn28"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)
@@ -2936,9 +2984,13 @@ throughout GNOME for API documentation).")
        ("cairo" ,cairo)
        ("pango" ,pango)
        ("gstreamer" ,gstreamer)
-       ("gst-plugins-base" ,gst-plugins-base)))
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("wayland" ,wayland)))
     (arguments
      `(#:configure-flags (list "--enable-cogl-gst"
+                               "--enable-wayland-egl-platform"
+                               "--enable-wayland-egl-server"
+
                                ;; Arrange to pass an absolute file name to
                                ;; dlopen for libGL.so.
                                (string-append "--with-gl-libname="
@@ -3343,7 +3395,7 @@ for application developers.")
 (define-public totem
   (package
     (name "totem")
-    (version "3.22.0")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
@@ -3352,7 +3404,7 @@ for application developers.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1sjgjqhpsh3kipnbc8y31xz64s61xjayxq98pi0vkgbl2rdmnsh2"))))
+         "00cdlll5b0wj5ckl1pc0a3g39a0hlq0gxkcsh1f6p20fjixqzmwv"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -3510,7 +3562,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
 (define-public eog
  (package
    (name "eog")
-   (version "3.20.5")
+   (version "3.24.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3518,7 +3570,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "0fqvfc4y1lbv0awh8dbx9khfha0hdkmnj1lzw5jq0l7jmahwbrz6"))))
+              "1rr7zy8afqgl15j1zz8l37svyv6bw4r3l04yf70zlnf1w8bf27pm"))))
    (build-system glib-or-gtk-build-system)
    (arguments
     `(#:phases
@@ -3588,7 +3640,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
 (define-public gvfs
   (package
     (name "gvfs")
-    (version "1.30.3")
+    (version "1.32.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3596,7 +3648,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xgis1kgglnazy1vm66xiqyz8yvvmiad3h0g3agg7ryai6aa495q"))))
+                "1pkahczniar1yyas7awcqpkb4ca8l7qa4msn6mr29m89mgnwkdnh"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f)) ; XXX: requiring `pidof'
@@ -3741,7 +3793,7 @@ work and the interface is well tested.")
 (define-public epiphany
   (package
     (name "epiphany")
-    (version "3.22.7")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3749,7 +3801,7 @@ work and the interface is well tested.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1167x5s0kawkqngjnzml0a11ib18raxqc4p11kacivj4jv0pwnx1"))))
+                "13f5h7mbxdyjf93jp46hiaxsrngpr6frgf69d8iza7arc060vg2s"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      ;; FIXME: tests run under Xvfb, but fail with:
@@ -3772,6 +3824,7 @@ work and the interface is well tested.")
        ("glib-networking" ,glib-networking)
        ("gnome-desktop" ,gnome-desktop)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("json-glib" ,json-glib)
        ("iso-codes" ,iso-codes)
        ("libnotify" ,libnotify)
        ("libsecret" ,libsecret)
@@ -4002,7 +4055,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.25.5")
+    (version "0.26.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4010,7 +4063,7 @@ metadata in photo and video files of various formats.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10pv3v789hky8h7ladqzzmgvkmgy3c41n4xz0nnyjmpycwl26g29"))))
+                "0xak1f69lp1yx3p8jgmr9c0z3jypi8zjpy3kiknn5n9g2f5cqq0a"))))
     (build-system glib-or-gtk-build-system)
     (propagated-inputs
      `(("dconf" ,dconf)))
@@ -4025,6 +4078,7 @@ metadata in photo and video files of various formats.")
      `(("glib:bin" ,glib "bin")
        ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
+       ("libgdata" ,libgdata)
        ("libgee" ,libgee)
        ("gexiv2" ,gexiv2)
        ("libraw" ,libraw)
@@ -4048,7 +4102,7 @@ share them with others via social networking and more.")
 (define-public file-roller
   (package
     (name "file-roller")
-    (version "3.22.2")
+    (version "3.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4056,7 +4110,7 @@ share them with others via social networking and more.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1yaxd0lqhajszilblkidqfkaffhzml10l7ib64023y36qgf8q597"))))
+                "0fkz9h9a6149crmf6311fsqlmv9wyrxk86470vxib941ppl4a581"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -4090,7 +4144,7 @@ such as gzip tarballs.")
 (define-public gnome-session
   (package
     (name "gnome-session")
-    (version "3.22.2")
+    (version "3.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4098,7 +4152,7 @@ such as gzip tarballs.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xahljysbpnc1zafm1y2lqnmmqi2jh4fx7h2y48d9ipqnknk26in"))))
+                "1vkfjsgks9czajivcg3y1krzlnilv2cnzzbdc7wrasrriqilji1v"))))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -4169,7 +4223,7 @@ configuration program to choose applications starting on login.")
 (define-public gjs
   (package
     (name "gjs")
-    (version "1.46.0")
+    (version "1.48.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4177,10 +4231,7 @@ configuration program to choose applications starting on login.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1m2ssa6qsipbp8lz4xbhf0nhadhv0xkdpmz1jcvl9187lwgmk0r2"))
-              (modules '((guix build utils)))
-              (snippet '(substitute* "test/run-with-dbus"
-                          (("/bin/rm") "rm")))))
+                "0cqgv460wfhwkw6j1h46v6bg29bycg6dfl7c5rv0lfcqmmw7v6v6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -4195,11 +4246,11 @@ configuration program to choose applications starting on login.")
             ;; For the missing /etc/machine-id.
             (setenv "DBUS_FATAL_WARNINGS" "0")
 
-            ;; XXX: fails with:
-            ;;   Failed to convert UTF-8 string to JS string: ...
-            ;; TODO: actually fix it.
-            (substitute* "installed-tests/js/testEverythingBasic.js"
-              ((".*test_utf8_inout.*") ""))
+            ;; Our mozjs-38 package does not compile the required Intl API
+            ;; support for these failing tests.
+            (substitute* "installed-tests/js/testLocale.js"
+              ((".*toBeDefined.*") "")
+              ((".*expect\\(datestr\\).*") ""))
             #t)))))
     (native-inputs
      `(("glib:bin" ,glib "bin")       ; for glib-compile-resources
@@ -4211,8 +4262,9 @@ configuration program to choose applications starting on login.")
        ("xvfb" ,xorg-server)))
     (propagated-inputs
      ;; These are all in the Requires.private field of gjs-1.0.pc.
-     `(("gobject-introspection" ,gobject-introspection)
-       ("mozjs" ,mozjs-24)))
+     `(("cairo" ,cairo)
+       ("gobject-introspection" ,gobject-introspection)
+       ("mozjs" ,mozjs-38)))
     (inputs
      `(("gtk+" ,gtk+)
        ("readline" ,readline)))
@@ -4286,7 +4338,7 @@ powerful general purpose text editor.")
 (define-public zenity
   (package
     (name "zenity")
-    (version "3.22.0")
+    (version "3.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4294,7 +4346,7 @@ powerful general purpose text editor.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0rp4l0vgyjhlkpk2imfwf7b05m1qxjrm8n8kp1rv70ykf48gmk8y"))))
+                "1xzpm63cib2xzr99phplhbcjzy7lahggk3gp60dvrrclxhka1w3g"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -4311,24 +4363,21 @@ to display dialog boxes from the commandline and shell scripts.")
     (license license:lgpl2.0+)))
 
 (define-public mutter
-  ;; Uses the gnome 3.22 branch that only contains bug fixes.
-  (let ((commit "23c315ea7121e9bd108e2837d0b4beeba53c5e18"))
   (package
     (name "mutter")
-    (version (git-version "3.22.2" "1" commit))
+    (version "3.24.2")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "git://git.gnome.org/mutter")
-                    (commit commit)))
-              (file-name (git-file-name name version))
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1v1f9xyzjr1ihmfwpq9kzlv2lyr9qn63ck8zny699mbp5hsi11mb"))))
-     ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
-     ;; versions of cogl and clutter.  As a result, many of the inputs,
-     ;; propagated-inputs, and configure flags used in cogl and clutter are
-     ;; needed here as well.
+                "043q3384vwrkjdfhbwn9pwdml6z0g0ad0cj2fjnjzg6402i67071"))))
+    ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
+    ;; versions of cogl and clutter.  As a result, many of the inputs,
+    ;; propagated-inputs, and configure flags used in cogl and clutter are
+    ;; needed here as well.
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -4337,8 +4386,7 @@ to display dialog boxes from the commandline and shell scripts.")
        ;;      implicit declaration of function ?roundf?
        (list "--enable-compile-warnings=minimum"
 
-             "--disable-wayland"           ; TODO enable wayland
-             ;; "--enable-native-backend"  ; TODO enable the native backend
+             "--enable-native-backend"
 
              ;; The following flags are needed for the bundled clutter
              "--enable-x11-backend=yes"
@@ -4350,9 +4398,14 @@ to display dialog boxes from the commandline and shell scripts.")
                             "/lib/libGL.so"))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
-                    (lambda _
-                      (zero? (system* "autoreconf" "-vfi")))))))
+         ;; Replace references to systemd libraries to elogind references.
+         (add-before 'configure 'use-elogind
+           (lambda _
+             (substitute* (list "configure"
+                                "src/backends/native/meta-launcher.c"
+                                "src/core/main.c")
+               (("systemd") "elogind"))
+             #t)))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -4385,17 +4438,17 @@ to display dialog boxes from the commandline and shell scripts.")
        ("mesa" ,mesa)
        ("pango" ,pango)
        ("udev" ,eudev)
-       ("wayland" ,wayland)
-       ("wayland-protocols" ,wayland-protocols)
        ("xinput" ,xinput)))
     (inputs
-     `(("gnome-desktop" ,gnome-desktop)
+     `(("elogind" ,elogind)
+       ("gnome-desktop" ,gnome-desktop)
        ("libcanberra-gtk" ,libcanberra)
        ("libgudev" ,libgudev)
        ("libice" ,libice)
        ("libsm" ,libsm)
        ("libxkbfile" ,libxkbfile)
        ("libxrandr" ,libxrandr)
+       ("libxtst" ,libxtst)
        ("startup-notification" ,startup-notification)
        ("upower-glib" ,upower)
        ("xkeyboard-config" ,xkeyboard-config)
@@ -4407,12 +4460,12 @@ to display dialog boxes from the commandline and shell scripts.")
 desktop via OpenGL.  Mutter combines a sophisticated display engine using the
 Clutter toolkit with solid window-management logic inherited from the Metacity
 window manager.")
-    (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public gnome-online-accounts
   (package
     (name "gnome-online-accounts")
-    (version "3.22.3")
+    (version "3.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4420,7 +4473,7 @@ window manager.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "13wvnfh3hnasdnb6fhjssybj2327qihd32kpdjjb3r1qiyc8dvqb"))))
+                "0yy10znqj278lnhdiqjcqxrwwv5c1jdjd0ncjbbdyh8n0q77hbwy"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@@ -4450,7 +4503,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
 (define-public evolution-data-server
   (package
     (name "evolution-data-server")
-    (version "3.22.3")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4458,26 +4511,20 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kygd46s0is6i451bqykagrfx34wjvrgjbjyyszaabnppp1dyn0c"))))
-    (build-system gnu-build-system)
+                "1ywqy939n27v3kchlnyxs6ikhjxmlasv6f08ap4bldgr121vkfx9"))))
+    (build-system cmake-build-system)
     (arguments
-     '(;; XXX: fails with:
-       ;;   /Fixture/Calendar0: cleaning up pid xxxx
-       ;;   t status: 139)
+     '(;; XXX FIXME: 11/85 tests are failing.
        #:tests? #f
        #:configure-flags
-       (let ((nss  (assoc-ref %build-inputs "nss"))
-             (nspr (assoc-ref %build-inputs "nspr")))
-         (list "--disable-uoa"    ; disable Ubuntu Online Accounts support
-               "--disable-google" ; disable Google Contacts support
-               "--disable-google-auth" ; disable Google authentication
-               "--enable-vala-bindings"
-               (string-append "--with-nspr-includes=" nspr "/include/nspr")
-               (string-append "--with-nss-includes=" nss "/include/nss")
-               (string-append "--with-nss-libs=" nss "/lib/nss")))
+       (list "-DENABLE_UOA=OFF"             ;disable Ubuntu Online Accounts support
+             "-DENABLE_GOOGLE=OFF"          ;disable Google Contacts support
+             "-DENABLE_GOOGLE_AUTH=OFF"     ;disable Google authentication
+             "-DENABLE_VALA_BINDINGS=ON"
+             "-DENABLE_INTROSPECTION=ON")   ;required for Vala bindings
        #:phases
        (modify-phases %standard-phases
-         (add-before 'check 'pre-check
+         (add-after 'unpack 'patch-paths
           (lambda _
             (substitute* "tests/test-server-utils/e-test-server-utils.c"
               (("/bin/rm") (which "rm")))
@@ -4489,7 +4536,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("vala" ,vala)
-       ("python" ,python)))
+       ("python" ,python-wrapper)))
     (propagated-inputs
      ;; These are all in the Requires field of .pc files.
      `(("gtk+" ,gtk+)
@@ -4502,7 +4549,9 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
      `(("bdb" ,bdb)
        ("gcr" ,gcr)
        ("gnome-online-accounts" ,gnome-online-accounts)
-       ("libgweather" ,libgweather)))
+       ("libgweather" ,libgweather)
+       ("mit-krb5" ,mit-krb5)
+       ("openldap" ,openldap)))
     (synopsis "Store address books and calendars")
     (home-page "https://wiki.gnome.org/Apps/Evolution")
     (description
@@ -4800,7 +4849,7 @@ libxml2.")
 (define-public gdm
   (package
     (name "gdm")
-    (version "3.22.1")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4808,7 +4857,7 @@ libxml2.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "17wnsrv91mx14xp96wrc21g2hsjjc38yhbkw55kf7hk3yliychva"))))
+                "1s2xzrwcjhfb4ra8jrxqfycs1jpv97id0f6idb2h6vjkspxbjy23"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -4887,7 +4936,7 @@ usage and information about running processes.")
 (define-public gnome-bluetooth
   (package
     (name "gnome-bluetooth")
-    (version "3.20.0")
+    (version "3.20.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4895,7 +4944,7 @@ usage and information about running processes.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0lzbwk2kn7kp39sv5bf4ja92mfkxkc27gxxk8k86i8a8ncbcmcwk"))))
+                "1zlqcz6jz4vzzr8gd1678i9s4015kiwcpr5szrwz4kmryfsm147a"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
@@ -4920,7 +4969,7 @@ devices using the GNOME desktop.")
 (define-public gnome-control-center
   (package
     (name "gnome-control-center")
-    (version "3.22.1")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4928,7 +4977,7 @@ devices using the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "06h9937sjfrzjf36pxqybg4wmkc5xdhbxgdkclnkjxiiqidjjsax"))))
+                "0awga40jh6gvn335mn6kyl6yg79frap1znrsz3sw2m27yldlnaiq"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -4991,16 +5040,15 @@ properties, screen resolution, and other GNOME parameters.")
 (define-public gnome-shell
   (package
     (name "gnome-shell")
-    (version "3.22.2")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version) "/"
                                   name "-" version ".tar.xz"))
-              (patches (search-patches "gnome-shell-CVE-2017-8288.patch"))
               (sha256
                (base32
-                "16smvjfrpyfphv479hjky5261hgl4kli4q86bcb2b8xdcav4w3yq"))))
+                "1xp2ccmdrvzlczsrcplykwqwx2v4lbmkr0rxyylb06danlw9mivh"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -5201,7 +5249,7 @@ shared object databases, search tools and indexing.")
 (define-public nautilus
   (package
     (name "nautilus")
-    (version "3.22.2")
+    (version "3.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5209,7 +5257,7 @@ shared object databases, search tools and indexing.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cv5xsah04svxx0b6di7iah9gcwk6na2c6lp442pal9v2ybrw76f"))))
+                "1cn6bmzmahzlwcd4gllsvx6dva386xm3papgzpv1r34abw73sf27"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -5281,7 +5329,7 @@ is complete it provides a graphical representation of each selected folder.")
 (define-public gnome-backgrounds
   (package
     (name "gnome-backgrounds")
-    (version "3.22.1")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
@@ -5290,7 +5338,7 @@ is complete it provides a graphical representation of each selected folder.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "09gfdrm1kaz2knyghhjb0ka1kklgbcbnqgy4c90bg0v3n899ij5z"))))
+         "1jkikis9k3psp6rb8axnqy86awdyg5rzfbcp9gx40a99b4hlrnnb"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)))
@@ -5509,7 +5557,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
 (define-public gnome-calendar
   (package
     (name "gnome-calendar")
-    (version "3.22.2")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5517,7 +5565,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "03wivk7hbyqrqcrd7jg0m2xj6q13248la2184qkf7zncnj72g5ih"))))
+                "0lc0xdgn0y12i87775xyy0p3a5l82w9k49cmwl1my8r8pwf9lp6s"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)
@@ -5538,7 +5586,7 @@ desktop.  It supports multiple calendars, monthly view and yearly view.")
 (define-public gnome-dictionary
   (package
     (name "gnome-dictionary")
-    (version "3.20.0")
+    (version "3.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5546,7 +5594,7 @@ desktop.  It supports multiple calendars, monthly view and yearly view.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "08b1f5s5aqka3dwxnzmwr2fmyddjm9xw7zmqsf8r5zvfsivn7czg"))))
+                "1wnrpg8yndacq0xnzc84d519yp7f28brzklm3a48xcgs1i50drs1"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin")
@@ -5568,7 +5616,7 @@ existing databases over the internet.")
 (define-public gnome-tweak-tool
   (package
     (name "gnome-tweak-tool")
-    (version "3.22.0")
+    (version "3.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
@@ -5578,7 +5626,7 @@ existing databases over the internet.")
                         (search-patch "gnome-tweak-tool-search-paths.patch")))
               (sha256
                (base32
-                "1frs16p2284mdw65g1ldmf9cz5sn3rg16wz58gjrw5pn2cgf2six"))))
+                "000ygz9wgnv8pimb6rwbjfm12vbx4138pwkq36ci0k6v827282wk"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--localstatedir=/tmp"
@@ -5619,7 +5667,7 @@ GNOME Shell appearance and extension, etc.")
 (define-public gnome-shell-extensions
   (package
     (name "gnome-shell-extensions")
-    (version "3.22.2")
+    (version "3.24.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5627,7 +5675,7 @@ GNOME Shell appearance and extension, etc.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "11wa4f9arr89a4y8nsvla5j58dzwlawjb2q1lz0jn5i9kv324z6z"))))
+                "10sg87wml5cmyk90pybnr6r942ba7173sl7yplhj2sfggp0wc74s"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-extensions=all")))
@@ -5883,7 +5931,7 @@ handling the startup notification side.")
 (define-public gnome-calculator
   (package
     (name "gnome-calculator")
-    (version "3.22.2")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
@@ -5892,7 +5940,7 @@ handling the startup notification side.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "03il7xl4yr6xbzj6x1lbl16yzlb166c9h9wny1w7mj9dccnz99wr"))))
+         "041d40as8y0r5d0kk83dy842711zchydwwqh71kh1lpd373qlxa4"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
@@ -5902,6 +5950,7 @@ handling the startup notification side.")
     (inputs
      `(("gtksourceview" ,gtksourceview)
        ("libsoup" ,libsoup)
+       ("mpc" ,mpc)
        ("mpfr" ,mpfr)))
     (home-page "https://wiki.gnome.org/Apps/Calculator")
     (synopsis "Desktop calculator")
@@ -6005,7 +6054,7 @@ Bluefish supports many programming and markup languages.")
 (define-public gnome-system-monitor
   (package
     (name "gnome-system-monitor")
-    (version "3.22.2")
+    (version "3.24.0")
     (source
      (origin
        (method url-fetch)
@@ -6014,7 +6063,7 @@ Bluefish supports many programming and markup languages.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "10n9bl2q9xxnd6mfi4scfw5x0xyyzvnblz26q9gl8vks2nbv19b8"))))
+         "1x3343hchkllj8wyifk844v8psi45kyjhphyd03fzahi4h34aay3"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums.
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 5c04745ff5..d4d52ee6d0 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -407,6 +407,35 @@ instead.  This way bug fixes or improvements can be done at a central place
 and every application benefits from this.")
     (license license:lgpl2.1+)))
 
+(define-public qgpgme
+  (package
+    (inherit gpgme)
+    (name "qgpgme")
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'chdir-and-symlink
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gpgme (assoc-ref inputs "gpgme")))
+               (symlink (string-append gpgme "/lib/libgpgmepp.la")
+                        "lang/cpp/src/libgpgmepp.la")
+               (symlink (string-append gpgme "/lib/libgpgme.la")
+                        "src/libgpgme.la"))
+             (chdir "lang/qt")
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gpgme" ,gpgme)
+       ("qtbase" ,qtbase)
+       ,@(package-inputs gpgme)))
+    (synopsis "Qt API bindings for gpgme")
+    (description "QGpgme provides a very high level Qt API around GpgMEpp.
+
+QGpgME was originally developed as part of libkleo and incorporated into
+gpgpme starting with version 1.7.")
+    (license license:gpl2+))) ;; Note: this differs from gpgme
+
 (define-public python-gpg
   (package
     (name "python-gpg")
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index cc1497cb8d..4fa4033246 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,6 +55,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages photo)
+  #:use-module (gnu packages pth)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
@@ -318,6 +320,47 @@ visual effects work for film.")
     (home-page "http://www.openimageio.org")
     (license license:bsd-3)))
 
+(define-public openscenegraph
+  (package
+    (name "openscenegraph")
+    (version "3.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://trac.openscenegraph.org/downloads/developer_releases/"
+                           "OpenSceneGraph-" version ".zip"))
+       (sha256
+        (base32
+         "03h4wfqqk7rf3mpz0sa99gy715cwpala7964z2npd8jxfn27swjw"))
+       (patches (search-patches "openscenegraph-ffmpeg3.patch"))
+       (file-name (string-append name "-" version ".zip"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;; No test target available.
+       #:configure-flags
+       (list (string-append "-DCMAKE_INSTALL_RPATH="
+                            (assoc-ref %outputs "out") "/lib:"
+                            (assoc-ref %outputs "out") "/lib64"))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (inputs
+     `(("giflib", giflib)
+       ("jasper", jasper)
+       ("librsvg", librsvg)
+       ("pth", pth)
+       ("qtbase", qtbase)
+       ("ffmpeg", ffmpeg)
+       ("mesa", mesa)))
+    (synopsis "High performance real-time graphics toolkit")
+    (description
+     "The OpenSceneGraph is a high performance 3D graphics toolkit
+used by application developers in fields such as visual simulation, games,
+virtual reality, scientific visualization and modeling.")
+    (home-page "http://www.openscenegraph.org")
+    ;; The 'LICENSE' file explains that the source is licensed under
+    ;; LGPL 2.1, but with 4 exceptions. This version is called OSGPL.
+    (license license:lgpl2.1)))
+
 (define-public rapicorn
   (package
     (name "rapicorn")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index d250caff4a..1d9ee15246 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -50,6 +50,7 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -72,7 +73,7 @@
 (define-public atk
   (package
    (name "atk")
-   (version "2.22.0")
+   (version "2.24.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -80,7 +81,7 @@
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1dj47ndvspa7lghw1jvjhv3v08q5f9ab5rb395mcgjbl975gajfk"))))
+              "0jbs90vacl95mwgvmqsizi1bwx5sw0rz70r9knksfwwch2dalbdv"))))
    (build-system gnu-build-system)
    (outputs '("out" "doc"))
    (arguments
@@ -170,7 +171,7 @@ affine transformation (scale, rotation, shear, etc.).")
 (define-public harfbuzz
   (package
    (name "harfbuzz")
-   (version "1.4.3")
+   (version "1.4.6")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://www.freedesktop.org/software/"
@@ -178,7 +179,7 @@ affine transformation (scale, rotation, shear, etc.).")
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "08akv3qzwnf48xajb60dfcchkmfdjkpp65a0xd8s98w81901g343"))))
+               "14yj514yfy373np3gxk930a443j1zgnwg6mm0kdzzjr0rn0qp9r1"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "bin")) ; 160K, only hb-view depend on cairo
@@ -208,7 +209,7 @@ affine transformation (scale, rotation, shear, etc.).")
 (define-public pango
   (package
    (name "pango")
-   (version "1.40.5")
+   (version "1.40.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/pango/"
@@ -216,7 +217,7 @@ affine transformation (scale, rotation, shear, etc.).")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1j81kmdq2kndayahfck60myd05hj5qd7mixj0w5kchkc8m082x14"))))
+              "0wz5b5knpw4gfvz3ny8l6h2ca3bpqqyh55mffkyzgsd1hdrjn5fa"))))
    (build-system gnu-build-system)
    (propagated-inputs
     `(("cairo" ,cairo)
@@ -378,7 +379,7 @@ printing and other features typical of a source code editor.")
 (define-public gtksourceview
  (package
    (name "gtksourceview")
-   (version "3.22.2")
+   (version "3.24.2")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -386,7 +387,7 @@ printing and other features typical of a source code editor.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "0pmgff3p9q1z500aiqfn5l4mmij4yfi4qhq8fxscqc89vlql5s3c"))))
+               "17xqrnh2v9gba57ij2m9kngxwh19fzsqkx1rfasnv4zaqvqqhv69"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases
@@ -508,7 +509,7 @@ in the GNOME project.")
 (define-public at-spi2-core
   (package
    (name "at-spi2-core")
-   (version "2.22.0")
+   (version "2.24.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -516,7 +517,7 @@ in the GNOME project.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "02n8ybhg8344mpjwvkhnzvr0qbvvl6ryi2q9irwhi0ri46ps6pj1"))))
+              "0nwvjmd30rgq6d1zznavx0bdfa1xwv3jl8wnkbkwzaipp5jd140y"))))
    (build-system gnu-build-system)
    (outputs '("out" "doc"))
    (arguments
@@ -553,7 +554,7 @@ is part of the GNOME accessibility project.")
 (define-public at-spi2-atk
   (package
    (name "at-spi2-atk")
-   (version "2.22.0")
+   (version "2.24.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -561,7 +562,7 @@ is part of the GNOME accessibility project.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1h8k271ad78smm41c9bmw5dc4gki0wfy324cn2g25svkp2zfvgg8"))))
+              "0zcmsq7g4jg5dpmfzkyfpa0v6hx4119c4qwkdblzzf3l9yn91p30"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases
@@ -653,7 +654,7 @@ application suites.")
    (name "gtk+")
    ;; NOTE: When updating the version of 'gtk+', the hash of 'mate-themes' in
    ;;       mate.scm will also need to be updated.
-   (version "3.22.12")
+   (version "3.22.15")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -661,7 +662,7 @@ application suites.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1359w81sxs2izkan2rni985x78s6zr1arf469qmyw4bazg7f1yl4"))
+              "1nqgb71vx222g9fd2p017948hqybnyi69xs3n2d64clim7115868"))
             (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
                                      "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
    (outputs '("out" "bin" "doc"))
@@ -673,8 +674,12 @@ application suites.")
       ("libxcursor" ,libxcursor)
       ("libxi" ,libxi)
       ("libxinerama" ,libxinerama)
+      ("libxkbcommon" ,libxkbcommon)
       ("libxdamage" ,libxdamage)
-      ("pango" ,pango)))
+      ("mesa" ,mesa)
+      ("pango" ,pango)
+      ("wayland" ,wayland)
+      ("wayland-protocols" ,wayland-protocols)))
    (inputs
     `(("libxml2" ,libxml2)
       ;; XXX: colord depends on mozjs (through polkit), which fails on
@@ -700,7 +705,12 @@ application suites.")
       ;; to "doc".
       #:configure-flags (list (string-append "--with-html-dir="
                                              (assoc-ref %outputs "doc")
-                                             "/share/gtk-doc/html"))
+                                             "/share/gtk-doc/html")
+                              ;; The header file <gdk/gdkwayland.h> is required
+                              ;; by gnome-control-center
+                              "--enable-wayland-backend"
+                              ;; This is necessary to build both backends.
+                              "--enable-x11-backend")
       #:phases (modify-phases %standard-phases
         (add-before 'configure 'pre-configure
           (lambda _
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 768ed325bd..7a0080b27b 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -54,7 +54,7 @@
 (define-public feh
   (package
     (name "feh")
-    (version "2.18.3")
+    (version "2.19")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -62,7 +62,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0qq567d0g181k6llr6p759lnni39va5xakjqngd6063fm73nhbyq"))))
+                "1sfhr6628xpj9p6bqihdq35y139x2gmrpydjlrwsl1rs77c2bgnf"))))
     (build-system gnu-build-system)
     (arguments
       '(#:phases (alist-delete 'configure %standard-phases)
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 5928b30e00..a0ca4528f9 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -46,14 +46,14 @@
     ;; The 7 release series has an incompatible API, while the 6 series is still
     ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
     ;; users are ready for the 7-series API.
-    (version "6.9.8-6")
+    (version "6.9.8-9")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1sxg2wx3nrzbymh5wcqiv1x401nrz95xkrqgk3x446vx8lq7ln6w"))))
+               "0wr6wcmvaw62f6pkgnpqnjmp331wfwmds9wmqzr4zv53s9k1lkzn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 30e14a0914..ad167a6e99 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -102,7 +102,7 @@ irssi, but graphical.")
 (define-public irssi
   (package
     (name "irssi")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/irssi/irssi/"
@@ -110,7 +110,7 @@ irssi, but graphical.")
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1sgvfprgrncbxcyg99rkd10kpjzqw00b1ppsfg8al0zirb13q72w"))))
+               "10gmmxk5jgyigarks177nyvzb0lsfxcm00015p2cirybgllj10l3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
new file mode 100644
index 0000000000..6746ad1d22
--- /dev/null
+++ b/gnu/packages/javascript.scm
@@ -0,0 +1,85 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages javascript)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages lisp)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system trivial))
+
+(define-public js-mathjax
+  (package
+    (inherit font-mathjax)
+    (name "js-mathjax")
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 match)
+                      (ice-9 popen)
+                      (ice-9 regex))
+         (set-path-environment-variable
+          "PATH" '("bin") (map (match-lambda
+                                 ((_ . input)
+                                  input))
+                               %build-inputs))
+         (set-path-environment-variable
+          "GUIX_LOCPATH" '("lib/locale")
+          (list (assoc-ref %build-inputs "glibc-utf8-locales")))
+         (setenv "LANG" "en_US.UTF-8")
+         (let ((install-directory (string-append %output "/share/javascript/mathjax")))
+           (system* "tar" "xvf" (assoc-ref %build-inputs "source")
+                    "MathJax-2.7.1/unpacked" "--strip" "2")
+           (mkdir-p install-directory)
+           (symlink (string-append (assoc-ref %build-inputs "font-mathjax")
+                                   "/share/fonts/mathjax")
+                    (string-append install-directory "/fonts"))
+
+           (for-each
+            (lambda (file)
+              (let ((installed (string-append install-directory
+                                              ;; remove prefix "."
+                                              (string-drop file 1))))
+                (format #t "~a -> ~a~%" file installed)
+                (cond
+                 ((string-match "\\.js$" file)
+                  (mkdir-p (dirname installed))
+                  (let ((minified (open-pipe* OPEN_READ "uglify-js" file)))
+                    (call-with-output-file installed
+                      (lambda (port)
+                        (dump-port minified port)))))
+                 (else
+                  (install-file file (dirname installed))))))
+            (find-files "."))))))
+    (native-inputs
+     `(("font-mathjax" ,font-mathjax)
+       ("glibc-utf8-locales" ,glibc-utf8-locales)
+       ("uglify-js" ,uglify-js)
+       ,@(package-native-inputs font-mathjax)))
+    (synopsis "JavaScript display engine for LaTeX, MathML, and AsciiMath")
+    (description "MathJax is a JavaScript display engine for LaTeX, MathML,
+and AsciiMath notation that works in all modern browsers.  It requires no
+plugins or software to be installed on the browser.  So the page author can
+write web documents that include mathematics and be confident that readers will
+be able to view it naturally and easily.")))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 5a3490fdf1..c101135db7 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1043,7 +1043,7 @@ packet filter.")
 (define-public iproute
   (package
     (name "iproute2")
-    (version "4.10.0")
+    (version "4.11.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1051,7 +1051,7 @@ packet filter.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "1a59y1zkddvr7z0lh2y9iasbh9wpfc1n39p56xcd6jkhzk0y3c92"))))
+                "09l0phf09mw17bn3xlzfr80sbhw14mq8xv28iz5x15m6pll10rvj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                                ; no test suite
@@ -1291,15 +1291,16 @@ transparently through a bridge.")
 (define-public libnl
   (package
     (name "libnl")
-    (version "3.2.25")
+    (version "3.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://www.infradead.org/~tgr/libnl/files/libnl-"
-                    version ".tar.gz"))
+                    "https://github.com/thom311/libnl/releases/download/"
+                    "libnl" (string-join (string-split version #\.) "_")
+                    "/libnl-" version ".tar.gz"))
               (sha256
                (base32
-                "1icfrv8yihcb74as1gcgmp0wfpdq632q2zvbvqqvjms9cy87bswb"))))
+                "1r3lw3hjvqxi5zqyq2w1qadm3gisd9nlf71dkl4yplacmssnhm3h"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex) ("bison" ,bison)))
     (home-page "http://www.infradead.org/~tgr/libnl/")
@@ -2801,7 +2802,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
 (define-public bluez
   (package
     (name "bluez")
-    (version "5.44")
+    (version "5.45")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2809,7 +2810,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "11bc6pndivd0rkqr3c8a1xd9ar9bb60gx79piskycicb3wliwchc"))))
+                "1sb4aflgyrl7apricjipa8wx95qm69yja0lmn2f19g560c3v1b2c"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2861,7 +2862,7 @@ is flexible, efficient and uses a modular implementation.")
 (define-public fuse-exfat
   (package
     (name "fuse-exfat")
-    (version "1.2.6")
+    (version "1.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2869,7 +2870,7 @@ is flexible, efficient and uses a modular implementation.")
                     version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1rvq4hapy2anal1vg1yidv4x8rg4iw5sxfwqixkw0q2qsxb54471"))))
+                "0df0ccnd0dgwc6rvk9qmrz0nfb8whc5s3wg9qnw1mzbrh4rcvhw2"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 9cb88fdee0..02a4f26022 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1089,7 +1089,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.2.30.1")
+    (version "2.2.30.2")
     (source
      (origin
        (method url-fetch)
@@ -1097,7 +1097,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.gz"))
        (sha256 (base32
-                "1943n0b9zcwvymslai9qmdmnfy47zdnqjwkql586imycyx4xnjch"))))
+                "17hqhzfqlk08d20x9rwi0lyvy13pc0x8sr1zcg89vapf3jfagnzk"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index c8c7c63ee5..a39cd25d30 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -61,7 +61,7 @@
 (define-public mate-themes
   (package
     (name "mate-themes")
-    (version "3.22.10")
+    (version "3.22.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://pub.mate-desktop.org/releases/themes/"
@@ -69,7 +69,7 @@
                                   version ".tar.xz"))
               (sha256
                (base32
-                "03ficjfxa4qpx4vcshhk2zxryivckxpw7wcjgbn8xqnjk3lgzjcb"))))
+                "1gfa1cny3q68y139m96iz8haiik6ygad5613gx0m4wd9hi5scafm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 16896502ea..94109b559a 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -2047,7 +2047,7 @@ to BMP, JPEG or PNG image formats.")
 (define-public maxima
   (package
     (name "maxima")
-    (version "5.39.0")
+    (version "5.40.0")
     (source
      (origin
        (method url-fetch)
@@ -2055,7 +2055,7 @@ to BMP, JPEG or PNG image formats.")
                            version "-source/" name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1cvignn5y6qzrby6qb885yc8zdcdqdr1d50vcvc3gapw2f0gk3zm"))
+         "15pp35ayglv723bjbqc60gcdv2bm54s6pywsm4i4cwbjsf64dzkl"))
        (patches (search-patches "maxima-defsystem-mkdir.patch"))))
     (build-system gnu-build-system)
     (inputs
diff --git a/gnu/packages/mtools.scm b/gnu/packages/mtools.scm
index 4261162427..2ac78c500a 100644
--- a/gnu/packages/mtools.scm
+++ b/gnu/packages/mtools.scm
@@ -48,7 +48,7 @@ FAT-specific file attributes.")
 (define-public exfat-utils
   (package
     (name "exfat-utils")
-    (version "1.2.6")
+    (version "1.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -56,7 +56,7 @@ FAT-specific file attributes.")
                     version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0hxcz0y3rd79nycjlzaca9wh9qj64rw8rzm0xk4jk9ljry96csxr"))))
+                "1r7z3n1zxkvlqf1wv7pg0jwlr1144wznd0slfckpsb5rap8k4q9q"))))
     (build-system gnu-build-system)
     (home-page "https://github.com/relan/exfat")
     (synopsis "Utilities to manipulate exFAT file systems")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 1e22b70329..57a02e9f4a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -306,14 +306,14 @@ receiving NDP messages.")
 (define-public ethtool
   (package
     (name "ethtool")
-    (version "4.10")
+    (version "4.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/software/network/"
                                   name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1fklbjwr41cvd5b7d1qvpl3bqzc4aak732r3m2wjhhgkxhk9f07h"))))
+                "1cp132kk2xd2cwn1ysjv0cl8i9lnq3n4zi4wy676p5k4h2mfvn0j"))))
     (build-system gnu-build-system)
     (home-page "https://www.kernel.org/pub/software/network/ethtool/")
     (synopsis "Display or change Ethernet device settings")
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 863e367a5b..68619019f1 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -448,6 +448,10 @@ written in Objective Caml.")
               (sha256
                (base32
                 "0wyywia0darak2zmc5v0ra9rn0b9whwdfiahralm8v5za499s8w3"))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "COQPATH")
+            (files (list "lib/coq/user-contrib")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("texlive" ,texlive)
@@ -2907,3 +2911,245 @@ the expected output.")
     (synopsis "Standard Jane Street ppx rewriters")
     (description "Ppx_jane is a ppx_driver including all standard ppx rewriters.")
     (license license:asl2.0)))
+
+(define-public ocaml-core-kernel
+  (package
+    (name "ocaml-core-kernel")
+    (version "113.33.03")
+    (source (janestreet-origin "core_kernel" version
+               "0fl23jrwivixawhxinbwaw9cabqnzn7fini7dxpxjjvkxdc8ip5y"))
+    (native-inputs
+     `(("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("bin_prot" ,ocaml-bin-prot)
+       ("ppx-assert" ,ocaml-ppx-assert)
+       ("ppx-bench" ,ocaml-ppx-bench)
+       ("ppx-driver" ,ocaml-ppx-driver)
+       ("ppx-expect" ,ocaml-ppx-expect)
+       ("ppx-inline-test" ,ocaml-ppx-inline-test)
+       ("typerep" ,ocaml-typerep)
+       ("sexplib" ,ocaml-sexplib)
+       ("variantslib" ,ocaml-variantslib)
+       ("result" ,ocaml-result)
+       ("fieldslib" ,ocaml-fieldslib)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/core_kernel/")
+    (synopsis "Portable standard library for OCaml")
+    (description "Core is an alternative to the OCaml standard library.
+
+Core_kernel is the system-independent part of Core.  It is aimed for cases when
+the full Core is not available, such as in Javascript.")
+    (license license:asl2.0)))
+
+(define-public ocaml-async-kernel
+  (package
+    (name "ocaml-async-kernel")
+    (version "113.33.03")
+    (source (janestreet-origin "async_kernel" version
+              "04bjsaa23j831r09r38x6xx9nhryvp0z5ihickvhxqa4fb2snyvd"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("core-kernel" ,ocaml-core-kernel)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/async_kernel/")
+    (synopsis "Monadic concurrency library")
+    (description "Async-kernel is a library for concurrent programming in OCaml.")
+    (license license:asl2.0)))
+
+(define-public ocaml-async-rpc-kernel
+  (package
+    (name "ocaml-async-rpc-kernel")
+    (version "113.33.03")
+    (source (janestreet-origin "async_rpc_kernel" version
+             "0y97h9pkb00v7jpf87m8cbb0ffkclj9g26ph6sq97q8dpisnkjwh"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("async-kernel" ,ocaml-async-kernel)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/async_rpc_kernel/")
+    (synopsis "Platform-independent core of the Async RPC library")
+    (description "Async_rpc_kernel is the platform-independent core of
+the Async RPC library.")
+    (license license:asl2.0)))
+
+(define-public ocaml-core
+  (package
+    (name "ocaml-core")
+    (version "113.33.03")
+    (source (janestreet-origin "core" version
+              "1znll157qg56g9d3247fjibv1hxv3r9wxgr4nhy19j2vzdh6a268"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("core-kernel" ,ocaml-core-kernel)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/core/")
+    (synopsis "Alternative to OCaml's standard library")
+    (description "The Core suite of libraries is an alternative to OCaml's
+standard library that was developed by Jane Street.")
+    (license license:asl2.0)))
+
+(define-public ocaml-async-unix
+  (package
+    (name "ocaml-async-unix")
+    (version "113.33.03")
+    (source (janestreet-origin "async_unix" version
+              "1fwl0lfrizllcfjk8hk8m7lsz9ha2jg6qgk4gssfyz377qvpcq4h"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("async-kernel" ,ocaml-async-kernel)
+       ("core" ,ocaml-core)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/async_unix")
+    (synopsis "Asynchronous execution library for Unix")
+    (description "Async_unix is an asynchronous execution library for Unix.")
+    (license license:asl2.0)))
+
+(define-public ocaml-async-extra
+  (package
+    (name "ocaml-async-extra")
+    (version "113.33.03")
+    (source (janestreet-origin "async_extra" version
+              "1si8jgiq5xh5sl9f2b7f9p17p7zx5h1pg557x2cxywi2x7pxqg4f"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("async-rpc-kernel" ,ocaml-async-rpc-kernel)
+       ("async-unix" ,ocaml-async-unix)
+       ("core" ,ocaml-core)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/async_extra")
+    (synopsis "Extra functionnalities for the async library")
+    (description "Async_extra provides additional functionnalities for the
+async library.")
+    (license license:asl2.0)))
+
+(define-public ocaml-async
+  (package
+    (name "ocaml-async")
+    (version "113.33.03")
+    (source (janestreet-origin "async" version
+              "0210fyhcs12kpmmd26015bgivkfd2wqkyn3c5wd7688d0f872y25"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("js-build-tools" ,ocaml-js-build-tools)
+       ("ppx-jane" ,ocaml-ppx-jane)
+       ("opam" ,opam)))
+    (propagated-inputs
+     `(("async-extra" ,ocaml-async-extra)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/async")
+    (synopsis "Monadic concurrency library")
+    (description "Async is a library for concurrent programming in OCaml.")
+    (license license:asl2.0)))
+
+(define-public ocaml-ocplib-endian
+  (package
+    (name "ocaml-ocplib-endian")
+    (version "1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/OCamlPro/ocplib-endian/"
+                                  "archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "0hwj09rnzjs0m0kazz5h2mgs6p95j0zlga8cda5srnzqmzhniwkn"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system ocaml-build-system)
+    (native-inputs `(("cppo" ,ocaml-cppo)))
+    (home-page "https://github.com/OCamlPro/ocplib-endian")
+    (synopsis "Optimised functions to read and write int16/32/64 from strings
+and bigarrays")
+    (description "Optimised functions to read and write int16/32/64 from strings
+and bigarrays, based on new primitives added in version 4.01.  It works on
+strings, bytes and bigstring (Bigarrys of chars), and provides submodules for
+big- and little-endian, with their unsafe counter-parts.")
+    (license license:lgpl2.1)))
+
+(define-public ocaml-cstruct
+  (package
+    (name "ocaml-cstruct")
+    (version "2.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mirage/ocaml-cstruct/"
+                                  "archive/v" version ".tar.gz"))
+              (sha256
+               (base32
+                "15qpdc8421shq4pprdas9jznpva45229wkfqbwcxw9khaiiz7949"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-lwt" "--enable-async")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'link-stubs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
+                    (lib (string-append out "/lib/ocaml/site-lib/cstruct")))
+               (mkdir-p stubs)
+               (symlink (string-append lib "/dllcstruct_stubs.so")
+                        (string-append stubs "/dllcstruct_stubs.so"))))))))
+    (native-inputs
+     `(("ounit" ,ocaml-ounit)
+       ("ppx-tools" ,ocaml-ppx-tools)
+       ("camlp4" ,camlp4)))
+    (propagated-inputs
+     `(("ocplib-endian" ,ocaml-ocplib-endian)
+       ("lwt" ,ocaml-lwt)
+       ("async" ,ocaml-async)
+       ("sexplib" ,ocaml-sexplib)))
+    (home-page "https://github.com/mirage/ocaml-cstruct")
+    (synopsis "Access C structures via a camlp4 extension")
+    (description "Cstruct is a library and syntax extension to make it easier
+to access C-like structures directly from OCaml.  It supports both reading and
+writing to these structures, and they are accessed via the Bigarray module.")
+    (license license:isc)))
+
+(define-public ocaml-hex
+  (package
+    (name "ocaml-hex")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mirage/ocaml-hex/"
+                                  "archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "0s63g0b8gfv2xm6fv6xg7bva8h76b5pcjb0zw3f8cygs0lq9072v"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system ocaml-build-system)
+    (propagated-inputs `(("cstruct" ,ocaml-cstruct)))
+    (home-page "https://github.com/mirage/ocaml-hex/")
+    (synopsis "Minimal library providing hexadecimal converters")
+    (description "Hex is a minimal library providing hexadecimal converters.")
+    (license license:isc)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index eb3a15e080..8cc18162aa 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -74,8 +74,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.13.0")
-        (commit "a6d728b7aaee09892b0b420d07ed2dbb7de5e63f")
-        (revision 1))
+        (commit "de9d8f0e295928d92e0e5ea43a4e594fa78c76fb")
+        (revision 2))
     (package
       (name "guix")
 
@@ -91,7 +91,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1nrskyk8z6w5i9cdfh5zxfgsrqf744sb30ssqi2g5xhijwagr1yq"))
+                  "0px7n4vajc9am3snhnnvddrmnwnb2ygwz0f8isk0qhk8b1ks4kdx"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/patches/gnome-shell-CVE-2017-8288.patch b/gnu/packages/patches/gnome-shell-CVE-2017-8288.patch
deleted file mode 100644
index 5d8e31563f..0000000000
--- a/gnu/packages/patches/gnome-shell-CVE-2017-8288.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-Fix CVE-2017-8288:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8288
-http://seclists.org/oss-sec/2017/q2/136
-
-Patch copied from upstream source repository:
-
-https://git.gnome.org/browse/gnome-shell/commit/?id=ff425d1db7082e2755d2a405af53861552acf2a1
-
-From ff425d1db7082e2755d2a405af53861552acf2a1 Mon Sep 17 00:00:00 2001
-From: Emilio Pozuelo Monfort <pochu27@gmail.com>
-Date: Tue, 25 Apr 2017 17:27:42 +0200
-Subject: extensionSystem: handle reloading broken extensions
-
-Some extensions out there may fail to reload. When that happens,
-we need to catch any exceptions so that we don't leave things in
-a broken state that could lead to leaving extensions enabled in
-the screen shield.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=781728
----
- js/ui/extensionSystem.js | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
-index a4dc29e..fc352b8 100644
---- a/js/ui/extensionSystem.js
-+++ b/js/ui/extensionSystem.js
-@@ -282,12 +282,20 @@ function _onVersionValidationChanged() {
-     // temporarily disable them all
-     enabledExtensions = [];
-     for (let uuid in ExtensionUtils.extensions)
--        reloadExtension(ExtensionUtils.extensions[uuid]);
-+        try {
-+            reloadExtension(ExtensionUtils.extensions[uuid]);
-+        } catch(e) {
-+            logExtensionError(uuid, e);
-+        }
-     enabledExtensions = getEnabledExtensions();
- 
-     if (Main.sessionMode.allowExtensions) {
-         enabledExtensions.forEach(function(uuid) {
--            enableExtension(uuid);
-+            try {
-+                enableExtension(uuid);
-+            } catch(e) {
-+                logExtensionError(uuid, e);
-+            }
-         });
-     }
- }
--- 
-cgit v0.12
-
diff --git a/gnu/packages/patches/libgdata-fix-tests.patch b/gnu/packages/patches/libgdata-fix-tests.patch
new file mode 100644
index 0000000000..dc86b3ab5a
--- /dev/null
+++ b/gnu/packages/patches/libgdata-fix-tests.patch
@@ -0,0 +1,325 @@
+From c87a112246e0bcbd5c3a8aa484a50c617d710dbf Mon Sep 17 00:00:00 2001
+From: Philip Withnall <philip.withnall@collabora.co.uk>
+Date: Fri, 12 Dec 2014 17:31:01 +0000
+Subject: [PATCH] tests: Eliminate ISO 8601 formatting workaround for dates
+
+Follow up to commit 732017e4e5235e28c578cc3367fa0c4548b65495.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739956
+---
+ gdata/tests/calendar.c | 20 ++++++++++----------
+ gdata/tests/general.c  | 34 +++++++++++++++++-----------------
+ gdata/tests/tasks.c    | 34 +++++++++++++++++-----------------
+ gdata/tests/youtube.c  | 16 ++++++++--------
+ 4 files changed, 52 insertions(+), 52 deletions(-)
+
+diff --git a/gdata/tests/calendar.c b/gdata/tests/calendar.c
+index bb1d609..c54ddda 100644
+--- a/gdata/tests/calendar.c
++++ b/gdata/tests/calendar.c
+@@ -620,7 +620,7 @@ test_event_xml (void)
+ 			"<gCal:guestsCanInviteOthers value='false'/>"
+ 			"<gCal:guestsCanSeeGuests value='false'/>"
+ 			"<gCal:anyoneCanAddSelf value='false'/>"
+-			"<gd:when startTime='2009-04-17T15:00:00.000001+00:00' endTime='2009-04-17T17:00:00.000001+00:00'/>"
++			"<gd:when startTime='2009-04-17T15:00:00Z' endTime='2009-04-17T17:00:00Z'/>"
+ 			"<gd:who email='john.smith@example.com' "
+ 			        "rel='http://schemas.google.com/g/2005#event.organizer' "
+ 			        "valueString='John Smith\342\200\275'/>"
+@@ -706,7 +706,7 @@ test_event_xml_dates (void)
+ 			"<gCal:guestsCanSeeGuests value='false'/>"
+ 			"<gCal:anyoneCanAddSelf value='false'/>"
+ 			"<gd:when startTime='2009-04-17'/>"
+-			"<gd:when startTime='2009-04-17T15:00:00.000001+00:00'/>"
++			"<gd:when startTime='2009-04-17T15:00:00Z'/>"
+ 			"<gd:when startTime='2009-04-27' endTime='2009-05-06'/>"
+ 		"</entry>");
+ 
+@@ -934,25 +934,25 @@ test_query_uri (void)
+ 
+ 	/* Check the built query URI with a normal feed URI */
+ 	query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
+-	g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00.000001+00:00"
+-	                                "&recurrence-expansion-end=2010-04-17T15:00:00.000001+00:00&singleevents=true&sortorder=descending"
+-	                                "&start-min=2009-04-17T15:00:00.000001+00:00&start-max=2010-04-17T15:00:00.000001+00:00&ctz=America%2FLos_Angeles&max-attendees=15"
++	g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00Z"
++	                                "&recurrence-expansion-end=2010-04-17T15:00:00Z&singleevents=true&sortorder=descending"
++	                                "&start-min=2009-04-17T15:00:00Z&start-max=2010-04-17T15:00:00Z&ctz=America%2FLos_Angeles&max-attendees=15"
+ 	                                "&showdeleted=true");
+ 	g_free (query_uri);
+ 
+ 	/* …with a feed URI with a trailing slash */
+ 	query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com/");
+-	g_assert_cmpstr (query_uri, ==, "http://example.com/?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00.000001+00:00"
+-	                                "&recurrence-expansion-end=2010-04-17T15:00:00.000001+00:00&singleevents=true&sortorder=descending"
+-	                                "&start-min=2009-04-17T15:00:00.000001+00:00&start-max=2010-04-17T15:00:00.000001+00:00&ctz=America%2FLos_Angeles&max-attendees=15"
++	g_assert_cmpstr (query_uri, ==, "http://example.com/?q=q&futureevents=true&orderby=starttime&recurrence-expansion-start=2009-04-17T15:00:00Z"
++	                                "&recurrence-expansion-end=2010-04-17T15:00:00Z&singleevents=true&sortorder=descending"
++	                                "&start-min=2009-04-17T15:00:00Z&start-max=2010-04-17T15:00:00Z&ctz=America%2FLos_Angeles&max-attendees=15"
+ 	                                "&showdeleted=true");
+ 	g_free (query_uri);
+ 
+ 	/* …with a feed URI with pre-existing arguments */
+ 	query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com/bar/?test=test&this=that");
+ 	g_assert_cmpstr (query_uri, ==, "http://example.com/bar/?test=test&this=that&q=q&futureevents=true&orderby=starttime"
+-	                                "&recurrence-expansion-start=2009-04-17T15:00:00.000001+00:00&recurrence-expansion-end=2010-04-17T15:00:00.000001+00:00"
+-	                                "&singleevents=true&sortorder=descending&start-min=2009-04-17T15:00:00.000001+00:00&start-max=2010-04-17T15:00:00.000001+00:00"
++	                                "&recurrence-expansion-start=2009-04-17T15:00:00Z&recurrence-expansion-end=2010-04-17T15:00:00Z"
++	                                "&singleevents=true&sortorder=descending&start-min=2009-04-17T15:00:00Z&start-max=2010-04-17T15:00:00Z"
+ 	                                "&ctz=America%2FLos_Angeles&max-attendees=15&showdeleted=true");
+ 	g_free (query_uri);
+ 
+diff --git a/gdata/tests/general.c b/gdata/tests/general.c
+index 237a908..f828d2e 100644
+--- a/gdata/tests/general.c
++++ b/gdata/tests/general.c
+@@ -528,8 +528,8 @@ test_entry_parse_xml (void)
+ 			 "<?xml version='1.0' encoding='UTF-8'?>"
+ 			 "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' xmlns:ns='http://example.com/'>"
+ 				"<title type='text'>Testing unhandled XML</title>"
+-				"<updated>2009-01-25T14:07:37.000001+00:00</updated>"
+-				"<published>2009-01-23T14:06:37.000001+00:00</published>"
++				"<updated>2009-01-25T14:07:37Z</updated>"
++				"<published>2009-01-23T14:06:37Z</published>"
+ 				"<content type='text'>Here we test unhandled XML elements.</content>"
+ 				"<foobar>Test!</foobar>"
+ 				"<barfoo shizzle=\"zing\"/>"
+@@ -569,8 +569,8 @@ test_entry_parse_xml_kind_category (void)
+ 			 "<?xml version='1.0' encoding='UTF-8'?>"
+ 			 "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>"
+ 				"<title type='text'>Testing kind categories</title>"
+-				"<updated>2009-01-25T14:07:37.000001+00:00</updated>"
+-				"<published>2009-01-23T14:06:37.000001+00:00</published>"
++				"<updated>2009-01-25T14:07:37Z</updated>"
++				"<published>2009-01-23T14:06:37Z</published>"
+ 				"<content type='text'>Here we test kind categories.</content>"
+ 			"<category term='http://schemas.google.com/docs/2007#file' "
+ 			          "scheme='http://schemas.google.com/g/2005#kind' "
+@@ -620,7 +620,7 @@ test_entry_parse_json (void)
+ 		"{"
+ 			"\"title\":\"A title\","
+ 			"\"id\":\"some-id\","
+-			"\"updated\":\"2009-01-25T14:07:37.000001+00:00\","
++			"\"updated\":\"2009-01-25T14:07:37Z\","
+ 			"\"etag\":\"some-etag\","
+ 			"\"selfLink\":\"http://example.com/\","
+ 			"\"kind\":\"kind#kind\","
+@@ -760,8 +760,8 @@ test_entry_escaping (void)
+ 		"<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>"
+ 			"<title type='text'>Escaped content &amp; stuff</title>"
+ 			"<id>http://foo.com/?foo&amp;bar</id>"
+-			"<updated>2010-12-10T17:21:24.000001+00:00</updated>"
+-			"<published>2010-12-10T17:21:24.000001+00:00</published>"
++			"<updated>2010-12-10T17:21:24Z</updated>"
++			"<published>2010-12-10T17:21:24Z</published>"
+ 			"<summary type='text'>Summary &amp; stuff</summary>"
+ 			"<rights>Free &amp; open source</rights>"
+ 			"<content type='text'>Content &amp; things.</content>"
+@@ -1106,7 +1106,7 @@ test_feed_escaping (void)
+ 		"<feed xmlns='http://www.w3.org/2005/Atom'>"
+ 			"<title type='text'>Test feed &amp; stuff.</title>"
+ 			"<id>http://foo.com?foo&amp;bar</id>"
+-			"<updated>2010-12-10T17:49:15.000001+00:00</updated>"
++			"<updated>2010-12-10T17:49:15Z</updated>"
+ 		"</feed>");
+ 	g_object_unref (feed);
+ }
+@@ -1157,28 +1157,28 @@ test_query_dates (void)
+ 	/* updated-min */
+ 	gdata_query_set_updated_min (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
+-	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-min=2013-07-08T10:41:54.000001+00:00");
++	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-min=2013-07-08T10:41:54Z");
+ 	g_free (query_uri);
+ 	gdata_query_set_updated_min (query, -1);
+ 
+ 	/* updated-max */
+ 	gdata_query_set_updated_max (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
+-	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-max=2013-07-08T10:41:54.000001+00:00");
++	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-max=2013-07-08T10:41:54Z");
+ 	g_free (query_uri);
+ 	gdata_query_set_updated_max (query, -1);
+ 
+ 	/* published-min */
+ 	gdata_query_set_published_min (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
+-	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-min=2013-07-08T10:41:54.000001+00:00");
++	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-min=2013-07-08T10:41:54Z");
+ 	g_free (query_uri);
+ 	gdata_query_set_published_min (query, -1);
+ 
+ 	/* published-max */
+ 	gdata_query_set_published_max (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ 	query_uri = gdata_query_get_query_uri (query, "http://example.com");
+-	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-max=2013-07-08T10:41:54.000001+00:00");
++	g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-max=2013-07-08T10:41:54Z");
+ 	g_free (query_uri);
+ 	gdata_query_set_published_max (query, -1);
+ 
+@@ -3127,7 +3127,7 @@ test_gd_reminder (void)
+ 	gdata_test_assert_xml (reminder,
+ 			 "<?xml version='1.0' encoding='UTF-8'?>"
+ 			 "<gd:reminder xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' "
+-				"absoluteTime='2005-06-07T00:55:00.000001+00:00' method='alert'/>");
++				"absoluteTime='2005-06-07T00:55:00Z' method='alert'/>");
+ 	g_object_unref (reminder);
+ }
+ 
+@@ -3218,8 +3218,8 @@ test_gd_when (void)
+ 	/* Check the outputted XML is the same */
+ 	gdata_test_assert_xml (when,
+ 			 "<?xml version='1.0' encoding='UTF-8'?>"
+-			 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' startTime='2005-06-07T01:00:00.000001+00:00' "
+-				"endTime='2005-06-07T02:00:00.000001+00:00'/>");
++			 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' startTime='2005-06-07T01:00:00Z' "
++				"endTime='2005-06-07T02:00:00Z'/>");
+ 	g_object_unref (when);
+ 
+ 	/* Now parse a time with different information */
+@@ -3258,7 +3258,7 @@ test_gd_when (void)
+ 			 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' startTime='2005-06-06' "
+ 				"endTime='2005-06-08' valueString='This weekend'>"
+ 				"<gd:reminder minutes='15'/>"
+-				"<gd:reminder absoluteTime='2005-06-06T00:00:00.000001+00:00' method='alert'/>"
++				"<gd:reminder absoluteTime='2005-06-06T00:00:00Z' method='alert'/>"
+ 				"<foobar/>"
+ 			 "</gd:when>");
+ 	g_object_unref (when);
+@@ -3278,7 +3278,7 @@ test_gd_when_escaping (void)
+ 	gdata_test_assert_xml (when,
+ 	                 "<?xml version='1.0' encoding='UTF-8'?>"
+ 	                 "<gd:when xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' "
+-	                          "startTime='2005-06-07T01:00:00.000001+00:00' valueString='Value string &amp; stuff!'/>");
++	                          "startTime='2005-06-07T01:00:00Z' valueString='Value string &amp; stuff!'/>");
+ 	g_object_unref (when);
+ }
+ 
+diff --git a/gdata/tests/tasks.c b/gdata/tests/tasks.c
+index 7a5bc7e..7bf3174 100644
+--- a/gdata/tests/tasks.c
++++ b/gdata/tests/tasks.c
+@@ -122,11 +122,11 @@ test_query_uri (void)
+ 	g_assert_cmpstr (query_uri, ==,
+ 	                 "http://example.com"
+ 	                 "?maxResults=10"
+-	                 "&updatedMin=1970-01-01T01:53:09.000001+00:00"
+-	                 "&completedMin=1970-01-01T01:34:38.000001+00:00"
+-	                 "&completedMax=1970-01-01T00:20:34.000001+00:00"
+-	                 "&dueMin=1970-01-01T00:39:05.000001+00:00"
+-	                 "&dueMax=1970-01-01T00:57:36.000001+00:00"
++	                 "&updatedMin=1970-01-01T01:53:09Z"
++	                 "&completedMin=1970-01-01T01:34:38Z"
++	                 "&completedMax=1970-01-01T00:20:34Z"
++	                 "&dueMin=1970-01-01T00:39:05Z"
++	                 "&dueMax=1970-01-01T00:57:36Z"
+ 	                 "&showCompleted=true"
+ 	                 "&showDeleted=true"
+ 	                 "&showHidden=true");
+@@ -148,11 +148,11 @@ test_query_uri (void)
+ 	g_assert_cmpstr (query_uri, ==,
+ 	                 "http://example.com"
+ 	                 "?maxResults=10"
+-	                 "&updatedMin=1970-01-01T01:53:09.000001+00:00"
+-	                 "&completedMin=1970-01-01T01:34:38.000001+00:00"
+-	                 "&completedMax=1970-01-01T00:20:34.000001+00:00"
+-	                 "&dueMin=1970-01-01T00:39:05.000001+00:00"
+-	                 "&dueMax=1970-01-01T00:57:36.000001+00:00"
++	                 "&updatedMin=1970-01-01T01:53:09Z"
++	                 "&completedMin=1970-01-01T01:34:38Z"
++	                 "&completedMax=1970-01-01T00:20:34Z"
++	                 "&dueMin=1970-01-01T00:39:05Z"
++	                 "&dueMax=1970-01-01T00:57:36Z"
+ 	                 "&showCompleted=false"
+ 	                 "&showDeleted=false"
+ 	                 "&showHidden=false");
+@@ -317,8 +317,8 @@ test_task_properties (void)
+ 			"\"title\": \"some-other-title\","
+ 			"\"notes\": \"more-notes\","
+ 			"\"status\": \"completed\","
+-			"\"due\": \"2014-08-30T17:20:00.000001+00:00\","
+-			"\"completed\": \"2014-08-30T17:20:00.000001+00:00\","
++			"\"due\": \"2014-08-30T17:20:00Z\","
++			"\"completed\": \"2014-08-30T17:20:00Z\","
+ 			"\"deleted\": true,"
+ 			"\"hidden\": false"
+ 		"}");
+@@ -332,8 +332,8 @@ test_task_properties (void)
+ 			"\"title\": \"some-other-title\","
+ 			"\"notes\": \"more-notes\","
+ 			"\"status\": \"completed\","
+-			"\"due\": \"2014-08-30T17:20:00.000001+00:00\","
+-			"\"completed\": \"2014-08-30T17:20:00.000001+00:00\","
++			"\"due\": \"2014-08-30T17:20:00Z\","
++			"\"completed\": \"2014-08-30T17:20:00Z\","
+ 			"\"deleted\": false,"
+ 			"\"hidden\": false"
+ 		"}");
+@@ -496,14 +496,14 @@ test_task_parser_normal (void)
+ 			"\"id\": \"some-id\","
+ 			"\"etag\": \"some-etag\","
+ 			"\"title\": \"some-title \\\"with quotes\\\"\","
+-			"\"updated\": \"2014-08-30T19:40:00.000001+00:00\","
++			"\"updated\": \"2014-08-30T19:40:00Z\","
+ 			"\"selfLink\": \"http://some-uri/\","
+ 			"\"parent\": \"some-parent-id\","
+ 			"\"position\": \"some-position\","
+ 			"\"notes\": \"Some notes!\","
+ 			"\"status\": \"needsAction\","
+-			"\"due\": \"2014-08-30T20:00:00.000001+00:00\","
+-			"\"completed\": \"2014-08-30T20:10:05.000001+00:00\","
++			"\"due\": \"2014-08-30T20:00:00Z\","
++			"\"completed\": \"2014-08-30T20:10:05Z\","
+ 			"\"deleted\": false,"
+ 			"\"hidden\": true,"
+ 			/* Unhandled for the moment: */
+diff --git a/gdata/tests/youtube.c b/gdata/tests/youtube.c
+index a1e070a..1195bc3 100644
+--- a/gdata/tests/youtube.c
++++ b/gdata/tests/youtube.c
+@@ -967,8 +967,8 @@ test_parsing_yt_recorded (void)
+ 				"gd:etag='W/\"CEMFSX47eCp7ImA9WxVUGEw.\"'>"
+ 				"<title type='text'>Judas Priest - Painkiller</title>"
+ 				"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+-				"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
+-				"<published>2006-05-16T14:06:37.000001+00:00</published>"
++				"<updated>2009-03-23T12:46:58Z</updated>"
++				"<published>2006-05-16T14:06:37Z</published>"
+ 				"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
+ 				"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
+ 				"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
+@@ -1055,8 +1055,8 @@ test_parsing_yt_access_control (void)
+ 				"gd:etag='W/\"CEMFSX47eCp7ImA9WxVUGEw.\"'>"
+ 				"<title type='text'>Judas Priest - Painkiller</title>"
+ 				"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+-				"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
+-				"<published>2006-05-16T14:06:37.000001+00:00</published>"
++				"<updated>2009-03-23T12:46:58Z</updated>"
++				"<published>2006-05-16T14:06:37Z</published>"
+ 				"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
+ 				"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
+ 				"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
+@@ -1255,8 +1255,8 @@ test_parsing_georss_where (void)
+ 		       "xmlns:gml='http://www.opengis.net/gml'>"
+ 			"<title type='text'>Some video somewhere</title>"
+ 			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+-			"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
+-			"<published>2006-05-16T14:06:37.000001+00:00</published>"
++			"<updated>2009-03-23T12:46:58Z</updated>"
++			"<published>2006-05-16T14:06:37Z</published>"
+ 			"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
+ 			"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
+ 			"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
+@@ -1295,8 +1295,8 @@ test_parsing_georss_where (void)
+ 		       "xmlns:gml='http://www.opengis.net/gml'>"
+ 			"<title type='text'>Some video somewhere</title>"
+ 			"<id>tag:youtube.com,2008:video:JAagedeKdcQ</id>"
+-			"<updated>2009-03-23T12:46:58.000001+00:00</updated>"
+-			"<published>2006-05-16T14:06:37.000001+00:00</published>"
++			"<updated>2009-03-23T12:46:58Z</updated>"
++			"<published>2006-05-16T14:06:37Z</published>"
+ 			"<category term='http://gdata.youtube.com/schemas/2007#video' scheme='http://schemas.google.com/g/2005#kind'/>"
+ 			"<link href='http://www.youtube.com/watch?v=JAagedeKdcQ' rel='http://www.iana.org/assignments/relation/alternate' type='text/html'/>"
+ 			"<link href='http://gdata.youtube.com/feeds/api/videos/JAagedeKdcQ?client=ytapi-google-jsdemo' rel='http://www.iana.org/assignments/relation/self' type='application/atom+xml'/>"
+-- 
+1.9.3
diff --git a/gnu/packages/patches/libgdata-glib-duplicate-tests.patch b/gnu/packages/patches/libgdata-glib-duplicate-tests.patch
new file mode 100644
index 0000000000..d5d8d064de
--- /dev/null
+++ b/gnu/packages/patches/libgdata-glib-duplicate-tests.patch
@@ -0,0 +1,16 @@
+diff -ur a/gdata/tests/oauth1-authorizer.c b/gdata/tests/oauth1-authorizer.c
+--- a/gdata/tests/oauth1-authorizer.c	1969-12-31 19:00:00.000000000 -0500
++++ b/gdata/tests/oauth1-authorizer.c	2017-05-27 19:35:30.551725678 -0400
+@@ -1045,10 +1045,10 @@
+ 	/* Sync request-authentication-uri tests */
+ 	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync", OAuth1AuthorizerData, NULL, set_up_oauth1_authorizer_data,
+ 	            test_oauth1_authorizer_request_authentication_uri_sync, tear_down_oauth1_authorizer_data);
+-	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains", OAuth1AuthorizerData, NULL,
++	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains1", OAuth1AuthorizerData, NULL,
+ 	            set_up_oauth1_authorizer_data_multiple_domains, test_oauth1_authorizer_request_authentication_uri_sync,
+ 	            tear_down_oauth1_authorizer_data);
+-	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains", OAuth1AuthorizerData, NULL,
++	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/multiple-domains2", OAuth1AuthorizerData, NULL,
+ 	            set_up_oauth1_authorizer_data_locale, test_oauth1_authorizer_request_authentication_uri_sync,
+ 	            tear_down_oauth1_authorizer_data);
+ 	g_test_add ("/oauth1-authorizer/request-authentication-uri/sync/cancellation", OAuth1AuthorizerData, NULL,
diff --git a/gnu/packages/patches/libssh-hostname-parser-bug.patch b/gnu/packages/patches/libssh-hostname-parser-bug.patch
new file mode 100644
index 0000000000..69f46cbdd6
--- /dev/null
+++ b/gnu/packages/patches/libssh-hostname-parser-bug.patch
@@ -0,0 +1,31 @@
+Fix "Hostname" parsing in OpenSSH config files, as reported
+at <https://red.libssh.org/issues/260>.
+
+From: Niels Ole Salscheider <niels_ole@salscheider-online.de>
+Date: Mon, 8 May 2017 17:36:13 +0200
+Subject: [PATCH] Fix reading of the first parameter
+
+This is a fixup for 7b8b5eb4eac314a3a29be812bef0264c6611f6e7.
+Previously, it would return as long as the parameter was _not_ seen
+before. It also did not handle the case for the unsupported opcode (-1)
+which would cause a segfault when accessing the "seen" array.
+---
+ src/config.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/config.c b/src/config.c
+index 7c03b27..238a655 100644
+--- a/src/config.c
++++ b/src/config.c
+@@ -218,8 +218,9 @@ static int ssh_config_parse_line(ssh_session session, const char *line,
+   }
+ 
+   opcode = ssh_config_get_opcode(keyword);
+-  if (*parsing == 1 && opcode != SOC_HOST) {
+-      if (seen[opcode] == 0) {
++  if (*parsing == 1 && opcode != SOC_HOST &&
++      opcode > SOC_UNSUPPORTED && opcode < SOC_END) {
++      if (seen[opcode] == 1) {
+           return 0;
+       }
+       seen[opcode] = 1;
diff --git a/gnu/packages/patches/openscenegraph-ffmpeg3.patch b/gnu/packages/patches/openscenegraph-ffmpeg3.patch
new file mode 100644
index 0000000000..02c04a5583
--- /dev/null
+++ b/gnu/packages/patches/openscenegraph-ffmpeg3.patch
@@ -0,0 +1,156 @@
+Description: Replace deprecated FFmpeg API
+Author: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
+See <http://forum.openscenegraph.org/viewtopic.php?t=15832>.
+--- a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp
++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp
+@@ -71,7 +71,7 @@ void FFmpegDecoderVideo::open(AVStream *
+     findAspectRatio();
+ 
+     // Find out whether we support Alpha channel
+-    m_alpha_channel = (m_context->pix_fmt == PIX_FMT_YUVA420P);
++    m_alpha_channel = (m_context->pix_fmt == AV_PIX_FMT_YUVA420P);
+ 
+     // Find out the framerate
+     m_frame_rate = av_q2d(stream->avg_frame_rate);
+@@ -91,20 +91,19 @@ void FFmpegDecoderVideo::open(AVStream *
+         throw std::runtime_error("avcodec_open() failed");
+ 
+     // Allocate video frame
+-    m_frame.reset(avcodec_alloc_frame());
++    m_frame.reset(av_frame_alloc());
+ 
+     // Allocate converted RGB frame
+-    m_frame_rgba.reset(avcodec_alloc_frame());
+-    m_buffer_rgba[0].resize(avpicture_get_size(PIX_FMT_RGB24, width(), height()));
++    m_frame_rgba.reset(av_frame_alloc());
++    m_buffer_rgba[0].resize(avpicture_get_size(AV_PIX_FMT_RGB24, width(), height()));
+     m_buffer_rgba[1].resize(m_buffer_rgba[0].size());
+ 
+     // Assign appropriate parts of the buffer to image planes in m_frame_rgba
+-    avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], PIX_FMT_RGB24, width(), height());
++    avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[0])[0], AV_PIX_FMT_RGB24, width(), height());
+ 
+     // Override get_buffer()/release_buffer() from codec context in order to retrieve the PTS of each frame.
+     m_context->opaque = this;
+-    m_context->get_buffer = getBuffer;
+-    m_context->release_buffer = releaseBuffer;
++    m_context->get_buffer2 = getBuffer;
+ }
+ 
+ 
+@@ -263,8 +262,8 @@ int FFmpegDecoderVideo::convert(AVPictur
+ #ifdef USE_SWSCALE
+     if (m_swscale_ctx==0)
+     {
+-        m_swscale_ctx = sws_getContext(src_width, src_height, (PixelFormat) src_pix_fmt,
+-                                      src_width, src_height, (PixelFormat) dst_pix_fmt,
++        m_swscale_ctx = sws_getContext(src_width, src_height, (AVPixelFormat) src_pix_fmt,
++                                      src_width, src_height, (AVPixelFormat) dst_pix_fmt,
+                                       /*SWS_BILINEAR*/ SWS_BICUBIC, NULL, NULL, NULL);
+     }
+ 
+@@ -311,14 +310,14 @@ void FFmpegDecoderVideo::publishFrame(co
+     AVPicture * const dst = (AVPicture *) m_frame_rgba.get();
+ 
+     // Assign appropriate parts of the buffer to image planes in m_frame_rgba
+-    avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], PIX_FMT_RGB24, width(), height());
++    avpicture_fill((AVPicture *) (m_frame_rgba).get(), &(m_buffer_rgba[m_writeBuffer])[0], AV_PIX_FMT_RGB24, width(), height());
+ 
+     // Convert YUVA420p (i.e. YUV420p plus alpha channel) using our own routine
+ 
+-    if (m_context->pix_fmt == PIX_FMT_YUVA420P)
++    if (m_context->pix_fmt == AV_PIX_FMT_YUVA420P)
+         yuva420pToRgba(dst, src, width(), height());
+     else
+-        convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width(), height());
++        convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width(), height());
+ 
+     // Wait 'delay' seconds before publishing the picture.
+     int i_delay = static_cast<int>(delay * 1000000 + 0.5);
+@@ -345,7 +344,7 @@ void FFmpegDecoderVideo::publishFrame(co
+ 
+ void FFmpegDecoderVideo::yuva420pToRgba(AVPicture * const dst, AVPicture * const src, int width, int height)
+ {
+-    convert(dst, PIX_FMT_RGB24, src, m_context->pix_fmt, width, height);
++    convert(dst, AV_PIX_FMT_RGB24, src, m_context->pix_fmt, width, height);
+ 
+     const size_t bpp = 4;
+ 
+@@ -363,31 +362,28 @@ void FFmpegDecoderVideo::yuva420pToRgba(
+     }
+ }
+ 
+-
+-
+-int FFmpegDecoderVideo::getBuffer(AVCodecContext * const context, AVFrame * const picture)
++int FFmpegDecoderVideo::getBuffer(AVCodecContext * const context, AVFrame * const picture, int flags)
+ {
++    AVBufferRef *ref;
+     const FFmpegDecoderVideo * const this_ = reinterpret_cast<const FFmpegDecoderVideo*>(context->opaque);
+ 
+-    const int result = avcodec_default_get_buffer(context, picture);
++    const int result = avcodec_default_get_buffer2(context, picture, flags);
+     int64_t * p_pts = reinterpret_cast<int64_t*>( av_malloc(sizeof(int64_t)) );
+ 
+     *p_pts = this_->m_packet_pts;
+     picture->opaque = p_pts;
+ 
++    ref = av_buffer_create((uint8_t *)picture->opaque, sizeof(int64_t), FFmpegDecoderVideo::freeBuffer, picture->buf[0], flags);
++    picture->buf[0] = ref;
++
+     return result;
+ }
+ 
+-
+-
+-void FFmpegDecoderVideo::releaseBuffer(AVCodecContext * const context, AVFrame * const picture)
++void FFmpegDecoderVideo::freeBuffer(void *opaque, uint8_t *data)
+ {
+-    if (picture != 0)
+-        av_freep(&picture->opaque);
+-
+-    avcodec_default_release_buffer(context, picture);
++    AVBufferRef *ref = (AVBufferRef *)opaque;
++    av_buffer_unref(&ref);
++    av_free(data);
+ }
+ 
+-
+-
+ } // namespace osgFFmpeg
+--- a/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp
++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderVideo.hpp
+@@ -94,8 +94,8 @@ private:
+                 int src_pix_fmt, int src_width, int src_height);
+ 
+ 
+-    static int getBuffer(AVCodecContext * context, AVFrame * picture);
+-    static void releaseBuffer(AVCodecContext * context, AVFrame * picture);
++    static int getBuffer(AVCodecContext * context, AVFrame * picture, int flags);
++    static void freeBuffer(void * opaque, uint8_t *data);
+ 
+     PacketQueue &           m_packets;
+     FFmpegClocks &          m_clocks;
+--- a/src/osgPlugins/ffmpeg/FFmpegParameters.cpp
++++ b/src/osgPlugins/ffmpeg/FFmpegParameters.cpp
+@@ -19,7 +19,7 @@ extern "C"
+     #include <libavutil/pixdesc.h>
+ }
+ 
+-inline PixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); }
++inline AVPixelFormat osg_av_get_pix_fmt(const char *name) { return av_get_pix_fmt(name); }
+ 
+ 
+ namespace osgFFmpeg {
+--- a/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp	2016-02-18 21:25:39.627923629 +0000
++++ b/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp	2016-02-18 21:26:17.071140100 +0000
+@@ -227,8 +227,7 @@
+         if (avcodec_open2(m_context, p_codec, NULL) < 0)
+             throw std::runtime_error("avcodec_open() failed");
+ 
+-        m_context->get_buffer = avcodec_default_get_buffer;
+-        m_context->release_buffer = avcodec_default_release_buffer;
++        m_context->get_buffer2 = avcodec_default_get_buffer2;
+ 
+     }
+ 
diff --git a/gnu/packages/patches/perl-file-path-CVE-2017-6512.patch b/gnu/packages/patches/perl-file-path-CVE-2017-6512.patch
new file mode 100644
index 0000000000..28ab067599
--- /dev/null
+++ b/gnu/packages/patches/perl-file-path-CVE-2017-6512.patch
@@ -0,0 +1,173 @@
+Fix CVE-2017-6512:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6512
+https://rt.cpan.org/Public/Bug/Display.html?id=121951
+
+Patch copied from Debian, adapted to apply to the copy of File::Path in Perl
+5.24.0.
+
+https://github.com/jkeenan/File-Path/commit/e5ef95276ee8ad471c66ee574a5d42552b3a6af2
+https://anonscm.debian.org/cgit/perl/perl.git/diff/debian/patches/fixes/file_path_chmod_race.diff?id=e7b50f8fb6413f8ddfbbfda2d531615fb029e2d3
+
+From d760748be0efca7c05454440e24f3df77bf7cf5d Mon Sep 17 00:00:00 2001
+From: John Lightsey <john@nixnuts.net>
+Date: Tue, 2 May 2017 12:03:52 -0500
+Subject: Prevent directory chmod race attack.
+
+CVE-2017-6512 is a race condition attack where the chmod() of directories
+that cannot be entered is misused to change the permissions on other
+files or directories on the system. This has been corrected by limiting
+the directory-permission loosening logic to systems where fchmod() is
+supported.
+
+[Backported (whitespace adjustments) to File-Path 2.12 / perl 5.24 by
+Dominic Hargreaves for Debian.]
+
+Bug: https://rt.cpan.org/Public/Bug/Display.html?id=121951
+Bug-Debian: https://bugs.debian.org/863870
+Patch-Name: fixes/file_path_chmod_race.diff
+---
+ cpan/File-Path/lib/File/Path.pm | 39 +++++++++++++++++++++++++--------------
+ cpan/File-Path/t/Path.t         | 40 ++++++++++++++++++++++++++--------------
+ 2 files changed, 51 insertions(+), 28 deletions(-)
+
+diff --git a/cpan/File-Path/lib/File/Path.pm b/cpan/File-Path/lib/File/Path.pm
+index 034da1e..a824cc8 100644
+--- a/cpan/File-Path/lib/File/Path.pm
++++ b/cpan/File-Path/lib/File/Path.pm
+@@ -354,21 +354,32 @@ sub _rmtree {
+ 
+                 # see if we can escalate privileges to get in
+                 # (e.g. funny protection mask such as -w- instead of rwx)
+-                $perm &= oct '7777';
+-                my $nperm = $perm | oct '700';
+-                if (
+-                    !(
+-                           $arg->{safe}
+-                        or $nperm == $perm
+-                        or chmod( $nperm, $root )
+-                    )
+-                  )
+-                {
+-                    _error( $arg,
+-                        "cannot make child directory read-write-exec", $canon );
+-                    next ROOT_DIR;
++                # This uses fchmod to avoid traversing outside of the proper
++                # location (CVE-2017-6512)
++                my $root_fh;
++                if (open($root_fh, '<', $root)) {
++                    my ($fh_dev, $fh_inode) = (stat $root_fh )[0,1];
++                    $perm &= oct '7777';
++                    my $nperm = $perm | oct '700';
++                    local $@;
++                    if (
++                        !(
++                            $arg->{safe}
++                           or $nperm == $perm
++                           or !-d _
++                           or $fh_dev ne $ldev
++                           or $fh_inode ne $lino
++                           or eval { chmod( $nperm, $root_fh ) }
++                        )
++                      )
++                    {
++                        _error( $arg,
++                            "cannot make child directory read-write-exec", $canon );
++                        next ROOT_DIR;
++                    }
++                    close $root_fh;
+                 }
+-                elsif ( !chdir($root) ) {
++                if ( !chdir($root) ) {
+                     _error( $arg, "cannot chdir to child", $canon );
+                     next ROOT_DIR;
+                 }
+diff --git a/cpan/File-Path/t/Path.t b/cpan/File-Path/t/Path.t
+index ff52fd6..956ca09 100644
+--- a/cpan/File-Path/t/Path.t
++++ b/cpan/File-Path/t/Path.t
+@@ -3,7 +3,7 @@
+ 
+ use strict;
+ 
+-use Test::More tests => 127;
++use Test::More tests => 126;
+ use Config;
+ use Fcntl ':mode';
+ use lib 't/';
+@@ -18,6 +18,13 @@ BEGIN {
+ 
+ my $Is_VMS = $^O eq 'VMS';
+ 
++my $fchmod_supported = 0;
++if (open my $fh, curdir()) {
++    my ($perm) = (stat($fh))[2];
++    $perm &= 07777;
++    eval { $fchmod_supported = chmod( $perm, $fh); };
++}
++
+ # first check for stupid permissions second for full, so we clean up
+ # behind ourselves
+ for my $perm (0111,0777) {
+@@ -299,16 +306,19 @@ is($created[0], $dir, "created directory (old style 3 mode undef) cross-check");
+ 
+ is(rmtree($dir, 0, undef), 1, "removed directory 3 verbose undef");
+ 
+-$dir = catdir($tmp_base,'G');
+-$dir = VMS::Filespec::unixify($dir) if $Is_VMS;
++SKIP: {
++    skip "fchmod of directories not supported on this platform", 3 unless $fchmod_supported;
++    $dir = catdir($tmp_base,'G');
++    $dir = VMS::Filespec::unixify($dir) if $Is_VMS;
+ 
+-@created = mkpath($dir, undef, 0200);
++    @created = mkpath($dir, undef, 0400);
+ 
+-is(scalar(@created), 1, "created write-only dir");
++    is(scalar(@created), 1, "created read-only dir");
+ 
+-is($created[0], $dir, "created write-only directory cross-check");
++    is($created[0], $dir, "created read-only directory cross-check");
+ 
+-is(rmtree($dir), 1, "removed write-only dir");
++    is(rmtree($dir), 1, "removed read-only dir");
++}
+ 
+ # borderline new-style heuristics
+ if (chdir $tmp_base) {
+@@ -450,26 +460,28 @@ SKIP: {
+ }
+ 
+ SKIP : {
+-    my $skip_count = 19;
++    my $skip_count = 18;
+     # this test will fail on Windows, as per:
+     #   http://perldoc.perl.org/perlport.html#chmod
+ 
+     skip "Windows chmod test skipped", $skip_count
+         if $^O eq 'MSWin32';
++    skip "fchmod() on directories is not supported on this platform", $skip_count
++        unless $fchmod_supported;
+     my $mode;
+     my $octal_mode;
+     my @inputs = (
+-      0777, 0700, 0070, 0007,
+-      0333, 0300, 0030, 0003,
+-      0111, 0100, 0010, 0001,
+-      0731, 0713, 0317, 0371, 0173, 0137,
+-      00 );
++      0777, 0700, 0470, 0407,
++      0433, 0400, 0430, 0403,
++      0111, 0100, 0110, 0101,
++      0731, 0713, 0317, 0371,
++      0173, 0137);
+     my $input;
+     my $octal_input;
+-    $dir = catdir($tmp_base, 'chmod_test');
+ 
+     foreach (@inputs) {
+         $input = $_;
++        $dir = catdir($tmp_base, sprintf("chmod_test%04o", $input));
+         # We can skip from here because 0 is last in the list.
+         skip "Mode of 0 means assume user defaults on VMS", 1
+           if ($input == 0 && $Is_VMS);
diff --git a/gnu/packages/patches/xf86-input-wacom-xorg-abi-25.patch b/gnu/packages/patches/xf86-input-wacom-xorg-abi-25.patch
deleted file mode 100644
index dc594bdccb..0000000000
--- a/gnu/packages/patches/xf86-input-wacom-xorg-abi-25.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Resolves a test compatibility issue with xorg >= 1.19.
-
-Upstream bug report:
-
-https://sourceforge.net/p/linuxwacom/bugs/329/
-
-Patch copied from upstream source repository:
-
-https://sourceforge.net/p/linuxwacom/xf86-input-wacom/ci/f0dedf7a610ac97bc45738492b98ce4f1e0514ec/
-
-From f0dedf7a610ac97bc45738492b98ce4f1e0514ec Mon Sep 17 00:00:00 2001
-From: Jason Gerecke <killertofu@gmail.com>
-Date: Wed, 18 Jan 2017 09:00:10 -0800
-Subject: [PATCH] tests: Fix compilation under ABI 25 and greater
-
-diff --git a/test/fake-symbols.c b/test/fake-symbols.c
-index 6f2c10a..e649fb9 100644
---- a/test/fake-symbols.c
-+++ b/test/fake-symbols.c
-@@ -493,6 +493,7 @@ void TimerFree(OsTimerPtr timer)
- {
- }
- 
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 24
- int
- xf86BlockSIGIO (void)
- {
-@@ -503,6 +504,15 @@ void
- xf86UnblockSIGIO (int wasset)
- {
- }
-+#else
-+void input_lock (void)
-+{
-+}
-+
-+void input_unlock (void)
-+{
-+}
-+#endif
- 
- /* This is not the same as the X server one, but it'll do for the tests */
- #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 14
--- 
-2.11.1
-
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index c3b486988d..876bad80d8 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -60,6 +60,7 @@
               (base32
                "0zxn9hd7mqgq06ikyi6k70ngbvjf01z1paw0jd25byyl0rlwdrzb"))
              (patches (search-patches
+                       "perl-file-path-CVE-2017-6512.patch"
                        "perl-no-sys-dirs.patch"
                        "perl-autosplit-default-time.patch"
                        "perl-deterministic-ordering.patch"
@@ -2986,17 +2987,17 @@ platforms.")
 (define-public perl-file-path
   (package
     (name "perl-file-path")
-    (version "2.12")
+    (version "2.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://cpan/authors/id/R/RI/RICHE/File-Path-"
+             "mirror://cpan/authors/id/J/JK/JKEENAN/File-Path-"
              version
              ".tar.gz"))
        (sha256
         (base32
-         "0znihrlcnlpa0ziml0hkq9s59p1bjd2a6khgx2accdf16w6imxmv"))))
+         "039gc0i5cbdmidl8j8x195yykwcdmzwawmpapnysvljl8l33jqwj"))))
     (build-system perl-build-system)
     (home-page "http://search.cpan.org/dist/File-Path")
     (synopsis "Create or remove directory trees")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 14511d0c32..6691095e55 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,8 +49,7 @@
 (define-public ruby
   (package
     (name "ruby")
-    (version "2.3.3")
-    (replacement ruby-2.3.4)
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
@@ -58,7 +58,7 @@
                            "/ruby-" version ".tar.xz"))
        (sha256
         (base32
-         "1p0rfk0blrbfjcnv0vb0ha4hxflgkfhv9zbzp4vvld2pi31ahkqs"))
+         "141nnsdk2q83c23p5kl404id8gy1ap261gin48rbjj5sbksgx1rs"))
        (modules '((guix build utils)))
        (snippet `(begin
                    ;; Remove bundled libffi
@@ -102,11 +102,11 @@ a focus on simplicity and productivity.")
     (home-page "https://ruby-lang.org")
     (license license:ruby)))
 
-(define ruby-2.3.4
+(define-public ruby-2.3
   (package
     (inherit ruby)
-    (name "ruby")
     (version "2.3.4")
+    (replacement #f)
     (source
      (origin
        (method url-fetch)
@@ -447,13 +447,13 @@ expectations and mocks frameworks.")
 (define-public bundler
   (package
     (name "bundler")
-    (version "1.14.6")
+    (version "1.15.1")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "bundler" version))
               (sha256
                (base32
-                "0h3x2csvlz99v2ryj1w72vn6kixf7rl35lhdryvh7s49brnj0cgl"))))
+                "1mq0n8g08vf2rnd7fvylx3f4sspx15abid49gycf9zzsjj7w8vps"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -1199,13 +1199,13 @@ use GNU gettext tools for maintenance.")
 (define-public ruby-test-unit
   (package
     (name "ruby-test-unit")
-    (version "3.1.5")
+    (version "3.2.4")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "test-unit" version))
               (sha256
                (base32
-                "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w"))))
+                "09mb34lnffracsqxl4dav4c21p5nr4pj9hm5qy2s83k5hbjya3s7"))))
     (build-system ruby-build-system)
     (propagated-inputs
      `(("ruby-power-assert" ,ruby-power-assert)))
@@ -1460,16 +1460,17 @@ allows mocking and stubbing of methods on real (non-mock) classes.")
 (define-public ruby-net-ssh
   (package
     (name "ruby-net-ssh")
-    (version "3.0.1")
+    (version "4.1.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "net-ssh" version))
               (sha256
                (base32
-                "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf"))))
+                "013p5jb4wy0cq7x7036piw2a3s1i9p752ki1srx2m289mpz4ml3q"))))
     (build-system ruby-build-system)
     (native-inputs
-     `(("ruby-mocha" ,ruby-mocha)
+     `(("bundler" ,bundler)
+       ("ruby-mocha" ,ruby-mocha)
        ("ruby-test-unit" ,ruby-test-unit)))
     (synopsis "Ruby implementation of the SSH2 client protocol")
     (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
@@ -1481,13 +1482,13 @@ with processes on remote servers, via SSH2.")
 (define-public ruby-minitest
   (package
     (name "ruby-minitest")
-    (version "5.10.1")
+    (version "5.10.2")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "minitest" version))
               (sha256
                (base32
-                "1yk2m8sp0p5m1niawa3ncg157a4i0594cg7z91rzjxv963rzrwab"))))
+                "11my86fnihvpndyknn3c14hc82nhsgggnhlxh8h3bdjpmfsvl0my"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("ruby-hoe" ,ruby-hoe)))
@@ -1514,7 +1515,13 @@ facilities supporting TDD, BDD, mocking, and benchmarking.")
           (lambda _
             (substitute* "Rakefile"
               (("self\\.rubyforge_name = .*") ""))
-            #t)))))))
+            #t))
+         (add-after 'build 'exclude-failing-tests
+           (lambda _
+             ;; Some tests are failing on Ruby 2.4 due to the deprecation of
+             ;; Fixnum.
+             (delete-file "test/minitest/test_minitest_spec.rb")
+             #t)))))))
 
 (define-public ruby-minitest-sprint
   (package
@@ -2224,9 +2231,15 @@ current line in an external editor.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'set-rubylib
+         (add-before 'check 'set-rubylib-and-patch-gemfile
           (lambda _
             (setenv "RUBYLIB" "lib")
+            (substitute* "sdoc.gemspec"
+              (("s.add_runtime_dependency.*") "\n")
+              (("s.add_dependency.*") "\n"))
+            (substitute* "Gemfile"
+              (("gem \"rake\".*")
+               "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
             #t)))))
     (propagated-inputs
      `(("ruby-json" ,ruby-json)))
@@ -2274,13 +2287,13 @@ documentation for Ruby code.")
 (define-public ruby-gem-hadar
   (package
     (name "ruby-gem-hadar")
-    (version "1.3.1")
+    (version "1.9.1")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "gem_hadar" version))
               (sha256
                (base32
-                "1j8qri4m9wf8nbfv0kakrgsv2x8vg10914xgm6f69nw8zi3i39ws"))))
+                "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
     (build-system ruby-build-system)
     ;; This gem needs itself at development time. We disable rebuilding of the
     ;; gemspec to avoid this loop.
@@ -2294,9 +2307,7 @@ documentation for Ruby code.")
     (propagated-inputs
      `(("git" ,git)
        ("ruby-tins" ,ruby-tins)
-       ("ruby-sdoc" ,ruby-sdoc)))
-    (native-inputs
-     `(("bundler" ,bundler)))
+       ("ruby-yard" ,ruby-yard)))
     (synopsis "Library for the development of Ruby gems")
     (description
      "This library contains some useful functionality to support the
@@ -2437,14 +2448,14 @@ when working with Ruby code.")
 (define-public ruby-json
   (package
     (name "ruby-json")
-    (version "1.8.3")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "json" version))
        (sha256
         (base32
-         "1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
+         "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
     (build-system ruby-build-system)
     (arguments '(#:tests? #f)) ; dependency cycle with sdoc
     (synopsis "JSON library for Ruby")
@@ -2697,14 +2708,14 @@ unacceptable HTML and/or CSS from a string.")
 (define-public ruby-ox
   (package
     (name "ruby-ox")
-    (version "2.2.1")
+    (version "2.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "ox" version))
        (sha256
         (base32
-         "00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
+         "0rar0xr5qn3zac1r2z18kmpapx121c2l3z8jsgh60vsddwzpdh7h"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; no tests
@@ -2759,14 +2770,14 @@ alternative to Marshal for Object serialization. ")
 (define-public ruby-pg
   (package
     (name "ruby-pg")
-    (version "0.18.2")
+    (version "0.20.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "pg" version))
        (sha256
         (base32
-         "1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
+         "03xcgwjs6faxis81jxf2plnlalg55dhhafqv3kvjxfr8ic7plpw5"))))
     (build-system ruby-build-system)
     (arguments
      '(#:test-target "spec"))
@@ -3576,7 +3587,19 @@ It has built-in support for the legacy @code{cookies.txt} and
          ;; be require'd.
          (replace 'check
            (lambda _
-             (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
+             (zero? (system* "ruby" "-Ilib" "-r" "ansi"))))
+         (add-before 'validate-runpath 'replace-broken-symlink
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (file (string-append out "/lib/ruby/gems/"
+                                         ,(package-version ruby)
+                                         "/gems/ansi-" ,version
+                                         "/lib/ansi.yml")))
+               ;; XXX: This symlink is broken since ruby 2.4.
+               ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
+               (delete-file file)
+               (symlink "../.index" file)
+               #t))))))
     (synopsis "ANSI escape code related libraries")
     (description
      "This package is a collection of ANSI escape code related libraries
@@ -3765,7 +3788,19 @@ requirement specifications systems like Cucumber.")
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _ (zero? (system* "qed")))))))
+           (lambda _ (zero? (system* "qed"))))
+         (add-before 'validate-runpath 'replace-broken-symlink
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (file (string-append out "/lib/ruby/gems/"
+                                         ,(package-version ruby)
+                                         "/gems/ae-" ,version
+                                         "/lib/ae.yml")))
+               ;; XXX: This symlink is broken since ruby 2.4.
+               ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
+               (delete-file file)
+               (symlink "../.index" file)
+               #t))))))
     (propagated-inputs
      `(("ruby-ansi" ,ruby-ansi)))
     (native-inputs
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index c96ed0a72b..d79663a2b5 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -58,15 +58,16 @@
 (define-public libssh
   (package
     (name "libssh")
-    (version "0.7.4")
+    (version "0.7.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://red.libssh.org/attachments/download/210/libssh-"
+                    "https://red.libssh.org/attachments/download/218/libssh-"
                     version ".tar.xz"))
               (sha256
                (base32
-                "03bcp9ksqp0s1pmwfmzhcknvkxay5k0mjzzxp3rjlifbng1vxq9r"))))
+                "15bh6dm9c50ndddzh3gqcgw7axp3ghrspjpkb1z3dr90vkanvs2l"))
+              (patches (search-patches "libssh-hostname-parser-bug.patch"))))
     (build-system cmake-build-system)
     (outputs '("out" "debug"))
     (arguments
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 32c9a132a6..cd2576c51a 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -118,14 +118,14 @@ as well as the classic centralized workflow.")
 (define-public git
   (package
    (name "git")
-   (version "2.13.0")
+   (version "2.13.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0n0j36rapw31zb0sabap88ffncv8jg3nwc4miyim64ilyav2mgsb"))))
+              "1zl88rlga9nhgaqc9d04vp1l1g4x6qj1d02698asnxrzk36vxh9v"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -138,7 +138,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "1jcp5bjam0cqzc41bvd3qwzv2f35zdajr8icxb89q29b5v3gj544"))))))
+            "0w7z6mis1x1skhg08qj95yczdsh1qipqnimfj60nsky40ryhkpg3"))))))
    (inputs
     `(("curl" ,curl)
       ("expat" ,expat)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 909d23ad2e..4b3d83df28 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -311,7 +311,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
 (define-public libass
   (package
     (name "libass")
-    (version "0.13.6")
+    (version "0.13.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -319,7 +319,7 @@ designed to encode video or images into an H.265 / HEVC encoded bitstream.")
                     version "/libass-" version ".tar.xz"))
               (sha256
                (base32
-                "0b9cj5xfsa7zwlk5m146fhv102v51iqs3rapq0n2xrz30k8p9a7q"))))
+                "17byv926w1mxn56n896sxvdq4m0yv1l7qbm688h6zr3nzgsyarbh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -411,7 +411,7 @@ SMPTE 314M.")
 (define-public libva
   (package
     (name "libva")
-    (version "1.8.1")
+    (version "1.8.2")
     (source
      (origin
        (method url-fetch)
@@ -419,7 +419,7 @@ SMPTE 314M.")
              "https://www.freedesktop.org/software/vaapi/releases/libva/libva-"
              version".tar.bz2"))
        (sha256
-        (base32 "0wswfznj93jpnxhc3jwdk5j3pmyki0rs6k9vk4vnzds0dddximf1"))))
+        (base32 "1pnfl3q7dzxs26l3jk9xi97gr0qwnaz6dhvf9ifp2yplr3fy7lwy"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -629,14 +629,14 @@ audio/video codec library.")
 (define-public ffmpeg-2.8
   (package
     (inherit ffmpeg)
-    (version "2.8.11")
+    (version "2.8.12")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1rhz7rhmhhh8bjcj3dc82haisn3qjbzqlr7k6d6v7064jgn3maiq"))))
+               "1gc32akvdms3rywphnap94lqqici8l5898a09ir1ad5rif5g24v2"))))
     (arguments
      (substitute-keyword-arguments (package-arguments ffmpeg)
        ((#:configure-flags flags)
@@ -1001,7 +1001,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2017.05.07")
+    (version "2017.06.05")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1009,7 +1009,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1q3b9xkbk1lmy1wxm1jcnmaj70sdksqbc8zsqxz6b6z4nmv8qc25"))))
+                "132f4csbl4bv71b01pnqfkd7hbbc6wclrh1h12fr1182954ahk5m"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -2172,7 +2172,7 @@ many codecs and formats supported by libmediainfo.")
 (define-public livemedia-utils
   (package
     (name "livemedia-utils")
-    (version "2017.05.24")
+    (version "2017.06.04")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2180,7 +2180,7 @@ many codecs and formats supported by libmediainfo.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1ra64j3qa89hf3xika8jz9gd8al8mcaqlk5ivw5pclnd2df5f4im"))))
+                "0xf3vynxqpxpd762zni0jkblnjlgbqxjx99m83m7gqx6zriph271"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index bcc20bfdde..5f27ef957d 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,6 +69,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnu-doc)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
@@ -708,6 +710,34 @@ modifying pages and incoming and outgoing headers, monitoring pages for
 changes, and much more.")
     (license l:gpl2+)))
 
+(define-public liboauth
+  (package
+    (name "liboauth")
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/liboauth/liboauth-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
+    (build-system gnu-build-system)
+    (arguments '(#:configure-flags '("--enable-nss")))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("curl" ,curl)
+       ("nss" ,nss)))
+    (home-page "https://sourceforge.net/projects/liboauth")
+    (synopsis "C library implementing the OAuth API")
+    (description
+     "liboauth is a collection of C functions implementing the OAuth API.
+liboauth provides functions to escape and encode strings according to OAuth
+specifications and offers high-level functionality built on top to sign
+requests or verify signatures using either NSS or OpenSSL for calculating the
+hash/signatures.")
+    ;; Source code may be distributed under either license.
+    (license (list l:expat l:gpl2+))))
+
 (define-public libyaml
   (package
     (name "libyaml")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index cd53091ced..28921f190a 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -72,7 +72,7 @@
 (define-public libconfuse
   (package
     (name "libconfuse")
-    (version "3.1")
+    (version "3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/martinh/libconfuse/"
@@ -80,7 +80,7 @@
                                   "/confuse-" version ".tar.xz"))
               (sha256
                (base32
-                "0rnacgfkd88qyxrfdfzn9cxz533l9s5wrzb9093f9mbi00gg6wc1"))))
+                "0j2fg93w22apjfqnkak8k8m395n2l7hhm9xnjx0k2v82js3bnsm4"))))
     (build-system gnu-build-system)
     (home-page "https://github.com/martinh/libconfuse")
     (synopsis "Configuration file parser library")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index d9cee8a257..3b06fbeb6b 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -791,14 +791,14 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "0.23")
+    (version "0.25")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/linuxwacom/libwacom/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0qiikh95b9crybkwgcbbv9y80hb7lsbvvmvaia4gbgbdyagwb2m0"))))
+                "1k20w2fkql3yr0dpdg51jjwzv7d4kp53ajmpyhcjxa08s0n8dl19"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -823,7 +823,7 @@ Wacom tablet applet.")
 (define-public xf86-input-wacom
   (package
     (name "xf86-input-wacom")
-    (version "0.34.0")
+    (version "0.34.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -831,9 +831,7 @@ Wacom tablet applet.")
                     name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0idhkigl0pnyp08sqm6bqfb4h20v6rjrb71z1gdv59gk7d7qwpgi"))
-              (patches
-               (search-patches "xf86-input-wacom-xorg-abi-25.patch"))))
+                "073bf12ka1mcqvr1sviixb51bsfx37jalrj9xw53f10i2kdvkl9a"))))
     (arguments
      `(#:configure-flags
        (list (string-append "--with-sdkdir="
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 7d981712da..78717cc203 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -3623,7 +3623,7 @@ alternative implementations like XRandR or TwinView.")
 (define xkbcomp-intermediate ; used as input for xkeyboard-config
   (package
     (name "xkbcomp-intermediate")
-    (version "1.3.1")
+    (version "1.4.0")
     (source
       (origin
         (method url-fetch)
@@ -3633,7 +3633,7 @@ alternative implementations like XRandR or TwinView.")
                ".tar.bz2"))
         (sha256
          (base32
-          "0gcjy70ppmcl610z8gxc7sydsx93f8cm8pggm4qhihaa1ngdq103"))))
+          "0syfc6zscvai824mzihlnrqxhkcr27dzkpy8zndavi83iischsdw"))))
     (build-system gnu-build-system)
     (inputs
       `(("xproto" ,xproto)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 7cd9a34ca2..813535ed65 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1352,6 +1352,10 @@ failed to register hydra.gnu.org public key: ~a~%" status))))))))
                     (default #t))
   (substitute-urls  guix-configuration-substitute-urls ;list of strings
                     (default %default-substitute-urls))
+  (max-silent-time  guix-configuration-max-silent-time ;integer
+                    (default 0))
+  (timeout          guix-configuration-timeout    ;integer
+                    (default 0))
   (extra-options    guix-configuration-extra-options ;list of strings
                     (default '()))
   (log-file         guix-configuration-log-file   ;string
@@ -1371,7 +1375,9 @@ failed to register hydra.gnu.org public key: ~a~%" status))))))))
   (match config
     (($ <guix-configuration> guix build-group build-accounts
                              authorize-key? keys
-                             use-substitutes? substitute-urls extra-options
+                             use-substitutes? substitute-urls
+                             max-silent-time timeout
+                             extra-options
                              log-file lsof http-proxy tmpdir)
      (list (shepherd-service
             (documentation "Run the Guix daemon.")
@@ -1381,6 +1387,8 @@ failed to register hydra.gnu.org public key: ~a~%" status))))))))
              #~(make-forkexec-constructor
                 (list #$(file-append guix "/bin/guix-daemon")
                       "--build-users-group" #$build-group
+                      "--max-silent-time" #$(number->string max-silent-time)
+                      "--timeout" #$(number->string timeout)
                       #$@(if use-substitutes?
                              '()
                              '("--no-substitutes"))
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index 32c5c310e1..a41f918049 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -88,7 +88,7 @@
   "Return the base distribution module for a given module.  E.g. the 'ok'
 module is distributed with 'Test::Simple', so (module->dist-name \"ok\") would
 return \"Test-Simple\""
-  (assoc-ref (json-fetch (string-append "https://api.metacpan.org/module/"
+  (assoc-ref (json-fetch (string-append "https://fastapi.metacpan.org/v1/module/"
                                         module
                                         "?fields=distribution"))
              "distribution"))
@@ -113,7 +113,7 @@ return \"Test-Simple\""
   "Return an alist representation of the CPAN metadata for the perl module MODULE,
 or #f on failure.  MODULE should be e.g. \"Test::Script\""
   ;; This API always returns the latest release of the module.
-  (json-fetch (string-append "https://api.metacpan.org/release/" name)))
+  (json-fetch (string-append "https://fastapi.metacpan.org/v1/release/" name)))
 
 (define (cpan-home name)
   (string-append "http://search.cpan.org/dist/" name))
diff --git a/guix/ssh.scm b/guix/ssh.scm
index 4fb145230d..32cf6e464b 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -150,23 +150,44 @@ can be written."
   ;; makes a round trip every time 32 KiB have been transferred.  This
   ;; procedure instead opens a separate channel to use the remote
   ;; 'import-paths' procedure, which consumes all the data in a single round
-  ;; trip.
+  ;; trip.  This optimizes the successful case at the expense of error
+  ;; conditions: errors can only be reported once all the input has been
+  ;; consumed.
   (define import
     `(begin
-       (use-modules (guix))
-
-       (with-store store
-         (setvbuf (current-input-port) _IONBF)
-
-         ;; FIXME: Exceptions are silently swallowed.  We should report them
-         ;; somehow.
-         (import-paths store (current-input-port)))))
-
-  (open-remote-output-pipe session
-                           (string-join
-                            `("guile" "-c"
-                              ,(object->string
-                                (object->string import))))))
+       (use-modules (guix) (srfi srfi-34)
+                    (rnrs io ports) (rnrs bytevectors))
+
+       (define (consume-input port)
+         (let ((bv (make-bytevector 32768)))
+           (let loop ()
+             (let ((n (get-bytevector-n! port bv 0
+                                         (bytevector-length bv))))
+               (unless (eof-object? n)
+                 (loop))))))
+
+       ;; Upon completion, write an sexp that denotes the status.
+       (write
+        (catch #t
+          (lambda ()
+            (guard (c ((nix-protocol-error? c)
+                       ;; Consume all the input since the only time we can
+                       ;; report the error is after everything has been
+                       ;; consumed.
+                       (consume-input (current-input-port))
+                       (list 'protocol-error (nix-protocol-error-message c))))
+              (with-store store
+                (setvbuf (current-input-port) _IONBF)
+                (import-paths store (current-input-port))
+                '(success))))
+          (lambda args
+            (cons 'error args))))))
+
+  (open-remote-pipe session
+                    (string-join
+                     `("guile" "-c"
+                       ,(object->string (object->string import))))
+                    OPEN_BOTH))
 
 (define* (store-export-channel session files
                                #:key recursive?)
@@ -224,10 +245,29 @@ Return the list of store items actually sent."
     ;; mark of 'export-paths' would be enough, but in practice it's not.)
     (channel-send-eof port)
 
-    ;; Wait for completion of the remote process.
-    (let ((result (zero? (channel-get-exit-status port))))
+    ;; Wait for completion of the remote process and read the status sexp from
+    ;; PORT.
+    (let* ((result (false-if-exception (read port)))
+           (status (zero? (channel-get-exit-status port))))
       (close-port port)
-      missing)))
+      (match result
+        (('success . _)
+         missing)
+        (('protocol-error message)
+         (raise (condition
+                 (&nix-protocol-error (message message) (status 42)))))
+        (('error key args ...)
+         (raise (condition
+                 (&nix-protocol-error
+                  (message (call-with-output-string
+                             (lambda (port)
+                               (print-exception port #f key args))))
+                  (status 43)))))
+        (_
+         (raise (condition
+                 (&nix-protocol-error
+                  (message "unknown error while sending files over SSH")
+                  (status 44)))))))))
 
 (define (remote-store-session remote)
   "Return the SSH channel beneath REMOTE, a remote store as returned by
diff --git a/tests/cpan.scm b/tests/cpan.scm
index 8b588517c9..de865b22be 100644
--- a/tests/cpan.scm
+++ b/tests/cpan.scm
@@ -74,10 +74,10 @@
         (mock ((guix http-client) http-fetch
                (lambda (url . rest)
                  (match url
-                   ("https://api.metacpan.org/release/Foo-Bar"
+                   ("https://fastapi.metacpan.org/v1/release/Foo-Bar"
                     (values (open-input-string test-json)
                             (string-length test-json)))
-                   ("https://api.metacpan.org/module/Test::Script?fields=distribution"
+                   ("https://fastapi.metacpan.org/v1/module/Test::Script?fields=distribution"
                     (let ((result "{ \"distribution\" : \"Test-Script\" }"))
                       (values (open-input-string result)
                               (string-length result))))