summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi34
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/admin.scm8
-rw-r--r--gnu/packages/build-tools.scm4
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/crypto.scm33
-rw-r--r--gnu/packages/databases.scm8
-rw-r--r--gnu/packages/emacs.scm7
-rw-r--r--gnu/packages/freedesktop.scm12
-rw-r--r--gnu/packages/gl.scm4
-rw-r--r--gnu/packages/gnuzilla.scm13
-rw-r--r--gnu/packages/gstreamer.scm34
-rw-r--r--gnu/packages/gtk.scm12
-rw-r--r--gnu/packages/linux.scm18
-rw-r--r--gnu/packages/messaging.scm8
-rw-r--r--gnu/packages/patches/icecat-bug-1452075.patch441
-rw-r--r--gnu/packages/pdf.scm4
-rw-r--r--gnu/packages/python.scm53
-rw-r--r--gnu/packages/skribilo.scm22
-rw-r--r--gnu/packages/tex.scm18
-rw-r--r--gnu/packages/version-control.scm3
-rw-r--r--gnu/packages/wine.scm8
-rw-r--r--gnu/packages/xdisorg.scm4
-rw-r--r--gnu/services/base.scm15
-rw-r--r--gnu/services/networking.scm2
-rw-r--r--guix/scripts/system/search.scm37
-rw-r--r--tests/guix-system.sh3
27 files changed, 676 insertions, 134 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 58c3688c03..87892fc892 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10383,15 +10383,31 @@ See @code{man loadkeys} for details.
 
 @cindex mouse
 @cindex gpm
-@deffn {Scheme Procedure} gpm-service [#:gpm @var{gpm}] @
-          [#:options]
-Run @var{gpm}, the general-purpose mouse daemon, with the given
-command-line @var{options}.  GPM allows users to use the mouse in the console,
-notably to select, copy, and paste text.  The default value of @var{options}
-uses the @code{ps2} protocol, which works for both USB and PS/2 mice.
-
-This service is not part of @var{%base-services}.
-@end deffn
+@defvr {Scheme Variable} gpm-service-type
+This is the type of the service that runs GPM, the @dfn{general-purpose
+mouse daemon}, which provides mouse support to the Linux console.  GPM
+allows users to use the mouse in the console, notably to select, copy,
+and paste text.
+
+The value for services of this type must be a @code{gpm-configuration}
+(see below).  This service is not part of @var{%base-services}.
+@end defvr
+
+@deftp {Data Type} gpm-configuration
+Data type representing the configuration of GPM.
+
+@table @asis
+@item @code{options} (default: @code{%default-gpm-options})
+Command-line options passed to @command{gpm}.  The default set of
+options instruct @command{gpm} to listen to mouse events on
+@file{/dev/input/mice}.  @xref{Command Line,,, gpm, gpm manual}, for
+more information.
+
+@item @code{gpm} (default: @code{gpm})
+The GPM package to use.
+
+@end table
+@end deftp
 
 @anchor{guix-publish-service-type}
 @deffn {Scheme Variable} guix-publish-service-type
diff --git a/gnu/local.mk b/gnu/local.mk
index e2dc64b7e9..bce35f9a9d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -787,6 +787,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch        \
   %D%/packages/patches/hydra-disable-darcs-test.patch		\
   %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
+  %D%/packages/patches/icecat-bug-1452075.patch			\
   %D%/packages/patches/icecat-use-system-graphite2.patch	\
   %D%/packages/patches/icecat-use-system-harfbuzz.patch		\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index a6abe86403..3d69f682a9 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1261,7 +1261,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20180313")
+    (version "20180427")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1269,7 +1269,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "16galaadmr37q2pvk2gyxrm8d1xldzk31djfxfq9v1c9yq4i425h"))))
+                "1hfdzyzzznh9h8yjlz54p02zwwxyp5k7fgzxlb9phhj3kalp60md"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
@@ -1278,7 +1278,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                           "CC=gcc"
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
-       #:tests? #f  ; no 'check' target.
+       #:tests? #f                      ; no 'check' target
        #:phases (modify-phases %standard-phases (delete 'configure))))
     (home-page "https://acpica.org/")
     (synopsis "Tools for the development and debug of ACPI tables")
@@ -1290,7 +1290,7 @@ of ACPI meant to be directly integrated into the host OS as a kernel-resident
 subsystem, and a small set of tools to assist in developing and debugging ACPI
 tables.  This package contains only the user-space tools needed for ACPI table
 development, not the kernel implementation of ACPI.")
