summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/admin.scm8
-rw-r--r--gnu/packages/algebra.scm8
-rw-r--r--gnu/packages/astronomy.scm41
-rw-r--r--gnu/packages/aux-files/emacs/guix-emacs.el112
-rw-r--r--gnu/packages/aux-files/linux-libre/4.1-i686.conf (renamed from gnu/packages/linux-libre-4.1-i686.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.1-x86_64.conf (renamed from gnu/packages/linux-libre-4.1-x86_64.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.10-i686.conf (renamed from gnu/packages/linux-libre-4.10-i686.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.10-x86_64.conf (renamed from gnu/packages/linux-libre-4.10-x86_64.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.4-i686.conf (renamed from gnu/packages/linux-libre-4.4-i686.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.4-x86_64.conf (renamed from gnu/packages/linux-libre-4.4-x86_64.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.9-i686.conf (renamed from gnu/packages/linux-libre-4.9-i686.conf)0
-rw-r--r--gnu/packages/aux-files/linux-libre/4.9-x86_64.conf (renamed from gnu/packages/linux-libre-4.9-x86_64.conf)0
-rw-r--r--gnu/packages/bioinformatics.scm10
-rw-r--r--gnu/packages/cdrom.scm25
-rw-r--r--gnu/packages/check.scm44
-rw-r--r--gnu/packages/compression.scm22
-rw-r--r--gnu/packages/databases.scm37
-rw-r--r--gnu/packages/dav.scm6
-rw-r--r--gnu/packages/education.scm38
-rw-r--r--gnu/packages/emacs.scm28
-rw-r--r--gnu/packages/engineering.scm24
-rw-r--r--gnu/packages/enlightenment.scm4
-rw-r--r--gnu/packages/fontutils.scm4
-rw-r--r--gnu/packages/gnome.scm12
-rw-r--r--gnu/packages/image-viewers.scm24
-rw-r--r--gnu/packages/imagemagick.scm2
-rw-r--r--gnu/packages/java.scm1012
-rw-r--r--gnu/packages/jemalloc.scm4
-rw-r--r--gnu/packages/libevent.scm82
-rw-r--r--gnu/packages/linux.scm25
-rw-r--r--gnu/packages/lisp.scm76
-rw-r--r--gnu/packages/mail.scm52
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/markdown.scm4
-rw-r--r--gnu/packages/maths.scm66
-rw-r--r--gnu/packages/nano.scm13
-rw-r--r--gnu/packages/networking.scm24
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/password-utils.scm9
-rw-r--r--gnu/packages/patches/jacal-fix-texinfo.patch92
-rw-r--r--gnu/packages/patches/mupdf-CVE-2017-5896.patch63
-rw-r--r--gnu/packages/patches/mupdf-CVE-2017-5991.patch101
-rw-r--r--gnu/packages/patches/screen-CVE-2017-5618.patch40
-rw-r--r--gnu/packages/patches/vdirsyncer-test-suite-slow-machines.patch42
-rw-r--r--gnu/packages/pdf.scm9
-rw-r--r--gnu/packages/perl.scm317
-rw-r--r--gnu/packages/python.scm71
-rw-r--r--gnu/packages/regex.scm4
-rw-r--r--gnu/packages/ruby.scm29
-rw-r--r--gnu/packages/scheme.scm103
-rw-r--r--gnu/packages/screen.scm6
-rw-r--r--gnu/packages/statistics.scm44
-rw-r--r--gnu/packages/telephony.scm16
-rw-r--r--gnu/packages/tls.scm7
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/vim.scm337
-rw-r--r--gnu/packages/web.scm4
-rw-r--r--gnu/packages/wine.scm2
-rw-r--r--gnu/packages/wm.scm27
-rw-r--r--gnu/packages/xdisorg.scm61
-rw-r--r--gnu/packages/xml.scm53
-rw-r--r--gnu/packages/xorg.scm60
63 files changed, 2390 insertions, 932 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3fe26e0d09..d2001d4e2c 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1732,13 +1732,13 @@ a new command using the matched rule, and runs it.")
 (define-public di
   (package
     (name "di")
-    (version "4.42")
+    (version "4.43")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
        (sha256
-        (base32 "1i6m9zdnidn8268q1lz9fd8payk7s4pgwh5zlam9rr4dy6h6a67n"))))
+        (base32 "1q25jy51qfzsym9b2w0cqzscq2j492gn60dy6gbp88m8nwm4sdy8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; Obscure test failures.
@@ -1763,14 +1763,14 @@ highly portable.  Great for heterogenous networks.")
 (define-public cbatticon
   (package
     (name "cbatticon")
-    (version "1.6.4")
+    (version "1.6.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/valr/"
                                   name "/archive/" version ".tar.gz"))
               (sha256
                (base32
-                "023fvsa4q7rl98rqgwrb1shyzaybdkkbyz5sywd0s5p7ixkksxqx"))
+                "0xzz1faqgm57bwlkw6sjdfbckf5hck81879zbfk18p7xn9vhvixv"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 544b62a1da..be4c48f72d 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -128,7 +128,7 @@ solve the shortest vector problem.")
 (define-public pari-gp
   (package
    (name "pari-gp")
-   (version "2.7.6")
+   (version "2.9.1")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -136,7 +136,7 @@ solve the shortest vector problem.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "04dqi697czd8mmw8aiwzrkgbvkjassqagg6lfy3lkf1k5qi9g9rr"))))
+                "0rq7wz9df1xs4acdzzb5dapx8vs6m5py39n2wynw2qv4d2b0ylfw"))))
    (build-system gnu-build-system)
    (native-inputs `(("texlive" ,texlive-minimal)))
    (inputs `(("gmp" ,gmp)
@@ -168,7 +168,7 @@ PARI is also available as a C library to allow for faster computations.")
 (define-public gp2c
   (package
    (name "gp2c")
-   (version "0.0.9pl5")
+   (version "0.0.10")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -176,7 +176,7 @@ PARI is also available as a C library to allow for faster computations.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "1q003mkagc5ib6lqb2xfay7j4ffkwv7xlnznp6wdrq2sbqq4vyak"))))
+                "1xhpz5p81iw261ay1kip283ggr0ir8ydz8qx3v24z8jfms1r3y70"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)))
    (inputs `(("pari-gp" ,pari-gp)))
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index f390ce4486..43506a7bc2 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -21,7 +21,13 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages maths)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu))
 
 (define-public cfitsio
@@ -107,3 +113,38 @@ systems in a FITS image header.")
     (description "The GNU Astronomy Utilities (Gnuastro) is a suite of
 programs for the manipulation and analysis of astronomical data.")
     (license license:gpl3+)))
+
+(define-public stellarium
+  (package
+    (name "stellarium")
+    (version "0.15.1")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://sourceforge/stellarium/"
+                                 "Stellarium-sources/"
+                                 version "/stellarium-" version ".tar.gz"))
+             (sha256
+              (base32
+               "04avigz8i8mi2x6x71bqr9np85n1p9qnvbj2hxr947f1jv22zr8g"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("qt"   ,qt)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal) ; xgettext is used at compile time
+       ("perl" ,perl))) ; For pod2man
+    (arguments
+      `(#:test-target "tests"
+        #:phases (modify-phases %standard-phases
+                   (add-before 'check 'set-offscreen-display
+                     (lambda _
+                       (setenv "QT_QPA_PLATFORM" "offscreen")
+                       (setenv "HOME" "/tmp")
+                       #t)))))
+    (home-page "http://www.stellarium.org/")
+    (synopsis "3D sky viewer")
+    (description "Stellarium is a planetarium.  It shows a realistic sky in
+3D, just like what you see with the naked eye, binoculars, or a telescope.  It
+can be used to control telescopes over a serial port for tracking celestial
+objects.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/aux-files/emacs/guix-emacs.el b/gnu/packages/aux-files/emacs/guix-emacs.el
new file mode 100644
index 0000000000..2bbd639ffd
--- /dev/null
+++ b/gnu/packages/aux-files/emacs/guix-emacs.el
@@ -0,0 +1,112 @@
+;;; guix-emacs.el --- Emacs packages installed with Guix
+
+;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
+
+;; This file is part of GNU Guix.
+
+;; GNU Guix is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Guix is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides auxiliary code to autoload Emacs packages
+;; installed with Guix.
+
+;;; Code:
+
+(require 'cl-lib)
+
+(defvar guix-user-profile (expand-file-name "~/.guix-profile"))
+
+(defvar guix-emacs-autoloads nil
+  "List of the last loaded Emacs autoloads.")
+
+(defvar guix-emacs-autoloads-regexp
+  (rx (group (* any) "-autoloads")
+      ".el" (zero-or-one "c") string-end)
+  "Regexp to match Emacs 'autoloads' file.")
+
+(defun guix-emacs-directory (&optional profile)
+  "Return directory with Emacs packages installed in PROFILE.
+If PROFILE is nil, use `guix-user-profile'."
+  (expand-file-name "share/emacs/site-lisp"
+                    (or profile guix-user-profile)))
+
+(defun guix-emacs-find-autoloads (directory)
+  "Return a list of Emacs 'autoloads' files in DIRECTORY.
+The files in the list do not have extensions (.el, .elc)."
+  (cl-remove-duplicates
+   (delq nil
+        (mapcar (lambda (file)
+                  (when (string-match guix-emacs-autoloads-regexp file)
+                    (match-string 1 file)))
+                (directory-files directory 'full-name nil 'no-sort)))
+   :test #'string=))
+
+(defun guix-emacs-subdirs (directory)
+  "Return list of DIRECTORY subdirectories."
+  (cl-remove-if (lambda (file)
+                  (or (string-match-p (rx "/." string-end) file)
+                      (string-match-p (rx "/.." string-end) file)
+                      (not (file-directory-p file))))
+                (directory-files directory 'full-name nil 'no-sort)))
+
+(defun guix-emacs-directories (&optional profile)
+  "Return the list of directories under PROFILE that contain Emacs packages.
+This includes both `share/emacs/site-lisp/guix.d/PACKAGE'
+sub-directories and `share/emacs/site-lisp' itself.
+
+If PROFILE is nil, use `guix-user-profile'.
+Return nil, if Emacs packages are not installed in PROFILE."
+  (let ((root-dir (guix-emacs-directory (or profile guix-user-profile))))
+    (when (file-directory-p root-dir)
+      (let* ((pkgs-dir  (expand-file-name "guix.d" root-dir))
+             (pkgs-dirs (when (file-directory-p pkgs-dir)
+                          (guix-emacs-subdirs pkgs-dir))))
+        (cons root-dir pkgs-dirs)))))
+
+;;;###autoload
+(defun guix-emacs-autoload-packages (&rest profiles)
+  "Autoload Emacs packages installed in PROFILES.
+If PROFILES are not specified, use a default user and system
+profiles.
+
+'Autoload' means add directories with Emacs packages to
+`load-path' and load 'autoloads' files matching
+`guix-emacs-autoloads-regexp'."
+  (interactive (list (if (fboundp 'guix-read-package-profile)
+                         (funcall 'guix-read-package-profile)
+                       guix-user-profile)))
+  (let ((profiles (or profiles
+                      (list "/run/current-system/profile"
+                            guix-user-profile))))
+    (dolist (profile profiles)
+      (let ((dirs (guix-emacs-directories profile)))
+        (when dirs
+          (let* ((autoloads     (cl-mapcan #'guix-emacs-find-autoloads
+                                           dirs))
+                 (new-autoloads (cl-nset-difference autoloads
+                                                    guix-emacs-autoloads
+                                                    :test #'string=)))
+            (dolist (dir dirs)
+              (cl-pushnew (directory-file-name dir)
+                          load-path
+                          :test #'string=))
+            (dolist (file new-autoloads)
+              (load file 'noerror))
+            (setq guix-emacs-autoloads
+                  (append new-autoloads guix-emacs-autoloads))))))))
+
+(provide 'guix-emacs)
+
+;;; guix-emacs.el ends here
diff --git a/gnu/packages/linux-libre-4.1-i686.conf b/gnu/packages/aux-files/linux-libre/4.1-i686.conf
index a37225541e..a37225541e 100644
--- a/gnu/packages/linux-libre-4.1-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/4.1-i686.conf
diff --git a/gnu/packages/linux-libre-4.1-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.1-x86_64.conf
index 82c5824923..82c5824923 100644
--- a/gnu/packages/linux-libre-4.1-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/4.1-x86_64.conf
diff --git a/gnu/packages/linux-libre-4.10-i686.conf b/gnu/packages/aux-files/linux-libre/4.10-i686.conf
index 8ec475ea01..8ec475ea01 100644
--- a/gnu/packages/linux-libre-4.10-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/4.10-i686.conf
diff --git a/gnu/packages/linux-libre-4.10-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.10-x86_64.conf
index c5d8fe1da0..c5d8fe1da0 100644
--- a/gnu/packages/linux-libre-4.10-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/4.10-x86_64.conf
diff --git a/gnu/packages/linux-libre-4.4-i686.conf b/gnu/packages/aux-files/linux-libre/4.4-i686.conf
index e877f195af..e877f195af 100644
--- a/gnu/packages/linux-libre-4.4-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/4.4-i686.conf
diff --git a/gnu/packages/linux-libre-4.4-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.4-x86_64.conf
index 406053ab7a..406053ab7a 100644
--- a/gnu/packages/linux-libre-4.4-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/4.4-x86_64.conf
diff --git a/gnu/packages/linux-libre-4.9-i686.conf b/gnu/packages/aux-files/linux-libre/4.9-i686.conf
index 4f3a9f9271..4f3a9f9271 100644
--- a/gnu/packages/linux-libre-4.9-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/4.9-i686.conf
diff --git a/gnu/packages/linux-libre-4.9-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.9-x86_64.conf
index ca0fcded61..ca0fcded61 100644
--- a/gnu/packages/linux-libre-4.9-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/4.9-x86_64.conf
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index bdcb5a4010..7bf39c6b03 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
@@ -238,7 +238,7 @@ instance, it implements several methods to assess contig-wise read coverage.")
 (define-public bamtools
   (package
     (name "bamtools")
-    (version "2.3.0")
+    (version "2.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -247,7 +247,7 @@ instance, it implements several methods to assess contig-wise read coverage.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1brry29bw2xr2l9pqn240rkqwayg85b8qq78zk2zs6nlspk4d018"))))
+                "0jr024kcrhjb82cm69i7p5fcg5375zlc1h3qh2n1v368hcd0qflk"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ;no "check" target
@@ -2055,7 +2055,7 @@ identify enrichments with functional annotations of the genome.")
 (define-public diamond
   (package
     (name "diamond")
-    (version "0.8.34")
+    (version "0.8.36")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2064,7 +2064,7 @@ identify enrichments with functional annotations of the genome.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0jvr34g346gbz7z1zb9bs0vplivm9p4cxk0lbzklvdpa7g236p39"))))
+                "092smzzjcg51n3x4h84k52ijpz9m40ri838j9k2i463ribc3c8rh"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no "check" target
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 293bf16ade..14e430646a 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 John Darrington <jmd@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -496,3 +497,27 @@ session, and it can create M3U playlists.")
     (synopsis "Command-line program to extract audio CDs")
     (description "RipIT is used to extract audio from CDs.")
     (license gpl2)))
+
+(define-public ccd2cue
+  (package
+    (name "ccd2cue")
+    (version "0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://gnu/ccd2cue/ccd2cue-" version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1icrkg25hwx4gsn3dski2172ia4ywjh8m1sa17zmjclnrgdwy9c7"))))
+    (build-system gnu-build-system)
+    (synopsis "CCD to CUE sheet conversion")
+    (description
+     "GNU ccd2cue is a preprocessor for CD burning software that allows
+the conversion of the proprietary CCD format to the CUE format, which
+is well-supported by free software.  These files are commonly
+distributed with CD images and are used to describe how tracks are
+laid out on the image.")
+    (home-page "http://www.gnu.org/software/ccd2cue")
+    (license gpl3+)))
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 9ad03cd558..372f1c4fea 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -201,7 +201,7 @@ normally do not detect.  The goal is to detect only real errors in the code
 (define-public googletest
   (package
     (name "googletest")
-    (version "1.7.0")
+    (version "1.8.0")
     (source
      (origin
        (method url-fetch)
@@ -210,46 +210,10 @@ normally do not detect.  The goal is to detect only real errors in the code
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1k0nf1l9cb3prdmsvaajl5i31bx86c1mw0d5jgzykz7rzm36afpp"))))
-    (build-system gnu-build-system)
+         "1n5p1m2m3fjrjdj752lf92f9wq3pl5cbsfrb49jqbg52ghkz99jq"))))
+    (build-system cmake-build-system)
     (native-inputs
-     `(("python-2" ,python-2)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'autoconf
-           (lambda _
-             (zero? (system* "autoreconf" "-vfi"))))
-         (add-before 'autoconf 'generate-headers
-           (lambda _
-             (begin
-               (delete-file "include/gtest/gtest-param-test.h")
-               (system* "python2" "scripts/pump.py"
-                        "include/gtest/gtest-param-test.h.pump")
-               (delete-file "include/gtest/internal/gtest-tuple.h")
-               (system* "python2" "scripts/pump.py"
-                        "include/gtest//internal/gtest-tuple.h.pump")
-               (delete-file
-                "include/gtest/internal/gtest-param-util-generated.h")
-               (system*
-                "python2" "scripts/pump.py"
-                "include/gtest/internal/gtest-param-util-generated.h.pump")
-               (delete-file "include/gtest/internal/gtest-type-util.h")
-               (system* "python2" "scripts/pump.py"
-                        "include/gtest/internal/gtest-type-util.h.pump"))))
-         (replace 'install
-           (lambda _
-             (let ((out (assoc-ref %outputs "out")))
-               (begin
-                 (install-file "lib/.libs/libgtest_main.a"
-                               (string-append out "/lib"))
-                 (install-file "lib/.libs/libgtest.a"
-                               (string-append out "/lib"))
-                 (copy-recursively "include"
-                  (string-append out "/include")))))))))
+     `(("python-2" ,python-2)))
     (home-page "https://github.com/google/googletest/")
     (synopsis "Test discovery and XUnit test framework")
     (description "Google Test features an XUnit test framework, automated test
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 9897883184..88f8f0d84e 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -945,7 +945,7 @@ well as bzip2.")
 (define-public snappy
   (package
     (name "snappy")
-    (version "1.1.3")
+    (version "1.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -953,7 +953,7 @@ well as bzip2.")
                     version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1wzf8yif5ym2gj52db6v5m1pxnmn258i38x7llk9x346y2nq47ig"))))
+                "0mq0nz8gbi1sp3y6xcg0a6wbvnd6gc717f3vh2xrjmfj5w9gwjqk"))))
     (build-system gnu-build-system)
     (home-page "https://github.com/google/snappy")
     (synopsis "Fast compressor/decompressor")
@@ -1128,3 +1128,21 @@ or junctions, and always follows hard links.")
                    ;; libzpaq.cpp contains a mix of public-domain and
                    ;; expat-licenced (or ‘MIT’) code.
                    license:expat))))
+
+(define-public unrar
+  (package
+    (name "unrar")
+    (version "0.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://download.gna.org/unrar/unrar-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1fgmjaxffj3shyxgy765jhxwz1cq88hk0fih1bsdzyvymyyz6mz7"))))
+    (build-system gnu-build-system)
+    (home-page "http://download.gna.org/unrar")
+    (synopsis "RAR archive extraction tool")
+    (description "Unrar is a simple command-line program to list and extract
+RAR archives.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index b7ce8a8bec..5199d0c4f1 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
@@ -215,7 +215,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 (define-public leveldb
   (package
     (name "leveldb")
-    (version "1.19")
+    (version "1.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/google/leveldb"
@@ -223,7 +223,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "00jjgs9xlwycfkg0xd7n1rj6v9zrx7xc7hann6zalrjyhap18ykx"))))
+                "0r36bcrj6b2afsp4aw1gjai3jbs1c7734pxpc1jz7hh9nasyiazm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list "CC=gcc")
@@ -1201,6 +1201,37 @@ and B+ Tree data storage models.  It is a fast key-value lightweight
 database and supports many programming languages.  It is a NoSQL database.")
     (license license:gpl3+)))
 
+(define-public tokyocabinet
+  (package
+    (name "tokyocabinet")
+    (version "1.4.48")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://fallabs.com/tokyocabinet/"
+                           name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "140zvr0n8kvsl0fbn2qn3f2kh3yynfwnizn4dgbj47m975yg80x0"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-pthread" "--enable-off64" "--enable-fastest"
+        (string-append "LDFLAGS=-Wl,-rpath="
+                       (assoc-ref %outputs "out") "/lib"))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "http://fallabs.com/tokyocabinet/")
+    (synopsis "Tokyo Cabinet is a modern implementation of the DBM database")
+    (description
+     "Tokyo Cabinet is a library of routines for managing a database.
+The database is a simple data file containing records, each is a pair of a
+key and a value.  Every key and value is serial bytes with variable length.
+Both binary data and character string can be used as a key and a value.
+There is neither concept of data tables nor data types.  Records are
+organized in hash table, B+ tree, or fixed-length array.")
+    (license license:lgpl2.1+)))
+
 (define-public wiredtiger
   (package
     (name "wiredtiger")
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 546597c617..7901e1c1d8 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -55,15 +55,13 @@ clients.")
 (define-public vdirsyncer
   (package
     (name "vdirsyncer")
-    (version "0.14.1")
+    (version "0.15.0")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri name version))
-             (patches
-               (search-patches "vdirsyncer-test-suite-slow-machines.patch"))
              (sha256
               (base32
-               "044f01fjd8dpz4y9dm3qcc1a8cihcxxbr1sz6y6fkvglpb6k85y5"))))
+               "08aa5yxcj7ziz2r0hz4p554q8hgpfl2bh8r6r85f4g24mg6arxsj"))))
     (build-system python-build-system)
     (arguments
       `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 5444579059..808be203c2 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -43,44 +43,6 @@
   #:use-module (guix build-system cmake)
   #:use-module (srfi srfi-1))
 
-(define-public stellarium
-  (package
-    (name "stellarium")
-    (version "0.14.2")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://sourceforge/stellarium/"
-                                 "Stellarium-sources/"
-                                 version "/stellarium-" version ".tar.gz"))
-             (sha256 (base32
-                      "1xxil0rv61zc08znfv83cpsc47y1gjl2f3njhz0pn5zd8jpaa15a"))))
-    (build-system cmake-build-system)
-    (inputs
-      `(("qtbase" ,qtbase)
-        ("zlib" ,zlib)
-        ("qtserialport" ,qtserialport)
-        ("qtscript" ,qtscript)
-        ("gettext" ,gettext-minimal)))
-    (native-inputs
-      `(("qtbase" ,qtbase)                   ;Qt MOC is needed at compile time
-        ("qttools" ,qttools)
-        ("perl" ,perl)))                          ;for 'pod2man'
-    (arguments
-      `(#:test-target "tests"
-        #:phases (modify-phases %standard-phases
-                   (add-before 'check 'set-offscreen-display
-                     (lambda _
-                       (setenv "QT_QPA_PLATFORM" "offscreen")
-                       (setenv "HOME" "/tmp")
-                       #t)))))
-    (home-page "http://www.stellarium.org/")
-    (synopsis "3D sky viewer")
-    (description "Stellarium is a planetarium.  It shows a realistic sky in
-3D, just like what you see with the naked eye, binoculars, or a telescope.  It
-can be used to control telescopes over a serial port for tracking celestial
-objects.")
-    (license license:gpl2+)))
-
 (define-public gcompris
   (package
     (name "gcompris")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 863624fc0f..cc8d9c0d0c 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -133,22 +133,20 @@
                (("/bin/pwd")
                 "pwd"))))
          (add-after 'install 'install-site-start
-           ;; Copy guix-emacs.el from Guix and add it to site-start.el.  This
-           ;; way, Emacs packages provided by Guix and installed in
+           ;; Use 'guix-emacs' in "site-start.el".  This way, Emacs packages
+           ;; provided by Guix and installed in
            ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are
            ;; automatically found.
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((guix-src (assoc-ref inputs "guix-src"))
-                    (out      (assoc-ref outputs "out"))
-                    (lisp-dir (string-append out "/share/emacs/site-lisp"))
-                    (unpack   (assoc-ref %standard-phases 'unpack)))
-               (mkdir "guix")
-               (with-directory-excursion "guix"
-                 (apply unpack (list #:source guix-src))
-                 (install-file "emacs/guix-emacs.el" lisp-dir))
+             (let* ((out      (assoc-ref outputs "out"))
+                    (lisp-dir (string-append out "/share/emacs/site-lisp")))
+               (copy-file (assoc-ref inputs "guix-emacs.el")
+                          (string-append lisp-dir "/guix-emacs.el"))
                (with-output-to-file (string-append lisp-dir "/site-start.el")
                  (lambda ()
-                   (display "(require 'guix-emacs nil t)")))
+                   (display
+                    (string-append "(when (require 'guix-emacs nil t)\n"
+                                   "  (guix-emacs-autoload-packages))\n"))))
                #t))))))
     (inputs
      `(("gnutls" ,gnutls)
@@ -175,13 +173,13 @@
        ("libsm" ,libsm)
        ("alsa-lib" ,alsa-lib)
        ("dbus" ,dbus)
-       ("guix-src" ,(package-source guix))
 
        ;; multilingualization support
        ("libotf" ,libotf)
        ("m17n-lib" ,m17n-lib)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el"))
+       ("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo)))
 
     (native-search-paths
@@ -1326,7 +1324,7 @@ type, for example: packages, buffers, files, etc.")
 (define-public emacs-guix
   (package
     (name "emacs-guix")
-    (version "0.2.2")
+    (version "0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/alezost/guix.el"
@@ -1334,7 +1332,7 @@ type, for example: packages, buffers, files, etc.")
                                   "/emacs-guix-" version ".tar.gz"))
               (sha256
                (base32
-                "1i47yh24xvgmnc778765g3j9ip0xb2y85v6w83r4qmkigk9rl2ck"))))
+                "1327zp140c7acckk0ajl88cgwr0lk9j3mb67nsq2janxrkwmj6br"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 734efcdc73..23446bafa8 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -750,3 +750,27 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
       (description "This package provides Kicad component, footprint and 3D
 render model libraries.")
       (license license:lgpl2.0+))))
+
+(define-public linsmith
+  (package
+    (name "linsmith")
+    (version "0.99.30")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/linsmith/linsmith/linsmith-"
+                    version "/linsmith-" version ".tar.gz"))
+              (sha256
+               (base32
+                "18qslhr2r45rhpj4v6bjcqx189vs0bflvsj271wr7w8kvh69qwvn"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("gtk" ,gtk+-2)
+       ("libgnome" ,libgnomeui)))
+    (home-page "http://jcoppens.com/soft/linsmith/index.en.php")
+    (synopsis "Smith Charting program")
+    (description "LinSmith is a Smith Charting program, mainly designed for
+educational use.  As such, there is an emphasis on capabilities that improve
+the 'showing the effect of'-style of operation.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index d9eef54b88..b9a55333df 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -197,7 +197,7 @@ Libraries with some extra bells and whistles.")
 (define-public enlightenment
   (package
     (name "enlightenment")
-    (version "0.21.5")
+    (version "0.21.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -205,7 +205,7 @@ Libraries with some extra bells and whistles.")
                               name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1fslq70z4s6v9ipahnk8s5fgqnqq4njv4rlqv951r1bh1xk5lx7h"))))
+                "0gan3c8jbvhcmvb2fpbprr3m6db0afg1dnrb87nbqb399nsi81zd"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-mount-eeze")))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 60cff2e330..15109bfe13 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -393,7 +393,7 @@ and returns a sequence of positioned glyphids from the font.")
 (define-public potrace
   (package
     (name "potrace")
-    (version "1.13")
+    (version "1.14")
     (source
      (origin
       (method url-fetch)
@@ -401,7 +401,7 @@ and returns a sequence of positioned glyphids from the font.")
                           "/potrace-" version ".tar.gz"))
       (sha256
        (base32
-        "115p2vgyq7p2mf4nidk2x3aa341nvv2v8ml056vbji36df5l6lk2"))))
+        "0znr9i0ljb818qiwm22zw63g11a4v08gc5xkh0wbdp6g259vcwnv"))))
     (build-system gnu-build-system)
     (native-inputs `(("ghostscript" ,ghostscript))) ;for tests
     (inputs `(("zlib" ,zlib)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b673b3d402..cfd8b24290 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5606,7 +5606,7 @@ functionality and behavior.")
 (define-public arc-theme
   (package
     (name "arc-theme")
-    (version "20161119")
+    (version "20170302")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/horst3180/arc-theme"
@@ -5614,7 +5614,7 @@ functionality and behavior.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1kbhaxmydyip3vdw4kf8rk776jcd9wf0w7z6h2i4naxdn4rsnw54"))))
+                "0igxpngnkf1wpsg872a9jg3c9f5z8afm312yfbillz16mk8w39cw"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -5639,7 +5639,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
 (define-public moka-icon-theme
   (package
     (name "moka-icon-theme")
-    (version "5.3.1")
+    (version "5.3.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/moka-project"
@@ -5648,7 +5648,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1lnk7p8dsd9xh6cgz5krvlcr457w8yl4m6p6s5c2g5narsjswzrm"))))
+                "062rab0ggmgb3y0d6b3k5d47wsadi28cdnyyr2vqbjhza01dglci"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -5674,7 +5674,7 @@ simple and consistent.")
 (define-public arc-icon-theme
   (package
     (name "arc-icon-theme")
-    (version "20160605")
+    (version "20161122")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/horst3180/arc-icon-theme"
@@ -5682,7 +5682,7 @@ simple and consistent.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1npf0ki0j0llrw9wbffhxxa1cdms0q7b8xlg9m943dd9g7pgdm2p"))))
+                "1ya1cqvv8q847c0rpcg6apzky87q3h04y8jz5nmi52qk6kg8si0b"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index c3f6de8057..05b9472395 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -212,7 +212,7 @@ your images.  Among its features are:
 (define-public catimg
   (package
     (name "catimg")
-    (version "2.2.1")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
@@ -221,10 +221,10 @@ your images.  Among its features are:
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "14g90zwh2d3s13hgyxypx2vc0rj1g58l6zcxhgc84wsyxfxd6xpb"))))
+         "1abkhrhw4r221lwn2vb8in3vmp6gxn3qlv34cqndr55v5gdpb9qz"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ; No check target
+     `(#:tests? #f                      ; no tests
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
@@ -234,20 +234,22 @@ your images.  Among its features are:
                (substitute* "catimg"
                  ;; By replacing "convert", we also replace the "convert"
                  ;; in the message 'The version of convert is too old, don't
-                 ;; expect good results :('. This should not happen, but in
+                 ;; expect good results :('.  This should not happen, but in
                  ;; practice this error message should not affect us.
                  (("convert") convert))
                #t)))
          (replace 'build
            (lambda _
-             (zero? (system* "cmake" "-D"
-                             (string-append "CMAKE_INSTALL_PREFIX="
-                                            (assoc-ref %outputs "out"))
-                             "."))
-             (zero? (system* "make"))))
+             (let* ((out (assoc-ref %outputs "out"))
+                    (man (string-append out "/share/man/man1")))
+               (zero? (system* "cmake"
+                               (string-append "-DCMAKE_INSTALL_PREFIX=" out)
+                               (string-append "-DMAN_OUTPUT_PATH=" man)
+                               "."))
+               (zero? (system* "make")))))
          (add-before 'install 'install-script
            (lambda* (#:key outputs #:allow-other-keys)
-             ;; The bashscript lacks an file extension, we have to rename
+             ;; The bash script lacks an file extension.  We have to rename
              ;; it so that the C program and the bash script can be happy
              ;; side by side.
              (let* ((out (assoc-ref outputs "out"))
@@ -257,7 +259,7 @@ your images.  Among its features are:
                             (string-append bin "/catimg.sh"))
                #t))))))
     (inputs
-     `(("imagemagick" ,imagemagick))) ; For the bash script version
+     `(("imagemagick" ,imagemagick))) ; for the bash script version
     (home-page "https://github.com/posva/catimg")
     (synopsis "Render images in the terminal")
     (description
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index b5a2c20655..74483965dd 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -162,7 +162,7 @@ script.")
     (license (package-license imagemagick))))
 
 (define-public graphicsmagick
-  (let ((changeset "6156b4c2992d855ece6079653b3b93c3229fc4b8")
+  (let ((changeset "6156b4c2992d855ece6079653b3b93c3229fc4b8") ; fix CVE-2017-6335
         (revision "2"))
     (package
       (name "graphicsmagick")
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index e7479e1b08..1ff106cb99 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1,7 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -334,454 +335,6 @@ and is best suited to building Java projects.  Ant uses XML to describe the
 build process and its dependencies, whereas Make uses Makefile format.")
     (license license:asl2.0)))
 
-(define-public icedtea-6
-  (package
-    (name "icedtea")
-    (version "1.13.13")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://icedtea.wildebeest.org/download/source/icedtea6-"
-                    version ".tar.xz"))
-              (sha256
-               (base32
-                "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
-              (modules '((guix build utils)))
-              (snippet
-               '(substitute* "Makefile.in"
-                  ;; link against libgcj to avoid linker error
-                  (("-o native-ecj")
-                   "-lgcj -o native-ecj")
-                  ;; do not leak information about the build host
-                  (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
-                   "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
-    (build-system gnu-build-system)
-    (outputs '("out"   ; Java Runtime Environment
-               "jdk"   ; Java Development Kit
-               "doc")) ; all documentation
-    (arguments
-     `(;; There are many failing tests and many are known to fail upstream.
-       ;;
-       ;; * Hotspot VM tests:
-       ;;   FAILED: compiler/7082949/Test7082949.java
-       ;;   FAILED: compiler/7088020/Test7088020.java
-       ;;   FAILED: runtime/6929067/Test6929067.sh
-       ;;   FAILED: serviceability/sa/jmap-hashcode/Test8028623.java
-       ;;   => Test results: passed: 161; failed: 4
-       ;;
-       ;; * langtools tests:
-       ;;   FAILED: com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
-       ;;   FAILED: tools/javac/6627362/T6627362.java
-       ;;   FAILED: tools/javac/7003595/T7003595.java
-       ;;   FAILED: tools/javac/7024568/T7024568.java
-       ;;   FAILED: tools/javap/4111861/T4111861.java
-       ;;   FAILED: tools/javap/ListTest.java
-       ;;   FAILED: tools/javap/OptionTest.java
-       ;;   FAILED: tools/javap/T4884240.java
-       ;;   FAILED: tools/javap/T4975569.java
-       ;;     --> fails because of insignificant whitespace differences
-       ;;         in output of javap
-       ;;   FAILED: tools/javap/T6868539.java
-       ;;   => Test results: passed: 1,445; failed: 10
-       ;;
-       ;; * JDK tests:
-       ;;   Tests are incomplete because of a segfault after this test:
-       ;;     javax/crypto/spec/RC5ParameterSpec/RC5ParameterSpecEquals.java
-       ;;   A bug report has already been filed upstream:
-       ;;     http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2188
-       ;;
-       ;;   The tests require xvfb-run, a wrapper script around Xvfb, which
-       ;;   has not been packaged yet.  Without it many AWT tests fail, so I
-       ;;   made no attempts to make a list of failing JDK tests.  At least
-       ;;   222 tests are failing of which at least 132 are AWT tests.
-       #:tests? #f
-
-       ;; The DSOs use $ORIGIN to refer to each other, but (guix build
-       ;; gremlin) doesn't support it yet, so skip this phase.
-       #:validate-runpath? #f
-
-       #:modules ((guix build utils)
-                  (guix build gnu-build-system)
-                  (ice-9 popen)
-                  (ice-9 rdelim)
-                  (srfi srfi-19))
-
-       #:configure-flags
-       (let* ((gcjdir (assoc-ref %build-inputs "gcj"))
-              (ecj    (string-append gcjdir "/share/java/ecj.jar"))
-              (jdk    (string-append gcjdir "/lib/jvm/"))
-              (gcj    (string-append gcjdir "/bin/gcj")))
-         `("--enable-bootstrap"
-           "--enable-nss"
-           "--without-rhino"
-           "--disable-downloading"
-           "--disable-tests" ;they are run in the check phase instead
-           "--with-openjdk-src-dir=./openjdk.src"
-           ,(string-append "--with-javac=" jdk "/bin/javac")
-           ,(string-append "--with-ecj-jar=" ecj)
-           ,(string-append "--with-gcj=" gcj)
-           ,(string-append "--with-jdk-home=" jdk)
-           ,(string-append "--with-java=" jdk "/bin/java")))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'unpack
-           (lambda* (#:key source inputs #:allow-other-keys)
-             (and (zero? (system* "tar" "xvf" source))
-                  (begin
-                    (chdir (string-append "icedtea6-" ,version))
-                    (mkdir "openjdk.src")
-                    (with-directory-excursion "openjdk.src"
-                      (copy-file (assoc-ref inputs "openjdk6-src")
-                                 "openjdk6-src.tar.xz")
-                      (zero? (system* "tar" "xvf" "openjdk6-src.tar.xz")))))))
-         (add-after 'unpack 'patch-patches
-           (lambda _
-             ;; shebang in patches so that they apply cleanly
-             (substitute* '("patches/jtreg-jrunscript.patch"
-                            "patches/hotspot/hs23/drop_unlicensed_test.patch")
-               (("#!/bin/sh") (string-append "#!" (which "sh"))))
-             #t))
-         (add-after 'unpack 'patch-paths
-           (lambda _
-             ;; buildtree.make generates shell scripts, so we need to replace
-             ;; the generated shebang
-             (substitute* '("openjdk.src/hotspot/make/linux/makefiles/buildtree.make")
-               (("/bin/sh") (which "bash")))
-
-             (let ((corebin (string-append
-                             (assoc-ref %build-inputs "coreutils") "/bin/"))
-                   (binbin  (string-append
-                             (assoc-ref %build-inputs "binutils") "/bin/"))
-                   (grepbin (string-append
-                             (assoc-ref %build-inputs "grep") "/bin/")))
-               (substitute* '("openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
-                              "openjdk.src/corba/make/common/shared/Defs-linux.gmk")
-                 (("UNIXCOMMAND_PATH  = /bin/")
-                  (string-append "UNIXCOMMAND_PATH = " corebin))
-                 (("USRBIN_PATH  = /usr/bin/")
-                  (string-append "USRBIN_PATH = " corebin))
-                 (("DEVTOOLS_PATH *= */usr/bin/")
-                  (string-append "DEVTOOLS_PATH = " corebin))
-                 (("COMPILER_PATH *= */usr/bin/")
-                  (string-append "COMPILER_PATH = "
-                                 (assoc-ref %build-inputs "gcc") "/bin/"))
-                 (("DEF_OBJCOPY *=.*objcopy")
-                  (string-append "DEF_OBJCOPY = " (which "objcopy"))))
-
-               ;; fix path to alsa header
-               (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
-                 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
-                  (string-append "ALSA_INCLUDE="
-                                 (assoc-ref %build-inputs "alsa-lib")
-                                 "/include/alsa/version.h")))
-
-               ;; fix hard-coded utility paths
-               (substitute* '("openjdk.src/jdk/make/common/shared/Defs-utils.gmk"
-                              "openjdk.src/corba/make/common/shared/Defs-utils.gmk")
-                 (("ECHO *=.*echo")
-                  (string-append "ECHO = " (which "echo")))
-                 (("^GREP *=.*grep")
-                  (string-append "GREP = " (which "grep")))
-                 (("EGREP *=.*egrep")
-                  (string-append "EGREP = " (which "egrep")))
-                 (("CPIO *=.*cpio")
-                  (string-append "CPIO = " (which "cpio")))
-                 (("READELF *=.*readelf")
-                  (string-append "READELF = " (which "readelf")))
-                 (("^ *AR *=.*ar")
-                  (string-append "AR = " (which "ar")))
-                 (("^ *TAR *=.*tar")
-                  (string-append "TAR = " (which "tar")))
-                 (("AS *=.*as")
-                  (string-append "AS = " (which "as")))
-                 (("LD *=.*ld")
-                  (string-append "LD = " (which "ld")))
-                 (("STRIP *=.*strip")
-                  (string-append "STRIP = " (which "strip")))
-                 (("NM *=.*nm")
-                  (string-append "NM = " (which "nm")))
-                 (("^SH *=.*sh")
-                  (string-append "SH = " (which "bash")))
-                 (("^FIND *=.*find")
-                  (string-append "FIND = " (which "find")))
-                 (("LDD *=.*ldd")
-                  (string-append "LDD = " (which "ldd")))
-                 (("NAWK *=.*(n|g)awk")
-                  (string-append "NAWK = " (which "gawk")))
-                 (("XARGS *=.*xargs")
-                  (string-append "XARGS = " (which "xargs")))
-                 (("UNZIP *=.*unzip")
-                  (string-append "UNZIP = " (which "unzip")))
-                 (("ZIPEXE *=.*zip")
-                  (string-append "ZIPEXE = " (which "zip")))
-                 (("SED *=.*sed")
-                  (string-append "SED = " (which "sed"))))
-
-               ;; Some of these timestamps cause problems as they are more than
-               ;; 10 years ago, failing the build process.
-               (substitute*
-                   "openjdk.src/jdk/src/share/classes/java/util/CurrencyData.properties"
-                 (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
-                 (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
-                 (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
-                 (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))))
-         (add-before 'configure 'set-additional-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((gcjdir  (assoc-ref %build-inputs "gcj"))
-                    (gcjlib  (string-append gcjdir "/lib"))
-                    ;; Get target-specific include directory so that
-                    ;; libgcj-config.h is found when compiling hotspot.
-                    (gcjinclude (let* ((port (open-input-pipe "gcj -print-file-name=include"))
-                                       (str  (read-line port)))
-                                  (close-pipe port)
-                                  str)))
-               (setenv "CPATH"
-                       (string-append gcjinclude ":"
-                                      (assoc-ref %build-inputs "libxrender")
-                                      "/include/X11/extensions" ":"
-                                      (assoc-ref %build-inputs "libxtst")
-                                      "/include/X11/extensions" ":"
-                                      (assoc-ref %build-inputs "libxinerama")
-                                      "/include/X11/extensions" ":"
-                                      (or (getenv "CPATH") "")))
-               (setenv "ALT_CUPS_HEADERS_PATH"
-                       (string-append (assoc-ref %build-inputs "cups")
-                                      "/include"))
-               (setenv "ALT_FREETYPE_HEADERS_PATH"
-                       (string-append (assoc-ref %build-inputs "freetype")
-                                      "/include"))
-               (setenv "ALT_FREETYPE_LIB_PATH"
-                       (string-append (assoc-ref %build-inputs "freetype")
-                                      "/lib")))))
-         (add-before 'check 'fix-test-framework
-           (lambda _
-             ;; Fix PATH in test environment
-             (substitute* "src/jtreg/com/sun/javatest/regtest/Main.java"
-               (("PATH=/bin:/usr/bin")
-                (string-append "PATH=" (getenv "PATH"))))
-             (substitute* "src/jtreg/com/sun/javatest/util/SysEnv.java"
-               (("/usr/bin/env") (which "env")))
-             #t))
-         (add-before 'check 'fix-hotspot-tests
-           (lambda _
-             (with-directory-excursion "openjdk.src/hotspot/test/"
-               (substitute* "jprt.config"
-                 (("PATH=\"\\$\\{path4sdk\\}\"")
-                  (string-append "PATH=" (getenv "PATH")))
-                 (("make=/usr/bin/make")
-                  (string-append "make=" (which "make"))))
-               (substitute* '("runtime/6626217/Test6626217.sh"
-                              "runtime/7110720/Test7110720.sh")
-                 (("/bin/rm") (which "rm"))
-                 (("/bin/cp") (which "cp"))
-                 (("/bin/mv") (which "mv"))))
-             #t))
-         (add-before 'check 'fix-jdk-tests
-           (lambda _
-             (with-directory-excursion "openjdk.src/jdk/test/"
-               (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
-                 (("/bin/pwd") (which "pwd")))
-               (substitute* "com/sun/jdi/ShellScaffold.sh"
-                 (("/bin/kill") (which "kill")))
-               (substitute* "start-Xvfb.sh"
-                 ;;(("/usr/bin/X11/Xvfb") (which "Xvfb"))
-                 (("/usr/bin/nohup")    (which "nohup")))
-               (substitute* "javax/security/auth/Subject/doAs/Test.sh"
-                 (("/bin/rm") (which "rm")))
-               (substitute* "tools/launcher/MultipleJRE.sh"
-                 (("echo \"#!/bin/sh\"")
-                  (string-append "echo \"#!" (which "rm") "\""))
-                 (("/usr/bin/zip") (which "zip")))
-               (substitute* "com/sun/jdi/OnThrowTest.java"
-                 (("#!/bin/sh") (string-append "#!" (which "sh"))))
-               (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java"
-                 (("/usr/bin/uptime") (which "uptime")))
-               (substitute* "java/lang/ProcessBuilder/Basic.java"
-                 (("/usr/bin/env") (which "env"))
-                 (("/bin/false") (which "false"))
-                 (("/bin/true") (which "true"))
-                 (("/bin/cp") (which "cp"))
-                 (("/bin/sh") (which "sh")))
-               (substitute* "java/lang/ProcessBuilder/FeelingLucky.java"
-                 (("/bin/sh") (which "sh")))
-               (substitute* "java/lang/ProcessBuilder/Zombies.java"
-                 (("/usr/bin/perl") (which "perl"))
-                 (("/bin/ps") (which "ps"))
-                 (("/bin/true") (which "true")))
-               (substitute* "java/lang/Runtime/exec/ConcurrentRead.java"
-                 (("/usr/bin/tee") (which "tee")))
-               (substitute* "java/lang/Runtime/exec/ExecWithDir.java"
-                 (("/bin/true") (which "true")))
-               (substitute* "java/lang/Runtime/exec/ExecWithInput.java"
-                 (("/bin/cat") (which "cat")))
-               (substitute* "java/lang/Runtime/exec/ExitValue.java"
-                 (("/bin/sh") (which "sh"))
-                 (("/bin/true") (which "true"))
-                 (("/bin/kill") (which "kill")))
-               (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java"
-                 (("/usr/bin/echo") (which "echo")))
-               (substitute* "java/lang/Runtime/exec/LotsOfOutput.java"
-                 (("/usr/bin/cat") (which "cat")))
-               (substitute* "java/lang/Runtime/exec/SleepyCat.java"
-                 (("/bin/cat") (which "cat"))
-                 (("/bin/sleep") (which "sleep"))
-                 (("/bin/sh") (which "sh")))
-               (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java"
-                 (("/bin/cat") (which "cat")))
-               (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java"
-                 (("/bin/chmod") (which "chmod")))
-               (substitute* "java/util/zip/ZipFile/Assortment.java"
-                 (("/bin/sh") (which "sh"))))
-             #t))
-         (replace 'check
-           (lambda _
-             ;; The "make check-*" targets always return zero, so we need to
-             ;; check for errors in the associated log files to determine
-             ;; whether any tests have failed.
-             (use-modules (ice-9 rdelim))
-             (let* ((error-pattern (make-regexp "^(Error|FAILED):.*"))
-                    (checker (lambda (port)
-                               (let loop ()
-                                 (let ((line (read-line port)))
-                                   (cond
-                                    ((eof-object? line) #t)
-                                    ((regexp-exec error-pattern line) #f)
-                                    (else (loop)))))))
-                    (run-test (lambda (test)
-                                (system* "make" test)
-                                (call-with-input-file
-                                    (string-append "test/" test ".log")
-                                  checker))))
-               (or #t ; skip tests
-                   (and (run-test "check-hotspot")
-                        (run-test "check-langtools")
-                        (run-test "check-jdk"))))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((doc (string-append (assoc-ref outputs "doc")
-                                       "/share/doc/icedtea"))
-                   (jre (assoc-ref outputs "out"))
-                   (jdk (assoc-ref outputs "jdk")))
-               (copy-recursively "openjdk.build/docs" doc)
-               (copy-recursively "openjdk.build/j2re-image" jre)
-               (copy-recursively "openjdk.build/j2sdk-image" jdk))))
-         ;; By default IcedTea only generates an empty keystore.  In order to
-         ;; be able to use certificates in Java programs we need to generate a
-         ;; keystore from a set of certificates.  For convenience we use the
-         ;; certificates from the nss-certs package.
-         (add-after 'install 'install-keystore
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((keystore  "cacerts")
-                    (certs-dir (string-append (assoc-ref inputs "nss-certs")
-                                              "/etc/ssl/certs"))
-                    (keytool   (string-append (assoc-ref outputs "jdk")
-                                              "/bin/keytool")))
-               (define (extract-cert file target)
-                 (call-with-input-file file
-                   (lambda (in)
-                     (call-with-output-file target
-                       (lambda (out)
-                         (let loop ((line (read-line in 'concat))
-                                    (copying? #f))
-                           (cond
-                            ((eof-object? line) #t)
-                            ((string-prefix? "-----BEGIN" line)
-                             (display line out)
-                             (loop (read-line in 'concat) #t))
-                            ((string-prefix? "-----END" line)
-                             (display line out)
-                             #t)
-                            (else
-                             (when copying? (display line out))
-                             (loop (read-line in 'concat) copying?)))))))))
-               (define (import-cert cert)
-                 (format #t "Importing certificate ~a\n" (basename cert))
-                 (let ((temp "tmpcert"))
-                   (extract-cert cert temp)
-                   (let ((port (open-pipe* OPEN_WRITE keytool
-                                           "-import"
-                                           "-alias" (basename cert)
-                                           "-keystore" keystore
-                                           "-storepass" "changeit"
-                                           "-file" temp)))
-                     (display "yes\n" port)
-                     (when (not (zero? (status:exit-val (close-pipe port))))
-                       (error "failed to import" cert)))
-                   (delete-file temp)))
-
-               ;; This is necessary because the certificate directory contains
-               ;; files with non-ASCII characters in their names.
-               (setlocale LC_ALL "en_US.utf8")
-               (setenv "LC_ALL" "en_US.utf8")
-
-               (for-each import-cert (find-files certs-dir "\\.pem$"))
-               (mkdir-p (string-append (assoc-ref outputs "out")
-                                       "/lib/security"))
-               (mkdir-p (string-append (assoc-ref outputs "jdk")
-                                       "/jre/lib/security"))
-               (install-file keystore
-                             (string-append (assoc-ref outputs "out")
-                                            "/lib/security"))
-               (install-file keystore
-                             (string-append (assoc-ref outputs "jdk")
-                                            "/jre/lib/security"))
-               #t))))))
-    (native-inputs
-     `(("ant" ,ant)
-       ("alsa-lib" ,alsa-lib)
-       ("attr" ,attr)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("coreutils" ,coreutils)
-       ("diffutils" ,diffutils) ;for tests
-       ("gawk" ,gawk)
-       ("grep" ,grep)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)
-       ("cups" ,cups)
-       ("wget" ,wget)
-       ("which" ,which)
-       ("cpio" ,cpio)
-       ("zip" ,zip)
-       ("unzip" ,unzip)
-       ("fastjar" ,fastjar)
-       ("libxslt" ,libxslt) ;for xsltproc
-       ("mit-krb5" ,mit-krb5)
-       ("nss" ,nss)
-       ("nss-certs" ,nss-certs)
-       ("libx11" ,libx11)
-       ("libxcomposite" ,libxcomposite)
-       ("libxt" ,libxt)
-       ("libxtst" ,libxtst)
-       ("libxi" ,libxi)
-       ("libxinerama" ,libxinerama)
-       ("libxrender" ,libxrender)
-       ("libjpeg" ,libjpeg)
-       ("libpng" ,libpng)
-       ("giflib" ,giflib)
-       ("perl" ,perl)
-       ("procps" ,procps) ;for "free", even though I'm not sure we should use it
-       ("openjdk6-src"
-        ,(origin
-           (method url-fetch)
-           (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b41-04_jan_2017.tar.xz")
-           (sha256
-            (base32
-             "058szix0j280g14jzajvsixx1j2dxmc10r848f5swpy6rr8x8d4f"))))
-       ("lcms" ,lcms)
-       ("zlib" ,zlib)
-       ("gtk" ,gtk+-2)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("gcj" ,gcj)))
-    (home-page "http://icedtea.classpath.org")
-    (synopsis "Java development kit")
-    (description
-     "The OpenJDK built with the IcedTea build harness.")
-    ;; IcedTea is released under the GPL2 + Classpath exception, which is the
-    ;; same license as both GNU Classpath and OpenJDK.
-    (license license:gpl2+)))
-
 (define-public icedtea-7
   (let* ((version "2.6.9")
          (drop (lambda (name hash)
@@ -791,7 +344,8 @@ build process and its dependencies, whereas Make uses Makefile format.")
                          "http://icedtea.classpath.org/download/drops/"
                          "/icedtea7/" version "/" name ".tar.bz2"))
                    (sha256 (base32 hash))))))
-    (package (inherit icedtea-6)
+    (package
+      (name "icedtea")
       (version version)
       (source (origin
                 (method url-fetch)
@@ -810,6 +364,10 @@ build process and its dependencies, whereas Make uses Makefile format.")
                     ;; do not leak information about the build host
                     (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
                      "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
+      (build-system gnu-build-system)
+      (outputs '("out"   ; Java Runtime Environment
+                 "jdk"   ; Java Development Kit
+                 "doc")) ; all documentation
       (arguments
        `(;; There are many test failures.  Some are known to
          ;; fail upstream, others relate to not having an X
@@ -820,110 +378,390 @@ build process and its dependencies, whereas Make uses Makefile format.")
          ;; langtools: passed: 1,934; failed: 26
          ;; jdk:       unknown
          #:tests? #f
+
+         ;; The DSOs use $ORIGIN to refer to each other, but (guix build
+         ;; gremlin) doesn't support it yet, so skip this phase.
+         #:validate-runpath? #f
+
          ;; Apparently, the C locale is needed for some of the tests.
          #:locale "C"
-         ,@(substitute-keyword-arguments (package-arguments icedtea-6)
-             ((#:modules modules)
-              `((ice-9 match)
-                (srfi srfi-26)
-                ,@modules))
-             ((#:configure-flags flags)
-              ;; TODO: package pcsc and sctp, and add to inputs
-              `(append '("--disable-system-pcsc"
-                         "--disable-system-sctp")
-                       ,flags))
-             ((#:phases phases)
-              `(modify-phases ,phases
-                 (replace 'unpack
-                   (lambda* (#:key source inputs #:allow-other-keys)
-                     (let ((target (string-append "icedtea-" ,version))
-                           (unpack (lambda* (name #:optional dir)
-                                     (let ((dir (or dir
-                                                    (string-drop-right name 5))))
-                                       (mkdir dir)
-                                       (zero? (system* "tar" "xvf"
-                                                       (assoc-ref inputs name)
-                                                       "-C" dir
-                                                       "--strip-components=1"))))))
-                       (mkdir target)
-                       (and
-                        (zero? (system* "tar" "xvf" source
-                                        "-C" target "--strip-components=1"))
-                        (chdir target)
-                        (unpack "openjdk-src" "openjdk.src")
-                        (with-directory-excursion "openjdk.src"
-                          (for-each unpack
-                                    (filter (cut string-suffix? "-drop" <>)
-                                            (map (match-lambda
-                                                   ((name . _) name))
-                                                 inputs))))
-                        #t))))
-                 (replace
-                  'set-additional-paths
-                  (lambda* (#:key inputs #:allow-other-keys)
-                    (let (;; Get target-specific include directory so that
-                          ;; libgcj-config.h is found when compiling hotspot.
-                          (gcjinclude (let* ((port (open-input-pipe "gcj -print-file-name=include"))
-                                             (str  (read-line port)))
-                                        (close-pipe port)
-                                        str)))
-                      (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
-                        (("ALSA_INCLUDE=/usr/include/alsa/version.h")
-                         (string-append "ALSA_INCLUDE="
-                                        (assoc-ref inputs "alsa-lib")
-                                        "/include/alsa/version.h")))
-                      (setenv "CC" "gcc")
-                      (setenv "CPATH"
-                              (string-append gcjinclude ":"
-                                             (assoc-ref inputs "libxcomposite")
-                                             "/include/X11/extensions" ":"
-                                             (assoc-ref inputs "libxrender")
-                                             "/include/X11/extensions" ":"
-                                             (assoc-ref inputs "libxtst")
-                                             "/include/X11/extensions" ":"
-                                             (assoc-ref inputs "libxinerama")
-                                             "/include/X11/extensions" ":"
-                                             (or (getenv "CPATH") "")))
-                      (setenv "ALT_OBJCOPY" (which "objcopy"))
-                      (setenv "ALT_CUPS_HEADERS_PATH"
-                              (string-append (assoc-ref inputs "cups")
-                                             "/include"))
-                      (setenv "ALT_FREETYPE_HEADERS_PATH"
-                              (string-append (assoc-ref inputs "freetype")
-                                             "/include"))
-                      (setenv "ALT_FREETYPE_LIB_PATH"
-                              (string-append (assoc-ref inputs "freetype")
-                                             "/lib")))))
-                 (add-after
-                  'unpack 'fix-x11-extension-include-path
-                  (lambda* (#:key inputs #:allow-other-keys)
-                    (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
-                      (((string-append "\\$\\(firstword \\$\\(wildcard "
-                                       "\\$\\(OPENWIN_HOME\\)"
-                                       "/include/X11/extensions\\).*$"))
-                       (string-append (assoc-ref inputs "libxrender")
-                                      "/include/X11/extensions"
-                                      " -I" (assoc-ref inputs "libxtst")
-                                      "/include/X11/extensions"
-                                      " -I" (assoc-ref inputs "libxinerama")
-                                      "/include/X11/extensions"))
-                      (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") ""))
-                    #t))
-                 (replace
-                  'fix-test-framework
-                  (lambda _
-                    ;; Fix PATH in test environment
-                    (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java"
-                      (("PATH=/bin:/usr/bin")
-                       (string-append "PATH=" (getenv "PATH"))))
-                    (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java"
-                      (("/usr/bin/env") (which "env")))
-                    (substitute* "openjdk.src/hotspot/test/test_env.sh"
-                      (("/bin/rm") (which "rm"))
-                      (("/bin/cp") (which "cp"))
-                      (("/bin/mv") (which "mv")))
-                    #t))
-                 (delete 'patch-patches))))))
+
+         #:modules ((guix build utils)
+                    (guix build gnu-build-system)
+                    (ice-9 match)
+                    (ice-9 popen)
+                    (ice-9 rdelim)
+                    (srfi srfi-19)
+                    (srfi srfi-26))
+
+         #:configure-flags
+         (let* ((gcjdir (assoc-ref %build-inputs "gcj"))
+                (ecj    (string-append gcjdir "/share/java/ecj.jar"))
+                (jdk    (string-append gcjdir "/lib/jvm/"))
+                (gcj    (string-append gcjdir "/bin/gcj")))
+           ;; TODO: package pcsc and sctp, and add to inputs
+           `("--disable-system-pcsc"
+             "--disable-system-sctp"
+             "--enable-bootstrap"
+             "--enable-nss"
+             "--without-rhino"
+             "--disable-downloading"
+             "--disable-tests"        ;they are run in the check phase instead
+             "--with-openjdk-src-dir=./openjdk.src"
+             ,(string-append "--with-javac=" jdk "/bin/javac")
+             ,(string-append "--with-ecj-jar=" ecj)
+             ,(string-append "--with-gcj=" gcj)
+             ,(string-append "--with-jdk-home=" jdk)
+             ,(string-append "--with-java=" jdk "/bin/java")))
+
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'unpack
+             (lambda* (#:key source inputs #:allow-other-keys)
+               (let ((target (string-append "icedtea-" ,version))
+                     (unpack (lambda* (name #:optional dir)
+                               (let ((dir (or dir
+                                              (string-drop-right name 5))))
+                                 (mkdir dir)
+                                 (zero? (system* "tar" "xvf"
+                                                 (assoc-ref inputs name)
+                                                 "-C" dir
+                                                 "--strip-components=1"))))))
+                 (mkdir target)
+                 (and
+                  (zero? (system* "tar" "xvf" source
+                                  "-C" target "--strip-components=1"))
+                  (chdir target)
+                  (unpack "openjdk-src" "openjdk.src")
+                  (with-directory-excursion "openjdk.src"
+                    (for-each unpack
+                              (filter (cut string-suffix? "-drop" <>)
+                                      (map (match-lambda
+                                             ((name . _) name))
+                                           inputs))))
+                  #t))))
+           (add-after 'unpack 'fix-x11-extension-include-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
+                 (((string-append "\\$\\(firstword \\$\\(wildcard "
+                                  "\\$\\(OPENWIN_HOME\\)"
+                                  "/include/X11/extensions\\).*$"))
+                  (string-append (assoc-ref inputs "libxrender")
+                                 "/include/X11/extensions"
+                                 " -I" (assoc-ref inputs "libxtst")
+                                 "/include/X11/extensions"
+                                 " -I" (assoc-ref inputs "libxinerama")
+                                 "/include/X11/extensions"))
+                 (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") ""))
+               #t))
+           (add-after 'unpack 'patch-paths
+             (lambda _
+               ;; buildtree.make generates shell scripts, so we need to replace
+               ;; the generated shebang
+               (substitute* '("openjdk.src/hotspot/make/linux/makefiles/buildtree.make")
+                 (("/bin/sh") (which "bash")))
+
+               (let ((corebin (string-append
+                               (assoc-ref %build-inputs "coreutils") "/bin/"))
+                     (binbin  (string-append
+                               (assoc-ref %build-inputs "binutils") "/bin/"))
+                     (grepbin (string-append
+                               (assoc-ref %build-inputs "grep") "/bin/")))
+                 (substitute* '("openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
+                                "openjdk.src/corba/make/common/shared/Defs-linux.gmk")
+                   (("UNIXCOMMAND_PATH  = /bin/")
+                    (string-append "UNIXCOMMAND_PATH = " corebin))
+                   (("USRBIN_PATH  = /usr/bin/")
+                    (string-append "USRBIN_PATH = " corebin))
+                   (("DEVTOOLS_PATH *= */usr/bin/")
+                    (string-append "DEVTOOLS_PATH = " corebin))
+                   (("COMPILER_PATH *= */usr/bin/")
+                    (string-append "COMPILER_PATH = "
+                                   (assoc-ref %build-inputs "gcc") "/bin/"))
+                   (("DEF_OBJCOPY *=.*objcopy")
+                    (string-append "DEF_OBJCOPY = " (which "objcopy"))))
+
+                 ;; fix path to alsa header
+                 (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
+                   (("ALSA_INCLUDE=/usr/include/alsa/version.h")
+                    (string-append "ALSA_INCLUDE="
+                                   (assoc-ref %build-inputs "alsa-lib")
+                                   "/include/alsa/version.h")))
+
+                 ;; fix hard-coded utility paths
+                 (substitute* '("openjdk.src/jdk/make/common/shared/Defs-utils.gmk"
+                                "openjdk.src/corba/make/common/shared/Defs-utils.gmk")
+                   (("ECHO *=.*echo")
+                    (string-append "ECHO = " (which "echo")))
+                   (("^GREP *=.*grep")
+                    (string-append "GREP = " (which "grep")))
+                   (("EGREP *=.*egrep")
+                    (string-append "EGREP = " (which "egrep")))
+                   (("CPIO *=.*cpio")
+                    (string-append "CPIO = " (which "cpio")))
+                   (("READELF *=.*readelf")
+                    (string-append "READELF = " (which "readelf")))
+                   (("^ *AR *=.*ar")
+                    (string-append "AR = " (which "ar")))
+                   (("^ *TAR *=.*tar")
+                    (string-append "TAR = " (which "tar")))
+                   (("AS *=.*as")
+                    (string-append "AS = " (which "as")))
+                   (("LD *=.*ld")
+                    (string-append "LD = " (which "ld")))
+                   (("STRIP *=.*strip")
+                    (string-append "STRIP = " (which "strip")))
+                   (("NM *=.*nm")
+                    (string-append "NM = " (which "nm")))
+                   (("^SH *=.*sh")
+                    (string-append "SH = " (which "bash")))
+                   (("^FIND *=.*find")
+                    (string-append "FIND = " (which "find")))
+                   (("LDD *=.*ldd")
+                    (string-append "LDD = " (which "ldd")))
+                   (("NAWK *=.*(n|g)awk")
+                    (string-append "NAWK = " (which "gawk")))
+                   (("XARGS *=.*xargs")
+                    (string-append "XARGS = " (which "xargs")))
+                   (("UNZIP *=.*unzip")
+                    (string-append "UNZIP = " (which "unzip")))
+                   (("ZIPEXE *=.*zip")
+                    (string-append "ZIPEXE = " (which "zip")))
+                   (("SED *=.*sed")
+                    (string-append "SED = " (which "sed"))))
+
+                 ;; Some of these timestamps cause problems as they are more than
+                 ;; 10 years ago, failing the build process.
+                 (substitute*
+                     "openjdk.src/jdk/src/share/classes/java/util/CurrencyData.properties"
+                   (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
+                   (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
+                   (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
+                   (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))
+               #t))
+           (add-before 'configure 'set-additional-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ( ;; Get target-specific include directory so that
+                     ;; libgcj-config.h is found when compiling hotspot.
+                     (gcjinclude (let* ((port (open-input-pipe "gcj -print-file-name=include"))
+                                        (str  (read-line port)))
+                                   (close-pipe port)
+                                   str)))
+                 (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
+                   (("ALSA_INCLUDE=/usr/include/alsa/version.h")
+                    (string-append "ALSA_INCLUDE="
+                                   (assoc-ref inputs "alsa-lib")
+                                   "/include/alsa/version.h")))
+                 (setenv "CC" "gcc")
+                 (setenv "CPATH"
+                         (string-append gcjinclude ":"
+                                        (assoc-ref inputs "libxcomposite")
+                                        "/include/X11/extensions" ":"
+                                        (assoc-ref inputs "libxrender")
+                                        "/include/X11/extensions" ":"
+                                        (assoc-ref inputs "libxtst")
+                                        "/include/X11/extensions" ":"
+                                        (assoc-ref inputs "libxinerama")
+                                        "/include/X11/extensions" ":"
+                                        (or (getenv "CPATH") "")))
+                 (setenv "ALT_OBJCOPY" (which "objcopy"))
+                 (setenv "ALT_CUPS_HEADERS_PATH"
+                         (string-append (assoc-ref inputs "cups")
+                                        "/include"))
+                 (setenv "ALT_FREETYPE_HEADERS_PATH"
+                         (string-append (assoc-ref inputs "freetype")
+                                        "/include"))
+                 (setenv "ALT_FREETYPE_LIB_PATH"
+                         (string-append (assoc-ref inputs "freetype")
+                                        "/lib")))
+               #t))
+           (add-before 'check 'fix-test-framework
+             (lambda _
+               ;; Fix PATH in test environment
+               (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java"
+                 (("PATH=/bin:/usr/bin")
+                  (string-append "PATH=" (getenv "PATH"))))
+               (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java"
+                 (("/usr/bin/env") (which "env")))
+               (substitute* "openjdk.src/hotspot/test/test_env.sh"
+                 (("/bin/rm") (which "rm"))
+                 (("/bin/cp") (which "cp"))
+                 (("/bin/mv") (which "mv")))
+               #t))
+           (add-before 'check 'fix-hotspot-tests
+             (lambda _
+               (with-directory-excursion "openjdk.src/hotspot/test/"
+                 (substitute* "jprt.config"
+                   (("PATH=\"\\$\\{path4sdk\\}\"")
+                    (string-append "PATH=" (getenv "PATH")))
+                   (("make=/usr/bin/make")
+                    (string-append "make=" (which "make"))))
+                 (substitute* '("runtime/6626217/Test6626217.sh"
+                                "runtime/7110720/Test7110720.sh")
+                   (("/bin/rm") (which "rm"))
+                   (("/bin/cp") (which "cp"))
+                   (("/bin/mv") (which "mv"))))
+               #t))
+           (add-before 'check 'fix-jdk-tests
+             (lambda _
+               (with-directory-excursion "openjdk.src/jdk/test/"
+                 (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
+                   (("/bin/pwd") (which "pwd")))
+                 (substitute* "com/sun/jdi/ShellScaffold.sh"
+                   (("/bin/kill") (which "kill")))
+                 (substitute* "start-Xvfb.sh"
+                   ;;(("/usr/bin/X11/Xvfb") (which "Xvfb"))
+                   (("/usr/bin/nohup")    (which "nohup")))
+                 (substitute* "javax/security/auth/Subject/doAs/Test.sh"
+                   (("/bin/rm") (which "rm")))
+                 (substitute* "tools/launcher/MultipleJRE.sh"
+                   (("echo \"#!/bin/sh\"")
+                    (string-append "echo \"#!" (which "rm") "\""))
+                   (("/usr/bin/zip") (which "zip")))
+                 (substitute* "com/sun/jdi/OnThrowTest.java"
+                   (("#!/bin/sh") (string-append "#!" (which "sh"))))
+                 (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java"
+                   (("/usr/bin/uptime") (which "uptime")))
+                 (substitute* "java/lang/ProcessBuilder/Basic.java"
+                   (("/usr/bin/env") (which "env"))
+                   (("/bin/false") (which "false"))
+                   (("/bin/true") (which "true"))
+                   (("/bin/cp") (which "cp"))
+                   (("/bin/sh") (which "sh")))
+                 (substitute* "java/lang/ProcessBuilder/FeelingLucky.java"
+                   (("/bin/sh") (which "sh")))
+                 (substitute* "java/lang/ProcessBuilder/Zombies.java"
+                   (("/usr/bin/perl") (which "perl"))
+                   (("/bin/ps") (which "ps"))
+                   (("/bin/true") (which "true")))
+                 (substitute* "java/lang/Runtime/exec/ConcurrentRead.java"
+                   (("/usr/bin/tee") (which "tee")))
+                 (substitute* "java/lang/Runtime/exec/ExecWithDir.java"
+                   (("/bin/true") (which "true")))
+                 (substitute* "java/lang/Runtime/exec/ExecWithInput.java"
+                   (("/bin/cat") (which "cat")))
+                 (substitute* "java/lang/Runtime/exec/ExitValue.java"
+                   (("/bin/sh") (which "sh"))
+                   (("/bin/true") (which "true"))
+                   (("/bin/kill") (which "kill")))
+                 (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java"
+                   (("/usr/bin/echo") (which "echo")))
+                 (substitute* "java/lang/Runtime/exec/LotsOfOutput.java"
+                   (("/usr/bin/cat") (which "cat")))
+                 (substitute* "java/lang/Runtime/exec/SleepyCat.java"
+                   (("/bin/cat") (which "cat"))
+                   (("/bin/sleep") (which "sleep"))
+                   (("/bin/sh") (which "sh")))
+                 (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java"
+                   (("/bin/cat") (which "cat")))
+                 (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java"
+                   (("/bin/chmod") (which "chmod")))
+                 (substitute* "java/util/zip/ZipFile/Assortment.java"
+                   (("/bin/sh") (which "sh"))))
+               #t))
+           (replace 'check
+             (lambda _
+               ;; The "make check-*" targets always return zero, so we need to
+               ;; check for errors in the associated log files to determine
+               ;; whether any tests have failed.
+               (use-modules (ice-9 rdelim))
+               (let* ((error-pattern (make-regexp "^(Error|FAILED):.*"))
+                      (checker (lambda (port)
+                                 (let loop ()
+                                   (let ((line (read-line port)))
+                                     (cond
+                                      ((eof-object? line) #t)
+                                      ((regexp-exec error-pattern line) #f)
+                                      (else (loop)))))))
+                      (run-test (lambda (test)
+                                  (system* "make" test)
+                                  (call-with-input-file
+                                      (string-append "test/" test ".log")
+                                    checker))))
+                 (or #t                 ; skip tests
+                     (and (run-test "check-hotspot")
+                          (run-test "check-langtools")
+                          (run-test "check-jdk"))))))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((doc (string-append (assoc-ref outputs "doc")
+                                         "/share/doc/icedtea"))
+                     (jre (assoc-ref outputs "out"))
+                     (jdk (assoc-ref outputs "jdk")))
+                 (copy-recursively "openjdk.build/docs" doc)
+                 (copy-recursively "openjdk.build/j2re-image" jre)
+                 (copy-recursively "openjdk.build/j2sdk-image" jdk))
+               #t))
+           ;; By default IcedTea only generates an empty keystore.  In order to
+           ;; be able to use certificates in Java programs we need to generate a
+           ;; keystore from a set of certificates.  For convenience we use the
+           ;; certificates from the nss-certs package.
+           (add-after 'install 'install-keystore
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((keystore  "cacerts")
+                      (certs-dir (string-append (assoc-ref inputs "nss-certs")
+                                                "/etc/ssl/certs"))
+                      (keytool   (string-append (assoc-ref outputs "jdk")
+                                                "/bin/keytool")))
+                 (define (extract-cert file target)
+                   (call-with-input-file file
+                     (lambda (in)
+                       (call-with-output-file target
+                         (lambda (out)
+                           (let loop ((line (read-line in 'concat))
+                                      (copying? #f))
+                             (cond
+                              ((eof-object? line) #t)
+                              ((string-prefix? "-----BEGIN" line)
+                               (display line out)
+                               (loop (read-line in 'concat) #t))
+                              ((string-prefix? "-----END" line)
+                               (display line out)
+                               #t)
+                              (else
+                               (when copying? (display line out))
+                               (loop (read-line in 'concat) copying?)))))))))
+                 (define (import-cert cert)
+                   (format #t "Importing certificate ~a\n" (basename cert))
+                   (let ((temp "tmpcert"))
+                     (extract-cert cert temp)
+                     (let ((port (open-pipe* OPEN_WRITE keytool
+                                             "-import"
+                                             "-alias" (basename cert)
+                                             "-keystore" keystore
+                                             "-storepass" "changeit"
+                                             "-file" temp)))
+                       (display "yes\n" port)
+                       (when (not (zero? (status:exit-val (close-pipe port))))
+                         (format #t "failed to import ~a\n" cert)))
+                     (delete-file temp)))
+
+                 ;; This is necessary because the certificate directory contains
+                 ;; files with non-ASCII characters in their names.
+                 (setlocale LC_ALL "en_US.utf8")
+                 (setenv "LC_ALL" "en_US.utf8")
+
+                 (for-each import-cert (find-files certs-dir "\\.pem$"))
+                 (mkdir-p (string-append (assoc-ref outputs "out")
+                                         "/lib/security"))
+                 (mkdir-p (string-append (assoc-ref outputs "jdk")
+                                         "/jre/lib/security"))
+
+                 ;; The cacerts files we are going to overwrite are chmod'ed as
+                 ;; read-only (444) in icedtea-8 (which derives from this
+                 ;; package).  We have to change this so we can overwrite them.
+                 (chmod (string-append (assoc-ref outputs "out")
+                                       "/lib/security/" keystore) #o644)
+                 (chmod (string-append (assoc-ref outputs "jdk")
+                                       "/jre/lib/security/" keystore) #o644)
+
+                 (install-file keystore
+                               (string-append (assoc-ref outputs "out")
+                                              "/lib/security"))
+                 (install-file keystore
+                               (string-append (assoc-ref outputs "jdk")
+                                              "/jre/lib/security"))
+                 #t))))))
       (native-inputs
        `(("openjdk-src"
           ,(drop "openjdk"
@@ -946,11 +784,55 @@ build process and its dependencies, whereas Make uses Makefile format.")
          ("hotspot-drop"
           ,(drop "hotspot"
                  "16ijxy8br8dla339m4i90wr9xpf7s8z3nrhfyxm7jahr8injpzyl"))
-         ,@(fold alist-delete (package-native-inputs icedtea-6)
-                 '("openjdk6-src"))))
+         ("ant" ,ant)
+         ("attr" ,attr)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("coreutils" ,coreutils)
+         ("diffutils" ,diffutils)       ;for tests
+         ("gawk" ,gawk)
+         ("grep" ,grep)
+         ("libtool" ,libtool)
+         ("pkg-config" ,pkg-config)
+         ("wget" ,wget)
+         ("which" ,which)
+         ("cpio" ,cpio)
+         ("zip" ,zip)
+         ("unzip" ,unzip)
+         ("fastjar" ,fastjar)
+         ("libxslt" ,libxslt)           ;for xsltproc
+         ("nss-certs" ,nss-certs)
+         ("perl" ,perl)
+         ("procps" ,procps) ;for "free", even though I'm not sure we should use it
+         ("gcj" ,gcj)))
       (inputs
-       `(("libxcomposite" ,libxcomposite)
-         ,@(package-inputs icedtea-6))))))
+       `(("alsa-lib" ,alsa-lib)
+         ("cups" ,cups)
+         ("libx11" ,libx11)
+         ("libxcomposite" ,libxcomposite)
+         ("libxt" ,libxt)
+         ("libxtst" ,libxtst)
+         ("libxi" ,libxi)
+         ("libxinerama" ,libxinerama)
+         ("libxrender" ,libxrender)
+         ("libjpeg" ,libjpeg)
+         ("libpng" ,libpng)
+         ("mit-krb5" ,mit-krb5)
+         ("nss" ,nss)
+         ("giflib" ,giflib)
+         ("fontconfig" ,fontconfig)
+         ("freetype" ,freetype)
+         ("lcms" ,lcms)
+         ("zlib" ,zlib)
+         ("gtk" ,gtk+-2)))
+      (home-page "http://icedtea.classpath.org")
+      (synopsis "Java development kit")
+      (description
+       "This package provides the Java development kit OpenJDK built with the
+IcedTea build harness.")
+      ;; IcedTea is released under the GPL2 + Classpath exception, which is the
+      ;; same license as both GNU Classpath and OpenJDK.
+      (license license:gpl2+))))
 
 (define-public icedtea-8
   (let* ((version "3.3.0")
@@ -973,10 +855,15 @@ build process and its dependencies, whereas Make uses Makefile format.")
                   "02vmxa6gc6gizcri1fy797qmmm9y77vgi7gy9pwkk4agcw4zyr5p"))
                 (modules '((guix build utils)))
                 (snippet
-                 '(substitute* "Makefile.am"
-                    ;; do not leak information about the build host
-                    (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
-                     "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
+                 '(begin
+                    (substitute* "acinclude.m4"
+                      ;; Do not embed build time
+                      (("(DIST_ID=\"Custom build).*$" _ prefix)
+                       (string-append prefix "\"\n"))
+                      ;; Do not leak information about the build host
+                      (("DIST_NAME=\"\\$build_os\"")
+                       "DIST_NAME=\"guix\""))
+                    #t))))
       (arguments
        (substitute-keyword-arguments (package-arguments icedtea-7)
          ((#:configure-flags flags)
@@ -1023,9 +910,6 @@ build process and its dependencies, whereas Make uses Makefile format.")
                     (find-files "openjdk.src/jdk/src/solaris/native"
                                 "\\.c|\\.h"))
                    #t)))
-             ;; FIXME: This phase is needed but fails with this version of
-             ;; IcedTea.
-             (delete 'install-keystore)
              (replace 'install
                (lambda* (#:key outputs #:allow-other-keys)
                  (let ((doc (string-append (assoc-ref outputs "doc")
diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index 52b9216827..fcc9cc8082 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -27,7 +27,7 @@
 (define-public jemalloc
   (package
     (name "jemalloc")
-    (version "4.4.0")
+    (version "4.5.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -35,7 +35,7 @@
                     version "/jemalloc-" version ".tar.bz2"))
               (sha256
                (base32
-                "0cxhhybcbi02szavlxzwhvmqvddi7kgy71qxz2nz3lhqjwzadbm7"))))
+                "10373xhpc10pgmai9fkc1z0rs029qlcb3c0qfnvkbwdlcibdh2cl"))))
     (build-system gnu-build-system)
     (home-page "http://jemalloc.net/")
     (synopsis "General-purpose scalable concurrent malloc implementation")
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index e552a4ee38..dd5f7c4067 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -26,10 +26,13 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages tls))
 
 (define-public libevent
   (package
@@ -149,3 +152,78 @@ resolution, asynchronous file system operations, and threading primitives.")
     ;; A few files fall under other non-copyleft licenses; see 'LICENSE' for
     ;; details.
     (license x11)))
+
+(define-public perl-anyevent
+  (package
+    (name "perl-anyevent")
+    (version "7.13")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
+                                  "AnyEvent-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1b84ilkbrfbzqapv25x8z6gva92skbrf2srybdabb1wnxx6ky454"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-canary-stability" ,perl-canary-stability)))
+    (propagated-inputs
+     `(("perl-async-interrupt" ,perl-async-interrupt)
+       ("perl-ev" ,perl-ev)
+       ("perl-guard" ,perl-guard)
+       ("perl-json" ,perl-json)
+       ("perl-json-xs" ,perl-json-xs)
+       ("perl-net-ssleay" ,perl-net-ssleay)
+       ("perl-task-weaken" ,perl-task-weaken)))
+    (home-page "http://search.cpan.org/dist/AnyEvent")
+    (synopsis
+     "API for I/O, timer, signal, child process and completion events")
+    (description
+     "This module allows using a variety of events without forcing module
+authors to pick a specific event loop, and without noticable overhead.
+Currently supported event loops are EV, Event, Glib/Gtk2, Tk, Qt,
+@code{Event::Lib}, Irssi, @code{IO::Async} and POE (and thus also WxWidgets
+and Prima).  It also comes with a very fast Pure Perl event loop that does
+not rely on XS.")
+    (license (package-license perl))))
+
+(define-public perl-ev
+  (package
+    (name "perl-ev")
+    (version "4.22")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/EV-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "14d9115q8f2ca2q3vbcalm55zqsbx8xjq5aj098laj9f9rrzirra"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Drop bundled libev.
+                  (delete-file-recursively "libev")
+                  #t))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-libev
+           ;; This package requires the libev *sources* in order
+           ;; to build. Unpack system libev here...
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir "./libev")
+             (zero? (system* "tar" "-xf" (assoc-ref inputs "libev-source")
+                             "-C" "./libev" "--strip-components=1")))))))
+    (native-inputs
+     `(("libev-source" ,(package-source libev))
+       ("perl-canary-stability" ,perl-canary-stability)))
+    (propagated-inputs
+     `(("perl-common-sense" ,perl-common-sense)))
+    (home-page "http://search.cpan.org/dist/EV")
+    (synopsis "Perl interface to libev")
+    (description
+     "This module provides an interface to @code{libev}, a high performance
+full-featured event loop.  It can be used through the @code{AnyEvent} module
+and still be faster than other event loops currently supported in Perl.")
+    (license (package-license perl))))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index bc3e4d4079..d239d4e4c4 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -194,11 +194,10 @@
 (define* (kernel-config arch #:key variant)
   "Return the absolute file name of the Linux-Libre build configuration file
 for ARCH and optionally VARIANT, or #f if there is no such configuration."
-  (let* ((name (string-append "linux-libre-"
-                              (if variant (string-append variant "-") "")
+  (let* ((name (string-append (if variant (string-append variant "-") "")
                               (if (string=? "i386" arch) "i686" arch) ".conf"))
-         (file (string-append "gnu/packages/" name)))
-    (search-path %load-path file)))
+         (file (string-append "linux-libre/" name)))
+    (search-auxiliary-file file)))
 
 (define %default-extra-linux-options
   `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
@@ -338,8 +337,8 @@ It has been modified to remove all non-free binary blobs.")
 
 (define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
 
-(define %linux-libre-version "4.10")
-(define %linux-libre-hash "167zzgkivpqsp07did25wjqsswddzp3gifcdkq7xk00llxlmspla")
+(define %linux-libre-version "4.10.1")
+(define %linux-libre-hash "0mvwrjny1bjqyjqjxff9m97j48ybfdw8qpdazr5rwk12234v4k3d")
 
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
@@ -1097,10 +1096,10 @@ allows a system administrator to make use of all iproute2 features, including
 traffic control.
 
 iproute2 is usually shipped in a package called iproute or iproute2 and
-consists of several tools, of which the most important are ip and tc.  ip
-controls IPv4 and IPv6 configuration and tc stands for traffic control.  Both
-tools print detailed usage messages and are accompanied by a set of
-manpages.")
+consists of several tools, of which the most important are @command{ip} and
+@command{tc}.  @command{ip} controls IPv4 and IPv6 configuration and
+@command{tc} stands for traffic control.  Both tools print detailed usage
+messages and are accompanied by a set of manpages.")
     (license license:gpl2+)))
 
 (define-public net-tools
@@ -3230,7 +3229,7 @@ of flash storage.")
 (define-public libseccomp
   (package
     (name "libseccomp")
-    (version "2.3.1")
+    (version "2.3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/seccomp/libseccomp/"
@@ -3238,7 +3237,7 @@ of flash storage.")
                                   "/libseccomp-" version ".tar.gz"))
               (sha256
                (base32
-                "0asnlkzqms520r0dra08dzcz5hh6hs7lkajfw9wij3vrd0hxsnzz"))))
+                "18dwfxzsw3agiy2dxbflrkhmjgvlji0wwkk636nabh2ng41qrp1x"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 80161de01b..647c64dcc7 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
-;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;;
@@ -37,16 +37,27 @@
   #:use-module (guix build-system asdf)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libffcall)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages sdl)
   #:use-module (gnu packages libsigsegv)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages ed)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages xorg)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
@@ -530,6 +541,69 @@ The core is 12 builtin special forms and 33 builtin functions.")
       (home-page "https://github.com/JeffBezanson/femtolisp")
       (license license:bsd-3))))
 
+(define-public lush2
+  (package
+    (name "lush2")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
+                           version ".tar.gz"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "src/unix.c"
+               (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
+               (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
+             (substitute* "src/main.c"
+               (("\" \\(built \" __DATE__ \"\\)\"") ""))))
+       (sha256
+        (base32
+         "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(;; We have to add these LIBS so that they are found.
+       #:configure-flags (list "LIBS=-lz"
+                               "X_EXTRA_LIBS=-lfontconfig"
+                               "--with-x")
+       #:tests? #f)) ; No make check.
+    (native-inputs `(("intltool" ,intltool)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("sdl" ,sdl)
+       ("sdl-image" ,sdl-image)
+       ("sdl-mixer" ,sdl-mixer)
+       ("sdl-net" ,sdl-net)
+       ("sdl-ttf" ,sdl-ttf)
+       ("lapack" ,lapack)
+       ("libxft" ,libxft)
+       ("fontconfig" ,fontconfig)
+       ("gsl" ,gsl)
+       ("openblas" ,openblas)
+       ("glu" ,glu)
+       ("mesa" ,mesa)
+       ("mesa-utils" ,mesa-utils)
+       ("binutils" ,binutils)
+       ("libiberty" ,libiberty)
+       ("readline" ,readline)
+       ("zlib" ,zlib)
+       ("gettext-minimal" ,gettext-minimal)))
+    (synopsis "Lisp Universal Shell")
+    (description
+     "Lush is an object-oriented Lisp interpreter/compiler with features
+designed to please people who want to prototype large numerical
+applications.  Lush includes an extensive library of
+vector/matrix/tensor manipulation, numerous numerical libraries
+(including GSL, LAPACK, and BLAS), a set of graphic functions, a
+simple GUI toolkit, and interfaces to various graphic and multimedia
+libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
+grabbing), and others.  Lush is an ideal frontend script language for
+programming projects written in C or other languages.  Lush also has
+libraries for Machine Learning, Neural Nets and statistical estimation.")
+    (home-page "http://lush.sourceforge.net/")
+    (license license:lgpl2.1+)))
+
 (define-public sbcl-alexandria
   (let ((revision "1")
         (commit "926a066611b7b11cb71e26c827a271e500888c30"))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 8651deefb5..b70597b84d 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
@@ -214,14 +214,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.7.2")
+    (version "1.8.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1yazrl82s9fxmamnlvwmsxhwrxnwv6kwakgfmawda8ndhwb50lqm"))
+               "1axdcylyv0p194y6lj1jx127g5yc74zqzzxdc014cjw02bd1x125"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -267,6 +267,8 @@ operating systems.")
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
        ("gdbm" ,gdbm)
+       ("lmdb" ,lmdb)
+       ("tokyocabinet" ,tokyocabinet)
        ("gpgme" ,gpgme)
        ("ncurses" ,ncurses)
        ("gnutls" ,gnutls)
@@ -289,10 +291,11 @@ operating systems.")
              "--enable-gpgme"
 
              ;; database, implies header caching
-             "--without-tokyocabinet"
+             ;; neomutt supports building multiple backends
+             "--with-tokyocabinet"
              "--without-qdbm"
              "--without-bdb"
-             "--without-lmdb"
+             "--with-lmdb"
              "--with-gdbm"
 
              "--with-gnutls"
@@ -659,14 +662,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.23.5")
+    (version "0.23.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ry2k9sdwd1vw8cf6svch8wk98523s07mwxvsf7b8kghqnrr89n6"))))
+                "04w90c43zk23pys6prkqb14al408qypifcfj2qznqpwlf46v26zi"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list "V=1") ; Verbose test output.
@@ -1955,3 +1958,38 @@ installation on systems where resources are limited.  Its features include:
 @item Rich and customisable texts for automated operations.
 @end enumerate\n")
     (license license:expat)))
+
+(define-public blists
+  (package
+    (name "blists")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://download.openwall.net/pub/projects/"
+                           "blists/blists-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1gp51kmb8yv8d693wcpdslmwlbw5w2kgz4kxhrcaf7y89w8wy4qd"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (install-file "bindex" bin)
+               (install-file "bit" bin)
+               #t))))))
+    (home-page "http://www.openwall.com/blists/")
+    (synopsis "Web interface to mailing list archives")
+    (description
+     "Blists is a web interface to mailing list archives that works off
+indexed mbox files.  There are two programs: @code{bindex} and @code{bit}.
+@code{bindex} generates or updates the index file (incremental updates
+are supported).  @code{bit} is a CGI/SSI program that generates web pages
+on the fly.  Both programs are written in C and are very fast.")
+    (license license:expat)))
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 69c560c1b0..3763292fe4 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -202,7 +202,7 @@ automatically.")
 (define-public txt2man
   (package
     (name "txt2man")
-    (version "1.5.6")
+    (version "1.6.0")
     (source
      (origin
        (method url-fetch)
@@ -211,7 +211,7 @@ automatically.")
              version ".tar.gz"))
        (sha256
         (base32
-         "0sjq687jknq65wbnjh2siq8hc09ydpnlmrkrnwl66mrhd4n9g7fz"))))
+         "168cj96974n2z0igin6j1ic1m45zyic7nm5ark7frq8j78rrx4zn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no "check" target
diff --git a/gnu/packages/markdown.scm b/gnu/packages/markdown.scm
index ae54b0b172..4a020198e4 100644
--- a/gnu/packages/markdown.scm
+++ b/gnu/packages/markdown.scm
@@ -104,7 +104,7 @@ convert it to structurally valid XHTML (or HTML).")
 (define-public cmark
   (package
     (name "cmark")
-    (version "0.26.1")
+    (version "0.27.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/jgm/cmark/archive/"
@@ -112,7 +112,7 @@ convert it to structurally valid XHTML (or HTML).")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1mpmcy4bbmc8m058zqs9dwx49lcfi7bdnfszsr9y66cwgylia1mm"))))
+               "1da62ispca9aal2a36gaj87175rv5013pl7x740vk32y6lclr6v6"))))
     (build-system cmake-build-system)
     (arguments
      '(#:test-target "test"))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 18536c43ee..9533f5f0a8 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -83,6 +83,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages tbb)
+  #:use-module (gnu packages scheme)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
@@ -142,14 +143,14 @@ interactive dialogs to guide them.")
 (define-public coda
   (package
     (name "coda")
-    (version "2.17.3")
+    (version "2.18")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/stcorp/coda/releases/download/"
                            version "/coda-" version ".tar.gz"))
        (sha256
-        (base32 "04b9l3wzcix0mnfq77mwnil6cbr8h2mki8myvy0lzn236qcwaq1h"))
+        (base32 "11asla1ap8vd73farqjlpb179sfiy0biydcwxjfcakrp9sf8v9bs"))
        (patches (search-patches "coda-use-system-libs.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -923,7 +924,7 @@ can solve two kinds of problems:
 (define-public octave
   (package
     (name "octave")
-    (version "4.2.0")
+    (version "4.2.1")
     (source
      (origin
       (method url-fetch)
@@ -931,7 +932,7 @@ can solve two kinds of problems:
                           version ".tar.lz"))
       (sha256
        (base32
-        "19vvliwxgip0af812vny5xy5r8kacyj7v62203mh4z2n3p14b78i"))))
+        "09zhhch79jw3ynw39vizx0i2cbd2bjz3sp38pjdzraqrbivpwp92"))))
     (build-system gnu-build-system)
     (inputs
      `(("lapack" ,lapack)
@@ -2008,7 +2009,9 @@ point numbers.")
 (define-public wxmaxima
   (package
     (name "wxmaxima")
-    (version "16.12.2")
+    ;; Versions 16.12.0 to 16.12.2 have a bug which causes output lines to
+    ;; overlap. See <https://debbugs.gnu.org/25793>
+    (version "16.04.2")
     (source
      (origin
        (method url-fetch)
@@ -2016,7 +2019,7 @@ point numbers.")
                            version "/" name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0y22zhyhyxj2cbhzvs9c4pxr44i55ryfy5xi96d39bg2nbgs9h22"))))
+         "1fpqzk1921isiqrpgpf433ldq41924qs9sy99fl1zn5661b2l73n"))))
     (build-system gnu-build-system)
     (inputs
      `(("wxwidgets" ,wxwidgets)
@@ -2956,3 +2959,54 @@ algorithm for LCS.  It is a fast program to compute the approximate
 Longest Commons Subsequence of a set of strings.")
       (home-page "https://github.com/gdv/Reduce-Expand-for-LCS")
       (license license:gpl3+))))
+
+(define-public jacal
+  (package
+    (name "jacal")
+    (version "1c4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://groups.csail.mit.edu/mac/ftpdir/scm/jacal-"
+                    version ".zip"))
+              (sha256 (base32
+                       "055zrn12a1dmy0dqkwrkq3fklbhg3yir6vn0lacp4mvbg8573a3q"))
+              (patches (search-patches "jacal-fix-texinfo.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+                     ;; Don't use upstream's script - it really doesn't fit into
+                     ;; Guix's functional paradigm.
+                     (lambda* (#:key inputs outputs #:allow-other-keys)
+                       (substitute* "Makefile"
+                         (("^install: install-script") "install: "))))
+         (add-after 'install 'post-install
+                    ;; Instead, we provide our own simplified script.
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let ((wrapper (string-append (assoc-ref outputs "out")
+                                                    "/bin/jacal")))
+                        (format (open wrapper (logior O_WRONLY O_CREAT))
+                                (string-append "#!~a\nexec ~a/bin/scm -ip1 "
+                                "-e '(slib:load \"~a/lib/jacal/math\") "
+                                "(math)' \"$@\"\n")
+                                (which  "bash")
+                                (assoc-ref inputs "scm")
+                                (assoc-ref outputs "out"))
+                        (chmod wrapper #o555))))
+         (replace 'configure
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (zero? (system* "./configure"
+                                    (string-append "--prefix="
+                                                   (assoc-ref outputs "out")))))))))
+    (inputs `(("scm" ,scm)))
+    (native-inputs `(("unzip" ,unzip)
+                     ("texinfo" ,texinfo)))
+    (synopsis "Symbolic mathematics system")
+    (description "GNU JACAL is an interactive symbolic mathematics program based on
+Scheme.  It manipulate and simplify a range of mathematical expressions such
+as equations, scalars, vectors, and matrices.")
+    (home-page "http://www.gnu.org/software/jacal")
+    (license license:gpl3+)))
+
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 5fafe78e2e..571770b459 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -29,7 +29,7 @@
 (define-public nano
   (package
     (name "nano")
-    (version "2.7.4")
+    (version "2.7.5")
     (source
      (origin
       (method url-fetch)
@@ -37,7 +37,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "135wzlv77p9za8679j2jpfkpvainvyagrhkdxngp71ynabgc5zr3"))))
+        "01yrh66rph0vn9q9r2d2jji5yzaakxrj75j9fsm0g41m8qpy4sr2"))))
     (build-system gnu-build-system)
     (inputs
      `(("gettext" ,gettext-minimal)
@@ -45,7 +45,8 @@
     (home-page "https://www.nano-editor.org/")
     (synopsis "Small, user-friendly console text editor")
     (description
-     "GNU Nano is a small and simple text editor.  In addition to basic
-editing, it supports interactive search and replace, go to line and column
-number, auto-indentation and more.")
+     "GNU nano is a small and simple text editor for use in a terminal.  Besides
+basic editing, it supports: undo/redo, syntax highlighting, spell checking,
+justifying, auto-indentation, bracket matching, interactive search-and-replace
+(with regular expressions), and the editing of multiple files.")
     (license gpl3+))) ; some files are under GPLv2+
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 240fa517e5..eb3047c81b 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2016, 2017 ng0 <ng0@libertad.pw>
 ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
+;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,7 +81,7 @@
     (description "GNU MAC Changer is a utility for viewing and changing MAC
 addresses of networking devices.  New addresses may be set explicitly or
 randomly.  They can include MAC addresses of the same or other hardware vendors
-or, more generally, MAC addresses of the same category of hardware.") 
+or, more generally, MAC addresses of the same category of hardware.")
     (license license:gpl2+)))
 
 (define-public miredo
@@ -1119,3 +1120,24 @@ IPFIX, RSPAN, CLI, LACP, 802.1ag).")
            license:gpl2                 ; datapath
            license:bsd-2 license:bsd-3
            license:asl2.0))))           ; all other
+
+(define-public speedtest-cli
+  (package
+    (name "speedtest-cli")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/sivel/speedtest-cli/archive/v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ir9fqwr7cl9kfq7dgh9vkydkwf59wsx0cwbzbffw8i313xhzxa1"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/sivel/speedtest-cli")
+    (synopsis "Internet bandwidth tester")
+    (description
+     "Command line interface for testing internet bandwidth using
+speedtest.net.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 388368e2d3..c608f397dc 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -219,9 +219,9 @@ the Nix package manager.")
   ;;
   ;; Note: use a very short commit id; with a longer one, the limit on
   ;; hash-bang lines would be exceeded while running the tests.
-  (let ((commit "d9da3a757d3081403081577c4e07763c9b809043"))
+  (let ((commit "1162418ee88f155f6b14fd8926479c2176e40e76"))
     (package (inherit guix-0.12.0)
-      (version (string-append "0.12.0-4." (string-take commit 4)))
+      (version (string-append "0.12.0-5." (string-take commit 4)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -231,7 +231,7 @@ the Nix package manager.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "17w9jdzm3lvfbchx7qrlkczp2jsfsi6v8cpfqh290cip5gxgz9bn"))
+                  "16pxqbywhayazdgg9l19frigncmyq20j5fvaq4zgvm0iidndhfja"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (arguments
        (substitute-keyword-arguments (package-arguments guix-0.12.0)
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 0a3b4b64e7..811173cae4 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -32,6 +32,7 @@
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages aidc)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages glib)
@@ -282,7 +283,7 @@ any X11 window.")
 (define-public password-store
   (package
     (name "password-store")
-    (version "1.6.5")
+    (version "1.7")
     (source (origin
               (method url-fetch)
               (uri
@@ -290,7 +291,7 @@ any X11 window.")
                               name "-" version ".tar.xz"))
               (sha256
                (base32
-                "05bk3lrp5jwg0v338lvylp7glpliydzz4jf5pjr6k3kagrv3jyik"))))
+                "002mw7j0m33bw483rllzhcf41wp3ixka8yma6kqrfaj57jyw66hn"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -302,7 +303,7 @@ any X11 window.")
              (let ((out (assoc-ref outputs "out"))
                    (path (map (lambda (pkg)
                                 (string-append (assoc-ref inputs pkg) "/bin"))
-                              '("coreutils" "getopt" "git" "gnupg" "pwgen"
+                              '("coreutils" "getopt" "git" "gnupg" "qrencode"
                                 "sed" "tree" "which" "xclip"))))
                (wrap-program (string-append out "/bin/pass")
                  `("PATH" ":" prefix (,(string-join path ":"))))
@@ -325,7 +326,7 @@ any X11 window.")
      `(("getopt" ,util-linux)
        ("git" ,git)
        ("gnupg" ,gnupg)
-       ("pwgen" ,pwgen)
+       ("qrencode" ,qrencode)
        ("sed" ,sed)
        ("tree" ,tree)
        ("which" ,which)
diff --git a/gnu/packages/patches/jacal-fix-texinfo.patch b/gnu/packages/patches/jacal-fix-texinfo.patch
new file mode 100644
index 0000000000..83e44a3164
--- /dev/null
+++ b/gnu/packages/patches/jacal-fix-texinfo.patch
@@ -0,0 +1,92 @@
+Fix the broken Texinfo in the Jacal package documentation
+
+--- jacal/jacal.texi,orig	2017-02-23 20:35:55.303980444 +0100
++++ jacal/jacal.texi	2017-02-23 20:53:14.539024674 +0100
+@@ -343,7 +343,7 @@
+ 
+ With the standard input grammar, the precedence of @samp{-} as a prefix
+ behaves strangely.  @code{a^-b*c} becomes @code{a^(-b*c)} while
+-@code{@result{a^b*c} (a^b)*c}.
++@code{a^b*c @result{} (a^b)*c}.
+ 
+ Using @code{divide} to divide a polynomial by an integer does not work.
+ 
+@@ -675,8 +675,9 @@
+ e1: ---------
+         a
+ @end example
++@end deffn
+ 
+-@deffnx Command suchthat var exp
++@deffn Command suchthat var exp
+ 
+ If an expression rather than an equation is given to @code{suchthat}, it
+ is as though the equation @code{@var{exp}=0} was given.
+@@ -688,8 +689,9 @@
+ e2: ---------
+         a
+ @end example
++@end deffn
+ 
+-@deffnx Operator | var exp_or_eqn
++@deffn Operator | var exp_or_eqn
+ 
+ An alternative infix notation is also available for @code{suchthat}.
+ 
+@@ -857,8 +859,9 @@
+ 
+ Returns the degree of polynomial or equation @var{poly} in variable
+ @var{var}.
++@end deffn
+ 
+-@deffnx Operator degree poly
++@deffn Operator degree poly
+ 
+ Returns the total-degree, the degree of its highest degree monomial,
+ of polynomial or equation @var{poly}.
+@@ -1016,10 +1019,12 @@
+ Returns @var{poly1} reduced with respect to @var{poly2} (or @var{eqn})
+ and @var{var}.  If @var{poly2} is univariate, the third argument is not
+ needed.
++@end deffn
+ 
+-@deffnx Command mod poly1 n
++@deffn Command mod poly1 n
+ Returns @var{poly1} with all the coefficients taken modulo @var{n}.
+-@deffnx Command mod poly1
++@end deffn
++@deffn Command mod poly1
+ Returns @var{poly1} with all the coefficients taken modulo the
+ current modulus.
+ 
+@@ -1220,8 +1225,9 @@
+ e1: -1 2  3 5
+ @end group
+ @end example
++@end deffn
+ 
+-@deffnx Command factor polyratio
++@deffn Command factor polyratio
+ Given a univariate ratio of polynomials @var{polyratio}, returns a
+ matrix of factors and exponents.
+ 
+@@ -2028,7 +2034,7 @@
+ formed from the pair-wise products of components of the inputs.  For
+ example, for the input tensors @code{x[a,b]} and @code{y[c]}
+ @example
+-@result{z:tmult(x,y);} z[a,b,c] = x[a,b]*y[c]
++z:tmult(x,y); @result{} z[a,b,c] = x[a,b]*y[c]
+ @end example
+ 
+ With an additional argument, @code{tmult} will produce the inner product
+@@ -2464,8 +2470,9 @@
+ If you do not wish to return to Jacal but really want to terminate the
+ session and return to the operating system, then after typing
+ @code{qed();}, type @code{(slib:exit)} or use @code{quit}.
++@end deffn
+ 
+-@deffnx Command quit
++@deffn Command quit
+ Exit directly from Jacal to the operating system.  You will not be able
+ to continue your Jacal session.
+ 
diff --git a/gnu/packages/patches/mupdf-CVE-2017-5896.patch b/gnu/packages/patches/mupdf-CVE-2017-5896.patch
new file mode 100644
index 0000000000..1537ecc896
--- /dev/null
+++ b/gnu/packages/patches/mupdf-CVE-2017-5896.patch
@@ -0,0 +1,63 @@
+Fix CVE-2017-5896:
+
+https://bugs.ghostscript.com/show_bug.cgi?id=697515
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5896
+http://www.openwall.com/lists/oss-security/2017/02/10/1
+https://security-tracker.debian.org/tracker/CVE-2017-5896
+https://blogs.gentoo.org/ago/2017/02/09/mupdf-use-after-free-in-fz_subsample_pixmap-pixmap-c/
+
+Patch lifted from upstream source repository:
+
+http://git.ghostscript.com/?p=mupdf.git;h=2c4e5867ee699b1081527bc6c6ea0e99a35a5c27
+
+From 2c4e5867ee699b1081527bc6c6ea0e99a35a5c27 Mon Sep 17 00:00:00 2001
+From: Robin Watts <Robin.Watts@artifex.com>
+Date: Thu, 9 Feb 2017 07:12:16 -0800
+Subject: [PATCH] bug 697515: Fix out of bounds read in fz_subsample_pixmap
+
+Pointer arithmetic for final special case was going wrong.
+---
+ source/fitz/pixmap.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/source/fitz/pixmap.c b/source/fitz/pixmap.c
+index a8317127..f1291dc2 100644
+--- a/source/fitz/pixmap.c
++++ b/source/fitz/pixmap.c
+@@ -1104,6 +1104,7 @@ fz_subsample_pixmap_ARM(unsigned char *ptr, int w, int h, int f, int factor,
+ 	"@STACK:r1,<9>,factor,n,fwd,back,back2,fwd2,divX,back4,fwd4,fwd3,divY,back5,divXY\n"
+ 	"ldr	r4, [r13,#4*22]		@ r4 = divXY			\n"
+ 	"ldr	r5, [r13,#4*11]		@ for (nn = n; nn > 0; n--) {	\n"
++	"ldr	r8, [r13,#4*17]		@ r8 = back4			\n"
+ 	"18:				@				\n"
+ 	"mov	r14,#0			@ r14= v = 0			\n"
+ 	"sub	r5, r5, r1, LSL #8	@ for (xx = x; xx > 0; x--) {	\n"
+@@ -1120,7 +1121,7 @@ fz_subsample_pixmap_ARM(unsigned char *ptr, int w, int h, int f, int factor,
+ 	"mul	r14,r4, r14		@ r14= v *= divX		\n"
+ 	"mov	r14,r14,LSR #16		@ r14= v >>= 16			\n"
+ 	"strb	r14,[r9], #1		@ *d++ = r14			\n"
+-	"sub	r0, r0, r8		@ s -= back2			\n"
++	"sub	r0, r0, r8		@ s -= back4			\n"
+ 	"subs	r5, r5, #1		@ n--				\n"
+ 	"bgt	18b			@ }				\n"
+ 	"21:				@				\n"
+@@ -1249,6 +1250,7 @@ fz_subsample_pixmap(fz_context *ctx, fz_pixmap *tile, int factor)
+ 		x += f;
+ 		if (x > 0)
+ 		{
++			int back4 = x * n - 1;
+ 			div = x * y;
+ 			for (nn = n; nn > 0; nn--)
+ 			{
+@@ -1263,7 +1265,7 @@ fz_subsample_pixmap(fz_context *ctx, fz_pixmap *tile, int factor)
+ 					s -= back5;
+ 				}
+ 				*d++ = v / div;
+-				s -= back2;
++				s -= back4;
+ 			}
+ 		}
+ 	}
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/mupdf-CVE-2017-5991.patch b/gnu/packages/patches/mupdf-CVE-2017-5991.patch
new file mode 100644
index 0000000000..1fa6dc3466
--- /dev/null
+++ b/gnu/packages/patches/mupdf-CVE-2017-5991.patch
@@ -0,0 +1,101 @@
+Fix CVE-2017-5991:
+
+https://bugs.ghostscript.com/show_bug.cgi?id=697500
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5991
+https://security-tracker.debian.org/tracker/CVE-2017-5991
+
+Patch lifted from upstream source repository:
+
+http://git.ghostscript.com/?p=mupdf.git;h=1912de5f08e90af1d9d0a9791f58ba3afdb9d465
+
+From 1912de5f08e90af1d9d0a9791f58ba3afdb9d465 Mon Sep 17 00:00:00 2001
+From: Robin Watts <robin.watts@artifex.com>
+Date: Thu, 9 Feb 2017 15:49:15 +0000
+Subject: [PATCH] Bug 697500: Fix NULL ptr access.
+
+Cope better with errors during rendering - avoid letting the
+gstate stack get out of sync.
+
+This avoids us ever getting into the situation of popping
+a clip when we should be popping a mask or a group. This was
+causing an unexpected case in the painting.
+---
+ source/pdf/pdf-op-run.c | 26 ++++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c
+index a3ea895d..f1eac8d3 100644
+--- a/source/pdf/pdf-op-run.c
++++ b/source/pdf/pdf-op-run.c
+@@ -1213,6 +1213,7 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf
+ 	pdf_run_processor *pr = (pdf_run_processor *)proc;
+ 	pdf_gstate *gstate = NULL;
+ 	int oldtop = 0;
++	int oldbot = -1;
+ 	fz_matrix local_transform = *transform;
+ 	softmask_save softmask = { NULL };
+ 	int gparent_save;
+@@ -1232,16 +1233,17 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf
+ 	fz_var(cleanup_state);
+ 	fz_var(gstate);
+ 	fz_var(oldtop);
++	fz_var(oldbot);
+ 
+ 	gparent_save = pr->gparent;
+ 	pr->gparent = pr->gtop;
++	oldtop = pr->gtop;
+ 
+ 	fz_try(ctx)
+ 	{
+ 		pdf_gsave(ctx, pr);
+ 
+ 		gstate = pr->gstate + pr->gtop;
+-		oldtop = pr->gtop;
+ 
+ 		pdf_xobject_bbox(ctx, xobj, &xobj_bbox);
+ 		pdf_xobject_matrix(ctx, xobj, &xobj_matrix);
+@@ -1302,12 +1304,25 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf
+ 
+ 		doc = pdf_get_bound_document(ctx, xobj->obj);
+ 
++		oldbot = pr->gbot;
++		pr->gbot = pr->gtop;
++
+ 		pdf_process_contents(ctx, (pdf_processor*)pr, doc, resources, xobj->obj, NULL);
+ 	}
+ 	fz_always(ctx)
+ 	{
++		/* Undo any gstate mismatches due to the pdf_process_contents call */
++		if (oldbot != -1)
++		{
++			while (pr->gtop > pr->gbot)
++			{
++				pdf_grestore(ctx, pr);
++			}
++			pr->gbot = oldbot;
++		}
++
+ 		if (cleanup_state >= 3)
+-			pdf_grestore(ctx, pr); /* Remove the clippath */
++			pdf_grestore(ctx, pr); /* Remove the state we pushed for the clippath */
+ 
+ 		/* wrap up transparency stacks */
+ 		if (transparency)
+@@ -1341,13 +1356,8 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf
+ 		pr->gstate[pr->gparent].ctm = gparent_save_ctm;
+ 		pr->gparent = gparent_save;
+ 
+-		if (gstate)
+-		{
+-			while (oldtop < pr->gtop)
+-				pdf_grestore(ctx, pr);
+-
++		while (oldtop < pr->gtop)
+ 			pdf_grestore(ctx, pr);
+-		}
+ 
+ 		pdf_unmark_obj(ctx, xobj->obj);
+ 	}
+-- 
+2.12.0
+
diff --git a/gnu/packages/patches/screen-CVE-2017-5618.patch b/gnu/packages/patches/screen-CVE-2017-5618.patch
deleted file mode 100644
index 1b95e428c8..0000000000
--- a/gnu/packages/patches/screen-CVE-2017-5618.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Fixes CVE-2017-5618 (privilege escalation via opening the logfile when
-screen is installed setuid root):
-
-https://savannah.gnu.org/bugs/?50142
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5618
-
-This patch reverts the upstream commit that introduced the bug:
-
-https://git.savannah.gnu.org/cgit/screen.git/commit/?id=5460f5d28c01a9a58e021eb1dffef2965e629d58
-
-From f55b0cc29a0ac2a1c54e8a5e886b7393edd4a76c Mon Sep 17 00:00:00 2001
-From: Leo Famulari <leo@famulari.name>
-Date: Sat, 11 Feb 2017 22:40:24 -0500
-Subject: [PATCH] Revert "adding permissions check for the logfile name"
-
-This reverts commit 5460f5d28c01a9a58e021eb1dffef2965e629d58.
----
- src/screen.c | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/src/screen.c b/src/screen.c
-index 64650e9..283c305 100644
---- a/src/screen.c
-+++ b/src/screen.c
-@@ -673,12 +673,6 @@ int main(int ac, char** av)
-                 Panic(0, "-L: logfile name can not start with \"-\" symbol");
-               if (strlen(screenlogfile) > PATH_MAX)
-                 Panic(0, "-L: logfile name too long. (max. %d char)", PATH_MAX);
--
--              FILE *w_check;
--              if ((w_check = fopen(screenlogfile, "w")) == NULL)
--                Panic(0, "-L: logfile name access problem");
--              else
--                fclose(w_check);
-             }
-             nwin_options.Lflag = 1;
-             break;
--- 
-2.11.1
-
diff --git a/gnu/packages/patches/vdirsyncer-test-suite-slow-machines.patch b/gnu/packages/patches/vdirsyncer-test-suite-slow-machines.patch
deleted file mode 100644
index 03093e8330..0000000000
--- a/gnu/packages/patches/vdirsyncer-test-suite-slow-machines.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Fix test failures caused by some build machines running more slowly than
-expected, which manifest like this:
-
-------
->       raise FailedHealthCheck(message)
-E       hypothesis.errors.FailedHealthCheck: Data generation is extremely slow: Only produced 4 valid examples in 1.08 seconds (1 invalid ones and 0 exceeded maximum size). Try decreasing size of the data you're generating (with e.g.average_size or max_leaves parameters).
-E       See http://hypothesis.readthedocs.org/en/latest/healthchecks.html for more information about this. If you want to disable just this health check, add HealthCheck.too_slowto the suppress_health_check settings for this test.
-
-/gnu/store/b8d1r8bilvm3jkncgrpvmg3dni9cgcr1-python-hypothesis-3.1.0/lib/python3.5/site-packages/hypothesis/core.py:296: FailedHealthCheck
-------
-
-Patch copied from upstream source repository:
-
-https://github.com/pimutils/vdirsyncer/commit/10490a12f13f03495e0945eb9d45d7aed9ab0a6c
-
-From 10490a12f13f03495e0945eb9d45d7aed9ab0a6c Mon Sep 17 00:00:00 2001
-From: Markus Unterwaditzer <markus@unterwaditzer.net>
-Date: Sat, 18 Feb 2017 15:45:06 +0100
-Subject: [PATCH] Unconditionally disable HealthCheck.too_slow
-
----
- tests/conftest.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/conftest.py b/tests/conftest.py
-index e0a07d5..3afd7cd 100644
---- a/tests/conftest.py
-+++ b/tests/conftest.py
-@@ -26,10 +26,12 @@ def benchmark():
- else:
-     del pytest_benchmark
- 
-+
-+settings.suppress_health_check = [HealthCheck.too_slow]
-+
- settings.register_profile("ci", settings(
-     max_examples=1000,
-     verbosity=Verbosity.verbose,
--    suppress_health_check=[HealthCheck.too_slow]
- ))
- settings.register_profile("deterministic", settings(
-     derandomize=True,
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 58416ee66c..873100cd78 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -11,6 +11,7 @@
 ;;; Coypright © 2016 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -438,14 +439,14 @@ interaction.")
 (define-public podofo
   (package
     (name "podofo")
-    (version "0.9.3")
+    (version "0.9.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/podofo/podofo/" version
                                   "/podofo-" version ".tar.gz"))
               (sha256
                (base32
-                "1n12lbq9x15vqn7dc0hsccp56l5jdff1xrhvlfqlbklxx0qiw9pc"))))
+                "012kgfx5j5n6w4zkc1d290d2cwjk60jhzsjlr2x19g3yi75q2jc5"))))
     (build-system cmake-build-system)
     (inputs                                      ; TODO: Add cppunit for tests
      `(("lua" ,lua-5.1)
@@ -550,7 +551,9 @@ and examining the file structure (pdfshow).")
           (append
             (origin-patches (package-source mupdf))
             (search-patches "mupdf-mujs-CVE-2016-10132.patch"
-                            "mupdf-mujs-CVE-2016-10133.patch")))))))
+                            "mupdf-mujs-CVE-2016-10133.patch"
+                            "mupdf-CVE-2017-5896.patch"
+                            "mupdf-CVE-2017-5991.patch")))))))
 
 (define-public qpdf
   (package
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index eee688354a..840e0b763e 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,7 +37,8 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
-  #:use-module (gnu packages perl-web))
+  #:use-module (gnu packages perl-web)
+  #:use-module (gnu packages pkg-config))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
@@ -206,6 +208,31 @@ explicitly alias the class to another name or, if you prefer, you can do so
 implicitly.")
     (license (package-license perl))))
 
+(define-public perl-any-moose
+  (package
+    (name "perl-any-moose")
+    (version "0.27")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                                  "Any-Moose-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0dc55mpayrixwx8dwql0vj0jalg4rlb3k64rprc84bl0z8vkx9m8"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-mouse" ,perl-mouse)
+       ("perl-moose" ,perl-moose)))
+    (home-page "http://search.cpan.org/dist/Any-Moose")
+    (synopsis "Transparently use Moose or Mouse modules")
+    (description
+     "This module facilitates using @code{Moose} or @code{Mouse} modules
+without changing the code.  By default, Mouse will be provided to libraries,
+unless Moose is already loaded, or explicitly requested by the end-user.  End
+users can force the decision of which backend to use by setting the environment
+variable ANY_MOOSE to be Moose or Mouse.")
+    (license (package-license perl))))
+
 (define-public perl-appconfig
   (package
     (name "perl-appconfig")
@@ -268,6 +295,39 @@ manipulate, read, and write Zip archive files.")
 list manipulation routines.")
     (license (package-license perl))))
 
+(define-public perl-async-interrupt
+  (package
+    (name "perl-async-interrupt")
+    (version "1.21")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
+                                  "Async-Interrupt-" version ".tar.gz"))
+              (sha256
+               (base32
+                "092zs7b72f8q109c3z829nqfgwqghp3nhw44c0gcyhacbb4wgpk3"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-common-sense" ,perl-common-sense)))
+    (home-page "http://search.cpan.org/dist/Async-Interrupt")
+    (synopsis "Allow C/XS libraries to interrupt perl asynchronously")
+    (description
+     "@code{Async::Interrupt} implements a single feature only of interest
+to advanced perl modules, namely asynchronous interruptions (think \"UNIX
+signals\", which are very similar).
+
+Sometimes, modules wish to run code asynchronously (in another thread,
+or from a signal handler), and then signal the perl interpreter on
+certain events.  One common way is to write some data to a pipe and use
+an event handling toolkit to watch for I/O events.  Another way is to
+send a signal.  Those methods are slow, and in the case of a pipe, also
+not asynchronous - it won't interrupt a running perl interpreter.
+
+This module implements asynchronous notifications that enable you to
+signal running perl code from another thread, asynchronously, and
+sometimes even without using a single syscall.")
+    (license (package-license perl))))
+
 (define-public perl-autovivification
   (package
     (name "perl-autovivification")
@@ -562,6 +622,25 @@ code or from an external program.  Optionally, output can be teed so that it
 is captured while being passed through to the original file handles.")
     (license asl2.0)))
 
+(define-public perl-canary-stability
+  (package
+    (name "perl-canary-stability")
+    (version "2012")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
+                                  "Canary-Stability-" version ".tar.gz"))
+              (sha256
+               (base32
+                "01vih43hvpqy67m6a6fwmlswli91mqpv8n8ccglvlkc33l8hn97x"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Canary-Stability")
+    (synopsis "Check compatibility with the installed perl version")
+    (description
+     "This module is used by Schmorp's modules during configuration stage
+to test the installed perl for compatibility with his modules.")
+    (license (package-license perl))))
+
 (define-public perl-carp-assert
   (package
     (name "perl-carp-assert")
@@ -1290,6 +1369,28 @@ contained in Appendix A of FIPS Publication 181, \"Standard for Automated
 Password Generator\".")
     (license (package-license perl))))
 
+(define-public perl-cwd-guard
+  (package
+    (name "perl-cwd-guard")
+    (version "0.05")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
+                                  "Cwd-Guard-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0xwf4rmii55k3lp19mpbh00mbgby7rxdk2lk84148bjhp6i7rz3s"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)
+       ("perl-test-requires" ,perl-test-requires)))
+    (home-page "http://search.cpan.org/dist/Cwd-Guard")
+    (synopsis "Temporarily change working directory")
+    (description
+     "@code{Cwd::Guard} changes the current directory using a limited scope.
+It returns to the previous working directory when the object is destroyed.")
+    (license (package-license perl))))
+
 (define-public perl-czplib
   (package
     (name "perl-czplib")
@@ -2097,6 +2198,27 @@ the appropriate objects.")
 particular command is available.")
     (license (package-license perl))))
 
+(define-public perl-devel-checkcompiler
+  (package
+  (name "perl-devel-checkcompiler")
+  (version "0.07")
+  (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://cpan/authors/id/S/SY/SYOHEX/"
+                                "Devel-CheckCompiler-" version ".tar.gz"))
+            (sha256
+             (base32
+              "1db973a4dbyknjxq608hywil5ai6vplnayshqxrd7m5qnjbpd2vn"))))
+  (build-system perl-build-system)
+  (native-inputs
+   `(("perl-module-build-tiny" ,perl-module-build-tiny)))
+  (home-page "http://search.cpan.org/dist/Devel-CheckCompiler")
+  (synopsis "Check compiler availability")
+  (description "@code{Devel::CheckCompiler} is a tiny module to check
+whether a compiler is available.  It can test for a C99 compiler, or
+you can tell it to compile a C source file with optional linker flags.")
+  (license (package-license perl))))
+
 (define-public perl-devel-globaldestruction
   (package
     (name "perl-devel-globaldestruction")
@@ -2603,6 +2725,29 @@ By itself it is not a particularly interesting module by any measure, however
 it ties together a family of modern toolchain modules.")
     (license (package-license perl))))
 
+(define-public perl-extutils-depends
+  (package
+    (name "perl-extutils-depends")
+    (version "0.405")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/"
+                                  "ExtUtils-Depends-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0b4ab9qmcihsfs2ajhn5qzg7nhazr68v3r0zvb7076smswd41mla"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-number-delta" ,perl-test-number-delta)))
+    (home-page "http://search.cpan.org/dist/ExtUtils-Depends")
+    (synopsis "Easily build XS extensions that depend on XS extensions")
+    (description
+     "This module tries to make it easy to build Perl extensions that use
+functions and typemaps provided by other perl extensions.  This means that a
+perl extension is treated like a shared library that provides also a C and an
+XS interface besides the perl one.")
+    (license (package-license perl))))
+
 (define-public perl-extutils-helpers
   (package
     (name "perl-extutils-helpers")
@@ -2645,6 +2790,29 @@ C code in your Perl programs, there isn't a clear method to compile standard,
 self-contained C libraries.  This module main goal is to help in that task.")
     (license (package-license perl))))
 
+(define-public perl-extutils-pkgconfig
+  (package
+    (name "perl-extutils-pkgconfig")
+    (version "1.15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/"
+                                  "ExtUtils-PkgConfig-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1cxh6w8vmyqmhl6afys2q6z6jkp1m6zvacpk70196zmk48p1kcv9"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://search.cpan.org/dist/ExtUtils-PkgConfig")
+    (synopsis "Simplistic interface to pkg-config")
+    (description
+     "@code{ExtUtils::PkgConfig} is a very simplistic interface to the
+@command{pkg-config} utility, intended for use in the @file{Makefile.PL}
+of perl extensions which bind libraries that @command{pkg-config} knows.
+It is really just boilerplate code that you would have written yourself.")
+    (license lgpl2.1+)))
+
 (define-public perl-file-changenotify
   (package
     (name "perl-file-changenotify")
@@ -3953,6 +4121,50 @@ replacement.  Whereas Module::Build has over 6,700 lines of code; this module
 has less than 120, yet supports the features needed by most distributions.")
     (license (package-license perl))))
 
+(define-public perl-module-build-xsutil
+  (package
+    (name "perl-module-build-xsutil")
+    (version "0.16")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/H/HI/HIDEAKIO/"
+                                  "Module-Build-XSUtil-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1nrs0b6hmwl3sw3g50b9857qgp5cbbbpl716zwn30h9vwjj2yxhm"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-cwd-guard" ,perl-cwd-guard)
+       ("perl-file-copy-recursive" ,perl-file-copy-recursive)
+       ("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-devel-checkcompiler" ,perl-devel-checkcompiler)))
+    (home-page "http://search.cpan.org/dist/Module-Build-XSUtil")
+    (synopsis "Module::Build class for building XS modules")
+    (description
+     "@code{Module::Build::XSUtil} is subclass of @code{Module::Build}
+for support building XS modules.
+
+This is a list of a new parameters in the @code{Module::Build::new} method:
+
+@enumerate
+@item @code{needs_compiler_c99}: This option checks C99 compiler availability.
+@item @code{needs_compiler_cpp}: This option checks C++ compiler availability.
+Can also pass @code{extra_compiler_flags} and @code{extra_linker_flags} for C++.
+@item @code{generate_ppport_h}: Generate @file{ppport.h} by @code{Devel::PPPort}.
+@item @code{generate_xshelper_h}: Generate @file{xshelper.h} which is a helper
+header file to include @file{EXTERN.h}, @file{perl.h}, @file{XSUB.h} and
+@file{ppport.h}, and defines some portability stuff which are not supported by
+@file{ppport.h}.
+
+It is ported from @code{Module::Install::XSUtil}.
+@item @code{cc_warnings}: Toggle compiler warnings.  Enabled by default.
+@item @code{-g options}: Invoke @file{Build.PL} with @code{-g} to enable
+debug options.
+@end enumerate")
+    (license (package-license perl))))
+
 (define-public perl-module-find
   (package
     (name "perl-module-find")
@@ -4732,6 +4944,62 @@ own set of Moose-like types.  These custom types can then be used to describe
 fields in Moo-based classes.")
     (license (package-license perl))))
 
+(define-public perl-mouse
+  (package
+  (name "perl-mouse")
+  (version "2.4.9")
+  (source (origin
+            (method url-fetch)
+            (uri (string-append
+                  "mirror://cpan/authors/id/S/SY/SYOHEX/Mouse-v"
+                  version
+                  ".tar.gz"))
+            (sha256
+             (base32
+              "1y20sl97x1h4y1iid47hj0w1hb2887dchh4nfffgmqpyggkslh4n"))))
+  (build-system perl-build-system)
+  (native-inputs
+   `(("perl-module-build" ,perl-module-build)
+     ("perl-module-build-xsutil" ,perl-module-build-xsutil)
+     ("perl-test-exception" ,perl-test-exception)
+     ("perl-test-fatal" ,perl-test-fatal)
+     ("perl-test-leaktrace" ,perl-test-leaktrace)
+     ("perl-test-output" ,perl-test-output)
+     ("perl-test-requires" ,perl-test-requires)
+     ("perl-try-tiny" ,perl-try-tiny)))
+  (home-page "https://github.com/gfx/p5-Mouse")
+  (synopsis "Fast Moose-compatible object system for perl5")
+  (description
+   "Mouse is a @code{Moose} compatible object system that implements a
+subset of the functionality for reduced startup time.")
+  (license (package-license perl))))
+
+(define-public perl-mousex-nativetraits
+  (package
+    (name "perl-mousex-nativetraits")
+    (version "1.09")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/G/GF/GFUJI/"
+                                  "MouseX-NativeTraits-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0pnbchkxfz9fwa8sniyjqp0mz75b3k2fafq9r09znbbh51dbz9gq"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-any-moose" ,perl-any-moose)
+       ("perl-test-fatal" ,perl-test-fatal)))
+    (propagated-inputs
+     `(("perl-mouse" ,perl-mouse)))
+    (home-page "http://search.cpan.org/dist/MouseX-NativeTraits")
+    (synopsis "Extend attribute interfaces for Mouse")
+    (description
+     "While @code{Mouse} attributes provide a way to name your accessors,
+readers, writers, clearers and predicates, @code{MouseX::NativeTraits}
+provides commonly used attribute helper methods for more specific types
+of data.")
+    (license (package-license perl))))
+
 (define-public perl-mozilla-ca
   (package
     (name "perl-mozilla-ca")
@@ -6445,6 +6713,29 @@ including a stack trace of what was going on when it occurred.")
                               "Test-NoWarnings-" version))
     (license lgpl2.1)))
 
+(define-public perl-test-number-delta
+  (package
+    (name "perl-test-number-delta")
+    (version "1.06")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                                  "Test-Number-Delta-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0jfhzhpzkc23mkrlbnv085ykpfncmy99hvppbzjnrpvgks8k0m2k"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Test-Number-Delta")
+    (synopsis
+     "Compare the difference between numbers against a given tolerance")
+    (description
+     "At some point or another, most programmers find they need to compare
+floating-point numbers for equality.  The typical idiom is to test if the
+absolute value of the difference of the numbers is within a desired tolerance,
+usually called epsilon.  This module provides such a function for use with
+@code{Test::More}.")
+    (license asl2.0)))
+
 (define-public perl-test-output
   (package
     (name "perl-test-output")
@@ -7492,6 +7783,30 @@ attribute names.")
     ;; modification, are permitted under any circumstances.  No warranty.
     (license public-domain)))
 
+(define-public perl-xs-object-magic
+  (package
+    (name "perl-xs-object-magic")
+    (version "0.04")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+                                  "XS-Object-Magic-" version ".tar.gz"))
+              (sha256
+               (base32
+                "03fghj7hq0fiicmfdxhmzfm4mzv7s097pgkd32ji7jnljvhm9six"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-extutils-depends" ,perl-extutils-depends)
+       ("perl-test-fatal" ,perl-test-fatal)))
+    (home-page "http://search.cpan.org/dist/XS-Object-Magic")
+    (synopsis "Opaque, extensible XS pointer backed objects using sv_magic")
+    (description
+     "This way of associating structs with Perl space objects is designed to
+supersede Perl's builtin @code{T_PTROBJ} with something that is extensible
+(structs can be associated with any data type) and opaque (the C pointer is
+neither visible nor modifiable from Perl space).")
+    (license (package-license perl))))
+
 (define-public perl-yaml
   (package
     (name "perl-yaml")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index a8ba1b8c76..5631c7ac0b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -829,14 +829,14 @@ concepts.")
 (define-public python-netcdf4
   (package
     (name "python-netcdf4")
-    (version "1.2.6")
+    (version "1.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "netCDF4" version))
        (sha256
         (base32
-         "1qcymsfxsdfr4sx0vl7ih5d14z66k6c9sjy4gb6rjaksk5387zvg"))))
+         "1fllizmnpw0zkzzm4j9pgamarlzfn3kmv9zrm0w65q1y31h9ni0c"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-cython" ,python-cython)))
@@ -1020,6 +1020,40 @@ etc.).  The package is structured to make adding new modules easy.")
             "python"
             (package-inputs pycrypto)))))))
 
+(define-public python-eventlet
+  (package
+    (name "python-eventlet")
+    (version "0.20.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "eventlet" version))
+       (sha256
+        (base32
+         "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-greenlet" ,python-greenlet)))
+    (home-page "http://eventlet.net")
+    (synopsis "Concurrent networking library for Python")
+    (description
+     "Eventlet is a concurrent networking library for Python that
+allows you to change how you run your code, not how you write it.
+It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
+Coroutines ensure that the developer uses a blocking style of programming
+that is similar to threading, but provide the benefits of non-blocking I/O.
+The event dispatch is implicit, which means you can easily use @code{Eventlet}
+from the Python interpreter, or as a small part of a larger application.")
+  (license license:expat)))
+
+(define-public python2-eventlet
+  (let ((base (package-with-python2
+                (strip-python2-variant python-eventlet))))
+    (package (inherit base)
+      (propagated-inputs
+       `(("python2-enum34" ,python2-enum34)
+         ,@(package-propagated-inputs base))))))
+
 (define-public python-keyring
   (package
     (name "python-keyring")
@@ -2499,13 +2533,13 @@ installed with a newer @code{pip} or with wheel's own command line utility.")
 (define-public python-requests
   (package
     (name "python-requests")
-    (version "2.12.4")
+    (version "2.13.0")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "requests" version))
              (sha256
               (base32
-               "0d5fwxmw4ibynk3imph3n4n84m0n3ib1vj339fxhkqri0qd4767d"))))
+               "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
     ;; TODO: unbundle urllib3 and chardet.
     (build-system python-build-system)
     (arguments
@@ -2670,6 +2704,35 @@ somewhat intelligeble.")
 (define-public python2-pyjwt
   (package-with-python2 python-pyjwt))
 
+(define-public python-pykka
+  (package
+    (name "python-pykka")
+    (version "1.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Pykka" version))
+       (sha256
+        (base32
+         "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-gevent" ,python-gevent)
+       ("python-eventlet" ,python-eventlet)))
+    (home-page "https://www.pykka.org/")
+    (synopsis "Pykka is a Python implementation of the actor model")
+    (description
+     "Pykka is a Python implementation of the actor model.
+The actor model introduces some simple rules to control the sharing
+of state and cooperation between execution units, which makes it
+easier to build concurrent applications.")
+    (license license:asl2.0)))
+
+(define-public python2-pykka
+  (package-with-python2 python-pykka))
+
 (define-public python-oauthlib
   (package
     (name "python-oauthlib")
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index f04cba706d..11f4716033 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -27,7 +27,7 @@
 (define-public re2
    (package
      (name "re2")
-     (version "2017-01-01")
+     (version "2017-03-01")
      (source (origin
                (method url-fetch)
                (uri
@@ -37,7 +37,7 @@
                (file-name (string-append name "-" version ".tar.gz"))
                (sha256
                 (base32
-                 "0yij1ajh66h3pj3kfz7y0ldrsww8rlpjzaavyr5lchl98as1jq74"))))
+                 "1s3kdcrz2mwi30k6pz9jkv5vk8b704bz65xgcr67wbn2pn3hpnqr"))))
      (build-system gnu-build-system)
      (arguments
       `(#:test-target "test"
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 59370447b2..73eefe8dde 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -426,13 +426,13 @@ expectations and mocks frameworks.")
 (define-public bundler
   (package
     (name "bundler")
-    (version "1.14.4")
+    (version "1.14.5")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "bundler" version))
               (sha256
                (base32
-                "1hafmb7p41pm40a2z7f4x5zpgrb72xvgwlvkxnflmzqkvq2prkfv"))))
+                "0635s6naz9hn4iqbvkhnm1by4j4spvv13mb7nzwwimnpbqgx663i"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -1020,26 +1020,6 @@ features.")
     (home-page "https://github.com/chneukirchen/bacon")
     (license license:expat)))
 
-(define-public ruby-arel
-  (package
-    (name "ruby-arel")
-    (version "6.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "arel" version))
-              (sha256
-               (base32
-                "18wnfnzr2i5p3fygsddjbi1cimws6823nbk8drxidmnj8jz7h0ar"))))
-    (build-system ruby-build-system)
-    (arguments
-     '(#:tests? #f)) ; no test suite
-    (synopsis "SQL AST manager for Ruby")
-    (description "Arel is a SQL AST manager for Ruby.  It simplifies the
-generation of complex SQL queries and adapts to various relational database
-implementations.")
-    (home-page "https://github.com/rails/arel")
-    (license license:expat)))
-
 (define-public ruby-connection-pool
   (package
     (name "ruby-connection-pool")
@@ -1854,8 +1834,9 @@ net/http library.")
     (arguments '(#:tests? #f)) ; no tests
     (home-page "https://github.com/rails/arel")
     (synopsis "SQL AST manager for Ruby")
-    (description "Arel is a SQL AST manager for Ruby.  It simplifies the
-generation of complex SQL queries and is compatible with various RDBMSes.")
+    (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
+Ruby.  It simplifies the generation of complex SQL queries and adapts to
+various relational database implementations.")
     (license license:expat)))
 
 (define-public ruby-minitar
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index af416c502a..e1dba9bed7 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2017 John Darrington <jmd@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,8 +26,8 @@
 (define-module (gnu packages scheme)
   #:use-module (gnu packages)
   #:use-module ((guix licenses)
-                #:select (gpl2+ lgpl2.0+ lgpl2.1+ asl2.0 bsd-3
-                          cc-by-sa4.0))
+                #:select (gpl2+ lgpl2.0+ lgpl2.1+ lgpl3+ asl2.0 bsd-3
+                          cc-by-sa4.0 non-copyleft))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -57,6 +58,7 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages gl)
+  #:use-module (gnu packages zip)
   #:use-module (ice-9 match))
 
 (define (mit-scheme-source-directory system version)
@@ -844,3 +846,100 @@ metalinguistic abstraction, recursion, interpreters, and modular programming.")
        "String pattern-matching library for scheme48 based on the SRE
 regular-expression notation.")
       (license bsd-3))))
+
+(define-public slib
+  (package
+    (name "slib")
+    (version "3b5")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://groups.csail.mit.edu/mac/ftpdir/scm/slib-"
+                                 version ".zip"))
+             (sha256
+              (base32
+               "0q0p2d53p8qw2592yknzgy2y1p5a9k7ppjx0cfrbvk6242c4mdpq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; There is no check target.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'remove-bin-share
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (delete-file-recursively
+                       (string-append (assoc-ref outputs "out") "/bin"))))
+         (replace 'configure
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (zero? (system* "./configure"
+                                    (string-append "--prefix="
+                                                   (assoc-ref outputs "out")))))))))
+    (native-inputs `(("unzip" ,unzip)
+                     ("texinfo" ,texinfo)))
+    (home-page "http://people.csail.mit.edu/jaffer/SLIB/")
+    (synopsis "Compatibility and utility library for Scheme")
+    (description "SLIB is a portable Scheme library providing compatibility and
+utility functions for all standard Scheme implementations.")
+    (license (non-copyleft
+              "http://people.csail.mit.edu/jaffer/SLIB_COPYING.txt"
+              "Or see COPYING in the distribution."))))
+
+(define-public scm
+  (package
+    (name "scm")
+    (version "5f2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://groups.csail.mit.edu/mac/ftpdir/scm/scm-"
+                    version ".zip"))
+              (sha256
+               (base32
+                "050ijb51jm1cij9g3r89zl9rawsrikhbb5y8zb7lspb7bsxq5w99"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (zero? (system* "./configure"
+                                    (string-append "--prefix="
+                                                   (assoc-ref outputs "out"))))))
+         (add-before 'build 'pre-build
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       (substitute* "Makefile"
+                         (("ginstall-info") "install-info"))))
+         (replace 'build
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (setenv "SCHEME_LIBRARY_PATH"
+                            (string-append (assoc-ref inputs "slib")
+                                           "/lib/slib/"))
+                    (and
+                     (zero? (system* "make" "scmlit" "CC=gcc"))
+                     (zero? (system* "make" "all")))))
+         (add-after 'install 'post-install
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let ((req
+                             (string-append (assoc-ref outputs "out")
+                                            "/lib/scm/require.scm")))
+                        (and
+                         (delete-file req)
+                         (format (open req (logior O_WRONLY O_CREAT))
+                                 "(define (library-vicinity) ~s)\n"
+                                 (string-append (assoc-ref inputs "slib")
+                                                "/lib/slib/"))
+
+                         ;; We must generate the slibcat file
+                         (zero? (system*
+                                 (string-append
+                                  (assoc-ref outputs "out")
+                                  "/bin/scm")
+                                 "-br" "new-catalog")))))))))
+    (inputs `(("slib" ,slib)))
+    (native-inputs `(("unzip" ,unzip)
+                     ("texinfo" ,texinfo)))
+    (home-page "http://people.csail.mit.edu/jaffer/SCM")
+    (synopsis "Scheme implementation conforming to R5RS and IEEE P1178")
+    (description "GNU SCM is an implementation of Scheme.  This
+implementation includes Hobbit, a Scheme-to-C compiler, which can
+generate C files whose binaries can be dynamically or statically
+linked with a SCM executable.")
+    (license lgpl3+)))
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index 57e6cb595e..f5c914e88a 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -35,15 +35,13 @@
 (define-public screen
   (package
     (name "screen")
-    (version "4.5.0")
+    (version "4.5.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/screen/screen-"
                                  version ".tar.gz"))
-             (patches (search-patches "screen-CVE-2017-5618.patch"))
-             (patch-flags '("-p2"))
              (sha256
-              (base32 "1c7grw03a9iwvqbxfd6hmjb681rp8gb55zsxm7b3apqqcb1sghq1"))))
+              (base32 "0bbv16gpxrh64sn4bvjy3qjy7jsxjlqlilyysin02fwnvla23nwp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("makeinfo" ,texinfo)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 133ce41c43..139ac71834 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -346,24 +346,6 @@ functions of regression coefficients, and 'epredict' methods that handle
 non-estimable cases correctly.")
     (license license:gpl2+)))
 
-(define-public r-gtable
-  (package
-    (name "r-gtable")
-    (version "0.1.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "gtable" version))
-       (sha256
-        (base32 "0k9hfj6r5y238gqh92s3cbdn34biczx3zfh79ix5xq0c5vkai2xh"))))
-    (build-system r-build-system)
-    (home-page "https://cran.r-project.org/web/packages/gtable")
-    (synopsis "R library to arrange grobs in tables")
-    (description
-     "Gtable is a collection of tools to make it easier to work with
-\"tables\" of grobs.")
-    (license license:gpl2+)))
-
 (define-public r-pheatmap
   (package
     (name "r-pheatmap")
@@ -1068,22 +1050,6 @@ from knitr Rmarkdown.")
 the execution time of R expressions.")
     (license license:bsd-2)))
 
-(define-public r-codetools
-  (package
-    (name "r-codetools")
-    (version "0.2-14")
-    (source (origin
-              (method url-fetch)
-              (uri (cran-uri "codetools" version))
-              (sha256
-               (base32
-                "0y9r4m2b8xgavr89sc179knzwpz54xljbc1dinpq2q07i4xn0397"))))
-    (build-system r-build-system)
-    (home-page "https://cran.r-project.org/web/packages/codetools/index.html")
-    (synopsis "Code analysis tools for R")
-    (description "This package provides code analysis tools for R.")
-    (license license:gpl3+)))
-
 (define-public r-pryr
   (package
     (name "r-pryr")
@@ -2246,11 +2212,11 @@ variety of formats.")
                 "0vz7073m0a2q12qzzihrfh5c2kx5jqi5l7z470fxmwqghdllh7l0"))))
     (properties `((upstream-name . "gtable")))
     (build-system r-build-system)
-    (home-page "http://cran.r-project.org/web/packages/gtable")
-    (synopsis "Arrange grobs in tables")
+    (home-page "https://cran.r-project.org/web/packages/gtable")
+    (synopsis "R library to arrange grobs in tables")
     (description
-     "This package provides tools to make it easier to work with tables of
-grobs.")
+     "Gtable is a collection of tools to make it easier to work with
+\"tables\" of grobs.")
     (license license:gpl2+)))
 
 (define-public r-gridextra
@@ -2568,7 +2534,7 @@ data.")
         (base32
          "0h7sjmvvsi35041jp47cxhsqzgf1y8jrw6fxii7n26i8g7nrh1sf"))))
     (build-system r-build-system)
-    (home-page "http://cran.r-project.org/web/packages/codetools")
+    (home-page "https://cran.r-project.org/web/packages/codetools")
     (synopsis "Code analysis tools for R")
     (description "This package provides code analysis tools for R to check R
 code for possible problems.")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index b0cefe4056..87261825c5 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com>
-;;; Copyright © 2016 ng0 <ng0@libertad.pw>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -354,7 +354,7 @@ address of one of the participants.")
                              (string-append "CONFIG+="
                                             (string-join
                                              (list "no-update"
-                                                   "no-server"
+                                                   "no-ice"
                                                    "no-embed-qt-translations"
                                                    "no-bundled-speex"
                                                    "pch"
@@ -378,6 +378,8 @@ address of one of the participants.")
          (replace 'install ; install phase does not exist
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
+                    (etc (string-append out "/etc/murmur"))
+                    (dbus (string-append out "/etc/dbus-1/system.d/"))
                     (bin (string-append out "/bin"))
                     (services (string-append out "/share/services"))
                     (applications (string-append out "/share/applications"))
@@ -391,6 +393,12 @@ address of one of the participants.")
                (install-file "icons/mumble.svg" icons)
                (install-file "man/mumble-overlay.1" man)
                (install-file "man/mumble.1" man)
+               (install-file "release/murmurd" bin)
+               (install-file "scripts/murmur.ini.system" etc)
+               (rename-file (string-append etc "/murmur.ini.system")
+                            (string-append etc "/murmur.ini"))
+               (install-file "scripts/murmur.conf" dbus)
+               (install-file "man/murmurd.1" man)
                (for-each (lambda (file) (install-file file lib))
                          (find-files "." "\\.so\\."))
                (for-each (lambda (file) (install-file file lib))
@@ -414,7 +422,9 @@ address of one of the participants.")
     (synopsis "Low-latency, high quality voice chat software")
     (description
      "Mumble is an low-latency, high quality voice chat
-software primarily intended for use while gaming.")
+software primarily intended for use while gaming.
+Mumble consists of two applications for separate usage:
+@code{mumble} for the client, and @code{murmur} for the server.")
     (home-page "https://wiki.mumble.info/wiki/Main_Page")
     (license (list license:bsd-3
                    ;; The bundled celt is bsd-2. Remove after 1.3.0.
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index c24c8e7387..318bb21614 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -4,7 +4,6 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
@@ -507,13 +506,13 @@ security, and applying best practice development processes.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.11.1")
+    (version "0.12.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
       (sha256
        (base32
-        "0kk95iqxygrg0cd66kq8kbyalg2x5pz9hn1175cgwgf1vy72adfv"))))
+        "1pzv8fcfwdqzvvpyhgjz412is0b98yj9495k8sidzzqgbdmvlp50"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -564,7 +563,7 @@ security, and applying best practice development processes.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1wis5kgqcsrs60kkcmbrbx8z9yasmwa6lg9ir5im232hdm4285vc"))))
+                "1dw86gb8lyap5ckjawmli1hxgbchw2g62g1lqfvxyqjv0df94waa"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 9339dcdd70..e48017e640 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -40,14 +40,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.2.9.9")
+    (version "0.2.9.10")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0hqdk5p6dw4bpn7c8gmhyi8jjkhc37112pfw5nx4gl0g4lmmscik"))))
+               "0h8kpn42mgpkzmnga143hi8nh0ai65ypxh7qhkwbb15j3wz2h4fn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-expensive-hardening"
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 6494b2da5f..006341644b 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -975,7 +975,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2017.02.22")
+    (version "2017.03.02")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -983,7 +983,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0abir0039igwz0830vdqknngs3hmr474j6xzh33v57p3y4imgx2i"))))
+                "0f86qnppxnbh2c8bmpf0c1xhwk5vqjdzz7pqh9sydhscv8r0209g"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index cdb32ac7eb..82403feb1d 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -23,6 +23,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
@@ -158,6 +159,340 @@ configuration files.")
        ("tcl" ,tcl)
        ,@(package-inputs vim)))))
 
+(define-public vim-neocomplete
+  (package
+    (name "vim-neocomplete")
+    (version "2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/Shougo/neocomplete.vim/"
+                           "archive/ver." version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1307gbrdwam2akq9w2lpijc41740i4layk2qkd9sjkqxfch5lni2"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (vimfiles (string-append out "/share/vim/vimfiles"))
+                    (autoload (string-append vimfiles "/autoload"))
+                    (doc (string-append vimfiles "/doc"))
+                    (plugin (string-append vimfiles "/plugin")))
+               (copy-recursively "autoload" autoload)
+               (copy-recursively "doc" doc)
+               (copy-recursively "plugin" plugin)
+               #t))))))
+    (synopsis "Next generation completion framework for Vim")
+    (description
+     "@code{neocomplete}, an abbreviation of 'neo-completion with cache',
+is a plugin for Vim.
+It provides keyword completion system by maintaining a cache of keywords in
+the current buffer.  Neocomplete can be customized easily and has many more
+features than Vim's built-in completion.")
+    (home-page "https://github.com/Shougo/neocomplete.vim/")
+    (license license:expat)))
+
+;; There are no release tarballs.
+(define-public vim-neosnippet-snippets
+  (let ((commit "8e2b1c0cab9ed9a832b3743dbb65e9966a64331a")
+        (revision "1"))
+    (package
+      (name "vim-neosnippet-snippets")
+      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shougo/neosnippet-snippets")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (vimfiles (string-append out "/share/vim/vimfiles")))
+                 (copy-recursively "neosnippets"
+                                   (string-append vimfiles "/neosnippets"))
+               #t))))))
+    (synopsis "Snippets for neosnippet")
+    (description
+     "@code{neosnippet-snippets} provides standard snippets for the Vim plugin
+@code{neosnippet}.  Snippets are small templates for commonly used code that
+you can fill in on the fly.")
+    (home-page "https://github.com/Shougo/neosnippet-snippets")
+    (license license:expat))))
+
+;; The released tarball is too old for our Vim.
+(define-public vim-neosnippet
+  (let ((commit "1bd7e23c79b73da16eb0c9469b25c376d3594583")
+        (revision "1"))
+  (package
+    (name "vim-neosnippet")
+    (version (string-append "4.2-" revision "." (string-take commit 7)))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Shougo/neosnippet.vim/")
+             (commit commit)))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32
+         "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (vimfiles (string-append out "/share/vim/vimfiles"))
+                    (autoload (string-append vimfiles "/autoload"))
+                    (doc (string-append vimfiles "/doc"))
+                    (ftdetect (string-append vimfiles "/ftdetect"))
+                    (ftplugin (string-append vimfiles "/ftplugin"))
+                    (indent (string-append vimfiles "/indent"))
+                    (plugin (string-append vimfiles "/plugin"))
+                    (rplugin (string-append vimfiles "/rplugin"))
+                    (syntax (string-append vimfiles "/syntax")))
+               (copy-recursively "autoload" autoload)
+               (copy-recursively "doc" doc)
+               (copy-recursively "ftdetect" ftdetect)
+               (copy-recursively "ftplugin" ftplugin)
+               (copy-recursively "indent" indent)
+               (copy-recursively "plugin" plugin)
+               (copy-recursively "rplugin" rplugin)
+               (copy-recursively "syntax" syntax)
+               #t))))))
+    (synopsis "Snippet support for Vim")
+    (description
+     "@code{neosnippet}, is a plugin for Vim which adds snippet support to Vim.
+Snippets are small templates for commonly used code that you can fill in on
+the fly.  To use snippets can increase your productivity in Vim a lot.
+The functionality of this plug-in is quite similar to plug-ins like
+@code{snipMate.vim} or @code{snippetsEmu.vim}.  But since you can choose
+snippets with the neocomplcache / neocomplete interface, you might have less
+trouble using them, because you do not have to remember each snippet name.")
+    (home-page "https://github.com/Shougo/neosnippet.vim/")
+    (license license:expat))))
+
+(define-public vim-scheme
+  (let ((commit "93827987c10f2d5dc519166a761f219204926d5f")
+        (revision "1"))
+    (package
+      (name "vim-scheme")
+      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.foldling.org/vim-scheme.git")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "1ynjr1109dxgj0lz261gmzz3wf5ap1m6j6hnvl3lcyv66a4y8pjv"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (vimfiles (string-append out "/share/vim/vimfiles"))
+                      (after (string-append vimfiles "/after"))
+                      (syntax (string-append vimfiles "/syntax"))
+                      (ftplugin (string-append vimfiles "/ftplugin")))
+                 (copy-recursively "after" after)
+                 (copy-recursively "ftplugin" ftplugin)
+                 (copy-recursively "syntax" syntax)
+                 #t))))))
+      (synopsis "Scheme syntax for Vim")
+      (description
+       "@code{vim-scheme} provides Scheme support for Vim (R7RS and CHICKEN).")
+      (home-page "http://foldling.org/git/vim-scheme.git/")
+      (license license:public-domain))))
+
+(define-public vim-luna
+  (let ((commit "633619953dcf8577168e255230f96b05f28d6371")
+        (revision "1"))
+    (package
+      (name "vim-luna")
+      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/notpratheek/vim-luna")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0ka3qbhsh8lix1vyj4678j7dnchkd8khhirrnn3aylxxf8fpqyg8"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (vimfiles (string-append out "/share/vim/vimfiles"))
+                      (colors (string-append vimfiles "/colors")))
+                 (copy-recursively "colors" colors)
+                 #t))))))
+      (synopsis "Dark color theme for Vim")
+      (description
+       "@code{vim-luna} is a dark color theme for Vim.")
+      (home-page "https://github.com/notpratheek/vim-luna")
+      (license license:expat))))
+
+;; There are no tarball releases.
+(define-public vim-context-filetype
+  (let ((commit "5e85f8cae26806f391aefe2661791a6de53bcea2")
+        (revision "1"))
+    (package
+      (name "vim-context-filetype")
+      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shougo/context_filetype.vim")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0alvrfhmd91zkd9h83s8wvgyq4iakcf6rybsyjd369qbgpcqky89"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (vimfiles (string-append out "/share/vim/vimfiles"))
+                      (doc (string-append vimfiles "/doc"))
+                      (autoload (string-append vimfiles "/autoload")))
+                 (copy-recursively "doc" doc)
+                 (copy-recursively "autoload" autoload)
+                 #t))))))
+      (synopsis "Context filetype library for Vim")
+      (description
+       "@code{vim-context-filetype} is context filetype library for Vim script.")
+      (home-page "https://github.com/Shougo/context_filetype.vim")
+      (license license:expat)))) ; ??? check again
+
+(define-public vim-airline
+  (package
+    (name "vim-airline")
+    (version "0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/vim-airline/vim-airline/"
+                           "archive/v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "053sfq3jmgdc5y7zbg6jrk7r2hp0raj3y3mxa2h1c1bnkb6wvcaz"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (vimfiles (string-append out "/share/vim/vimfiles"))
+                    (autoload (string-append vimfiles "/autoload"))
+                    (doc (string-append vimfiles "/doc"))
+                    (t (string-append vimfiles "/t"))
+                    (plugin (string-append vimfiles "/plugin")))
+               (copy-recursively "autoload" autoload)
+               (copy-recursively "doc" doc)
+               (copy-recursively "plugin" plugin)
+               (copy-recursively "t" t)
+               #t))))))
+    (synopsis "Statusline for Vim")
+    (description
+     "@code{vim-airline} is an extensible statusline for Vim.
+It can be extended and costumized with themes, works with unicode fonts
+and powerline symbols, etc.")
+    (home-page "https://github.com/vim-airline/vim-airline")
+    (license license:expat)))
+
+;; There are no tarball releases.
+(define-public vim-airline-themes
+  (let ((commit "6026eb78bf362cb3aa875aff8487f65728d0f7d8")
+        (revision "1"))
+    (package
+      (name "vim-airline-themes")
+      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/vim-airline/vim-airline-themes")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "13ijkavh1r0935cn2rjsfbdd1q3ka8bi26kw0bdkrqlrqxwvpss8"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (vimfiles (string-append out "/share/vim/vimfiles"))
+                      (doc (string-append vimfiles "/doc"))
+                      (plugin (string-append vimfiles "/plugin"))
+                      (autoload (string-append vimfiles "/autoload")))
+                 (copy-recursively "doc" doc)
+                 (copy-recursively "autoload" autoload)
+                 (copy-recursively "plugin" plugin)
+                 #t))))))
+      (synopsis "Collection of themes for Vim-airline")
+      (description
+       "@code{vim-airline-themes} is a collection of themes for @code{vim-airline}.")
+      (home-page "https://github.com/vim-airline/vim-airline-themes")
+      (license license:expat))))
+
 (define-public neovim
   (package
     (name "neovim")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 116ccf231b..f63a3eb9da 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -4365,7 +4365,7 @@ used to start services with both privileged and non-privileged port numbers.")
 (define-public tidy-html
   (package
     (name "tidy-html")
-    (version "5.2.0")
+    (version "5.4.0")
     (source
      (origin
        (method url-fetch)
@@ -4374,7 +4374,7 @@ used to start services with both privileged and non-privileged port numbers.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0kbwzh15dlapp3s3vff2qgz0yfcf8hwsnx5q4igwa6pimhak8lw0"))))
+         "0yhbgbjl45b4sjxwc394cjra6iy02q1pi66p28zy70lr6jvm9mx2"))))
     (build-system cmake-build-system)
     (outputs '("out"
                "static")) ; 1.0MiB of .a files
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 7b73353387..d28e2dd4e4 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -40,6 +40,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
@@ -99,6 +100,7 @@
        ("libXcomposite" ,libxcomposite)
        ("ncurses" ,ncurses)
        ("openal" ,openal)
+       ("pulseaudio" ,pulseaudio)
        ("unixodbc" ,unixodbc)
        ("zlib" ,zlib)))
     (arguments
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 7ae8e4b7f8..7d76a2d202 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,6 +38,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages base)
@@ -232,6 +234,31 @@ from scratch.  i3 is primarily targeted at advanced users and
 developers.")
     (license license:bsd-3)))
 
+(define-public perl-anyevent-i3
+  (package
+    (name "perl-anyevent-i3")
+    (version "0.16")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
+                                  "AnyEvent-I3-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1qwva5vmmn929l6k9wzhp4h80ad4qm4m1g2dyv4nlas624003hig"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-anyevent" ,perl-anyevent)
+       ("perl-json-xs" ,perl-json-xs)))
+    (home-page "http://search.cpan.org/dist/AnyEvent-I3")
+    (synopsis
+     "Communicate with the i3 window manager through perl")
+    (description
+     "This module connects to the i3 window manager using the UNIX socket
+based IPC interface it provides (if enabled in the configuration file).
+You can then subscribe to events or send messages and receive their replies.")
+    ;; Can be used with either license.
+    (license (list license:gpl3+ (package-license perl)))))
+
 (define-public python-i3-py
   (package
     (name "python-i3-py")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 3d69661ba5..3667797abd 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
+;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,6 +37,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -438,7 +440,7 @@ of the screen selected by mouse.")
 (define-public slop
   (package
     (name "slop")
-    (version "5.3.35")
+    (version "5.3.37")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -447,7 +449,7 @@ of the screen selected by mouse.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "12fkwardd33xbaisjv93r49jh1dmqw323zjsd9m8kxcyv1rimsig"))))
+                "1p2ih123zkj8rxz8acsxpaim1kq57f4rbq7zqsibafn5rkw5c5is"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f)) ; no "check" target
@@ -469,7 +471,7 @@ selection's dimensions to stdout.")
 (define-public maim
   (package
     (name "maim")
-    (version "4.4.59")
+    (version "4.4.60")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -478,7 +480,7 @@ selection's dimensions to stdout.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0h8z4wm7zgxj1vlp98n12dyiwjwphhnl6yh8aaz3krm5v2kyy6hc"))))
+                "1j8czhbgilmv9c9hlind1w847yk856dzvxx1sj17fx89xkg8nixk"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))            ; no "check" target
@@ -1023,6 +1025,57 @@ border, and background.  It also supports multihead setups, customized mouse
 actions, a built-in clock, a battery monitor and a system tray.")
     (license license:gpl2)))
 
+(define-public dzen
+  (let ((commit "488ab66019f475e35e067646621827c18a879ba1")
+        (revision "1"))
+    (package
+     (name "dzen")
+     (version (string-append "0.9.5-" ; Taken from `config.mk`.
+                             revision "." (string-take commit 7)))
+     (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/robm/dzen.git")
+                    (commit commit)))
+              (file-name (string-append name "-" version))
+              (sha256
+               (base32
+                "0y47d6ii87vf4a517gi4fh0yl06f8b085sra77immnsasbq9pxnw"))))
+     (build-system gnu-build-system)
+     (arguments
+      `(#:tests? #f ; No test suite.
+        #:make-flags ; Replacement for `config.mk`.
+        (list
+         (string-append "VERSION = " ,version)
+         (string-append "PREFIX = " %output)
+         "MANPREFIX = ${PREFIX}/share/man"
+         "INCS = -I."
+         "LIBS = -lc -lX11 -lXinerama -lXpm $(shell pkg-config --libs xft)"
+         "CFLAGS = -Wall -Os ${INCS} -DVERSION=\\\"${VERSION}\\\"\
+         -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(shell pkg-config --cflags xft)"
+         "LDFLAGS = ${LIBS}"
+         "CC = gcc"
+         "LD = ${CC}")
+        #:phases
+        (modify-phases %standard-phases
+          (delete 'configure) ; No configuration script.
+          ;; Use own make-flags instead of `config.mk`.
+          (add-before 'build 'dont-include-config-mk
+            (lambda _
+              (substitute* "Makefile" (("include config.mk") ""))
+              #t)))))
+     (inputs
+      `(("libx11"      ,libx11)
+        ("libxft"      ,libxft)
+        ("libxpm"      ,libxpm)
+        ("libxinerama" ,libxinerama)))
+     (native-inputs `(("pkg-config" ,pkg-config)))
+     (synopsis "General purpose messaging, notification and menuing program for X11")
+     (description "Dzen is a general purpose messaging, notification and menuing
+program for X11.  It was designed to be fast, tiny and scriptable in any language.")
+     (home-page "https://github.com/robm/dzen")
+     (license license:expat))))
+
 (define-public xcb-util-xrm
   (package
     (name "xcb-util-xrm")
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index b91471690f..9a22535c28 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -238,6 +238,34 @@ the @code{Graph} class and write it out in a specific file format.")
 @code{XML::Atom} implements the feed format as well as a client for the API.")
     (license (package-license perl))))
 
+(define-public perl-xml-descent
+  (package
+    (name "perl-xml-descent")
+    (version "1.04")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/A/AN/ANDYA/"
+                                  "XML-Descent-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0l5xmw2hd95ypppz3lyvp4sn02ccsikzjwacli3ydxfdz1bbh4d7"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-test-differences" ,perl-test-differences)
+       ("perl-xml-tokeparser" ,perl-xml-tokeparser)))
+    (home-page "http://search.cpan.org/dist/XML-Descent")
+    (synopsis "Recursive descent XML parsing")
+    (description
+     "The conventional models for parsing XML are either @dfn{DOM}
+(a data structure representing the entire document tree is created) or
+@dfn{SAX} (callbacks are issued for each element in the XML).
+
+XML grammar is recursive - so it's nice to be able to write recursive
+parsers for it.  @code{XML::Descent} allows such parsers to be created.")
+    (license (package-license perl))))
+
 (define-public perl-xml-parser
   (package
     (name "perl-xml-parser")
@@ -269,6 +297,29 @@ as extra arguments to the parse methods, in which case they override options
 given at XML::Parser creation time.")
     (home-page "http://search.cpan.org/dist/XML-Parser")))
 
+(define-public perl-xml-tokeparser
+  (package
+    (name "perl-xml-tokeparser")
+    (version "0.05")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/P/PO/PODMASTER/"
+                                  "XML-TokeParser-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1hnpwb3lh6cbgwvjjgqzcp6jm4mp612qn6ili38adc9nhkwv8fc5"))))
+    (build-system perl-build-system)
+    (propagated-inputs `(("perl-xml-parser" ,perl-xml-parser)))
+    (home-page "http://search.cpan.org/dist/XML-TokeParser")
+    (synopsis "Simplified interface to XML::Parser")
+    (description
+     "@code{XML::TokeParser} provides a procedural (\"pull mode\") interface
+to @code{XML::Parser} in much the same way that Gisle Aas'
+@code{HTML::TokeParser} provides a procedural interface to @code{HTML::Parser}.
+@code{XML::TokeParser} splits its XML input up into \"tokens\", each
+corresponding to an @code{XML::Parser} event.")
+    (license (package-license perl))))
+
 (define-public perl-libxml
   (package
     (name "perl-libxml")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 911621a93c..d300f232d4 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1719,7 +1720,7 @@ features and to query screensaver info on specific windows.")
 (define-public sessreg
   (package
     (name "sessreg")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
       (origin
         (method url-fetch)
@@ -1729,7 +1730,7 @@ features and to query screensaver info on specific windows.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0z013rskwmdadd8cdlxvh4asmgim61qijyzfbqmr1q1mg1jpf4am"))))
+            "1qd66mg2bnppqz4xgdjzif2488zl82vx2c26ld3nb8pnyginm9vq"))))
     (build-system gnu-build-system)
     (inputs
       `(("xproto" ,xproto)))
@@ -5623,6 +5624,61 @@ provides DEC VT102/VT220 (VTxxx) and Tektronix 4014 compatible terminals for
 programs that cannot use the window system directly.")
     (license license:x11)))
 
+(define-public perl-x11-xcb
+  (package
+    (name "perl-x11-xcb")
+    (version "0.16")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/M/MS/MSTPLBG/"
+                    "X11-XCB-" version ".tar.gz"))
+              (sha256
+               (base32
+                "14mnvr1001py2z1n43l18yaw0plwvjg5pcsyc7k81sa0amw8ahzw"))))
+    (build-system perl-build-system)
+    (arguments
+     '(;; Disable parallel build to prevent a race condition.
+       #:parallel-build? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-Makefile
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Makefile"
+               ;; XXX: Without this hack, attempts at using XCB.so fails with
+               ;; an error such as "XCB.so: undefined symbol: xcb_xinerama_id"
+               (("^LDDLFLAGS = ")
+                (string-append "LDDLFLAGS = "
+                               "-lxcb -lxcb-util -lxcb-xinerama -lxcb-icccm ")))
+             #t)))
+       ;; Tests require a running X11 server.
+       #:tests? #f))
+    (native-inputs
+     `(("perl-extutils-depends" ,perl-extutils-depends)
+       ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-data-dump" ,perl-data-dump)
+       ("perl-mouse" ,perl-mouse)
+       ("perl-mousex-nativetraits" ,perl-mousex-nativetraits)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-xml-descent" ,perl-xml-descent)
+       ("perl-xml-simple" ,perl-xml-simple)
+       ("perl-xs-object-magic" ,perl-xs-object-magic)))
+    (inputs
+     `(("libxcb" ,libxcb)
+       ("xcb-proto" ,xcb-proto)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (home-page "http://search.cpan.org/dist/X11-XCB")
+    (synopsis "Perl bindings for libxcb")
+    (description
+     "These bindings wrap @code{libxcb} (a C library to speak with X11,
+in many cases better than @code{Xlib}), and provides an object oriented
+interface to its methods (using @code{Mouse}).")
+    (license (package-license perl))))
+
 (define-public perl-x11-protocol
   (package
     (name "perl-x11-protocol")