-    (license license:gpl2)))  ; Dual GPLv2/ACPICA Licence
+    (license license:gpl2)))            ; dual GPLv2/ACPICA Licence
 
 (define-public stress
   (package
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 09cb7c9e97..4b078e78ed 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -98,7 +98,7 @@ generate such a compilation database.")
 (define-public meson
   (package
     (name "meson")
-    (version "0.45.0")
+    (version "0.45.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mesonbuild/meson/"
@@ -106,7 +106,7 @@ generate such a compilation database.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1r3wlimllakrswx2rb4mbdk1iricqk6myvdvib6dkyx362yanm9l"))))
+                "1yqa4337nb8w92bvr91rsxmn0xkf7pmdybq9ljvnqmdvn7dv02sd"))))
     (build-system python-build-system)
     (arguments
      `(;; FIXME: Tests require many additional inputs, a fix for the RUNPATH
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index bfc5ff169f..3f592cf17b 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -76,7 +76,7 @@
 (define-public nss-certs
   (package
     (name "nss-certs")
-    (version "3.36")
+    (version "3.36.1")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -87,7 +87,7 @@
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "1580qc0a4s8v3k3vg7zz4xly4alkjrw7qq9zy2nf6p4v56wcfg53"))))
+                "1zrb49mp7cy3snnday1zv8d76h1mgppbcwxnlkqsgxlga8fl89b0"))))
     (build-system gnu-build-system)
     (outputs '("out"))
     (native-inputs
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index a574e652eb..5b2e3c106e 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -671,7 +671,7 @@ BLAKE.")
 (define-public rhash
   (package
     (name "rhash")
-    (version "1.3.5")
+    (version "1.3.6")
     (source
      (origin
        (method url-fetch)
@@ -680,32 +680,27 @@ BLAKE.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0bhz3xdl6r06k1bqigdjz42l31iqz2qdpg7zk316i7p2ra56iq4q"))))
+         "14ngzfgmd1lfp7m78sn49x8ymf2s37nrr67c6p5vas85nrrgjkcn"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "CC=gcc"
-                          (string-append "PREFIX=" %output))
-       #:test-target "test"
+     `(#:make-flags
+       ;; The binaries in /bin need some help finding librhash.so.0.
+       (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+       #:test-target "test"             ; ‘make check’ just checks the sources
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
+           ;; ./configure is not GNU autotools' and doesn't gracefully handle
+           ;; unrecognized options, so we must call it manually.
            (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "Makefile"
-               (("\\$\\(DESTDIR\\)/etc")
-                (string-append (assoc-ref outputs "out") "/etc")))
-             #t))
-         (add-after 'build 'build-library
+             (invoke "./configure"
+                     (string-append "--prefix=" (assoc-ref outputs "out")))))
+         (add-after 'install 'install-library-extras
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "lib-shared" make-flags)))
-         (add-after 'install 'install-library
-           (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "install-lib-shared" make-flags)
              (apply invoke
-                    "make" "-C" "librhash" "install-headers"
-                    "install-so-link" make-flags)))
-         (add-after 'check 'check-library
-           (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "test-shared-lib" make-flags))))))
+                    "make" "-C" "librhash"
+                    "install-headers" "install-so-link"
+                    make-flags))))))
     (home-page "https://sourceforge.net/projects/rhash/")
     (synopsis "Utility for computing hash sums")
     (description "RHash is a console utility for calculation and verification
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 441a6977f6..77ed2fdddc 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1125,7 +1125,7 @@ extremely small.")
 (define-public perl-dbix-class
   (package
     (name "perl-dbix-class")
-    (version "0.082840")
+    (version "0.082841")
     (source
      (origin
        (method url-fetch)
@@ -1133,7 +1133,7 @@ extremely small.")
                            "DBIx-Class-" version ".tar.gz"))
        (sha256
         (base32
-         "1vw1f756g8m5hq11nqf5dk2cw2y4mqq91ca5p75fn5g3fp8syja0"))))
+         "1gf3hgv8f9rnr8bl4ljgsqk4aliphmvljhsk4282kvdc4mcgh1fp"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
@@ -1233,7 +1233,7 @@ introspected and examined.")
 (define-public perl-dbix-class-schema-loader
   (package
     (name "perl-dbix-class-schema-loader")
-    (version "0.07047")
+    (version "0.07049")
     (source
      (origin
        (method url-fetch)
@@ -1241,7 +1241,7 @@ introspected and examined.")
                            "DBIx-Class-Schema-Loader-" version ".tar.gz"))
        (sha256
         (base32
-         "06s2q6xj95600sdlfph57spjk2z1gjs4zwq5b7mz7d5izcxgnwb6"))))
+         "0r57fv71ypxafb85cpxph1hdqii7ipjwvc19yb6fpkvq2ggcssg8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-config-any" ,perl-config-any)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 3bd15989ad..fcb4390358 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -353,10 +353,6 @@ implementation, Emacs and, ultimately, the schemer, giving them access to live
 metadata.")
     (license license:bsd-3)))
 
-(define-public geiser-next
-  ;; This has become "geiser".
-  (deprecated-package "geiser-next" geiser))
-
 (define-public paredit
   (package
     (name "emacs-paredit")
@@ -382,9 +378,6 @@ for those who may want transient periods of unbalanced parentheses, such as
 when typing parentheses directly or commenting out code line by line.")
     (license license:gpl3+)))
 
-(define-public paredit/old-name
-  (deprecated-package "paredit" paredit))
-
 (define-public git-modes
   (package
     (name "emacs-git-modes")
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 49e391f9db..ad1725fcc5 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -147,14 +147,14 @@ freedesktop.org project.")
 (define-public libinput
   (package
     (name "libinput")
-    (version "1.10.2")
+    (version "1.10.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://freedesktop.org/software/libinput/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1fbv354ii1g4wc4k7d7gbnalqjpzmk9zlpi8linqrzlf6inpc28m"))))
+                "0002xk9cqzpqrlhgav1wp8nimsbp9d2w8rd8mgygczq2hjar0lhd"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=false")))
@@ -437,14 +437,14 @@ Python.")
 (define-public wayland
   (package
     (name "wayland")
-    (version "1.14.0")
+    (version "1.15.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://wayland.freedesktop.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f3sla6h0bw15fz8pjc67jhwj7pwmfdc7qlj42j5k9v116ycm07d"))))
+                "1c5fnys8hi71cnzjv5k7j0r8gx80p0yyqlrpmn06mmarhnxvwgzb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-tests? #f))
@@ -473,7 +473,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
 (define-public wayland-protocols
   (package
     (name "wayland-protocols")
-    (version "1.12")
+    (version "1.13")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -481,7 +481,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
                     "wayland-protocols-" version ".tar.xz"))
               (sha256
                (base32
-                "1cn8ny4zr9xlcdh8qi1qnkmvia8cp4ixnsbhd9sp9571w6lyh69v"))))
+                "0f4gqvmz53q9d8h0ilhf4z773nb4vskzx11a3d1jycym120bqn07"))))
     (build-system gnu-build-system)
     (inputs
      `(("wayland" ,wayland)))
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 35db95b4f0..f5f8320fc5 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -222,7 +222,7 @@ also known as DXTn or DXTC) for Mesa.")
 (define-public mesa
   (package
     (name "mesa")
-    (version "17.3.6")
+    (version "17.3.8")
     (source
       (origin
         (method url-fetch)
@@ -234,7 +234,7 @@ also known as DXTn or DXTC) for Mesa.")
                                   version "/mesa-" version ".tar.xz")))
         (sha256
          (base32
-          "1y7vawz2sbpzdqk4b60w8kfrxb2rfkdjkifyxxfx1jaasj05d4g5"))
+          "1cd6a4ll5arla3kncxnw9196ak1v4rvnb098aa7lm3n4h7r9p7cg"))
         (patches
          (search-patches "mesa-wayland-egl-symbols-check-mips.patch"
                          "mesa-skip-disk-cache-test.patch"))))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index f7bce741ea..0b7dd462d5 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -291,7 +291,7 @@ in the Mozilla clients.")
 (define-public nss
   (package
     (name "nss")
-    (version "3.36")
+    (version "3.36.1")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -302,7 +302,7 @@ in the Mozilla clients.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "1580qc0a4s8v3k3vg7zz4xly4alkjrw7qq9zy2nf6p4v56wcfg53"))
+                "1zrb49mp7cy3snnday1zv8d76h1mgppbcwxnlkqsgxlga8fl89b0"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-pkgconfig.patch"
                                        "nss-increase-test-timeout.patch"))))
@@ -472,7 +472,14 @@ security standards.")
         (mozilla-patch "icecat-bug-1388020.patch"        "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4")
         (mozilla-patch "icecat-bug-1452416.patch"        "f89ab96a2532" "1dqchxdyznhgyxhfq0hm0vg1p597hjqflfzigc7j3s5vxf9rg2nv")
         (mozilla-patch "icecat-bug-1451376.patch"        "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3")
-        (mozilla-patch "icecat-bug-1444668.patch"        "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v")))
+        (mozilla-patch "icecat-bug-1444668.patch"        "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v")
+        (search-patch  "icecat-bug-1452075.patch")
+        (mozilla-patch "icecat-bug-1393367.patch"        "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7")
+        (mozilla-patch "icecat-bug-1453339.patch"        "0edb8dca7087" "0b30pipqryh311sc97rcmwnx9n8qdlbbz90b2hkybjnprmbhfxrm")
+        (mozilla-patch "icecat-bug-1452202.patch"        "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam")
+        (mozilla-patch "icecat-bug-1411415.patch"        "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd")
+        (mozilla-patch "icecat-bug-1452619.patch"        "2b75d55ccf0e" "1g87aybw6ggv6hyk385bplv0lx63n020gwyq0d6d4pqld48hsm1i")
+        (mozilla-patch "icecat-bug-1453127.patch"        "89857f35df29" "0gzi47svrw5ajdlm3i12193psm702zx70x5h1rwp4gb7gxh4m4d9")))
       (modules '((guix build utils)))
       (snippet
        '(begin
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index cb72d25921..9eefb58433 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -102,7 +102,7 @@ arrays of data.")
 (define-public gstreamer
   (package
     (name "gstreamer")
-    (version "1.12.4")
+    (version "1.12.5")
     (source
      (origin
       (method url-fetch)
@@ -111,7 +111,7 @@ arrays of data.")
             version ".tar.xz"))
       (sha256
        (base32
-        "0x06jxmc5fhlz7cr1pl5lp0hm1jgz519jjic37d09srf9jm091ss"))))
+        "0slwqav7bqasg4a9f033kv6ki3yz0wyr3k0w9jr80s1jba20sxcz"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -150,7 +150,7 @@ This package provides the core library and elements.")
 (define-public gst-plugins-base
   (package
     (name "gst-plugins-base")
-    (version "1.12.4")
+    (version "1.12.5")
     (source
      (origin
       (method url-fetch)
@@ -158,15 +158,16 @@ This package provides the core library and elements.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "10i255q7i8an1hxz3szb36x1jcs9nfdy511pj2wg24h2vw1nnc2c"))))
+        "0bkikdax4v3iv9sqrrwbavqw7kg7lh0vas08ad1nya7kcmdz5ncg"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (propagated-inputs
-     `(("gstreamer" ,gstreamer))) ; required by gstreamer-plugins-base-1.0.pc
+     `(("glib" ,glib)              ;required by gstreamer-sdp-1.0.pc
+       ("gstreamer" ,gstreamer)    ;required by gstreamer-plugins-base-1.0.pc
+       ("orc" ,orc)))              ;required by gstreamer-audio-1.0.pc
     (inputs
      `(("cdparanoia" ,cdparanoia)
        ("opus" ,opus)
-       ("orc" ,orc)
        ("pango" ,pango)
        ("libogg" ,libogg)
        ("libtheora" ,libtheora)
@@ -178,7 +179,7 @@ This package provides the core library and elements.")
        ("alsa-lib" ,alsa-lib)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")
+        ("glib:bin" ,glib "bin")
         ("gobject-introspection" ,gobject-introspection)
         ("python-wrapper" ,python-wrapper)))
     (arguments
@@ -201,11 +202,10 @@ This package provides the core library and elements.")
 for the GStreamer multimedia library.")
     (license license:lgpl2.0+)))
 
-
 (define-public gst-plugins-good
   (package
     (name "gst-plugins-good")
-    (version "1.12.4")
+    (version "1.12.5")
     (source
      (origin
       (method url-fetch)
@@ -214,7 +214,7 @@ for the GStreamer multimedia library.")
             name "-" version ".tar.xz"))
       (sha256
        (base32
-        "0mxrbrqrfq1946gn9im19maj7ivld4k946vkwrzd94h8qsz4k7v4"))))
+        "0mam03i38j6iws815fky9sm1ayik1d9a8pnfvschrr06pqxv511c"))))
     (build-system gnu-build-system)
     (inputs
      `(("aalib" ,aalib)
@@ -264,18 +264,18 @@ developers consider to have good quality code and correct functionality.")
 (define-public gst-plugins-bad
   (package
     (name "gst-plugins-bad")
-    (version "1.12.4")
+    (version "1.12.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gstreamer.freedesktop.org/src/"
                                   name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "021d3q81m968lpnah517sfclagadcqwd6jz3lqdmqvb82sz5fy0c"))))
+                "10bx1h996nn45r3d53bgkfx0rfa3hqz0f4zx634wz3nffnkjzy20"))))
     (outputs '("out" "doc"))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ; XXX: 18 of 65 tests fail
+     '(#:tests? #f ; XXX: 13 of 53 tests fail
        #:configure-flags
        (list (string-append "--with-html-dir="
                             (assoc-ref %outputs "doc")
@@ -340,7 +340,7 @@ par compared to the rest.")
 (define-public gst-plugins-ugly
   (package
     (name "gst-plugins-ugly")
-    (version "1.12.4")
+    (version "1.12.5")
     (source
      (origin
        (method url-fetch)
@@ -348,7 +348,7 @@ par compared to the rest.")
                            name "/" name "-" version ".tar.xz"))
        (sha256
         (base32
-         "08p5kggk1szvr76cdbx3q3yfc235w1przb76v2n51lwfi26mn5hw"))))
+         "0vpr1rv99v7k2s78k15prdw453nq1va4rkli46yhm6s3i00lnwk7"))))
     (build-system gnu-build-system)
     (inputs
      `(("gst-plugins-base" ,gst-plugins-base)
@@ -379,7 +379,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
 (define-public gst-libav
   (package
     (name "gst-libav")
-    (version "1.12.4")
+    (version "1.12.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -387,7 +387,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0qly3lgamm36xql9q7wg5751gi6j2d3ifzz1pkr15ncc5mfslmia"))))
+                "0y1qawf21407smvpc6kc2q6f17y9hdki4skn1yrwbl1n75gqcaw1"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--with-system-libav")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b55af15900..41b908050d 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -79,7 +79,7 @@
 (define-public atk
   (package
    (name "atk")
-   (version "2.26.1")
+   (version "2.28.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -87,7 +87,7 @@
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1jwpx8az0iifw176dc2hl4mmg6gvxzxdkd1qvg4ds7c5hdmzy07g"))))
+              "1z7laf6qwv5zsqcnj222dm5f43c6f3liil0cgx4s4s62xjk1wfnd"))))
    (build-system gnu-build-system)
    (outputs '("out" "doc"))
    (arguments
@@ -441,7 +441,7 @@ highlighting and other features typical of a source code editor.")
 (define-public gdk-pixbuf
   (package
    (name "gdk-pixbuf")
-   (version "2.36.11")
+   (version "2.36.12")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -449,7 +449,7 @@ highlighting and other features typical of a source code editor.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1wz2vpciwdpdv612s8kbww08q80hgcs5dxrfsxp1a4q44n3snqmf"))))
+              "0d534ysa6n9prd17wwzisq7mj6qkhwh8wcf8qgin1ar3hbs5ry7z"))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags '("--with-x11")
@@ -670,7 +670,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.28")
+   (version "3.22.29")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -678,7 +678,7 @@ application suites.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "07syy63d2q12b7mkbhqpirq270365fsql5l9qsrdgzlc04mn36fj"))
+              "1y5vzdbgww9l7xcrg13azff2rs94kggkywmpcsh39h7w76wn8zd0"))
             (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
                                      "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
    (outputs '("out" "bin" "doc"))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b92b146f3b..be0c1f86dd 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -971,7 +971,7 @@ intercept and print the system calls executed by the program.")
 (define-public alsa-lib
   (package
     (name "alsa-lib")
-    (version "1.1.5")
+    (version "1.1.6")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -979,7 +979,7 @@ intercept and print the system calls executed by the program.")
                    version ".tar.bz2"))
              (sha256
               (base32
-               "1rhacnlj0grvfagjx5qzsnbhw7m7lyccghqs4jsv0dnsqv9qmxpl"))))
+               "096pwrnhj36yndldvs2pj4r871zhcgisks0is78f1jkjn9sd4b2z"))))
     (build-system gnu-build-system)
     (home-page "https://www.alsa-project.org/")
     (synopsis "The Advanced Linux Sound Architecture libraries")
@@ -991,14 +991,14 @@ MIDI functionality to the Linux-based operating system.")
 (define-public alsa-utils
   (package
     (name "alsa-utils")
-    (version "1.1.5")
+    (version "1.1.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
-               "1s727md6mb408y2cfwzjkx23abxhampyrjdkgpyygdhxx62x42rj"))))
+               "0vnkyymgwj9rfdb11nvab30dnfrylmakdfildxl0y8mj836awp0m"))))
     (build-system gnu-build-system)
     (arguments
      ;; XXX: Disable man page creation until we have DocBook.
@@ -1038,14 +1038,14 @@ MIDI functionality to the Linux-based operating system.")
 (define-public alsa-plugins
   (package
     (name "alsa-plugins")
-    (version "1.1.5")
+    (version "1.1.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.alsa-project.org/pub/plugins/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
-               "073zpgvj4pldmzqq97l40wngvbqnvrkc8yw153mgny9kypwaazbr"))))
+               "04qcwkisbh0d6lnh0rw1k6n869fbs6zbfq6yvb41rymiwgmk27bg"))))
     (build-system gnu-build-system)
     ;; TODO: Split libavcodec and speex if possible. It looks like they can not
     ;; be split, there are references to both in files.
@@ -2006,11 +2006,11 @@ from the module-init-tools project.")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/gentoo/eudev/archive/v"
-                                  version ".zip"))
-              (file-name (string-append name "-" version ".zip"))
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0c9l3m3mr1nvrvlcnzh5gjdg9p9k7hh0jk04wh596cbmbass2nhd"))
+                "0dlkcgy7j4fdcksqrpc373zfybiif1bal3n6lpy1kfc5280j02c7"))
               (patches (search-patches "eudev-rules-directory.patch"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index c31e3604c8..3a1a0176ef 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -485,14 +485,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
 (define-public python-nbxmpp
   (package
     (name "python-nbxmpp")
-    (version "0.6.4")
+    (version "0.6.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "nbxmpp" version))
        (sha256
         (base32
-         "12rfmp613alh3mi8f94008sx7x1a8c1izs3icrvw7bf4gnf2pi31"))))
+         "162dk6q4g61riam1p78bxwddwy4y2x1si34g5j9jv3rlc9xmhdcv"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -510,7 +510,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
 (define-public gajim
   (package
     (name "gajim")
-    (version "1.0.1")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gajim.org/downloads/"
@@ -518,7 +518,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                                   "/gajim-" version ".tar.bz2"))
               (sha256
                (base32
-                "16ynws10vhx6rhjjjmzw6iyb3hc19823xhx4gsb14hrc7l8vzd1c"))))
+                "0wyyy3wrk7ka5xrsbafnajzf7iacg8vg3hi16pl4c5p104hdhjdw"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/icecat-bug-1452075.patch b/gnu/packages/patches/icecat-bug-1452075.patch
new file mode 100644
index 0000000000..b776640133
--- /dev/null
+++ b/gnu/packages/patches/icecat-bug-1452075.patch
@@ -0,0 +1,441 @@
+Based on <https://hg.mozilla.org/releases/mozilla-esr52/rev/608e76ec5ba2>
+Adapted to apply cleanly to GNU IceCat.
+
+# HG changeset patch
+# User Ryan VanderMeulen <ryanvm@gmail.com>
+# Date 1523630807 14400
+# Node ID 608e76ec5ba25cec2271d2b400c7bce2d4c5ef79
+# Parent  10b7f43b536f93151201d44d304c991aa9af5d0c
+Bug 1452075 - Backport some upstream pdf.js fixes to ESR52. r=bdahl, r=yury, a=RyanVM
+
+diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
+--- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
++++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
+@@ -24,17 +24,18 @@ const Cc = Components.classes;
+ const Ci = Components.interfaces;
+ const Cr = Components.results;
+ const Cu = Components.utils;
+ // True only if this is the version of pdf.js that is included with icecat.
+ const MOZ_CENTRAL = JSON.parse('true');
+ const PDFJS_EVENT_ID = 'pdf.js.message';
+ const PDF_CONTENT_TYPE = 'application/pdf';
+ const PREF_PREFIX = 'pdfjs';
+-const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html';
++const PDF_VIEWER_ORIGIN = "resource://pdf.js";
++const PDF_VIEWER_WEB_PAGE = "resource://pdf.js/web/viewer.html";
+ const MAX_NUMBER_OF_PREFS = 50;
+ const MAX_STRING_PREF_LENGTH = 128;
+ 
+ Cu.import('resource://gre/modules/XPCOMUtils.jsm');
+ Cu.import('resource://gre/modules/Services.jsm');
+ Cu.import('resource://gre/modules/NetUtil.jsm');
+ 
+ XPCOMUtils.defineLazyModuleGetter(this, 'NetworkManager',
+@@ -105,21 +106,25 @@ function log(aMsg) {
+   if (!getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false)) {
+     return;
+   }
+   var msg = 'PdfStreamConverter.js: ' + (aMsg.join ? aMsg.join('') : aMsg);
+   Services.console.logStringMessage(msg);
+   dump(msg + '\n');
+ }
+ 
+-function getDOMWindow(aChannel) {
++function getDOMWindow(aChannel, aPrincipal) {
+   var requestor = aChannel.notificationCallbacks ?
+                   aChannel.notificationCallbacks :
+                   aChannel.loadGroup.notificationCallbacks;
+   var win = requestor.getInterface(Components.interfaces.nsIDOMWindow);
++  // Ensure the window wasn't navigated to something that is not PDF.js.
++  if (!win.document.nodePrincipal.equals(aPrincipal)) {
++    return null;
++  }
+   return win;
+ }
+ 
+ function getLocalizedStrings(path) {
+   var stringBundle = Cc['@mozilla.org/intl/stringbundle;1'].
+       getService(Ci.nsIStringBundleService).
+       createBundle('chrome://pdf.js/locale/' + path);
+ 
+@@ -627,31 +632,31 @@ var RangedChromeActions = (function Rang
+       data = this.dataListener.readData();
+ 
+       this.dataListener.onprogress = function (loaded, total) {
+         self.domWindow.postMessage({
+           pdfjsLoadAction: 'progressiveRead',
+           loaded: loaded,
+           total: total,
+           chunk: self.dataListener.readData()
+-        }, '*');
++        }, PDF_VIEWER_ORIGIN);
+       };
+       this.dataListener.oncomplete = function () {
+         self.dataListener = null;
+       };
+     }
+ 
+     this.domWindow.postMessage({
+       pdfjsLoadAction: 'supportsRangedLoading',
+       rangeEnabled: this.rangeEnabled,
+       streamingEnabled: this.streamingEnabled,
+       pdfUrl: this.pdfUrl,
+       length: this.contentLength,
+       data: data
+-    }, '*');
++    }, PDF_VIEWER_ORIGIN);
+ 
+     return true;
+   };
+ 
+   proto.requestDataRange = function RangedChromeActions_requestDataRange(args) {
+     if (!this.rangeEnabled) {
+       return;
+     }
+@@ -663,23 +668,23 @@ var RangedChromeActions = (function Rang
+     // errors from chrome code for non-range requests, so this doesn't
+     // seem high-pri
+     this.networkManager.requestRange(begin, end, {
+       onDone: function RangedChromeActions_onDone(args) {
+         domWindow.postMessage({
+           pdfjsLoadAction: 'range',
+           begin: args.begin,
+           chunk: args.chunk
+-        }, '*');
++        }, PDF_VIEWER_ORIGIN);
+       },
+       onProgress: function RangedChromeActions_onProgress(evt) {
+         domWindow.postMessage({
+           pdfjsLoadAction: 'rangeProgress',
+           loaded: evt.loaded,
+-        }, '*');
++        }, PDF_VIEWER_ORIGIN);
+       }
+     });
+   };
+ 
+   proto.abortLoading = function RangedChromeActions_abortLoading() {
+     this.networkManager.abortAllRequests();
+     if (this.originalRequest) {
+       this.originalRequest.cancel(Cr.NS_BINDING_ABORTED);
+@@ -718,26 +723,26 @@ var StandardChromeActions = (function St
+     var self = this;
+ 
+     this.dataListener.onprogress = function ChromeActions_dataListenerProgress(
+                                       loaded, total) {
+       self.domWindow.postMessage({
+         pdfjsLoadAction: 'progress',
+         loaded: loaded,
+         total: total
+-      }, '*');
++      }, PDF_VIEWER_ORIGIN);
+     };
+ 
+     this.dataListener.oncomplete =
+         function StandardChromeActions_dataListenerComplete(data, errorCode) {
+       self.domWindow.postMessage({
+         pdfjsLoadAction: 'complete',
+         data: data,
+         errorCode: errorCode
+-      }, '*');
++      }, PDF_VIEWER_ORIGIN);
+ 
+       self.dataListener = null;
+       self.originalRequest = null;
+     };
+ 
+     return true;
+   };
+ 
+@@ -972,31 +977,35 @@ PdfStreamConverter.prototype = {
+     var proxy = {
+       onStartRequest: function(request, context) {
+         listener.onStartRequest(aRequest, aContext);
+       },
+       onDataAvailable: function(request, context, inputStream, offset, count) {
+         listener.onDataAvailable(aRequest, aContext, inputStream,
+                                  offset, count);
+       },
+-      onStopRequest: function(request, context, statusCode) {
+-        // We get the DOM window here instead of before the request since it
+-        // may have changed during a redirect.
+-        var domWindow = getDOMWindow(channel);
++      onStopRequest(request, context, statusCode) {
++        var domWindow = getDOMWindow(channel, resourcePrincipal);
++        if (!Components.isSuccessCode(statusCode) || !domWindow) {
++          // The request may have been aborted and the document may have been
++          // replaced with something that is not PDF.js, abort attaching.
++          listener.onStopRequest(aRequest, context, statusCode);
++          return;
++        }
+         var actions;
+         if (rangeRequest || streamRequest) {
+           actions = new RangedChromeActions(
+             domWindow, contentDispositionFilename, aRequest,
+             rangeRequest, streamRequest, dataListener);
+         } else {
+           actions = new StandardChromeActions(
+             domWindow, contentDispositionFilename, aRequest, dataListener);
+         }
+         var requestListener = new RequestListener(actions);
+-        domWindow.addEventListener(PDFJS_EVENT_ID, function(event) {
++        domWindow.document.addEventListener(PDFJS_EVENT_ID, function(event) {
+           requestListener.receive(event);
+         }, false, true);
+         if (actions.supportsIntegratedFind()) {
+           var findEventManager = new FindEventManager(domWindow);
+           findEventManager.bind();
+         }
+         listener.onStopRequest(aRequest, aContext, statusCode);
+ 
+diff --git a/browser/extensions/pdfjs/content/build/pdf.worker.js b/browser/extensions/pdfjs/content/build/pdf.worker.js
+--- a/browser/extensions/pdfjs/content/build/pdf.worker.js
++++ b/browser/extensions/pdfjs/content/build/pdf.worker.js
+@@ -41648,16 +41648,32 @@
+       var error = sharedUtil.error;
+       var info = sharedUtil.info;
+       var isArray = sharedUtil.isArray;
+       var isBool = sharedUtil.isBool;
+       var isDict = corePrimitives.isDict;
+       var isStream = corePrimitives.isStream;
+       var PostScriptLexer = corePsParser.PostScriptLexer;
+       var PostScriptParser = corePsParser.PostScriptParser;
++      function toNumberArray(arr) {
++        if (!Array.isArray(arr)) {
++          return null;
++        }
++        var length = arr.length;
++        for (var i = 0; i < length; i++) {
++          if (typeof arr[i] !== 'number') {
++            var result = new Array(length);
++            for (var j = 0; j < length; j++) {
++              result[j] = +arr[j];
++            }
++            return result;
++          }
++        }
++        return arr;
++      }
+       var PDFFunction = function PDFFunctionClosure() {
+         var CONSTRUCT_SAMPLED = 0;
+         var CONSTRUCT_INTERPOLATED = 2;
+         var CONSTRUCT_STICHED = 3;
+         var CONSTRUCT_POSTSCRIPT = 4;
+         return {
+           getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, str) {
+             var i, ii;
+@@ -41747,43 +41763,43 @@
+                 out[index] = [
+                   arr[i],
+                   arr[i + 1]
+                 ];
+                 ++index;
+               }
+               return out;
+             }
+-            var domain = dict.getArray('Domain');
+-            var range = dict.getArray('Range');
++            var domain = toNumberArray(dict.getArray('Domain'));
++            var range = toNumberArray(dict.getArray('Range'));
+             if (!domain || !range) {
+               error('No domain or range');
+             }
+             var inputSize = domain.length / 2;
+             var outputSize = range.length / 2;
+             domain = toMultiArray(domain);
+             range = toMultiArray(range);
+-            var size = dict.get('Size');
++            var size = toNumberArray(dict.get('Size'));
+             var bps = dict.get('BitsPerSample');
+             var order = dict.get('Order') || 1;
+             if (order !== 1) {
+               // No description how cubic spline interpolation works in PDF32000:2008
+               // As in poppler, ignoring order, linear interpolation may work as good
+               info('No support for cubic spline interpolation: ' + order);
+             }
+-            var encode = dict.getArray('Encode');
++            var encode = toNumberArray(dict.getArray('Encode'));
+             if (!encode) {
+               encode = [];
+               for (var i = 0; i < inputSize; ++i) {
+-                encode.push(0);
+-                encode.push(size[i] - 1);
+-              }
+-            }
+-            encode = toMultiArray(encode);
+-            var decode = dict.getArray('Decode');
++                encode.push([0, size[i] - 1]);
++              }
++            } else {
++              encode = toMultiArray(encode);
++            }
++            var decode = toNumberArray(dict.getArray('Decode'));
+             if (!decode) {
+               decode = range;
+             } else {
+               decode = toMultiArray(decode);
+             }
+             var samples = this.getSampleArray(size, outputSize, bps, str);
+             return [
+               CONSTRUCT_SAMPLED,
+@@ -41868,22 +41884,19 @@
+                 //                    Decode_2j, Decode_2j+1)
+                 rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
+                 // y_j = min(max(r_j, range_2j), range_2j+1)
+                 dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
+               }
+             };
+           },
+           constructInterpolated: function PDFFunction_constructInterpolated(str, dict) {
+-            var c0 = dict.getArray('C0') || [0];
+-            var c1 = dict.getArray('C1') || [1];
++            var c0 = toNumberArray(dict.getArray('C0')) || [0];
++            var c1 = toNumberArray(dict.getArray('C1')) || [1];
+             var n = dict.get('N');
+-            if (!isArray(c0) || !isArray(c1)) {
+-              error('Illegal dictionary for interpolated function');
+-            }
+             var length = c0.length;
+             var diff = [];
+             for (var i = 0; i < length; ++i) {
+               diff.push(c1[i] - c0[i]);
+             }
+             return [
+               CONSTRUCT_INTERPOLATED,
+               c0,
+@@ -41899,49 +41912,45 @@
+             return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {
+               var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);
+               for (var j = 0; j < length; ++j) {
+                 dest[destOffset + j] = c0[j] + x * diff[j];
+               }
+             };
+           },
+           constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
+-            var domain = dict.getArray('Domain');
++            var domain = toNumberArray(dict.getArray('Domain'));
+             if (!domain) {
+               error('No domain');
+             }
+             var inputSize = domain.length / 2;
+             if (inputSize !== 1) {
+               error('Bad domain for stiched function');
+             }
+             var fnRefs = dict.get('Functions');
+             var fns = [];
+             for (var i = 0, ii = fnRefs.length; i < ii; ++i) {
+-              fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
+-            }
+-            var bounds = dict.getArray('Bounds');
+-            var encode = dict.getArray('Encode');
++              fns.push(PDFFunction.parse(xref, xref.fetchIfRef(fnRefs[i])));
++            }
++            var bounds = toNumberArray(dict.getArray('Bounds'));
++            var encode = toNumberArray(dict.getArray('Encode'));
+             return [
+               CONSTRUCT_STICHED,
+               domain,
+               bounds,
+               encode,
+               fns
+             ];
+           },
+           constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {
+             var domain = IR[1];
+             var bounds = IR[2];
+             var encode = IR[3];
+-            var fnsIR = IR[4];
+-            var fns = [];
++            var fns = IR[4];
+             var tmpBuf = new Float32Array(1);
+-            for (var i = 0, ii = fnsIR.length; i < ii; i++) {
+-              fns.push(PDFFunction.fromIR(fnsIR[i]));
+-            }
+             return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {
+               var clip = function constructStichedFromIRClip(v, min, max) {
+                 if (v > max) {
+                   v = max;
+                 } else if (v < min) {
+                   v = min;
+                 }
+                 return v;
+@@ -41968,18 +41977,18 @@
+               // Prevent the value from becoming NaN as a result
+               // of division by zero (fixes issue6113.pdf).
+               tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
+               // call the appropriate function
+               fns[i](tmpBuf, 0, dest, destOffset);
+             };
+           },
+           constructPostScript: function PDFFunction_constructPostScript(fn, dict, xref) {
+-            var domain = dict.getArray('Domain');
+-            var range = dict.getArray('Range');
++            var domain = toNumberArray(dict.getArray('Domain'));
++            var range = toNumberArray(dict.getArray('Range'));
+             if (!domain) {
+               error('No domain.');
+             }
+             if (!range) {
+               error('No range.');
+             }
+             var lexer = new PostScriptLexer(fn);
+             var parser = new PostScriptParser(lexer);
+@@ -42928,18 +42937,18 @@
+           case 'IndexedCS':
+             var baseIndexedCS = IR[1];
+             var hiVal = IR[2];
+             var lookup = IR[3];
+             return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup);
+           case 'AlternateCS':
+             var numComps = IR[1];
+             var alt = IR[2];
+-            var tintFnIR = IR[3];
+-            return new AlternateCS(numComps, ColorSpace.fromIR(alt), PDFFunction.fromIR(tintFnIR));
++            var tintFn = IR[3];
++            return new AlternateCS(numComps, ColorSpace.fromIR(alt), tintFn);
+           case 'LabCS':
+             whitePoint = IR[1];
+             blackPoint = IR[2];
+             var range = IR[3];
+             return new LabCS(whitePoint, blackPoint, range);
+           default:
+             error('Unknown name ' + name);
+           }
+@@ -43067,22 +43076,22 @@
+               var name = xref.fetchIfRef(cs[1]);
+               numComps = 1;
+               if (isName(name)) {
+                 numComps = 1;
+               } else if (isArray(name)) {
+                 numComps = name.length;
+               }
+               alt = ColorSpace.parseToIR(cs[2], xref, res);
+-              var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
++              var tintFn = PDFFunction.parse(xref, xref.fetchIfRef(cs[3]));
+               return [
+                 'AlternateCS',
+                 numComps,
+                 alt,
+-                tintFnIR
++                tintFn
+               ];
+             case 'Lab':
+               params = xref.fetchIfRef(cs[1]);
+               whitePoint = params.getArray('WhitePoint');
+               blackPoint = params.getArray('BlackPoint');
+               var range = params.getArray('Range');
+               return [
+                 'LabCS',
+@@ -52483,9 +52492,9 @@
+         initializeWorker();
+       }
+       exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass;
+       exports.WorkerTask = WorkerTask;
+       exports.WorkerMessageHandler = WorkerMessageHandler;
+     }));
+   }.call(pdfjsLibs));
+   exports.WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler;
+-}));
+\ No newline at end of file
++}));
+
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index c9a53698bd..b2d43c2b10 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -676,7 +676,7 @@ program capable of converting PDF into other formats.")
 (define-public xournal
   (package
     (name "xournal")
-    (version "0.4.8")
+    (version "0.4.8.2016")
     (source
      (origin
        (method url-fetch)
@@ -684,7 +684,7 @@ program capable of converting PDF into other formats.")
                            "/xournal-" version ".tar.gz"))
        (sha256
         (base32
-         "0c7gjcqhygiyp0ypaipdaxgkbivg6q45vhsj8v5jsi9nh6iqff13"))))
+         "09i88v3wacmx7f96dmq0l3afpyv95lh6jrx16xzm0jd1szdrhn5j"))))
     (build-system gnu-build-system)
     (inputs
      `(("gtk" ,gtk+-2)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 37434c4758..b805b8e707 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -9446,25 +9446,30 @@ characters, mouse support, and auto suggestions.")
 (define-public python-jedi
   (package
     (name "python-jedi")
-    (version "0.9.0")
+    (version "0.12.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jedi" version))
-        (sha256
-          (base32
-            "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "jedi" version))
+       (sha256
+        (base32
+         "1bcr7csx4xil1iwmk03d79jis0bkmgi9k0kir3xa4rmwqsagcwhr"))))
     (build-system python-build-system)
     (arguments
-     ;; FIXME: One test fails (use "py.test" instead of 'setup.py test').
-     '(#:tests? #f))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check (lambda _
+                           (invoke "py.test" "-vv"))))))
     (native-inputs
-     `(("python-pytest" ,python-pytest)))
+     `(("python-pytest" ,python-pytest)
+       ("python-parso" ,python-parso)
+       ("python-docopt" ,python-docopt)))
     (home-page "https://github.com/davidhalter/jedi")
     (synopsis
-      "Autocompletion for Python that can be used for text editors")
+     "Autocompletion for Python that can be used for text editors")
     (description
-      "Jedi is an autocompletion tool for Python that can be used for text editors.")
+     "Jedi is an autocompletion tool for Python that can be used for text
+ editors.")
     (license license:expat)))
 
 (define-public python2-jedi
@@ -13269,3 +13274,27 @@ in Python.  You can simply type pybtex instead of bibtex.")
     (description "Python one-time password library for HMAC-based (HOTP) and
 time-based (TOTP) passwords.")
     (license license:expat)))
+
+(define-public python-parso
+  (package
+    (name "python-parso")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "parso" version))
+       (sha256
+        (base32
+         "0lamywk6dm5xshlkdvxxf5j6fa2k2zpi7xagf0bwidaay3vnpgb2"))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (build-system python-build-system)
+    (home-page "https://github.com/davidhalter/parso")
+    (synopsis "Python Parser")
+    (description "Parso is a Python parser that supports error recovery and
+round-trip parsing for different Python versions (in multiple Python versions).
+Parso is also able to list multiple syntax errors in your Python file.")
+    (license license:expat)))
+
+(define-public python2-parso
+  (package-with-python2 python-parso))
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index f10acaec70..12bdd1a2fa 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,22 +31,18 @@
 (define-public skribilo
   (package
     (name "skribilo")
-    (version "0.9.3")
+    (version "0.9.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/skribilo/skribilo-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "04d8xa76jvlz25jnc6p1gzsplwcwcqrmi3f7ixdhddhl1chyz66y"))))
+               "06ywnfjfa9sxrzdszb5sryzg266380g519cm64kq62sskzl7zmnf"))))
     (build-system gnu-build-system)
     (arguments
      ;; Make the modules available under the usual location.
-     '(#:configure-flags (list (string-append "--with-guilemoduledir="
-                                              (assoc-ref %outputs "out")
-                                              "/share/guile/site/2.0"))
-
-       #:phases
+     '(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'pre-configure
            (lambda* (#:key inputs #:allow-other-keys)
@@ -57,8 +53,8 @@
                (substitute* "src/skribilo.in"
                  (("^exec (.*) -c" _ things)
                   (string-append "exec " things
-                                 " -L " reader "/share/guile/site/2.0"
-                                 " -C " reader "/share/guile/site/2.0"
+                                 " -L " reader "/share/guile/site/2.2"
+                                 " -C " reader "/lib/guile/2.2/site-ccache"
                                  " -c"))))
              #t)))
 
@@ -66,7 +62,7 @@
 
     (native-inputs `(("pkg-config" ,pkg-config)))
 
-    (inputs `(("guile" ,guile-2.0)
+    (inputs `(("guile" ,guile-2.2)
               ("imagemagick" ,imagemagick)
               ("ghostscript" ,ghostscript)        ; for 'convert'
               ("ploticus" ,ploticus)
@@ -74,8 +70,8 @@
 
     ;; The 'skribilo' command needs them, and for people using Skribilo as a
     ;; library, these inputs are needed as well.
-    (propagated-inputs `(("guile-reader" ,guile2.0-reader)
-                         ("guile-lib" ,guile2.0-lib)))
+    (propagated-inputs `(("guile-reader" ,guile-reader)
+                         ("guile-lib" ,guile-lib)))
 
     (home-page "https://www.nongnu.org/skribilo/")
     (synopsis "Document production tool written in Guile Scheme")
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index df4273e208..b6bc9dda62 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -175,6 +176,15 @@
                            (string-prefix? "mips64" s))))
       #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-unix-detection
+           ;; ps2eps.pl uses the "gswin32c" ghostscript executable on Windows,
+           ;; and the "gs" ghostscript executable on Unix. It detects Unix by
+           ;; checking for the existence of the /usr/bin directory. Since
+           ;; GuixSD does not have /usr/bin, it is also detected as Windows.
+           (lambda _
+             (substitute* "utils/ps2eps/ps2eps-src/bin/ps2eps.pl"
+               (("gswin32c") "gs"))
+             #t))
          (add-after 'install 'postint
            (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
              (let* ((out (assoc-ref outputs "out"))
@@ -196,7 +206,13 @@
                (with-directory-excursion "texlive-extra"
                  (apply unpack (list #:source texlive-extra))
                  (apply patch-source-shebangs (list #:source texlive-extra))
-                 (invoke "mv" "tlpkg" share))))))))
+                 (invoke "mv" "tlpkg" share))
+               ;; texlua shebangs are not patched by the patch-source-shebangs
+               ;; phase because the texlua executable does not exist at that
+               ;; time.
+               (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))
+               (with-directory-excursion out
+                 (patch-source-shebangs))))))))
    (synopsis "TeX Live, a package of the TeX typesetting system")
    (description
     "TeX Live provides a comprehensive TeX document production system.
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 0c84c29fe8..ba60cb0826 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1470,7 +1470,8 @@ any project with more than one developer, is one of Aegis's major functions.")
            (lambda* (#:key outputs #:allow-other-keys)
              (install-file "reposurgeon-mode.el"
                            (string-append (assoc-ref outputs "out")
-                                          "/share/emacs/site-lisp")))))))
+                                          "/share/emacs/site-lisp"))
+             #t)))))
     (inputs
      `(("python" ,python-wrapper)
        ("tzdata" ,tzdata)))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 13772cd9a8..ae7b08fddf 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -46,6 +46,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages kerberos)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
@@ -115,6 +116,7 @@
        ("libXinerama" ,libxinerama)
        ("libXxf86vm" ,libxxf86vm)
        ("libXcomposite" ,libxcomposite)
+       ("mit-krb5" ,mit-krb5)
        ("ncurses" ,ncurses)
        ("openal" ,openal)
        ("pulseaudio" ,pulseaudio)
@@ -221,7 +223,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
    (name "wine-staging-patchset-data")
-   (version "3.6")
+   (version "3.7")
    (source
     (origin
      (method url-fetch)
@@ -230,7 +232,7 @@ integrate Windows applications into your desktop.")
      (file-name (string-append name "-" version ".zip"))
      (sha256
       (base32
-       "1q5mgq7lk3sh82im65g51yk110ci9afl5wgqs2q6i8qd2nj5pv7d"))))
+       "112sy32sja4cc3rv8x6v4cdi3jfxdgzwfra8f78hzdf8a2wrjqz6"))))
    (build-system trivial-build-system)
    (native-inputs
     `(("bash" ,bash)
@@ -277,7 +279,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0p4h0ynb5yf8rx5badpxg7b6vsrqdqafwszn5qm0shv0kb3jsl3q"))))
+                "1drbzk3y0m14lkq3vzwwkvain5shykgcbmyzh6gcb5r4sxh3givn"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("gtk+" ,gtk+)
               ("libva" ,libva)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index dc74c9f59e..6801de39c1 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -155,14 +155,14 @@ avoiding password prompts when X11 forwarding has already been setup.")
 (define-public libxkbcommon
   (package
     (name "libxkbcommon")
-    (version "0.7.1")
+    (version "0.8.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://xkbcommon.org/download/" name "-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "12z6hih3n1r0asp2hzp9qsiwdfkfz46jwp06x8kprr0r5rfk0nds"))))
+               "0vgy84vfbig5bqznr137h5arjidnfwrxrdli0pxyn2jfn1fjcag8"))))
     (build-system gnu-build-system)
     (inputs
      `(("libx11" ,libx11)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 694aab882e..eb82b2ddcf 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1962,10 +1962,16 @@ extra rules from the packages listed in @var{rules}."
   "Return a service that uses @var{device} as a swap device."
   (service swap-service-type device))
 
+(define %default-gpm-options
+  ;; Default options for GPM.
+  '("-m" "/dev/input/mice" "-t" "ps2"))
+
 (define-record-type* <gpm-configuration>
   gpm-configuration make-gpm-configuration gpm-configuration?
-  (gpm      gpm-configuration-gpm)                ;package
-  (options  gpm-configuration-options))           ;list of strings
+  (gpm      gpm-configuration-gpm                 ;package
+            (default gpm))
+  (options  gpm-configuration-options             ;list of strings
+            (default %default-gpm-options)))
 
 (define gpm-shepherd-service
   (match-lambda
@@ -2000,14 +2006,15 @@ extra rules from the packages listed in @var{rules}."
                 (extensions
                  (list (service-extension shepherd-root-service-type
                                           gpm-shepherd-service)))
+                (default-value (gpm-configuration))
                 (description
                  "Run GPM, the general-purpose mouse daemon, with the given
 command-line options.  GPM allows users to use the mouse in the console,
 notably to select, copy, and paste text.  The default options use the
 @code{ps2} protocol, which works for both USB and PS/2 mice.")))
 
-(define* (gpm-service #:key (gpm gpm)
-                      (options '("-m" "/dev/input/mice" "-t" "ps2")))
+(define* (gpm-service #:key (gpm gpm)             ;deprecated
+                      (options %default-gpm-options))
   "Run @var{gpm}, the general-purpose mouse daemon, with the given
 command-line @var{options}.  GPM allows users to use the mouse in the console,
 notably to select, copy, and paste text.  The default value of @var{options}
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 67674e895e..0c9c69eef5 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -46,6 +46,8 @@
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
+  #:re-export (static-networking-service
+               static-networking-service-type)
   #:export (%facebook-host-aliases
             dhcp-client-service
 
diff --git a/guix/scripts/system/search.scm b/guix/scripts/system/search.scm
index b4f790c9bf..7229c60a02 100644
--- a/guix/scripts/system/search.scm
+++ b/guix/scripts/system/search.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,9 +20,11 @@
   #:use-module (guix ui)
   #:use-module (guix utils)
   #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
   #:export (service-type->recutils
@@ -39,6 +41,29 @@
 (define service-type-name*
   (compose symbol->string service-type-name))
 
+(define (service-type-default-shepherd-services type)
+  "Return the list of Shepherd services created by default instances of TYPE,
+provided TYPE has a default value."
+  (match (guard (c ((service-error? c) #f))
+           (service type))
+    (#f '())
+    ((? service? service)
+     (let* ((extension (find (lambda (extension)
+                               (eq? (service-extension-target extension)
+                                    shepherd-root-service-type))
+                             (service-type-extensions type)))
+            (compute   (and extension (service-extension-compute extension))))
+       (if compute
+           (compute (service-value service))
+           '())))))
+
+(define (service-type-shepherd-names type)
+  "Return the default names of Shepherd services created for TYPE."
+  (match (map shepherd-service-provision
+              (service-type-default-shepherd-services type))
+    (((names . _) ...)
+     names)))
+
 (define* (service-type->recutils type port
                                  #:optional (width (%text-width))
                                  #:key (extra-fields '()))
@@ -66,6 +91,16 @@ columns."
   (format port "extends: ~a~%"
           (extensions->recutils (service-type-extensions type)))
 
+  ;; If possible, display the list of *default* Shepherd service names.  Note
+  ;; that we may not always be able to do this (e.g., if the service type
+  ;; lacks a default value); furthermore, it could be that the service
+  ;; generates Shepherd services with different names if we give it different
+  ;; parameters (this is the case, for instance, for
+  ;; 'console-font-service-type'.)
+  (match (service-type-shepherd-names type)
+    (()    #f)
+    (names (format port "shepherdnames:~{ ~a~}~%" names)))
+
   (when (service-type-description type)
     (format port "~a~%"
             (string->recutils
diff --git a/tests/guix-system.sh b/tests/guix-system.sh
index 211c26f43d..ff9114ab74 100644
--- a/tests/guix-system.sh
+++ b/tests/guix-system.sh
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 # Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 #
@@ -267,6 +267,7 @@ guix system build "$tmpdir/config.scm" -n
 
 # Searching.
 guix system search tor | grep "^name: tor"
+guix system search tor | grep "^shepherdnames: tor"
 guix system search anonym network | grep "^name: tor"
 
 # Below, use -n (--dry-run) for the tests because if we actually tried to